*** killer_prince has joined #murano | 00:05 | |
*** killer_prince is now known as lazy_prince | 00:06 | |
*** lazy_prince has quit IRC | 00:10 | |
*** killer_prince has joined #murano | 00:13 | |
*** killer_prince is now known as lazy_prince | 00:13 | |
*** lazy_prince has quit IRC | 00:18 | |
*** killer_prince has joined #murano | 00:36 | |
*** killer_prince has quit IRC | 00:40 | |
*** lazy_prif has joined #murano | 00:40 | |
*** lazy_prif is now known as lazy_prince | 00:41 | |
*** lazy_prince has quit IRC | 00:46 | |
*** killer_prince has joined #murano | 00:50 | |
*** killer_prince is now known as lazy_prince | 00:50 | |
*** lazy_prince has quit IRC | 00:54 | |
*** killer_prince has joined #murano | 01:14 | |
*** killer_prince is now known as lazy_prince | 01:14 | |
*** lazy_prince has quit IRC | 01:18 | |
*** killer_prince has joined #murano | 01:20 | |
*** killer_prince is now known as lazy_prin | 01:20 | |
*** lazy_prin has quit IRC | 01:25 | |
*** killer_prince has joined #murano | 01:26 | |
*** killer_prince has quit IRC | 01:30 | |
*** killer_prince has joined #murano | 01:35 | |
*** killer_prince is now known as lazy_prince | 01:35 | |
*** lazy_prince has quit IRC | 01:42 | |
*** killer_prince has joined #murano | 01:44 | |
*** killer_prince is now known as lazy_prince | 01:44 | |
*** lazy_prince has quit IRC | 02:00 | |
*** killer_prince has joined #murano | 02:05 | |
*** killer_prince is now known as lazy_prince | 02:05 | |
*** lazy_prince has quit IRC | 02:09 | |
*** killer_prince has joined #murano | 02:20 | |
*** killer_prince is now known as lazy_prince | 02:20 | |
*** lazy_prince has quit IRC | 02:24 | |
*** killer_prince has joined #murano | 02:31 | |
*** killer_prince is now known as lazy_prince | 02:31 | |
*** lazy_prince has quit IRC | 02:35 | |
*** killer_prince has joined #murano | 02:37 | |
*** killer_prince has quit IRC | 02:40 | |
*** killer_prince has joined #murano | 02:41 | |
*** killer_prince is now known as lazy_prince | 02:42 | |
*** lazy_prince has quit IRC | 02:48 | |
*** killer_prince has joined #murano | 03:00 | |
*** killer_prince is now known as lazy_prince | 03:00 | |
*** chandankumar has joined #murano | 03:02 | |
*** lazy_prince has quit IRC | 03:04 | |
*** killer_prince has joined #murano | 03:07 | |
*** killer_prince is now known as lazy_prince | 03:07 | |
*** chandankumar has quit IRC | 03:11 | |
*** lazy_prince has quit IRC | 03:17 | |
*** killer_prince has joined #murano | 03:18 | |
*** killer_prince is now known as lazy_prince | 03:18 | |
*** lazy_prince has quit IRC | 03:27 | |
*** killer_prince has joined #murano | 03:29 | |
*** killer_prince is now known as lazy_prince | 03:29 | |
*** lazy_prince has quit IRC | 03:38 | |
*** killer_prince has joined #murano | 03:41 | |
*** killer_prince is now known as lazy_prince | 03:41 | |
*** lazy_prince has quit IRC | 03:45 | |
*** killer_prince has joined #murano | 03:46 | |
*** lazy_prif has joined #murano | 03:48 | |
*** lazy_prif is now known as lazy_prince | 03:48 | |
*** killer_prince has quit IRC | 03:50 | |
*** killer_prince has joined #murano | 03:52 | |
*** lazy_prince has quit IRC | 03:53 | |
*** killer_prince has quit IRC | 03:57 | |
*** killer_prince has joined #murano | 03:59 | |
*** killer_prince has quit IRC | 04:04 | |
*** killer_prince has joined #murano | 04:10 | |
*** killer_prince is now known as lazy_prince | 04:10 | |
*** lazy_prince has quit IRC | 04:15 | |
*** killer_prince has joined #murano | 04:26 | |
*** killer_prince is now known as lazy_prince | 04:26 | |
*** lazy_prince has quit IRC | 04:31 | |
*** killer_prince has joined #murano | 04:32 | |
*** killer_prince is now known as lazy_prince | 04:32 | |
*** lazy_prince has quit IRC | 04:37 | |
*** killer_prince has joined #murano | 04:39 | |
*** killer_prince is now known as lazy_prince | 04:40 | |
*** lazy_prince has quit IRC | 04:44 | |
*** killer_prince has joined #murano | 04:53 | |
*** killer_prince is now known as lazy_prince | 04:53 | |
*** chandankumar has joined #murano | 04:56 | |
*** lazy_prince has quit IRC | 04:59 | |
*** killer_prince has joined #murano | 05:01 | |
*** killer_prince is now known as lazy_prince | 05:01 | |
*** lazy_prince has quit IRC | 05:08 | |
*** bharath has joined #murano | 05:12 | |
bharath | Can anyone assign this bug 1335339 to me? | 05:13 |
---|---|---|
*** killer_prince has joined #murano | 05:14 | |
*** killer_prince is now known as lazy_prince | 05:14 | |
*** lazy_prince has quit IRC | 05:21 | |
*** killer_prince has joined #murano | 05:21 | |
*** killer_prince is now known as lazy_prince | 05:21 | |
*** lazy_prince has quit IRC | 05:25 | |
*** killer_prince has joined #murano | 05:28 | |
*** killer_prince is now known as lazy_prince | 05:29 | |
*** lazy_prince has quit IRC | 05:33 | |
*** killer_prince has joined #murano | 05:43 | |
*** killer_prince is now known as lazy_prince | 05:43 | |
*** bharath has quit IRC | 05:44 | |
*** lazy_prince has quit IRC | 05:47 | |
*** killer_prince has joined #murano | 05:51 | |
*** killer_prince is now known as lazy_prince | 05:51 | |
*** lazy_prince has quit IRC | 05:58 | |
*** killer_prince has joined #murano | 06:00 | |
*** killer_prince is now known as lazy_prince | 06:00 | |
*** bharath has joined #murano | 06:02 | |
*** lazy_prince has quit IRC | 06:05 | |
*** killer_prince has joined #murano | 06:06 | |
*** killer_prince is now known as lazy_prince | 06:06 | |
*** lazy_prince has quit IRC | 06:11 | |
*** killer_prince has joined #murano | 06:11 | |
*** killer_prince is now known as lazy_prince | 06:12 | |
*** lazy_prince has quit IRC | 06:16 | |
*** killer_prince has joined #murano | 06:21 | |
*** killer_prince is now known as lazy_prince | 06:21 | |
bharath | I cloned the murano-dashboard repo from launchpad using bzr branch lp:~tnurlygayanov/murano/0.1, but while stacking I got this error Exception: Versioning for this project requires either an sdist tarball, or access to an upstream git repository, any solution for this? | 06:23 |
*** lazy_prince has quit IRC | 06:25 | |
stan_lagun | bharath: version 0.1 is very old | 06:29 |
bharath | stan_lagun, oh where can I get juno release? | 06:29 |
stan_lagun | https://git.openstack.org/cgit/?q=murano | 06:31 |
stan_lagun | https://git.openstack.org/stackforge/murano-dashboard | 06:31 |
*** killer_prince has joined #murano | 06:32 | |
stan_lagun | btw i saw you question on deployment. Does it still relevant? | 06:32 |
bharath | stan_lagun, you mean the bug? | 06:33 |
stan_lagun | no, 'what happens when I click deploy button' | 06:34 |
bharath | stan_lagun, yeah I am not getting an overview of what happens behind the scenes | 06:35 |
bharath | stan_lagun, still debugging, any help from ypur side? | 06:35 |
*** killer_prince has quit IRC | 06:37 | |
*** killer_prince has joined #murano | 06:37 | |
*** killer_prince is now known as lazy_prince | 06:37 | |
*** lazy_prince has quit IRC | 06:44 | |
*** killer_prince has joined #murano | 06:46 | |
*** killer_prince is now known as lazy_prince | 06:46 | |
*** lazy_prince has quit IRC | 06:55 | |
*** killer_prince has joined #murano | 06:57 | |
*** killer_prince is now known as lazy_prince | 06:57 | |
*** lazy_prince has quit IRC | 07:04 | |
*** killer_prince has joined #murano | 07:06 | |
*** killer_prince is now known as lazy_prince | 07:06 | |
*** lazy_prince has quit IRC | 07:11 | |
*** killer_prince has joined #murano | 07:18 | |
*** killer_prince is now known as lazy_prince | 07:18 | |
*** lazy_prince has quit IRC | 07:25 | |
*** chandankumar has quit IRC | 07:31 | |
*** killer_prince has joined #murano | 07:39 | |
*** killer_prince is now known as lazy_prince | 07:40 | |
*** lazy_prince has quit IRC | 07:44 | |
*** killer_prince has joined #murano | 07:45 | |
*** killer_prince is now known as lazy_prince | 07:45 | |
*** sergmelikyan has quit IRC | 07:46 | |
*** lazy_prince has quit IRC | 07:47 | |
*** katyafervent is now known as katyafervent_awa | 07:47 | |
*** tsufiev_ has joined #murano | 07:47 | |
*** katyafervent_awa is now known as katyafervent | 07:47 | |
*** killer_prince has joined #murano | 07:55 | |
*** killer_prince is now known as lazy_prince | 07:55 | |
*** tsufiev has quit IRC | 08:28 | |
*** rakhmerov has quit IRC | 08:28 | |
*** ativelkov has quit IRC | 08:28 | |
*** igormarnat has quit IRC | 08:29 | |
*** katyafervent has quit IRC | 08:29 | |
*** dteselkin has quit IRC | 08:30 | |
*** IgorYozhikov has quit IRC | 08:30 | |
*** akuznetsova has quit IRC | 08:30 | |
*** rakhmerov has joined #murano | 08:33 | |
*** IgorYozhikov has joined #murano | 08:34 | |
*** ativelkov has joined #murano | 08:35 | |
*** akuznetsova has joined #murano | 08:37 | |
*** katyafervent has joined #murano | 08:38 | |
*** tsufiev has joined #murano | 08:40 | |
*** dteselkin has joined #murano | 08:41 | |
*** tsufiev has quit IRC | 08:44 | |
*** ativelkov has quit IRC | 08:44 | |
*** rakhmerov has quit IRC | 08:45 | |
*** IgorYozhikov has quit IRC | 08:45 | |
*** katyafervent has quit IRC | 08:46 | |
*** dteselkin has quit IRC | 08:46 | |
*** akuznetsova has quit IRC | 08:46 | |
*** ativelkov has joined #murano | 08:48 | |
*** akuznetsova has joined #murano | 08:48 | |
*** IgorYozhikov has joined #murano | 08:49 | |
*** rakhmerov has joined #murano | 08:49 | |
*** katyafervent has joined #murano | 08:53 | |
*** tsufiev has joined #murano | 08:55 | |
*** dteselkin has joined #murano | 08:59 | |
*** igormarnat has joined #murano | 09:00 | |
*** chandankumar has joined #murano | 09:31 | |
*** bharath_ has joined #murano | 09:38 | |
*** bharath has quit IRC | 09:39 | |
*** lazy_prince is now known as killer_prince | 09:40 | |
*** chandankumar has quit IRC | 09:48 | |
*** chandankumar has joined #murano | 10:02 | |
*** chandankumar has quit IRC | 10:44 | |
*** killer_prince has quit IRC | 10:48 | |
*** killer_prince has joined #murano | 10:52 | |
*** killer_prince is now known as lazy_prince | 10:52 | |
*** lazy_prince has quit IRC | 10:56 | |
*** chandankumar has joined #murano | 10:59 | |
*** killer_prince has joined #murano | 10:59 | |
*** killer_prince is now known as lazy_prince | 10:59 | |
*** lazy_prince has quit IRC | 11:23 | |
*** killer_prince has joined #murano | 11:35 | |
*** killer_prince is now known as lazy_prince | 11:35 | |
*** chandankumar has quit IRC | 11:37 | |
*** sergmelikyan has joined #murano | 11:39 | |
*** lazy_prince has quit IRC | 11:39 | |
*** killer_prince has joined #murano | 11:41 | |
*** killer_prince is now known as lazy_prince | 11:41 | |
*** igormarnat has quit IRC | 12:06 | |
*** serg_melikyan has quit IRC | 12:06 | |
*** sergmelikyan has quit IRC | 12:06 | |
*** dteselkin has quit IRC | 12:06 | |
*** akuznetsova has quit IRC | 12:06 | |
*** ativelkov has quit IRC | 12:06 | |
*** rakhmerov has quit IRC | 12:06 | |
*** ruhe has quit IRC | 12:06 | |
*** tsufiev_ has quit IRC | 12:06 | |
*** ciypro|afk has quit IRC | 12:06 | |
*** sergmelikyan has joined #murano | 12:07 | |
*** igormarnat has joined #murano | 12:07 | |
*** dteselkin has joined #murano | 12:07 | |
*** rakhmerov has joined #murano | 12:07 | |
*** akuznetsova has joined #murano | 12:07 | |
*** ativelkov has joined #murano | 12:07 | |
*** tsufiev_ has joined #murano | 12:07 | |
*** serg_melikyan has joined #murano | 12:07 | |
*** ruhe has joined #murano | 12:07 | |
*** ciypro|afk has joined #murano | 12:07 | |
*** bharath_ has quit IRC | 12:24 | |
*** bharath_ has joined #murano | 12:32 | |
openstackgerrit | Ruslan Kamaldinov proposed a change to stackforge/murano: Fix DB migration script https://review.openstack.org/104205 | 13:16 |
openstackgerrit | Stan Lagun proposed a change to stackforge/murano: Unit tests for exception handling in MuranoPL https://review.openstack.org/104725 | 13:45 |
openstackgerrit | Stan Lagun proposed a change to stackforge/murano: Unit tests for engine's YAQL functions https://review.openstack.org/104959 | 13:46 |
openstackgerrit | Stan Lagun proposed a change to stackforge/murano: Fixed incorrect information on Python frames in MuranoPL stack traces https://review.openstack.org/100640 | 13:46 |
openstackgerrit | Stan Lagun proposed a change to stackforge/murano: Unit tests for macro blocks https://review.openstack.org/104651 | 13:46 |
openstackgerrit | Stan Lagun proposed a change to stackforge/murano: Adds Continue macro to MuranoPL https://review.openstack.org/104934 | 13:47 |
*** bharath_ has quit IRC | 13:49 | |
*** chandankumar has joined #murano | 14:02 | |
*** chandankumar has quit IRC | 14:15 | |
openstackgerrit | Serg Melikyan proposed a change to stackforge/murano: Fix issue with incorrect db model on MySQL https://review.openstack.org/106563 | 14:55 |
*** bharath has joined #murano | 14:59 | |
openstackgerrit | Serg Melikyan proposed a change to stackforge/murano: Fix issue with incorrect model on MySQL https://review.openstack.org/106563 | 14:59 |
sergmelikyan | bharath, Hi! :) Do you still need a help with going through deployment procedure? | 14:59 |
bharath | sergmelikyan, Hi, yeah | 15:00 |
sergmelikyan | How can I help you? Till which step you debugged? What exactly you are interested in? | 15:03 |
sergmelikyan | We can go through any step of deployment procedure, but I need to know what exactly do you want to know :) Too many details may take too much time :) In which timezone do you live? We can do it on Monday, for example. | 15:12 |
sergmelikyan | Or now :) | 15:12 |
bharath | sergmelikyan, I have debugged till the point where murano-engine will download core-library and store it in /tmp and extract all yaml files to murano-package-cache folder and then loading io.murano.Object.yaml file | 15:15 |
sergmelikyan | Cool! You have reached actuall class loading part | 15:16 |
bharath | the properties changed to YAQL expressions like YAQL($.string) something like that | 15:16 |
bharath | I live in India(IST) | 15:16 |
bharath | monday is ok for me | 15:16 |
bharath | oh okay | 15:16 |
sergmelikyan | I am living in Moscow, Russia UTC + 4, so our difference is only hour and half. | 15:17 |
sergmelikyan | I am usually available from 13:00 till 20:00 by IST | 15:18 |
bharath | sergmelikyan, but I don't have access to irc at that time :( | 15:20 |
sergmelikyan | :( | 15:20 |
sergmelikyan | Do you have some time now? | 15:21 |
sergmelikyan | or when you are available? | 15:21 |
sergmelikyan | we can also talk by Skype or Google Hangout :) I would prefer IRC, since all conversations are logged - and information about how Murano Engine is working may be usefull for others too | 15:22 |
stan_lagun | bharath: also you can contact me | 15:23 |
bharath | sergmelikyan, oh okay, | 15:24 |
bharath | stan_lagun, yeah sure | 15:24 |
bharath | sergmelikyan, I will be available after 21:30 IST | 15:24 |
bharath | sergmelikyan, stan_lagun or if we can have any documentation regarding the same? | 15:26 |
stan_lagun | It will be helpful if you describe what difficulties do you face | 15:27 |
sergmelikyan | Unfortunately we don't have any documentation about how so low level implementation details work | 15:28 |
sergmelikyan | stan_lagun, +100500 | 15:28 |
sergmelikyan | May be you even don't need to know what class call which and why :) | 15:28 |
bharath | sergmelikyan, stan_lagun like how the loaded classes changed to JSON and send to heat engine | 15:35 |
stan_lagun | classes are never changed to JSON | 15:35 |
bharath | stan_lagun, python objects | 15:36 |
bharath | sergmelikyan, I thought of learning what each class does, mostly in dsl | 15:36 |
stan_lagun | API sends to engine object model. That is input data and object layout (who owns who) | 15:36 |
stan_lagun | Engine loads classes that are mentioned in object model and calls entry point | 15:37 |
stan_lagun | Python code is never sent and not converted to anything. But it is possible to make some Python functions/classes to be accessible from DSL. All such classes and functions are built in into engine | 15:38 |
sergmelikyan | There is an availability to register python classes as MuranoPL (like ones in yaml files). There is special class responsible for talking with Heat: https://github.com/stackforge/murano/blob/master/murano/engine/system/heat_stack.py | 15:39 |
sergmelikyan | So different DSL classes call HeatStack class to add different parts to final template that is sent to Heat. For example this is code responsible for creation OS::Nova::Server resource https://github.com/stackforge/murano/blob/master/meta/io.murano/Classes/resources/Instance.yaml#L89 | 15:39 |
sergmelikyan | bharath, if you are working on some application for Murano we can help you with MPL code for that application. We expect to have full documentation for core library before J release, but now we are focused on stability and test coverage. | 15:46 |
sergmelikyan | Any questions about how to do this and that using core library are also welcomed :) | 15:48 |
sergmelikyan | Or how to express something on MPL :) | 15:48 |
bharath | sergmelikyan, Yeah I am trying to understanding how murano exactly works | 15:48 |
stan_lagun | bharath: have you read MuranoPL documentation? | 15:49 |
bharath | sergmelikyan, stan_lagun I am not aware of MPL and yaql | 15:49 |
sergmelikyan | http://murano.readthedocs.org/en/latest/articles/murano_pl_index.html | 15:50 |
bharath | so I am looking how these are converted to HOT template | 15:50 |
stan_lagun | this is not converted to HOT | 15:50 |
bharath | stan_lagun, oh, then what exactly is sent to heat engine? | 15:51 |
sergmelikyan | Nothing is converted to HOT. You just explicitly (in imperative manner) say what to send to Heat in MPL | 15:51 |
bharath | sergmelikyan, I will read through this document | 15:51 |
sergmelikyan | https://github.com/ativelkov/yaql | 15:51 |
sergmelikyan | https://github.com/stackforge/murano/blob/master/meta/io.murano/Classes/resources/Instance.yaml#L89 | 15:51 |
sergmelikyan | bharath, this is example how we create VMs in Murano using Heat | 15:51 |
stan_lagun | MuranoPL is an independent programming language. Like python, but more domain-specific. Classes (YAMLs) are written in that language. They generate HOT when necessary. | 15:52 |
stan_lagun | What is send is an inputs to that code. Think like memory snapshot | 15:52 |
sergmelikyan | as you see RAW HOT template is inlined to MPL and after some variable replacement is sent to Heat | 15:52 |
sergmelikyan | line 104-105 | 15:52 |
stan_lagun | Murano interprets YAMLs, not converts it to anything | 15:53 |
sergmelikyan | by link above we declare local variable template and assign to it dictionary that represents part of HOT template, during this assignment interpretations variables are replaced by values and on 104 line we save this template and on 105 send to Heat | 15:55 |
sergmelikyan | https://github.com/stackforge/murano/blob/master/murano/engine/system/heat_stack.py - this is class that talks to Heat. As you see it have very simple interface. You basically can get current template, update it or replace, send to Heat and get Output variables | 15:56 |
*** bharath has quit IRC | 15:57 | |
sergmelikyan | sorry for too much details :) | 15:57 |
sergmelikyan | Documentation and sources of core library is a good start to understand how Murano works. | 15:57 |
sergmelikyan | https://github.com/stackforge/murano/tree/master/meta/io.murano - core classes | 15:58 |
sergmelikyan | https://github.com/stackforge/murano/tree/master/murano/engine/system - system classes | 15:58 |
*** bharath has joined #murano | 16:07 | |
bharath | stan_lagun, serg_melikyan so after loading files those files are converted by normal templates ? | 16:15 |
stan_lagun | didn't get your question. YAMLs that are loaded are not converted to anything | 16:17 |
bharath | stan_lagun, after they load they values were wrapped with YAQl() | 16:19 |
stan_lagun | YAML parser is customizable. We taught him to parse strings that are expressions rather than just data string as YAQL expressions. JSON can have only int/string/boolean/null datatypes. But YAML is not limited to those types and can have other program-specific types like YAQL expressions in this case | 16:22 |
stan_lagun | YAQL(expr) is just how Python prints those expressions | 16:22 |
bharath | stan_lagun, yeah I tried type() for that it says yaql :) but how these data is sent to heat ? | 16:28 |
stan_lagun | they are not sent to heat | 16:28 |
stan_lagun | why do you think so? | 16:28 |
bharath | stan_lagun, we need to some details to heat right? | 16:29 |
bharath | stan_lagun, so I am searching what exactly is pushing to heat engine | 16:29 |
bharath | *send | 16:29 |
stan_lagun | those YAQLs are instructions of our programming language. Engine executes them. So the whole set of YAMLs is one big program. During its execution that program generates parts of HOT template and pushes them to Heat | 16:31 |
bharath | stan_lagun, so we are not sending whole HEAT template at a time? | 16:34 |
bharath | stan_lagun, can you refer those code snippets if you dont mind? | 16:34 |
stan_lagun | There is no one HOT template. It is generated by small portions by different MuranoPL classes. | 16:34 |
stan_lagun | https://github.com/stackforge/murano/blob/master/meta/io.murano/Classes/resources/Instance.yaml#L89 | 16:35 |
stan_lagun | https://github.com/stackforge/murano/blob/master/meta/io.murano/Classes/resources/Instance.yaml#L89-L105 | 16:35 |
bharath | stan_lagun, can we send parts of template to heat? | 16:36 |
bharath | stan_lagun, but we need to mention some reference like stack name, where we are doing it? | 16:37 |
stan_lagun | we can always take existing stack template, merge a snippet into it and say heat UPDATE STACK if we have valid template at each point | 16:37 |
bharath | stan_lagun, oh okay | 16:38 |
stan_lagun | snippets should be self-reliant. You don't need to mention stack name anywhere | 16:38 |
bharath | stan_lagun, how we are creating stack ? | 16:41 |
bharath | stan_lagun, environment.yaml? | 16:41 |
stan_lagun | https://github.com/stackforge/murano/blob/master/meta/io.murano/Classes/Environment.yaml#L50 | 16:41 |
bharath | stan_lagun, got it | 16:43 |
bharath | stan_lagun, need to learn how to write these yaml files | 16:43 |
stan_lagun | its a matter of learning new programming language. It you know Python and OOP this shoud not be a big deal | 16:44 |
bharath | stan_lagun, :) | 16:47 |
bharath | stan_lagun, one doubt check this https://github.com/stackforge/murano/blob/master/meta/io.murano/Classes/resources/NeutronNetwork.yaml#L55, | 16:48 |
bharath | stan_lagun, here getDefaultRouter referes to https://github.com/stackforge/murano/blob/3091373b594ef85d06454882bdfb7b6ec8adfc84/murano/engine/system/net_explorer.py#L65? | 16:48 |
stan_lagun | yes | 16:49 |
bharath | stan_lagun, and if we write a new yaml(I mean I want to add a new resource), where I need to mention that murano-engine should also check this yaml file | 16:50 |
bharath | ? | 16:50 |
stan_lagun | YAMLs are zipped into murano packages containing manifest file and other things (UI, resource files etc). As soon as you upload such package to Murano it becomes available in dashboard. If you add your app to environment your classes will be loaded by engine | 16:53 |
bharath | stan_lagun, no I want to add it core library | 16:56 |
bharath | stan_lagun, for example I want to provide an option for user to add firewall | 16:57 |
bharath | stan_lagun, so while creating environment I will ask user for that | 16:57 |
stan_lagun | if you want to add another yaml it must be referenced from core library's manifest file. Each yaml is a class with its name. If that name if mentioned in object model then it will be loaded and processed | 16:58 |
stan_lagun | Firewall is not necessary should be in core library. Its just an application like wordpress or something | 16:58 |
bharath | stan_lagun, yeah true | 16:59 |
bharath | stan_lagun, we dont need any script files I guess for this I guess? | 17:01 |
stan_lagun | note, that currently dashboard is not capable of sharing instances. So you cannot in UI make 2 apps be installed on one VM. But this is supported on engine. | 17:02 |
stan_lagun | So firewall is a problem now because it need to be installed alongside other applications on their VMs. Of cause this is a problem if you want to have it in UI | 17:04 |
bharath | stan_lagun, can | 17:06 |
bharath | stan_lagun, can't we install telnet and git in one vm? | 17:06 |
bharath | stan_lagun, not in UI ,in one environment I have two apps, can't we deploy both apps in one vm? | 17:07 |
stan_lagun | we can. But in dashboard we just cannot say that particular VM should be used for 2 applications | 17:08 |
bharath | stan_lagun, oh okay | 17:09 |
bharath | stan_lagun, I thought one environment refers to one VM | 17:15 |
stan_lagun | no. Environment is a whole stack of applications, resources, VMs etc. Like stack in Heat | 17:16 |
stan_lagun | So 1 env = 1 stack | 17:16 |
openstackgerrit | Stan Lagun proposed a change to stackforge/murano: Unit tests for exception handling in MuranoPL https://review.openstack.org/104725 | 17:18 |
bharath | stan_lagun, then one app will create one vm? | 17:18 |
openstackgerrit | Stan Lagun proposed a change to stackforge/murano: Fixed incorrect information on Python frames in MuranoPL stack traces https://review.openstack.org/100640 | 17:18 |
stan_lagun | bharath: object model (input JSON) describes all objects (environment, applications, VMs etc). Object model can describe a topology where each app has its own VM. Or where one VM is used by several apps | 17:21 |
stan_lagun | it is user who decides, not applications | 17:21 |
bharath | stan_lagun, object model? | 17:22 |
bharath | bharath, you mean user input? | 17:24 |
stan_lagun | dashboard is a visual editor for JSON called object model. This is what sent from API to engine. Object model describes what objects environment consist of and values of those objects' properties. If it was Python this would be like you dump entire application state to JSON | 17:24 |
stan_lagun | user input is part of object model | 17:24 |
stan_lagun | http://paste.openstack.org/show/86235/ | 17:26 |
stan_lagun | things under "Objects" is what produced by dashboard/API | 17:27 |
stan_lagun | the root object there is of type io.murano.Environment | 17:28 |
bharath | stan_lagun, I have seen this data is stored in session or deployment table | 17:29 |
bharath | stan_lagun, here we mentioned "application" | 17:29 |
bharath | stan_lagun, so I thought two apps same vm | 17:29 |
stan_lagun | if my example application of type io.murano.apps.apache.Apache have a property called "instance" with a value of type io.murano.resources.LinuxMuranoInstance describing the VM | 17:30 |
stan_lagun | applications, VMs, Heat resources, anything you can imagine is an instance of some MuranoPL class. Like in normal OOP. Object model is an objects tree. By objects I mean instances of classes | 17:34 |
bharath | stan_lagun, i was confused | 17:37 |
bharath | stan_lagun,in your example you have only one app | 17:37 |
bharath | stan_lagun, so the instance section will deal with vm? | 17:38 |
stan_lagun | yes. But you can have as many as you want. applications is a list | 17:38 |
bharath | stan_lagun, yeah I saw it is an array :) | 17:38 |
bharath | stan_lagun, can you help me with this? | 17:43 |
bharath | stan_lagun, I have two apps https://github.com/murano-project/murano-app-incubator/blob/master/io.murano.apps.linux.Telnet/Classes/telnet.yaml#L14 | 17:43 |
bharath | stan_lagun, https://github.com/murano-project/murano-app-incubator/blob/master/io.murano.apps.linux.Git/Classes/git.yaml#L17 | 17:43 |
bharath | stan_lagun, what I have to change so that they will deploy to same VM? | 17:44 |
bharath | stan_lagun, (sorry for asking too many questions) | 17:47 |
stan_lagun | http://paste.openstack.org/show/86240/ | 17:55 |
stan_lagun | bharath: ^^. You just refer to object defined in other place of object model by ids ID | 17:57 |
*** slagun has joined #murano | 18:01 | |
bharath | stan_lagun, in second application we don't need to specify all instance details? | 18:03 |
*** stan_lagun has quit IRC | 18:05 | |
slagun | in my example it is the same object used for 2 applications | 18:06 |
slagun | if you specify details it would be another object -> another VM | 18:06 |
bharath | slagun, okay | 18:08 |
bharath | slagun, but how we can identify the same instance id while deploying? | 18:09 |
slagun | why should we? | 18:09 |
slagun | in general application should not care | 18:10 |
bharath | slagun, no I mean in core library | 18:10 |
slagun | how core library relates to this? | 18:11 |
slagun | core library is just a set of commonly used classes | 18:11 |
bharath | slagun, core library will assign same env id for app apps? | 18:11 |
slagun | no. Object IDs are generated at dashboard | 18:12 |
slagun | dashboard builds the entire object model | 18:12 |
bharath | slagun, then how can we accomplish this? | 18:14 |
slagun | accomplish what? | 18:14 |
bharath | two apps in same vm | 18:14 |
slagun | http://paste.openstack.org/show/86240/ - here 2 apps on the same VM | 18:15 |
bharath | slagun, sry I am confusing you | 18:16 |
bharath | slagun, I mean how to generate that JSON? | 18:16 |
slagun | its okay | 18:16 |
slagun | it is not generated. This JSON is the engine's input. Dashboard is just a visual tool to build such JSON. | 18:17 |
slagun | Like a Heat template | 18:17 |
slagun | This is what written by human or in UI | 18:17 |
bharath | slagun, you mean to say that when I click on "deploy environment" dashboard will generate this JSON based on apps in env? | 18:17 |
slagun | yes | 18:18 |
slagun | but it does it before you click the button | 18:18 |
bharath | slagun, got it | 18:18 |
bharath | slagun, before we click? | 18:18 |
bharath | slagun, while adding? | 18:18 |
slagun | JSON is generated interactively. Each time you do something in dashboard JSON changed. When you click "deploy" you just send last version to engine | 18:19 |
slagun | API stores this JOSN and gives RestAPI to edit it | 18:19 |
bharath | slagun, if you are free, can you refer me the code ? | 18:21 |
slagun | The flow goes like this: dashboard -> API -> engine -> (Heat, gues agent on VMs, Neutron) -> API -> dashboard | 18:21 |
slagun | What code exactly are you looking for? | 18:22 |
bharath | slagun, which build json | 18:22 |
slagun | There is no code that builds the whole JSON at once. It also generated by small portions app by app. Dashboard knows what need to be added to JSON by looking at UI forms that are part of the packages | 18:25 |
slagun | tsufiev can point you where the code in dashboard resides | 18:25 |
bharath | slagun, oh okay | 18:27 |
bharath | tsufiev, tsufiev_ can you please refer the code which builds the json? | 18:28 |
slagun | bharath: how it will help you? dashboard have no hardcoded knowledge on any of the keys in that JSON. It is completely dynamic | 18:30 |
slagun | http://murano.readthedocs.org/en/latest/articles/murano_pl.html#object-model | 18:31 |
bharath | slagun, that's true, I am thinking of how to do that(deploy all apps of same env in same vm) | 18:34 |
slagun | Dashboard cannot do that right now. It just cannot generate that JSON. If you want to do that manually (without UI) you just write that by hand | 18:35 |
bharath | slagun,but how can we know that instance id? | 18:37 |
slagun | you generate it | 18:38 |
slagun | put any UUID insead of "InstanceID" in my example | 18:38 |
slagun | "InstanceID" is also valid ID. ID can be any string that is unique within environment | 18:39 |
bharath | slagun, so I thought if we can see what json we genereated till, then we can we get object id, and that we can use it next app dictionary | 18:39 |
slagun | yes, thats right | 18:39 |
bharath | slagun, so if we can see that code which is generating that json, we know that where it is storing | 18:40 |
slagun | You will not know. Imagine there is an environment with 10 telnet application. And then I want to install git on 6's telnet VM | 18:42 |
slagun | even if you see the whole JSON you will not know what instance to take | 18:43 |
slagun | It requires user to select it from existing list | 18:43 |
slagun | And that functionality is missing | 18:43 |
bharath | slagun, yeah true, I want to see for a simple case | 18:44 |
slagun | And if you write JSON manually you can generate one UUID and use it in several polaces | 18:44 |
slagun | *places | 18:44 |
bharath | slagun, how? | 18:44 |
bharath | slagun, can you explain it? | 18:44 |
slagun | again, see my example at http://paste.openstack.org/show/86240/. The string "InstanceID" is an instance ID. It used in 2 places. You can replace "InstanceID" with "bf1bba069c3e461896377c3e2d1c60e3" for example or any other random string | 18:47 |
slagun | the only thing that matters is that it is exactly the same string in 2 places | 18:47 |
bharath | slagun, but that will be same for different env also, right? | 18:47 |
slagun | this ID of an object within one object model. It must be unique within that JSON. You generate 1 ID per object per env | 18:48 |
slagun | But if you use the same ID in different envs that will work | 18:49 |
slagun | we just generate UUID that is globally unique | 18:49 |
bharath | slagun, yeah we will generate uuid for one env , but we need to store in somewhere, so that we will use it later? | 18:52 |
slagun | If you write that JSON by hand you store it in notepad/clipboard :) And currently this is the only option. When UI will be capable of doing that it will navigate through entire JSON that can be obtained anytime from API and if you need to specify instance for application it will present you a list of all instances used in all applications in env + ability to create new instance | 18:55 |
slagun | Imagine that you are writing Heat template. Object IDs are what resource names in Heat. You decide how to name them and reference them by whatever you called them | 18:57 |
bharath | slagun, yeah got it, but heat template is what we have to write an upload, but here dashboard is all generating some json, so we can modify it | 18:58 |
bharath | slagun, so why we need to manually write that and if we write it manually how can we send to engine? | 18:59 |
slagun | Dashboard cannot generate JSON that uses one VM in 2 places. So unless you want to rewrite half of dashboard there is no way it generates what you want. Thats not what can easily be done. So if you really need such JSON the only way to deploy such topology is to generate it in your script or write it manually. In both cases you can do it at once. | 19:04 |
slagun | http://murano.readthedocs.org/en/latest/specification/index.html | 19:04 |
slagun | ^^ that's API spec. You can upload your JSON by "Create Environment" call | 19:05 |
slagun | the doc is not completely up to date. I see many examples that were valid in Murano 0.4 but outdated as of 0.5 | 19:06 |
slagun | but the whole idea stays true | 19:06 |
slagun | or better - use Murano python-client | 19:07 |
slagun | it incapsulates all of the API | 19:07 |
bharath | slagun, if I can see how it is generating json, may be I will understand why we can't do that | 19:14 |
slagun | thats because current version of dashboard operates only on applications. In object model application is an object tree with many objects inside. UI flattens this. It takes your input, takes JSON template from UI form in murano package and just puts entered values in arbitrary places of application subtree. As a result UI generates the whole subtree of objects as it was one undividable unit. It has no UI forms for individual parts of that subtree. There | 19:21 |
slagun | is no separate dialog for VM properties for example. Because of that while configuring application you cannot select VM from existing list. It just don't work that way. It will when instead of entering one monolithic application it will allow entering individual objects | 19:21 |
slagun | You need to be able to dig inside applications and operate with inner objects. Thats just completely hidden now | 19:22 |
bharath | slagun, a bit tricky | 19:26 |
bharath | slagun, so we can't modify object model | 19:27 |
bharath | ? | 19:27 |
slagun | we can | 19:28 |
slagun | there is API which allows any modifications of object model | 19:28 |
slagun | but the UI is limited | 19:29 |
slagun | object model is what user puts onto environment | 19:29 |
bharath | slagun, object model is in request? | 19:30 |
slagun | it stored in database. There is an API calls to modify any parts of this JSON | 19:31 |
slagun | or to get any part | 19:31 |
slagun | or the whole JSON | 19:31 |
bharath | slagun, so I think dashboard will fetch this JSON from api and updates it after adding every app? | 19:33 |
slagun | yes | 19:33 |
bharath | slagun, then from that JSON we can fetch instance ID I guess? | 19:34 |
slagun | technically - yes. You can get any data that is already in that JSON | 19:35 |
slagun | If you were writing custom UI for your applications you wouldn't have such problem | 19:36 |
slagun | But in that case your dashboard code will know where to look for that ID and where to put it. It will know what to ask the user | 19:37 |
slagun | But Murano dashboard is generic. It has no such knowledge | 19:37 |
slagun | It works with any given application published to catalog. It doesn't knows what is VM or ID | 19:38 |
slagun | It doesn't understand the JSON it produces. | 19:39 |
slagun | It reads YAML definition saying what to ask from user and where to put that data | 19:39 |
slagun | And that YAML is not that powerful to describe "take ID from some other part of JSON" | 19:40 |
bharath | slagun, yeah | 19:40 |
bharath | slagun, but I want to get all apps in one env deployed in one vm | 19:42 |
slagun | You can do that by analyzing object model suppose someone generates it | 19:44 |
slagun | you map instances to applications | 19:44 |
bharath | slagun, where can we see that, from api? | 19:45 |
slagun | everything in object model. You know that 2 applications use one common object because its ID appears twice in object model. You get required keys and the structure of that JSON from class declarations (MuranoPL) | 19:46 |
slagun | API is just a way of accessing that JSON | 19:46 |
bharath | slagun, I haven't understood this object model fully | 19:51 |
bharath | slagun, but I will ask you some specific doubts on moday | 19:51 |
bharath | slagun, thankyou for your help | 19:51 |
slagun | no problem | 19:51 |
slagun | bharath: are you familiar with pickle? | 19:55 |
bharath | slagun, you mean for serialization? | 19:55 |
slagun | yes | 19:56 |
bharath | slagun, I am aware of that, but I haven't worked yet | 19:56 |
slagun | in Python you take some data structure (probably consisting of objects of your custom classes) and then serialize it to some file | 19:57 |
slagun | Later you can take that file and restore objects from it | 19:57 |
bharath | slagun, yeah | 19:57 |
slagun | Object Model is such file for MuranoPL | 19:58 |
slagun | It is objects serialized to JSON | 19:58 |
bharath | slagun, oh | 19:59 |
slagun | Each object representing some cloud entity. The class is written in MuranoPL. And object model describes instances of those classes | 20:00 |
bharath | slagun, eash resource is an object model? | 20:00 |
slagun | each resource is an object in object model. As well as each application | 20:00 |
slagun | The environment itself is an object | 20:01 |
slagun | JSON is a tree-structure. Tree of objects | 20:01 |
slagun | Objects reference other objects. As in regular OOP | 20:01 |
bharath | slagun, oh getting an overview of object model | 20:01 |
slagun | yes | 20:01 |
bharath | slagun, but need to work on coding part | 20:02 |
bharath | slagun, okay bye it's about 2AM here | 20:02 |
slagun | bye | 20:03 |
bharath | slagun, thanks for your help | 20:03 |
*** bharath has quit IRC | 20:03 |
Generated by irclog2html.py 2.14.0 by Marius Gedminas - find it at mg.pov.lt!