Shahar Havivi has uploaded a new change for review.

Change subject: API: Vm Init - new Feature
......................................................................

API: Vm Init - new Feature

Summry:
This Feature will allow persistent of Windows Sysprep and Cloud-Init
data to the Database. By persisting the data Admin can create a template
with VM-Init data that which will enable initialize VMs with relevant
Data.

Feature page:
http://www.ovirt.org/Features/vm-init-persistent

Change-Id: Ibb5a8fb62df940eabae35c91157920d9b651aa3e
Signed-off-by: Shahar Havivi <[email protected]>
---
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmResource.java
M 
backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/HostNicMapper.java
M 
backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/TemplateMapper.java
M 
backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/VmMapper.java
M 
backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/TemplateMapperTest.java
M 
backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/VmMapperTest.java
6 files changed, 27 insertions(+), 86 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/94/22794/1

diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmResource.java
index a159936..0ae8af1 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmResource.java
@@ -42,7 +42,6 @@
 import org.ovirt.engine.api.restapi.types.VmMapper;
 import org.ovirt.engine.core.common.VdcObjectType;
 import org.ovirt.engine.core.common.action.ChangeVMClusterParameters;
-import org.ovirt.engine.core.common.action.CloudInitParameters;
 import org.ovirt.engine.core.common.action.MigrateVmParameters;
 import org.ovirt.engine.core.common.action.MigrateVmToServerParameters;
 import org.ovirt.engine.core.common.action.MoveVmParameters;
@@ -60,6 +59,7 @@
 import org.ovirt.engine.core.common.businessentities.InitializationType;
 import org.ovirt.engine.core.common.businessentities.VDS;
 import org.ovirt.engine.core.common.businessentities.VDSGroup;
+import org.ovirt.engine.core.common.businessentities.VmInit;
 import org.ovirt.engine.core.common.businessentities.VmStatic;
 import org.ovirt.engine.core.common.interfaces.SearchType;
 import org.ovirt.engine.core.common.queries.GetPermissionsForObjectParameters;
@@ -253,8 +253,8 @@
                     }
                 }
                 params.setInitializationType(InitializationType.CloudInit);
-                ((RunVmOnceParams) params).setCloudInitParameters(
-                        getMapper(CloudInit.class, CloudInitParameters.class)
+                ((RunVmOnceParams) params).setVmInit(
+                        getMapper(CloudInit.class, VmInit.class)
                                 .map(cloudInit, null));
             }
         } else {
diff --git 
a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/HostNicMapper.java
 
b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/HostNicMapper.java
index bc837b5..64bcf74 100644
--- 
a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/HostNicMapper.java
+++ 
b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/HostNicMapper.java
@@ -75,7 +75,7 @@
             }
         }
         if(model.isSetBootProtocol()){
-            NetworkBootProtocol networkBootProtocol = 
map(BootProtocol.fromValue(model.getBootProtocol()), null);
+            NetworkBootProtocol networkBootProtocol = 
map(BootProtocol.fromValue(model.getBootProtocol()), NetworkBootProtocol.NONE);
             if(networkBootProtocol != null){
                 entity.setBootProtocol(networkBootProtocol);
             }
diff --git 
a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/TemplateMapper.java
 
b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/TemplateMapper.java
index 0a3c8d5..20e8ba2 100644
--- 
a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/TemplateMapper.java
+++ 
b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/TemplateMapper.java
@@ -8,7 +8,6 @@
 import org.ovirt.engine.api.model.CpuTopology;
 import org.ovirt.engine.api.model.Display;
 import org.ovirt.engine.api.model.DisplayType;
-import org.ovirt.engine.api.model.Domain;
 import org.ovirt.engine.api.model.HighAvailability;
 import org.ovirt.engine.api.model.OperatingSystem;
 import org.ovirt.engine.api.model.Template;
@@ -136,9 +135,6 @@
                 entity.setVncKeyboardLayout(layout);
             }
         }
-        if (model.isSetDomain() && model.getDomain().isSetName()) {
-            entity.setDomain(model.getDomain().getName());
-        }
         if (model.isSetTimezone()) {
             String timezone = model.getTimezone();
             if (timezone.isEmpty()) {
@@ -251,9 +247,6 @@
                 staticVm.setVncKeyboardLayout(layout);
             }
         }
-        if (model.isSetDomain() && model.getDomain().isSetName()) {
-            staticVm.setDomain(model.getDomain().getName());
-        }
         if (model.isSetTimezone()) {
             staticVm.setTimeZone(model.getTimezone());
         }
@@ -328,11 +321,6 @@
         }
         if (entity.getCreationDate() != null) {
             model.setCreationTime(DateMapper.map(entity.getCreationDate(), 
null));
-        }
-        if (entity.getDomain()!=null && !entity.getDomain().isEmpty()) {
-            Domain domain = new Domain();
-            domain.setName(entity.getDomain());
-            model.setDomain(domain);
         }
         if (entity.getUsbPolicy()!=null) {
             Usb usb = new Usb();
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 ccd5f5b..9228e38 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
@@ -3,7 +3,6 @@
 import static org.ovirt.engine.core.compat.Guid.createGuidFromString;
 
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
@@ -26,7 +25,6 @@
 import org.ovirt.engine.api.model.CustomProperty;
 import org.ovirt.engine.api.model.Display;
 import org.ovirt.engine.api.model.DisplayType;
-import org.ovirt.engine.api.model.Domain;
 import org.ovirt.engine.api.model.File;
 import org.ovirt.engine.api.model.Files;
 import org.ovirt.engine.api.model.GuestInfo;
@@ -39,7 +37,6 @@
 import org.ovirt.engine.api.model.OperatingSystem;
 import org.ovirt.engine.api.model.OsType;
 import org.ovirt.engine.api.model.Payload;
-import org.ovirt.engine.api.model.PayloadEncoding;
 import org.ovirt.engine.api.model.Quota;
 import org.ovirt.engine.api.model.Template;
 import org.ovirt.engine.api.model.Usb;
@@ -55,8 +52,6 @@
 import org.ovirt.engine.api.restapi.utils.CustomPropertiesParser;
 import org.ovirt.engine.api.restapi.utils.GuidUtils;
 import org.ovirt.engine.api.restapi.utils.UsbMapperUtils;
-import org.ovirt.engine.core.common.action.CloudInitParameters;
-import org.ovirt.engine.core.common.action.CloudInitParameters.Attachment;
 import org.ovirt.engine.core.common.action.RunVmOnceParams;
 import org.ovirt.engine.core.common.businessentities.BootSequence;
 import org.ovirt.engine.core.common.businessentities.MigrationSupport;
@@ -64,11 +59,12 @@
 import org.ovirt.engine.core.common.businessentities.UsbPolicy;
 import org.ovirt.engine.core.common.businessentities.VDSGroup;
 import org.ovirt.engine.core.common.businessentities.VMStatus;
+import org.ovirt.engine.core.common.businessentities.VmInit;
+import org.ovirt.engine.core.common.businessentities.VmInitNetwork;
 import org.ovirt.engine.core.common.businessentities.VmPayload;
 import org.ovirt.engine.core.common.businessentities.VmStatic;
 import org.ovirt.engine.core.common.businessentities.VmTemplate;
 import 
org.ovirt.engine.core.common.businessentities.network.NetworkBootProtocol;
-import 
org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface;
 import org.ovirt.engine.core.common.osinfo.OsRepository;
 import org.ovirt.engine.core.common.utils.SimpleDependecyInjector;
 import org.ovirt.engine.core.common.utils.VmDeviceType;
@@ -87,7 +83,6 @@
         VmStatic staticVm = template != null ? template : new VmStatic();
         staticVm.setId(Guid.Empty);
         staticVm.setVmtGuid(entity.getId());
-        staticVm.setDomain(entity.getDomain());
         staticVm.setVdsGroupId(entity.getVdsGroupId());
         staticVm.setMemSizeMb(entity.getMemSizeMb());
         staticVm.setOsId(entity.getOsId());
@@ -243,7 +238,6 @@
             
staticVm.setDedicatedVmForVds(createGuidFromString(vm.getPlacementPolicy().getHost().getId()));
         }
         if (vm.isSetDomain() && vm.getDomain().isSetName()) {
-            staticVm.setDomain(vm.getDomain().getName());
         }
         if (vm.isSetMemoryPolicy() && vm.getMemoryPolicy().isSetGuaranteed()) {
             Long memGuaranteed = vm.getMemoryPolicy().getGuaranteed() / 
BYTES_PER_MB;
@@ -449,11 +443,6 @@
         VmAffinity vmAffinity = map(entity.getMigrationSupport(), null);
         if(vmAffinity !=null){
             model.getPlacementPolicy().setAffinity(vmAffinity.value());
-        }
-        if (entity.getVmDomain()!=null && !entity.getVmDomain().isEmpty()) {
-            Domain domain = new Domain();
-            domain.setName(entity.getVmDomain());
-            model.setDomain(domain);
         }
         MemoryPolicy policy = new MemoryPolicy();
         policy.setGuaranteed((long)entity.getMinAllocatedMem() * 
(long)BYTES_PER_MB);
@@ -916,27 +905,9 @@
         return entity;
     }
 
-    @Mapping(from = Attachment.AttachmentType.class, to = 
PayloadEncoding.class)
-    public static PayloadEncoding map(Attachment.AttachmentType 
attachmentType, PayloadEncoding template) {
-        switch (attachmentType) {
-            case BASE64:            return PayloadEncoding.BASE64;
-            case PLAINTEXT:         return PayloadEncoding.PLAINTEXT;
-            default:                return null;
-        }
-    }
-
-    @Mapping(from = PayloadEncoding.class, to = 
Attachment.AttachmentType.class)
-    public static Attachment.AttachmentType map(PayloadEncoding 
attachmentType, Attachment.AttachmentType template) {
-        switch (attachmentType) {
-            case BASE64:            return Attachment.AttachmentType.BASE64;
-            case PLAINTEXT:         return Attachment.AttachmentType.PLAINTEXT;
-            default:                return null;
-        }
-    }
-
-    @Mapping(from = CloudInit.class, to = CloudInitParameters.class)
-    public static CloudInitParameters map(CloudInit model, CloudInitParameters 
template) {
-        CloudInitParameters entity = template != null ? template : new 
CloudInitParameters();
+    @Mapping(from = CloudInit.class, to = VmInit.class)
+    public static VmInit map(CloudInit model, VmInit template) {
+        VmInit entity = template != null ? template : new VmInit();
 
         if (model.isSetHost() && model.getHost().isSetAddress()) {
             entity.setHostname(model.getHost().getAddress());
@@ -961,60 +932,56 @@
 
         if (model.isSetNetworkConfiguration()) {
             if (model.getNetworkConfiguration().isSetNics()) {
-                Map<String, VdsNetworkInterface> interfaces = new HashMap<>();
+                List<VmInitNetwork> interfaces = new 
ArrayList<VmInitNetwork>();
                 for (NIC iface : 
model.getNetworkConfiguration().getNics().getNics()) {
-                    VdsNetworkInterface vdsNetworkInterface = new 
VdsNetworkInterface();
+                    VmInitNetwork vmInitInterface = new VmInitNetwork();
+                    interfaces.add(vmInitInterface);
                     if (iface.isSetBootProtocol()) {
-                        NetworkBootProtocol protocol = 
HostNicMapper.map(BootProtocol.fromValue(iface.getBootProtocol()), null);
-                        vdsNetworkInterface.setBootProtocol(protocol);
+                        NetworkBootProtocol protocol = HostNicMapper.map
+                                
(BootProtocol.fromValue(iface.getBootProtocol()), 
vmInitInterface.getBootProtocol());
+                        vmInitInterface.setBootProtocol(protocol);
                         if (protocol != NetworkBootProtocol.DHCP && 
iface.isSetNetwork() && iface.getNetwork().isSetIp()) {
                             if (iface.getNetwork().getIp().isSetAddress()) {
-                                
vdsNetworkInterface.setAddress(iface.getNetwork().getIp().getAddress());
+                                
vmInitInterface.setIp(iface.getNetwork().getIp().getAddress());
                             }
                             if (iface.getNetwork().getIp().isSetNetmask()) {
-                                
vdsNetworkInterface.setSubnet(iface.getNetwork().getIp().getNetmask());
+                                
vmInitInterface.setNetmask(iface.getNetwork().getIp().getNetmask());
                             }
                             if (iface.getNetwork().getIp().isSetGateway()) {
-                                
vdsNetworkInterface.setGateway(iface.getNetwork().getIp().getGateway());
+                                
vmInitInterface.setGateway(iface.getNetwork().getIp().getGateway());
                             }
                         }
-                    }
-
-                    interfaces.put(iface.getName(), vdsNetworkInterface);
-
-                    if (iface.isSetOnBoot() && iface.isOnBoot()) {
-                        if (entity.getStartOnBoot() == null) {
-                            entity.setStartOnBoot(new ArrayList<String>());
+                        if (iface.isSetOnBoot() && iface.isOnBoot()) {
+                            vmInitInterface.setStartOnBoot(true);
                         }
-                        entity.getStartOnBoot().add(iface.getName());
                     }
                 }
 
-                entity.setInterfaces(interfaces);
+                entity.setNetworks(interfaces);
             }
             if (model.getNetworkConfiguration().isSetDns()) {
                 if (model.getNetworkConfiguration().getDns().isSetServers()
                         && 
model.getNetworkConfiguration().getDns().getServers().isSetHosts()
                         && 
!model.getNetworkConfiguration().getDns().getServers().getHosts().isEmpty()) {
-                    List<String> dnsServers = new ArrayList<>();
+                    StringBuilder dnsServers = new StringBuilder();
                     for (Host host : 
model.getNetworkConfiguration().getDns().getServers().getHosts()) {
                         if (host.isSetAddress()) {
-                            dnsServers.add(host.getAddress());
+                            dnsServers.append(host.getAddress());
                         }
                     }
-                    entity.setDnsServers(dnsServers);
+                    entity.setDnsServers(dnsServers.toString());
                 }
 
                 if 
(model.getNetworkConfiguration().getDns().isSetSearchDomains()
                         && 
model.getNetworkConfiguration().getDns().getSearchDomains().isSetHosts()
                         && 
!model.getNetworkConfiguration().getDns().getSearchDomains().getHosts().isEmpty())
 {
-                    List<String> searchDomains = new ArrayList<>();
+                    StringBuilder searchDomains = new StringBuilder();
                     for (Host host : 
model.getNetworkConfiguration().getDns().getSearchDomains().getHosts()) {
                         if (host.isSetAddress()) {
-                            searchDomains.add(host.getAddress());
+                            searchDomains.append(host.getAddress());
                         }
                     }
-                    entity.setDnsSearch(searchDomains);
+                    entity.setDnsSearch(searchDomains.toString());
                 }
             }
         }
@@ -1029,18 +996,6 @@
                 if ("root".equals(user.getUserName())) {
                     entity.setRootPassword(user.getPassword());
                 }
-            }
-        }
-
-        if (model.isSetFiles()
-                && model.getFiles().isSetFiles()
-                && !model.getFiles().getFiles().isEmpty()) {
-            entity.setAttachments(new HashMap<String, Attachment>());
-            for (File file : model.getFiles().getFiles()) {
-                Attachment attachment = new Attachment();
-                
attachment.setAttachmentType(map(PayloadEncoding.fromValue(file.getType()), 
null));
-                attachment.setContent(file.getContent());
-                entity.getAttachments().put(file.getName(), attachment);
             }
         }
 
diff --git 
a/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/TemplateMapperTest.java
 
b/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/TemplateMapperTest.java
index d206616..9aac4ef 100644
--- 
a/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/TemplateMapperTest.java
+++ 
b/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/TemplateMapperTest.java
@@ -74,7 +74,6 @@
         assertEquals(model.getDisplay().isSingleQxlPci(), 
transform.getDisplay().isSingleQxlPci());
         assertEquals(model.getDisplay().isAllowOverride(), 
transform.getDisplay().isAllowOverride());
         assertEquals(model.getDisplay().getKeyboardLayout(), 
transform.getDisplay().getKeyboardLayout());
-        assertEquals(model.getDomain().getName(), 
transform.getDomain().getName());
         assertEquals(model.getTimezone(), transform.getTimezone());
         assertEquals(model.getDisplay().isSmartcardEnabled(), 
transform.getDisplay().isSmartcardEnabled());
         assertEquals(model.isDeleteProtected(), transform.isDeleteProtected());
diff --git 
a/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/VmMapperTest.java
 
b/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/VmMapperTest.java
index 25bbb38..7a4f5f6 100644
--- 
a/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/VmMapperTest.java
+++ 
b/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/VmMapperTest.java
@@ -129,7 +129,6 @@
         assertEquals(model.getDisplay().isAllowOverride(), 
transform.getDisplay().isAllowOverride());
         assertEquals(model.getPlacementPolicy().getHost().getId(), 
transform.getPlacementPolicy().getHost().getId());
         assertTrue(Math.abs(model.getMemoryPolicy().getGuaranteed() - 
transform.getMemoryPolicy().getGuaranteed()) <= (1024 * 1024));
-        assertEquals(model.getDomain().getName(), 
transform.getDomain().getName());
         assertEquals(model.getTimezone(), transform.getTimezone());
         assertEquals(model.getDisplay().isSmartcardEnabled(), 
transform.getDisplay().isSmartcardEnabled());
         assertEquals(model.getDisplay().getKeyboardLayout(), 
transform.getDisplay().getKeyboardLayout());


-- 
To view, visit http://gerrit.ovirt.org/22794
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ibb5a8fb62df940eabae35c91157920d9b651aa3e
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Shahar Havivi <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to