<div dir="ltr">Hi Ruben,<div><br></div><div>I left a comment on one of the changes; after you take care of that I'll take a closer look at the code.  Let me know if you have questions.</div><div><br></div><div>Tim </div></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Nov 29, 2016 at 4:06 AM 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've added the code of magnum_driver and its unit test to review.<br class="gmail_msg">
It seems everything works.<br class="gmail_msg">
<br class="gmail_msg">
Ruben<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>><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: Saturday, November 26, 2016 12:48:12 AM<br class="gmail_msg">
Subject: Re: [Congress] Magnum_driver<br class="gmail_msg">
<br class="gmail_msg">
Definitely push that code up into Gerrit so we can all take a look.  Data<br class="gmail_msg">
like pods and containers is probably the most valuable data from Magnum, so<br class="gmail_msg">
I'd definitely recommend adding that.  But push the code you have to Gerrit<br class="gmail_msg">
first.  (As long as you leave the ChangeId the same each time you push to<br class="gmail_msg">
Gerrit, Gerrit will keep all of the versions you pushed organized together,<br class="gmail_msg">
yet keep the versions separate.)<br class="gmail_msg">
<br class="gmail_msg">
Tim<br class="gmail_msg">
<br class="gmail_msg">
On Fri, Nov 25, 2016 at 3:06 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 Tim,<br class="gmail_msg">
> You are great. It works! Thanks a lot!<br class="gmail_msg">
> I've also solved the problem with py27. The unit test seems to work.<br class="gmail_msg">
> The only thing that seems not to work is populate the 'clusters_links' and<br class="gmail_msg">
> 'cluster_templates_links' tables: they are empty.<br class="gmail_msg">
> Also, the 'labels' table is empty.<br class="gmail_msg">
> I've no errors anyway.<br class="gmail_msg">
> Are these problems according to you?<br class="gmail_msg">
><br class="gmail_msg">
> Should I to try to add the translation of pods, containers and services?<br class="gmail_msg">
><br class="gmail_msg">
> I've add the code to review.<br class="gmail_msg">
><br class="gmail_msg">
> Ruben<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>><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" <<br class="gmail_msg">
> <a href="mailto:timothy.l.hinrichs@gmail.com" class="gmail_msg" target="_blank">timothy.l.hinrichs@gmail.com</a>><br class="gmail_msg">
> Sent: Friday, November 25, 2016 10:36:29 PM<br class="gmail_msg">
> Subject: Re: [Congress] Magnum_driver<br class="gmail_msg">
><br class="gmail_msg">
> Hi Ruben,<br class="gmail_msg">
><br class="gmail_msg">
> Glad you got that worked out.  Once in a while I end up deleting my .tox<br class="gmail_msg">
> dir because it gets out of date.  I guess that's what the --recreate option<br class="gmail_msg">
> to tox does.  So I learned something.  :)<br class="gmail_msg">
><br class="gmail_msg">
> The new error message looks to be saying that an object of type 'Cluster'<br class="gmail_msg">
> cannot be iterated.  Congress's _translate_clusters method assumes that<br class="gmail_msg">
> what you give it is basically JSON (arrays, dictionaries, numbers, strings,<br class="gmail_msg">
> bools).   In this case Congress is trying to iterate over the keys of a<br class="gmail_msg">
> dictionary but is getting a 'Cluster' Python object instead.  What's<br class="gmail_msg">
> happening is that when you do the cluster.list() (or whatever it's called)<br class="gmail_msg">
> on the magnum-python you're getting back a list of Cluster Python objects<br class="gmail_msg">
> instead of a list of dictionaries.<br class="gmail_msg">
><br class="gmail_msg">
> To fix the problem, you'll want to take the results of cluster.list() and<br class="gmail_msg">
> translate it into a list of dictionaries, and then hand that off to<br class="gmail_msg">
> _translate_clusters.  Probably you'll need to do the same for the<br class="gmail_msg">
> cluster_template.  So instead of ...<br class="gmail_msg">
><br class="gmail_msg">
>         clusters_method = lambda: self._translate_clusters(<br class="gmail_msg">
>             {'clusters': self.magnum.clusters.list()})<br class="gmail_msg">
><br class="gmail_msg">
> You'll want to do something like ...<br class="gmail_msg">
><br class="gmail_msg">
>         clusters_method = lambda: self._translate_clusters(<br class="gmail_msg">
>             {'clusters': [x.__dict__ for x in self.magnum.clusters.list()]<br class="gmail_msg">
>  })<br class="gmail_msg">
><br class="gmail_msg">
> Or at least, that's what I'd start trying.  __dict__ grabs all the fields<br class="gmail_msg">
> of an object and returns a dictionary.  (If some of the values of that<br class="gmail_msg">
> dictionary are also Python objects, then you might need something that's<br class="gmail_msg">
> more complicated to recursively walk the result of clusters.list() and<br class="gmail_msg">
> translate everything into lists and dictionaries.  And I'm not sure that<br class="gmail_msg">
> __dict__ will give you exactly what you want, but it's worth a try.).<br class="gmail_msg">
><br class="gmail_msg">
> Tim<br class="gmail_msg">
><br class="gmail_msg">
><br class="gmail_msg">
> On Thu, Nov 24, 2016 at 12:11 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 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<br class="gmail_msg">
> > 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 [-]<br class="gmail_msg">
> > magnum:: polling<br class="gmail_msg">
> > 2016-11-24 20:56:27.192 DEBUG congress.datasources.datasource_driver [-]<br class="gmail_msg">
> > update table clusters. from (pid=18720) update_from_datasource<br class="gmail_msg">
> > /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 [-]<br class="gmail_msg">
> > CLUSTERS: {'clusters': [<Clusters {u'status': u'CREATE_FAILED',<br class="gmail_msg">
> > u'cluster_template_id': u'8d25a1ed-faa6-4305-a6a1-6559708c805b', u'uuid':<br class="gmail_msg">
> > u'1634beb9-25de-4cdd-bafa-67537069f0cc', u'links': [{u'href': u'<br class="gmail_msg">
> > <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>',<br class="gmail_msg">
> > u'rel': u'self'}, {u'href': u'<br class="gmail_msg">
> > <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>',<br class="gmail_msg">
> > u'rel': u'bookmark'}], u'stack_id':<br class="gmail_msg">
> > u'17f1248d-286a-4fd4-9639-af5773670f03', u'master_count': 1, u'keypair':<br class="gmail_msg">
> > u'testkey', u'node_count': 1, u'create_timeout': 60, u'name':<br class="gmail_msg">
> > u'k8s-cluster'}>]} from (pid=18720) _translate_clusters<br class="gmail_msg">
> > /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 [-]<br class="gmail_msg">
> > Datasource driver raised exception<br class="gmail_msg">
> > 2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver<br class="gmail_msg">
> > Traceback (most recent call last):<br class="gmail_msg">
> > 2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver<br class="gmail_msg">
> >  File "/opt/stack/congress/congress/datasources/datasource_driver.py",<br class="gmail_msg">
> line<br class="gmail_msg">
> > 1384, in poll<br class="gmail_msg">
> > 2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver<br class="gmail_msg">
> >  self.update_from_datasource()  # sets self.state<br class="gmail_msg">
> > 2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver<br class="gmail_msg">
> >  File "/opt/stack/congress/congress/datasources/datasource_driver.py",<br class="gmail_msg">
> line<br class="gmail_msg">
> > 1371, in update_from_datasource<br class="gmail_msg">
> > 2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver<br class="gmail_msg">
> >  self.update_methods[registered_table]()<br class="gmail_msg">
> > 2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver<br class="gmail_msg">
> >  File "/opt/stack/congress/congress/datasources/magnum_driver.py", line<br class="gmail_msg">
> > 150, in <lambda><br class="gmail_msg">
> > 2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver<br class="gmail_msg">
> >  {'clusters': self.magnum.clusters.list()})<br class="gmail_msg">
> > 2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver<br class="gmail_msg">
> >  File "/opt/stack/congress/congress/datasources/datasource_utils.py",<br class="gmail_msg">
> line<br class="gmail_msg">
> > 57, in inner<br class="gmail_msg">
> > 2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver<br class="gmail_msg">
> >  result = f(self, raw_data, *args, **kw)<br class="gmail_msg">
> > 2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver<br class="gmail_msg">
> >  File "/opt/stack/congress/congress/datasources/magnum_driver.py", line<br class="gmail_msg">
> > 167, in _translate_clusters<br class="gmail_msg">
> > 2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver<br class="gmail_msg">
> >  obj['clusters'], MagnumDriver.clusters_translator)<br class="gmail_msg">
> > 2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver<br class="gmail_msg">
> >  File "/opt/stack/congress/congress/datasources/datasource_driver.py",<br class="gmail_msg">
> line<br class="gmail_msg">
> > 1048, in convert_objs<br class="gmail_msg">
> > 2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver<br class="gmail_msg">
> >  rows, _ = DataSourceDriver.convert_obj(o, translator)<br class="gmail_msg">
> > 2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver<br class="gmail_msg">
> >  File "/opt/stack/congress/congress/datasources/datasource_driver.py",<br class="gmail_msg">
> line<br class="gmail_msg">
> > 1021, in convert_obj<br class="gmail_msg">
> > 2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver<br class="gmail_msg">
> >  parent_row_dict)<br class="gmail_msg">
> > 2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver<br class="gmail_msg">
> >  File "/opt/stack/congress/congress/datasources/datasource_driver.py",<br class="gmail_msg">
> line<br class="gmail_msg">
> > 994, in _populate_translator_data_hdict<br class="gmail_msg">
> > 2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver<br class="gmail_msg">
> >  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<br class="gmail_msg">
> >  File "/opt/stack/congress/congress/datasources/datasource_driver.py",<br class="gmail_msg">
> line<br class="gmail_msg">
> > 924, in _populate_hdict<br class="gmail_msg">
> > 2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver<br class="gmail_msg">
> >  cls._get_value(obj, field, selector), extract_fn)<br class="gmail_msg">
> > 2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver<br class="gmail_msg">
> >  File "/opt/stack/congress/congress/datasources/datasource_driver.py",<br class="gmail_msg">
> line<br class="gmail_msg">
> > 693, in _get_value<br class="gmail_msg">
> > 2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver<br class="gmail_msg">
> >  if field in o:<br class="gmail_msg">
> > 2016-11-24 20:56:27.435 TRACE congress.datasources.datasource_driver<br class="gmail_msg">
> > 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 [-]<br class="gmail_msg">
> > 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" <<br class="gmail_msg">
> > <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<br class="gmail_msg">
> > 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<br class="gmail_msg">
> the<br class="gmail_msg">
> > order<br class="gmail_msg">
> > # of appearance. Changing the order has an impact on the overall<br class="gmail_msg">
> > 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>>,<br class="gmail_msg">
> > <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<br class="gmail_msg">
> I<br class="gmail_msg">
> > did some debugging for you I made the necessary change, so if you add<br class="gmail_msg">
> 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">
> ><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">
> > ><br class="gmail_msg">
> ><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">
> > ><br class="gmail_msg">
> ><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">
> > > <<br class="gmail_msg">
> ><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">
> > ><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">
> <(423)%20517-1505><br class="gmail_msg">
> > <(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<br class="gmail_msg">
> > --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:<br class="gmail_msg">
> > congress.tests.datasources.test_magnum_driver<br class="gmail_msg">
> > > Traceback (most recent call last):<br class="gmail_msg">
> > >   File<br class="gmail_msg">
> > ><br class="gmail_msg">
> ><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">
> > ><br class="gmail_msg">
> ><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<br class="gmail_msg">
> > setup.py<br class="gmail_msg">
> > > testr --slowest --testr-args='<br class="gmail_msg">
> > ><br class="gmail_msg">
> ><br class="gmail_msg">
> __________________________________________________________________________________________________<br class="gmail_msg">
> > > summary<br class="gmail_msg">
> > ><br class="gmail_msg">
> ><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">
> ><br class="gmail_msg">
><br class="gmail_msg">
</blockquote></div>