DeWayne, this is still not very minimal, and I don't understand what "dies"
means. Could you please provide the error?
Here's my stab at a minimal example, please let me know if it's what you
got:
tosca_definitions_version: tosca_simple_yaml_1_0
relationship_types:
MyRelationship:
interfaces:
Configure:
add_target:
inputs:
my_input:
type: string
node_types:
MyNode:
requirements:
- my_requirement:
capability: tosca.capabilities.Container
relationship: MyRelationship
topology_template:
node_templates:
my_node:
type: MyNode
requirements:
- my_requirement:
relationship:
interfaces:
Configure:
add_target:
inputs:
my_input: test
The above gave me this exception:
AttributeError: 'NoneType' object has no attribute '_name'
File "/home/emblemparade/ariatosca/aria/parser/consumption/consumer.py",
line 73, in consume
consumer.consume()
File "/home/emblemparade/ariatosca/aria/parser/consumption/modeling.py",
line 36, in consume
self.context.presentation.presenter._get_model(self.context)
File "/home/emblemparade/ariatosca/aria/utils/caching.py", line 84, in
__call__
return_value = self.func(*args, **kwargs)
File
"/home/emblemparade/ariatosca/extensions/aria_extension_tosca/simple_v1_0/presenter.py",
line 82, in _get_model
return create_service_template_model(context)
File
"/home/emblemparade/ariatosca/extensions/aria_extension_tosca/simple_v1_0/modeling/__init__.py",
line 123, in create_service_template_model
fix_node_template_model(context, model, node_template)
File
"/home/emblemparade/ariatosca/extensions/aria_extension_tosca/simple_v1_0/modeling/__init__.py",
line 209, in fix_node_template_model
requirement))
File
"/home/emblemparade/ariatosca/extensions/aria_extension_tosca/simple_v1_0/modeling/__init__.py",
line 293, in create_requirement_template_model
create_relationship_template_model(context, service_template,
relationship)
File
"/home/emblemparade/ariatosca/extensions/aria_extension_tosca/simple_v1_0/modeling/__init__.py",
line 318, in create_relationship_template_model
relationship.interfaces)
File
"/home/emblemparade/ariatosca/extensions/aria_extension_tosca/simple_v1_0/modeling/__init__.py",
line 621, in create_interface_template_models
interface = create_interface_template_model(context, service_template,
interface)
File
"/home/emblemparade/ariatosca/extensions/aria_extension_tosca/simple_v1_0/modeling/__init__.py",
line 354, in create_interface_template_model
interface_type =
service_template.interface_types.get_descendant(interface_type._name)
Validation issues:
0: 'NoneType' object has no attribute '_name'
AttributeError: 'NoneType' object has no attribute '_name'
On Fri, Aug 25, 2017 at 3:28 PM, DeWayne Filppi <[email protected]> wrote:
> tosca_definitions_version: tosca_simple_yaml_1_0
>
> imports:
> -
> https://raw.githubusercontent.com/cloudify-cosmo/aria-
> extension-cloudify/master/plugins/openstack/plugin.yaml
> - aria-1.0
>
> dsl_definitions:
> openstack_config: &openstack_config
> username:
> password:
> tenant_name:
> auth_url:
>
> topology_template:
>
> node_templates:
>
> router:
> type: aria.openstack.nodes.Router
> properties:
> external_network: gateway_net
> create_if_missing: true
> resource_id: aria_helloworld_rtr
> interfaces:
> Standard:
> create:
> inputs:
> openstack_config: *openstack_config
>
> network:
> type: aria.openstack.nodes.Network
> properties:
> resource_id: aria_helloworld_network
> create_if_missing: true
> interfaces:
> Standard:
> create:
> inputs:
> openstack_config: *openstack_config
>
> subnet:
> type: aria.openstack.nodes.Subnet
> properties:
> resource_id: aria_helloworld_subnet
> create_if_missing: true
> interfaces:
> Standard:
> create:
> inputs:
> openstack_config: *openstack_config
> requirements:
> - router:
> node: router
> relationship:
> type: aria.openstack.subnet_connected_to_router
> interfaces:
> Configure:
> add_target:
> inputs:
> openstack_config: *openstack_config
> - network: network
>
> Dies in add_target of subnet_connected_to_router because default (empty)
> openstack_config input being used rather than the override. I didn't put
> the "implementation" line in because doing so has no effect.
>
>
>
> On Fri, Aug 25, 2017 at 1:03 PM, Tal Liron <[email protected]> wrote:
>
> > Could you create a minimal YAML file that demonstrates this problem so we
> > can reproduce it? It could be a bug.
> >
> > On Fri, Aug 25, 2017 at 2:48 PM, DeWayne Filppi <[email protected]>
> > wrote:
> >
> > > I don't know if this is a clue or not, but I modified the
> > > relationship: aria.openstack.subnet_connected_to_router, in the aria
> > > openstack plugin.yaml to require the 'openstack_config' input for the
> > > Configure.add_target operation (and got rid of the default).
> Afterwards,
> > > any attempt to validate this:
> > >
> > > subnet:
> > > type: aria.openstack.nodes.Subnet
> > > properties:
> > > resource_id: aria_helloworld_subnet
> > > create_if_missing: true
> > > interfaces:
> > > Standard:
> > > create:
> > > inputs:
> > > openstack_config: { get_input: openstack_config }
> > > requirements:
> > > - router:
> > > node: router
> > > relationship:
> > > type: aria.openstack.subnet_connected_to_router
> > > interfaces:
> > > Configure:
> > > add_target:
> > > inputs:
> > > openstack_config: { get_input: openstack_config }
> > >
> > > Fails with the error : Validation issues:
> > > 4: interface definition "Configure" does not assign a value to a
> > required
> > > operation input "add_target.openstack_config" in "relationship"
> > >
> > > Which is further confirmation that the input isn't seen, and normally
> the
> > > default gets used (empty strings). I don't see examples anywhere that
> > show
> > > how to properly override the interface inside a relationship inside a
> > > requirement.
> > >
> > >
> > > On Fri, Aug 25, 2017 at 10:57 AM, Tal Liron <[email protected]> wrote:
> > >
> > > > "implementation" is a required field in the TOSCA spec, so you must
> > > specify
> > > > it even if it is the same.
> > > >
> > > > On Fri, Aug 25, 2017 at 12:47 PM, DeWayne Filppi <
> [email protected]>
> > > > wrote:
> > > >
> > > > > It appears that this issue *was* fixed by repeating the
> > implementation
> > > > key
> > > > > in the add_target block. Intuitively, I would expect that fields I
> > > > didn't
> > > > > override would be untouched, but apparently not.
> > > > >
> > > > > On Thu, Aug 24, 2017 at 4:59 PM, Tal Liron <[email protected]>
> wrote:
> > > > >
> > > > > > Did you read the wiki? ARIA will send those specially formatted
> > > > > > dependencies as arguments to the @operation function.
> > > > > >
> > > > > > It would help to see your complete example, as I don't know what
> > > you're
> > > > > > doing and not doing anymore. Could you throw it into a GitHub
> repo
> > > > > perhaps?
> > > > > >
> > > > > > On Thu, Aug 24, 2017 at 6:53 PM, DeWayne Filppi <
> > [email protected]
> > > >
> > > > > > wrote:
> > > > > >
> > > > > > > 'dependencies' is a child of implementation in the spec. I
> > don't
> > > > > think
> > > > > > > it's going to do anything for me anyway. I just want to pass
> > > > > > > openstack_config to the add_target operation as inputs.
> > > > > > >
> > > > > > > On Thu, Aug 24, 2017 at 4:28 PM, Tal Liron <[email protected]>
> > > wrote:
> > > > > > >
> > > > > > > > What is the error?
> > > > > > > >
> > > > > > > > On Thu, Aug 24, 2017 at 6:22 PM, DeWayne Filppi <
> > > > [email protected]
> > > > > >
> > > > > > > > wrote:
> > > > > > > >
> > > > > > > > > actually "dependencies" fails validation.
> > > > > > > > >
> > > > > > > > > On Thu, Aug 24, 2017 at 4:08 PM, Tal Liron <
> [email protected]>
> > > > > wrote:
> > > > > > > > >
> > > > > > > > > > Oops, sorry, this is the syntax:
> > > > > > > > > >
> > > > > > > > > > interfaces:
> > > > > > > > > > Configure:
> > > > > > > > > > add_target:
> > > > > > > > > > primary: my_script.sh
> > > > > > > > > > dependencies:
> > > > > > > > > > - "openstack_config > { get_input:
> openstack_config
> > > }"
> > > > > > > > > >
> > > > > > > > > > On Thu, Aug 24, 2017 at 6:00 PM, Tal Liron <
> > [email protected]>
> > > > > > wrote:
> > > > > > > > > >
> > > > > > > > > > > A few syntax problems:
> > > > > > > > > > >
> > > > > > > > > > > 1. It looks like you don't have any operation
> > > implementation,
> > > > > > which
> > > > > > > > is
> > > > > > > > > a
> > > > > > > > > > > required field. (What do you expect the inputs to be
> sent
> > > > to?)
> > > > > > > > > > > 2. Also, you are not naming the input. It should be
> > > "inputs:
> > > > {
> > > > > > > > > > > my_input_name: { get_input: openstack_config } }"
> > > > > > > > > > > 3. But #2 won't work because you can't just add inputs
> in
> > > > this
> > > > > > > case,
> > > > > > > > > > > because they are not declared at the interface type.
> > > > > > > > > > >
> > > > > > > > > > > Assuming you do have an implementation, you could you
> try
> > > > > passing
> > > > > > > it
> > > > > > > > > > using
> > > > > > > > > > > execution configuration:
> > > > > > > > > > >
> > > > > > > > > > > https://cwiki.apache.org/confluence/display/ARIATOSCA/
> > > > > > > > > > > Execution+Configuration
> > > > > > > > > > >
> > > > > > > > > > > Try something like this:
> > > > > > > > > > >
> > > > > > > > > > > interfaces:
> > > > > > > > > > > Configure:
> > > > > > > > > > > add_target:
> > > > > > > > > > > primary: my_script.sh
> > > > > > > > > > > dependencies:
> > > > > > > > > > > - openstack_config: { get_input:
> > openstack_config }
> > > > > > > > > > >
> > > > > > > > > > > On Thu, Aug 24, 2017 at 5:49 PM, DeWayne Filppi <
> > > > > > > [email protected]
> > > > > > > > >
> > > > > > > > > > > wrote:
> > > > > > > > > > >
> > > > > > > > > > >> In the ARIA usage of the plugin, I need to pass
> > > > > openstack_config
> > > > > > > > > > >> explicitly
> > > > > > > > > > >> to every operation. Since the relationships are
> > implicit,
> > > > how
> > > > > > do
> > > > > > > I
> > > > > > > > > > >> accomplish this? Currently I get errors when trying
> to
> > > > > connect
> > > > > > a
> > > > > > > > > subnet
> > > > > > > > > > >> to
> > > > > > > > > > >> a router. I've tried overriding the relationship
> like
> > > so:
> > > > > > > > > > >>
> > > > > > > > > > >> subnet:
> > > > > > > > > > >> type: aria.openstack.nodes.Subnet
> > > > > > > > > > >> properties:
> > > > > > > > > > >> resource_id: aria_helloworld_subnet
> > > > > > > > > > >> create_if_missing: true
> > > > > > > > > > >> interfaces:
> > > > > > > > > > >> Standard:
> > > > > > > > > > >> create:
> > > > > > > > > > >> inputs:
> > > > > > > > > > >> openstack_config: { get_input:
> > > > openstack_config
> > > > > }
> > > > > > > > > > >> requirements:
> > > > > > > > > > >> - router:
> > > > > > > > > > >> node: router
> > > > > > > > > > >> relationship:
> > > > > > > > > > >> type: aria.openstack.subnet_
> > > > connected_to_router
> > > > > > > > > > >> interfaces:
> > > > > > > > > > >> Configure:
> > > > > > > > > > >> add_target:
> > > > > > > > > > >> inputs: { get_input:
> > openstack_config
> > > }
> > > > > > > > > > >> - network: network
> > > > > > > > > > >>
> > > > > > > > > > >> Note the router requirement. Does this syntax look
> > > correct?
> > > > > > > > Spoiler:
> > > > > > > > > > >> openstack_config never makes it to the plugin.
> > > > > > > > > > >>
> > > > > > > > > > >> DeWayne
> > > > > > > > > > >>
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>