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

Reply via email to