Greg Padgett has uploaded a new change for review. Change subject: WIP core, restapi: cloud-init [2/4] - custom volume id in VM Payload ......................................................................
WIP core, restapi: cloud-init [2/4] - custom volume id in VM Payload Change required for cloud-init integration: allow disks created for VM payloads to have custom volume labels. Change-Id: I30a3be934869c62ed4cdd9942e7fe17af67572e0 Signed-off-by: Greg Padgett <[email protected]> --- M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmPayload.java M backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd M backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml M backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmMapper.java 4 files changed, 25 insertions(+), 7 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/49/14349/1 diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmPayload.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmPayload.java index 247a192..4417c9d 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmPayload.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmPayload.java @@ -12,13 +12,16 @@ public class VmPayload implements Serializable { private static final long serialVersionUID = -3665087594884425768L; private static String SpecParamsPayload = "vmPayload"; + private static String SpecParamsVolumeIdType = "volId"; private static String SpecParamsFileType = "file"; private VmDeviceType type; + private String volumeId; private Map<String, String> files; // file data is base64-encoded public VmPayload() { this.type = VmDeviceType.CDROM; + this.volumeId = null; this.files = new HashMap<String, String>(); } @@ -27,6 +30,7 @@ this.type = type; Map<String, Object> payload = (Map<String, Object>)specParams.get(SpecParamsPayload); + this.volumeId = (String)payload.get(SpecParamsVolumeIdType); this.files = (Map<String, String>)payload.get(SpecParamsFileType); } @@ -46,6 +50,14 @@ this.type = type; } + public String getVolumeId() { + return this.volumeId; + } + + public void setVolumeId(String volumeId) { + this.volumeId = volumeId; + } + /** * Retrieve a map of files in this payload. The map is always initialized, * and can be updated to add/remove files to/from the payload. @@ -59,12 +71,15 @@ public Map<String, Object> getSpecParams() { // function produce something like that: - // vmPayload={file:{filename:content,filename2:content2,...}} + // vmPayload={volumeId:volume-id,file:{filename:content,filename2:content2,...}} Map<String, Object> specParams = new HashMap<String, Object>(); - Map<String, Object> fileTypeList = new HashMap<String, Object>(); + Map<String, Object> payload = new HashMap<String, Object>(); - specParams.put(SpecParamsPayload, fileTypeList); - fileTypeList.put(SpecParamsFileType, files); + specParams.put(SpecParamsPayload, payload); + if (volumeId != null) { + payload.put(SpecParamsVolumeIdType, volumeId); + } + payload.put(SpecParamsFileType, files); return specParams; } diff --git a/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd b/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd index 1ad8540..903bf7d 100644 --- a/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd +++ b/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd @@ -2041,6 +2041,7 @@ </xs:appinfo> </xs:annotation> </xs:attribute> + <xs:attribute name="volume_id" type="xs:string"/> </xs:complexType> <xs:element name="payload_file" type="PayloadFile"/> diff --git a/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml b/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml index 0cfe282..992c27a 100644 --- a/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml +++ b/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml @@ -73,7 +73,7 @@ vm.origin: xs:string vm.os.kernel: xs:string vm.tunnel_migration: xs:boolean - vm.payloads.payload--COLLECTION: {payload.type: 'xs:string', payload.file.name: 'xs:string', payload.file.content: 'xs:string'} + vm.payloads.payload--COLLECTION: {payload.type: 'xs:string', payload.volume_id: 'xs:string', payload.file.name: 'xs:string', payload.file.content: 'xs:string'} vm.cpu.cpu_tune.vcpu_pin--COLLECTION: {vcpu_pin.vcpu: 'xs:int', vcpu_pin.cpu_set: 'xs:string'} urlparams: {} headers: @@ -117,7 +117,7 @@ vm.os.kernel: xs:string vm.disks.clone: xs:boolean vm.tunnel_migration: xs:boolean - vm.payloads.payload--COLLECTION: {payload.type: 'xs:string', payload.file.name: 'xs:string', payload.file.content: 'xs:string'} + vm.payloads.payload--COLLECTION: {payload.type: 'xs:string', payload.volume_id: 'xs:string', payload.file.name: 'xs:string', payload.file.content: 'xs:string'} vm.cpu.cpu_tune.vcpu_pin--COLLECTION: {vcpu_pin.vcpu: 'xs:int', vcpu_pin.cpu_set: 'xs:string'} # the following signature is for clone VM from a Snapshot - requires the Snapshot ID - mandatoryArguments: {vm.name: 'xs:string', vm.template.id|name: 'xs:string', vm.cluster.id|name: 'xs:string', @@ -152,7 +152,7 @@ vm.origin: xs:string vm.os.kernel: xs:string vm.tunnel_migration: xs:boolean - vm.payloads.payload--COLLECTION: {payload.type: 'xs:string', payload.file.name: 'xs:string', payload.file.content: 'xs:string'} + vm.payloads.payload--COLLECTION: {payload.type: 'xs:string', payload.volume_id: 'xs:string', payload.file.name: 'xs:string', payload.file.content: 'xs:string'} vm.cpu.cpu_tune.vcpu_pin--COLLECTION: {vcpu_pin.vcpu: 'xs:int', vcpu_pin.cpu_set: 'xs:string'} urlparams: {} headers: diff --git a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmMapper.java b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmMapper.java index 84f9f86..822bada 100644 --- a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmMapper.java +++ b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmMapper.java @@ -919,6 +919,7 @@ model.setType(deviceType.value()); } } + model.setVolumeId(entity.getVolumeId()); for (Map.Entry<String, String> entry : entity.getFiles().entrySet()) { PayloadFile file = new PayloadFile(); file.setName(entry.getKey()); @@ -939,6 +940,7 @@ entity.setType(map(deviceType, null)); } } + entity.setVolumeId(model.getVolumeId()); if (model.getFile() != null) { for (PayloadFile file : model.getFile()) { entity.getFiles().put(file.getName(), file.getContent()); -- To view, visit http://gerrit.ovirt.org/14349 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I30a3be934869c62ed4cdd9942e7fe17af67572e0 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Greg Padgett <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
