<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{mso-style-priority:34;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:36.0pt;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman",serif;}
span.gmail-
{mso-style-name:gmail-;}
span.EmailStyle18
{mso-style-type:personal-reply;
font-family:"Calibri",sans-serif;
color:#1F497D;
font-weight:normal;
font-style:normal;
text-decoration:none none;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri",sans-serif;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
@list l0
{mso-list-id:361444855;
mso-list-type:hybrid;
mso-list-template-ids:107631406 -1182106054 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
{mso-level-start-at:0;
mso-level-number-format:bullet;
mso-level-text:-;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Calibri",sans-serif;
mso-fareast-font-family:Calibri;
mso-bidi-font-family:"Times New Roman";}
@list l0:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l0:level3
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l0:level4
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l0:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l0:level6
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l0:level7
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Symbol;}
@list l0:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:"Courier New";}
@list l0:level9
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-18.0pt;
font-family:Wingdings;}
@list l1
{mso-list-id:470249220;
mso-list-template-ids:-2092678726;}
ol
{margin-bottom:0cm;}
ul
{margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Many thanks Cratoners,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Calibri",sans-serif;color:#1F497D">I think all this looks promising while some things need to be worked out. Have to chew this a bit and also join to IRC to discuss further (just that I am in different
timezone).<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Calibri",sans-serif;color:#1F497D">As seen in the discussion, there might be a problem in making notification that can be used to have an alarm for tenant about his VMs effecting by maintenance.
Anyhow as one should have the capability to disable host monitoring, it would mean the monitoring service should then be aware of the planned maintenance. Currently monitoring service like Vitrage (actually sitting on top of raw monitoring SW and aware of
cloud topology) will be able to make notifications that can be consumed by tenant as alarm. Meaning it should easily make tenant specific alarm about the planned maintenance.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Nova servers API now has host_status (Mitaka: get-valid-server-state BP) that can tell tenant the nova-compute is disabled ( “MAINTENANCE”). New alarm would then
state it is because planned maintenance. Surely API would be missing where tenant could see the same when querying his servers (where the Nova work I mentioned aims to have a link). This might be something needing more thinking.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Calibri",sans-serif;color:#1F497D">See you in #craton and happy to work with such a great project!<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Br,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Tomi<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> Jim Baker [mailto:jim.baker@python.org]
<br>
<b>Sent:</b> Thursday, November 17, 2016 4:52 AM<br>
<b>To:</b> OpenStack Development Mailing List (not for usage questions) <openstack-dev@lists.openstack.org><br>
<b>Subject:</b> Re: [openstack-dev] [Craton] NFV planned host maintenance<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On Wed, Nov 16, 2016 at 10:54 AM, Sulochan Acharya <<a href="mailto:sulo.foss@gmail.com" target="_blank">sulo.foss@gmail.com</a>> wrote:<o:p></o:p></p>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<div>
<p class="MsoNormal">Hi,<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<div>
<p class="MsoNormal">On Wed, Nov 16, 2016 at 2:46 PM, Ian Cordasco <<a href="mailto:sigmavirus24@gmail.com" target="_blank">sigmavirus24@gmail.com</a>> wrote:<o:p></o:p></p>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<p class="MsoNormal">-----Original Message-----<br>
From: Juvonen, Tomi (Nokia - FI/Espoo) <<a href="mailto:tomi.juvonen@nokia.com" target="_blank">tomi.juvonen@nokia.com</a>><br>
Reply: OpenStack Development Mailing List (not for usage questions)<br>
<<a href="mailto:openstack-dev@lists.openstack.org" target="_blank">openstack-dev@lists.openstack.org</a>><br>
Date: November 11, 2016 at 02:27:19<br>
To: OpenStack Development Mailing List (not for usage questions)<br>
<<a href="mailto:openstack-dev@lists.openstack.org" target="_blank">openstack-dev@lists.openstack.org</a>><br>
Subject: [openstack-dev] [Craton] NFV planned host maintenance<br>
<br>
> I have been looking in past two OpenStack summits to have changes needed to<br>
> fulfill OPNFV Doctor use case for planned host maintenance and at the same<br>
> time trying to find other Ops requirements to satisfy different needs. I was<br>
> just about to start a new project (Fenix), but looking Craton, it seems<br>
> a good alternative and was proposed to me in Barcelona meetup. Here is some<br>
> ideas and would like a comment wither Craton could be used here.<br>
<br>
Hi Tomi,<br>
<br>
Thanks for your interest in craton! I'm replying in-line, but please<br>
come and join us in #craton on Freenode as well!<br>
<br>
> OPNFV Doctor / NFV requirements are described here:<br>
> <a href="http://artifacts.opnfv.org/doctor/docs/requirements/02-use_cases.html#nvfi-maintenance" target="_blank">
http://artifacts.opnfv.org/doctor/docs/requirements/02-use_cases.html#nvfi-maintenance</a><br>
> <a href="http://artifacts.opnfv.org/doctor/docs/requirements/03-architecture.html#nfvi-maintenance" target="_blank">
http://artifacts.opnfv.org/doctor/docs/requirements/03-architecture.html#nfvi-maintenance</a><br>
> <a href="http://artifacts.opnfv.org/doctor/docs/requirements/05-implementation.html#nfvi-maintenance" target="_blank">
http://artifacts.opnfv.org/doctor/docs/requirements/05-implementation.html#nfvi-maintenance</a><br>
><br>
> My rough thoughts about what would be initially needed (as short as I can):<br>
><br>
> - There should be a database of all hosts matching to what is known by Nova.<br>
<br>
So I think this might be the first problem that you'll run into with Craton.<br>
<br>
Craton is designed to specifically manage the physical devices in a<br>
data centre. At the moment, it only considers the hosts that you'd run<br>
Nova on, not the Virtual Machines that Nova is managing on the Compute<br>
hosts.<o:p></o:p></p>
</blockquote>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Craton's inventory supports the following modeling:<o:p></o:p></p>
</div>
<div>
<ol start="1" type="1">
<li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo1">
devices, which may have a parent (so a strict tree); we map this against such entities as top-of-rack switches; hosts; and containers<o:p></o:p></li><li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo1">
logical relationships for these devices, including project, region, cell (optional); and arbitrary labels (tags)<o:p></o:p></li><li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo1">
key/value variables on most entities, including devices. Variables support <b>resolution</b> - an override mechanism where values are looked up against some chain (for device, that's the device tree, cell, region, in that order). Values are typed JSON in the
underlying (and default) SQLAlchemy model we use.<o:p></o:p></li></ol>
<div>
<p class="MsoNormal">Craton users synchronize the device inventory from other source of truth systems, such as an asset database; or perhaps manually. Meanwhile, variables can reflect desired state configuration (so like Ansible); as well as captured information.<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<div>
<div>
<div>
<div>
<div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<p class="MsoNormal"><br>
It's plausible that we could add the ability to track virtual<br>
machines, but Craton is meant to primarily work underneath the cloud.<br>
I think this might be changing since Craton is looking forward to<br>
helping manage a multi-cloud environment, so it's possible this won't<br>
be an issue for long.<o:p></o:p></p>
</blockquote>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Craton's device-focused model, although oriented to hardware, is rather arbitrary. Recently we have been also looking at what is needed to support a multi-tenant, multi-cloud inventory, and it seems quite feasible to manage in Craton's
inventory a subset of the resources provided by AWS or Azure.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Does this mean VMs and similar resources? Maybe. However, our thinking has been, for relatively fast changing and numerous resources, link to the source of truth, in this case Nova. In particular, we have a very model for variables that
could be readily extended to support what we call virtualized variables - dictionary mappings that are implemented by looking up on a remote service. See <a href="https://bugs.launchpad.net/craton/+bug/1606882">https://bugs.launchpad.net/craton/+bug/1606882</a>
- so long as it implements collections.abc.Mapping, we can plug into how variables are resolved.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<div>
<div>
<div>
<div>
<div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
<div>
<p class="MsoNormal">So I think there is 2 parts to this. 1. What Ian mentioned is that Craton currently does not keep inventory of VM running inside an openstack deployment. Nova (and Horizon for UI) is already doing this for the users. However, we do run
jobs or workload on the VM .. like live migrating VM's from a host that might undergo maintenance, or a host monitoring flagged as bad etc. This is done using `plugins` that talk to nova etc. So I think some of what you are looking for falls into that perhaps
? This can be based on some notification the Craton engine receives from another application (like monitoring for example).<o:p></o:p></p>
</div>
</div>
</div>
</div>
</blockquote>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<div>
<div>
<div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<p class="MsoNormal" style="margin-bottom:12.0pt"><br>
> - There should by an API for Cloud Admin to set planned maintenance window<br>
> for a host (maybe aggregate, group of hosts), when in maintenance and unset<br>
> when finished. There might be some optional parameters like target host<br>
> where to move things currently running on effected host. could also be<br>
> used for retirement of a host.<br>
<br>
This sounds like it's part of the next phase of Craton development -<br>
the remediation workflows. I think Jim and Sulo are more suited<br>
towards talking to that though.<o:p></o:p></p>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">So we will be able to trigger a work/job (maintenance) based on 1. User defined schedule 2. Based on some notification that we receive from another application. Both user defined. Like Ian suggested, this is something we plan to do in the
next phase.<o:p></o:p></p>
</div>
</div>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">To further describe: Craton will support an API to run such workflows against some device inventory; use from either the REST API or the Craton client that wraps. A very reasonable integration would be to use this integration in a webhook.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<div>
<div>
<div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<p class="MsoNormal" style="margin-bottom:12.0pt">> - There should be project(tenant) and host specific notifications that could:<br>
<br>
We are talking about an events/notifications system.<o:p></o:p></p>
</blockquote>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">+1. We are working on providing notification messages for all actions within the application.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<p class="MsoNormal">> - Trigger alarm in Aodh so Application would be aware of maintenance state<br>
> changes effecting to his servers, so zero downtime of application could<br>
> be guaranteed.<br>
<br>
I'm not sure it should be Craton's responsibility to do this, but I<br>
expect the administrator could set alarm criteria based off of<br>
Craton's events stream.<o:p></o:p></p>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">+1 We need to make sure that we dont try to be a monitoring solution. But like Ian said we can always look at using the notification system to do downstream processing.<o:p></o:p></p>
</div>
</div>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Agreed. Note that the notifications we are planning to publish against oslo.messaging are those that change database elements directly controlled by Craton, and not linked inventory such as VMs in Nova. But this notification can work in
concert with Nova notifications.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<div>
<div>
<div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<p class="MsoNormal"><br>
> - Notification could be consumed by workflow engine like Mistral, where<br>
> application server specific actions flows and admin action flows could<br>
> be performed (to move servers away, disable host,...).<br>
> - Host monitoring like Vitrage could consume notification to disable<br>
> alarms for host as of planned maintenance ongoing and not down by fault.<o:p></o:p></p>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I think its both ways, <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">some alarm triggered -> Craton -> Disable the monitoring. But also,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">craton notification -> Some application consumes it -> does something else.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">So the way I think of this is, Admin sets/schedules some work on a host -> Craton workflow will disable your monitoring (given monitoring solution allows such action) -> Start the maintenance work, once finished -> Start the monitoring
again.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<p class="MsoNormal">> - There should be admin and project level API to query maintenance session<br>
> status.<o:p></o:p></p>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">+1 We have API for all actions... and for all Inventory management as well.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<p class="MsoNormal">> - Workflow status should be queried or read as notification to keep internal<br>
> state and send further notification.<br>
> - Some more discussion also in "BCN-ops-informal-meetup" that goes beyond this:<br>
> <a href="https://etherpad.openstack.org/p/BCN-ops-informal-meetup" target="_blank">
https://etherpad.openstack.org/p/BCN-ops-informal-meetup</a><br>
<br>
These are all interesting ideas. Thank you!<br>
<br>
> What else, details, problems:<br>
><br>
> There is a problem in flow engine actions. Depending on how long maintenance<br>
> would take or what type of server is running, application wants flows to behave<br>
> differently. Application specific flows could surely be done, but problem is<br>
> that they should make admin actions. It should be solved how application can<br>
> decide actions flows while only admin can run them. Should admin make<br>
> the flows and let application a power to choose by hint in nova metadata or<br>
> in notification going to flow engine.<o:p></o:p></p>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">So the way Craton flow/workflow/job works is .. each job is a "plugin". Who can run this job is decided though RBAC(work in progress). We expect the plugin to have enough logic to decide what it wants to do. We can definitely set TTL for
a running job. Given it was triggered by "admin" who has "admin actions" privilege on Nova you would be allowed to do so. <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<p class="MsoNormal">><br>
> Started a discussion in Austin summit about extending the planned host<br>
> maintenance in Nova, but it was agreed there could just be a link to external<br>
> tool. Now if this tool would exist in OpenStack, I would suggest to link it<br>
> like this, but surely this is to be seen after the external tool<br>
> implementation exists:<o:p></o:p></p>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">We are far from it right now, but I think Craton would be able to do some of it. Like I said before scheduled jobs will be a part of the workflow engine so this will be possible. We should discuss more on what this exactly looks like etc.
Example: Admins would like to upgrade a host. In this case we might trigger a workflow to live-migrate all the vm's from that host, disable monitoring, disable the service, upgrade the host, enable monitoring, and put the host back in production (enabled in
nova services) for instance.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<p class="MsoNormal">> - Nova Services API could have a way for admin to set and unset a "base URL"<br>
> pointing to external tool about planned maintenance effecting to a host.<br>
> - Admin should see link to external tool when querying services via services<br>
> API. This might be formed like: {base URL}/{host_name}<br>
> - Project should have a project specific link to external tool when querying<br>
> via Nova servers API. This might be: {base URL}/project/{hostId}.<br>
> hostId is exposed to project as it do not tell exact host, but otherwise as<br>
> a unique identifier for host:<br>
> hashlib.sha224(projectid + host_name).hexdigest()<o:p></o:p></p>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I am not sure about this but interaction with Nova through the API is assumed as a part of a workflow. Most of it might be encapsulated in the running job in the sense that the job you are running is actually doing it. Craton might provide
the scaffolding to make it easy to do so. I am not sure what the possibilities are from Nova side, but you might be able to do so simply by scheduling a work on a set of host with just craton perhaps? We can discuss more on #craton ?<o:p></o:p></p>
</div>
</div>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Please do join us on #craton to work out these details! Thanks for a great set of questions.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">- Jim<o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>