<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Aleksey,<div class="">thank you for your feedback.</div><div class=""><br class=""></div><div class="">The first thing I’d like to highlight is that both web ui and the cli use the same Nailgun API to perform the same actions so basically we must not treat the command line client any differently.</div><div class=""><br class=""></div><div class="">The idea of having a complex status for environment actually seems to be pretty good one. However, that requires a BP so I’ve created an excerpt [1] which I’d like to share.</div><div class="">If this feature is scoped, it will get life of many folks easier since it will allow to discard some sophisticated algorithms.</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">- romcheg</div><div class=""><br class=""></div><div class="">1. <a href="https://etherpad.openstack.org/p/fuel-cluster-complex-status" class="">https://etherpad.openstack.org/p/fuel-cluster-complex-status</a></div><div class=""><br class=""><div class=""><div><blockquote type="cite" class=""><div class="">25 трав. 2015 о 10:39 Aleksey Kasatkin <<a href="mailto:akasatkin@mirantis.com" class="">akasatkin@mirantis.com</a>> написав(ла):</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div class="">AFAIC, there are several problems (in API) here:<div class="">1. We cannot stop/reset particular nodes.</div><div class=""><div class="">2. Cluster status doesn't address changes which were done via CLI.</div>3. Cluster status in its current form is not enough to manage cluster (i.e. to determine actions what can be applied to cluster at the moment). It doesn't reflect the fact that some nodes can be in 'provisioned' state, some are in 'provisioning', 'deploying', 'ready' statuses.</div><br class=""><div class="">First two seem clear enough. We could add ability to stop/reset particular nodes and reflect CLI-driven changes in the cluster status.</div><div class="">To address the last point my proposal was (<a href="https://bugs.launchpad.net/fuel/7.0.x/+bug/1449086/comments/7" target="_blank" class="">bug/1449086/comments/7</a>) to break status into several binary states, i.e. binaries: 'new', '<span style="" class="">deployment</span>', 'ready', etc., each of which is set to true when cluster has at least one node in corresponding status (I united 'provisioning', 'provisioned' and 'deploying' into one as it is done now).</div><div class=""><br class="">Now it looks more <span style="" class="">reasonable to me to keep the original status as is and add bitwise one mentioned above (to address states of different nodes) because 'error' state is determinative for cluster (when cluster is in 'error' state it is no matter that some nodes are in 'ready' state). <br class="">So, <br class="">cluster is in 'new' state when all nodes are in 'discover' state, <br class="">it is in 'operational' state when all nodes are in 'ready' state, <br class="">cluster is in 'deployment' state when not all of its nodes are in </span><span style="" class="">'discover' or 'ready' state but there are no nodes in 'error' and 'removing'</span> states.<br class="">New bitwise status is actual in '<span style="" class="">deployment' state of cluster</span>. It gives to UI/CLI sufficient data to determine what actions can be applied to cluster at the moment.<br class=""></div><div class=""><br class=""></div><div class="">I've combined some of the states combinations into the table:<br class=""></div><div class="">


        
        
        
        


<table width="665" cellpadding="4" cellspacing="0" class="">
        <colgroup class=""><col width="63" class="">
        <col width="87" class="">
        <col width="77" class="">
        <col width="403" class="">
        </colgroup><tbody class=""><tr valign="top" class="">
                <td style="border-width:1px medium 1px 1px;border-style:solid none solid solid;border-color:rgb(0,0,0) -moz-use-text-color rgb(0,0,0) rgb(0,0,0);padding:0.04in 0in 0.04in 0.04in" width="63" class=""><p class="">'new' flag</p>
                </td>
                <td style="border-width:1px medium 1px 1px;border-style:solid none solid solid;border-color:rgb(0,0,0) -moz-use-text-color rgb(0,0,0) rgb(0,0,0);padding:0.04in 0in 0.04in 0.04in" width="87" class=""><p class="">'deployment' flag</p>
                </td>
                <td style="border-width:1px medium 1px 1px;border-style:solid none solid solid;border-color:rgb(0,0,0) -moz-use-text-color rgb(0,0,0) rgb(0,0,0);padding:0.04in 0in 0.04in 0.04in" width="77" class=""><p class="">'ready' flag</p>
                </td>
                <td style="border:1px solid rgb(0,0,0);padding:0.04in" width="403" class=""><p class="">description, actions allowed<br class="">
                        </p>
                </td>
        </tr>
        <tr valign="top" class="">
                <td style="border-width:medium medium 1px 1px;border-style:none none solid solid;border-color:-moz-use-text-color -moz-use-text-color rgb(0,0,0) rgb(0,0,0);padding:0in 0in 0.04in 0.04in" width="63" class=""><p class="">false</p>
                </td>
                <td style="border-width:medium medium 1px 1px;border-style:none none solid solid;border-color:-moz-use-text-color -moz-use-text-color rgb(0,0,0) rgb(0,0,0);padding:0in 0in 0.04in 0.04in" width="87" class=""><p class="">false</p>
                </td>
                <td style="border-width:medium medium 1px 1px;border-style:none none solid solid;border-color:-moz-use-text-color -moz-use-text-color rgb(0,0,0) rgb(0,0,0);padding:0in 0in 0.04in 0.04in" width="77" class=""><p class="">false</p>
                </td>
                <td style="border-width:medium 1px 1px;border-style:none solid solid;border-color:-moz-use-text-color rgb(0,0,0) rgb(0,0,0);padding:0in 0.04in 0.04in" width="403" class=""><p class="">There are no nodes in cluster or all nodes are in 'error'/'removing' state. Cluster is in 'new'/'error'/'remove' state here so we don't care about these flags.</p>
                </td>
        </tr>
        <tr valign="top" class="">
                <td style="border-width:medium medium 1px 1px;border-style:none none solid solid;border-color:-moz-use-text-color -moz-use-text-color rgb(0,0,0) rgb(0,0,0);padding:0in 0in 0.04in 0.04in" width="63" class=""><p class="">false</p>
                </td>
                <td style="border-width:medium medium 1px 1px;border-style:none none solid solid;border-color:-moz-use-text-color -moz-use-text-color rgb(0,0,0) rgb(0,0,0);padding:0in 0in 0.04in 0.04in" width="87" class=""><p class="">true</p>
                </td>
                <td style="border-width:medium medium 1px 1px;border-style:none none solid solid;border-color:-moz-use-text-color -moz-use-text-color rgb(0,0,0) rgb(0,0,0);padding:0in 0in 0.04in 0.04in" width="77" class=""><p class="">false</p>
                </td>
                <td style="border-width:medium 1px 1px;border-style:none solid solid;border-color:-moz-use-text-color rgb(0,0,0) rgb(0,0,0);padding:0in 0.04in 0.04in" width="403" class=""><p class="">All nodes are under provisioning/deployment. Deployment can be
                        stopped.</p>
                </td>
        </tr>
        <tr valign="top" class="">
                <td style="border-width:medium medium 1px 1px;border-style:none none solid solid;border-color:-moz-use-text-color -moz-use-text-color rgb(0,0,0) rgb(0,0,0);padding:0in 0in 0.04in 0.04in" width="63" class=""><p class="">true</p>
                </td>
                <td style="border-width:medium medium 1px 1px;border-style:none none solid solid;border-color:-moz-use-text-color -moz-use-text-color rgb(0,0,0) rgb(0,0,0);padding:0in 0in 0.04in 0.04in" width="87" class=""><p class="">true</p>
                </td>
                <td style="border-width:medium medium 1px 1px;border-style:none none solid solid;border-color:-moz-use-text-color -moz-use-text-color rgb(0,0,0) rgb(0,0,0);padding:0in 0in 0.04in 0.04in" width="77" class=""><p class="">false</p>
                </td>
                <td style="border-width:medium 1px 1px;border-style:none solid solid;border-color:-moz-use-text-color rgb(0,0,0) rgb(0,0,0);padding:0in 0.04in 0.04in" width="403" class=""><p class="">Part of nodes is in 'discover' state, remaining part is under
                        provisioning/deployment. Deployment can be started for the first
                        part or/and stopped for the second part of nodes.</p>
                </td>
        </tr>
        <tr valign="top" class="">
                <td style="border-width:medium medium 1px 1px;border-style:none none solid solid;border-color:-moz-use-text-color -moz-use-text-color rgb(0,0,0) rgb(0,0,0);padding:0in 0in 0.04in 0.04in" width="63" class=""><p class="">true</p>
                </td>
                <td style="border-width:medium medium 1px 1px;border-style:none none solid solid;border-color:-moz-use-text-color -moz-use-text-color rgb(0,0,0) rgb(0,0,0);padding:0in 0in 0.04in 0.04in" width="87" class=""><p class="">false</p>
                </td>
                <td style="border-width:medium medium 1px 1px;border-style:none none solid solid;border-color:-moz-use-text-color -moz-use-text-color rgb(0,0,0) rgb(0,0,0);padding:0in 0in 0.04in 0.04in" width="77" class=""><p class="">true</p>
                </td>
                <td style="border-width:medium 1px 1px;border-style:none solid solid;border-color:-moz-use-text-color rgb(0,0,0) rgb(0,0,0);padding:0in 0.04in 0.04in" width="403" class=""><p class="">Part of nodes is in 'discover' state, remaining part is in
                        'ready' state. Deployment can be started for the first part and
                        second part can be reset.</p>
                </td>
        </tr>
        <tr valign="top" class="">
                <td style="border-width:medium medium 1px 1px;border-style:none none solid solid;border-color:-moz-use-text-color -moz-use-text-color rgb(0,0,0) rgb(0,0,0);padding:0in 0in 0.04in 0.04in" width="63" class=""><p class="">true</p>
                </td>
                <td style="border-width:medium medium 1px 1px;border-style:none none solid solid;border-color:-moz-use-text-color -moz-use-text-color rgb(0,0,0) rgb(0,0,0);padding:0in 0in 0.04in 0.04in" width="87" class=""><p class="">true</p>
                </td>
                <td style="border-width:medium medium 1px 1px;border-style:none none solid solid;border-color:-moz-use-text-color -moz-use-text-color rgb(0,0,0) rgb(0,0,0);padding:0in 0in 0.04in 0.04in" width="77" class=""><p class="">true</p>
                </td>
                <td style="border-width:medium 1px 1px;border-style:none solid solid;border-color:-moz-use-text-color rgb(0,0,0) rgb(0,0,0);padding:0in 0.04in 0.04in" width="403" class=""><p class="">We have some nodes in every of the states: 'discover',
                        provisioning/deployment, 'ready'. So, we can allow different
                        actions for nodes in different states.</p>
                </td>
        </tr>
</tbody></table><p class="">false</p><p class="">true</p><p class="">true</p><p class="">Part of nodes is under provisioning/deployment, remaining part is in
                        'ready' state. Deployment can be stopped for the first part and
                        second part can be reset.</p>
                </div><div class="">I didn't show another 2 combinations here as they aren't related to '<span style="" class="">deployment' state of cluster</span> (as well as the first one in the table).<br class=""></div><br class=""></div>Also, we should be careful with the order of nodes deployment/reset. I'm not sure whether it is written in our docs that cluster may be non-functional if user tries to deploy nodes in the wrong order (e.g. computes first). We could show some warnings about that. Same applies to selective reset if we will implement it.<br class=""><br class=""><div class=""><div class=""><br class=""></div></div></div><div class="gmail_extra"><br clear="all" class=""><div class=""><div class="gmail_signature"><div dir="ltr" class="">Aleksey Kasatkin
<br class=""><br class=""></div></div></div>
<br class=""><div class="gmail_quote">On Fri, May 22, 2015 at 5:33 PM, Roman Prykhodchenko <span dir="ltr" class=""><<a href="mailto:me@romcheg.me" target="_blank" class="">me@romcheg.me</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">Hi folks!<br class="">
<br class="">
Recently I encountered an issue [1] that the Deploy Changes button in the web ui is still active when a provisioning of single node is started using the command line client.<br class="">
The background for that issue is that the provisioning task does not seem to update the cluster status correctly and Nailgun’s API returns it as NEW even while some of the node are been provisioned.<br class="">
<br class="">
The reason for raising this thread in the mailing list is that provisioning a node is a feature for developers and basically end-users should not do that. What is the best solution for that: fix Nailgun to set the correct status, or make this provisioning feature available only for developers?<br class="">
<br class="">
1. <a href="https://bugs.launchpad.net/fuel/7.0.x/+bug/1449086" target="_blank" class="">https://bugs.launchpad.net/fuel/7.0.x/+bug/1449086</a><br class="">
<br class="">
<br class="">
- romcheg<br class="">
<br class="">
</div></div><br class="">__________________________________________________________________________<br class="">
OpenStack Development Mailing List (not for usage questions)<br class="">
Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org/?subject:unsubscribe" target="_blank" class="">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br class="">
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank" class="">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br class="">
<br class=""></blockquote></div><br class=""></div>
__________________________________________________________________________<br class="">OpenStack Development Mailing List (not for usage questions)<br class="">Unsubscribe: <a href="mailto:OpenStack-dev-request@lists.openstack.org" class="">OpenStack-dev-request@lists.openstack.org</a>?subject:unsubscribe<br class=""><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" class="">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br class=""></div></blockquote></div><br class=""></div></div></body></html>