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.gigaspaces.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.gigaspaces.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 }
> > > >
> > >
> >
>