Improve Murano plugins to contain MuranoPL parts

Registered by Ekaterina Chernova on 2015-09-18

Currently Murano plugins only provide ability to expose one or more python classes to MuranoPL. However in MuranoPL python-based classes are very limited in capabilities that can exposed. For example they cannot expose properties, make use of MuranoPL inheritance, contracts, attributes
and resources. As we see in core library it it typical for a class to have either parts split into YAML part and Python part (comprising together a single class) or have Python class written specially
for another YAML class. In all cases there is a need for a package to have both YAML and Python parts distributed and provisioned together.

It us proposed to have alternate plugin loader that will combine functionality of existing loader
with modified DirectoryPackageLoader that would be able to use setuptools file I/O API instead
of regular Python I/O to access package file. Then YAMLs, Python scripts and resource files
could be distributed as a regular Python packages on PyPI and have structure similar to that
in murano-apps. As a result there will be regular packages (that cannot contain Python code)
in app catalog and special packages that can be installed by admin only and thus assumed to
be trusted that do allowed to have Python parts but still have all the power of regular YAML packages (including versioning that we currently missing in plugins).

As a next step we may consider for Murano core library to become such (mandatory) plugin
so that we could release it independently from the rest of Murano code

Blueprint information

Status:
Not started
Approver:
Serg Melikyan
Priority:
Medium
Drafter:
Ekaterina Chernova
Direction:
Needs approval
Assignee:
Stan Lagun
Definition:
Pending Approval
Series goal:
Accepted for future
Implementation:
Not started
Milestone target:
None

Related branches

Sprints

Whiteboard

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.