<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="">
Unfortunately I will be available on today meeting by phone so I’m not be able to discuss in way I would like to so I’m writing here.
<div class=""><br class="">
</div>
<div class="">May you describe what you understand by that info about configuring agent binary on start?</div>
<div class="">If I’m right the ideal situation would be like this:</div>
<div class="">1. We’re booting Ampora which is starting agent</div>
<div class="">2. Agent is calling worker metadata server to inform that is up</div>
<div class="">3. Agent is taking configuration (probably json) and configuring everything inside of the box:</div>
<div class=""><span class="Apple-tab-span" style="white-space:pre"></span>- using that solution we can prepare multiple implementations of our agent - driver way - to configure systemd, sysvinit, something other</div>
<div class=""><br class="">
</div>
<div class="">It’s what you was thinking or maybe you have some other way how you would like to organize that?</div>
<div class=""><br class="">
<div class="">
<div class="">
<div class="">Lubosz Kosnik</div>
<div class="">Cloud Software Engineer OSIC</div>
<div class=""><a href="mailto:lubosz.kosnik@intel.com" class="">lubosz.kosnik@intel.com</a></div>
</div>
</div>
<br class="">
<div>
<blockquote type="cite" class="">
<div class="">On Jun 29, 2016, at 10:26 AM, Nir Magnezi <<a href="mailto:nmagnezi@redhat.com" class="">nmagnezi@redhat.com</a>> wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div dir="ltr" class="">Hello,
<div class=""><br class="">
</div>
<div class="">Lately, I've been working on a fix[1] for the amhpora-agent, which currently only support Debian based flavors such as Ubuntu.</div>
<div class=""><br class="">
</div>
<div class="">The main Issues here:</div>
<div class="">1. NIC hot plugs: Ubuntu's ethX.cfg files looks different from ifcfg-ethX files which are accepted in Linux flavors such a RHEL, CentOS and Fedora, read more in the fix commit msg.</div>
<div class="">2. The usage of Flavor specific features such as 'upstart'.</div>
<div class=""><br class="">
</div>
<div class="">I would like to have a discussion about the second bullet mentioned above.</div>
<div class="">Due to the fact that in Octavia the loadbalancer runs inside of an instance (Amphora), There are few actions that need to take place in the Amphora instance boot process:</div>
<div class="">a. namespace and NIC created.</div>
<div class="">b. amphora agent starts</div>
<div class="">c. haproxy (and possibly keepalived) start</div>
<div class=""><br class="">
</div>
<div class="">
<div class="">The Amphora-agent leverages[2] the capabilities of 'upstart' to make that happen, which is a bit problematic if we wish it to work on other flavors.</div>
</div>
<div class="">The default cloud image for Amphora today is Ubuntu, yet there are few more options[3] such as CentOS and Fedora.<br class="">
</div>
<div class="">Unlike the Ubuntu base image, which uses 'sysvinit', The latter two flavors use 'systemd'.<br class="">
</div>
<div class="">This creates incompatibility with the jinja2[4][5] templates used by the agent.</div>
<div class=""><br class="">
</div>
<div class="">The way I see it there are two possible solutions for this:</div>
<div class="">1. Include a systemd equivalent in the fix[1] that will essentially duplicate the functionality mentioned above and work in the other flavors.</div>
<div class="">2. Have a the amphora agent be the only binary that needs to be configured to start upon boot, and that agent will take care of plugging namespaces and NICs and also spawning needs processes. This is how it is done in lbaas and l3 agents.</div>
<div class=""><br class="">
</div>
<div class="">While the latter solution looks like a more "clean" design, the trade-off here is a bigger change to the amphora agent. </div>
<div class=""><br class="">
</div>
<div class="">[1] <a href="https://review.openstack.org/#/c/331841/" class="">https://review.openstack.org/#/c/331841/</a></div>
<div class="">
<div class="">[2] <a href="https://github.com/openstack/octavia/blob/master/octavia/amphorae/backends/agent/api_server/listener.py#L128" class="">
https://github.com/openstack/octavia/blob/master/octavia/amphorae/backends/agent/api_server/listener.py#L128</a></div>
</div>
<div class="">[3] <a href="https://github.com/openstack/octavia/blob/master/diskimage-create/diskimage-create.sh#L27" class="">https://github.com/openstack/octavia/blob/master/diskimage-create/diskimage-create.sh#L27</a></div>
<div class="">[4] <a href="https://github.com/openstack/octavia/blob/master/octavia/amphorae/backends/agent/api_server/templates/upstart.conf.j2" class="">https://github.com/openstack/octavia/blob/master/octavia/amphorae/backends/agent/api_server/templates/upstart.conf.j2</a></div>
<div class="">[5] <a href="https://github.com/openstack/octavia/blob/master/octavia/amphorae/backends/agent/api_server/templates/sysvinit.conf.j2" class="">https://github.com/openstack/octavia/blob/master/octavia/amphorae/backends/agent/api_server/templates/sysvinit.conf.j2</a></div>
<div class=""><br class="">
</div>
<div class=""><br class="">
</div>
<div class="">Thanks,</div>
<div class="">Nir</div>
</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>
</body>
</html>