[tosca-parser] Failing to get functions from capabilities
Bob Haddleton
bobh at haddleton.net
Mon Dec 17 22:35:07 UTC 2018
I'm not sure where the inconsistency is? Can you elaborate?
You can get the inputs from the tosca.inputs attribute without passing
any input parameters:
tosca = ToscaTemplate(sys.argv[1])
print([input.name for input in tosca.inputs])
['cpus', 'db_name', 'db_user', 'db_pwd', 'db_root_pwd', 'db_port']
Bob
On 12/17/18 1:22 PM, Michael Still wrote:
> Thanks for that.
>
> That approach seems fair enough, but inconsistent with how other
> things are represented as functions. How am I meant to know what the
> inputs to the CSAR are before the CSAR is parsed?
>
> Michael
>
>
>
> On Tue, Dec 18, 2018 at 1:28 AM Bob Haddleton <bobh at haddleton.net
> <mailto:bobh at haddleton.net>> wrote:
>
> Hi Michael:
>
> tosca-parser expects that the input values will be defined already
> and passed to the ToscaTemplate object in the parsed_params argument.
>
> If you change:
>
> tosca = ToscaTemplate(sys.argv[1])
>
> to:
>
> tosca = ToscaTemplate(sys.argv[1], parsed_params={'cpus': 4})
>
> the output becomes:
>
> Processing node template server
> disk_size: 10 GB
> num_cpus: 4
> mem_size: 4096 MB
> architecture: x86_64
> type: Linux
> distribution: Fedora
> version: 18.0
> min_instances: 1
> max_instances: 1
> secure: True
>
>
> Hope this helps.
>
> Bob
>
>
> On 12/17/18 3:25 AM, Michael Still wrote:
>> Hi,
>>
>> I'm trying to use tosca-parser to parse CSAR files. Its working
>> quite well, until I hit a wall with capabilities today.
>> Specifically I am testing with the single instance wordpress
>> example CSAR, which uses a get_input for the num_cpus argument
>> for host capabilities for the server.
>>
>> Based on how properties work, I would expect to get a function
>> back for anything which requires referencing another value, but
>> in the case of capabilities I either get the hardcoded value
>> (strings, ints etc), or a None for values which would be
>> functions if we were talking about prototypes.
>>
>> Here's a snippet of example code:
>>
>> #!/usr/bin/python
>>
>> import sys
>>
>> from jinja2 import Template
>> import toscaparser.functions
>> from toscaparser.tosca_template import ToscaTemplate
>>
>> tosca = ToscaTemplate(sys.argv[1])
>>
>> for nodetemplate in tosca.nodetemplates:
>> print
>> print('Processing node template %s'% nodetemplate.name
>> <http://nodetemplate.name>)
>>
>> capabilities = nodetemplate.get_capabilities_objects()
>> for cap in capabilities:
>> propobjs = cap.get_properties_objects()
>> if not propobjs:
>> continue
>>
>> for po in propobjs:
>> print(' %s: %s' %(po.name <http://po.name>, po.value))
>>
>> Which returns this:
>>
>> $ python _capabilities.py csar_wordpress.zip
>> No handlers could be found for logger "tosca.model"
>>
>> Processing node template wordpress
>> network_name: PRIVATE
>> initiator: source
>> protocol: tcp
>> secure: False
>>
>> Processing node template webserver
>> network_name: PRIVATE
>> initiator: source
>> protocol: tcp
>> secure: False
>> secure: True
>>
>> Processing node template mysql_dbms
>>
>> Processing node template mysql_database
>>
>> Processing node template server
>> secure: True
>> min_instances: 1
>> max_instances: 1
>> mem_size: 4096 MB
>> num_cpus: None
>> disk_size: 10 GB
>> distribution: Fedora
>> version: 18.0
>> type: Linux
>> architecture: x86_64
>>
>> I would expect num_cpus for the "server" node_template to be a
>> GetInput() function based on its definition in the CSAR, but
>> instead I get None.
>>
>> Is there an example somewhere of how to correctly access
>> functions for capabilities?
>>
>> Thanks,
>> Michael
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-discuss/attachments/20181217/4c945031/attachment.html>
More information about the openstack-discuss
mailing list