Steps to reproduce:
1. Install murano
2. git clone https://github.com/murano-project/murano-app-incubator
3. make zip archive from io.murano.apps.PostgreSql
4. Upload this archive to murano
Actual result:
2014-08-04 08:04:32.741 30340 INFO eventlet.wsgi [-] Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/eventlet/wsgi.py", line 396, in handle_one_response
result = self.application(self.environ, start_response)
File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 130, in __call__
resp = self.call_func(req, *args, **self.kwargs)
File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 195, in call_func
return self.func(req, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/murano/openstack/common/wsgi.py", line 197, in __call__
response = req.get_response(self.application)
File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1320, in send
application, catch_exc_info=False)
File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1284, in call_application
app_iter = application(self.environ, start_response)
File "/usr/local/lib/python2.7/dist-packages/keystoneclient/middleware/auth_token.py", line 663, in __call__
return self.app(env, start_response)
File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 130, in __call__
resp = self.call_func(req, *args, **self.kwargs)
File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 195, in call_func
return self.func(req, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/murano/openstack/common/wsgi.py", line 197, in __call__
response = req.get_response(self.application)
File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1320, in send
application, catch_exc_info=False)
File "/usr/local/lib/python2.7/dist-packages/webob/request.py", line 1284, in call_application
app_iter = application(self.environ, start_response)
File "/usr/local/lib/python2.7/dist-packages/paste/urlmap.py", line 203, in __call__
return app(environ, start_response)
File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__
return resp(environ, start_response)
File "/usr/local/lib/python2.7/dist-packages/routes/middleware.py", line 131, in __call__
response = self.app(environ, start_response)
File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__
return resp(environ, start_response)
File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 130, in __call__
resp = self.call_func(req, *args, **self.kwargs)
File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line 195, in call_func
return self.func(req, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/murano/openstack/common/wsgi.py", line 384, in __call__
action_result = self.execute_action(action, request, **action_args)
File "/usr/local/lib/python2.7/dist-packages/murano/openstack/common/wsgi.py", line 398, in execute_action
return self.dispatch(self.controller, action, request, **action_args)
File "/usr/local/lib/python2.7/dist-packages/murano/openstack/common/wsgi.py", line 407, in dispatch
return method(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/murano/api/v1/catalog.py", line 215, in upload
tempf.name, target_dir=None, drop_dir=True)
File "/usr/local/lib/python2.7/dist-packages/murano/packages/load_utils.py", line 50, in load_from_file
return load_from_dir(target_dir, preload=True, loader=loader)
File "/usr/local/lib/python2.7/dist-packages/murano/packages/load_utils.py", line 90, in load_from_dir
package.validate()
File "/usr/local/lib/python2.7/dist-packages/murano/packages/mpl_package.py", line 97, in validate
self.get_class(class_name)
File "/usr/local/lib/python2.7/dist-packages/murano/packages/mpl_package.py", line 52, in get_class
self._load_class(name)
File "/usr/local/lib/python2.7/dist-packages/murano/packages/mpl_package.py", line 87, in _load_class
self._classes_cache[name] = yaml.load(stream, self.yaml_loader)
File "/usr/lib/python2.7/dist-packages/yaml/__init__.py", line 71, in load
return loader.get_single_data()
File "/usr/lib/python2.7/dist-packages/yaml/constructor.py", line 37, in get_single_data
node = self.get_single_node()
File "/usr/lib/python2.7/dist-packages/yaml/composer.py", line 36, in get_single_node
document = self.compose_document()
File "/usr/lib/python2.7/dist-packages/yaml/composer.py", line 55, in compose_document
node = self.compose_node(None, None)
File "/usr/lib/python2.7/dist-packages/yaml/composer.py", line 84, in compose_node
node = self.compose_mapping_node(anchor)
File "/usr/lib/python2.7/dist-packages/yaml/composer.py", line 133, in compose_mapping_node
item_value = self.compose_node(node, item_key)
File "/usr/lib/python2.7/dist-packages/yaml/composer.py", line 84, in compose_node
node = self.compose_mapping_node(anchor)
File "/usr/lib/python2.7/dist-packages/yaml/composer.py", line 133, in compose_mapping_node
item_value = self.compose_node(node, item_key)
File "/usr/lib/python2.7/dist-packages/yaml/composer.py", line 84, in compose_node
node = self.compose_mapping_node(anchor)
File "/usr/lib/python2.7/dist-packages/yaml/composer.py", line 133, in compose_mapping_node
item_value = self.compose_node(node, item_key)
File "/usr/lib/python2.7/dist-packages/yaml/composer.py", line 82, in compose_node
node = self.compose_sequence_node(anchor)
File "/usr/lib/python2.7/dist-packages/yaml/composer.py", line 111, in compose_sequence_node
node.value.append(self.compose_node(node, index))
File "/usr/lib/python2.7/dist-packages/yaml/composer.py", line 84, in compose_node
node = self.compose_mapping_node(anchor)
File "/usr/lib/python2.7/dist-packages/yaml/composer.py", line 127, in compose_mapping_node
while not self.check_event(MappingEndEvent):
File "/usr/lib/python2.7/dist-packages/yaml/parser.py", line 98, in check_event
self.current_event = self.state()
File "/usr/lib/python2.7/dist-packages/yaml/parser.py", line 428, in parse_block_mapping_key
if self.check_token(KeyToken):
File "/usr/lib/python2.7/dist-packages/yaml/scanner.py", line 116, in check_token
self.fetch_more_tokens()
File "/usr/lib/python2.7/dist-packages/yaml/scanner.py", line 244, in fetch_more_tokens
return self.fetch_single()
File "/usr/lib/python2.7/dist-packages/yaml/scanner.py", line 653, in fetch_single
self.fetch_flow_scalar(style='\'')
File "/usr/lib/python2.7/dist-packages/yaml/scanner.py", line 667, in fetch_flow_scalar
self.tokens.append(self.scan_flow_scalar(style))
File "/usr/lib/python2.7/dist-packages/yaml/scanner.py", line 1158, in scan_flow_scalar
chunks.extend(self.scan_flow_scalar_spaces(double, start_mark))
File "/usr/lib/python2.7/dist-packages/yaml/scanner.py", line 1245, in scan_flow_scalar_spaces
"found unexpected end of stream", self.get_mark())
PackageClassLoadError: Unable to load class "io.murano.apps.PostgreSql" from package: Unable to load class definition due to "while scanning a quoted scalar
in "/tmp/tmppZd9Ph/Classes/PostgreSql.yaml", line 75, column 59
found unexpected end of stream
in "/tmp/tmppZd9Ph/Classes/PostgreSql.yaml", line 76, column 1"
2014-08-04 08:04:32.743 30340 INFO eventlet.wsgi [-] 127.0.0.1 - - [04/Aug/2014 08:04:32] "POST /v1/catalog/packages HTTP/1.1" 500 7288 0.484924
Sergey, is this related to recent changes in murano- app-incubator? This commit in particular https:/ /github. com/murano- project/ murano- app-incubator/ commit/ 85e639948219376 25edae912ec176d b30e43deb1 ?
I'm moving this bug to incomplete state. CI tests (including deployment of Postgres) are passing now.