<html><body><p><font size="2">Thanks for the concern and fully under it , the major reason is cloud-init doesn't have a hook or plugin before it start to read config drive (ISO disk) </font><br><font size="2">z/VM is an old hypervisor and no way to do something like libvirt to define a ISO format disk in xml definition, instead, it can define disks in the defintion</font><br><font size="2">of virtual machine and let VM to decide its format. </font><br><br><font size="2">so we need a way to tell cloud-init where to find ISO file before cloud-init start but without AE, we can't handle that...some update on the spec here </font><br><font size="2">for further information </font><a href="https://review.openstack.org/#/c/562154/"><font size="2">https://review.openstack.org/#/c/562154/</font></a><br><br><font size="2">Best Regards! <br><br>Kevin (Chen) Ji 纪 晨<br><br>Engineer, zVM Development, CSTL<br>Notes: Chen CH Ji/China/IBM@IBMCN   Internet: jichenjc@cn.ibm.com<br>Phone: +86-10-82451493<br>Address: 3/F Ring Building, ZhongGuanCun Software Park, Haidian District, Beijing 100193, PRC </font><br><br><img width="16" height="16" src="cid:1__=8FBB08E0DFA6AF9E8f9e8a93df938690918c8FB@" border="0" alt="Inactive hide details for Michael Still ---04/18/2018 05:08:01 PM---I'm confused about the design of AE to be honest. Is there "><font size="2" color="#424282">Michael Still ---04/18/2018 05:08:01 PM---I'm confused about the design of AE to be honest. Is there a good reason that this functionality cou</font><br><br><font size="2" color="#5F5F5F">From:        </font><font size="2">Michael Still <mikal@stillhq.com></font><br><font size="2" color="#5F5F5F">To:        </font><font size="2">"OpenStack Development Mailing List (not for usage questions)" <openstack-dev@lists.openstack.org></font><br><font size="2" color="#5F5F5F">Date:        </font><font size="2">04/18/2018 05:08 PM</font><br><font size="2" color="#5F5F5F">Subject:        </font><font size="2">Re: [openstack-dev] [Nova] z/VM introducing a new config driveformat</font><br><hr width="100%" size="2" align="left" noshade style="color:#8091A5; "><br><br><br>I'm confused about the design of AE to be honest. Is there a good reason that this functionality couldn't be provided by cloud-init? I think there's a lot of cost in deviating from the industry standard, so the reasons to do so have to be really solid.<br><br>I'm also a bit confused by what seems to be support for streaming configuration. Is there any documentation on the design of AE anywhere?<br><br>Thanks,<br>Michael<br><br>On Tue, Apr 17, 2018 at 6:58 PM, Chen CH Ji <<a href="mailto:jichenjc@cn.ibm.com" target="_blank"><u><font color="#0000FF">jichenjc@cn.ibm.com</font></u></a>> wrote:
<ul><font size="2">For the question on AE documentation, it's open source in [1] and the documentation for how to build and use is [2] <br>once our code is upstream, there are a set of documentation change which will cover this image build process by<br>adding some links to there [3]</font><br><font size="2"><br>You are right, we need image to have our Active Engine, I think different arch and platform might have their unique<br>requirements and our solution our Active Engine is very like to cloud-init so no harm to add it from user's perspective<br>I think later we can upload image to some place so anyone is able to consume it as test image if they like <br>because different arch's image (e.g x86 and s390x) can't be shared anyway. </font><br><font size="2"><br>For the config drive format you mentioned, actually, as previous explanation and discussion witho Michael and Dan, <br>We found the iso9660 can be used (previously we made a bad assumption) and we already changed the patch in [4],<br>so it's exactly same to other virt drivers you mentioned , we don't need special format and iso9660 works perfect for our driver</font><br><font size="2"><br>It make sense to me we are temply moved out from runway, I suppose we can adjust the CI to enable the run_ssh = true<br>with config drive functionalities very soon and we will apply for review after that with the test result requested in our CI log.</font><br><font size="2"><br>Thanks</font><br><font size="2"><br>[1] </font><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_mfcloud_python-2Dzvm-2Dsdk_blob_master_tools_share_zvmguestconfigure&d=DwMFaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=8sI5aZT88Uetyy_XsOddbPjIiLSGM-sFnua3lLy2Xr0&m=0b05NYxdutLoT3zTF5t-KEYfQwqfqEAMQk63ZLjrHvc&s=W5EOjrUUlLc81S59CjdlqpePCEibgHqTf5ca5SGXaQ0&e=" target="_blank"><u><font size="2" color="#0000FF">https://github.com/mfcloud/python-zvm-sdk/blob/master/tools/share/zvmguestconfigure</font></u></a><font size="2"><br>[2] </font><a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__cloudlib4zvm.readthedocs.io_en_latest_makeimage.html-23configuration-2Dof-2Dactivation-2Dengine-2Dae-2Din-2Dzlinux&d=DwMFaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=8sI5aZT88Uetyy_XsOddbPjIiLSGM-sFnua3lLy2Xr0&m=0b05NYxdutLoT3zTF5t-KEYfQwqfqEAMQk63ZLjrHvc&s=BI9ovrvEcrjhc5yxT5ljKdoIu8E3AqJ0kRBSQyUeqVo&e=" target="_blank"><u><font size="2" color="#0000FF">http://cloudlib4zvm.readthedocs.io/en/latest/makeimage.html#configuration-of-activation-engine-ae-in-zlinux</font></u></a><font size="2"><br>[3] </font><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__review.openstack.org_-23_q_status-3Aopen-2Bproject-3Aopenstack_nova-2Bbranch-3Amaster-2Btopic-3Abp_add-2Dzvm-2Ddriver-2Drocky&d=DwMFaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=8sI5aZT88Uetyy_XsOddbPjIiLSGM-sFnua3lLy2Xr0&m=0b05NYxdutLoT3zTF5t-KEYfQwqfqEAMQk63ZLjrHvc&s=TBGpkOiFGnO2TgnGXqrX6k8inFGqkFSZL3qvTq1lJto&e=" target="_blank"><u><font size="2" color="#0000FF">https://review.openstack.org/#/q/status:open+project:openstack/nova+branch:master+topic:bp/add-zvm-driver-rocky</font></u></a><font size="2"><br>[4] </font><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__review.openstack.org_-23_c_527658_33_nova_virt_zvm_utils.py&d=DwMFaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=8sI5aZT88Uetyy_XsOddbPjIiLSGM-sFnua3lLy2Xr0&m=0b05NYxdutLoT3zTF5t-KEYfQwqfqEAMQk63ZLjrHvc&s=VFKgKNCTRjv1UQaY5A71wU7ow2CSZC7BOv98HVWtNCc&e=" target="_blank"><u><font size="2" color="#0000FF">https://review.openstack.org/#/c/527658/33/nova/virt/zvm/utils.py</font></u></a><font size="2"> line 104 </font><br><font size="2"><br>Best Regards! <br><br>Kevin (Chen) Ji 纪 晨<br><br>Engineer, zVM Development, CSTL<br>Notes: Chen CH Ji/China/IBM@IBMCN Internet: </font><a href="mailto:jichenjc@cn.ibm.com" target="_blank"><u><font size="2" color="#0000FF">jichenjc@cn.ibm.com</font></u></a><font size="2"><br>Phone: +86-10-82451493<br>Address: 3/F Ring Building, ZhongGuanCun Software Park, Haidian District, Beijing 100193, PRC </font><br><br><img src="cid:1__=8FBB08E0DFA6AF9E8f9e8a93df938690918c8FB@" width="16" height="16" alt="Inactive hide details for melanie witt ---04/17/2018 09:21:03 AM---On Mon, 16 Apr 2018 14:56:06 +0800, Chen Ch Ji wrote: >  >>>"><font size="2" color="#424282">melanie witt ---04/17/2018 09:21:03 AM---On Mon, 16 Apr 2018 14:56:06 +0800, Chen Ch Ji wrote: > >>>The "iso file" will not be inside the gu</font><br><font size="2" color="#5F5F5F"><br>From: </font><font size="2">melanie witt <</font><a href="mailto:melwittt@gmail.com" target="_blank"><u><font size="2" color="#0000FF">melwittt@gmail.com</font></u></a><font size="2">></font><font size="2" color="#5F5F5F"><br>To: </font><a href="mailto:openstack-dev@lists.openstack.org" target="_blank"><u><font size="2" color="#0000FF">openstack-dev@lists.openstack.org</font></u></a><font size="2" color="#5F5F5F"><br>Date: </font><font size="2">04/17/2018 09:21 AM</font><font size="2" color="#5F5F5F"><br>Subject: </font><font size="2">Re: [openstack-dev] [Nova] z/VM introducing a new config driveformat</font><br><hr width="100%" size="2" align="left" noshade><br><br><br><tt><font size="2">On Mon, 16 Apr 2018 14:56:06 +0800, Chen Ch Ji wrote:<br>>  >>>The "iso file" will not be inside the guest, but rather passed to <br>> the guest as a block device, right?<br>> Cloud init expects to find a config drive with following requirements <br>> [1], in order to make cloud init able to consume config drive , we <br>> should be able to prepare it,<br>> in some hypervisor, you can define something like following to the VM <br>> then VM startup is able to consume it<br>> <source file="/var/log/cloud/new/abc.iso"/><br>> but for z/VM case it allows disk to be created during VM create (define <br>> )stage but no disk format set, it's the operating system's <br>> responsibility to define the purpose of the<br>> disk, so what we do is<br>> 1) first when we build image ,we create a small AE like cloud-init but <br>> only purpose is to get files from z/VM internal pipe and handle config <br>> drive case<br><br>What does AE stand for? So, this means in order to use the z/VM driver, <br>users must have special images that will ensure the config drive will be <br>readable by cloud-init. They can't use standard cloud images.<br><br>> 2) During spawn we create config drive in nova-compute side then send <br>> the file to z/VM through z/VM internal pipe (omit detail here)<br>> 3) During startup of the virtual machine, the small AE is able to mount <br>> the file as loop device and then in turn cloud-init is able to handle it<br>> <br>> because this is our special case, we don't want to upload to cloud-init <br>> community because of uniqueness and as far as we can tell, no hook in <br>> cloud-init mechanism allowed as well<br>> to let us 'mount -o loop' ; also, from openstack point of view except <br>> this small AE (which is documented well) no special thing and <br>> inconsistent to other drivers<br>> </font></tt><br><tt><font size="2">> [1]</font></tt><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_number5_cloud-2Dinit_blob_master_cloudinit_sources_DataSourceConfigDrive.py-23L225&d=DwIGaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=8sI5aZT88Uetyy_XsOddbPjIiLSGM-sFnua3lLy2Xr0&m=yV6OJ4IfFSLoHNWAJpBF7j0sK2pgfxSEIigv8vinYw0&s=3410axnNZ_62U3HOh6i7yivyc7HyTcqwx2xuKRDEeac&e=" target="_blank"><tt><u><font size="2" color="#0000FF">https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_number5_cloud-2Dinit_blob_master_cloudinit_sources_DataSourceConfigDrive.py-23L225&d=DwIGaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=8sI5aZT88Uetyy_XsOddbPjIiLSGM-sFnua3lLy2Xr0&m=yV6OJ4IfFSLoHNWAJpBF7j0sK2pgfxSEIigv8vinYw0&s=3410axnNZ_62U3HOh6i7yivyc7HyTcqwx2xuKRDEeac&e=</font></u></tt></a><tt><font size="2"><br><br>Where is the AE documented? How do users obtain it? What tools are they <br>supposed to use to build images to use with the z/VM driver?<br><br>That aside, from what I can see, the z/VM driver behaves unlike any <br>other in-tree driver [0-5] in how it handles config drive. Drivers are <br>expected to create the config drive and present it to the guest in <br>iso9660 or vfat format without requirement of a custom image and the <br>existing drivers are doing that.<br><br>IMHO, if the z/VM driver can't be fixed to provide proper config drive <br>support, we won't be able to approve the implementation patches. I would <br>like to hear other opinions about it.<br><br>I propose that we remove the z/VM driver blueprint from the runway at <br>this time and place it back into the queue while work on the driver <br>continues. At a minimum, we need to see z/VM CI running with <br>[validation]run_validation = True in tempest.conf before we add the z/VM <br>driver blueprint back into a runway in the future.<br><br>Cheers,<br>-melanie<br><br>[0] </font></tt><tt><u><font size="2" color="#0000FF"><br></font></u></tt><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_openstack_nova_blob_888cd51_nova_virt_hyperv_vmops.py-23L661&d=DwIGaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=8sI5aZT88Uetyy_XsOddbPjIiLSGM-sFnua3lLy2Xr0&m=yV6OJ4IfFSLoHNWAJpBF7j0sK2pgfxSEIigv8vinYw0&s=7PXdcMLIrzcekkl0V3N1vML09CGgvali0Q4v-M_vrzk&e=" target="_blank"><tt><u><font size="2" color="#0000FF">https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_openstack_nova_blob_888cd51_nova_virt_hyperv_vmops.py-23L661&d=DwIGaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=8sI5aZT88Uetyy_XsOddbPjIiLSGM-sFnua3lLy2Xr0&m=yV6OJ4IfFSLoHNWAJpBF7j0sK2pgfxSEIigv8vinYw0&s=7PXdcMLIrzcekkl0V3N1vML09CGgvali0Q4v-M_vrzk&e=</font></u></tt></a><tt><font size="2"><br>[1] </font></tt><tt><u><font size="2" color="#0000FF"><br></font></u></tt><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_openstack_nova_blob_888cd51_nova_virt_ironic_driver.py-23L974&d=DwIGaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=8sI5aZT88Uetyy_XsOddbPjIiLSGM-sFnua3lLy2Xr0&m=yV6OJ4IfFSLoHNWAJpBF7j0sK2pgfxSEIigv8vinYw0&s=X1KzmZQEfiHW1O6N1j5vBJkERjrV0dDrZlkT3LjE5aY&e=" target="_blank"><tt><u><font size="2" color="#0000FF">https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_openstack_nova_blob_888cd51_nova_virt_ironic_driver.py-23L974&d=DwIGaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=8sI5aZT88Uetyy_XsOddbPjIiLSGM-sFnua3lLy2Xr0&m=yV6OJ4IfFSLoHNWAJpBF7j0sK2pgfxSEIigv8vinYw0&s=X1KzmZQEfiHW1O6N1j5vBJkERjrV0dDrZlkT3LjE5aY&e=</font></u></tt></a><tt><font size="2"><br>[2] </font></tt><tt><u><font size="2" color="#0000FF"><br></font></u></tt><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_openstack_nova_blob_888cd51_nova_virt_libvirt_driver.py-23L3595&d=DwIGaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=8sI5aZT88Uetyy_XsOddbPjIiLSGM-sFnua3lLy2Xr0&m=yV6OJ4IfFSLoHNWAJpBF7j0sK2pgfxSEIigv8vinYw0&s=a5XhSWf7Ws5h_OuiUc_LpMVtM4ud3GoexVM1NKpBwfM&e=" target="_blank"><tt><u><font size="2" color="#0000FF">https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_openstack_nova_blob_888cd51_nova_virt_libvirt_driver.py-23L3595&d=DwIGaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=8sI5aZT88Uetyy_XsOddbPjIiLSGM-sFnua3lLy2Xr0&m=yV6OJ4IfFSLoHNWAJpBF7j0sK2pgfxSEIigv8vinYw0&s=a5XhSWf7Ws5h_OuiUc_LpMVtM4ud3GoexVM1NKpBwfM&e=</font></u></tt></a><tt><font size="2"><br>[3] </font></tt><tt><u><font size="2" color="#0000FF"><br></font></u></tt><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_openstack_nova_blob_888cd51_nova_virt_powervm_media.py-23L120&d=DwIGaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=8sI5aZT88Uetyy_XsOddbPjIiLSGM-sFnua3lLy2Xr0&m=yV6OJ4IfFSLoHNWAJpBF7j0sK2pgfxSEIigv8vinYw0&s=w7kq1DhO7qw57H0ZX0uxkj1tFvLCeYOHU9QVUTmBehU&e=" target="_blank"><tt><u><font size="2" color="#0000FF">https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_openstack_nova_blob_888cd51_nova_virt_powervm_media.py-23L120&d=DwIGaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=8sI5aZT88Uetyy_XsOddbPjIiLSGM-sFnua3lLy2Xr0&m=yV6OJ4IfFSLoHNWAJpBF7j0sK2pgfxSEIigv8vinYw0&s=w7kq1DhO7qw57H0ZX0uxkj1tFvLCeYOHU9QVUTmBehU&e=</font></u></tt></a><tt><font size="2"><br>[4] </font></tt><tt><u><font size="2" color="#0000FF"><br></font></u></tt><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_openstack_nova_blob_888cd51_nova_virt_vmwareapi_vmops.py-23L854&d=DwIGaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=8sI5aZT88Uetyy_XsOddbPjIiLSGM-sFnua3lLy2Xr0&m=yV6OJ4IfFSLoHNWAJpBF7j0sK2pgfxSEIigv8vinYw0&s=_G6MIr7OqLH48t8b8JGMVhg6bgCPg8bgHbPez9ohbG0&e=" target="_blank"><tt><u><font size="2" color="#0000FF">https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_openstack_nova_blob_888cd51_nova_virt_vmwareapi_vmops.py-23L854&d=DwIGaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=8sI5aZT88Uetyy_XsOddbPjIiLSGM-sFnua3lLy2Xr0&m=yV6OJ4IfFSLoHNWAJpBF7j0sK2pgfxSEIigv8vinYw0&s=_G6MIr7OqLH48t8b8JGMVhg6bgCPg8bgHbPez9ohbG0&e=</font></u></tt></a><tt><font size="2"><br>[5] </font></tt><tt><u><font size="2" color="#0000FF"><br></font></u></tt><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_openstack_nova_blob_888cd51_nova_virt_xenapi_vm-5Futils.py-23L1151&d=DwIGaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=8sI5aZT88Uetyy_XsOddbPjIiLSGM-sFnua3lLy2Xr0&m=yV6OJ4IfFSLoHNWAJpBF7j0sK2pgfxSEIigv8vinYw0&s=LZK-0hqXfMqBaLHUHMA4kjE-mReBuP1vw9pYGPoqAxU&e=" target="_blank"><tt><u><font size="2" color="#0000FF">https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_openstack_nova_blob_888cd51_nova_virt_xenapi_vm-5Futils.py-23L1151&d=DwIGaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=8sI5aZT88Uetyy_XsOddbPjIiLSGM-sFnua3lLy2Xr0&m=yV6OJ4IfFSLoHNWAJpBF7j0sK2pgfxSEIigv8vinYw0&s=LZK-0hqXfMqBaLHUHMA4kjE-mReBuP1vw9pYGPoqAxU&e=</font></u></tt></a><tt><font size="2"><br><br>__________________________________________________________________________<br>OpenStack Development Mailing List (not for usage questions)<br>Unsubscribe: </font></tt><a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__OpenStack-2Ddev-2Drequest-40lists.openstack.org-3Fsubject-3Aunsubscribe&d=DwMFaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=8sI5aZT88Uetyy_XsOddbPjIiLSGM-sFnua3lLy2Xr0&m=0b05NYxdutLoT3zTF5t-KEYfQwqfqEAMQk63ZLjrHvc&s=9Ex_f-agTKwBdmQf-z7fqyin-xjMWAR_AXNjffgZ3fg&e=" target="_blank"><tt><u><font size="2" color="#0000FF">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</font></u></tt></a><tt><u><font size="2" color="#0000FF"><br></font></u></tt><a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.openstack.org_cgi-2Dbin_mailman_listinfo_openstack-2Ddev&d=DwIGaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=8sI5aZT88Uetyy_XsOddbPjIiLSGM-sFnua3lLy2Xr0&m=yV6OJ4IfFSLoHNWAJpBF7j0sK2pgfxSEIigv8vinYw0&s=SiDXOoY94EWr2-3GDE9_5U6tsqgl7OqwbFzSwJrGAzA&e=" target="_blank"><tt><u><font size="2" color="#0000FF">https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.openstack.org_cgi-2Dbin_mailman_listinfo_openstack-2Ddev&d=DwIGaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=8sI5aZT88Uetyy_XsOddbPjIiLSGM-sFnua3lLy2Xr0&m=yV6OJ4IfFSLoHNWAJpBF7j0sK2pgfxSEIigv8vinYw0&s=SiDXOoY94EWr2-3GDE9_5U6tsqgl7OqwbFzSwJrGAzA&e=</font></u></tt></a><tt><font size="2"><br></font></tt><br><br><br><br><br>__________________________________________________________________________<br>OpenStack Development Mailing List (not for usage questions)<br>Unsubscribe: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__OpenStack-2Ddev-2Drequest-40lists.openstack.org-3Fsubject-3Aunsubscribe&d=DwMFaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=8sI5aZT88Uetyy_XsOddbPjIiLSGM-sFnua3lLy2Xr0&m=0b05NYxdutLoT3zTF5t-KEYfQwqfqEAMQk63ZLjrHvc&s=9Ex_f-agTKwBdmQf-z7fqyin-xjMWAR_AXNjffgZ3fg&e=" target="_blank"><u><font color="#0000FF">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</font></u></a><u><font color="#0000FF"><br></font></u><a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.openstack.org_cgi-2Dbin_mailman_listinfo_openstack-2Ddev&d=DwMFaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=8sI5aZT88Uetyy_XsOddbPjIiLSGM-sFnua3lLy2Xr0&m=0b05NYxdutLoT3zTF5t-KEYfQwqfqEAMQk63ZLjrHvc&s=24HEDjCD0EBpKd90iVibbyuNogfp23J4kaQxD-BgHuY&e=" target="_blank"><u><font color="#0000FF">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</font></u></a><br></ul><br><br><br>-- <br>Did this email leave you hoping to cause me pain? Good news!<br>Sponsor me in city2surf 2018 and I promise to suffer greatly.<br><a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__www.madebymikal.com_city2surf-2D2018_&d=DwMFaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=8sI5aZT88Uetyy_XsOddbPjIiLSGM-sFnua3lLy2Xr0&m=0b05NYxdutLoT3zTF5t-KEYfQwqfqEAMQk63ZLjrHvc&s=e33zMPNH789Lyz5NUW6dw5zvrqjeFmeUBzBf-OV4-ws&e="><u><font size="2" color="#0000FF">http://www.madebymikal.com/city2surf-2018/</font></u></a><tt><font size="2">__________________________________________________________________________<br>OpenStack Development Mailing List (not for usage questions)<br>Unsubscribe: OpenStack-dev-request@lists.openstack.org?subject:unsubscribe<br></font></tt><tt><font size="2"><a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.openstack.org_cgi-2Dbin_mailman_listinfo_openstack-2Ddev&d=DwIGaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=8sI5aZT88Uetyy_XsOddbPjIiLSGM-sFnua3lLy2Xr0&m=0b05NYxdutLoT3zTF5t-KEYfQwqfqEAMQk63ZLjrHvc&s=24HEDjCD0EBpKd90iVibbyuNogfp23J4kaQxD-BgHuY&e=">https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.openstack.org_cgi-2Dbin_mailman_listinfo_openstack-2Ddev&d=DwIGaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=8sI5aZT88Uetyy_XsOddbPjIiLSGM-sFnua3lLy2Xr0&m=0b05NYxdutLoT3zTF5t-KEYfQwqfqEAMQk63ZLjrHvc&s=24HEDjCD0EBpKd90iVibbyuNogfp23J4kaQxD-BgHuY&e=</a></font></tt><tt><font size="2"><br></font></tt><br><br><BR>
</body></html>