Re: [openstack-dev] [Murano] Need a new DSL for Murano

2014-02-24 Thread Dmitry
I think this is the great new service which will accompany OpenStack Solum
similarly as Bosh is accompanying Cloud Foundry and CloudForms is
accompanying OpenShift.
I wouldn't call it the Application Catalog but the Service Catalog, because
of the primary focus on the Service Life-cycle management (in opposite to
application lifecycle management which is focused on code-to-binary,
execution, remote debugging and log grabbing etc).
In order to make Murano the real Service Catalog, it should support (over
DSL) run-time events processing such as service scaling (up/out/in/down),
healing, replication, live-migration etc.
In addition, it should support a template creation which could be used by
Solum similar to Heroku BuildPack.
I would happy to hear your opinion on how you envision the Murano's roadmap.

Thanks,
Dmitry
___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [Murano] Need a new DSL for Murano

2014-02-24 Thread Alexander Tivelkov
Hi Dmitry,

I agree with you on this vision, however we have to think more on the
terminology: Service Catalog in OpenStack relates to Keystone (where by
Service we mean Openstack's infrastructure-level services).
I understand your concerns on runtime lifecycle vs code-to-binary
lifecycle though - it is absolutely valid, and we do not want to have any
overlap with Solum in this matter.

--
Regards,
Alexander Tivelkov


On Mon, Feb 24, 2014 at 1:47 PM, Dmitry mey...@gmail.com wrote:

 I think this is the great new service which will accompany OpenStack Solum
 similarly as Bosh is accompanying Cloud Foundry and CloudForms is
 accompanying OpenShift.
 I wouldn't call it the Application Catalog but the Service Catalog,
 because of the primary focus on the Service Life-cycle management (in
 opposite to application lifecycle management which is focused on
 code-to-binary, execution, remote debugging and log grabbing etc).
 In order to make Murano the real Service Catalog, it should support (over
 DSL) run-time events processing such as service scaling (up/out/in/down),
 healing, replication, live-migration etc.
 In addition, it should support a template creation which could be used
 by Solum similar to Heroku BuildPack.
 I would happy to hear your opinion on how you envision the Murano's
 roadmap.

 Thanks,
 Dmitry

 ___
 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


Re: [openstack-dev] [Murano] Need a new DSL for Murano

2014-02-18 Thread Georgy Okrokvertskhov
My observation has been that Murano has changed from a Windows focused
Deployment Service to a Metadata Application Catalog Workflow thing (I
fully admit this may be an invalid observation).  It's unclear to me what
OpenStack pain/use-cases is to be solved by complex object composition,
description of data types, contracts...

Murano is intended to provide high level definition of Applications which
will include description of specific application requirements (like input
parameters, external dependencies) as well as low level scripts, heat
snippets and workflows which will be required to manage application.

Object composition is required to address application diversity. We expect
to be an integration layer for numerous different application from
different OS and areas like WebServices, BigData, SAP, Enterprise specific
apps. In order to decrease amount of work for Application author we will
provide a way to reuse existing applications by extending them via object
composition. Inside Murano we provide a library of workflows and
requirements for general application classes. This library has workflows
for instance creation, networking and app deployments. This will help
application author to write only application specific stuff. For example if
I need to publish my web service based on Tomcat I will create a new
application class which has tomcat as a parent and then I will add my
application specific parameters like App URL and will add deployment script
which will download App war file and put it to Tomcat app directory. All
other stuff will be done automatically by existing workflows for tomcat
application.

You can imagine this as a nested Heat template inclusion but with ability
to override and\or extend it. The ability to add a workflow actually looks
like a dynamic Heat resource type generation as you can specify actions and
associated workflows. These actions can be triggered by external events to
provide an ability of application life cycle management.

Thanks
Georgy


On Mon, Feb 17, 2014 at 4:41 PM, Keith Bray keith.b...@rackspace.comwrote:


  Can someone elaborate further on the things that Murano is intended to
 solve within the OpenStack ecosystem?   My observation has been that Murano
 has changed from a Windows focused Deployment Service to a Metadata
 Application Catalog Workflow thing (I fully admit this may be an invalid
 observation).  It's unclear to me what OpenStack pain/use-cases is to be
 solved by complex object composition, description of data types,
 contracts...

  Your thoughts would be much appreciated.

  Thanks,
 -Keith

   From: Renat Akhmerov rakhme...@mirantis.com
 Reply-To: OpenStack Development Mailing List (not for usage questions) 
 openstack-dev@lists.openstack.org
 Date: Monday, February 17, 2014 1:33 AM
 To: OpenStack Development Mailing List (not for usage questions) 
 openstack-dev@lists.openstack.org
 Subject: Re: [openstack-dev] [Murano] Need a new DSL for Murano

   Clint,

  We're collaborating with Murano. We may need to do it in a way that
 others could see it though. There are several things here:

- Murano doesn't really have a workflow engine similar to Mistral's.
People get confused with that but it's just a legacy terminology, I think
Murano folks were going to rename this component to be more precise about
it.
- Mistral DSL doesn't seem to be a good option for solving tasks that
Murano is intended to solve. Specifically I mean things like complex object
composition, description of data types, contracts and so on. Like Alex and
Stan mentioned Murano DSL tends to grow into a full programming language
.
- Most likely Mistral will be used in Murano for implementation, at
least we see where it would be valuable. But Mistral is not so matured yet,
we need to keep working hard and be patient :)


  Anyway, we keep thinking on how to make both languages look similar or
 at least the possibility to use them seamlessly, if needed (call Mistral
 workflows from Murano DSL or vice versa).

   Renat Akhmerov
 @ Mirantis Inc.

  On 16 Feb 2014, at 05:48, Clint Byrum cl...@fewbar.com wrote:

 Excerpts from Alexander Tivelkov's message of 2014-02-14 18:17:10 -0800:

 Hi folks,

 Murano matures, and we are getting more and more feedback from our early
 adopters. The overall reception is very positive, but at the same time
 there are some complaints as well. By now the most significant complaint is
 is hard to write workflows for application deployment and maintenance.

 Current version of workflow definition markup really have some design
 drawbacks which limit its potential adoption. They are caused by the fact
 that it was never intended for use for Application Catalog use-cases.


 Just curious, is there any reason you're not collaborating on Mistral
 for this rather than both having a workflow engine?

 ___
 OpenStack-dev mailing list
 OpenStack-dev@lists.openstack.org

Re: [openstack-dev] [Murano] Need a new DSL for Murano

2014-02-17 Thread Keith Bray

Can someone elaborate further on the things that Murano is intended to solve 
within the OpenStack ecosystem?   My observation has been that Murano has 
changed from a Windows focused Deployment Service to a Metadata Application 
Catalog Workflow thing (I fully admit this may be an invalid observation).  
It's unclear to me what OpenStack pain/use-cases is to be solved by complex 
object composition, description of data types, contracts...

Your thoughts would be much appreciated.

Thanks,
-Keith

From: Renat Akhmerov rakhme...@mirantis.commailto:rakhme...@mirantis.com
Reply-To: OpenStack Development Mailing List (not for usage questions) 
openstack-dev@lists.openstack.orgmailto:openstack-dev@lists.openstack.org
Date: Monday, February 17, 2014 1:33 AM
To: OpenStack Development Mailing List (not for usage questions) 
openstack-dev@lists.openstack.orgmailto:openstack-dev@lists.openstack.org
Subject: Re: [openstack-dev] [Murano] Need a new DSL for Murano

Clint,

We're collaborating with Murano. We may need to do it in a way that others 
could see it though. There are several things here:

  *   Murano doesn’t really have a “workflow engine” similar to Mistral’s. 
People get confused with that but it’s just a legacy terminology, I think 
Murano folks were going to rename this component to be more precise about it.
  *   Mistral DSL doesn’t seem to be a good option for solving tasks that 
Murano is intended to solve. Specifically I mean things like complex object 
composition, description of data types, contracts and so on. Like Alex and Stan 
mentioned Murano DSL tends to grow into a full programming language.
  *   Most likely Mistral will be used in Murano for implementation, at least 
we see where it would be valuable. But Mistral is not so matured yet, we need 
to keep working hard and be patient :)

Anyway, we keep thinking on how to make both languages look similar or at least 
the possibility to use them seamlessly, if needed (call Mistral workflows from 
Murano DSL or vice versa).

Renat Akhmerov
@ Mirantis Inc.

On 16 Feb 2014, at 05:48, Clint Byrum 
cl...@fewbar.commailto:cl...@fewbar.com wrote:

Excerpts from Alexander Tivelkov's message of 2014-02-14 18:17:10 -0800:
Hi folks,

Murano matures, and we are getting more and more feedback from our early
adopters. The overall reception is very positive, but at the same time
there are some complaints as well. By now the most significant complaint is
is hard to write workflows for application deployment and maintenance.

Current version of workflow definition markup really have some design
drawbacks which limit its potential adoption. They are caused by the fact
that it was never intended for use for Application Catalog use-cases.


Just curious, is there any reason you're not collaborating on Mistral
for this rather than both having a workflow engine?

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.orgmailto: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


Re: [openstack-dev] [Murano] Need a new DSL for Murano

2014-02-17 Thread Stan Lagun
Keith,

I believe it is the same place Marketplace has in AWS or OpenShift
Application Gallery to Red Hat OpenShift.
The idea was of having free/open app catalog that cloud admins can fill
with application metadata describing those apps and then end users
construct environments from those applications in user friendly UI.

It is not ready recipes like Heat templates are that you only have to fill
several parameters and the whole stack created for you but a constructor
(think LEGO) for applications.

Lets take a normal non-tech user (who cannot program/write
JSON/YAML/whatever templates etc.) who wants to install Drupal on his
OpenStack account.

With Heat it would require finding HOT template for Drupal, answer several
questions and click one button in Thermal. Then new Heat stack would be
created with typically one VM for Drupal and another for MySQL.

With Murano UI user finds Drupal in App Catalog and puts it onto
environment. Now if he clicks deploy at this point the result would be
the same as in Heat. But he also can edit what was generated. For example
UI shows that Drupal requires a database that can be MySQL or PostgreSQL.
Instead of vanilla MySQL user can go to App Catalog and peak Galera MySQL
or PostgreSQL or something else that is compatible with those 2 DBMS. Or he
can reuse database server that already exist in his environment. Drupal is
hosted on web server so again user can replace Apache with Ngnix or host
Drupal on some existing web server. The same goes for VM instances - user
may choose to have both database and Drupal on the same VM.

Now if you take all the components involved with even simple app like
Drupal (Drupal, web server, PHP module for web server, database, VMs,
operating systems, instance flavors) there are hundreds of combinations
that can be constructed. With the Heat it would require hundreds of HOT
templates (even if we forget that Heat cannot refer to resources located in
another stack). And if user later decides to add load balancer to his
environment to balance Drupal instances he is in trouble because load
balancer brings another set of combinations (different LB implementations,
underlying operating system, flavor) and things become unmanageable.

So Heat is good for DevOps that can write HOT templates for exact task with
all the control possible. And Murano is for the rest of us. It is something
cloud providers can expose to users that do not know JSON, shell, puppet
etc but want to install complex applications and still have control on it.



On Tue, Feb 18, 2014 at 4:41 AM, Keith Bray keith.b...@rackspace.comwrote:


  Can someone elaborate further on the things that Murano is intended to
 solve within the OpenStack ecosystem?   My observation has been that Murano
 has changed from a Windows focused Deployment Service to a Metadata
 Application Catalog Workflow thing (I fully admit this may be an invalid
 observation).  It's unclear to me what OpenStack pain/use-cases is to be
 solved by complex object composition, description of data types,
 contracts...

  Your thoughts would be much appreciated.

  Thanks,
 -Keith

   From: Renat Akhmerov rakhme...@mirantis.com
 Reply-To: OpenStack Development Mailing List (not for usage questions) 
 openstack-dev@lists.openstack.org
 Date: Monday, February 17, 2014 1:33 AM
 To: OpenStack Development Mailing List (not for usage questions) 
 openstack-dev@lists.openstack.org
 Subject: Re: [openstack-dev] [Murano] Need a new DSL for Murano

   Clint,

  We're collaborating with Murano. We may need to do it in a way that
 others could see it though. There are several things here:

- Murano doesn't really have a workflow engine similar to Mistral's.
People get confused with that but it's just a legacy terminology, I think
Murano folks were going to rename this component to be more precise about
it.
- Mistral DSL doesn't seem to be a good option for solving tasks that
Murano is intended to solve. Specifically I mean things like complex object
composition, description of data types, contracts and so on. Like Alex and
Stan mentioned Murano DSL tends to grow into a full programming language
.
- Most likely Mistral will be used in Murano for implementation, at
least we see where it would be valuable. But Mistral is not so matured yet,
we need to keep working hard and be patient :)


  Anyway, we keep thinking on how to make both languages look similar or
 at least the possibility to use them seamlessly, if needed (call Mistral
 workflows from Murano DSL or vice versa).

   Renat Akhmerov
 @ Mirantis Inc.

  On 16 Feb 2014, at 05:48, Clint Byrum cl...@fewbar.com wrote:

 Excerpts from Alexander Tivelkov's message of 2014-02-14 18:17:10 -0800:

 Hi folks,

 Murano matures, and we are getting more and more feedback from our early
 adopters. The overall reception is very positive, but at the same time
 there are some complaints as well. By now the most significant complaint is
 is hard

Re: [openstack-dev] [Murano] Need a new DSL for Murano

2014-02-16 Thread Renat Akhmerov
Clint, 

We're collaborating with Murano. We may need to do it in a way that others 
could see it though. There are several things here:
Murano doesn’t really have a “workflow engine” similar to Mistral’s. People get 
confused with that but it’s just a legacy terminology, I think Murano folks 
were going to rename this component to be more precise about it.
Mistral DSL doesn’t seem to be a good option for solving tasks that Murano is 
intended to solve. Specifically I mean things like complex object composition, 
description of data types, contracts and so on. Like Alex and Stan mentioned 
Murano DSL tends to grow into a full programming language.
Most likely Mistral will be used in Murano for implementation, at least we see 
where it would be valuable. But Mistral is not so matured yet, we need to keep 
working hard and be patient :)

Anyway, we keep thinking on how to make both languages look similar or at least 
the possibility to use them seamlessly, if needed (call Mistral workflows from 
Murano DSL or vice versa).

Renat Akhmerov
@ Mirantis Inc.

On 16 Feb 2014, at 05:48, Clint Byrum cl...@fewbar.com wrote:

 Excerpts from Alexander Tivelkov's message of 2014-02-14 18:17:10 -0800:
 Hi folks,
 
 Murano matures, and we are getting more and more feedback from our early
 adopters. The overall reception is very positive, but at the same time
 there are some complaints as well. By now the most significant complaint is
 is hard to write workflows for application deployment and maintenance.
 
 Current version of workflow definition markup really have some design
 drawbacks which limit its potential adoption. They are caused by the fact
 that it was never intended for use for Application Catalog use-cases.
 
 
 Just curious, is there any reason you're not collaborating on Mistral
 for this rather than both having a workflow engine?
 
 ___
 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


Re: [openstack-dev] [Murano] Need a new DSL for Murano

2014-02-15 Thread Alexander Tivelkov
Hi Joshua,

Thank you very much for you feedback!
This is really a great question, and it was the first question we've asked
ourselves when we started thinking about this new design.
We've considered both options: to have our own syntax (python-like,
java-like, something-else-like) or to use YAML. We've chosen the latest,
and here are the reasons.

The most important moment: this is not a general-purpose language, but a
domain-specific one. And Murano's domain is manipulating with complex
nested data-structures, which are usually represented by YAML. Murano's
environments are in YAML. Murano's VM-side commands are wrapped into YAML.
The primary building blocks of Murano - Heat templates - are written on
YAML. Actually, at a simplified level murano's workflows can be thought of
as algorithms that just generate yaml fragments. So, it would be beneficial
for Murano to manipulate with YAML-constructs at the DSL level. If we use
YAML notation, yaml-blocks become first-class citizens in the language,
while in a regular python-like language they would be just
formatted-strings. For example, look at this code snippet which generates a
heat template to deploy an instance: http://paste.openstack.org/show/65725/
As you may see, the code on lines 7-11 is a Heat-template, seamlessly
embedded inside Murano's workflow code. It has the variables right inside
the template, and the Murano engine will substitute them with a
user-specified (or workflow-computed) data

Another reason for YAML: the notation is very easy to extend: you'll just
have to add some new predefined key and a handler for its value: the format
will not be broken, so older code will run out of the box, and even the
newer code will most probably run fine on the older parser (the unknown
sections will simply be ignored). This will allow us to extend the language
without making any breaking-changes. The regular languages do not provide
this flexibility: they will have problems if detecting unrecognised lexems
or constructs.

Last but not least: the perception. You are absolutely right when you say
that this is actually a full programming language. However, we don't want
to rush all its capabilities to unprepared developers. If some developer
does not want any complexity, they may think about it as about some fancy
configuration markup language: a declarative, heat-template-like header
followed by a sequence of simple actions. And only if needed the power
comes at your service: variable assignments, flow control, flexible data
contracts, complex compositions, inheritance trees.. I can imagine a lot of
scary stuff here J
But at the same time, YAML's indent-based syntax will look familiar to
python developers.

Yes, everything comes at cost, and yaml may seem a bit bulky at the first
glance. But I believe that people will get used to it soon enough, and the
benefits are really important.


I hope this answers your concern. We'll come up with more examples and
ideas: this thing has just emerged, nothing is set in stone yet, I am
actively seeking for feedback and ideas.  So thanks a loot for your
question, I really appreciate it.



--
Regards,
Alexander Tivelkov


On Fri, Feb 14, 2014 at 6:41 PM, Joshua Harlow harlo...@yahoo-inc.comwrote:

  An honest question,

  U are mentioning what appears to be the basis for a full programming
 language (variables, calling other workflows - similar to functions) but
 then u mention this is being stuffed into yaml.

  Why?

  It appears like u might as well spend the effort and define a grammar
 and simplistic language that is not stuffed inside yaml. Shoving one into
 yaml syntax seems like it gets u none of the benefits of syntax checking,
 parsing, validation (highlighting...) and all the pain of yaml.

  Something doesn't seem right about the approach of creating languages
 inside the yaml format (in a way it becomes like xsl, yet xsl at least has
 a spec and is well defined).

  My 2 cents

 Sent from my really tiny device...

 On Feb 14, 2014, at 7:22 PM, Alexander Tivelkov ativel...@mirantis.com
 wrote:

Hi folks,

  Murano matures, and we are getting more and more feedback from our early
 adopters. The overall reception is very positive, but at the same time
 there are some complaints as well. By now the most significant complaint is
 is hard to write workflows for application deployment and maintenance.

 Current version of workflow definition markup really have some design
 drawbacks which limit its potential adoption. They are caused by the fact
 that it was never intended for use for Application Catalog use-cases.

  I'll briefly touch these drawbacks first:


1. Murano's workflow engine is actually a state machine, however the
workflow markup does not explicitly define the states and transitions.
2. There is no data isolation within any environment, which causes
both potential security vulnerabilities and unpredictable workflow
behaviours.
3. There is no easy way to reuse the 

Re: [openstack-dev] [Murano] Need a new DSL for Murano

2014-02-15 Thread Stan Lagun
Just to add my 2 cents.

1. YAML is already familiar to OpenStack developers as Heat and others use
it. So at least the syntax (not to mess with semantics) doesn't have to be
learned.

2. YAML parser is very flexible an can be extended with additional types or
constructs like Key: filename.yaml to include content of other file etc.
Murano DSL may operate on already deserialized (parsed) data leaving yaml
files access to hosting operation. Thus the engine itself can be
independent from how and where the YAML files are stored. This is very good
for App Catalog that stores its data in Glance. Also it always possible to
serialize it to some other format (XML, JSON, whatever) if it required for
some purpose

3. YAML declarations can be processed by Murano dashboard, 3-rd party
software and various tooling for Murano. If it wasn't YAML but some
handcrafted syntax then we would have to provide them with embeddable
parser for that syntax

4. Implementing parser for full-blown language is not a trivial task to say
the least. It would require much more time for development and greatly
increase probability to shoot ourself in the foot. And we really don't want
to have like a year between Murano versions.


On Sat, Feb 15, 2014 at 12:18 PM, Alexander Tivelkov ativel...@mirantis.com
 wrote:

 Hi Joshua,

 Thank you very much for you feedback!
 This is really a great question, and it was the first question we've asked
 ourselves when we started thinking about this new design.
 We've considered both options: to have our own syntax (python-like,
 java-like, something-else-like) or to use YAML. We've chosen the latest,
 and here are the reasons.

 The most important moment: this is not a general-purpose language, but a
 domain-specific one. And Murano's domain is manipulating with complex
 nested data-structures, which are usually represented by YAML. Murano's
 environments are in YAML. Murano's VM-side commands are wrapped into YAML.
 The primary building blocks of Murano - Heat templates - are written on
 YAML. Actually, at a simplified level murano's workflows can be thought of
 as algorithms that just generate yaml fragments. So, it would be beneficial
 for Murano to manipulate with YAML-constructs at the DSL level. If we use
 YAML notation, yaml-blocks become first-class citizens in the language,
 while in a regular python-like language they would be just
 formatted-strings. For example, look at this code snippet which generates a
 heat template to deploy an instance:
 http://paste.openstack.org/show/65725/
 As you may see, the code on lines 7-11 is a Heat-template, seamlessly
 embedded inside Murano's workflow code. It has the variables right inside
 the template, and the Murano engine will substitute them with a
 user-specified (or workflow-computed) data

 Another reason for YAML: the notation is very easy to extend: you'll just
 have to add some new predefined key and a handler for its value: the format
 will not be broken, so older code will run out of the box, and even the
 newer code will most probably run fine on the older parser (the unknown
 sections will simply be ignored). This will allow us to extend the language
 without making any breaking-changes. The regular languages do not provide
 this flexibility: they will have problems if detecting unrecognised lexems
 or constructs.

 Last but not least: the perception. You are absolutely right when you say
 that this is actually a full programming language. However, we don't want
 to rush all its capabilities to unprepared developers. If some developer
 does not want any complexity, they may think about it as about some fancy
 configuration markup language: a declarative, heat-template-like header
 followed by a sequence of simple actions. And only if needed the power
 comes at your service: variable assignments, flow control, flexible data
 contracts, complex compositions, inheritance trees.. I can imagine a lot of
 scary stuff here J
 But at the same time, YAML's indent-based syntax will look familiar to
 python developers.

 Yes, everything comes at cost, and yaml may seem a bit bulky at the first
 glance. But I believe that people will get used to it soon enough, and the
 benefits are really important.


 I hope this answers your concern. We'll come up with more examples and
 ideas: this thing has just emerged, nothing is set in stone yet, I am
 actively seeking for feedback and ideas.  So thanks a loot for your
 question, I really appreciate it.



 --
 Regards,
 Alexander Tivelkov


 On Fri, Feb 14, 2014 at 6:41 PM, Joshua Harlow harlo...@yahoo-inc.comwrote:

  An honest question,

  U are mentioning what appears to be the basis for a full programming
 language (variables, calling other workflows - similar to functions) but
 then u mention this is being stuffed into yaml.

  Why?

  It appears like u might as well spend the effort and define a grammar
 and simplistic language that is not stuffed inside yaml. Shoving one into
 yaml syntax seems like it 

Re: [openstack-dev] [Murano] Need a new DSL for Murano

2014-02-15 Thread Clint Byrum
Excerpts from Alexander Tivelkov's message of 2014-02-14 18:17:10 -0800:
 Hi folks,
 
 Murano matures, and we are getting more and more feedback from our early
 adopters. The overall reception is very positive, but at the same time
 there are some complaints as well. By now the most significant complaint is
 is hard to write workflows for application deployment and maintenance.
 
 Current version of workflow definition markup really have some design
 drawbacks which limit its potential adoption. They are caused by the fact
 that it was never intended for use for Application Catalog use-cases.
 

Just curious, is there any reason you're not collaborating on Mistral
for this rather than both having a workflow engine?

___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


[openstack-dev] [Murano] Need a new DSL for Murano

2014-02-14 Thread Alexander Tivelkov
Hi folks,

Murano matures, and we are getting more and more feedback from our early
adopters. The overall reception is very positive, but at the same time
there are some complaints as well. By now the most significant complaint is
is hard to write workflows for application deployment and maintenance.

Current version of workflow definition markup really have some design
drawbacks which limit its potential adoption. They are caused by the fact
that it was never intended for use for Application Catalog use-cases.

I'll briefly touch these drawbacks first:


   1. Murano's workflow engine is actually a state machine, however the
   workflow markup does not explicitly define the states and transitions.
   2. There is no data isolation within any environment, which causes both
   potential security vulnerabilities and unpredictable workflow behaviours.
   3. There is no easy way to reuse the workflows and their related
   procedures between several applications.
   4. The markup uses JSONPath, which relies on Python's 'eval' function.
   This is insecure and has to be avoided.
   5. 5. The workflow markup is XML-based, which is not a common practice
   in the OpenStack community.

So, it turns out that we have to design and implement a new workflow
definition notation, which will not have any of the issues mentioned above.

At the same time, it should still allow to fully specify the configuration
of any third-party Application, its dependencies with other Applications
and define specific actions which are required for Application deployment,
configuration and life cycle management.

This new notation should allow to do the following:


   -

   List all the required configuration parameters and dependencies for a
   given application
   -

   Validate user input and match it to the defined parameters
   -

   Define specific deployment actions and their execution order
   -

   Define behaviors to handle the events of changes in application's
   environment


Also, it should satisfy the following requirements:


   -

   Minimize the amount of configuration for common application parts, i.e.
   reuse existing configuration parts and add only difference specific to the
   application.
   -

   Allow to use different deployment tools with using the same markup
   constructs. i.e. provide a high-level abstraction on the underlying tools
   (heat, shell, chef, puppet etc)
   -

   For security reasons it should NOT allow to execute arbitrary operations
   - i.e. should allow to run only predefined set of meaningful configuration
   actions.



So, I would suggest to introduce a simple and domain specific notation
which would satisfy these needs:

   -

   Application dependencies and configuration properties are defined
   declaratively, in a way similar to how it is done in Heat templates.
   -

   Each property has special constraints and rules, allowing to validate
   the input and applications relationship within the environment.
   -

   The workflows are defined in imperative way: as a sequence of actions or
   method calls. This may include assigning data variables or calling the
   workflows of other applications.
   -

   All of these may be packaged in a YAML format. The example may look
   something like this [1]


The final version may become a bit more complicated, but as the starting
point this should look fine. I suggest to cover this in more details on our
next IRC meeting on Tuesday.

Any feedback or suggestions are appreciated.


[1] https://etherpad.openstack.org/p/murano-new-dsl-example

--
Regards,
Alexander Tivelkov
___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


Re: [openstack-dev] [Murano] Need a new DSL for Murano

2014-02-14 Thread Joshua Harlow
An honest question,

U are mentioning what appears to be the basis for a full programming language 
(variables, calling other workflows - similar to functions) but then u mention 
this is being stuffed into yaml.

Why?

It appears like u might as well spend the effort and define a grammar and 
simplistic language that is not stuffed inside yaml. Shoving one into yaml 
syntax seems like it gets u none of the benefits of syntax checking, parsing, 
validation (highlighting...) and all the pain of yaml.

Something doesn't seem right about the approach of creating languages inside 
the yaml format (in a way it becomes like xsl, yet xsl at least has a spec and 
is well defined).

My 2 cents

Sent from my really tiny device...

On Feb 14, 2014, at 7:22 PM, Alexander Tivelkov 
ativel...@mirantis.commailto:ativel...@mirantis.com wrote:


Hi folks,


Murano matures, and we are getting more and more feedback from our early 
adopters. The overall reception is very positive, but at the same time there 
are some complaints as well. By now the most significant complaint is is hard 
to write workflows for application deployment and maintenance.

Current version of workflow definition markup really have some design drawbacks 
which limit its potential adoption. They are caused by the fact that it was 
never intended for use for Application Catalog use-cases.


I'll briefly touch these drawbacks first:

  1.  Murano's workflow engine is actually a state machine, however the 
workflow markup does not explicitly define the states and transitions.
  2.  There is no data isolation within any environment, which causes both 
potential security vulnerabilities and unpredictable workflow behaviours.
  3.  There is no easy way to reuse the workflows and their related procedures 
between several applications.
  4.  The markup uses JSONPath, which relies on Python’s 'eval' function. This 
is insecure and has to be avoided.
  5.  5. The workflow markup is XML-based, which is not a common practice in 
the OpenStack community.

So, it turns out that we have to design and implement a new workflow definition 
notation, which will not have any of the issues mentioned above.

At the same time, it should still allow to fully specify the configuration of 
any third-party Application, its dependencies with other Applications and 
define specific actions which are required for Application deployment, 
configuration and life cycle management.

This new notation should allow to do the following:


  *   List all the required configuration parameters and dependencies for a 
given application

  *   Validate user input and match it to the defined parameters

  *   Define specific deployment actions and their execution order

  *   Define behaviors to handle the events of changes in application’s 
environment


Also, it should satisfy the following requirements:


  *   Minimize the amount of configuration for common application parts, i.e. 
reuse existing configuration parts and add only difference specific to the 
application.

  *   Allow to use different deployment tools with using the same markup 
constructs. i.e. provide a high-level abstraction on the underlying tools 
(heat, shell, chef, puppet etc)

  *   For security reasons it should NOT allow to execute arbitrary operations 
- i.e. should allow to run only predefined set of meaningful configuration 
actions.



So, I would suggest to introduce a simple and domain specific notation which 
would satisfy these needs:

  *   Application dependencies and configuration properties are defined 
declaratively, in a way similar to how it is done in Heat templates.

  *   Each property has special constraints and rules, allowing to validate the 
input and applications relationship within the environment.

  *   The workflows are defined in imperative way: as a sequence of actions or 
method calls. This may include assigning data variables or calling the 
workflows of other applications.

  *   All of these may be packaged in a YAML format. The example may look 
something like this [1]


The final version may become a bit more complicated, but as the starting point 
this should look fine. I suggest to cover this in more details on our next IRC 
meeting on Tuesday.


Any feedback or suggestions are appreciated.



[1] https://etherpad.openstack.org/p/murano-new-dsl-example

--
Regards,
Alexander Tivelkov
___
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.orgmailto: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