Thanks Tal.

I will try to use your branch and let you know the results.

Regards,
DJ

-----Original Message-----
From: Tal Liron [mailto:t...@gigaspaces.com] 
Sent: Friday, May 26, 2017 9:57 PM
To: dev@ariatosca.incubator.apache.org
Subject: Re: Query on operation inputs

OK, I see now -- the error you are getting is about the operation inputs, not 
the topology inputs which are different.

You may have discovered a bug here. It seems like you're doing the right thing 
and giving values to all these inputs, so it should not be complaining.

I am actually working on a PR right now that makes some significant changes to 
this mechanism, but it's not merged yet. I don't mean to waste your time, but I 
would appreciate if you could test it out for me in your environment. Here is 
the branch to use:

https://github.com/apache/incubator-ariatosca/tree/ARIA-149-functions-in-operation-configuration


On Fri, May 26, 2017 at 4:53 AM, D Jayachandran <d.jayachand...@ericsson.com
> wrote:

> Hi Tal,
>
> Thanks for your email.
>
> With the same example you took with my inputs "isService" & "image". 
> ARIA has a problem when I don’t specify "isService" which is defined 
> as
> required: false.
>
> Please find just the different inputs used in my example ( topology, 
> node type  and node template)
>
> TOPOLOGY INPUTS
>
>     inputs:
>         web_app_name:
>             type: string
>             value: tosca-webapp
>
>         web_app_image:
>             type: string
>             value: kuber-master:5000/webwithdbinput
>
>         web_app_port:
>             type: integer
>             value: 80
>
>         db_name:
>             type: string
>             value: tosca-database
>
>         db_image:
>             type: string
>             value: kuber-master:5000/dbforweb
>
>         db_port:
>             type: integer
>             value: 3306
>
>
> NODE-TYPE INPUTS
>
>                 create:
>                         inputs:
>                             name:
>                                 type: string
>                                 required: true
>                             image:
>                                 type: string
>                                 required: true
>                             exposed_port:
>                                 type: integer
>                                 required: false
>                             target_port:
>                                 type: integer
>                                 required: false
>                                 default: 8080
>                             target_host:
>                                 type: string
>                                 required: false
>                                 default: test
>                             labels:
>                                 type: string
>                                 required: false
>                             isService:
>                                 type: boolean
>                                 required: false
>
> NODE-TEMPLATE INPUTS
>
>             interfaces:
>                 Standard:
>                     create:
>                         inputs:
>                             name: { get_input: web_app_name }
>                             image: { get_property: [ web_app, image] }
>                             exposed_port: { get_property: [ web_app, 
> port] }
>                             target_host: { get_property: [ database, 
> name] }
>                             target_port: { get_property: [ database, 
> port] }
>                             isService: true
>
> All my TOPOLOGY templates have a value, so it's not an issue in my case.
> Only "name" and "image" from my NODE-TYPE have the required definition 
> as "true". So I Must mandatory have these input specified in my 
> NODE-TEMPLATE which I have specified.
> Remaining NODE-TYPE inputs "exposed_port", "target_port", "target_host", "
> labels"  and "isService" have the required definition as "false".  
> Hence I may or may not specify them in my NODE-TEMPLATE input section.
> Except "labels" I have metioned all my optional outputs. I expect my 
> service to be started without any issue but it fails with the error "label"
> is not specified. This is why I find ARIA is having a problem.
>
>
> # python /root/incubator-ariatosca/aria/cli/main.py executions start 
> -s
> demo-sr-1 install
> Required inputs [u'labels'] have not been specified - expected inputs:
> [u'isService', u'name', u'exposed_port', u'image', u'labels', 
> u'target_port', u'target_host']
>
>
> Regards,
> DJ
> -----Original Message-----
> From: Tal Liron [mailto:t...@gigaspaces.com]
> Sent: Thursday, May 25, 2017 11:19 PM
> To: dev@ariatosca.incubator.apache.org
> Subject: Re: Query on operation inputs
>
> Hi DJ, let's try to look at these issues one at a time.
>
> I got your YAML to parse OK, but had to change it around a bit... it 
> would help if you used a complete example here, and also if it would 
> be much shorter to demonstrate the specific issue you are asking 
> about. There's a lot going on in this example and you are asking a few 
> different questions.
>
> The error message you are getting is not about operation inputs, but 
> about topology template inputs. I can't help much here unless I see 
> those input
> definitions: they do not appear in your YAML fragment. In general, see 
> section 3.8.2.1 in the TOSCA spec. Values for topology template inputs 
> must come from an external source, and indeed in this case you are 
> providing them via the CLI. ARIA makes sure that all required topology 
> template inputs have a value, and that it is a valid value for the 
> type. So, that's the error you are seeing.
>
> The inputs we *do* see in your YAML fragment are input definitions at 
> the node type and input assignments at the node template. These work 
> differently from topology template inputs, because their values do not 
> come from an external source directly (though this can be indirect via 
> get_input and other intrinsic functions).
>
> According to the spec you quote (3.5.8.2) , the key "required" is 
> optional in YAML, meaning that you do not have to specify it. Its 
> default value is "true". So, unless you specify "required: false", 
> that property is required. So actually all your "required" true" lines 
> are redundant (informative, but don't change functionality).
>
> So, let's look at your "isService" input. At the node type, it is 
> defined as required: false. And indeed, if at the node template I 
> don't assign a value to it, ARIA has no problem. However, if you do 
> not assign a value to a required input, say "image", then ARIA would be 
> unhappy.
>
> I hope this is clear, though I have a feeling you are asking about 
> something else which I'm not quite understanding. Again, a shorter and 
> complete example would help demonstrate what you mean.
>
>
> On Thu, May 25, 2017 at 9:56 AM, D Jayachandran < 
> d.jayachand...@ericsson.com
> > wrote:
>
> > Hi Ran,
> >
> > When I refer the TOSCA spec, it says
> >
> > " An optional key that declares a property as required (true) or not 
> > (false)."
> > property_required: represents an optional boolean value (true or
> > false) indicating whether or not the property is required.  If this 
> > keyname is not present on a property definition, then the property 
> > SHALL be considered required (i.e., true) by default.
> >
> > It is not clear to whom this property is required or not ?
> >
> > With your argument, it seems we always need to provide a default 
> > value to an input, when we don’t declare in my service template. Is 
> > my understanding correct here ?
> > But the TOSCA spec says the default value is always an optional one.
> > Also since the parser validates the service template inputs 
> > according to the "required" field am not sure why we need another 
> > validation during the execution ?
> >
> > I also don’t find any reference in TOSCA spec which says, all inputs 
> > defined in node type be declared in node template to be used by any 
> > operation. Could you please help me with that reference in TOSCA spec ?
> >
> >
> > Regards,
> > DJ
> >
> > -----Original Message-----
> > From: Ran Ziv [mailto:r...@gigaspaces.com]
> > Sent: Thursday, May 25, 2017 5:16 PM
> > To: dev@ariatosca.incubator.apache.org
> > Subject: Re: Query on operation inputs
> >
> > Yes, I understand the confusion here. The issue is that, despite its 
> > name, the "required" field isn't what defines whether an input is 
> > optional or not
> > - it is only relevant during the parsing phase (This is according to 
> > our understanding of the TOSCA spec. Tal could probably expand more 
> > on
> this).
> > What's relevant for deciding whether an input is required or not for 
> > actual execution is whether it has a default value - so all inputs 
> > would have a value when the actual execution takes place.
> >
> > I hope this helps clearing this confusing issue..
> >
> > Ran
> >
> > On Thu, May 25, 2017 at 2:08 PM, D Jayachandran < 
> > d.jayachand...@ericsson.com
> > > wrote:
> >
> > > Hi Ran,
> > >
> > > Thanks for your response.
> > >
> > > In my case, I have defined the inputs as optional under the create 
> > > operation of my custom node type.
> > > Since it is an optional input, I haven't declared it in my
> node-template.
> > > I assume optional input may or may not be declared in a service 
> > > template
> > ?
> > > Am I missing something here ?
> > >
> > > Please find below the node type and node template in my case.
> > >
> > > # python /root/incubator-ariatosca/aria/cli/main.py executions 
> > > start -s
> > > demo-sr-1 install
> > > Required inputs [u'labels'] have not been specified - expected inputs:
> > > [u'isService', u'name', u'exposed_port', u'image', u'labels', 
> > > u'target_port', u'target_host']
> > >
> > > Node-type
> > >
> > > node_types:
> > >     test.nodes.Container.Application:
> > >         derived_from: tosca.nodes.Root
> > >         properties:
> > >             name:
> > >               type: string
> > >               required: true
> > >             image:
> > >               type: string
> > >               required: true
> > >             port:
> > >               type: integer
> > >               required: false
> > >         interfaces:
> > >             Standard:
> > >                 type: tosca.interfaces.node.lifecycle.Standard
> > >                 create:
> > >                         inputs:
> > >                             name:
> > >                                 type: string
> > >                                 required: true
> > >                             image:
> > >                                 type: string
> > >                                 required: true
> > >                             exposed_port:
> > >                                 type: integer
> > >                                 required: false
> > >                             target_port:
> > >                                 type: integer
> > >                                 required: false
> > >                             target_host:
> > >                                 type: integer
> > >                                 required: false
> > >                             labels:
> > >                                 type: string
> > >                                 required: false
> > >                             isService:
> > >                                 type: boolean
> > >                                 required: false
> > >                         implementation:
> > >                             primary: sample > sample.samplemethod
> > >
> > > Node template:
> > >
> > >         web_app:
> > >             type: test.nodes.Container.Application
> > >             properties:
> > >                 name: { get_input: web_app_name }
> > >                 image: { get_input: web_app_image }
> > >                 port: { get_input: web_app_port }
> > >             requirements:
> > >                 - dependency:
> > >                       node: database
> > >                       relationship:
> > >                           type: tosca.relationships.DependsOn
> > >             interfaces:
> > >                 Standard:
> > >                      create:
> > >                         inputs:
> > >                             name: { get_input: web_app_name }
> > >                             image: { get_property: [ web_app, image] }
> > >                             exposed_port: { get_property: [ 
> > > web_app, port] }
> > >                             target_host: { get_property: [ 
> > > database, name] }
> > >                             target_port: { get_property: [ 
> > > database, port] }
> > >                             isService: true
> > >
> > > Regards,
> > > DJ
> > >
> > > -----Original Message-----
> > > From: Ran Ziv [mailto:r...@gigaspaces.com]
> > > Sent: Thursday, May 25, 2017 4:07 PM
> > > To: dev@ariatosca.incubator.apache.org
> > > Subject: Re: Query on operation inputs
> > >
> > > Hi,
> > >
> > > Weird, I remember responding to this mail before, but it doesn't 
> > > seem like I have.
> > > In any case, it is indeed our intention that no inputs may be 
> > > passed into operations unless they have been clearly declared in 
> > > the
> > service-template.
> > > ARIA opts to be a strict implementation of TOSCA wherever possible.
> > >
> > > Ran
> > >
> > > On Thu, May 25, 2017 at 1:22 PM, D Jayachandran < 
> > > d.jayachand...@ericsson.com
> > > > wrote:
> > >
> > > > Hi,
> > > >
> > > > The latest Apache-aria is throwing a validation error during the 
> > > > execution of a service.
> > > > It demands all the operation inputs defined in a node type be 
> > > > declared in the service template though they are optional inputs.
> > > > Could you please let us know if this change was intentional ?
> > > >
> > > >
> > > > Regards,
> > > > DJ(D Jayachandran)
> > > >
> > >
> >
>
>
>
> --
> Tal Liron
> Senior Engineer
> t...@gigaspaces.com | +1 (773) 828-9339 Cloudify | 
> http://getcloudify.org 
> <http://getcloudify.org?utm_source=signaturesatori&utm_
> medium=email&utm_campaign=general_signature>
>
> <https://twitter.com/CloudifySource>
> <https://www.linkedin.com/groups/8467478>
> <https://github.com/cloudify-cosmo>   <https://github.com/cloudify-cosmo>
> [image: Azure Webinar]
> <http://getcloudify.org/webinars/Azure-plugin-for-
> cloudify-webinar.html?utm_source=signaturesatori&utm_
> medium=email&utm_campaign=general_signature>
>



--
Tal Liron
Senior Engineer
t...@gigaspaces.com | +1 (773) 828-9339
Cloudify | http://getcloudify.org
<http://getcloudify.org?utm_source=signaturesatori&utm_medium=email&utm_campaign=general_signature>

<https://twitter.com/CloudifySource>
<https://www.linkedin.com/groups/8467478>
<https://github.com/cloudify-cosmo>   <https://github.com/cloudify-cosmo>
[image: Azure Webinar]
<http://getcloudify.org/webinars/Azure-plugin-for-cloudify-webinar.html?utm_source=signaturesatori&utm_medium=email&utm_campaign=general_signature>

Reply via email to