(I added a couple of tags to the subject; hope this doesn't screw up
anyone's threading.)
On 09/03/14 16:26, Joshua Harlow wrote:
I'd be very interested in knowing the resource controls u plan to add.
Memory, CPU...
I'm still trying to figure out where something like
https://github.com/istalker2/MuranoDsl/blob/master/meta/com.mirantis.murano.demoApp.DemoInstance/manifest.yaml
would be beneficial, why not just spend effort sand boxing lua,
python... Instead of spending effort on creating a new language and then
having to sandbox it as well... Especially if u picked languages that
are made to be sandboxed from the start (not python)...
-1 to using a full-blown programming language like Python over a DSL, but...
Who is going to train people on muranoPL, write language books and
tutorials when the same amount of work has already been done for 10+
years for other languages....
I fail to see where muranoPL is a DSL when it contains a full language
already with functions, objects, namespaces, conditionals... (what is
the domain of it?), maybe I'm just confused though (quite possible, haha).
...I'm inclined to agree with this. Whenever you find yourself
implementing a Turing-complete Object-Oriented DSL... well, you'd at
least want to stop and think very carefully about whether you might have
taken a wrong turn somewhere.
Does this not seem awkward to anyone else??
It does seem really awkward to me (and not just because of all the
$signs), because it's duplicating basically all of the functionality of
Heat. e.g. in MuranoPL you have:
Properties:
name:
Contract: $.string().notNull()
whereas in HOT this would be:
parameters:
name:
type: string
constraints:
- length: {min: 1}
In MuranoPL you reference it using "$this.name", vs. HOT using
"{get_param: name}".
Note that HOT (a) already exists in OpenStack, and (b) is being
developed in conjunction with TOSCA folks to ensure easy translation
to/from TOSCA Simple Profile YAML rendering.
Looking at e.g. [1], more or less everything in here can be done
already inside a Heat template, using get_file and str_replace.
It sounds like this is a DSL in which you write everything imperatively,
then it gets converted behind the scenes into a declarative model in a
completely different language (but not using any of the advanced
features of that language) and passed to Heat, which turns it back into
a workflow to execute. That seems bizarre to me. Surely Murano should be
focusing on filling the gaps in Heat, rather than reimplementing it in a
different paradigm?
What I'm imagining here is something along the lines of:
- Heat implements hooks to customise its workflows, as proposed in [2], [3].
- Deployments are defined declaratively using HOT syntax.
- Workflows - to wrap the deployment operations, to customise the
deployment and to perform lifecycle operations like backups - are
defined using a Mistral DSL (I assume this exists already? I haven't
looked into it).
- Murano provides a way to bundle the various workflow definitions, HOT
models, and other files into an application package.
Can anybody enlighten me as to what features would be missing from this
that would warrant creating a new programming language?
thanks,
Zane.
[1]
https://github.com/istalker2/MuranoDsl/blob/master/meta/com.mirantis.murano.demoApp.DemoInstance/manifest.yaml
[2]
http://lists.openstack.org/pipermail/openstack-dev/2014-February/026329.html
[3]
http://lists.openstack.org/pipermail/openstack-dev/2014-March/030228.html
Sent from my really tiny device...
On Mar 8, 2014, at 10:44 PM, "Stan Lagun" <sla...@mirantis.com
<mailto:sla...@mirantis.com>> wrote:
First of all MuranoPL is not a host but hosted language. It never
intended to replace Python and if Python can do the job it is probably
better than MuranoPL for that job.
The problem with Python is that you cannot have Python code as a part
of your DSL if you need to evaluate that DSL on server-side. Using
Python's eval() is not secure. And you don't have enough control on
what evaled code is allowed to do. MuranoPL on the contrary are fully
sandboxed. You have absolute control over what functions/methods/APIs
are exposed to DSL and DSL code can do nothing except for what it
allowed to do. Besides you typically do want your DSL to be
domain-specific so general-purpose language like Python can be suboptimal.
I don't say MuranoPL is good for all projects. It has many
Murano-specific things after all. In most cases you don't need all
those OOP features that MuranoPL has. But the code organization, how
it uses YAML, block structures and especially YAQL expressions can be
of a great value to many projects
For examples of MuranoPL classes you can browse
https://github.com/istalker2/MuranoDsl/tree/master/meta folder. This
is my private repository that I was using to develop PoC for MuranoPL
engine. We are on the way to create production-quality implementation
with unit-tests etc. in regular Murano repositories on stackforge
On Sun, Mar 9, 2014 at 7:33 AM, Joshua Harlow <harlo...@yahoo-inc.com
<mailto:harlo...@yahoo-inc.com>> wrote:
To continue from other thread....
"""
Personally I believe that YAQL-based DSLs similar (but probably
simlet than) MuranoPL can be of a great value for many OpenStack
projects that have DSLs of different kind. Murano for App
Catatalog, Mistral for workflows, Heat for HOT templates,
Ceilometer for alarms & counter aggregation rules, Nova for
customizable resource scheduling and probably many more.
"""
Isn't python a better host language for said DSLs than muranoPL? I
am still pretty weary of a DSL that starts to grow so many
features to encompass other DSLs since then it's not really a DSL
but a non-DSL, and we already have one that everyone is familiar
with (python).
Are there any good examples if muranoPL that I can look at that
take advantage of muranoPL classes, functions, namespaces which
can be compared to there python equivalents. Has such an
analysis/evaluation been done?
Sent from my really tiny device...
_______________________________________________
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
<mailto:OpenStack-dev@lists.openstack.org>
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
--
Sincerely yours
Stanislav (Stan) Lagun
Senior Developer
Mirantis
35b/3, Vorontsovskaya St.
Moscow, Russia
Skype: stanlagun
www.mirantis.com <http://www.mirantis.com/>
sla...@mirantis.com <mailto:sla...@mirantis.com>
_______________________________________________
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
<mailto:OpenStack-dev@lists.openstack.org>
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
_______________________________________________
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
_______________________________________________
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev