CLOUDSTACK-6437:
Add ability to distinguish between user defined and system defined guest OS and 
mappings
Add default mappings for XenServer

Local testing with
1. Add new guest OS by API
2. Add new guest OS mapping by API


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/78c683f5
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/78c683f5
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/78c683f5

Branch: refs/heads/master
Commit: 78c683f5682560deffa405ac76edf23f8e17565d
Parents: 2960ba7
Author: Amogh Vasekar <amogh.vase...@citrix.com>
Authored: Fri Apr 25 13:09:47 2014 -0700
Committer: Nitin Mehta <nitin.me...@citrix.com>
Committed: Fri Apr 25 13:10:10 2014 -0700

----------------------------------------------------------------------
 api/src/com/cloud/storage/GuestOS.java          |   2 +
 .../com/cloud/storage/GuestOSHypervisor.java    |   2 +
 .../com/cloud/storage/GuestOSHypervisorVO.java  |  12 +
 .../schema/src/com/cloud/storage/GuestOSVO.java |  12 +
 .../com/cloud/server/ManagementServerImpl.java  |   4 +-
 setup/db/db/schema-430to440.sql                 | 875 +++++++++++++++++++
 6 files changed, 906 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/78c683f5/api/src/com/cloud/storage/GuestOS.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/storage/GuestOS.java 
b/api/src/com/cloud/storage/GuestOS.java
index 767a60e..371260b 100644
--- a/api/src/com/cloud/storage/GuestOS.java
+++ b/api/src/com/cloud/storage/GuestOS.java
@@ -32,4 +32,6 @@ public interface GuestOS extends InternalIdentity, Identity {
     Date getCreated();
 
     Date getRemoved();
+
+    boolean getIsUserDefined();
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/78c683f5/api/src/com/cloud/storage/GuestOSHypervisor.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/storage/GuestOSHypervisor.java 
b/api/src/com/cloud/storage/GuestOSHypervisor.java
index 1cfc3a1..f579ce3 100644
--- a/api/src/com/cloud/storage/GuestOSHypervisor.java
+++ b/api/src/com/cloud/storage/GuestOSHypervisor.java
@@ -35,4 +35,6 @@ public interface GuestOSHypervisor extends InternalIdentity {
     Date getRemoved();
 
     Date getCreated();
+
+    boolean getIsUserDefined();
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/78c683f5/engine/schema/src/com/cloud/storage/GuestOSHypervisorVO.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/storage/GuestOSHypervisorVO.java 
b/engine/schema/src/com/cloud/storage/GuestOSHypervisorVO.java
index 1fbc9d7..087649b 100644
--- a/engine/schema/src/com/cloud/storage/GuestOSHypervisorVO.java
+++ b/engine/schema/src/com/cloud/storage/GuestOSHypervisorVO.java
@@ -57,6 +57,9 @@ public class GuestOSHypervisorVO implements GuestOSHypervisor 
{
     @Column(name = GenericDao.CREATED_COLUMN)
     Date created;
 
+    @Column(name = "is_user_defined")
+    private boolean isUserDefined;
+
     @Override
     public long getId() {
         return id;
@@ -120,4 +123,13 @@ public class GuestOSHypervisorVO implements 
GuestOSHypervisor {
     public void setRemoved(Date removed) {
         this.removed = removed;
     }
+
+    @Override
+    public boolean getIsUserDefined() {
+        return isUserDefined;
+    }
+
+    public void setIsUserDefined(boolean isUserDefined) {
+        this.isUserDefined = isUserDefined;
+    }
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/78c683f5/engine/schema/src/com/cloud/storage/GuestOSVO.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/storage/GuestOSVO.java 
b/engine/schema/src/com/cloud/storage/GuestOSVO.java
index a0040be..f04f9a4 100644
--- a/engine/schema/src/com/cloud/storage/GuestOSVO.java
+++ b/engine/schema/src/com/cloud/storage/GuestOSVO.java
@@ -54,6 +54,9 @@ public class GuestOSVO implements GuestOS {
     @Column(name = GenericDao.CREATED_COLUMN)
     private Date created;
 
+    @Column(name = "is_user_defined")
+    private boolean isUserDefined;
+
     @Override
     public long getId() {
         return id;
@@ -108,4 +111,13 @@ public class GuestOSVO implements GuestOS {
     public Date getRemoved() {
         return removed;
     }
+
+    @Override
+    public boolean getIsUserDefined() {
+        return isUserDefined;
+    }
+
+    public void setIsUserDefined(boolean isUserDefined) {
+        this.isUserDefined = isUserDefined;
+    }
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/78c683f5/server/src/com/cloud/server/ManagementServerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/server/ManagementServerImpl.java 
b/server/src/com/cloud/server/ManagementServerImpl.java
index 081145f..bb4f514 100755
--- a/server/src/com/cloud/server/ManagementServerImpl.java
+++ b/server/src/com/cloud/server/ManagementServerImpl.java
@@ -2028,7 +2028,7 @@ public class ManagementServerImpl extends ManagerBase 
implements ManagementServe
             throw new InvalidParameterValueException("Unable to find the guest 
OS by name or UUID");
         }
         //check for duplicates
-        GuestOSHypervisorVO duplicate = 
_guestOSHypervisorDao.findByOsIdAndHypervisor(osTypeId.longValue(), 
hypervisorType.toString(), hypervisorVersion);
+        GuestOSHypervisorVO duplicate = 
_guestOSHypervisorDao.findByOsIdAndHypervisor(guestOs.getId(), 
hypervisorType.toString(), hypervisorVersion);
 
         if (duplicate != null) {
             throw new InvalidParameterValueException("Mapping from hypervisor 
: " + hypervisorType.toString() + ", version : " + hypervisorVersion + " and 
guest OS : "
@@ -2039,6 +2039,7 @@ public class ManagementServerImpl extends ManagerBase 
implements ManagementServe
         guestOsMapping.setGuestOsName(osNameForHypervisor);
         guestOsMapping.setHypervisorType(hypervisorType.toString());
         guestOsMapping.setHypervisorVersion(hypervisorVersion);
+        guestOsMapping.setIsUserDefined(true);
         return _guestOSHypervisorDao.persist(guestOsMapping);
 
     }
@@ -2071,6 +2072,7 @@ public class ManagementServerImpl extends ManagerBase 
implements ManagementServe
         guestOsVo.setCategoryId(categoryId.longValue());
         guestOsVo.setDisplayName(displayName);
         guestOsVo.setName(name);
+        guestOsVo.setIsUserDefined(true);
         return _guestOSDao.persist(guestOsVo);
     }
 

Reply via email to