Kate, Serg, Thank you very much for your quick responses.
I am attaching the requested yaml file. For Hot2 plugin, the only difference with hot_package.py is that I changed the UI translation version to 2.2 and removed predefined_fields in _translate_ui_parameters method. The ui.yaml file is attached. The CSAR plugin is a work in progress. For example, the workflow method is not yet implemented. The ui.yaml file is attached. I'd like to make sure the issue is not on my side before I open a bug, as Kate suggested. If necessary, I can also send you the plugin python code. Thanks. Regards, --Vahid From: Serg Melikyan <smelik...@mirantis.com> To: "OpenStack Development Mailing List (not for usage questions)" <openstack-dev@lists.openstack.org> Date: 11/25/2015 03:29 AM Subject: Re: [openstack-dev] [Murano] 'NoMatchingFunctionException: No function "#operator_." matches supplied arguments' error when adding an application to an environment Hi Vahid, you can find generated UI definitions for the package here: /tmp/muranodashboard-cache/apps/.../ui/ui.yaml On Wed, Nov 25, 2015 at 12:54 PM, Ekaterina Chernova <efedor...@mirantis.com> wrote: > > Hi Vahid, > > Forms are rended after app is added to the environment in accordance with the UI definition. > UI definition contains yaql expressions and one of your expression is incorrect. > Please, share UI yaml so we can find out what's the problem. > You can also create a bug that it's not obvious which expression is failed. > > > Also, make sure that you have valid YAQL version installed (should correspond to the version in requirements.txt) > And you can ask for help in #murano channel. > > Regards, > Kate. > > > On Wed, Nov 25, 2015 at 4:39 AM, Vahid S Hashemian <vahidhashem...@us.ibm.com> wrote: >> >> Hi, >> >> I am working on the TOSCA CSAR plugin for murano and so far am able to successfully import an application definition archive of my CSAR example to murano. >> However, when I try to add the imported application to an environment I get this error from Murano Dashboard: >> >> DEBUG:muranodashboard.common.cache:Using cached value from /tmp/muranodashboard-cache/apps/91/4c2bfd5d504419a94a9affb7af809a/package_fqn. >> DEBUG:muranodashboard.catalog.views:Clearing forms data for application io.murano.apps.generated.CsarHelloWorld. >> DEBUG:muranodashboard.catalog.views:Clearing any leftover wizard step data. >> DEBUG:muranodashboard.common.cache:Using cached value from /tmp/muranodashboard-cache/apps/91/4c2bfd5d504419a94a9affb7af809a/ui/ui.yaml. >> DEBUG:muranodashboard.common.cache:Using cached value from /tmp/muranodashboard-cache/apps/91/4c2bfd5d504419a94a9affb7af809a/package_fqn. >> DEBUG:muranodashboard.dynamic_ui.services:Using data {} for app io.murano.apps.generated.CsarHelloWorld >> DEBUG:muranodashboard.dynamic_ui.services:Using in-memory forms for app io.murano.apps.generated.CsarHelloWorld >> DEBUG:muranodashboard.common.cache:Using cached value from /tmp/muranodashboard-cache/apps/91/4c2bfd5d504419a94a9affb7af809a/ui/ui.yaml. >> DEBUG:muranodashboard.common.cache:Using cached value from /tmp/muranodashboard-cache/apps/91/4c2bfd5d504419a94a9affb7af809a/package_fqn. >> DEBUG:muranodashboard.dynamic_ui.services:Using data {} for app io.murano.apps.generated.CsarHelloWorld >> DEBUG:muranodashboard.dynamic_ui.services:Using in-memory forms for app io.murano.apps.generated.CsarHelloWorld >> INFO:muranodashboard.dynamic_ui.forms:Creating form workflowManagement >> INFO:muranodashboard.dynamic_ui.forms:Creating form group0 >> DEBUG:muranodashboard.api:Murano::Client <Url: http://localhost:8082/> >> DEBUG:muranoclient.common.http:curl -i -X GET -H 'X-Auth-Token: 324759651d234c4eaf08f6093dfd7000' -H 'Content-Type: application/json' -H 'User-Agent: python-muranoclient' http://localhost:8082//v1/catalog/packages/914c2bfd5d504419a94a9affb7af809a >> DEBUG:muranoclient.common.http: >> HTTP/1.1 200 OK >> Date: Wed, 25 Nov 2015 01:31:12 GMT >> Connection: keep-alive >> Content-Type: application/json >> Content-Length: 560 >> X-Openstack-Request-Id: req-b6759ab2-04b4-4882-ac95-3ac06f970cb5 >> >> {"updated": "2015-11-24T23:28:52", "description": "Template for deploying a single server with predefined properties.", "tags": ["TOSCA-CSAR-generated"], "class_definitions": ["io.murano.apps.generated.CsarHelloWorld"], "is_public": false, "id": "914c2bfd5d504419a94a9affb7af809a", "categories": [], "name": "csar_hello_world", "created": "2015-11-24T23:28:52", "author": "OASIS TOSCA TC", "enabled": true, "supplier": {}, "fully_qualified_name": "io.murano.apps.generated.CsarHelloWorld", "type": "Application", "owner_id": "1fee909728c54a698c96f0f7853412ae"} >> >> DEBUG:muranoclient.common.http:curl -i -X GET -H 'X-Auth-Token: 324759651d234c4eaf08f6093dfd7000' -H 'Content-Type: application/json' -H 'User-Agent: python-muranoclient' http://localhost:8082//v1/environments/b8d83a0b6fde465ab9de013f084518d4 >> DEBUG:muranoclient.common.http: >> HTTP/1.1 200 OK >> Date: Wed, 25 Nov 2015 01:31:12 GMT >> Connection: keep-alive >> Content-Type: application/json >> Content-Length: 245 >> X-Openstack-Request-Id: req-0ccb2b46-8a58-418f-b063-63067042e3f6 >> >> {"status": "ready", "updated": "2015-11-24T23:29:11", "created": "2015-11-24T23:29:11", "tenant_id": "1fee909728c54a698c96f0f7853412ae", "acquired_by": null, "version": 0, "services": [], "id": "b8d83a0b6fde465ab9de013f084518d4", "name": "env1"} >> >> DEBUG:muranodashboard.common.cache:Using cached value from /tmp/muranodashboard-cache/apps/91/4c2bfd5d504419a94a9affb7af809a/ui/ui.yaml. >> DEBUG:muranodashboard.common.cache:Using cached value from /tmp/muranodashboard-cache/apps/91/4c2bfd5d504419a94a9affb7af809a/package_fqn. >> DEBUG:muranodashboard.dynamic_ui.services:Using data {} for app io.murano.apps.generated.CsarHelloWorld >> DEBUG:muranodashboard.dynamic_ui.services:Using in-memory forms for app io.murano.apps.generated.CsarHelloWorld >> DEBUG:muranoclient.common.http:curl -i -X GET -H 'X-Auth-Token: 324759651d234c4eaf08f6093dfd7000' -H 'Content-Type: application/json' -H 'User-Agent: python-muranoclient' http://localhost:8082//v1/catalog/packages/914c2bfd5d504419a94a9affb7af809a >> DEBUG:muranoclient.common.http: >> HTTP/1.1 200 OK >> Date: Wed, 25 Nov 2015 01:31:12 GMT >> Connection: keep-alive >> Content-Type: application/json >> Content-Length: 560 >> X-Openstack-Request-Id: req-ee4545dd-6dfe-4944-90bc-48a525b099d5 >> >> {"updated": "2015-11-24T23:28:52", "description": "Template for deploying a single server with predefined properties.", "tags": ["TOSCA-CSAR-generated"], "class_definitions": ["io.murano.apps.generated.CsarHelloWorld"], "is_public": false, "id": "914c2bfd5d504419a94a9affb7af809a", "categories": [], "name": "csar_hello_world", "created": "2015-11-24T23:28:52", "author": "OASIS TOSCA TC", "enabled": true, "supplier": {}, "fully_qualified_name": "io.murano.apps.generated.CsarHelloWorld", "type": "Application", "owner_id": "1fee909728c54a698c96f0f7853412ae"} >> >> [25/Nov/2015 01:31:12] "GET /murano/catalog/add/914c2bfd5d504419a94a9affb7af809a/b8d83a0b6fde465ab9de013f084518d4 HTTP/1.1" 200 3763 >> DEBUG:muranodashboard.common.cache:Using cached value from /tmp/muranodashboard-cache/apps/91/4c2bfd5d504419a94a9affb7af809a/ui/ui.yaml. >> DEBUG:muranodashboard.common.cache:Using cached value from /tmp/muranodashboard-cache/apps/91/4c2bfd5d504419a94a9affb7af809a/package_fqn. >> DEBUG:muranodashboard.dynamic_ui.services:Using data {} for app io.murano.apps.generated.CsarHelloWorld >> DEBUG:muranodashboard.dynamic_ui.services:Using in-memory forms for app io.murano.apps.generated.CsarHelloWorld >> DEBUG:muranodashboard.common.cache:Using cached value from /tmp/muranodashboard-cache/apps/91/4c2bfd5d504419a94a9affb7af809a/ui/ui.yaml. >> DEBUG:muranodashboard.common.cache:Using cached value from /tmp/muranodashboard-cache/apps/91/4c2bfd5d504419a94a9affb7af809a/package_fqn. >> DEBUG:muranodashboard.dynamic_ui.services:Using data {} for app io.murano.apps.generated.CsarHelloWorld >> DEBUG:muranodashboard.dynamic_ui.services:Using in-memory forms for app io.murano.apps.generated.CsarHelloWorld >> INFO:muranodashboard.dynamic_ui.forms:Creating form workflowManagement >> INFO:muranodashboard.dynamic_ui.forms:Creating form group0 >> INFO:muranodashboard.dynamic_ui.forms:Creating form workflowManagement >> DEBUG:muranodashboard.api:Murano::Client <Url: http://localhost:8082/> >> DEBUG:muranoclient.common.http:curl -i -X GET -H 'X-Auth-Token: 324759651d234c4eaf08f6093dfd7000' -H 'Content-Type: application/json' -H 'User-Agent: python-muranoclient' http://localhost:8082//v1/environments/b8d83a0b6fde465ab9de013f084518d4 >> DEBUG:muranoclient.common.http: >> HTTP/1.1 200 OK >> Date: Wed, 25 Nov 2015 01:31:15 GMT >> Connection: keep-alive >> Content-Type: application/json >> Content-Length: 245 >> X-Openstack-Request-Id: req-fd260c43-75e3-41eb-bf72-d7ebd537cc9b >> >> {"status": "ready", "updated": "2015-11-24T23:29:11", "created": "2015-11-24T23:29:11", "tenant_id": "1fee909728c54a698c96f0f7853412ae", "acquired_by": null, "version": 0, "services": [], "id": "b8d83a0b6fde465ab9de013f084518d4", "name": "env1"} >> >> DEBUG:muranodashboard.common.cache:Using cached value from /tmp/muranodashboard-cache/apps/91/4c2bfd5d504419a94a9affb7af809a/ui/ui.yaml. >> DEBUG:muranodashboard.common.cache:Using cached value from /tmp/muranodashboard-cache/apps/91/4c2bfd5d504419a94a9affb7af809a/package_fqn. >> DEBUG:muranodashboard.dynamic_ui.services:Using data {} for app io.murano.apps.generated.CsarHelloWorld >> DEBUG:muranodashboard.dynamic_ui.services:Using in-memory forms for app io.murano.apps.generated.CsarHelloWorld >> [25/Nov/2015 01:31:15] "POST /murano/catalog/add/914c2bfd5d504419a94a9affb7af809a/b8d83a0b6fde465ab9de013f084518d4/False/False HTTP/1.1" 200 4598 >> DEBUG:muranodashboard.common.cache:Using cached value from /tmp/muranodashboard-cache/apps/91/4c2bfd5d504419a94a9affb7af809a/ui/ui.yaml. >> DEBUG:muranodashboard.common.cache:Using cached value from /tmp/muranodashboard-cache/apps/91/4c2bfd5d504419a94a9affb7af809a/package_fqn. >> DEBUG:muranodashboard.dynamic_ui.services:Using data {} for app io.murano.apps.generated.CsarHelloWorld >> DEBUG:muranodashboard.dynamic_ui.services:Using in-memory forms for app io.murano.apps.generated.CsarHelloWorld >> DEBUG:muranodashboard.common.cache:Using cached value from /tmp/muranodashboard-cache/apps/91/4c2bfd5d504419a94a9affb7af809a/ui/ui.yaml. >> DEBUG:muranodashboard.common.cache:Using cached value from /tmp/muranodashboard-cache/apps/91/4c2bfd5d504419a94a9affb7af809a/package_fqn. >> DEBUG:muranodashboard.dynamic_ui.services:Using data {} for app io.murano.apps.generated.CsarHelloWorld >> DEBUG:muranodashboard.dynamic_ui.services:Using in-memory forms for app io.murano.apps.generated.CsarHelloWorld >> INFO:muranodashboard.dynamic_ui.forms:Creating form workflowManagement >> INFO:muranodashboard.dynamic_ui.forms:Creating form workflowManagement >> INFO:muranodashboard.dynamic_ui.forms:Creating form group0 >> INFO:muranodashboard.dynamic_ui.forms:Creating form workflowManagement >> Internal Server Error: /murano/catalog/add/914c2bfd5d504419a94a9affb7af809a/b8d83a0b6fde465ab9de013f084518d4/False/False >> Traceback (most recent call last): >> File "/home/stack/project/horizon/.tox/venv/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 132, in get_response >> response = wrapped_callback(request, *callback_args, **callback_kwargs) >> File "/home/stack/project/horizon/horizon/decorators.py", line 36, in dec >> return view_func(request, *args, **kwargs) >> File "/home/stack/project/horizon/horizon/decorators.py", line 52, in dec >> return view_func(request, *args, **kwargs) >> File "/home/stack/project/horizon/horizon/decorators.py", line 36, in dec >> return view_func(request, *args, **kwargs) >> File "/home/stack/project/murano-dashboard/muranodashboard/catalog/views.py", line 173, in __inner >> return func(request, **kwargs) >> File "/home/stack/project/murano-dashboard/muranodashboard/catalog/views.py", line 303, in view >> return self.dispatch(request, *args, **kwargs) >> File "/home/stack/project/horizon/.tox/venv/local/lib/python2.7/site-packages/formtools/wizard/views.py", line 237, in dispatch >> response = super(WizardView, self).dispatch(request, *args, **kwargs) >> File "/home/stack/project/horizon/.tox/venv/local/lib/python2.7/site-packages/django/views/generic/base.py", line 89, in dispatch >> return handler(request, *args, **kwargs) >> File "/home/stack/project/horizon/.tox/venv/local/lib/python2.7/site-packages/formtools/wizard/views.py", line 300, in post >> return self.render_done(form, **kwargs) >> File "/home/stack/project/horizon/.tox/venv/local/lib/python2.7/site-packages/formtools/wizard/views.py", line 357, in render_done >> **kwargs) >> File "/home/stack/project/murano-dashboard/muranodashboard/catalog/views.py", line 334, in done >> attributes = service.extract_attributes() >> File "/home/stack/project/murano-dashboard/muranodashboard/dynamic_ui/services.py", line 123, in extract_attributes >> attributes = helpers.evaluate(self.application, self.context) >> File "/home/stack/project/murano-dashboard/muranodashboard/dynamic_ui/helpers.py", line 97, in evaluate >> value, context) >> File "/home/stack/project/murano-dashboard/muranodashboard/dynamic_ui/helpers.py", line 90, in recursive_apply >> return rec(value) >> File "/home/stack/project/murano-dashboard/muranodashboard/dynamic_ui/helpers.py", line 80, in rec >> return dict((rec(k), rec(v)) for (k, v) in val.iteritems()) >> File "/home/stack/project/murano-dashboard/muranodashboard/dynamic_ui/helpers.py", line 80, in <genexpr> >> return dict((rec(k), rec(v)) for (k, v) in val.iteritems()) >> File "/home/stack/project/murano-dashboard/muranodashboard/dynamic_ui/helpers.py", line 78, in rec >> return rec(transformer(val, *args)) >> File "/home/stack/project/murano-dashboard/muranodashboard/dynamic_ui/helpers.py", line 96, in <lambda> >> lambda v, _ctx: v.evaluate(context=_ctx), >> File "/home/stack/project/murano-dashboard/muranodashboard/dynamic_ui/yaql_expression.py", line 61, in evaluate >> return self._parsed_expression.evaluate(data=data, context=context) >> File "/home/stack/project/horizon/.tox/venv/local/lib/python2.7/site-packages/yaql/language/expressions.py", line 165, in evaluate >> return self(utils.NO_VALUE, context, self.engine) >> File "/home/stack/project/horizon/.tox/venv/local/lib/python2.7/site-packages/yaql/language/expressions.py", line 156, in __call__ >> return super(Statement, self).__call__(receiver, context, engine) >> File "/home/stack/project/horizon/.tox/venv/local/lib/python2.7/site-packages/yaql/language/expressions.py", line 37, in __call__ >> return context(self.name, engine, receiver, context)(*self.args) >> File "/home/stack/project/horizon/.tox/venv/local/lib/python2.7/site-packages/yaql/language/contexts.py", line 65, in <lambda> >> data_context, use_convention, function_filter) >> File "/home/stack/project/horizon/.tox/venv/local/lib/python2.7/site-packages/yaql/language/runner.py", line 49, in call >> name, all_overloads, engine, receiver, data_context, args, kwargs) >> File "/home/stack/project/horizon/.tox/venv/local/lib/python2.7/site-packages/yaql/language/runner.py", line 117, in choose_overload >> args = tuple(arg_evaluator(i, arg) for i, arg in enumerate(args)) >> File "/home/stack/project/horizon/.tox/venv/local/lib/python2.7/site-packages/yaql/language/runner.py", line 117, in <genexpr> >> args = tuple(arg_evaluator(i, arg) for i, arg in enumerate(args)) >> File "/home/stack/project/horizon/.tox/venv/local/lib/python2.7/site-packages/yaql/language/runner.py", line 113, in <lambda> >> and not isinstance(arg, expressions.Constant)) >> File "/home/stack/project/horizon/.tox/venv/local/lib/python2.7/site-packages/yaql/language/expressions.py", line 37, in __call__ >> return context(self.name, engine, receiver, context)(*self.args) >> File "/home/stack/project/horizon/.tox/venv/local/lib/python2.7/site-packages/yaql/language/contexts.py", line 65, in <lambda> >> data_context, use_convention, function_filter) >> File "/home/stack/project/horizon/.tox/venv/local/lib/python2.7/site-packages/yaql/language/runner.py", line 49, in call >> name, all_overloads, engine, receiver, data_context, args, kwargs) >> File "/home/stack/project/horizon/.tox/venv/local/lib/python2.7/site-packages/yaql/language/runner.py", line 141, in choose_overload >> raise_not_found() >> File "/home/stack/project/horizon/.tox/venv/local/lib/python2.7/site-packages/yaql/language/runner.py", line 70, in raise_not_found >> raise exceptions.NoMatchingFunctionException(name) >> NoMatchingFunctionException: No function "#operator_." matches supplied arguments >> [25/Nov/2015 01:31:17] "POST /murano/catalog/add/914c2bfd5d504419a94a9affb7af809a/b8d83a0b6fde465ab9de013f084518d4/False/False HTTP/1.1" 500 119882 >> >> >> In order to test this further I tried to make a copy of the hot_package and create a HOT2 plugin (by renaming Hot to Hot2) to see if the issue is directly rooted in the CSAR plugin. >> However, with the HOT2 plugin I am getting the same error as above. >> >> Any help on how to resolve the problem is very much appreciated. >> >> Regards, >> --Vahid >> >> __________________________________________________________________________ >> OpenStack Development Mailing List (not for usage questions) >> Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe >> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >> > > > __________________________________________________________________________ > OpenStack Development Mailing List (not for usage questions) > Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev > -- Serg Melikyan, Senior Software Engineer at Mirantis, Inc. http://mirantis.com | smelik...@mirantis.com +7 (495) 640-4904, 0261 +7 (903) 156-0836 __________________________________________________________________________ OpenStack Development Mailing List (not for usage questions) Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
ui.yaml
Description: Binary data
ui.yaml
Description: Binary data
__________________________________________________________________________ OpenStack Development Mailing List (not for usage questions) Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev