Provide primitives for vopt deletion

Provides the functions needed to delete a Virtual Optical device and the
associated file.

Includes the appropriate unit test, but a subsequent change set is
needed to incorporate (and test) it within the TaskFlow framework.

Change-Id: Ia460d06c76925e0c3c54caffb3570ea456bcdf06
This commit is contained in:
Drew Thorstensen 2015-01-23 13:29:40 -06:00
parent 9af5378a88
commit 5d709f9ce4
4 changed files with 2365 additions and 0 deletions
nova_powervm

File diff suppressed because it is too large Load Diff

@ -0,0 +1,463 @@
####################################################
# THIS IS AN AUTOMATICALLY GENERATED FILE
# DO NOT EDIT. ANY EDITS WILL BE LOST ON NEXT UPDATE
#
# To update file, run: create_httpresp.py -refresh fake_single_vol_group.txt
#
####################################################
INFO{
{'comment': 'Used for testing test_volume_group.', 'status': 200, 'pw': 'Passw0rd', 'reason': 'OK', 'host': '9.1.2.3', 'user': 'hscroot', 'path': 'VirtualIOServer/14B854F7-42CE-4FF0-BD57-1D117054E701/VolumeGroup'}
END OF SECTION}
HEADERS{
{'content-length': '2927', 'x-powered-by': 'Servlet/3.0', 'set-cookie': 'JSESSIONID=0000NDn35hM1wmiEggkwHYt86o5:375f7c5b-d5fc-4d80-91de-1d4d29170e01; Path=/; Secure; HttpOnly', 'x-hmc-schema-version': 'V1_1_0', 'expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'last-modified': 'Thu, 18 Sep 2014 07:04:42 GMT', 'x-transaction-id': 'XT10023645', 'etag': '249747277', 'cache-control': 'no-transform, must-revalidate, proxy-revalidate, no-cache=set-cookie', 'date': 'Thu, 18 Sep 2014 07:04:42 GMT', 'content-type': 'application/atom+xml'}
END OF SECTION}
BODY{
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:ns2="http://a9.com/-/spec/opensearch/1.1/" xmlns:ns3="http://www.w3.org/1999/xhtml">
<id>b6bdbf1f-eddf-3c81-8801-9859eb6fedcb</id>
<title>VolumeGroup</title>
<published>2015-01-22T04:15:33.816Z</published>
<link rel="SELF" href="https://9.1.2.3:12443/rest/api/uom/VirtualIOServer/14B854F7-42CE-4FF0-BD57-1D117054E701/VolumeGroup/b6bdbf1f-eddf-3c81-8801-9859eb6fedcb"/>
<author>
<name>IBM Power Systems Management Console</name>
</author>
<etag:etag xmlns:etag="http://www.ibm.com/xmlns/systems/power/firmware/uom/mc/2012_10/" xmlns="http://www.ibm.com/xmlns/systems/power/firmware/uom/mc/2012_10/">71932090</etag:etag>
<content type="application/vnd.ibm.powervm.uom+xml; type=VolumeGroup">
<VolumeGroup:VolumeGroup xmlns:VolumeGroup="http://www.ibm.com/xmlns/systems/power/firmware/uom/mc/2012_10/" xmlns="http://www.ibm.com/xmlns/systems/power/firmware/uom/mc/2012_10/" xmlns:ns2="http://www.w3.org/XML/1998/namespace/k2" schemaVersion="V1_2_0">
<Metadata>
<Atom>
<AtomID>b6bdbf1f-eddf-3c81-8801-9859eb6fedcb</AtomID>
<AtomCreated>1421883668662</AtomCreated>
</Atom>
</Metadata>
<AvailableSize kb="ROR" kxe="false">997</AvailableSize>
<FreeSpace kxe="false" kb="ROR">997</FreeSpace>
<GroupCapacity kb="CUR" kxe="false">1063</GroupCapacity>
<GroupName kb="CUR" kxe="false">image_pool</GroupName>
<GroupSerialID kb="ROR" kxe="false">00f8d6de00004b000000014a54555cd9</GroupSerialID>
<MaximumLogicalVolumes kb="ROR" kxe="false">1024</MaximumLogicalVolumes>
<MediaRepositories kb="CUD" kxe="false" schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<VirtualMediaRepository schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<OpticalMedia kb="CUD" kxe="false" schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<VirtualOpticalMedia schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<MediaName kb="CUR" kxe="false">asdcv_3bc2b715_userID_config.iso</MediaName>
<MediaUDID kb="ROR" kxe="false">0easdcv_3bc2b715_userID_config.iso</MediaUDID>
<MountType kb="CUD" kxe="false">rw</MountType>
<Size kb="CUR" kxe="false">0.000000</Size>
</VirtualOpticalMedia>
<VirtualOpticalMedia schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<MediaName kb="CUR" kxe="false">asdf_c3f7b1e7_userID_config.iso</MediaName>
<MediaUDID kb="ROR" kxe="false">0easdf_c3f7b1e7_userID_config.iso</MediaUDID>
<MountType kb="CUD" kxe="false">rw</MountType>
<Size kb="CUR" kxe="false">0.000000</Size>
</VirtualOpticalMedia>
<VirtualOpticalMedia schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<MediaName kb="CUR" kxe="false">blank_media1</MediaName>
<MediaUDID kb="ROR" kxe="false">0eblank_media1</MediaUDID>
<MountType kb="CUD" kxe="false">rw</MountType>
<Size kb="CUR" kxe="false">0.0977</Size>
</VirtualOpticalMedia>
<VirtualOpticalMedia schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<MediaName kb="CUR" kxe="false">blank_media_2</MediaName>
<MediaUDID kb="ROR" kxe="false">0eblank_media_2</MediaUDID>
<MountType kb="CUD" kxe="false">rw</MountType>
<Size kb="CUR" kxe="false">0.0488</Size>
</VirtualOpticalMedia>
<VirtualOpticalMedia schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<MediaName kb="CUR" kxe="false">cirros_eea81ef4_userID_config.iso</MediaName>
<MediaUDID kb="ROR" kxe="false">0ecirros_eea81ef4_userID_config.iso</MediaUDID>
<MountType kb="CUD" kxe="false">rw</MountType>
<Size kb="CUR" kxe="false">0.000000</Size>
</VirtualOpticalMedia>
<VirtualOpticalMedia schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<MediaName kb="CUR" kxe="false">test_aix_17cbd370_userID_config.iso</MediaName>
<MediaUDID kb="ROR" kxe="false">0etest_aix_17cbd370_userID_config.iso</MediaUDID>
<MountType kb="CUD" kxe="false">rw</MountType>
<Size kb="CUR" kxe="false">0.000000</Size>
</VirtualOpticalMedia>
</OpticalMedia>
<RepositoryName kb="CUR" kxe="false">VMLibrary</RepositoryName>
<RepositorySize kb="CUR" kxe="false">11</RepositorySize>
</VirtualMediaRepository>
</MediaRepositories>
<PhysicalVolumes kb="CUD" kxe="false" schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<PhysicalVolume schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<Description kb="CUD" kxe="false">SAS RAID 0 Disk Array</Description>
<LocationCode kb="ROR" kxe="false">U78C9.001.WZS0095-P1-C14-R1-L405D828300-L0</LocationCode>
<ReservePolicy kb="CUD" kxe="false">NoReserve</ReservePolicy>
<ReservePolicyAlgorithm kb="CUD" kxe="false">Failover</ReservePolicyAlgorithm>
<UniqueDeviceID kb="ROR" kxe="false">01MUlCTSAgICAgSVBSLTAgICA1RDgyODMwMDAwMDAwMDQw</UniqueDeviceID>
<AvailableForUsage kb="CUD" kxe="false">false</AvailableForUsage>
<VolumeCapacity kb="CUR" kxe="false">1089592</VolumeCapacity>
<VolumeName kb="CUR" kxe="false">hdisk1</VolumeName>
<VolumeState kb="ROR" kxe="false">active</VolumeState>
<VolumeUniqueID kb="ROR" kxe="false">391BIBMIPR-0 5D8283000000004010IPR-0 5D82830003IBMsas</VolumeUniqueID>
<IsFibreChannelBacked kb="ROR" kxe="false">false</IsFibreChannelBacked>
</PhysicalVolume>
</PhysicalVolumes>
<UniqueDeviceID kb="ROR" kxe="false">0400f8d6de00004b000000014a54555cd9</UniqueDeviceID>
<VirtualDisks kb="CUD" kxe="false" schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<VirtualDisk schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<DiskCapacity kb="CUR" kxe="false">1</DiskCapacity>
<DiskLabel kb="CUR" kxe="false">None</DiskLabel>
<DiskName kb="CUR" kxe="false">boot_b853fd66</DiskName>
<VolumeGroup kb="ROR" kxe="false" href="https://9.1.2.3:12443/rest/api/uom/VirtualIOServer/14B854F7-42CE-4FF0-BD57-1D117054E701/VolumeGroup/b6bdbf1f-eddf-3c81-8801-9859eb6fedcb" rel="related"/>
<UniqueDeviceID kb="ROR" kxe="false">0300f8d6de00004b000000014a54555cd9.20</UniqueDeviceID>
</VirtualDisk>
<VirtualDisk schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<DiskCapacity kb="CUR" kxe="false">1</DiskCapacity>
<DiskLabel kb="CUR" kxe="false">None</DiskLabel>
<DiskName kb="CUR" kxe="false">boot_df4029a6</DiskName>
<VolumeGroup kb="ROR" kxe="false" href="https://9.1.2.3:12443/rest/api/uom/VirtualIOServer/14B854F7-42CE-4FF0-BD57-1D117054E701/VolumeGroup/b6bdbf1f-eddf-3c81-8801-9859eb6fedcb" rel="related"/>
<UniqueDeviceID kb="ROR" kxe="false">0300f8d6de00004b000000014a54555cd9.21</UniqueDeviceID>
</VirtualDisk>
<VirtualDisk schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<DiskCapacity kb="CUR" kxe="false">1</DiskCapacity>
<DiskLabel kb="CUR" kxe="false">None</DiskLabel>
<DiskName kb="CUR" kxe="false">boot_e0dd0297</DiskName>
<VolumeGroup kb="ROR" kxe="false" href="https://9.1.2.3:12443/rest/api/uom/VirtualIOServer/14B854F7-42CE-4FF0-BD57-1D117054E701/VolumeGroup/b6bdbf1f-eddf-3c81-8801-9859eb6fedcb" rel="related"/>
<UniqueDeviceID kb="ROR" kxe="false">0300f8d6de00004b000000014a54555cd9.22</UniqueDeviceID>
</VirtualDisk>
<VirtualDisk schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<DiskCapacity kb="CUR" kxe="false">5</DiskCapacity>
<DiskLabel kb="CUR" kxe="false">None</DiskLabel>
<DiskName kb="CUR" kxe="false">boot_17cbd370</DiskName>
<VolumeGroup kb="ROR" kxe="false" href="https://9.1.2.3:12443/rest/api/uom/VirtualIOServer/14B854F7-42CE-4FF0-BD57-1D117054E701/VolumeGroup/b6bdbf1f-eddf-3c81-8801-9859eb6fedcb" rel="related"/>
<UniqueDeviceID kb="ROR" kxe="false">0300f8d6de00004b000000014a54555cd9.23</UniqueDeviceID>
</VirtualDisk>
<VirtualDisk schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<DiskCapacity kb="CUR" kxe="false">1</DiskCapacity>
<DiskLabel kb="CUR" kxe="false">None</DiskLabel>
<DiskName kb="CUR" kxe="false">boot_d2d886e1</DiskName>
<VolumeGroup kb="ROR" kxe="false" href="https://9.1.2.3:12443/rest/api/uom/VirtualIOServer/14B854F7-42CE-4FF0-BD57-1D117054E701/VolumeGroup/b6bdbf1f-eddf-3c81-8801-9859eb6fedcb" rel="related"/>
<UniqueDeviceID kb="ROR" kxe="false">0300f8d6de00004b000000014a54555cd9.24</UniqueDeviceID>
</VirtualDisk>
<VirtualDisk schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<DiskCapacity kb="CUR" kxe="false">1</DiskCapacity>
<DiskLabel kb="CUR" kxe="false">None</DiskLabel>
<DiskName kb="CUR" kxe="false">boot_947a017f</DiskName>
<VolumeGroup kb="ROR" kxe="false" href="https://9.1.2.3:12443/rest/api/uom/VirtualIOServer/14B854F7-42CE-4FF0-BD57-1D117054E701/VolumeGroup/b6bdbf1f-eddf-3c81-8801-9859eb6fedcb" rel="related"/>
<UniqueDeviceID kb="ROR" kxe="false">0300f8d6de00004b000000014a54555cd9.25</UniqueDeviceID>
</VirtualDisk>
<VirtualDisk schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<DiskCapacity kb="CUR" kxe="false">1</DiskCapacity>
<DiskLabel kb="CUR" kxe="false">None</DiskLabel>
<DiskName kb="CUR" kxe="false">boot_810f7730</DiskName>
<VolumeGroup kb="ROR" kxe="false" href="https://9.1.2.3:12443/rest/api/uom/VirtualIOServer/14B854F7-42CE-4FF0-BD57-1D117054E701/VolumeGroup/b6bdbf1f-eddf-3c81-8801-9859eb6fedcb" rel="related"/>
<UniqueDeviceID kb="ROR" kxe="false">0300f8d6de00004b000000014a54555cd9.26</UniqueDeviceID>
</VirtualDisk>
<VirtualDisk schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<DiskCapacity kb="CUR" kxe="false">1</DiskCapacity>
<DiskLabel kb="CUR" kxe="false">None</DiskLabel>
<DiskName kb="CUR" kxe="false">boot_9f5befd2</DiskName>
<VolumeGroup kb="ROR" kxe="false" href="https://9.1.2.3:12443/rest/api/uom/VirtualIOServer/14B854F7-42CE-4FF0-BD57-1D117054E701/VolumeGroup/b6bdbf1f-eddf-3c81-8801-9859eb6fedcb" rel="related"/>
<UniqueDeviceID kb="ROR" kxe="false">0300f8d6de00004b000000014a54555cd9.27</UniqueDeviceID>
</VirtualDisk>
<VirtualDisk schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<DiskCapacity kb="CUR" kxe="false">1</DiskCapacity>
<DiskLabel kb="CUR" kxe="false">None</DiskLabel>
<DiskName kb="CUR" kxe="false">boot_9699a0f5</DiskName>
<VolumeGroup kb="ROR" kxe="false" href="https://9.1.2.3:12443/rest/api/uom/VirtualIOServer/14B854F7-42CE-4FF0-BD57-1D117054E701/VolumeGroup/b6bdbf1f-eddf-3c81-8801-9859eb6fedcb" rel="related"/>
<UniqueDeviceID kb="ROR" kxe="false">0300f8d6de00004b000000014a54555cd9.28</UniqueDeviceID>
</VirtualDisk>
<VirtualDisk schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<DiskCapacity kb="CUR" kxe="false">1</DiskCapacity>
<DiskLabel kb="CUR" kxe="false">None</DiskLabel>
<DiskName kb="CUR" kxe="false">boot_d50cd8e4</DiskName>
<VolumeGroup kb="ROR" kxe="false" href="https://9.1.2.3:12443/rest/api/uom/VirtualIOServer/14B854F7-42CE-4FF0-BD57-1D117054E701/VolumeGroup/b6bdbf1f-eddf-3c81-8801-9859eb6fedcb" rel="related"/>
<UniqueDeviceID kb="ROR" kxe="false">0300f8d6de00004b000000014a54555cd9.29</UniqueDeviceID>
</VirtualDisk>
<VirtualDisk schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<DiskCapacity kb="CUR" kxe="false">1</DiskCapacity>
<DiskLabel kb="CUR" kxe="false">None</DiskLabel>
<DiskName kb="CUR" kxe="false">boot_540240c8</DiskName>
<VolumeGroup kb="ROR" kxe="false" href="https://9.1.2.3:12443/rest/api/uom/VirtualIOServer/14B854F7-42CE-4FF0-BD57-1D117054E701/VolumeGroup/b6bdbf1f-eddf-3c81-8801-9859eb6fedcb" rel="related"/>
<UniqueDeviceID kb="ROR" kxe="false">0300f8d6de00004b000000014a54555cd9.30</UniqueDeviceID>
</VirtualDisk>
<VirtualDisk schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<DiskCapacity kb="CUR" kxe="false">1</DiskCapacity>
<DiskLabel kb="CUR" kxe="false">None</DiskLabel>
<DiskName kb="CUR" kxe="false">boot_16eea13e</DiskName>
<VolumeGroup kb="ROR" kxe="false" href="https://9.1.2.3:12443/rest/api/uom/VirtualIOServer/14B854F7-42CE-4FF0-BD57-1D117054E701/VolumeGroup/b6bdbf1f-eddf-3c81-8801-9859eb6fedcb" rel="related"/>
<UniqueDeviceID kb="ROR" kxe="false">0300f8d6de00004b000000014a54555cd9.31</UniqueDeviceID>
</VirtualDisk>
<VirtualDisk schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<DiskCapacity kb="CUR" kxe="false">1</DiskCapacity>
<DiskLabel kb="CUR" kxe="false">None</DiskLabel>
<DiskName kb="CUR" kxe="false">boot_37e3c8d3</DiskName>
<VolumeGroup kb="ROR" kxe="false" href="https://9.1.2.3:12443/rest/api/uom/VirtualIOServer/14B854F7-42CE-4FF0-BD57-1D117054E701/VolumeGroup/b6bdbf1f-eddf-3c81-8801-9859eb6fedcb" rel="related"/>
<UniqueDeviceID kb="ROR" kxe="false">0300f8d6de00004b000000014a54555cd9.32</UniqueDeviceID>
</VirtualDisk>
<VirtualDisk schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<DiskCapacity kb="CUR" kxe="false">1</DiskCapacity>
<DiskLabel kb="CUR" kxe="false">None</DiskLabel>
<DiskName kb="CUR" kxe="false">boot_f07b23e2</DiskName>
<VolumeGroup kb="ROR" kxe="false" href="https://9.1.2.3:12443/rest/api/uom/VirtualIOServer/14B854F7-42CE-4FF0-BD57-1D117054E701/VolumeGroup/b6bdbf1f-eddf-3c81-8801-9859eb6fedcb" rel="related"/>
<UniqueDeviceID kb="ROR" kxe="false">0300f8d6de00004b000000014a54555cd9.10</UniqueDeviceID>
</VirtualDisk>
<VirtualDisk schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<DiskCapacity kb="CUR" kxe="false">1</DiskCapacity>
<DiskLabel kb="CUR" kxe="false">None</DiskLabel>
<DiskName kb="CUR" kxe="false">boot_6ec6f2cd</DiskName>
<VolumeGroup kb="ROR" kxe="false" href="https://9.1.2.3:12443/rest/api/uom/VirtualIOServer/14B854F7-42CE-4FF0-BD57-1D117054E701/VolumeGroup/b6bdbf1f-eddf-3c81-8801-9859eb6fedcb" rel="related"/>
<UniqueDeviceID kb="ROR" kxe="false">0300f8d6de00004b000000014a54555cd9.33</UniqueDeviceID>
</VirtualDisk>
<VirtualDisk schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<DiskCapacity kb="CUR" kxe="false">1</DiskCapacity>
<DiskLabel kb="CUR" kxe="false">None</DiskLabel>
<DiskName kb="CUR" kxe="false">boot_9306783f</DiskName>
<VolumeGroup kb="ROR" kxe="false" href="https://9.1.2.3:12443/rest/api/uom/VirtualIOServer/14B854F7-42CE-4FF0-BD57-1D117054E701/VolumeGroup/b6bdbf1f-eddf-3c81-8801-9859eb6fedcb" rel="related"/>
<UniqueDeviceID kb="ROR" kxe="false">0300f8d6de00004b000000014a54555cd9.11</UniqueDeviceID>
</VirtualDisk>
<VirtualDisk schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<DiskCapacity kb="CUR" kxe="false">1</DiskCapacity>
<DiskLabel kb="CUR" kxe="false">None</DiskLabel>
<DiskName kb="CUR" kxe="false">efried0.207216</DiskName>
<VolumeGroup kb="ROR" kxe="false" href="https://9.1.2.3:12443/rest/api/uom/VirtualIOServer/14B854F7-42CE-4FF0-BD57-1D117054E701/VolumeGroup/b6bdbf1f-eddf-3c81-8801-9859eb6fedcb" rel="related"/>
<UniqueDeviceID kb="ROR" kxe="false">0300f8d6de00004b000000014a54555cd9.12</UniqueDeviceID>
</VirtualDisk>
<VirtualDisk schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<DiskCapacity kb="CUR" kxe="false">1</DiskCapacity>
<DiskLabel kb="CUR" kxe="false">None</DiskLabel>
<DiskName kb="CUR" kxe="false">asdf</DiskName>
<VolumeGroup kb="ROR" kxe="false" href="https://9.1.2.3:12443/rest/api/uom/VirtualIOServer/14B854F7-42CE-4FF0-BD57-1D117054E701/VolumeGroup/b6bdbf1f-eddf-3c81-8801-9859eb6fedcb" rel="related"/>
<UniqueDeviceID kb="ROR" kxe="false">0300f8d6de00004b000000014a54555cd9.1</UniqueDeviceID>
</VirtualDisk>
<VirtualDisk schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<DiskCapacity kb="CUR" kxe="false">1</DiskCapacity>
<DiskLabel kb="CUR" kxe="false">None</DiskLabel>
<DiskName kb="CUR" kxe="false">boot_925c5fa3</DiskName>
<VolumeGroup kb="ROR" kxe="false" href="https://9.1.2.3:12443/rest/api/uom/VirtualIOServer/14B854F7-42CE-4FF0-BD57-1D117054E701/VolumeGroup/b6bdbf1f-eddf-3c81-8801-9859eb6fedcb" rel="related"/>
<UniqueDeviceID kb="ROR" kxe="false">0300f8d6de00004b000000014a54555cd9.13</UniqueDeviceID>
</VirtualDisk>
<VirtualDisk schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<DiskCapacity kb="CUR" kxe="false">1</DiskCapacity>
<DiskLabel kb="CUR" kxe="false">None</DiskLabel>
<DiskName kb="CUR" kxe="false">boot_a919a184</DiskName>
<VolumeGroup kb="ROR" kxe="false" href="https://9.1.2.3:12443/rest/api/uom/VirtualIOServer/14B854F7-42CE-4FF0-BD57-1D117054E701/VolumeGroup/b6bdbf1f-eddf-3c81-8801-9859eb6fedcb" rel="related"/>
<UniqueDeviceID kb="ROR" kxe="false">0300f8d6de00004b000000014a54555cd9.3</UniqueDeviceID>
</VirtualDisk>
<VirtualDisk schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<DiskCapacity kb="CUR" kxe="false">10</DiskCapacity>
<DiskLabel kb="CUR" kxe="false">None</DiskLabel>
<DiskName kb="CUR" kxe="false">aix_disk1</DiskName>
<VolumeGroup kb="ROR" kxe="false" href="https://9.1.2.3:12443/rest/api/uom/VirtualIOServer/14B854F7-42CE-4FF0-BD57-1D117054E701/VolumeGroup/b6bdbf1f-eddf-3c81-8801-9859eb6fedcb" rel="related"/>
<UniqueDeviceID kb="ROR" kxe="false">0300f8d6de00004b000000014a54555cd9.14</UniqueDeviceID>
</VirtualDisk>
<VirtualDisk schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<DiskCapacity kb="CUR" kxe="false">10</DiskCapacity>
<DiskLabel kb="CUR" kxe="false">None</DiskLabel>
<DiskName kb="CUR" kxe="false">aix_disk2</DiskName>
<VolumeGroup kb="ROR" kxe="false" href="https://9.1.2.3:12443/rest/api/uom/VirtualIOServer/14B854F7-42CE-4FF0-BD57-1D117054E701/VolumeGroup/b6bdbf1f-eddf-3c81-8801-9859eb6fedcb" rel="related"/>
<UniqueDeviceID kb="ROR" kxe="false">0300f8d6de00004b000000014a54555cd9.15</UniqueDeviceID>
</VirtualDisk>
<VirtualDisk schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<DiskCapacity kb="CUR" kxe="false">2</DiskCapacity>
<DiskLabel kb="CUR" kxe="false">None</DiskLabel>
<DiskName kb="CUR" kxe="false">asdf2</DiskName>
<VolumeGroup kb="ROR" kxe="false" href="https://9.1.2.3:12443/rest/api/uom/VirtualIOServer/14B854F7-42CE-4FF0-BD57-1D117054E701/VolumeGroup/b6bdbf1f-eddf-3c81-8801-9859eb6fedcb" rel="related"/>
<UniqueDeviceID kb="ROR" kxe="false">0300f8d6de00004b000000014a54555cd9.4</UniqueDeviceID>
</VirtualDisk>
<VirtualDisk schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<DiskCapacity kb="CUR" kxe="false">1</DiskCapacity>
<DiskLabel kb="CUR" kxe="false">None</DiskLabel>
<DiskName kb="CUR" kxe="false">boot_30a56789</DiskName>
<VolumeGroup kb="ROR" kxe="false" href="https://9.1.2.3:12443/rest/api/uom/VirtualIOServer/14B854F7-42CE-4FF0-BD57-1D117054E701/VolumeGroup/b6bdbf1f-eddf-3c81-8801-9859eb6fedcb" rel="related"/>
<UniqueDeviceID kb="ROR" kxe="false">0300f8d6de00004b000000014a54555cd9.5</UniqueDeviceID>
</VirtualDisk>
<VirtualDisk schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<DiskCapacity kb="CUR" kxe="false">1</DiskCapacity>
<DiskLabel kb="CUR" kxe="false">None</DiskLabel>
<DiskName kb="CUR" kxe="false">boot_26610873</DiskName>
<VolumeGroup kb="ROR" kxe="false" href="https://9.1.2.3:12443/rest/api/uom/VirtualIOServer/14B854F7-42CE-4FF0-BD57-1D117054E701/VolumeGroup/b6bdbf1f-eddf-3c81-8801-9859eb6fedcb" rel="related"/>
<UniqueDeviceID kb="ROR" kxe="false">0300f8d6de00004b000000014a54555cd9.16</UniqueDeviceID>
</VirtualDisk>
<VirtualDisk schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<DiskCapacity kb="CUR" kxe="false">1</DiskCapacity>
<DiskLabel kb="CUR" kxe="false">None</DiskLabel>
<DiskName kb="CUR" kxe="false">boot_42364069</DiskName>
<VolumeGroup kb="ROR" kxe="false" href="https://9.1.2.3:12443/rest/api/uom/VirtualIOServer/14B854F7-42CE-4FF0-BD57-1D117054E701/VolumeGroup/b6bdbf1f-eddf-3c81-8801-9859eb6fedcb" rel="related"/>
<UniqueDeviceID kb="ROR" kxe="false">0300f8d6de00004b000000014a54555cd9.6</UniqueDeviceID>
</VirtualDisk>
<VirtualDisk schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<DiskCapacity kb="CUR" kxe="false">1</DiskCapacity>
<DiskLabel kb="CUR" kxe="false">None</DiskLabel>
<DiskName kb="CUR" kxe="false">boot_c3f7b1e7</DiskName>
<VolumeGroup kb="ROR" kxe="false" href="https://9.1.2.3:12443/rest/api/uom/VirtualIOServer/14B854F7-42CE-4FF0-BD57-1D117054E701/VolumeGroup/b6bdbf1f-eddf-3c81-8801-9859eb6fedcb" rel="related"/>
<UniqueDeviceID kb="ROR" kxe="false">0300f8d6de00004b000000014a54555cd9.17</UniqueDeviceID>
</VirtualDisk>
<VirtualDisk schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<DiskCapacity kb="CUR" kxe="false">1</DiskCapacity>
<DiskLabel kb="CUR" kxe="false">None</DiskLabel>
<DiskName kb="CUR" kxe="false">boot_96654a43</DiskName>
<VolumeGroup kb="ROR" kxe="false" href="https://9.1.2.3:12443/rest/api/uom/VirtualIOServer/14B854F7-42CE-4FF0-BD57-1D117054E701/VolumeGroup/b6bdbf1f-eddf-3c81-8801-9859eb6fedcb" rel="related"/>
<UniqueDeviceID kb="ROR" kxe="false">0300f8d6de00004b000000014a54555cd9.7</UniqueDeviceID>
</VirtualDisk>
<VirtualDisk schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<DiskCapacity kb="CUR" kxe="false">1</DiskCapacity>
<DiskLabel kb="CUR" kxe="false">None</DiskLabel>
<DiskName kb="CUR" kxe="false">boot_1ecdfefc</DiskName>
<VolumeGroup kb="ROR" kxe="false" href="https://9.1.2.3:12443/rest/api/uom/VirtualIOServer/14B854F7-42CE-4FF0-BD57-1D117054E701/VolumeGroup/b6bdbf1f-eddf-3c81-8801-9859eb6fedcb" rel="related"/>
<UniqueDeviceID kb="ROR" kxe="false">0300f8d6de00004b000000014a54555cd9.18</UniqueDeviceID>
</VirtualDisk>
<VirtualDisk schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<DiskCapacity kb="CUR" kxe="false">1</DiskCapacity>
<DiskLabel kb="CUR" kxe="false">None</DiskLabel>
<DiskName kb="CUR" kxe="false">boot_b2460263</DiskName>
<VolumeGroup kb="ROR" kxe="false" href="https://9.1.2.3:12443/rest/api/uom/VirtualIOServer/14B854F7-42CE-4FF0-BD57-1D117054E701/VolumeGroup/b6bdbf1f-eddf-3c81-8801-9859eb6fedcb" rel="related"/>
<UniqueDeviceID kb="ROR" kxe="false">0300f8d6de00004b000000014a54555cd9.19</UniqueDeviceID>
</VirtualDisk>
<VirtualDisk schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<DiskCapacity kb="CUR" kxe="false">1</DiskCapacity>
<DiskLabel kb="CUR" kxe="false">None</DiskLabel>
<DiskName kb="CUR" kxe="false">boot_bef997cd</DiskName>
<VolumeGroup kb="ROR" kxe="false" href="https://9.1.2.3:12443/rest/api/uom/VirtualIOServer/14B854F7-42CE-4FF0-BD57-1D117054E701/VolumeGroup/b6bdbf1f-eddf-3c81-8801-9859eb6fedcb" rel="related"/>
<UniqueDeviceID kb="ROR" kxe="false">0300f8d6de00004b000000014a54555cd9.8</UniqueDeviceID>
</VirtualDisk>
<VirtualDisk schemaVersion="V1_2_0">
<Metadata>
<Atom/>
</Metadata>
<DiskCapacity kb="CUR" kxe="false">1</DiskCapacity>
<DiskLabel kb="CUR" kxe="false">None</DiskLabel>
<DiskName kb="CUR" kxe="false">boot_21e1de68</DiskName>
<VolumeGroup kb="ROR" kxe="false" href="https://9.1.2.3:12443/rest/api/uom/VirtualIOServer/14B854F7-42CE-4FF0-BD57-1D117054E701/VolumeGroup/b6bdbf1f-eddf-3c81-8801-9859eb6fedcb" rel="related"/>
<UniqueDeviceID kb="ROR" kxe="false">0300f8d6de00004b000000014a54555cd9.9</UniqueDeviceID>
</VirtualDisk>
</VirtualDisks>
</VolumeGroup:VolumeGroup>
</content>
</entry>
END OF SECTION}

@ -24,6 +24,8 @@ from nova_powervm.virt.powervm import media as m
VOL_GRP_DATA = 'fake_volume_group.txt'
VOL_GRP_NOVG_DATA = 'fake_volume_group_no_vg.txt'
VOL_GRP_SING_DATA = 'fake_single_vol_group.txt'
FILE_FEED = 'fake_file_feed.txt'
class TestConfigDrivePowerVM(test.TestCase):
@ -43,6 +45,8 @@ class TestConfigDrivePowerVM(test.TestCase):
self.vol_grp_resp = resp(VOL_GRP_DATA)
self.vol_grp_novg_resp = resp(VOL_GRP_NOVG_DATA)
self.vol_grp_sing_resp = resp(VOL_GRP_SING_DATA)
self.file_feed_resp = resp(FILE_FEED)
@mock.patch('nova_powervm.virt.powervm.media.ConfigDrivePowerVM.'
'_validate_vopt_vg')
@ -90,6 +94,22 @@ class TestConfigDrivePowerVM(test.TestCase):
self.assertIsNotNone(resp)
self.assertTrue(mock_upld.called)
@mock.patch('pypowervm.adapter.Adapter')
@mock.patch('nova_powervm.virt.powervm.media.ConfigDrivePowerVM.'
'_validate_vopt_vg')
def test_dlt_cfg_drv_vopt(self, m_validate, m_adpt):
# Set up the data
file_to_del = 'asdcv_3bc2b715_userID_config.iso'
m_adpt.read.side_effect = [self.vol_grp_sing_resp, self.file_feed_resp]
# Run the deletes.
cfg_dr_builder = m.ConfigDrivePowerVM(m_adpt, 'fake_host', 'fake_vios')
cfg_dr_builder.dlt_cfg_drv_vopt(file_to_del)
# Make sure the update and delete were called only once.
self.assertEqual(1, m_adpt.update.call_count)
self.assertEqual(1, m_adpt.delete.call_count)
@mock.patch('pypowervm.adapter.Adapter')
def test_validate_opt_vg(self, mock_adpt):
mock_adpt.read.return_value = self.vol_grp_resp

@ -18,6 +18,7 @@ import abc
from nova.api.metadata import base as instance_metadata
from nova.i18n import _LE
from nova.i18n import _LI
from nova.i18n import _LW
from nova.openstack.common import log as logging
from nova.virt import configdrive
import os
@ -26,6 +27,7 @@ from oslo.config import cfg
from pypowervm.jobs import upload_lv
from pypowervm.wrappers import constants as pvmc
from pypowervm.wrappers import vios_file
from pypowervm.wrappers import virtual_io_server as vios_w
from pypowervm.wrappers import volume_group as vg
@ -109,6 +111,9 @@ class ConfigDrivePowerVM(object):
:param network_info: The network_info from the nova spawn method.
:param lpar_uuid: The UUID of the client LPAR
:param admin_pass: Optional password to inject for the VM.
:returns: The VirtualSCSIMapping wrapper that can be added to the VIOS
to attach it to the VM.
"""
iso_path, file_name = self._create_cfg_dr_iso(instance, injected_files,
network_info, admin_pass)
@ -127,6 +132,68 @@ class ConfigDrivePowerVM(object):
lpar_uuid, file_name)
return vios_w.VirtualSCSIMapping(elem)
def dlt_cfg_drv_vopt(self, file_name):
"""Deletes the config drive from the system.
Prior to calling this method, the config drive must be detached from
the VM.
Will delete the virtual optical media, as well as the file that backs
it.
If the file can not be found, the method completes without error.
:param file_name: The name of the media to remove off of the system.
"""
# Load the latest volume group
resp = self.adapter.read(vios_w.VIO_ROOT, root_id=self.vios_uuid,
child_type=vg.VG_ROOT,
child_id=CONF.vopt_media_volume_group)
vol_grp = vg.VolumeGroup.load_from_response(resp)
# Now, find the vopt in the vg and remove it from the list
vmedia_repo = None
optical_media = None
vopt_media = None
for vmedia in vol_grp.get_vmedia_repos():
optical_media = vmedia.get_optical_media()
for vopt in optical_media:
if vopt.media_name == file_name:
vmedia_repo = vmedia
vopt_media = vopt
break
if vopt_media is None:
LOG.info(_LI("Virtual Optical %(file_name)s was not found for "
"deletion.") % {'file_name': file_name})
return
# Remove the entry from the wrapper and then do an update
optical_media.remove(vopt_media)
vmedia_repo.set_optical_media(optical_media)
self.adapter.update(vol_grp._element, vol_grp.etag, vios_w.VIO_ROOT,
root_id=self.vios_uuid, child_type=vg.VG_ROOT,
child_id=CONF.vopt_media_volume_group)
# Now we need to delete the file. Unfortunately, we have to find the
# file as the vopt media doesn't point us to the file directly.
# So we have to load all the files (pretty quick) and then find
# the one to delete.
#
# Should look at optimizations that can be made.
file_feed_resp = self.adapter.read(vios_file.FILE_ROOT, service='web')
file_feed = vios_file.File.load_from_response(file_feed_resp)
for v_file in file_feed:
if v_file.file_name == file_name:
self.adapter.delete(vios_file.FILE_ROOT, root_id=v_file.uuid,
service='web')
return
# If we made it here, the file wasn't actually deleted, but vopt was.
LOG.warn(_LW("Virtual Optical for %(file_name)s was deleted, but the "
"corresponding file was not found to be deleted.")
% {'file_name': file_name})
def _upload_lv(self, iso_path, file_name, file_size):
with open(iso_path, 'rb') as d_stream:
upload_lv.upload_vopt(self.adapter, self.vios_uuid, d_stream,