You're right. The plugin itself does declare specific versions for the
novaclient:
https://github.com/cloudify-cosmo/cloudify-openstack-plugin/blob/2.0.1/setup.py
Yet those might not be used if you already have these dependencies
installed in your environment.

Supposedly, you want to work with ARIA on its own virtualenv (i.e. not have
Openstack clients installed there manually), since all plugins that get
installed are isolated from one another yet do take your general ARIA
environment into account as constraints. Otherwise, a plugin installation
might have messed something else you had installed in your environment.
See here:
https://github.com/apache/incubator-ariatosca/blob/0.1.1/aria/orchestrator/plugin.py#L155

I'm not sure an issue for this should be created, or at least if we create
one it should probably be for information, rather than something that
requires fixing, I think.

-
Re ARIA not having an API for removing plugins - yup, that's missing at
this time.





On Fri, Sep 1, 2017 at 9:35 PM, DeWayne Filppi <[email protected]> wrote:

> So the problem was that recent versions of the python-novaclient do not
> have the expected properties.  Alas, the plugin install ignored the fact
> that I had a non-compliant version (the latest), and just installed as
> normal.  Maybe this needs to be an issue with the plugin installer?
>
> On Fri, Sep 1, 2017 at 9:31 AM, DeWayne Filppi <[email protected]>
> wrote:
>
> > Alas, no change:
> >
> > 04:05:57 | I | nova_plugin.server.create | {u'args': OrderedDict(),
> > u'openstack_config': {'username': 'dewayne', 'tenant_name':
> > 'dewayne-tenant', 'password': 'viBKwW4E', 'auth_url': '
> > https://rackspace-api.gigaspaces.com:5000/v3'}} | EXCEPTION: 'Client'
> > object has no attribute 'images'
> >
> > Seems unrelated to ARIA.
> >
> >
> > On Fri, Sep 1, 2017 at 2:28 AM, Ran Ziv <[email protected]> wrote:
> >
> >> Shouldn't the Nova client actually have an "images" attribute?
> >>
> >> The plugin was tested in its 2.0.1 version, as can be seen on the README
> >> here:
> >> https://github.com/cloudify-cosmo/aria-extension-cloudify
> >>
> >> Here's the plugin code diff between now (~2.2.0) and then:
> >> https://github.com/cloudify-cosmo/cloudify-openstack-plugin/
> >> compare/2.0.1-devel...master
> >>
> >> Can't really say I see anything that would cause this, but perhaps you
> >> should indeed try working with a 2.0.1 wagon.
> >> If that works let us know and we could possibly amend the plugin adapter
> >> if
> >> needed.
> >>
> >>
> >>
> >> On Fri, Sep 1, 2017 at 5:41 AM, DeWayne Filppi <[email protected]>
> >> wrote:
> >>
> >> > I dug down quite a bit, and see that in openstack_plugin_common.__init
> >> __
> >> > in
> >> > the cosmo_list method of the NovaClientWithSugar class, I wrapped a
> >> call to
> >> > getattr with a try:except and see.
> >> >
> >> > 02:22:47 | I | nova_plugin.server.create | {u'args': OrderedDict(),
> >> > u'openstack_config': {'username': 'dewayne', 'tenant_name':
> >> > 'dewayne-tenant', 'password': 'viBKwW4E', 'auth_url': '
> >> > https://rackspace-api.gigaspaces.com:5000/v3'}} |
> >> COSMO_EXCEPTION='Client'
> >> > object has no attribute 'images'
> >> >
> >> > Maybe somebody who wrote this logic can help. Basically, the logic
> take
> >> the
> >> > 'image' property, makes it plural, and then tries to find it in the
> >> client
> >> > class.  It doesn't find it and it blows up.  Maybe I've got a bad
> >> version
> >> > of the openstack plugin:  2.2.0
> >> >
> >> >
> >> > On Thu, Aug 31, 2017 at 12:53 AM, Ran Ziv <[email protected]> wrote:
> >> >
> >> > > Is this everything?
> >> > > It seems like this never reached the actual API call telling Nova to
> >> > create
> >> > > a server, but rather failed in the section where image/flavor,
> >> keypair,
> >> > > security groups and nics are configured for the server
> >> > > ( see
> >> > > https://github.com/cloudify-cosmo/cloudify-openstack-
> >> > > plugin/blob/master/nova_plugin/server.py#L282
> >> > > )
> >> > >
> >> > > Unfortunately it seems like the trace from the plugin code hasn't
> >> reached
> >> > > the execution logs somehow (possibly something we've missed in the
> >> plugin
> >> > > adapter?), so I can't really say what's the exact problem.
> >> > > It should be fairly simple to debug though - the plugin code should
> be
> >> > > extracted inside your ~/.aria/plugins dir, so you can easily debug
> the
> >> > > plugin code while it's running and find the real problem as it
> >> happens.
> >> > >
> >> > >
> >> > > On Wed, Aug 30, 2017 at 7:28 PM, DeWayne Filppi <
> [email protected]>
> >> > > wrote:
> >> > >
> >> > > > The log:
> >> > > >
> >> > > > Starting execution. Press Ctrl+C cancel
> >> > > > 16:13:43 | I | neutron_plugin.router.create | {u'args':
> >> OrderedDict(),
> >> > > > u'openstack_config': {'username': 'dewayne', 'tenant_name':
> >> > > > 'dewayne-tenant', 'password': 'xxxxxxx', 'auth_url': '
> >> > > > https://rackspace-api.gigaspaces.com:5000/v3'}} | router_1
> >> > > Standard.create
> >> > > > started...
> >> > > > 16:13:44 | I | neutron_plugin.network.create | {u'args':
> >> OrderedDict(),
> >> > > > u'openstack_config': {'username': 'dewayne', 'tenant_name':
> >> > > > 'dewayne-tenant', 'password': 'xxxxxxx', 'auth_url': '
> >> > > > https://rackspace-api.gigaspaces.com:5000/v3'}} | network_1
> >> > > > Standard.create
> >> > > > started...
> >> > > > 16:13:44 | I | nova_plugin.keypair.create | {u'args':
> OrderedDict(),
> >> > > > u'openstack_config': {'username': 'dewayne', 'tenant_name':
> >> > > > 'dewayne-tenant', 'password': 'xxxxxxx', 'auth_url': '
> >> > > > https://rackspace-api.gigaspaces.com:5000/v3'}} | keypair_1
> >> > > > Standard.create
> >> > > > started...
> >> > > > 16:13:51 | I | neutron_plugin.network.create | {u'args':
> >> OrderedDict(),
> >> > > > u'openstack_config': {'username': 'dewayne', 'tenant_name':
> >> > > > 'dewayne-tenant', 'password': 'xxxxxxx', 'auth_url': '
> >> > > > https://rackspace-api.gigaspaces.com:5000/v3'}} | network_1
> >> > > > Standard.create
> >> > > > successful
> >> > > > 16:13:51 | D | None | {} | network_1 Standard.configure has no
> >> > > > implementation
> >> > > > 16:13:51 | D | None | {} | network_1 Standard.start has no
> >> > implementation
> >> > > > 16:13:52 | I | nova_plugin.keypair.create | {u'args':
> OrderedDict(),
> >> > > > u'openstack_config': {'username': 'dewayne', 'tenant_name':
> >> > > > 'dewayne-tenant', 'password': 'xxxxxxx', 'auth_url': '
> >> > > > https://rackspace-api.gigaspaces.com:5000/v3'}} | Using external
> >> > > resource
> >> > > > keypair: dfilppi-rs
> >> > > > 16:13:52 | I | nova_plugin.keypair.create | {u'args':
> OrderedDict(),
> >> > > > u'openstack_config': {'username': 'dewayne', 'tenant_name':
> >> > > > 'dewayne-tenant', 'password': 'xxxxxxx', 'auth_url': '
> >> > > > https://rackspace-api.gigaspaces.com:5000/v3'}} | keypair_1
> >> > > > Standard.create
> >> > > > successful
> >> > > > 16:13:52 | I | neutron_plugin.router.create | {u'args':
> >> OrderedDict(),
> >> > > > u'openstack_config': {'username': 'dewayne', 'tenant_name':
> >> > > > 'dewayne-tenant', 'password': 'xxxxxxx', 'auth_url': '
> >> > > > https://rackspace-api.gigaspaces.com:5000/v3'}} | router_1
> >> > > Standard.create
> >> > > > successful
> >> > > > 16:13:53 | D | None | {} | router_1 Standard.configure has no
> >> > > > implementation
> >> > > > 16:13:53 | D | None | {} | keypair_1 Standard.configure has no
> >> > > > implementation
> >> > > > 16:13:53 | D | None | {} | router_1 Standard.start has no
> >> > implementation
> >> > > > 16:13:54 | D | None | {} | keypair_1 Standard.start has no
> >> > implementation
> >> > > > 16:13:57 | I | neutron_plugin.subnet.create | {u'args':
> >> > > > OrderedDict([('cidr', u'172.16.0.0/16'), ('ip_version', 4)]),
> >> > > > u'openstack_config': {'username': 'dewayne', 'tenant_name':
> >> > > > 'dewayne-tenant', 'password': 'xxxxxxx', 'auth_url': '
> >> > > > https://rackspace-api.gigaspaces.com:5000/v3'}} | subnet_1
> >> > > Standard.create
> >> > > > started...
> >> > > > 16:14:02 | I | neutron_plugin.subnet.create | {u'args':
> >> > > > OrderedDict([('cidr', u'172.16.0.0/16'), ('ip_version', 4)]),
> >> > > > u'openstack_config': {'username': 'dewayne', 'tenant_name':
> >> > > > 'dewayne-tenant', 'password': 'xxxxxxx', 'auth_url': '
> >> > > > https://rackspace-api.gigaspaces.com:5000/v3'}} | subnet_1
> >> > > Standard.create
> >> > > > successful
> >> > > > 16:14:02 | D | None | {} | subnet_1->router_1
> >> > > > Configure.pre_configure_target has no implementation
> >> > > > 16:14:02 | D | None | {} | subnet_1->router_1
> >> > > > Configure.pre_configure_source has no implementation
> >> > > > 16:14:03 | D | None | {} | subnet_1 Standard.configure has no
> >> > > > implementation
> >> > > > 16:14:04 | D | None | {} | subnet_1->router_1
> >> > > > Configure.post_configure_source has no implementation
> >> > > > 16:14:04 | D | None | {} | subnet_1->router_1
> >> > > > Configure.post_configure_target has no implementation
> >> > > > 16:14:04 | D | None | {} | subnet_1 Standard.start has no
> >> > implementation
> >> > > > 16:14:05 | D | None | {} | subnet_1->router_1 Configure.add_source
> >> has
> >> > no
> >> > > > implementation
> >> > > > 16:14:07 | I | neutron_plugin.router.connect_subnet |
> >> > > > {u'openstack_config':
> >> > > > {'username': 'dewayne', 'tenant_name': 'dewayne-tenant',
> 'password':
> >> > > > 'xxxxxxx', 'auth_url': 'https://rackspace-api.gigaspa
> >> ces.com:5000/v3'
> >> > }}
> >> > > |
> >> > > > subnet_1->router_1 Configure.add_target started...
> >> > > > 16:14:12 | I | neutron_plugin.router.connect_subnet |
> >> > > > {u'openstack_config':
> >> > > > {'username': 'dewayne', 'tenant_name': 'dewayne-tenant',
> 'password':
> >> > > > 'xxxxxxx', 'auth_url': 'https://rackspace-api.gigaspa
> >> ces.com:5000/v3'
> >> > }}
> >> > > |
> >> > > > subnet_1->router_1 Configure.add_target successful
> >> > > > 16:14:15 | I | neutron_plugin.port.create | {u'args':
> OrderedDict(),
> >> > > > u'openstack_config': {'username': 'dewayne', 'tenant_name':
> >> > > > 'dewayne-tenant', 'password': 'xxxxxxx', 'auth_url': '
> >> > > > https://rackspace-api.gigaspaces.com:5000/v3'}} | port_1
> >> > Standard.create
> >> > > > started...
> >> > > > 16:14:20 | I | neutron_plugin.port.create | {u'args':
> OrderedDict(),
> >> > > > u'openstack_config': {'username': 'dewayne', 'tenant_name':
> >> > > > 'dewayne-tenant', 'password': 'xxxxxxx', 'auth_url': '
> >> > > > https://rackspace-api.gigaspaces.com:5000/v3'}} | port_1
> >> > Standard.create
> >> > > > successful
> >> > > > 16:14:21 | D | None | {} | port_1->subnet_1
> >> > > Configure.pre_configure_target
> >> > > > has no implementation
> >> > > > 16:14:21 | D | None | {} | port_1->subnet_1
> >> > > Configure.pre_configure_source
> >> > > > has no implementation
> >> > > > 16:14:22 | D | None | {} | port_1 Standard.configure has no
> >> > > implementation
> >> > > > 16:14:22 | D | None | {} | port_1->subnet_1
> >> Configure.post_configure_
> >> > > > target
> >> > > > has no implementation
> >> > > > 16:14:22 | D | None | {} | port_1->subnet_1
> >> Configure.post_configure_
> >> > > > source
> >> > > > has no implementation
> >> > > > 16:14:23 | D | None | {} | port_1 Standard.start has no
> >> implementation
> >> > > > 16:14:23 | D | None | {} | port_1->subnet_1 Configure.add_source
> >> has no
> >> > > > implementation
> >> > > > 16:14:23 | D | None | {} | port_1->subnet_1 Configure.add_target
> >> has no
> >> > > > implementation
> >> > > > 16:14:29 | I | nova_plugin.server.create | {u'args':
> OrderedDict(),
> >> > > > u'openstack_config': {'username': 'dewayne', 'tenant_name':
> >> > > > 'dewayne-tenant', 'password': 'xxxxxxx', 'auth_url': '
> >> > > > https://rackspace-api.gigaspaces.com:5000/v3'}} | vm_1
> >> Standard.create
> >> > > > started...
> >> > > > 16:14:32 | D | nova_plugin.server.create | {u'args':
> OrderedDict(),
> >> > > > u'openstack_config': {'username': 'dewayne', 'tenant_name':
> >> > > > 'dewayne-tenant', 'password': 'xxxxxxx', 'auth_url': '
> >> > > > https://rackspace-api.gigaspaces.com:5000/v3'}} | Instance
> >> > relationship
> >> > > > target instances: [{u'external_name': u'dfilppi-rs',
> u'tosca_name':
> >> > > > u'keypair', u'state': u'initial', u'tosca_id': 'keypair_1',
> >> > > u'external_id':
> >> > > > u'dfilppi-rs', u'external_type': 'keypair'}, {u'external_name':
> >> > > > u'aria_helloworld_port', u'tosca_name': u'port', u'state':
> >> u'initial',
> >> > > > u'fixed_ip_address': u'172.16.0.5', u'tosca_id': 'port_1',
> >> > > u'mac_address':
> >> > > > u'fa:16:3e:76:9b:5f', u'external_id':
> >> > > > u'044a027b-1cdc-441b-b3fa-953818668f02', u'external_type':
> 'port'}]
> >> > > > 16:14:32 | D | nova_plugin.server.create | {u'args':
> OrderedDict(),
> >> > > > u'openstack_config': {'username': 'dewayne', 'tenant_name':
> >> > > > 'dewayne-tenant', 'password': 'xxxxxxx', 'auth_url': '
> >> > > > https://rackspace-api.gigaspaces.com:5000/v3'}} | server.create()
> >> > server
> >> > > > before transformations: {'meta': {}, 'name':
> u'aria_helloworld_vm'}
> >> > > > 16:14:32 | E | nova_plugin.server.create | {u'args':
> OrderedDict(),
> >> > > > u'openstack_config': {'username': 'dewayne', 'tenant_name':
> >> > > > 'dewayne-tenant', 'password': 'xxxxxxx', 'auth_url': '
> >> > > > https://rackspace-api.gigaspaces.com:5000/v3'}} | vm_1
> >> Standard.create
> >> > > > failed
> >> > > > |Traceback (most recent call last):
> >> > > > |  File
> >> > > > "/home/vagrant/incubator-ariatosca/aria/orchestrator/
> >> > > > workflows/executor/process.py",
> >> > > > line 342, in _main
> >> > > > |    task_func(ctx=ctx, **operation_arguments)
> >> > > > |  File
> >> > > > "/home/vagrant/venv/lib/python2.7/site-packages/
> >> > > > adapters/context_adapter.py",
> >> > > > line 434, in wrapper
> >> > > > |    ctx.task.retry(str(e), retry_interval=e.retry_after)
> >> > > > |  File "/usr/lib64/python2.7/contextlib.py", line 36, in
> __exit__
> >> > > > |    raise RuntimeError("generator didn't stop after throw()")
> >> > > > |RuntimeError: generator didn't stop after throw()
> >> > > >
> >> > > >
> >> > > > On Wed, Aug 30, 2017 at 4:52 AM, Ran Ziv <[email protected]> wrote:
> >> > > >
> >> > > > > I can't really make sense of this error message.
> >> > > > > Could you copy paste the full execution logs when running with
> >> > "-vvv"?
> >> > > > >
> >> > > > > The "openstack_config" property/input should have nothing to do
> >> with
> >> > > the
> >> > > > > image/flavor assignment - The former only affects the Openstack
> >> > client
> >> > > > > configuration, while the latter is set for a specific API call.
> >> > > > >
> >> > > > >
> >> > > > >
> >> > > > > On Wed, Aug 30, 2017 at 2:38 AM, DeWayne Filppi <
> >> [email protected]
> >> > >
> >> > > > > wrote:
> >> > > > >
> >> > > > > > Here's the latest issue.  Got through all the networking
> config
> >> in
> >> > my
> >> > > > > > template, but the server instance doesn't start.  Not sure if
> >> this
> >> > is
> >> > > > an
> >> > > > > > Openstack plugin issue, or Aria..  From the error message, it
> >> > appears
> >> > > > > that
> >> > > > > > the image id and flavor don't even get into the call.  Note
> >> that I
> >> > > had
> >> > > > to
> >> > > > > > explicitly set "openstack_config" in the operation inputs:
> >> > > > > >
> >> > > > > > 23:32:42 | E | nova_plugin.server.create | {u'args':
> >> OrderedDict(),
> >> > > > > > u'openstack_config': {'username': 'dewayne', 'tenant_name':
> >> > > > > > 'dewayne-tenant', 'password': 'xxxxxx', 'auth_url': '
> >> > > > > > https://rackspace-api.gigaspaces.com:5000/v3'}} | vm_1
> >> > > Standard.create
> >> > > > > > failed
> >> > > > > >         |Traceback (most recent call last):
> >> > > > > >         |  File
> >> > > > > > "/home/vagrant/incubator-ariatosca/aria/orchestrator/
> >> > > > > > workflows/executor/process.py",
> >> > > > > > line 342, in _main
> >> > > > > >         |    task_func(ctx=ctx, **operation_arguments)
> >> > > > > >         |  File
> >> > > > > > "/home/vagrant/venv/lib/python2.7/site-packages/
> >> > > > > > adapters/context_adapter.py",
> >> > > > > > line 434, in wrapper
> >> > > > > >         |    ctx.task.retry(str(e),
> >> retry_interval=e.retry_after)
> >> > > > > >         |  File "/usr/lib64/python2.7/contextlib.py", line
> 36,
> >> in
> >> > > > > __exit__
> >> > > > > >         |    raise RuntimeError("generator didn't stop after
> >> > > throw()")
> >> > > > > >         |RuntimeError: generator didn't stop after throw()
> >> > > > > >
> >> > > > > > The node template:
> >> > > > > >
> >> > > > > >     vm:
> >> > > > > >       type: aria.openstack.nodes.Server
> >> > > > > >       properties:
> >> > > > > >         image: { get_input: image }
> >> > > > > >         flavor: { get_input: flavor }
> >> > > > > >         create_if_missing: true
> >> > > > > >         resource_id: aria_helloworld_vm
> >> > > > > >         management_network_name: aria_helloworld_network
> >> > > > > >       requirements:
> >> > > > > >         - key_pair: keypair
> >> > > > > >         - port: port
> >> > > > > >       interfaces:
> >> > > > > >         Standard:
> >> > > > > >           create:
> >> > > > > >             inputs:
> >> > > > > >               openstack_config: { get_input: openstack_config
> }
> >> > > > > >
> >> > > > >
> >> > > >
> >> > >
> >> >
> >>
> >
> >
>

Reply via email to