<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jul 19, 2017 at 11:37 PM, Ben Nemec <span dir="ltr"><<a href="mailto:openstack@nemebean.com" target="_blank">openstack@nemebean.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
<br>
On 07/18/2017 08:18 AM, Numan Siddique wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
<br>
<br>
On Thu, Jul 13, 2017 at 3:02 PM, Saravanan KR <<a href="mailto:skramaja@redhat.com" target="_blank">skramaja@redhat.com</a> <mailto:<a href="mailto:skramaja@redhat.com" target="_blank">skramaja@redhat.com</a>>> wrote:<br>
<br>
    On Tue, Jul 11, 2017 at 11:40 PM, Ben Nemec <<a href="mailto:openstack@nemebean.com" target="_blank">openstack@nemebean.com</a><br></span><div><div class="h5">
    <mailto:<a href="mailto:openstack@nemebean.com" target="_blank">openstack@nemebean.com</a><wbr>>> wrote:<br>
    ><br>
    ><br>
    > On 07/11/2017 10:17 AM, Numan Siddique wrote:<br>
    >><br>
    >> Hello Tripleo team,<br>
    >><br>
    >> I have few questios regarding migration from neutron ML2OVS to OVN. Below<br>
    >> are some of the requirements<br>
    >><br>
    >>   - We want to migrate an existing depoyment from Neutroon default ML2OVS<br>
    >> to OVN<br>
    >>   - We are targetting this for tripleo Queen's release.<br>
    >>   - The plan is to first upgrade the tripleo deployment from Pike to<br>
    >> Queens with no changes to neutron. i.e with neutron ML2OVS. Once the upgrade<br>
    >> is done, we want to migrate to OVN.<br>
    >>   - The migration process will stop all the neutron agents, configure<br>
    >> neutron server to load OVN mechanism driver and start OVN services (with no<br>
    >> or very limited datapath downtime).<br>
    >>   - The migration would be handled by an ansible script. We have a PoC<br>
    >> ansible script which can be found here [1]<br>
    >><br>
    >> And the questions are<br>
    >> -  (A broad question) - What is the right way to migrate and switch the<br>
    >> neutron plugin ? Can the stack upgrade handle the migration as well ?<br>
    This is going to be a broader problem as it is also require to migrate<br>
    ML2OvS to ODL for NFV deployments, pretty much at the same timeline.<br>
    If i understand correctly, this migration involves stopping services<br>
    of ML2OVS (like neutron-ovs-agent) and starting the corresponding new<br>
    ML2 (OVN or ODL), along with few parameter additions and removals.<br>
<br>
    >> - The migration procedure should be part of tripleo ? or can it be a<br>
    >> standalone ansible script ? (I presume it should be former).<br>
    Each service has upgrade steps which can be associated via ansible<br>
    steps. But this is not a service upgrade. It disables an existing<br>
    service and enables a new service. So I think, it would need an<br>
    explicit disabled service [1], stop the required service. And enabled<br>
    the new service.<br>
<br>
    >> - If it should be part of the tripleo then what would be the command to do<br>
    >> it ? A update stack command with appropriate environment files for OVN ?<br>
    >> - In case the migration can be done  as a standalone script, how to handle<br>
    >> later updates/upgrades since tripleo wouldn't be aware of the migration ?<br>
    ><br>
    I would also discourage doing it standalone.<br>
<br>
    Another area which needs to be looked is that, should it be associated<br>
    with containers upgrade? May be OVN and ODL can be migrated as<br>
    containers only instead of baremetal by default (just a thought, could<br>
    have implications to be worked/discussed out).<br>
<br>
    Regards,<br>
    Saravanan KR<br>
<br>
    [1]<br>
    <a href="https://github.com/openstack/tripleo-heat-templates/tree/master/puppet/services/disabled" rel="noreferrer" target="_blank">https://github.com/openstack/t<wbr>ripleo-heat-templates/tree/mas<wbr>ter/puppet/services/disabled</a><br>
    <<a href="https://github.com/openstack/tripleo-heat-templates/tree/master/puppet/services/disabled" rel="noreferrer" target="_blank">https://github.com/openstack/<wbr>tripleo-heat-templates/tree/ma<wbr>ster/puppet/services/disabled</a>><br>
<br>
     ><br>
     > This last point seems like the crux of the discussion here.     Sure, you can<br>
     > do all kinds of things to your cloud using standalone bits, but<br>
    if any of<br>
     > them affect things tripleo manages (which this would) then you're<br>
    going to<br>
     > break on the next stack update.<br>
     ><br>
     > If there are things about the migration that a stack-update can't<br>
    handle,<br>
     > then the migration process would need to be twofold: 1) Run the<br>
    standalone<br>
     > bits to do the migration 2) Update the tripleo configuration to<br>
    match the<br>
     > migrated config so stack-updates work.<br>
     ><br>
     > This is obviously a complex and error-prone process, so I'd strongly<br>
     > encourage doing it in a tripleo-native fashion instead if at all<br>
    possible.<br>
     ><br>
<br>
<br>
<br>
Thanks Ben and Saravanan for your comments.<br>
<br>
I did some testing. I first deployed an overcloud with the command [1] and then I ran the command [2] which enables the OVN services. After the completion of [2], all the neutron agents were stopped and all the OVN services were up.<br>
<br>
The question is is this the right way to disable some services and enable some ? or "openstack overcloud update stack" is the right command ?<br>
</div></div></blockquote>
<br>
Re-running the deploy command as you did is the right way to change configuration.  The update stack command is just for updating packages.<br>
<br></blockquote><div><br></div><div>Thanks Ben for the confirmation.</div><div><br></div><div>Numan</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
<br>
<br>
[1] - openstack overcloud deploy \<br>
     --templates /usr/share/openstack-tripleo-h<wbr>eat-templates \<br></span>
     --libvirt-type qemu --control-flavor oooq_control --compute-flavor oooq_compute --ceph-storage-flavor oooq_ceph --block-storage-flavor oooq_blockstorage --swift-storage-flavor oooq_objectstorage --timeout 90 -e /home/stack/cloud-names.yaml    -e /usr/share/openstack-tripleo-h<wbr>eat-templates/environments/net<wbr>work-isolation.yaml -e /usr/share/openstack-tripleo-h<wbr>eat-templates/environments/net<wbr>-single-nic-with-vlans.yaml -e /home/stack/network-environmen<wbr>t.yaml -e /usr/share/openstack-tripleo-h<wbr>eat-templates/environments/pup<wbr>pet-pacemaker.yaml   -e /usr/share/openstack-tripleo-h<wbr>eat-templates/environments/low<wbr>-memory-usage.yaml      -e /usr/share/openstack-tripleo-h<wbr>eat-templates/environments/dis<wbr>able-telemetry.yaml    --validation-warnings-fatal   --compute-scale 1 --control-scale 3 --ntp-server <a href="http://pool.ntp.org" rel="noreferrer" target="_blank">pool.ntp.org</a> <<a href="http://pool.ntp.org" rel="noreferrer" target="_blank">http://pool.ntp.org</a>> \<span class=""><br>
     ${DEPLOY_ENV_YAML:+-e $DEPLOY_ENV_YAML} "$@" && status_code=0 || status_code=$?<br>
<br>
<br>
[2] - openstack overcloud deploy \<br>
     --templates /usr/share/openstack-tripleo-h<wbr>eat-templates \<br></span>
     --libvirt-type qemu --control-flavor oooq_control --compute-flavor oooq_compute --ceph-storage-flavor oooq_ceph --block-storage-flavor oooq_blockstorage --swift-storage-flavor oooq_objectstorage --timeout 90 -e /home/stack/cloud-names.yaml    -e /usr/share/openstack-tripleo-h<wbr>eat-templates/environments/net<wbr>work-isolation.yaml -e /usr/share/openstack-tripleo-h<wbr>eat-templates/environments/net<wbr>-single-nic-with-vlans.yaml -e /home/stack/network-environmen<wbr>t.yaml -e /usr/share/openstack-tripleo-h<wbr>eat-templates/environments/pup<wbr>pet-pacemaker.yaml */-e /usr/share/openstack-tripleo-h<wbr>eat-templates/environments/neu<wbr>tron-ml2-ovn.yaml /*-e /usr/share/openstack-tripleo-h<wbr>eat-templates/environments/low<wbr>-memory-usage.yaml      -e /usr/share/openstack-tripleo-h<wbr>eat-templates/environments/dis<wbr>able-telemetry.yaml    --validation-warnings-fatal   --compute-scale 1 --control-scale 3 --ntp-server <a href="http://pool.ntp.org" rel="noreferrer" target="_blank">pool.ntp.org</a> <<a href="http://pool.ntp.org" rel="noreferrer" target="_blank">http://pool.ntp.org</a>> \<span class=""><br>
     ${DEPLOY_ENV_YAML:+-e $DEPLOY_ENV_YAML} "$@" && status_code=0 || status_code=$?<br>
<br>
<br>
Thanks<br>
Numan<br>
<br>
<br>
     >><br>
     >><br>
     >> Request to provide your comments so that we can move in the right<br>
     >> direction.<br>
     >><br>
     >> [1] -<br>
    <a href="https://github.com/openstack/networking-ovn/tree/master/migration" rel="noreferrer" target="_blank">https://github.com/openstack/n<wbr>etworking-ovn/tree/master/migr<wbr>ation</a><br>
    <<a href="https://github.com/openstack/networking-ovn/tree/master/migration" rel="noreferrer" target="_blank">https://github.com/openstack/<wbr>networking-ovn/tree/master/mig<wbr>ration</a>><br>
     >><br>
     >> Thanks<br>
     >> Numan<br>
     >><br>
     >><br>
     >><br>
     >><br>
    ______________________________<wbr>______________________________<wbr>______________<br>
     >> OpenStack Development Mailing List (not for usage questions)<br>
     >> Unsubscribe:<br>
    <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" rel="noreferrer" target="_blank">OpenStack-dev-request@lists.op<wbr>enstack.org?subject:unsubscrib<wbr>e</a><br></span>
    <<a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" rel="noreferrer" target="_blank">http://OpenStack-dev-request@<wbr>lists.openstack.org?subject:un<wbr>subscribe</a>><br>
     >><br>
    <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/cgi<wbr>-bin/mailman/listinfo/openstac<wbr>k-dev</a><span class=""><br>
    <<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/cg<wbr>i-bin/mailman/listinfo/opensta<wbr>ck-dev</a>><br>
     >><br>
     ><br>
     ><br>
    ______________________________<wbr>______________________________<wbr>______________<br>
     > OpenStack Development Mailing List (not for usage questions)<br>
     > Unsubscribe:<br>
    <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" rel="noreferrer" target="_blank">OpenStack-dev-request@lists.op<wbr>enstack.org?subject:unsubscrib<wbr>e</a><br></span>
    <<a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" rel="noreferrer" target="_blank">http://OpenStack-dev-request@<wbr>lists.openstack.org?subject:un<wbr>subscribe</a>><br>
     > <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/cgi<wbr>-bin/mailman/listinfo/openstac<wbr>k-dev</a><span class=""><br>
    <<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/cg<wbr>i-bin/mailman/listinfo/opensta<wbr>ck-dev</a>><br>
<br>
<br>
<br>
<br>
______________________________<wbr>______________________________<wbr>______________<br>
OpenStack Development Mailing List (not for usage questions)<br>
Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" rel="noreferrer" target="_blank">OpenStack-dev-request@lists.op<wbr>enstack.org?subject:unsubscrib<wbr>e</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/cgi<wbr>-bin/mailman/listinfo/openstac<wbr>k-dev</a><br>
<br>
</span></blockquote>
</blockquote></div><br></div></div>