[tosca-parser] Failing to get functions from capabilities
Bob Haddleton
bobh at haddleton.net
Mon Dec 17 14:21:57 UTC 2018
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/84d273dd/attachment-0001.html>
More information about the openstack-discuss
mailing list