<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jul 13, 2017 at 3:02 PM, Saravanan KR <span dir="ltr"><<a href="mailto:skramaja@redhat.com" target="_blank">skramaja@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-">On Tue, Jul 11, 2017 at 11:40 PM, Ben Nemec <<a href="mailto:openstack@nemebean.com">openstack@nemebean.com</a>> 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>
</span>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>
<span class="gmail-"><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>
</span>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>
<span class="gmail-"><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>
</span>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] <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/<wbr>master/puppet/services/<wbr>disabled</a><br>
<div class="gmail-HOEnZb"><div class="gmail-h5"><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 if any of<br>
> them affect things tripleo manages (which this would) then you're going to<br>
> break on the next stack update.<br>
><br>
> If there are things about the migration that a stack-update can't handle,<br>
> then the migration process would need to be twofold: 1) Run the standalone<br>
> bits to do the migration 2) Update the tripleo configuration to 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 possible.<br>
><br></div></div></blockquote><div><br></div><div><br></div><div>Thanks Ben and Saravanan for your comments.</div><div><br></div><div>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.</div><div><br></div><div>The question is is this the right way to disable some services and enable some ? or "openstack overcloud update stack" is the right command ?</div><div><br></div><div><br></div><div>[1] - openstack overcloud deploy \</div><div>    --templates /usr/share/openstack-tripleo-heat-templates \</div><div>    --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-heat-templates/environments/network-isolation.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/net-single-nic-with-vlans.yaml -e /home/stack/network-environment.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/puppet-pacemaker.yaml  -e /usr/share/openstack-tripleo-heat-templates/environments/low-memory-usage.yaml     -e /usr/share/openstack-tripleo-heat-templates/environments/disable-telemetry.yaml   --validation-warnings-fatal   --compute-scale 1 --control-scale 3 --ntp-server <a href="http://pool.ntp.org">pool.ntp.org</a> \</div><div>    ${DEPLOY_ENV_YAML:+-e $DEPLOY_ENV_YAML} "$@" && status_code=0 || status_code=$?</div><div><br></div><div><br></div><div>[2] - openstack overcloud deploy \</div><div>    --templates /usr/share/openstack-tripleo-heat-templates \</div><div>    --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-heat-templates/environments/network-isolation.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/net-single-nic-with-vlans.yaml -e /home/stack/network-environment.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/puppet-pacemaker.yaml  <b><i><font color="#cc0000">-e /usr/share/openstack-tripleo-heat-templates/environments/neutron-ml2-ovn.yaml </font></i></b>-e /usr/share/openstack-tripleo-heat-templates/environments/low-memory-usage.yaml     -e /usr/share/openstack-tripleo-heat-templates/environments/disable-telemetry.yaml   --validation-warnings-fatal   --compute-scale 1 --control-scale 3 --ntp-server <a href="http://pool.ntp.org">pool.ntp.org</a> \</div><div>    ${DEPLOY_ENV_YAML:+-e $DEPLOY_ENV_YAML} "$@" && status_code=0 || status_code=$?</div><div><br></div><div><br></div><div>Thanks</div><div>Numan</div><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail-HOEnZb"><div class="gmail-h5">
>><br>
>><br>
>> Request to provide your comments so that we can move in the right<br>
>> direction.<br>
>><br>
>> [1] - <a href="https://github.com/openstack/networking-ovn/tree/master/migration" rel="noreferrer" target="_blank">https://github.com/openstack/<wbr>networking-ovn/tree/master/<wbr>migration</a><br>
>><br>
>> Thanks<br>
>> Numan<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.<wbr>openstack.org?subject:<wbr>unsubscribe</a><br>
>> <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/<wbr>cgi-bin/mailman/listinfo/<wbr>openstack-dev</a><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.<wbr>openstack.org?subject:<wbr>unsubscribe</a><br>
> <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/<wbr>cgi-bin/mailman/listinfo/<wbr>openstack-dev</a><br>
</div></div></blockquote></div><br></div></div>