<div dir="ltr">Hi Ruben,<div><br></div><div>Glad you got that worked out.  Once in a while I end up deleting my .tox dir because it gets out of date.  I guess that's what the --recreate option to tox does.  So I learned something.  :)</div><div><br></div><div>The new error message looks to be saying that an object of type 'Cluster' cannot be iterated.  Congress's _translate_clusters method assumes that what you give it is basically JSON (arrays, dictionaries, numbers, strings, bools).   In this case Congress is trying to iterate over the keys of a dictionary but is getting a 'Cluster' Python object instead.  What's happening is that when you do the cluster.list() (or whatever it's called) on the magnum-python you're getting back a list of Cluster Python objects instead of a list of dictionaries.  </div><div><br></div><div>To fix the problem, you'll want to take the results of cluster.list() and translate it into a list of dictionaries, and then hand that off to _translate_clusters.  Probably you'll need to do the same for the cluster_template.  So instead of ...</div><div><br></div><div>        clusters_method = lambda: self._translate_clusters(</div><div>            {'clusters': self.magnum.clusters.list()})</div><div><br></div><div>You'll want to do something like ...</div><div><br></div><div><div>        clusters_method = lambda: self._translate_clusters(</div><div>            {'clusters': [x.__dict__ for x in self.magnum.clusters.list()]  })</div></div><div><br></div><div>Or at least, that's what I'd start trying.  __dict__ grabs all the fields of an object and returns a dictionary.  (If some of the values of that dictionary are also Python objects, then you might need something that's more complicated to recursively walk the result of clusters.list() and translate everything into lists and dictionaries.  And I'm not sure that __dict__ will give you exactly what you want, but it's worth a try.).   <br></div><div><br></div><div>Tim</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr">On Thu, Nov 24, 2016 at 12:11 PM Ruben <<a href="mailto:r.manganiello1@studenti.unisa.it">r.manganiello1@studenti.unisa.it</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Tim,<br class="gmail_msg">
I solved the problem with:<br class="gmail_msg">
<br class="gmail_msg">
tox --recreate -e py27<br class="gmail_msg">
<br class="gmail_msg">
Now I no have the error on the import. The unit test still has some errors, but I don't know why..<br class="gmail_msg">
<br class="gmail_msg">
Anyway, I've this error when I try to add the magnum_driver:<br class="gmail_msg">
<br class="gmail_msg">
2016-11-24 20:56:27.191 INFO congress.datasources.datasource_driver [-] magnum:: polling<br class="gmail_msg">
2016-11-24 20:56:27.192 DEBUG congress.datasources.datasource_driver [-] update table clusters. from (pid=18720) update_from_datasource /opt/stack/congress/congress/datasources/datasource_driver.py:1370<br class="gmail_msg">
2016-11-24 20:56:27.427 DEBUG congress.datasources.magnum_driver [-] CLUSTERS: {'clusters': [<Clusters {u'status': u'CREATE_FAILED', u'cluster_template_id': u'8d25a1ed-faa6-4305-a6a1-6559708c805b', u'uuid': u'1634beb9-25de-4cdd-bafa-67537069f0cc', u'links': [{u'href': u'<a href="http://10.0.2.15:9511/v1/clusters/1634beb9-25de-4cdd-bafa-67537069f0cc" rel="noreferrer" class="gmail_msg" target="_blank">http://10.0.2.15:9511/v1/clusters/1634beb9-25de-4cdd-bafa-67537069f0cc</a>', u'rel': u'self'}, {u'href': u'<a href="http://10.0.2.15:9511/clusters/1634beb9-25de-4cdd-bafa-67537069f0cc" rel="noreferrer" class="gmail_msg" target="_blank">http://10.0.2.15:9511/clusters/1634beb9-25de-4cdd-bafa-67537069f0cc</a>', u'rel': u'bookmark'}], u'stack_id': u'17f1248d-286a-4fd4-9639-af5773670f03', u'master_count': 1, u'keypair': u'testkey', u'node_count': 1, u'create_timeout': 60, u'name': u'k8s-cluster'}>]} from (pid=18720) _translate_clusters /opt/stack/congress/congress/datasources/magnum_driver.py:165<br class="gmail_msg">
2016-11-24 20:56:27.435 ERROR congress.datasources.datasource_driver [-] Datasource driver raised exception<br class="gmail_msg">
2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver Traceback (most recent call last):<br class="gmail_msg">
2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver   File "/opt/stack/congress/congress/datasources/datasource_driver.py", line 1384, in poll<br class="gmail_msg">
2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver     self.update_from_datasource()  # sets self.state<br class="gmail_msg">
2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver   File "/opt/stack/congress/congress/datasources/datasource_driver.py", line 1371, in update_from_datasource<br class="gmail_msg">
2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver     self.update_methods[registered_table]()<br class="gmail_msg">
2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver   File "/opt/stack/congress/congress/datasources/magnum_driver.py", line 150, in <lambda><br class="gmail_msg">
2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver     {'clusters': self.magnum.clusters.list()})<br class="gmail_msg">
2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver   File "/opt/stack/congress/congress/datasources/datasource_utils.py", line 57, in inner<br class="gmail_msg">
2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver     result = f(self, raw_data, *args, **kw)<br class="gmail_msg">
2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver   File "/opt/stack/congress/congress/datasources/magnum_driver.py", line 167, in _translate_clusters<br class="gmail_msg">
2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver     obj['clusters'], MagnumDriver.clusters_translator)<br class="gmail_msg">
2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver   File "/opt/stack/congress/congress/datasources/datasource_driver.py", line 1048, in convert_objs<br class="gmail_msg">
2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver     rows, _ = DataSourceDriver.convert_obj(o, translator)<br class="gmail_msg">
2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver   File "/opt/stack/congress/congress/datasources/datasource_driver.py", line 1021, in convert_obj<br class="gmail_msg">
2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver     parent_row_dict)<br class="gmail_msg">
2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver   File "/opt/stack/congress/congress/datasources/datasource_driver.py", line 994, in _populate_translator_data_hdict<br class="gmail_msg">
2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver     return cls._populate_hdict(translator, obj, parent_row_dict)<br class="gmail_msg">
2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver   File "/opt/stack/congress/congress/datasources/datasource_driver.py", line 924, in _populate_hdict<br class="gmail_msg">
2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver     cls._get_value(obj, field, selector), extract_fn)<br class="gmail_msg">
2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver   File "/opt/stack/congress/congress/datasources/datasource_driver.py", line 693, in _get_value<br class="gmail_msg">
2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver     if field in o:<br class="gmail_msg">
2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver TypeError: argument of type 'Cluster' is not iterable<br class="gmail_msg">
2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver<br class="gmail_msg">
2016-11-24 20:56:27.435 INFO congress.datasources.datasource_driver [-] magnum:: finished polling<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
Any suggestions to solve it?<br class="gmail_msg">
I've add the code to review.<br class="gmail_msg">
<br class="gmail_msg">
Ruben<br class="gmail_msg">
<br class="gmail_msg">
----- Original Message -----<br class="gmail_msg">
From: "Ruben" <<a href="mailto:r.manganiello1@studenti.unisa.it" class="gmail_msg" target="_blank">r.manganiello1@studenti.unisa.it</a>><br class="gmail_msg">
To: "Tim Hinrichs" <<a href="mailto:tim@styra.com" class="gmail_msg" target="_blank">tim@styra.com</a>><br class="gmail_msg">
Cc: <a href="mailto:openstack-dev@lists.openstack.org" class="gmail_msg" target="_blank">openstack-dev@lists.openstack.org</a>, "timothy l hinrichs" <<a href="mailto:timothy.l.hinrichs@gmail.com" class="gmail_msg" target="_blank">timothy.l.hinrichs@gmail.com</a>><br class="gmail_msg">
Sent: Thursday, November 24, 2016 12:44:38 AM<br class="gmail_msg">
Subject: Re: [Congress] Magnum_driver<br class="gmail_msg">
<br class="gmail_msg">
Hi Tim,<br class="gmail_msg">
I already have 'pyhton-magnumclient' in the requirements.txt file, but I still have the error.<br class="gmail_msg">
<br class="gmail_msg">
This is the /opt/stack/congress/requirements.txt file:<br class="gmail_msg">
<br class="gmail_msg">
"# The order of packages is significant, because pip processes them in the order<br class="gmail_msg">
# of appearance. Changing the order has an impact on the overall integration<br class="gmail_msg">
# process, which may cause wedges in the gate later.<br class="gmail_msg">
<br class="gmail_msg">
Babel>=2.3.4 # BSD<br class="gmail_msg">
eventlet!=0.18.3,>=0.18.2 # MIT<br class="gmail_msg">
PuLP>=1.4.1 # MIT<br class="gmail_msg">
keystoneauth1>=2.14.0 # Apache-2.0<br class="gmail_msg">
keystonemiddleware!=4.5.0,>=4.2.0 # Apache-2.0<br class="gmail_msg">
Paste # MIT<br class="gmail_msg">
PasteDeploy>=1.5.0 # MIT<br class="gmail_msg">
pbr>=1.6 # Apache-2.0<br class="gmail_msg">
python-keystoneclient>=3.6.0 # Apache-2.0<br class="gmail_msg">
python-heatclient>=1.5.0 # Apache-2.0<br class="gmail_msg">
python-magnumclient<br class="gmail_msg">
python-muranoclient>=0.8.2 # Apache-2.0<br class="gmail_msg">
python-novaclient!=2.33.0,>=2.29.0 # Apache-2.0<br class="gmail_msg">
python-neutronclient>=5.1.0 # Apache-2.0<br class="gmail_msg">
python-ceilometerclient>=2.5.0 # Apache-2.0<br class="gmail_msg">
python-cinderclient!=1.7.0,!=1.7.1,>=1.6.0 # Apache-2.0<br class="gmail_msg">
python-swiftclient>=2.2.0 # Apache-2.0<br class="gmail_msg">
python-ironicclient>=1.6.0 # Apache-2.0<br class="gmail_msg">
alembic>=0.8.4 # MIT<br class="gmail_msg">
python-dateutil>=2.4.2 # BSD<br class="gmail_msg">
python-glanceclient>=2.5.0 # Apache-2.0<br class="gmail_msg">
Routes!=2.0,!=2.1,!=2.3.0,>=1.12.3;python_version=='2.7' # MIT<br class="gmail_msg">
Routes!=2.0,!=2.3.0,>=1.12.3;python_version!='2.7' # MIT<br class="gmail_msg">
six>=1.9.0 # MIT<br class="gmail_msg">
oslo.concurrency>=3.8.0 # Apache-2.0<br class="gmail_msg">
oslo.config!=3.18.0,>=3.14.0 # Apache-2.0<br class="gmail_msg">
oslo.context>=2.9.0 # Apache-2.0<br class="gmail_msg">
oslo.db!=4.13.1,!=4.13.2,>=4.11.0 # Apache-2.0<br class="gmail_msg">
oslo.messaging>=5.2.0 # Apache-2.0<br class="gmail_msg">
oslo.policy>=1.15.0 # Apache-2.0<br class="gmail_msg">
oslo.serialization>=1.10.0 # Apache-2.0<br class="gmail_msg">
oslo.service>=1.10.0 # Apache-2.0<br class="gmail_msg">
oslo.utils>=3.18.0 # Apache-2.0<br class="gmail_msg">
oslo.middleware>=3.0.0 # Apache-2.0<br class="gmail_msg">
oslo.vmware>=2.11.0 # Apache-2.0<br class="gmail_msg">
oslo.log>=3.11.0 # Apache-2.0<br class="gmail_msg">
WebOb>=1.6.0 # MIT"<br class="gmail_msg">
<br class="gmail_msg">
----- Original Message -----<br class="gmail_msg">
From: "Tim Hinrichs" <<a href="mailto:tim@styra.com" class="gmail_msg" target="_blank">tim@styra.com</a>><br class="gmail_msg">
To: "Ruben" <<a href="mailto:r.manganiello1@studenti.unisa.it" class="gmail_msg" target="_blank">r.manganiello1@studenti.unisa.it</a>>, <a href="mailto:openstack-dev@lists.openstack.org" class="gmail_msg" target="_blank">openstack-dev@lists.openstack.org</a><br class="gmail_msg">
Cc: "timothy l hinrichs" <<a href="mailto:timothy.l.hinrichs@gmail.com" class="gmail_msg" target="_blank">timothy.l.hinrichs@gmail.com</a>><br class="gmail_msg">
Sent: Wednesday, November 23, 2016 11:44:40 PM<br class="gmail_msg">
Subject: Re: [Congress] Magnum_driver<br class="gmail_msg">
<br class="gmail_msg">
Ruben,<br class="gmail_msg">
<br class="gmail_msg">
All the software that gets imported by your code needs to be listed in<br class="gmail_msg">
requirements.txt so that when tox runs, it installs that software.  When I<br class="gmail_msg">
did some debugging for you I made the necessary change, so if you add that<br class="gmail_msg">
back into your change, that error should disappear.<br class="gmail_msg">
<br class="gmail_msg">
<a href="https://review.openstack.org/#/c/397150/" rel="noreferrer" class="gmail_msg" target="_blank">https://review.openstack.org/#/c/397150/</a><br class="gmail_msg">
<br class="gmail_msg">
Tim<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
On Wed, Nov 23, 2016 at 12:29 PM Ruben <<a href="mailto:r.manganiello1@studenti.unisa.it" class="gmail_msg" target="_blank">r.manganiello1@studenti.unisa.it</a>><br class="gmail_msg">
wrote:<br class="gmail_msg">
<br class="gmail_msg">
> Hi everybody,<br class="gmail_msg">
> I've trying to run the unit test of the magnum_driver.<br class="gmail_msg">
><br class="gmail_msg">
> I make:<br class="gmail_msg">
> -cd /opt/stack/congress/<br class="gmail_msg">
> -tox -epy27<br class="gmail_msg">
><br class="gmail_msg">
> but I have error with the import.<br class="gmail_msg">
> This is the output:<br class="gmail_msg">
><br class="gmail_msg">
> "py27 develop-inst-noop: /opt/stack/congress<br class="gmail_msg">
> py27 installed:<br class="gmail_msg">
> alabaster==0.7.9,alembic==0.8.8,amqp==1.4.9,anyjson==0.3.3,appdirs==1.4.0,Babel==2.3.4,cachetools==2.0.0,cffi==1.9.1,cliff==2.2.0,cmd2==0.6.9,-e<br class="gmail_msg">
> git+<br class="gmail_msg">
> <a href="http://git.openstack.org/openstack/congress@b2d96b56f721c941e85db565d203df008c455b19#egg=congress,contextlib2==0.5.4,coverage==4.2,cryptography==1.5.3,debtcollector==1.9.0,decorator==4.0.10,docutils==0.12,dogpile.cache==0.6.2,enum34==1.1.6,eventlet==0.19.0,extras==1.0.0,fasteners==0.14.1,fixtures==3.0.0,flake8==2.2.4,funcsigs==1.0.2,functools32==3.2.3.post2,futures==3.0.5,futurist==0.19.0,greenlet==0.4.10,hacking==0.10.2,idna==2.1,ipaddress==1.0.17,iso8601==0.1.11,Jinja2==2.8,jsonpatch==1.14,jsonpointer==1.10,jsonschema==2.5.1,keystoneauth1==2.15.0,keystonemiddleware==4.10.0,kombu==3.0.37,linecache2==1.0.0,lxml==3.6.4,Mako==1.0.6,MarkupSafe==0.23,mccabe==0.2.1,mock==2.0.0,monotonic==1.2,mox3==0.18.0,msgpack-python==0.4.8,netaddr==0.7.18,netifaces==0.10.5,openstacksdk==0.9.9,os-client-config==1.22.0,osc-lib==1.2.0,oslo.concurrency==3.15.0,oslo.config==3.19.0,oslo.context==2.10.0,oslo.db==4.14.0,oslo.i18n==3.10.0,oslo.log==3.17.0,oslo.messaging==5.12.0,oslo.middleware==3.20.0,oslo.policy==1.16.0,oslo.serialization==2.14.0,oslo.service==1.17.0,oslo.utils==3.18.0,oslo.vmware==2.15.0,oslosphinx==4.8.0,oslotest==2.11.0,Paste==2.0.3,PasteDeploy==1.5.2,pbr==1.10.0,pep8==1.5.7,pika==0.10.0,pika-pool==0.1.3,ply==3.9,positional==1.1.1,prettytable==0.7.2,PuLP==1.6.1,pyasn1==0.1.9,pycadf==2.4.0,pycparser==2.17,pyflakes==0.8.1,Pygments==2.1.3,pyinotify==0.9.6,pyOpenSSL==16.2.0,pyparsing==1.5.7,python-ceilometerclient==2.7.0,python-cinderclient==1.9.0,python-dateutil==2.6.0,python-editor==1.0.1,python-glanceclient==2.5.0,python-heatclient==1.5.0,python-ironicclient==1.8.0,python-keystoneclient==3.6.0,python-mimeparse==1.6.0,python-muranoclient==0.11.1,python-neutronclient==6.0.0,python-novaclient==6.0.0,python-openstackclient==3.3.0,python-subunit==1.2.0,python-swiftclient==3.1.0,pytz==2016.7,PyYAML==3.12,reno==1.8.0,repoze.lru==0.6,requests==2.11.1,requests-mock==1.1.0,requestsexceptions==1.1.3,retrying==1.3.3,rfc3986==0.4.1,Routes==2.3.1,simplejson==3.10.0,six==1.10.0,snowballstemmer==1.2.1,Sphinx==1.3.6,sphinx-rtd-theme==0.1.9,SQLAlchemy==1.1.3,sqlalchemy-migrate==0.10.0,sqlparse==0.2.2,stevedore==1.18.0,suds-jurko==0.6,Tempita==0.5.2,tenacity==3.3.0,testrepository==0.0.20,testscenarios==0.5.0,testtools==2.2.0,traceback2==1.4.0,unicodecsv==0.14.1,unittest2==1.1.0,urllib3==1.19,warlock==1.2.0,WebOb==1.6.2,wrapt==1.10.8,yaql==1.1.1" rel="noreferrer" class="gmail_msg" target="_blank">http://git.openstack.org/openstack/congress@b2d96b56f721c941e85db565d203df008c455b19#egg=congress,contextlib2==0.5.4,coverage==4.2,cryptography==1.5.3,debtcollector==1.9.0,decorator==4.0.10,docutils==0.12,dogpile.cache==0.6.2,enum34==1.1.6,eventlet==0.19.0,extras==1.0.0,fasteners==0.14.1,fixtures==3.0.0,flake8==2.2.4,funcsigs==1.0.2,functools32==3.2.3.post2,futures==3.0.5,futurist==0.19.0,greenlet==0.4.10,hacking==0.10.2,idna==2.1,ipaddress==1.0.17,iso8601==0.1.11,Jinja2==2.8,jsonpatch==1.14,jsonpointer==1.10,jsonschema==2.5.1,keystoneauth1==2.15.0,keystonemiddleware==4.10.0,kombu==3.0.37,linecache2==1.0.0,lxml==3.6.4,Mako==1.0.6,MarkupSafe==0.23,mccabe==0.2.1,mock==2.0.0,monotonic==1.2,mox3==0.18.0,msgpack-python==0.4.8,netaddr==0.7.18,netifaces==0.10.5,openstacksdk==0.9.9,os-client-config==1.22.0,osc-lib==1.2.0,oslo.concurrency==3.15.0,oslo.config==3.19.0,oslo.context==2.10.0,oslo.db==4.14.0,oslo.i18n==3.10.0,oslo.log==3.17.0,oslo.messaging==5.12.0,oslo.middleware==3.20.0,oslo.policy==1.16.0,oslo.serialization==2.14.0,oslo.service==1.17.0,oslo.utils==3.18.0,oslo.vmware==2.15.0,oslosphinx==4.8.0,oslotest==2.11.0,Paste==2.0.3,PasteDeploy==1.5.2,pbr==1.10.0,pep8==1.5.7,pika==0.10.0,pika-pool==0.1.3,ply==3.9,positional==1.1.1,prettytable==0.7.2,PuLP==1.6.1,pyasn1==0.1.9,pycadf==2.4.0,pycparser==2.17,pyflakes==0.8.1,Pygments==2.1.3,pyinotify==0.9.6,pyOpenSSL==16.2.0,pyparsing==1.5.7,python-ceilometerclient==2.7.0,python-cinderclient==1.9.0,python-dateutil==2.6.0,python-editor==1.0.1,python-glanceclient==2.5.0,python-heatclient==1.5.0,python-ironicclient==1.8.0,python-keystoneclient==3.6.0,python-mimeparse==1.6.0,python-muranoclient==0.11.1,python-neutronclient==6.0.0,python-novaclient==6.0.0,python-openstackclient==3.3.0,python-subunit==1.2.0,python-swiftclient==3.1.0,pytz==2016.7,PyYAML==3.12,reno==1.8.0,repoze.lru==0.6,requests==2.11.1,requests-mock==1.1.0,requestsexceptions==1.1.3,retrying==1.3.3,rfc3986==0.4.1,Routes==2.3.1,simplejson==3.10.0,six==1.10.0,snowballstemmer==1.2.1,Sphinx==1.3.6,sphinx-rtd-theme==0.1.9,SQLAlchemy==1.1.3,sqlalchemy-migrate==0.10.0,sqlparse==0.2.2,stevedore==1.18.0,suds-jurko==0.6,Tempita==0.5.2,tenacity==3.3.0,testrepository==0.0.20,testscenarios==0.5.0,testtools==2.2.0,traceback2==1.4.0,unicodecsv==0.14.1,unittest2==1.1.0,urllib3==1.19,warlock==1.2.0,WebOb==1.6.2,wrapt==1.10.8,yaql==1.1.1</a><br class="gmail_msg">
> py27<br class="gmail_msg">
> <<a href="http://git.openstack.org/openstack/congress@b2d96b56f721c941e85db565d203df008c455b19#egg=congress,contextlib2==0.5.4,coverage==4.2,cryptography==1.5.3,debtcollector==1.9.0,decorator==4.0.10,docutils==0.12,dogpile.cache==0.6.2,enum34==1.1.6,eventlet==0.19.0,extras==1.0.0,fasteners==0.14.1,fixtures==3.0.0,flake8==2.2.4,funcsigs==1.0.2,functools32==3.2.3.post2,futures==3.0.5,futurist==0.19.0,greenlet==0.4.10,hacking==0.10.2,idna==2.1,ipaddress==1.0.17,iso8601==0.1.11,Jinja2==2.8,jsonpatch==1.14,jsonpointer==1.10,jsonschema==2.5.1,keystoneauth1==2.15.0,keystonemiddleware==4.10.0,kombu==3.0.37,linecache2==1.0.0,lxml==3.6.4,Mako==1.0.6,MarkupSafe==0.23,mccabe==0.2.1,mock==2.0.0,monotonic==1.2,mox3==0.18.0,msgpack-python==0.4.8,netaddr==0.7.18,netifaces==0.10.5,openstacksdk==0.9.9,os-client-config==1.22.0,osc-lib==1.2.0,oslo.concurrency==3.15.0,oslo.config==3.19.0,oslo.context==2.10.0,oslo.db==4.14.0,oslo.i18n==3.10.0,oslo.log==3.17.0,oslo.messaging==5.12.0,oslo.middleware==3.20.0,oslo.policy==1.16.0,oslo.serialization==2.14.0,oslo.service==1.17.0,oslo.utils==3.18.0,oslo.vmware==2.15.0,oslosphinx==4.8.0,oslotest==2.11.0,Paste==2.0.3,PasteDeploy==1.5.2,pbr==1.10.0,pep8==1.5.7,pika==0.10.0,pika-pool==0.1.3,ply==3.9,positional==1.1.1,prettytable==0.7.2,PuLP==1.6.1,pyasn1==0.1.9,pycadf==2.4.0,pycparser==2.17,pyflakes==0.8.1,Pygments==2.1.3,pyinotify==0.9.6,pyOpenSSL==16.2.0,pyparsing==1.5.7,python-ceilometerclient==2.7.0,python-cinderclient==1.9.0,python-dateutil==2.6.0,python-editor==1.0.1,python-glanceclient==2.5.0,python-heatclient==1.5.0,python-ironicclient==1.8.0,python-keystoneclient==3.6.0,python-mimeparse==1.6.0,python-muranoclient==0.11.1,python-neutronclient==6.0.0,python-novaclient==6.0.0,python-openstackclient==3.3.0,python-subunit==1.2.0,python-swiftclient==3.1.0,pytz==2016.7,PyYAML==3.12,reno==1.8.0,repoze.lru==0.6,requests==2.11.1,requests-mock==1.1.0,requestsexceptions==1.1.3,retrying==1.3.3,rfc3986==0.4.1,Routes==2.3.1,simplejson==3.10.0,six==1.10.0,snowballstemmer==1.2.1,Sphinx==1.3.6,sphinx-rtd-theme==0.1.9,SQLAlchemy==1.1.3,sqlalchemy-migrate==0.10.0,sqlparse==0.2.2,stevedore==1.18.0,suds-jurko==0.6,Tempita==0.5.2,tenacity==3.3.0,testrepository==0.0.20,testscenarios==0.5.0,testtools==2.2.0,traceback2==1.4.0,unicodecsv==0.14.1,unittest2==1.1.0,urllib3==1.19,warlock==1.2.0,WebOb==1.6.2,wrapt==1.10.8,yaql==1.1.1py27" rel="noreferrer" class="gmail_msg" target="_blank">http://git.openstack.org/openstack/congress@b2d96b56f721c941e85db565d203df008c455b19#egg=congress,contextlib2==0.5.4,coverage==4.2,cryptography==1.5.3,debtcollector==1.9.0,decorator==4.0.10,docutils==0.12,dogpile.cache==0.6.2,enum34==1.1.6,eventlet==0.19.0,extras==1.0.0,fasteners==0.14.1,fixtures==3.0.0,flake8==2.2.4,funcsigs==1.0.2,functools32==3.2.3.post2,futures==3.0.5,futurist==0.19.0,greenlet==0.4.10,hacking==0.10.2,idna==2.1,ipaddress==1.0.17,iso8601==0.1.11,Jinja2==2.8,jsonpatch==1.14,jsonpointer==1.10,jsonschema==2.5.1,keystoneauth1==2.15.0,keystonemiddleware==4.10.0,kombu==3.0.37,linecache2==1.0.0,lxml==3.6.4,Mako==1.0.6,MarkupSafe==0.23,mccabe==0.2.1,mock==2.0.0,monotonic==1.2,mox3==0.18.0,msgpack-python==0.4.8,netaddr==0.7.18,netifaces==0.10.5,openstacksdk==0.9.9,os-client-config==1.22.0,osc-lib==1.2.0,oslo.concurrency==3.15.0,oslo.config==3.19.0,oslo.context==2.10.0,oslo.db==4.14.0,oslo.i18n==3.10.0,oslo.log==3.17.0,oslo.messaging==5.12.0,oslo.middleware==3.20.0,oslo.policy==1.16.0,oslo.serialization==2.14.0,oslo.service==1.17.0,oslo.utils==3.18.0,oslo.vmware==2.15.0,oslosphinx==4.8.0,oslotest==2.11.0,Paste==2.0.3,PasteDeploy==1.5.2,pbr==1.10.0,pep8==1.5.7,pika==0.10.0,pika-pool==0.1.3,ply==3.9,positional==1.1.1,prettytable==0.7.2,PuLP==1.6.1,pyasn1==0.1.9,pycadf==2.4.0,pycparser==2.17,pyflakes==0.8.1,Pygments==2.1.3,pyinotify==0.9.6,pyOpenSSL==16.2.0,pyparsing==1.5.7,python-ceilometerclient==2.7.0,python-cinderclient==1.9.0,python-dateutil==2.6.0,python-editor==1.0.1,python-glanceclient==2.5.0,python-heatclient==1.5.0,python-ironicclient==1.8.0,python-keystoneclient==3.6.0,python-mimeparse==1.6.0,python-muranoclient==0.11.1,python-neutronclient==6.0.0,python-novaclient==6.0.0,python-openstackclient==3.3.0,python-subunit==1.2.0,python-swiftclient==3.1.0,pytz==2016.7,PyYAML==3.12,reno==1.8.0,repoze.lru==0.6,requests==2.11.1,requests-mock==1.1.0,requestsexceptions==1.1.3,retrying==1.3.3,rfc3986==0.4.1,Routes==2.3.1,simplejson==3.10.0,six==1.10.0,snowballstemmer==1.2.1,Sphinx==1.3.6,sphinx-rtd-theme==0.1.9,SQLAlchemy==1.1.3,sqlalchemy-migrate==0.10.0,sqlparse==0.2.2,stevedore==1.18.0,suds-jurko==0.6,Tempita==0.5.2,tenacity==3.3.0,testrepository==0.0.20,testscenarios==0.5.0,testtools==2.2.0,traceback2==1.4.0,unicodecsv==0.14.1,unittest2==1.1.0,urllib3==1.19,warlock==1.2.0,WebOb==1.6.2,wrapt==1.10.8,yaql==1.1.1py27</a>><br class="gmail_msg">
> runtests: PYTHONHASHSEED='<a href="tel:(423)%20517-1505" value="+14235171505" class="gmail_msg" target="_blank">4235171505</a> <(423)%20517-1505>'<br class="gmail_msg">
> py27 runtests: commands[0] | find . -type f -name *.py[c|o] -delete<br class="gmail_msg">
> py27 runtests: commands[1] | python setup.py testr --slowest --testr-args=<br class="gmail_msg">
> running testr<br class="gmail_msg">
> running=OS_STDOUT_CAPTURE=${OS_STDOUT_CAPTURE:-1} \<br class="gmail_msg">
> OS_STDERR_CAPTURE=${OS_STDERR_CAPTURE:-1} \<br class="gmail_msg">
> OS_TEST_TIMEOUT=${OS_TEST_TIMEOUT:-60} \<br class="gmail_msg">
> ${PYTHON:-python} -m subunit.run discover -t ./ ./congress/tests --list<br class="gmail_msg">
> --- import errors ---<br class="gmail_msg">
> Failed to import test module: congress.tests.datasources.test_magnum_driver<br class="gmail_msg">
> Traceback (most recent call last):<br class="gmail_msg">
>   File<br class="gmail_msg">
> "/opt/stack/congress/.tox/py27/local/lib/python2.7/site-packages/unittest2/loader.py",<br class="gmail_msg">
> line 456, in _find_test_path<br class="gmail_msg">
>     module = self._get_module_from_name(name)<br class="gmail_msg">
>   File<br class="gmail_msg">
> "/opt/stack/congress/.tox/py27/local/lib/python2.7/site-packages/unittest2/loader.py",<br class="gmail_msg">
> line 395, in _get_module_from_name<br class="gmail_msg">
>     __import__(name)<br class="gmail_msg">
>   File "congress/tests/datasources/test_magnum_driver.py", line 18, in<br class="gmail_msg">
> <module><br class="gmail_msg">
>     from congress.datasources import magnum_driver<br class="gmail_msg">
>   File "congress/datasources/magnum_driver.py", line 16, in <module><br class="gmail_msg">
>     from magnumclient import client as magnum_client<br class="gmail_msg">
> ImportError: No module named magnumclient<br class="gmail_msg">
> Non-zero exit code (2) from test listing.<br class="gmail_msg">
> error: testr failed (3)<br class="gmail_msg">
> ERROR: InvocationError: '/opt/stack/congress/.tox/py27/bin/python setup.py<br class="gmail_msg">
> testr --slowest --testr-args='<br class="gmail_msg">
> __________________________________________________________________________________________________<br class="gmail_msg">
> summary<br class="gmail_msg">
> __________________________________________________________________________________________________<br class="gmail_msg">
> ERROR:   py27: commands failed"<br class="gmail_msg">
><br class="gmail_msg">
><br class="gmail_msg">
> Pep8 is ok.<br class="gmail_msg">
> What should I do to solve the error above?<br class="gmail_msg">
><br class="gmail_msg">
> Anyway I've errors with the translators..<br class="gmail_msg">
> I've add the code to review.<br class="gmail_msg">
><br class="gmail_msg">
> Ruben<br class="gmail_msg">
><br class="gmail_msg">
><br class="gmail_msg">
</blockquote></div>