diff --git a/api/src/com/cloud/hypervisor/Hypervisor.java b/api/src/com/cloud/hypervisor/Hypervisor.java
index f8b98cf49dd..f8868af9278 100644
--- a/api/src/com/cloud/hypervisor/Hypervisor.java
+++ b/api/src/com/cloud/hypervisor/Hypervisor.java
@@ -31,6 +31,7 @@ public class Hypervisor {
BareMetal,
Simulator,
Ovm,
+ Ovm3,
LXC,
Any; /*If you don't care about the hypervisor type*/
@@ -57,6 +58,8 @@ public class Hypervisor {
return HypervisorType.Simulator;
} else if (hypervisor.equalsIgnoreCase("Ovm")) {
return HypervisorType.Ovm;
+ } else if (hypervisor.equalsIgnoreCase("Ovm3")) {
+ return HypervisorType.Ovm3;
} else if (hypervisor.equalsIgnoreCase("LXC")) {
return HypervisorType.LXC;
} else if (hypervisor.equalsIgnoreCase("Any")) {
@@ -81,6 +84,8 @@ public class Hypervisor {
return ImageFormat.OVA;
} else if (hyperType == HypervisorType.Ovm) {
return ImageFormat.RAW;
+ } else if (hyperType == HypervisorType.Ovm3) {
+ return ImageFormat.RAW;
} else {
return null;
}
diff --git a/api/src/com/cloud/network/NetworkService.java b/api/src/com/cloud/network/NetworkService.java
index 1e126f52aee..646dcb647ef 100755
--- a/api/src/com/cloud/network/NetworkService.java
+++ b/api/src/com/cloud/network/NetworkService.java
@@ -111,11 +111,11 @@ public interface NetworkService {
long findPhysicalNetworkId(long zoneId, String tag, TrafficType trafficType);
PhysicalNetworkTrafficType addTrafficTypeToPhysicalNetwork(Long physicalNetworkId, String trafficType, String isolationMethod, String xenLabel, String kvmLabel, String vmwareLabel,
- String simulatorLabel, String vlan, String hypervLabel);
+ String simulatorLabel, String vlan, String hypervLabel, String ovm3Label);
PhysicalNetworkTrafficType getPhysicalNetworkTrafficType(Long id);
- PhysicalNetworkTrafficType updatePhysicalNetworkTrafficType(Long id, String xenLabel, String kvmLabel, String vmwareLabel, String hypervLabel);
+ PhysicalNetworkTrafficType updatePhysicalNetworkTrafficType(Long id, String xenLabel, String kvmLabel, String vmwareLabel, String hypervLabel, String ovm3Label);
boolean deletePhysicalNetworkTrafficType(Long id);
diff --git a/api/src/com/cloud/network/PhysicalNetworkTrafficType.java b/api/src/com/cloud/network/PhysicalNetworkTrafficType.java
index a50aa37b8db..9676badb4e9 100644
--- a/api/src/com/cloud/network/PhysicalNetworkTrafficType.java
+++ b/api/src/com/cloud/network/PhysicalNetworkTrafficType.java
@@ -39,4 +39,6 @@ public interface PhysicalNetworkTrafficType extends InternalIdentity, Identity {
String getSimulatorNetworkLabel();
String getHypervNetworkLabel();
+
+ String getOvm3NetworkLabel();
}
diff --git a/api/src/org/apache/cloudstack/api/ApiConstants.java b/api/src/org/apache/cloudstack/api/ApiConstants.java
index adda5f4cee2..70ba1445bf2 100755
--- a/api/src/org/apache/cloudstack/api/ApiConstants.java
+++ b/api/src/org/apache/cloudstack/api/ApiConstants.java
@@ -379,6 +379,7 @@ public class ApiConstants {
public static final String LOCAL_STORAGE_ENABLED = "localstorageenabled";
public static final String GUEST_IP_TYPE = "guestiptype";
public static final String XENSERVER_NETWORK_LABEL = "xenservernetworklabel";
+ public static final String OVM3_NETWORK_LABEL = "ovm3networklabel";
public static final String KVM_NETWORK_LABEL = "kvmnetworklabel";
public static final String VMWARE_NETWORK_LABEL = "vmwarenetworklabel";
public static final String HYPERV_NETWORK_LABEL = "hypervnetworklabel";
@@ -461,6 +462,9 @@ public class ApiConstants {
public static final String VSM_CONFIG_MODE = "vsmconfigmode";
public static final String VSM_CONFIG_STATE = "vsmconfigstate";
public static final String VSM_DEVICE_STATE = "vsmdevicestate";
+ public static final String OVM3_POOL = "ovm3pool";
+ public static final String OVM3_CLUSTER = "ovm3cluster";
+ public static final String OVM3_VIP = "ovm3vip";
public static final String VCENTER = "vcenter";
public static final String ADD_VSM_FLAG = "addvsmflag";
public static final String END_POINT = "endpoint";
diff --git a/api/src/org/apache/cloudstack/api/command/admin/cluster/AddClusterCmd.java b/api/src/org/apache/cloudstack/api/command/admin/cluster/AddClusterCmd.java
index b9df18e01ed..c42886cdca1 100644
--- a/api/src/org/apache/cloudstack/api/command/admin/cluster/AddClusterCmd.java
+++ b/api/src/org/apache/cloudstack/api/command/admin/cluster/AddClusterCmd.java
@@ -66,7 +66,7 @@ public class AddClusterCmd extends BaseCmd {
@Parameter(name = ApiConstants.HYPERVISOR,
type = CommandType.STRING,
required = true,
- description = "hypervisor type of the cluster: XenServer,KVM,VMware,Hyperv,BareMetal,Simulator")
+ description = "hypervisor type of the cluster: XenServer,KVM,VMware,Hyperv,BareMetal,Simulator,Ovm3")
private String hypervisor;
@Parameter(name = ApiConstants.CLUSTER_TYPE, type = CommandType.STRING, required = true, description = "type of the cluster: CloudManaged, ExternalManaged")
@@ -75,6 +75,22 @@ public class AddClusterCmd extends BaseCmd {
@Parameter(name = ApiConstants.ALLOCATION_STATE, type = CommandType.STRING, description = "Allocation state of this cluster for allocation of new resources")
private String allocationState;
+ @Parameter(name = ApiConstants.OVM3_POOL, type = CommandType.STRING, required = false, description = "Ovm3 native pooling enabled for cluster")
+ private String ovm3pool;
+ @Parameter(name = ApiConstants.OVM3_CLUSTER, type = CommandType.STRING, required = false, description = "Ovm3 native OCFS2 clustering enabled for cluster")
+ private String ovm3cluster;
+ @Parameter(name = ApiConstants.OVM3_VIP, type = CommandType.STRING, required = false, description = "Ovm3 vip to use for pool (and cluster)")
+ private String ovm3vip;
+ public String getOvm3Pool() {
+ return ovm3pool;
+ }
+ public String getOvm3Cluster() {
+ return ovm3cluster;
+ }
+ public String getOvm3Vip() {
+ return ovm3vip;
+ }
+
@Parameter(name = ApiConstants.VSM_USERNAME, type = CommandType.STRING, required = false, description = "the username for the VSM associated with this cluster")
private String vsmusername;
diff --git a/api/src/org/apache/cloudstack/api/command/admin/usage/AddTrafficTypeCmd.java b/api/src/org/apache/cloudstack/api/command/admin/usage/AddTrafficTypeCmd.java
index 5f1188e74bc..ba9015ffc64 100644
--- a/api/src/org/apache/cloudstack/api/command/admin/usage/AddTrafficTypeCmd.java
+++ b/api/src/org/apache/cloudstack/api/command/admin/usage/AddTrafficTypeCmd.java
@@ -65,6 +65,11 @@ public class AddTrafficTypeCmd extends BaseAsyncCreateCmd {
description = "The network name label of the physical device dedicated to this traffic on a KVM host")
private String kvmLabel;
+ @Parameter(name = ApiConstants.OVM3_NETWORK_LABEL,
+ type = CommandType.STRING,
+ description = "The network name of the physical device dedicated to this traffic on an OVM3 host")
+ private String ovm3Label;
+
@Parameter(name = ApiConstants.VMWARE_NETWORK_LABEL,
type = CommandType.STRING,
description = "The network name label of the physical device dedicated to this traffic on a VMware host")
@@ -102,6 +107,10 @@ public class AddTrafficTypeCmd extends BaseAsyncCreateCmd {
return kvmLabel;
}
+ public String getOvm3Label() {
+ return ovm3Label;
+ }
+
public String getVmwareLabel() {
return vmwareLabel;
}
@@ -162,7 +171,7 @@ public class AddTrafficTypeCmd extends BaseAsyncCreateCmd {
public void create() throws ResourceAllocationException {
PhysicalNetworkTrafficType result =
_networkService.addTrafficTypeToPhysicalNetwork(getPhysicalNetworkId(), getTrafficType(), getIsolationMethod(), getXenLabel(), getKvmLabel(), getVmwareLabel(),
- getSimulatorLabel(), getVlan(), getHypervLabel());
+ getSimulatorLabel(), getVlan(), getHypervLabel(), getOvm3Label());
if (result != null) {
setEntityId(result.getId());
setEntityUuid(result.getUuid());
diff --git a/api/src/org/apache/cloudstack/api/command/admin/usage/UpdateTrafficTypeCmd.java b/api/src/org/apache/cloudstack/api/command/admin/usage/UpdateTrafficTypeCmd.java
index 68a9431ce84..8a8aeb2af56 100644
--- a/api/src/org/apache/cloudstack/api/command/admin/usage/UpdateTrafficTypeCmd.java
+++ b/api/src/org/apache/cloudstack/api/command/admin/usage/UpdateTrafficTypeCmd.java
@@ -55,6 +55,11 @@ public class UpdateTrafficTypeCmd extends BaseAsyncCmd {
description = "The network name label of the physical device dedicated to this traffic on a KVM host")
private String kvmLabel;
+ @Parameter(name = ApiConstants.OVM3_NETWORK_LABEL,
+ type = CommandType.STRING,
+ description = "The network name of the physical device dedicated to this traffic on an OVM3 host")
+ private String ovm3Label;
+
@Parameter(name = ApiConstants.VMWARE_NETWORK_LABEL,
type = CommandType.STRING,
description = "The network name label of the physical device dedicated to this traffic on a VMware host")
@@ -81,6 +86,10 @@ public class UpdateTrafficTypeCmd extends BaseAsyncCmd {
return kvmLabel;
}
+ public String getOvm3Label() {
+ return ovm3Label;
+ }
+
public String getVmwareLabel() {
return vmwareLabel;
}
@@ -105,7 +114,7 @@ public class UpdateTrafficTypeCmd extends BaseAsyncCmd {
@Override
public void execute() {
- PhysicalNetworkTrafficType result = _networkService.updatePhysicalNetworkTrafficType(getId(), getXenLabel(), getKvmLabel(), getVmwareLabel(), getHypervLabel());
+ PhysicalNetworkTrafficType result = _networkService.updatePhysicalNetworkTrafficType(getId(), getXenLabel(), getKvmLabel(), getVmwareLabel(), getHypervLabel(), getOvm3Label());
if (result != null) {
TrafficTypeResponse response = _responseGenerator.createTrafficTypeResponse(result);
response.setResponseName(getCommandName());
diff --git a/api/src/org/apache/cloudstack/api/response/ClusterResponse.java b/api/src/org/apache/cloudstack/api/response/ClusterResponse.java
index 08903091eba..df01e09595b 100644
--- a/api/src/org/apache/cloudstack/api/response/ClusterResponse.java
+++ b/api/src/org/apache/cloudstack/api/response/ClusterResponse.java
@@ -82,6 +82,10 @@ public class ClusterResponse extends BaseResponse {
@Param(description = "The memory overcommit ratio of the cluster")
private String memoryovercommitratio;
+ @SerializedName("ovm3vip")
+ @Param(description = "Ovm3 VIP to use for pooling and/or clustering")
+ private String ovm3vip;
+
public String getId() {
return id;
}
@@ -185,4 +189,12 @@ public class ClusterResponse extends BaseResponse {
public String getMemoryOvercommitRatio() {
return memoryovercommitratio;
}
+
+ public void setOvm3Vip(String ovm3vip) {
+ this.ovm3vip = ovm3vip;
+ }
+
+ public String getOvm3Vip() {
+ return ovm3vip;
+ }
}
diff --git a/api/src/org/apache/cloudstack/api/response/TrafficTypeResponse.java b/api/src/org/apache/cloudstack/api/response/TrafficTypeResponse.java
index 84ed2e69d86..d8a98786695 100644
--- a/api/src/org/apache/cloudstack/api/response/TrafficTypeResponse.java
+++ b/api/src/org/apache/cloudstack/api/response/TrafficTypeResponse.java
@@ -48,6 +48,10 @@ public class TrafficTypeResponse extends BaseResponse {
@Param(description = "The network name label of the physical device dedicated to this traffic on a KVM host")
private String kvmNetworkLabel;
+ @SerializedName(ApiConstants.OVM3_NETWORK_LABEL)
+ @Param(description = "The network name of the physical device dedicated to this traffic on an OVM3 host")
+ private String ovm3NetworkLabel;
+
@SerializedName(ApiConstants.VMWARE_NETWORK_LABEL)
@Param(description = "The network name label of the physical device dedicated to this traffic on a VMware host")
private String vmwareNetworkLabel;
@@ -93,6 +97,10 @@ public class TrafficTypeResponse extends BaseResponse {
return kvmNetworkLabel;
}
+ public String getOvm3Label() {
+ return ovm3NetworkLabel;
+ }
+
public String getHypervLabel() {
return hypervNetworkLabel;
}
@@ -109,6 +117,10 @@ public class TrafficTypeResponse extends BaseResponse {
this.kvmNetworkLabel = kvmLabel;
}
+ public void setOvm3Label(String ovm3Label) {
+ this.ovm3NetworkLabel = ovm3Label;
+ }
+
public void setVmwareLabel(String vmwareNetworkLabel) {
this.vmwareNetworkLabel = vmwareNetworkLabel;
}
diff --git a/client/WEB-INF/classes/resources/messages.properties b/client/WEB-INF/classes/resources/messages.properties
index b504a18d020..9ab35098d08 100644
--- a/client/WEB-INF/classes/resources/messages.properties
+++ b/client/WEB-INF/classes/resources/messages.properties
@@ -378,6 +378,10 @@ label.affinity.groups=Affinity Groups
label.affinity=Affinity
label.agent.password=Agent Password
label.agent.username=Agent Username
+label.agent.port=Agent Port
+label.ovm3.vip=Master Vip IP
+label.ovm3.pool=Native Pooling
+label.ovm3.cluster=Native Clustering
label.agree=Agree
label.alert=Alert
label.algorithm=Algorithm
diff --git a/client/pom.xml b/client/pom.xml
index 29fef4f335e..cfa1bec3f1a 100644
--- a/client/pom.xml
+++ b/client/pom.xml
@@ -165,6 +165,11 @@
cloud-plugin-hypervisor-ovm
${project.version}
+
+ org.apache.cloudstack
+ cloud-plugin-hypervisor-ovm3
+ ${project.version}
+
org.apache.cloudstack
cloud-plugin-hypervisor-kvm
diff --git a/engine/schema/src/com/cloud/network/dao/PhysicalNetworkTrafficTypeDaoImpl.java b/engine/schema/src/com/cloud/network/dao/PhysicalNetworkTrafficTypeDaoImpl.java
index 4e8e0179d37..fe7d49c4015 100755
--- a/engine/schema/src/com/cloud/network/dao/PhysicalNetworkTrafficTypeDaoImpl.java
+++ b/engine/schema/src/com/cloud/network/dao/PhysicalNetworkTrafficTypeDaoImpl.java
@@ -43,6 +43,7 @@ public class PhysicalNetworkTrafficTypeDaoImpl extends GenericDaoBase simulatorAllFieldsSearch;
final GenericSearchBuilder ovmAllFieldsSearch;
final GenericSearchBuilder hypervAllFieldsSearch;
+ final GenericSearchBuilder ovm3AllFieldsSearch;
protected PhysicalNetworkTrafficTypeDaoImpl() {
super();
@@ -86,6 +87,12 @@ public class PhysicalNetworkTrafficTypeDaoImpl extends GenericDaoBasededicated-resources
hypervisors/ovm
hypervisors/xenserver
+ hypervisors/ovm3
hypervisors/kvm
event-bus/rabbitmq
event-bus/inmemory
diff --git a/scripts/storage/secondary/cloud-install-sys-tmplt b/scripts/storage/secondary/cloud-install-sys-tmplt
index 96b11de41d4..a6de3ad96fe 100755
--- a/scripts/storage/secondary/cloud-install-sys-tmplt
+++ b/scripts/storage/secondary/cloud-install-sys-tmplt
@@ -20,9 +20,9 @@
usage() {
- printf "Usage: %s: -m -f [-h ] [ -s ][-u ] [-F ] [-e ] [-o ] [-r ] [-d ]\n" $(basename $0) >&2
+ printf "Usage: %s: -m -f [-h ] [ -s ][-u ] [-F ] [-e ] [-o ] [-r ] [-d ]\n" $(basename $0) >&2
printf "or\n" >&2
- printf "%s: -m -u [-h ] [ -s ]\n" $(basename $0) >&2
+ printf "%s: -m -u [-h ] [ -s ]\n" $(basename $0) >&2
}
failed() {
@@ -36,7 +36,7 @@ ext="vhd"
templateId=
hyper=
msKey=password
-DISKSPACE=5120000 #free disk space required in kilobytes
+DISKSPACE=512000 #free disk space required in kilobytes
dbHost=
dbUser=
dbPassword=
@@ -48,7 +48,7 @@ do
mntpoint="$OPTARG"
;;
f) fflag=1
- tmpltimg="$OPTARG"
+ mytmpltimg="$OPTARG"
;;
u) uflag=1
url="$OPTARG"
@@ -96,9 +96,9 @@ then
failed 4
fi
-if [[ "$fflag" == "1" && ! -f $tmpltimg ]]
+if [[ "$fflag" == "1" && ! -f $mytmpltimg ]]
then
- echo "template image file $tmpltimg doesn't exist"
+ echo "template image file $mytmpltimg doesn't exist"
failed 3
fi
@@ -165,6 +165,10 @@ then
then
ext="vhd"
templateId=(`mysql -h $dbHost --user=$dbUser --password=$dbPassword --skip-column-names -U cloud -e "select max(id) from cloud.vm_template where type = \"SYSTEM\" and hypervisor_type = \"Hyperv\" and removed is null"`)
+ elif [ "$hyper" == "ovm3" ]
+ then
+ ext="raw"
+ templateId=(`mysql -h $dbHost --user=$dbUser --password=$dbPassword --skip-column-names -U cloud -e "select max(id) from cloud.vm_template where type = \"SYSTEM\" and hypervisor_type = \"Ovm3\" and removed is null"`)
else
usage
failed 2
@@ -177,7 +181,10 @@ then
failed 8
fi
-localfile=$(uuidgen).$ext
+_uuid=$(uuidgen)
+localfile=$_uuid.$ext
+
+_res=(`mysql -h $dbHost --user=$dbUser --password=$dbPassword --skip-column-names -U cloud -e "update cloud.vm_template set uuid=\"$_uuid\" where id=\"$templateId\""`)
mntpoint=`echo "$mntpoint" | sed 's|/*$||'`
@@ -242,7 +249,7 @@ fi
if [ "$fflag" == "1" ]
then
- cp $tmpltimg $tmpfile
+ cp $mytmpltimg $tmpfile
if [ $? -ne 0 ]
then
printf "Failed to create temporary file in directory $(dirname $0) -- is it read-only or full?\n"
@@ -255,7 +262,7 @@ installrslt=$($(dirname $0)/createtmplt.sh -s 2 -d 'SystemVM Template' -n $local
if [ $? -ne 0 ]
then
- echo "Failed to install system vm template $tmpltimg to $destdir: $installrslt"
+ echo "Failed to install system vm template $mytmpltimg to $destdir: $installrslt"
failed 7
fi
@@ -276,4 +283,4 @@ echo "$ext.virtualsize=$tmpltsize" >> $destdir/template.properties
echo "virtualsize=$tmpltsize" >> $destdir/template.properties
echo "$ext.size=$tmpltsize" >> $destdir/template.properties
-echo "Successfully installed system VM template $tmpltimg to $destdir"
+echo "Successfully installed system VM template $_uuid to $destdir"
diff --git a/scripts/storage/secondary/createtmplt.sh b/scripts/storage/secondary/createtmplt.sh
index 6b31232bc9e..838ce92a3e1 100755
--- a/scripts/storage/secondary/createtmplt.sh
+++ b/scripts/storage/secondary/createtmplt.sh
@@ -1,4 +1,4 @@
-#!/usr/bin/env bash
+#!/bin/bash
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
diff --git a/server/src/com/cloud/configuration/Config.java b/server/src/com/cloud/configuration/Config.java
index 196db9306eb..d52dbf289a8 100755
--- a/server/src/com/cloud/configuration/Config.java
+++ b/server/src/com/cloud/configuration/Config.java
@@ -715,7 +715,7 @@ public enum Config {
String.class,
"system.vm.default.hypervisor",
null,
- "Hypervisor type used to create system vm, valid values are: XenServer, KVM, VMware, Hyperv, VirtualBox, Parralels, BareMetal, Ovm, LXC, Any",
+ "Hypervisor type used to create system vm, valid values are: XenServer, KVM, VMware, Hyperv, VirtualBox, Parralels, BareMetal, Ovm, Ovm3, LXC, Any",
null),
SystemVMRandomPassword(
"Advanced",
@@ -732,7 +732,7 @@ public enum Config {
String.class,
"hypervisor.list",
HypervisorType.Hyperv + "," + HypervisorType.KVM + "," + HypervisorType.XenServer + "," + HypervisorType.VMware + "," + HypervisorType.BareMetal + "," +
- HypervisorType.Ovm + "," + HypervisorType.LXC,
+ HypervisorType.Ovm + "," + HypervisorType.Ovm3 + "," + HypervisorType.LXC,
"The list of hypervisors that this deployment will use.",
"hypervisorList"),
ManagementNetwork("Advanced", ManagementServer.class, String.class, "management.network.cidr", null, "The cidr of management server network", null),
@@ -1077,6 +1077,12 @@ public enum Config {
OvmPrivateNetwork("Hidden", ManagementServer.class, String.class, "ovm.private.network.device", null, "Specify the private bridge on host for private network", null),
OvmGuestNetwork("Hidden", ManagementServer.class, String.class, "ovm.guest.network.device", null, "Specify the private bridge on host for private network", null),
+ // Ovm3
+ Ovm3PublicNetwork("Hidden", ManagementServer.class, String.class, "ovm3.public.network.device", null, "Specify the public bridge on host for public network", null),
+ Ovm3PrivateNetwork("Hidden", ManagementServer.class, String.class, "ovm3.private.network.device", null, "Specify the private bridge on host for private network", null),
+ Ovm3GuestNetwork("Hidden", ManagementServer.class, String.class, "ovm3.guest.network.device", null, "Specify the guest bridge on host for guest network", null),
+ Ovm3StorageNetwork("Hidden", ManagementServer.class, String.class, "ovm3.storage.network.device", null, "Specify the storage bridge on host for storage network", null),
+
// XenServer
XenServerPublicNetwork(
"Hidden",
diff --git a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
index bb32c376571..a7b2f2a6505 100755
--- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
+++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
@@ -1734,7 +1734,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
PhysicalNetworkTrafficTypeVO mgmtTraffic = _trafficTypeDao.findBy(mgmtPhyNetwork.getId(), TrafficType.Management);
_networkSvc.addTrafficTypeToPhysicalNetwork(mgmtPhyNetwork.getId(), TrafficType.Storage.toString(), "vlan", mgmtTraffic.getXenNetworkLabel(),
mgmtTraffic.getKvmNetworkLabel(), mgmtTraffic.getVmwareNetworkLabel(), mgmtTraffic.getSimulatorNetworkLabel(), mgmtTraffic.getVlan(),
- mgmtTraffic.getHypervNetworkLabel());
+ mgmtTraffic.getHypervNetworkLabel(), mgmtTraffic.getOvm3NetworkLabel());
s_logger.info("No storage traffic type was specified by admin, create default storage traffic on physical network " + mgmtPhyNetwork.getId()
+ " with same configure of management traffic type");
}
diff --git a/server/src/com/cloud/network/NetworkModelImpl.java b/server/src/com/cloud/network/NetworkModelImpl.java
index 0ef5cb9984d..96af84feab2 100755
--- a/server/src/com/cloud/network/NetworkModelImpl.java
+++ b/server/src/com/cloud/network/NetworkModelImpl.java
@@ -1222,6 +1222,9 @@ public class NetworkModelImpl extends ManagerBase implements NetworkModel {
case Hyperv:
label = mgmtTraffic.getHypervNetworkLabel();
break;
+ case Ovm3:
+ label = mgmtTraffic.getOvm3NetworkLabel();
+ break;
}
return label;
}
@@ -1254,6 +1257,9 @@ public class NetworkModelImpl extends ManagerBase implements NetworkModel {
case Hyperv:
label = storageTraffic.getHypervNetworkLabel();
break;
+ case Ovm3:
+ label = storageTraffic.getOvm3NetworkLabel();
+ break;
}
return label;
}
@@ -1614,6 +1620,9 @@ public class NetworkModelImpl extends ManagerBase implements NetworkModel {
case Hyperv:
label = publicTraffic.getHypervNetworkLabel();
break;
+ case Ovm3:
+ label = publicTraffic.getOvm3NetworkLabel();
+ break;
}
return label;
}
@@ -1646,7 +1655,9 @@ public class NetworkModelImpl extends ManagerBase implements NetworkModel {
case Hyperv:
label = guestTraffic.getHypervNetworkLabel();
break;
-
+ case Ovm3:
+ label = guestTraffic.getOvm3NetworkLabel();
+ break;
}
return label;
}
diff --git a/server/src/com/cloud/network/NetworkServiceImpl.java b/server/src/com/cloud/network/NetworkServiceImpl.java
index a574f10bd82..c29980a9556 100755
--- a/server/src/com/cloud/network/NetworkServiceImpl.java
+++ b/server/src/com/cloud/network/NetworkServiceImpl.java
@@ -3557,7 +3557,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService {
@DB
@ActionEvent(eventType = EventTypes.EVENT_TRAFFIC_TYPE_CREATE, eventDescription = "Creating Physical Network TrafficType", create = true)
public PhysicalNetworkTrafficType addTrafficTypeToPhysicalNetwork(Long physicalNetworkId, String trafficTypeStr, String isolationMethod, String xenLabel, String kvmLabel, String vmwareLabel,
- String simulatorLabel, String vlan, String hypervLabel) {
+ String simulatorLabel, String vlan, String hypervLabel, String ovm3Label) {
// verify input parameters
PhysicalNetworkVO network = _physicalNetworkDao.findById(physicalNetworkId);
@@ -3609,7 +3609,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService {
xenLabel = getDefaultXenNetworkLabel(trafficType);
}
PhysicalNetworkTrafficTypeVO pNetworktrafficType = new PhysicalNetworkTrafficTypeVO(physicalNetworkId, trafficType, xenLabel, kvmLabel, vmwareLabel, simulatorLabel,
- vlan, hypervLabel);
+ vlan, hypervLabel, ovm3Label);
pNetworktrafficType = _pNTrafficTypeDao.persist(pNetworktrafficType);
// For public traffic, get isolation method of physical network and update the public network accordingly
@@ -3669,7 +3669,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService {
@Override
@ActionEvent(eventType = EventTypes.EVENT_TRAFFIC_TYPE_UPDATE, eventDescription = "Updating physical network TrafficType", async = true)
- public PhysicalNetworkTrafficType updatePhysicalNetworkTrafficType(Long id, String xenLabel, String kvmLabel, String vmwareLabel, String hypervLabel) {
+ public PhysicalNetworkTrafficType updatePhysicalNetworkTrafficType(Long id, String xenLabel, String kvmLabel, String vmwareLabel, String hypervLabel, String ovm3Label) {
PhysicalNetworkTrafficTypeVO trafficType = _pNTrafficTypeDao.findById(id);
@@ -3702,6 +3702,12 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService {
}
trafficType.setHypervNetworkLabel(hypervLabel);
}
+ if (ovm3Label != null) {
+ if ("".equals(ovm3Label)) {
+ ovm3Label = null;
+ }
+ trafficType.setOvm3NetworkLabel(ovm3Label);
+ }
_pNTrafficTypeDao.update(id, trafficType);
return trafficType;
diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
index 7991d7e63b2..bb152c6dff7 100755
--- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
+++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
@@ -2847,6 +2847,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
router.setTemplateVersion(versionAnswer.getTemplateVersion());
router.setScriptsVersion(versionAnswer.getScriptsVersion());
router = _routerDao.persist(router, guestNetworks);
+
}
return result;
diff --git a/server/src/com/cloud/resource/ResourceManagerImpl.java b/server/src/com/cloud/resource/ResourceManagerImpl.java
index 68c92864d2c..e8548ce6d6f 100755
--- a/server/src/com/cloud/resource/ResourceManagerImpl.java
+++ b/server/src/com/cloud/resource/ResourceManagerImpl.java
@@ -419,6 +419,7 @@ public class ResourceManagerImpl extends ManagerBase implements ResourceManager,
throw new InvalidParameterValueException("Unable to resolve " + cmd.getHypervisor() + " to a supported ");
}
+ /* check if OVM3 supports this */
if (zone.isSecurityGroupEnabled() && zone.getNetworkType().equals(NetworkType.Advanced)) {
if (hypervisorType != HypervisorType.KVM && hypervisorType != HypervisorType.XenServer && hypervisorType != HypervisorType.Simulator) {
throw new InvalidParameterValueException("Don't support hypervisor type " + hypervisorType + " in advanced security enabled zone");
@@ -477,6 +478,13 @@ public class ResourceManagerImpl extends ManagerBase implements ResourceManager,
if (clusterType == Cluster.ClusterType.CloudManaged) {
Map details = new HashMap();
+ // should do this nicer perhaps ?
+ if (hypervisorType == HypervisorType.Ovm3) {
+ Map allParams = cmd.getFullUrlParams();
+ details.put("ovm3vip", allParams.get("ovm3vip"));
+ details.put("ovm3pool", allParams.get("ovm3pool"));
+ details.put("ovm3cluster", allParams.get("ovm3cluster"));
+ }
details.put("cpuOvercommitRatio", CapacityManager.CpuOverprovisioningFactor.value().toString());
details.put("memoryOvercommitRatio", CapacityManager.MemOverprovisioningFactor.value().toString());
_clusterDetailsDao.persist(cluster.getId(), details);
diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java
index fb214b72840..9d03ac68c99 100755
--- a/server/src/com/cloud/server/ManagementServerImpl.java
+++ b/server/src/com/cloud/server/ManagementServerImpl.java
@@ -1120,11 +1120,12 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
}
if (!vm.getHypervisorType().equals(HypervisorType.XenServer) && !vm.getHypervisorType().equals(HypervisorType.VMware) && !vm.getHypervisorType().equals(HypervisorType.KVM)
- && !vm.getHypervisorType().equals(HypervisorType.Ovm) && !vm.getHypervisorType().equals(HypervisorType.Hyperv)) {
+ && !vm.getHypervisorType().equals(HypervisorType.Ovm) && !vm.getHypervisorType().equals(HypervisorType.Hyperv)
+ && !vm.getHypervisorType().equals(HypervisorType.Ovm3)) {
if (s_logger.isDebugEnabled()) {
- s_logger.debug(vm + " is not XenServer/VMware/KVM/OVM/Hyperv, cannot migrate this VM.");
+ s_logger.debug(vm + " is not XenServer/VMware/KVM/OVM/Hyperv/Ovm3, cannot migrate this VM.");
}
- throw new InvalidParameterValueException("Unsupported Hypervisor Type for VM migration, we support " + "XenServer/VMware/KVM/Ovm/Hyperv only");
+ throw new InvalidParameterValueException("Unsupported Hypervisor Type for VM migration, we support " + "XenServer/VMware/KVM/Ovm/Hyperv/Ovm3 only");
}
long srcHostId = vm.getHostId();
diff --git a/server/src/com/cloud/storage/listener/StoragePoolMonitor.java b/server/src/com/cloud/storage/listener/StoragePoolMonitor.java
index 9f6b5fb9d3e..812aaddb538 100755
--- a/server/src/com/cloud/storage/listener/StoragePoolMonitor.java
+++ b/server/src/com/cloud/storage/listener/StoragePoolMonitor.java
@@ -76,7 +76,8 @@ public class StoragePoolMonitor implements Listener {
StartupRoutingCommand scCmd = (StartupRoutingCommand)cmd;
if (scCmd.getHypervisorType() == HypervisorType.XenServer || scCmd.getHypervisorType() == HypervisorType.KVM ||
scCmd.getHypervisorType() == HypervisorType.VMware || scCmd.getHypervisorType() == HypervisorType.Simulator ||
- scCmd.getHypervisorType() == HypervisorType.Ovm || scCmd.getHypervisorType() == HypervisorType.Hyperv) {
+ scCmd.getHypervisorType() == HypervisorType.Ovm || scCmd.getHypervisorType() == HypervisorType.Hyperv ||
+ scCmd.getHypervisorType() == HypervisorType.Ovm3) {
List pools = _poolDao.listBy(host.getDataCenterId(), host.getPodId(), host.getClusterId(), ScopeType.CLUSTER);
List zoneStoragePoolsByTags = _poolDao.findZoneWideStoragePoolsByTags(host.getDataCenterId(), null);
List zoneStoragePoolsByHypervisor = _poolDao.findZoneWideStoragePoolsByHypervisor(host.getDataCenterId(), scCmd.getHypervisorType());
diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java
index 25c3eeb1fe2..8af84c1ed8a 100755
--- a/server/src/com/cloud/vm/UserVmManagerImpl.java
+++ b/server/src/com/cloud/vm/UserVmManagerImpl.java
@@ -3824,11 +3824,11 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
if (!vm.getHypervisorType().equals(HypervisorType.XenServer) && !vm.getHypervisorType().equals(HypervisorType.VMware) && !vm.getHypervisorType().equals(HypervisorType.KVM)
&& !vm.getHypervisorType().equals(HypervisorType.Ovm) && !vm.getHypervisorType().equals(HypervisorType.Hyperv)
- && !vm.getHypervisorType().equals(HypervisorType.Simulator)) {
+ && !vm.getHypervisorType().equals(HypervisorType.Simulator) && !vm.getHypervisorType().equals(HypervisorType.Ovm3)) {
if (s_logger.isDebugEnabled()) {
- s_logger.debug(vm + " is not XenServer/VMware/KVM/Ovm/Hyperv, cannot migrate this VM.");
+ s_logger.debug(vm + " is not XenServer/VMware/KVM/Ovm/Hyperv/Ovm3, cannot migrate this VM.");
}
- throw new InvalidParameterValueException("Unsupported Hypervisor Type for VM migration, we support XenServer/VMware/KVM/Ovm/Hyperv only");
+ throw new InvalidParameterValueException("Unsupported Hypervisor Type for VM migration, we support XenServer/VMware/KVM/Ovm/Hyperv/Ovm3 only");
}
if (isVMUsingLocalStorage(vm)) {
diff --git a/server/test/com/cloud/vpc/MockNetworkManagerImpl.java b/server/test/com/cloud/vpc/MockNetworkManagerImpl.java
index 387a710d9da..d338cdfe992 100644
--- a/server/test/com/cloud/vpc/MockNetworkManagerImpl.java
+++ b/server/test/com/cloud/vpc/MockNetworkManagerImpl.java
@@ -403,11 +403,11 @@ public class MockNetworkManagerImpl extends ManagerBase implements NetworkOrches
}
/* (non-Javadoc)
- * @see com.cloud.network.NetworkService#addTrafficTypeToPhysicalNetwork(java.lang.Long, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)
+ * @see com.cloud.network.NetworkService#addTrafficTypeToPhysicalNetwork(java.lang.Long, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)
*/
@Override
public PhysicalNetworkTrafficType addTrafficTypeToPhysicalNetwork(Long physicalNetworkId, String trafficType, String isolationMethod, String xenLabel, String kvmLabel, String vmwareLabel,
- String simulatorLabel, String vlan, String hypervLabel) {
+ String simulatorLabel, String vlan, String hypervLabel, String ovm3Label) {
// TODO Auto-generated method stub
return null;
}
@@ -425,7 +425,7 @@ public class MockNetworkManagerImpl extends ManagerBase implements NetworkOrches
* @see com.cloud.network.NetworkService#updatePhysicalNetworkTrafficType(java.lang.Long, java.lang.String, java.lang.String, java.lang.String)
*/
@Override
- public PhysicalNetworkTrafficType updatePhysicalNetworkTrafficType(Long id, String xenLabel, String kvmLabel, String vmwareLabel, String hypervLabel) {
+ public PhysicalNetworkTrafficType updatePhysicalNetworkTrafficType(Long id, String xenLabel, String kvmLabel, String vmwareLabel, String hypervLabel, String ovm3Label) {
// TODO Auto-generated method stub
return null;
}
diff --git a/setup/db/create-schema.sql b/setup/db/create-schema.sql
index fe5cd0a169f..9d4bef93e88 100755
--- a/setup/db/create-schema.sql
+++ b/setup/db/create-schema.sql
@@ -1683,6 +1683,9 @@ INSERT IGNORE INTO `cloud`.`hypervisor_capabilities`(hypervisor_type, hypervisor
INSERT IGNORE INTO `cloud`.`hypervisor_capabilities`(hypervisor_type, hypervisor_version, max_guests_limit, security_group_enabled) VALUES ('KVM', 'default', 50, 1);
INSERT IGNORE INTO `cloud`.`hypervisor_capabilities`(hypervisor_type, hypervisor_version, max_guests_limit, security_group_enabled) VALUES ('Ovm', 'default', 25, 1);
INSERT IGNORE INTO `cloud`.`hypervisor_capabilities`(hypervisor_type, hypervisor_version, max_guests_limit, security_group_enabled) VALUES ('Ovm', '2.3', 25, 1);
+INSERT IGNORE INTO `cloud`.`hypervisor_capabilities`(hypervisor_type, hypervisor_version, max_guests_limit, security_group_enabled) VALUES ('Ovm3', 'default', 25, 1);$
+INSERT IGNORE INTO `cloud`.`hypervisor_capabilities`(hypervisor_type, hypervisor_version, max_guests_limit, security_group_enabled) VALUES ('Ovm3', '3.0', 50, 1);$
+
CREATE TABLE `cloud`.`launch_permission` (
`id` bigint unsigned NOT NULL auto_increment,
diff --git a/setup/db/db/schema-410to420.sql b/setup/db/db/schema-410to420.sql
index ebbcfefef3a..4a74db78389 100644
--- a/setup/db/db/schema-410to420.sql
+++ b/setup/db/db/schema-410to420.sql
@@ -546,6 +546,7 @@ update `cloud`.`volumes` v, `cloud`.`storage_pool` s, `cloud`.`cluster` c se
update `cloud`.`volumes` v, `cloud`.`storage_pool` s, `cloud`.`cluster` c set v.format='OVA' where v.pool_id=s.id and s.cluster_id=c.id and c.hypervisor_type='VMware';
update `cloud`.`volumes` v, `cloud`.`storage_pool` s, `cloud`.`cluster` c set v.format='QCOW2' where v.pool_id=s.id and s.cluster_id=c.id and c.hypervisor_type='KVM';
update `cloud`.`volumes` v, `cloud`.`storage_pool` s, `cloud`.`cluster` c set v.format='RAW' where v.pool_id=s.id and s.cluster_id=c.id and c.hypervisor_type='Ovm';
+update `cloud`.`volumes` v, `cloud`.`storage_pool` s, `cloud`.`cluster` c set v.format='RAW' where v.pool_id=s.id and s.cluster_id=c.id and c.hypervisor_type='Ovm3';
ALTER TABLE `cloud`.`networks` ADD COLUMN `display_network` tinyint(1) NOT NULL DEFAULT 1 COMMENT 'Should network be displayed to the end user';
@@ -666,7 +667,7 @@ ALTER TABLE `cloud`.`remote_access_vpn` ADD COLUMN `uuid` varchar(40) UNIQUE;
INSERT IGNORE INTO `cloud`.`hypervisor_capabilities`(uuid, hypervisor_type, hypervisor_version, max_guests_limit, security_group_enabled) VALUES (UUID(), 'LXC', 'default', 50, 1);
ALTER TABLE `cloud`.`physical_network_traffic_types` ADD COLUMN `lxc_network_label` varchar(255) DEFAULT 'cloudbr0' COMMENT 'The network name label of the physical device dedicated to this traffic on a LXC host';
-UPDATE configuration SET value='KVM,XenServer,VMware,BareMetal,Ovm,LXC' WHERE name='hypervisor.list';
+UPDATE configuration SET value='KVM,XenServer,VMware,BareMetal,Ovm,Ovm3,LXC' WHERE name='hypervisor.list';
INSERT INTO `cloud`.`vm_template` (id, uuid, unique_name, name, public, created, type, hvm, bits, account_id, url, checksum, enable_password, display_text, format, guest_os_id, featured, cross_zones, hypervisor_type)
VALUES (10, UUID(), 'routing-10', 'SystemVM Template (LXC)', 0, now(), 'SYSTEM', 0, 64, 1, 'http://download.cloud.com/templates/acton/acton-systemvm-02062012.qcow2.bz2', '2755de1f9ef2ce4d6f2bee2efbb4da92', 0, 'SystemVM Template (LXC)', 'QCOW2', 15, 0, 1, 'LXC');
diff --git a/setup/db/templates.sql b/setup/db/templates.sql
index 6a74633efc9..011a5f25390 100755
--- a/setup/db/templates.sql
+++ b/setup/db/templates.sql
@@ -30,6 +30,9 @@ INSERT INTO `cloud`.`vm_template` (id, uuid, unique_name, name, public, created,
INSERT INTO `cloud`.`vm_template` (id, uuid, unique_name, name, public, created, type, hvm, bits, account_id, url, checksum, enable_password, display_text, format, guest_os_id, featured, cross_zones, hypervisor_type, extractable)
VALUES (5, UUID(), 'centos56-x86_64-xen', 'CentOS 5.6(64-bit) no GUI (XenServer)', 1, now(), 'BUILTIN', 0, 64, 1, 'http://download.cloud.com/templates/builtin/centos56-x86_64.vhd.bz2', '905cec879afd9c9d22ecc8036131a180', 0, 'CentOS 5.6(64-bit) no GUI (XenServer)', 'VHD', 142, 1, 1, 'XenServer', 1);
+-- INSERT INTO `cloud`.`vm_template` (id, uuid, unique_name, name, public, created, type, hvm, bits, account_id, url, checksum, enable_password, display_text, format, guest_os_id, featured, cross_zones, hypervisor_type)
+-- VALUES (6, UUID(), 'centos64-x64', 'CentOS 6.4(64-bit) GUI (Hyperv)', 1, now(), 'BUILTIN', 0, 64, 1, 'http://download.cloud.com/releases/4.3/centos6_4_64bit.vhd.bz2', 'eef6b9940ea3ed01221d963d4a012d0a', 0, 'CentOS 6.4 (64-bit) GUI (Hyperv)', 'VHD', 182, 1, 1, 'Hyperv', 1);
+
INSERT INTO `cloud`.`vm_template` (id, uuid, unique_name, name, public, created, type, hvm, bits, account_id, url, checksum, enable_password, display_text, format, guest_os_id, featured, cross_zones, hypervisor_type, extractable)
VALUES (7, UUID(), 'centos53-x64', 'CentOS 5.3(64-bit) no GUI (vSphere)', 1, now(), 'BUILTIN', 0, 64, 1, 'http://download.cloud.com/releases/2.2.0/CentOS5.3-x86_64.ova', 'f6f881b7f2292948d8494db837fe0f47', 0, 'CentOS 5.3(64-bit) no GUI (vSphere)', 'OVA', 12, 1, 1, 'VMware', 1);
@@ -39,8 +42,9 @@ INSERT INTO `cloud`.`vm_template` (id, uuid, unique_name, name, public, created,
INSERT INTO `cloud`.`vm_template` (id, uuid, unique_name, name, public, created, type, hvm, bits, account_id, url, checksum, enable_password, display_text, format, guest_os_id, featured, cross_zones, hypervisor_type)
VALUES (9, UUID(), 'routing-9', 'SystemVM Template (HyperV)', 0, now(), 'SYSTEM', 0, 64, 1, 'http://download.cloud.com/templates/4.3/systemvm64template-2013-12-23-hyperv.vhd.bz2', '5df45ee6ebe1b703a8805f4e1f4d0818', 0, 'SystemVM Template (HyperV)', 'VHD', 15, 0, 1, 'Hyperv' );
-INSERT INTO `cloud`.`vm_template` (id, uuid, unique_name, name, public, created, type, hvm, bits, account_id, url, checksum, enable_password, display_text, format, guest_os_id, featured, cross_zones, hypervisor_type, extractable)
- VALUES (6, UUID(), 'centos64-x64', 'CentOS 6.4(64-bit) GUI (Hyperv)', 1, now(), 'BUILTIN', 0, 64, 1, 'http://download.cloud.com/releases/4.3/centos6_4_64bit.vhd.bz2', 'eef6b9940ea3ed01221d963d4a012d0a', 0, 'CentOS 6.4 (64-bit) GUI (Hyperv)', 'VHD', 182, 1, 1, 'Hyperv', 1);
+-- 1- already taken, the upgrade 410 to 420 breaks...
+INSERT INTO `cloud`.`vm_template` (id, uuid, unique_name, name, public, created, type, hvm, bits, account_id, url, checksum, enable_password, display_text, format, guest_os_id, featured, cross_zones, hypervisor_type)
+ VALUES (11, UUID(), 'routing-11', 'SystemVM Template (Ovm3)', 0, now(), 'SYSTEM', 0, 32, 1, 'http://nibbler/~funs/iso/systemvmtemplate-4.2-ovm.vhd.bz2', '4425688804dbcf0abc9e9e56c53070d7', 0, 'SystemVM Template (Ovm3)', 'RAW', 183, 0, 1, 'Ovm3' );
INSERT INTO `cloud`.`guest_os_category` (id, uuid, name) VALUES (1, UUID(), 'CentOS');
INSERT INTO `cloud`.`guest_os_category` (id, uuid, name) VALUES (2, UUID(), 'Debian');
@@ -594,3 +598,15 @@ INSERT INTO `cloud`.`guest_os_hypervisor` (hypervisor_type, guest_os_name, guest
INSERT INTO `cloud`.`guest_os_hypervisor` (hypervisor_type, guest_os_name, guest_os_id) VALUES ('KVM', 'Other', 60);
INSERT INTO `cloud`.`guest_os_hypervisor` (hypervisor_type, guest_os_name, guest_os_id) VALUES ('KVM', 'Other', 103);
+INSERT INTO `cloud`.`guest_os_hypervisor` (hypervisor_type, guest_os_name, guest_os_id) VALUES ("Ovm3", 'Sun Solaris 10(32-bit)', 79);
+INSERT INTO `cloud`.`guest_os_hypervisor` (hypervisor_type, guest_os_name, guest_os_id) VALUES ("Ovm3", 'Sun Solaris 10(64-bit)', 80);
+INSERT INTO `cloud`.`guest_os_hypervisor` (hypervisor_type, guest_os_name, guest_os_id) VALUES ("Ovm3", 'Sun Solaris 11(32-bit)', 158);
+INSERT INTO `cloud`.`guest_os_hypervisor` (hypervisor_type, guest_os_name, guest_os_id) VALUES ("Ovm3", 'Sun Solaris 11(64-bit)', 159);
+INSERT INTO `cloud`.`guest_os_hypervisor` (hypervisor_type, guest_os_name, guest_os_id) VALUES ("Ovm3", 'Other Linux (32-bit)', 98);
+INSERT INTO `cloud`.`guest_os_hypervisor` (hypervisor_type, guest_os_name, guest_os_id) VALUES ("Ovm3", 'Other Linux (64-bit)', 99);
+INSERT INTO `cloud`.`guest_os_hypervisor` (hypervisor_type, guest_os_name, guest_os_id) VALUES ('Ovm3', 'Other PV (32-bit)', 139);
+INSERT INTO `cloud`.`guest_os_hypervisor` (hypervisor_type, guest_os_name, guest_os_id) VALUES ('Ovm3', 'Other PV (64-bit)', 140);
+INSERT INTO `cloud`.`guest_os_hypervisor` (hypervisor_type, guest_os_name, guest_os_id) VALUES ('Ovm3', 'DOS', 102);
+INSERT INTO `cloud`.`guest_os_hypervisor` (hypervisor_type, guest_os_name, guest_os_id) VALUES ("Ovm3", 'Windows 8 (32-bit)', 165);
+INSERT INTO `cloud`.`guest_os_hypervisor` (hypervisor_type, guest_os_name, guest_os_id) VALUES ("Ovm3", 'Windows 8 (64-bit)', 166);
+INSERT INTO `cloud`.`guest_os_hypervisor` (hypervisor_type, guest_os_name, guest_os_id) VALUES ("Ovm3", 'Windows Server 2012 (64-bit)', 167);
diff --git a/ui/dictionary.jsp b/ui/dictionary.jsp
index 9026a36be98..4a21bee1160 100644
--- a/ui/dictionary.jsp
+++ b/ui/dictionary.jsp
@@ -388,6 +388,9 @@ dictionary = {
'label.affinity.groups': '',
'label.agent.password': '',
'label.agent.username': '',
+'label.ovm3.pool': '',
+'label.ovm3.cluster': '',
+'label.ovm3.vip': '',
'label.agree': '',
'label.alert': '',
'label.algorithm': '',
diff --git a/ui/scripts/docs.js b/ui/scripts/docs.js
index aad358bb701..306da889d99 100755
--- a/ui/scripts/docs.js
+++ b/ui/scripts/docs.js
@@ -1227,5 +1227,17 @@ cloudStack.docs = {
helpVpcOfferingDescription: {
desc: 'A short description of the offering that can be displayed to users',
externalLink: ''
+ },
+ helpOvm3pool: {
+ desc: 'Pool the Ovm3 nodes in this cluster, required for vm node migrations',
+ externalLink: ''
+ },
+ helpOvm3cluster: {
+ desc: 'Use the native Ovm3 OCFS2 clustering, required for native HA and requires pooling',
+ externalLink: ''
+ },
+ helpOvm3Vip: {
+ desc: 'The VIP used by the pool and cluster',
+ externalLink: ''
}
};
diff --git a/ui/scripts/system.js b/ui/scripts/system.js
index 7d49d8d7250..513781f220b 100644
--- a/ui/scripts/system.js
+++ b/ui/scripts/system.js
@@ -12694,7 +12694,12 @@
'vsmpassword_req'];
return $.inArray($(this).attr('rel'), nexusDvsReqFields) > -1;
});
-
+ if ($form.find('.form-item[rel=hypervisor] select').val() == 'Ovm3') {
+ $form.find('.form-item[rel=ovm3pool]').css('display', 'inline-block');
+ $form.find('.form-item[rel=ovm3cluster]').css('display', 'inline-block');
+ $form.find('.form-item[rel=ovm3vip]').css('display', 'inline-block');
+ }
+
if ($form.find('.form-item[rel=hypervisor] select').val() == 'VMware') {
$form.find('.form-item[rel=vCenterHost]').css('display', 'inline-block');
$form.find('.form-item[rel=vCenterUsername]').css('display', 'inline-block');
@@ -12940,6 +12945,30 @@
required: false
}
},
+
+ //hypervisor==Ovm3 begins here
+ ovm3pool: {
+ label: 'label.ovm3.pool',
+ isHidden: true,
+ isBoolean: true,
+ isChecked: true,
+ docID: 'helpOvm3pool'
+ },
+ ovm3cluster: {
+ label: 'label.ovm3.cluster',
+ isHidden: true,
+ isBoolean: true,
+ isChecked: false,
+ docID: 'helpOvm3cluster'
+ },
+ ovm3vip: {
+ label: 'label.ovm3.vip',
+ isHidden: true,
+ docID: 'helpOvm3Vip',
+ validation: {
+ required: false
+ }
+ },
//hypervisor==VMWare begins here
vCenterHost: {
@@ -12980,7 +13009,6 @@
docID: 'helpOverridePublicNetwork'
},
-
vSwitchPublicType: {
label: 'label.public.traffic.vswitch.type',
select: function (args) {
@@ -13170,7 +13198,11 @@
array1.push("&podId=" + args.data.podId);
var clusterName = args.data.name;
-
+ if (args.data.hypervisor == "Ovm3") {
+ array1.push("&ovm3pool=" + todb(args.data.ovm3pool));
+ array1.push("&ovm3cluster=" + todb(args.data.ovm3cluster));
+ array1.push("&ovm3vip=" + todb(args.data.ovm3vip));
+ }
if (args.data.hypervisor == "VMware") {
array1.push("&username=" + todb(args.data.vCenterUsername));
array1.push("&password=" + todb(args.data.vCenterPassword));
@@ -14208,6 +14240,18 @@
$form.find('.form-item[rel=agentUsername]').css('display', 'inline-block');
$form.find('.form-item[rel=agentUsername]').find('input').val("oracle");
$form.find('.form-item[rel=agentPassword]').css('display', 'inline-block');
+ } else if (selectedClusterObj.hypervisortype == "Ovm3") {
+ //$('li[input_group="general"]', $dialogAddHost).show();
+ $form.find('.form-item[rel=hostname]').css('display', 'inline-block');
+ $form.find('.form-item[rel=username]').css('display', 'inline-block');
+ $form.find('.form-item[rel=password]').css('display', 'inline-block');
+
+ //$('li[input_group="Ovm3"]', $dialogAddHost).show();
+ $form.find('.form-item[rel=agentUsername]').css('display', 'inline-block');
+ $form.find('.form-item[rel=agentUsername]').find('input').val("oracle");
+ $form.find('.form-item[rel=agentPassword]').css('display', 'inline-block');
+ $form.find('.form-item[rel=agentPort]').css('display', 'inline-block');
+ $form.find('.form-item[rel=agentPort]').find('input').val("8899");
} else {
//$('li[input_group="general"]', $dialogAddHost).show();
$form.find('.form-item[rel=hostname]').css('display', 'inline-block');
@@ -14370,6 +14414,16 @@
isPassword: true
},
//input_group="OVM" ends here
+
+ //input_group="OVM3" starts here
+ agentPort: {
+ label: 'label.agent.port',
+ validation: {
+ required: false
+ },
+ isHidden: true
+ },
+ //input_group="OVM3" ends here
//always appear (begin)
hosttags: {
@@ -14434,9 +14488,16 @@
} else if (selectedClusterObj.hypervisortype == "Ovm") {
$.extend(data, {
agentusername: args.data.agentUsername,
- agentpassword: args.data.agentPassword
- });
- }
+ agentpassword: args.data.agentPassword,
+ });
+ } else if (selectedClusterObj.hypervisortype == "Ovm3") {
+ $.extend(data, {
+ agentusername: args.data.agentUsername,
+ agentpassword: args.data.agentPassword,
+ agentport: args.data.agentPort,
+ });
+ }
+
}
var hostId = null;
@@ -15527,6 +15588,22 @@
args.response.success({
data: items
});
+ } else if (selectedClusterObj.hypervisortype == "Ovm3") {
+ var items =[];
+ items.push({
+ id: "nfs",
+ description: "nfs"
+ });
+ /*
+ items.push({
+ id: "ocfs2",
+ description: "ocfs2"
+ });
+ */
+ args.response.success({
+ data: items
+ });
+
} else if (selectedClusterObj.hypervisortype == "LXC") {
var items =[];
items.push({
diff --git a/ui/scripts/templates.js b/ui/scripts/templates.js
index e12927c538a..222e02c582e 100644
--- a/ui/scripts/templates.js
+++ b/ui/scripts/templates.js
@@ -382,6 +382,12 @@
id: 'RAW',
description: 'RAW'
});
+ } else if (args.hypervisor == "Ovm3") {
+ //formatSelect.append("");
+ items.push({
+ id: 'RAW',
+ description: 'RAW'
+ });
} else if (args.hypervisor == "LXC") {
//formatSelect.append("");
items.push({
diff --git a/ui/scripts/zoneWizard.js b/ui/scripts/zoneWizard.js
index 0a84bdb9bc8..9f5ae60dfa2 100755
--- a/ui/scripts/zoneWizard.js
+++ b/ui/scripts/zoneWizard.js
@@ -88,6 +88,9 @@
case 'Ovm':
hypervisorAttr = 'ovmnetworklabel';
break;
+ case 'Ovm3':
+ hypervisorAttr = 'ovmnetworklabel';
+ break;
case 'LXC':
hypervisorAttr = 'lxcnetworklabel';
break;
@@ -474,6 +477,7 @@
nonSupportedHypervisors["BareMetal"] = 1;
nonSupportedHypervisors["Hyperv"] = 1;
nonSupportedHypervisors["Ovm"] = 1;
+ nonSupportedHypervisors["Ovm3"] = 1;
nonSupportedHypervisors["LXC"] = 1;
}
@@ -936,6 +940,15 @@
return $.inArray($(this).attr('rel'), vsmFields) > -1;
});
+ if ($(this).val() == "Ovm3") {
+ $form.find('.form-item[rel=ovm3pool]').css('display', 'inline-block');
+ $form.find('.form-item[rel=ovm3pool]').find('input[type=checkbox]').removeAttr('checked');
+
+ $form.find('.form-item[rel=ovm3cluster]').css('display', 'inline-block');
+ $form.find('.form-item[rel=ovm3cluster]').find('input[type=checkbox]').removeAttr('checked');
+ $form.find('[rel=ovm3vip]').css('display', 'block');$
+ }
+
if ($(this).val() == "VMware") {
//$('li[input_sub_group="external"]', $dialogAddCluster).show();
if (dvSwitchEnabled) {
@@ -1288,6 +1301,18 @@
$form.find('[rel=agentUsername]').css('display', 'block');
$form.find('[rel=agentUsername]').find('input').val("oracle");
$form.find('[rel=agentPassword]').css('display', 'block');
+ } else if (selectedClusterObj.hypervisortype == "Ovm3") {
+ //$('li[input_group="general"]', $dialogAddHost).show();
+ $form.find('.form-item[rel=hostname]').css('display', 'inline-block');
+ $form.find('.form-item[rel=username]').css('display', 'inline-block');
+ $form.find('.form-item[rel=password]').css('display', 'inline-block');
+
+ //$('li[input_group="Ovm3"]', $dialogAddHost).show();
+ $form.find('.form-item[rel=agentUsername]').css('display', 'inline-block');
+ $form.find('.form-item[rel=agentUsername]').find('input').val("oracle");
+ $form.find('.form-item[rel=agentPassword]').css('display', 'inline-block');
+ $form.find('.form-item[rel=agentPort]').css('display', 'inline-block');
+ $form.find('.form-item[rel=agentPort]').find('input').val("8899");
} else {
//$('li[input_group="general"]', $dialogAddHost).show();
$form.find('[rel=hostname]').css('display', 'block');
@@ -1394,6 +1419,16 @@
},
//input_group="OVM" ends here
+ //input_group="OVM3" starts here
+ agentPort: {
+ label: 'label.agent.port',
+ validation: {
+ required: false
+ },
+ isHidden: true
+ },
+ //input_group="OVM3" ends here
+
//always appear (begin)
hosttags: {
label: 'label.host.tags',
@@ -1532,7 +1567,7 @@
args.response.success({
data: items
});
- } else if (selectedClusterObj.hypervisortype == "Ovm") {
+ } else if (selectedClusterObj.hypervisortype == "Ovm" || selectedClusterObj.hypervisortype == "Ovm3") {
var items = [];
items.push({
id: "nfs",
@@ -4413,6 +4448,12 @@
agentusername: args.data.host.agentUsername,
agentpassword: args.data.host.agentPassword
});
+ } else if (selectedClusterObj.hypervisortype == "Ovm3") {
+ $.extend(data, {
+ agentusername: args.data.agentUsername,
+ agentpassword: args.data.agentPassword,
+ agentport: args.data.agentPort,
+ });
}
$.ajax({