Implement config drive build/attach on spawn
Provides the config drive build and subsequent attach to the VM. This is a non-optimized version in terms of grouping together VIOS updates. Optimization will occur within another changeset. This does not yet handle the rollback capabilities. That will be handled in another change set. Change-Id: Id885a696bc854a9f94f6d913aeda197f4d7cd1a2
This commit is contained in:
parent
05d2f314ec
commit
5a48a29b5c
|
@ -0,0 +1,539 @@
|
|||
# Copyright 2015 IBM Corp.
|
||||
#
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
####################################################
|
||||
# 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_volume_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{
|
||||
|
||||
|
||||
<feed 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>8070198f-b358-3b26-a144-1b268cf6f8d4</id>
|
||||
<updated>2015-01-22T04:15:33.346Z</updated>
|
||||
<link rel="SELF" href="https://9.1.2.3:12443/rest/api/uom/VirtualIOServer/14B854F7-42CE-4FF0-BD57-1D117054E701/VolumeGroup"/>
|
||||
<link rel="MANAGEMENT_CONSOLE" href="https://9.1.2.3:12443/rest/api/uom/ManagementConsole/6c1b9d4a-afc1-3cef-ae54-1977d908fda4"/>
|
||||
<generator>IBM Power Systems Management Console</generator>
|
||||
<entry>
|
||||
<id>1e46bbfd-73b6-3c2a-aeab-a1d3f065e92f</id>
|
||||
<title>VolumeGroup</title>
|
||||
<published>2015-01-22T04:15:33.810Z</published>
|
||||
<link rel="SELF" href="https://9.1.2.3:12443/rest/api/uom/VirtualIOServer/14B854F7-42CE-4FF0-BD57-1D117054E701/VolumeGroup/1e46bbfd-73b6-3c2a-aeab-a1d3f065e92f"/>
|
||||
<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/">-762288609</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>1e46bbfd-73b6-3c2a-aeab-a1d3f065e92f</AtomID>
|
||||
<AtomCreated>1421883668662</AtomCreated>
|
||||
</Atom>
|
||||
</Metadata>
|
||||
<AvailableSize kb="ROR" kxe="false">1033</AvailableSize>
|
||||
<FreeSpace kxe="false" kb="ROR">1033</FreeSpace>
|
||||
<GroupCapacity kb="CUR" kxe="false">1064</GroupCapacity>
|
||||
<GroupName kb="CUR" kxe="false">rootvg</GroupName>
|
||||
<GroupSerialID kb="ROR" kxe="false">00f8d6de00004b000000014a53505d2f</GroupSerialID>
|
||||
<MaximumLogicalVolumes kb="ROR" kxe="false">256</MaximumLogicalVolumes>
|
||||
<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-L205D828300-L0</LocationCode>
|
||||
<ReservePolicy kb="CUD" kxe="false">NoReserve</ReservePolicy>
|
||||
<ReservePolicyAlgorithm kb="CUD" kxe="false">Failover</ReservePolicyAlgorithm>
|
||||
<UniqueDeviceID kb="ROR" kxe="false">01MUlCTSAgICAgSVBSLTAgICA1RDgyODMwMDAwMDAwMDIw</UniqueDeviceID>
|
||||
<AvailableForUsage kb="CUD" kxe="false">false</AvailableForUsage>
|
||||
<VolumeCapacity kb="CUR" kxe="false">1089592</VolumeCapacity>
|
||||
<VolumeName kb="CUR" kxe="false">hdisk0</VolumeName>
|
||||
<VolumeState kb="ROR" kxe="false">active</VolumeState>
|
||||
<VolumeUniqueID kb="ROR" kxe="false">391BIBMIPR-0 5D8283000000002010IPR-0 5D82830003IBMsas</VolumeUniqueID>
|
||||
<IsFibreChannelBacked kb="ROR" kxe="false">false</IsFibreChannelBacked>
|
||||
</PhysicalVolume>
|
||||
</PhysicalVolumes>
|
||||
<UniqueDeviceID kb="ROR" kxe="false">0400f8d6de00004b000000014a53505d2f</UniqueDeviceID>
|
||||
<VirtualDisks kb="CUD" kxe="false" schemaVersion="V1_2_0">
|
||||
<Metadata>
|
||||
<Atom/>
|
||||
</Metadata>
|
||||
</VirtualDisks>
|
||||
</VolumeGroup:VolumeGroup>
|
||||
</content>
|
||||
</entry>
|
||||
<entry>
|
||||
<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>
|
||||
</feed>
|
||||
|
||||
|
||||
END OF SECTION}
|
|
@ -0,0 +1,42 @@
|
|||
# Copyright 2015 IBM Corp.
|
||||
#
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
####################################################
|
||||
# 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_volume_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{
|
||||
|
||||
|
||||
<feed 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>8070198f-b358-3b26-a144-1b268cf6f8d4</id>
|
||||
<updated>2015-01-22T04:15:33.346Z</updated>
|
||||
<link rel="SELF" href="https://9.1.2.3:12443/rest/api/uom/VirtualIOServer/14B854F7-42CE-4FF0-BD57-1D117054E701/VolumeGroup"/>
|
||||
<link rel="MANAGEMENT_CONSOLE" href="https://9.1.2.3:12443/rest/api/uom/ManagementConsole/6c1b9d4a-afc1-3cef-ae54-1977d908fda4"/>
|
||||
<generator>IBM Power Systems Management Console</generator>
|
||||
</feed>
|
||||
|
||||
|
||||
END OF SECTION}
|
|
@ -123,13 +123,14 @@ class TestPowerVMDriver(test.TestCase):
|
|||
@mock.patch('nova_powervm.virt.powervm.host.find_entry_by_mtm_serial')
|
||||
@mock.patch('nova_powervm.virt.powervm.vm.crt_lpar')
|
||||
@mock.patch('nova_powervm.virt.powervm.vm.UUIDCache')
|
||||
@mock.patch('nova.virt.configdrive.required_by')
|
||||
@mock.patch('nova.context.get_admin_context')
|
||||
@mock.patch('nova.objects.flavor.Flavor.get_by_id')
|
||||
@mock.patch('nova_powervm.virt.powervm.localdisk.LocalStorage')
|
||||
@mock.patch('pypowervm.jobs.power.power_on')
|
||||
def test_spawn_ops(self, mock_pwron, mock_disk, mock_get_flv, mock_get_ctx,
|
||||
mock_uuidcache, mock_crt, mock_find, mock_apt,
|
||||
mock_sess):
|
||||
mock_cfg_drv, mock_uuidcache, mock_crt, mock_find,
|
||||
mock_apt, mock_sess):
|
||||
|
||||
"""Validates the PowerVM driver operations."""
|
||||
drv = driver.PowerVMDriver(fake.FakeVirtAPI())
|
||||
|
@ -141,6 +142,51 @@ class TestPowerVMDriver(test.TestCase):
|
|||
my_flavor = FakeFlavor()
|
||||
mock_get_flv.return_value = my_flavor
|
||||
mock_crt.return_value = mock.MagicMock()
|
||||
mock_cfg_drv.return_value = False
|
||||
|
||||
# Invoke the method.
|
||||
drv.spawn('context', inst, mock.Mock(),
|
||||
'injected_files', 'admin_password')
|
||||
|
||||
# Create LPAR was called
|
||||
mock_crt.assert_called_with(mock_apt, drv.host_uuid,
|
||||
inst, my_flavor)
|
||||
# Power on was called
|
||||
self.assertTrue(mock_pwron.called)
|
||||
|
||||
@mock.patch('pypowervm.adapter.Session')
|
||||
@mock.patch('pypowervm.adapter.Adapter')
|
||||
@mock.patch('nova_powervm.virt.powervm.host.find_entry_by_mtm_serial')
|
||||
@mock.patch('nova_powervm.virt.powervm.vm.crt_lpar')
|
||||
@mock.patch('nova_powervm.virt.powervm.media.ConfigDrivePowerVM.'
|
||||
'create_cfg_drv_vopt')
|
||||
@mock.patch('nova_powervm.virt.powervm.media.ConfigDrivePowerVM.'
|
||||
'_validate_vopt_vg')
|
||||
@mock.patch('nova_powervm.virt.powervm.vios.add_vscsi_mapping')
|
||||
@mock.patch('nova_powervm.virt.powervm.vm.UUIDCache')
|
||||
@mock.patch('nova.virt.configdrive.required_by')
|
||||
@mock.patch('nova.context.get_admin_context')
|
||||
@mock.patch('nova.objects.flavor.Flavor.get_by_id')
|
||||
@mock.patch('nova_powervm.virt.powervm.localdisk.LocalStorage')
|
||||
@mock.patch('pypowervm.jobs.power.power_on')
|
||||
def test_spawn_with_cfg(self, mock_pwron, mock_disk, mock_get_flv,
|
||||
mock_get_ctx, mock_cfg_drv, mock_val_vopt,
|
||||
mock_vios_vscsi, mock_uuidcache, mock_cfg_vopt,
|
||||
mock_crt, mock_find, mock_apt, mock_sess):
|
||||
|
||||
"""Validates the PowerVM spawn w/ config drive operations."""
|
||||
drv = driver.PowerVMDriver(fake.FakeVirtAPI())
|
||||
drv.init_host('FakeHost')
|
||||
drv.adapter = mock_apt
|
||||
|
||||
# Set up the mocks to the tasks.
|
||||
inst = FakeInstance()
|
||||
my_flavor = FakeFlavor()
|
||||
mock_get_flv.return_value = my_flavor
|
||||
mock_crt.return_value = mock.MagicMock()
|
||||
mock_cfg_drv.return_value = True
|
||||
mock_cfg_vopt.return_value = mock.MagicMock()
|
||||
mock_val_vopt.return_value = mock.MagicMock()
|
||||
|
||||
# Invoke the method.
|
||||
drv.spawn('context', inst, mock.Mock(),
|
||||
|
@ -158,15 +204,16 @@ class TestPowerVMDriver(test.TestCase):
|
|||
@mock.patch('nova_powervm.virt.powervm.vm.crt_lpar')
|
||||
@mock.patch('nova_powervm.virt.powervm.vm.dlt_lpar')
|
||||
@mock.patch('nova_powervm.virt.powervm.vm.UUIDCache')
|
||||
@mock.patch('nova.virt.configdrive.required_by')
|
||||
@mock.patch('nova.context.get_admin_context')
|
||||
@mock.patch('nova.objects.flavor.Flavor.get_by_id')
|
||||
@mock.patch('nova_powervm.virt.powervm.localdisk.LocalStorage')
|
||||
@mock.patch('pypowervm.jobs.power.power_on')
|
||||
@mock.patch('pypowervm.jobs.power.power_off')
|
||||
def test_spawn_ops_rollback(self, mock_pwroff, mock_pwron, mock_disk,
|
||||
mock_get_flv, mock_get_ctx, mock_uuidcache,
|
||||
mock_dlt, mock_crt, mock_find, mock_apt,
|
||||
mock_sess):
|
||||
mock_get_flv, mock_get_ctx, mock_cfg_drv,
|
||||
mock_uuidcache, mock_dlt, mock_crt, mock_find,
|
||||
mock_apt, mock_sess):
|
||||
"""Validates the PowerVM driver operations. Will do a rollback."""
|
||||
drv = driver.PowerVMDriver(fake.FakeVirtAPI())
|
||||
drv.init_host('FakeHost')
|
||||
|
@ -177,6 +224,7 @@ class TestPowerVMDriver(test.TestCase):
|
|||
my_flavor = FakeFlavor()
|
||||
mock_get_flv.return_value = my_flavor
|
||||
mock_crt.return_value = mock.MagicMock()
|
||||
mock_cfg_drv.return_value = False
|
||||
|
||||
# Make sure power on fails.
|
||||
mock_pwron.side_effect = exc.Forbidden()
|
||||
|
|
|
@ -0,0 +1,106 @@
|
|||
# Copyright 2015 IBM Corp.
|
||||
#
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import mock
|
||||
|
||||
from nova import test
|
||||
import os
|
||||
from pypowervm.tests.wrappers.util import pvmhttp
|
||||
|
||||
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'
|
||||
|
||||
|
||||
class TestConfigDrivePowerVM(test.TestCase):
|
||||
"""Unit Tests for the ConfigDrivePowerVM class.
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super(TestConfigDrivePowerVM, self).setUp()
|
||||
|
||||
# Find directory for response file(s)
|
||||
data_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
data_dir = os.path.join(data_dir, 'data')
|
||||
|
||||
def resp(file_name):
|
||||
file_path = os.path.join(data_dir, file_name)
|
||||
return pvmhttp.load_pvm_resp(file_path).get_response()
|
||||
|
||||
self.vol_grp_resp = resp(VOL_GRP_DATA)
|
||||
self.vol_grp_novg_resp = resp(VOL_GRP_NOVG_DATA)
|
||||
|
||||
@mock.patch('nova_powervm.virt.powervm.media.ConfigDrivePowerVM.'
|
||||
'_validate_vopt_vg')
|
||||
@mock.patch('pypowervm.adapter')
|
||||
@mock.patch('nova.api.metadata.base.InstanceMetadata')
|
||||
@mock.patch('nova.virt.configdrive.ConfigDriveBuilder.make_drive')
|
||||
def test_crt_cfg_dr_iso(self, mock_mkdrv, mock_meta, mock_adpt,
|
||||
mock_vopt_valid):
|
||||
"""Validates that the image creation method works."""
|
||||
cfg_dr_builder = m.ConfigDrivePowerVM(mock_adpt, 'fake_host',
|
||||
'fake_vios')
|
||||
mock_instance = mock.MagicMock()
|
||||
mock_instance.name = 'fake-instance'
|
||||
mock_files = mock.MagicMock()
|
||||
mock_net = mock.MagicMock()
|
||||
iso_path, file_name = cfg_dr_builder._create_cfg_dr_iso(mock_instance,
|
||||
mock_files,
|
||||
mock_net)
|
||||
self.assertEqual('fake_instance_config.iso', file_name)
|
||||
self.assertEqual('/tmp/cfgdrv/fake_instance_config.iso', iso_path)
|
||||
|
||||
@mock.patch('nova_powervm.virt.powervm.media.ConfigDrivePowerVM.'
|
||||
'_create_cfg_dr_iso')
|
||||
@mock.patch('nova_powervm.virt.powervm.media.ConfigDrivePowerVM.'
|
||||
'_validate_vopt_vg')
|
||||
@mock.patch('os.path.getsize')
|
||||
@mock.patch('os.remove')
|
||||
@mock.patch('nova_powervm.virt.powervm.media.ConfigDrivePowerVM.'
|
||||
'_upload_lv')
|
||||
@mock.patch('pypowervm.wrappers.virtual_io_server.crt_scsi_map_to_vopt')
|
||||
@mock.patch('pypowervm.adapter')
|
||||
def test_crt_cfg_drv_vopt(self, mock_adpt, mock_vio_w, mock_upld, mock_rm,
|
||||
mock_size, mock_validate, mock_cfg_iso):
|
||||
# Mock Returns
|
||||
mock_cfg_iso.return_value = '/tmp/cfgdrv/fake.iso', 'fake.iso'
|
||||
mock_size.return_value = 10000
|
||||
|
||||
# Run
|
||||
cfg_dr_builder = m.ConfigDrivePowerVM(mock_adpt, 'fake_host',
|
||||
'fake_vios')
|
||||
resp = cfg_dr_builder.create_cfg_drv_vopt(mock.MagicMock(),
|
||||
mock.MagicMock(),
|
||||
mock.MagicMock(),
|
||||
'fake_lpar')
|
||||
self.assertIsNotNone(resp)
|
||||
self.assertTrue(mock_upld.called)
|
||||
|
||||
@mock.patch('pypowervm.adapter.Adapter')
|
||||
def test_validate_opt_vg(self, mock_adpt):
|
||||
mock_adpt.read.return_value = self.vol_grp_resp
|
||||
cfg_dr_builder = m.ConfigDrivePowerVM(mock_adpt, 'fake_host',
|
||||
'fake_vios')
|
||||
self.assertEqual('1e46bbfd-73b6-3c2a-aeab-a1d3f065e92f',
|
||||
cfg_dr_builder._validate_vopt_vg())
|
||||
|
||||
@mock.patch('pypowervm.adapter.Adapter')
|
||||
def test_validate_opt_vg_fail(self, mock_adpt):
|
||||
mock_adpt.read.return_value = self.vol_grp_novg_resp
|
||||
self.assertRaises(m.NoMediaRepoVolumeGroupFound,
|
||||
m.ConfigDrivePowerVM, mock_adpt, 'fake_host',
|
||||
'fake_vios')
|
|
@ -27,6 +27,19 @@ pvm_opts = [
|
|||
'Value should be between 1 and 255. Represents how '
|
||||
'aggressively LPARs grab CPU when unused cycles are '
|
||||
'available.'),
|
||||
cfg.StrOpt('vopt_media_volume_group',
|
||||
default='rootvg',
|
||||
help='The volume group on the system that should be used '
|
||||
'for the config drive metadata that will be attached '
|
||||
'to VMs.'),
|
||||
cfg.IntOpt('vopt_media_rep_size',
|
||||
default=1,
|
||||
help='The size of the media repository in GB for the metadata '
|
||||
'for config drive.'),
|
||||
cfg.StrOpt('image_meta_local_path',
|
||||
default='/tmp/cfgdrv/',
|
||||
help='The location where the config drive ISO files should be '
|
||||
'built.'),
|
||||
# TODO(kyleh) Re-evaluate these as the auth model evolves.
|
||||
cfg.StrOpt('pvm_host_mtms',
|
||||
default='',
|
||||
|
|
|
@ -20,6 +20,7 @@ from nova import exception
|
|||
from nova.i18n import _LI
|
||||
from nova.objects import flavor as flavor_obj
|
||||
from nova.openstack.common import log as logging
|
||||
from nova.virt import configdrive
|
||||
from nova.virt import driver
|
||||
|
||||
from oslo.config import cfg
|
||||
|
@ -178,6 +179,16 @@ class PowerVMDriver(driver.ComputeDriver):
|
|||
# Connects up the volume to the LPAR
|
||||
flow.add(tf_spawn.tf_connect_vol(self.block_dvr, context, instance))
|
||||
|
||||
# If the config drive is needed, add those steps.
|
||||
if configdrive.required_by(instance):
|
||||
flow.add(tf_spawn.tf_cfg_drive(self.adapter, self.host_uuid,
|
||||
self.vios_uuid, instance,
|
||||
injected_files, network_info,
|
||||
admin_password))
|
||||
flow.add(tf_spawn.tf_connect_cfg_drive(self.adapter, instance,
|
||||
self.vios_uuid,
|
||||
CONF.vios_name))
|
||||
|
||||
# Last step is to power on the system.
|
||||
# Note: If moving to a Graph Flow, will need to change to depend on
|
||||
# the prior step.
|
||||
|
|
|
@ -0,0 +1,174 @@
|
|||
# Copyright 2015 IBM Corp.
|
||||
#
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import abc
|
||||
from nova.api.metadata import base as instance_metadata
|
||||
from nova.i18n import _LE
|
||||
from nova.i18n import _LI
|
||||
from nova.openstack.common import log as logging
|
||||
from nova.virt import configdrive
|
||||
import os
|
||||
|
||||
from oslo.config import cfg
|
||||
|
||||
from pypowervm.jobs import upload_lv
|
||||
from pypowervm.wrappers import constants as pvmc
|
||||
from pypowervm.wrappers import virtual_io_server as vios_w
|
||||
from pypowervm.wrappers import volume_group as vg
|
||||
|
||||
import six
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
CONF = cfg.CONF
|
||||
|
||||
|
||||
@six.add_metaclass(abc.ABCMeta)
|
||||
class AbstractMediaException(Exception):
|
||||
def __init__(self, **kwargs):
|
||||
msg = self.msg_fmt % kwargs
|
||||
super(AbstractMediaException, self).__init__(msg)
|
||||
|
||||
|
||||
class NoMediaRepoVolumeGroupFound(AbstractMediaException):
|
||||
msg_fmt = _LE('Unable to locate the volume group %(vol_grp)s to store the '
|
||||
'virtual optical media within. Since it is not rootvg, the '
|
||||
'volume group must be pre-created on the VIOS.')
|
||||
|
||||
|
||||
class ConfigDrivePowerVM(object):
|
||||
|
||||
def __init__(self, adapter, host_uuid, vios_uuid):
|
||||
"""Creates the config drive manager for PowerVM.
|
||||
|
||||
:param adapter: The pypowervm adapter to communicate with the system.
|
||||
:param host_uuid: The UUID of the host system.
|
||||
:param vios_uuid: The VIOS UUID that contains the media repo.
|
||||
"""
|
||||
self.adapter = adapter
|
||||
self.host_uuid = host_uuid
|
||||
self.vios_uuid = vios_uuid
|
||||
self.vg_uuid = self._validate_vopt_vg()
|
||||
|
||||
def _create_cfg_dr_iso(self, instance, injected_files, network_info,
|
||||
admin_pass=None):
|
||||
"""Creates an ISO file that contains the injected files. Used for
|
||||
config drive.
|
||||
|
||||
:param instance: The VM instance from OpenStack.
|
||||
:param injected_files: A list of file paths that will be injected into
|
||||
the ISO.
|
||||
:param network_info: The network_info from the nova spawn method.
|
||||
:param admin_password: Optional password to inject for the VM.
|
||||
:return iso_path: The path to the ISO
|
||||
:return file_name: The file name for the ISO
|
||||
"""
|
||||
LOG.info(_LI("Creating config drive for instance: %s") % instance.name)
|
||||
extra_md = {}
|
||||
if admin_pass is not None:
|
||||
extra_md['admin_pass'] = admin_pass
|
||||
|
||||
inst_md = instance_metadata.InstanceMetadata(instance,
|
||||
content=injected_files,
|
||||
extra_md=extra_md,
|
||||
network_info=network_info)
|
||||
|
||||
# Make sure the path exists.
|
||||
if not os.path.exists(CONF.image_meta_local_path):
|
||||
os.mkdir(CONF.image_meta_local_path)
|
||||
|
||||
file_name = '%s_config.iso' % instance.name.replace('-', '_')
|
||||
iso_path = os.path.join(CONF.image_meta_local_path, file_name)
|
||||
with configdrive.ConfigDriveBuilder(instance_md=inst_md) as cdb:
|
||||
LOG.info(_LI("Config drive ISO being built for instance %(inst)s "
|
||||
"building to path %(iso_path)s.") %
|
||||
{'inst': instance.name, 'iso_path': iso_path})
|
||||
cdb.make_drive(iso_path)
|
||||
return iso_path, file_name
|
||||
|
||||
def create_cfg_drv_vopt(self, instance, injected_files, network_info,
|
||||
lpar_uuid, admin_pass=None):
|
||||
"""Creates the config drive virtual optical. Does not attach to VM.
|
||||
|
||||
:param instance: The VM instance from OpenStack.
|
||||
:param injected_files: A list of file paths that will be injected into
|
||||
the ISO.
|
||||
: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.
|
||||
"""
|
||||
iso_path, file_name = self._create_cfg_dr_iso(instance, injected_files,
|
||||
network_info, admin_pass)
|
||||
|
||||
# Upload the media
|
||||
file_size = os.path.getsize(iso_path)
|
||||
self._upload_lv(iso_path, file_name, file_size)
|
||||
|
||||
# Delete the media
|
||||
os.remove(iso_path)
|
||||
|
||||
# Now that it is uploaded, create the vSCSI mappings that link this to
|
||||
# the VM. Don't run the upload as these are batched in a single call
|
||||
# to the VIOS later.
|
||||
elem = vios_w.crt_scsi_map_to_vopt(self.adapter, self.host_uuid,
|
||||
lpar_uuid, file_name)
|
||||
return vios_w.VirtualSCSIMapping(elem)
|
||||
|
||||
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,
|
||||
file_name, file_size)
|
||||
|
||||
def _validate_vopt_vg(self):
|
||||
"""Will ensure that the virtual optical media repository exists.
|
||||
|
||||
This method will be expensive the first time it is run. Should be
|
||||
quick on subsequent restarts. Should be called on startup.
|
||||
|
||||
:return vg_uuid: The Volume Group UUID holding the media repo.
|
||||
"""
|
||||
resp = self.adapter.read(pvmc.VIOS, self.vios_uuid, pvmc.VOL_GROUP)
|
||||
found_vg = None
|
||||
for vg_entry in resp.feed.entries:
|
||||
vol_grp = vg.VolumeGroup(vg_entry)
|
||||
if vol_grp.name == CONF.vopt_media_volume_group:
|
||||
found_vg = vol_grp
|
||||
break
|
||||
|
||||
if found_vg is None:
|
||||
if CONF.vopt_media_volume_group == 'rootvg':
|
||||
# If left at the default of rootvg, we should create it.
|
||||
# TODO(IBM) Need to implement. Need implementation in
|
||||
# pypowervm api.
|
||||
raise NoMediaRepoVolumeGroupFound(
|
||||
vol_grp=CONF.vopt_media_volume_group)
|
||||
else:
|
||||
raise NoMediaRepoVolumeGroupFound(
|
||||
vol_grp=CONF.vopt_media_volume_group)
|
||||
|
||||
# Ensure that there is a virtual optical media repository within it.
|
||||
vmedia_repos = found_vg.get_vmedia_repos()
|
||||
if len(vmedia_repos) == 0:
|
||||
vopt_repo = vg.crt_vmedia_repo('vopt',
|
||||
str(CONF.vopt_media_rep_size))
|
||||
vmedia_repos = [vg.VirtualMediaRepository(vopt_repo)]
|
||||
# TODO(IBM) This fails because its appending at the end...
|
||||
found_vg.set_vmedia_repos(vmedia_repos)
|
||||
self.adapter.update(found_vg._entry.element, resp.headers['etag'],
|
||||
pvmc.VIOS, self.vios_uuid, pvmc.VOL_GROUP,
|
||||
found_vg.uuid)
|
||||
|
||||
return found_vg.uuid
|
|
@ -22,6 +22,8 @@ from pypowervm.wrappers import logical_partition as pvm_lpar
|
|||
|
||||
from taskflow import task
|
||||
|
||||
from nova_powervm.virt.powervm import media
|
||||
from nova_powervm.virt.powervm import vios
|
||||
from nova_powervm.virt.powervm import vm
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
@ -128,6 +130,68 @@ def tf_connect_vol(block_dvr, context, instance):
|
|||
requires=['lpar_crt_resp', 'vol_dev_info'])
|
||||
|
||||
|
||||
def tf_cfg_drive(adapter, host_uuid, vios_uuid, instance, injected_files,
|
||||
network_info, admin_pass):
|
||||
"""Create the Task that creates the config drive.
|
||||
|
||||
Requires the 'lpar_crt_resp'.
|
||||
Provides the 'cfg_drv_vscsi_map' which is an element to later map
|
||||
the vscsi drive.
|
||||
|
||||
:param adapter: The adapter for the pypowervm API
|
||||
:param host_uuid: The host UUID of the system.
|
||||
:param vios_uuid: The VIOS UUID the drive should be put on.
|
||||
:param instance: The nova instance
|
||||
:param injected_files: A list of file paths that will be injected into
|
||||
the ISO.
|
||||
:param network_info: The network_info from the nova spawn method.
|
||||
:param admin_pass: Optional password to inject for the VM.
|
||||
"""
|
||||
|
||||
def _task(adapter, host_uuid, vios_uuid, instance, injected_files,
|
||||
network_info, admin_pass, lpar_crt_resp):
|
||||
LOG.info(_LI('Creating Config Drive for instance: %s') % instance.name)
|
||||
lpar = pvm_lpar.LogicalPartition(lpar_crt_resp.entry)
|
||||
media_builder = media.ConfigDrivePowerVM(adapter, host_uuid, vios_uuid)
|
||||
vscsi_map = media_builder.create_cfg_drv_vopt(instance, injected_files,
|
||||
network_info, admin_pass,
|
||||
lpar.uuid)
|
||||
return vscsi_map
|
||||
|
||||
# TODO(IBM) Need a revert here.
|
||||
return task.FunctorTask(
|
||||
_task, name='cfg_drive',
|
||||
inject={'adapter': adapter, 'host_uuid': host_uuid,
|
||||
'vios_uuid': vios_uuid, 'instance': instance,
|
||||
'injected_files': injected_files,
|
||||
'network_info': network_info, 'admin_pass': admin_pass},
|
||||
requires=['lpar_crt_resp'],
|
||||
provides='cfg_drv_vscsi_map')
|
||||
|
||||
|
||||
def tf_connect_cfg_drive(adapter, instance, vios_uuid, vios_name):
|
||||
"""Create the Task that connects the cfg drive to the instance.
|
||||
|
||||
Requires the 'cfg_drv_vscsi_map'.
|
||||
|
||||
:param adapter: The adapter for the pypowervm API
|
||||
:param instance: The nova instance
|
||||
:param vios_uuid: The VIOS UUID the drive should be put on.
|
||||
:param vios_name: The name of the VIOS that this will be put on.
|
||||
"""
|
||||
def _task(adapter, instance, vios_uuid, vios_name, cfg_drv_vscsi_map):
|
||||
LOG.info(_LI('Attaching Config Drive to instance: %s') % instance.name)
|
||||
vios.add_vscsi_mapping(adapter, vios_uuid, vios_name,
|
||||
cfg_drv_vscsi_map)
|
||||
|
||||
# TODO(IBM) Need a revert here.
|
||||
return task.FunctorTask(
|
||||
_task, name='cfg_drive_scsi_connect',
|
||||
inject={'adapter': adapter, 'instance': instance,
|
||||
'vios_uuid': vios_uuid, 'vios_name': vios_name},
|
||||
requires=['cfg_drv_vscsi_map'])
|
||||
|
||||
|
||||
def tf_power_on(adapter, host_uuid, instance):
|
||||
"""Create the Task for the power on of the LPAR.
|
||||
|
||||
|
|
Loading…
Reference in New Issue