diff --git a/agent/src/com/cloud/agent/resource/computing/LibvirtComputingResource.java b/agent/src/com/cloud/agent/resource/computing/LibvirtComputingResource.java
index 980467d5188..574b3669113 100644
--- a/agent/src/com/cloud/agent/resource/computing/LibvirtComputingResource.java
+++ b/agent/src/com/cloud/agent/resource/computing/LibvirtComputingResource.java
@@ -136,7 +136,6 @@ import com.cloud.agent.api.storage.CreatePrivateTemplateAnswer;
import com.cloud.agent.api.storage.CreatePrivateTemplateCommand;
import com.cloud.agent.api.storage.DownloadAnswer;
import com.cloud.agent.api.storage.PrimaryStorageDownloadCommand;
-import com.cloud.agent.api.to.DiskCharacteristicsTO;
import com.cloud.agent.api.to.StoragePoolTO;
import com.cloud.agent.api.to.VolumeTO;
import com.cloud.agent.resource.computing.LibvirtStoragePoolDef.poolType;
@@ -160,13 +159,14 @@ import com.cloud.hypervisor.Hypervisor;
import com.cloud.network.NetworkEnums.RouterPrivateIpStrategy;
import com.cloud.resource.ServerResource;
import com.cloud.resource.ServerResourceBase;
+import com.cloud.storage.Storage;
+import com.cloud.storage.Storage.StorageResourceType;
import com.cloud.storage.StorageLayer;
import com.cloud.storage.StoragePoolVO;
import com.cloud.storage.Volume;
import com.cloud.storage.VolumeVO;
import com.cloud.storage.Storage.ImageFormat;
import com.cloud.storage.Storage.StoragePoolType;
-import com.cloud.storage.Volume.StorageResourceType;
import com.cloud.storage.Volume.VolumeType;
import com.cloud.storage.template.Processor;
import com.cloud.storage.template.QCOW2Processor;
@@ -182,6 +182,7 @@ import com.cloud.utils.net.NetUtils;
import com.cloud.utils.script.OutputInterpreter;
import com.cloud.utils.script.Script;
import com.cloud.vm.ConsoleProxyVO;
+import com.cloud.vm.DiskCharacteristics;
import com.cloud.vm.DomainRouter;
import com.cloud.vm.State;
import com.cloud.vm.VirtualMachineName;
@@ -1162,13 +1163,13 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
}
}
- protected StorageResourceType getStorageResourceType() {
- return StorageResourceType.STORAGE_POOL;
+ protected Storage.StorageResourceType getStorageResourceType() {
+ return Storage.StorageResourceType.STORAGE_POOL;
}
protected Answer execute(CreateCommand cmd) {
StoragePoolTO pool = cmd.getPool();
- DiskCharacteristicsTO dskch = cmd.getDiskCharacteristics();
+ DiskCharacteristics dskch = cmd.getDiskCharacteristics();
StorageVol tmplVol = null;
StoragePool primaryPool = null;
StorageVol vol = null;
diff --git a/api/src/com/cloud/storage/Storage.java b/api/src/com/cloud/storage/Storage.java
index 08eccfeb8ff..106616673b3 100644
--- a/api/src/com/cloud/storage/Storage.java
+++ b/api/src/com/cloud/storage/Storage.java
@@ -18,7 +18,7 @@
package com.cloud.storage;
public class Storage {
- public enum ImageFormat {
+ public static enum ImageFormat {
QCOW2(true, true, false),
RAW(false, false, false),
VHD(true, true, true),
@@ -51,7 +51,7 @@ public class Storage {
}
}
- public enum FileSystem {
+ public static enum FileSystem {
Unknown,
ext3,
ntfs,
@@ -66,7 +66,7 @@ public class Storage {
hfsp
}
- public enum StoragePoolType {
+ public static enum StoragePoolType {
Filesystem(false), //local directory
NetworkFilesystem(true), //NFS or CIFS
IscsiLUN(true), //shared LUN, with a clusterfs overlay
@@ -84,4 +84,6 @@ public class Storage {
return shared;
}
}
+
+ public static enum StorageResourceType {STORAGE_POOL, STORAGE_HOST, SECONDARY_STORAGE}
}
diff --git a/core/src/com/cloud/storage/Volume.java b/api/src/com/cloud/storage/Volume.java
old mode 100755
new mode 100644
similarity index 84%
rename from core/src/com/cloud/storage/Volume.java
rename to api/src/com/cloud/storage/Volume.java
index 45d22ee4018..eaddb7c8195
--- a/core/src/com/cloud/storage/Volume.java
+++ b/api/src/com/cloud/storage/Volume.java
@@ -17,16 +17,23 @@
*/
package com.cloud.storage;
-import com.cloud.async.AsyncInstanceCreateStatus;
public interface Volume {
enum VolumeType {UNKNOWN, ROOT, SWAP, DATADISK};
enum MirrorState {NOT_MIRRORED, ACTIVE, DEFUNCT};
- enum StorageResourceType {STORAGE_POOL, STORAGE_HOST, SECONDARY_STORAGE};
-
- /**
+ enum State {
+ Allocated,
+ Creating,
+ Created,
+ Corrupted,
+ ToBeDestroyed,
+ Expunging,
+ Destroyed
+ }
+
+ /**
* @return the volume name
*/
String getName();
@@ -69,12 +76,9 @@ public interface Volume {
VolumeType getVolumeType();
- StorageResourceType getStorageResourceType();
+ Storage.StorageResourceType getStorageResourceType();
Long getPoolId();
- public AsyncInstanceCreateStatus getStatus();
-
- public void setStatus(AsyncInstanceCreateStatus status);
-
+ State getState();
}
diff --git a/core/src/com/cloud/agent/api/to/DiskCharacteristicsTO.java b/api/src/com/cloud/vm/DiskCharacteristics.java
similarity index 54%
rename from core/src/com/cloud/agent/api/to/DiskCharacteristicsTO.java
rename to api/src/com/cloud/vm/DiskCharacteristics.java
index ec4bf6f8482..b281c661b14 100644
--- a/core/src/com/cloud/agent/api/to/DiskCharacteristicsTO.java
+++ b/api/src/com/cloud/vm/DiskCharacteristics.java
@@ -15,63 +15,97 @@
* along with this program. If not, see .
*
*/
-package com.cloud.agent.api.to;
+package com.cloud.vm;
-import com.cloud.storage.DiskOfferingVO;
import com.cloud.storage.Volume;
-public class DiskCharacteristicsTO {
+/**
+ * DiskCharacteristics describes a disk and what functionality is required from it.
+ * This object is generated by the management server and passed to the allocators
+ * and resources to allocate and create disks. There object is immutable once
+ * it has been created.
+ */
+public class DiskCharacteristics {
private long size;
private String[] tags;
private Volume.VolumeType type;
private String name;
private boolean useLocalStorage;
private boolean recreatable;
+ private long diskOfferingId;
+ private Long templateId;
- protected DiskCharacteristicsTO() {
+ protected DiskCharacteristics() {
}
- public DiskCharacteristicsTO(Volume.VolumeType type, String name, long size, String[] tags, boolean useLocalStorage, boolean recreatable) {
+ public DiskCharacteristics(Volume.VolumeType type, String name, long diskOfferingId, long size, String[] tags, boolean useLocalStorage, boolean recreatable, Long templateId) {
this.type = type;
this.name = name;
this.size = size;
this.tags = tags;
this.useLocalStorage = useLocalStorage;
this.recreatable = recreatable;
+ this.diskOfferingId = diskOfferingId;
+ this.templateId = templateId;
}
-
- public DiskCharacteristicsTO(Volume.VolumeType type, String name, DiskOfferingVO offering, long size) {
- this(type, name, size, offering.getTagsArray(), offering.getUseLocalStorage(), offering.isRecreatable());
- }
-
- public DiskCharacteristicsTO(Volume.VolumeType type, String name, DiskOfferingVO offering) {
- this(type, name, offering.getDiskSizeInBytes(), offering.getTagsArray(), offering.getUseLocalStorage(), offering.isRecreatable());
- }
-
+
+ /**
+ * @return size of the disk requested in bytes.
+ */
public long getSize() {
return size;
}
+ /**
+ * @return Unique name for the disk.
+ */
public String getName() {
return name;
}
+ /**
+ * @return tags for the disk. This can be used to match it to different storage pools.
+ */
public String[] getTags() {
return tags;
}
+ /**
+ * @return type of volume.
+ */
public Volume.VolumeType getType() {
return type;
}
+ /**
+ * @return Does this volume require local storage?
+ */
public boolean useLocalStorage() {
return useLocalStorage;
}
+ /**
+ * @return Is this volume recreatable? A volume is recreatable if the disk's content can be
+ * reconstructed from the template.
+ */
public boolean isRecreatable() {
return recreatable;
}
+ /**
+ * @return template id the disk is based on. Can be null if it is not based on any templates.
+ */
+ public Long getTemplateId() {
+ return templateId;
+ }
+
+ /**
+ * @return disk offering id that the disk is based on.
+ */
+ public long getDiskOfferingId() {
+ return diskOfferingId;
+ }
+
@Override
public String toString() {
return new StringBuilder("DskChr[").append(type).append("|").append(size).append("|").append("]").toString();
diff --git a/api/src/com/cloud/vm/NetworkCharacteristics.java b/api/src/com/cloud/vm/NetworkCharacteristics.java
new file mode 100644
index 00000000000..9d97e02e6a4
--- /dev/null
+++ b/api/src/com/cloud/vm/NetworkCharacteristics.java
@@ -0,0 +1,58 @@
+/**
+ *
+ */
+package com.cloud.vm;
+
+import com.cloud.network.Network.BroadcastDomainType;
+import com.cloud.network.Network.Mode;
+
+public class NetworkCharacteristics {
+ long id;
+ BroadcastDomainType type;
+ String ip4Address;
+ String netmask;
+ String gateway;
+ Mode mode;
+ String[] dns;
+
+ public BroadcastDomainType getType() {
+ return type;
+ }
+
+ public String[] getDns() {
+ return dns;
+ }
+
+ public String getIp4Address() {
+ return ip4Address;
+ }
+
+ public String getNetmask() {
+ return netmask;
+ }
+
+ public String getGateway() {
+ return gateway;
+ }
+
+ public Mode getMode() {
+ return mode;
+ }
+
+ public long getNetworkId() {
+ return id;
+ }
+
+ public NetworkCharacteristics() {
+ }
+
+ public NetworkCharacteristics(long id, BroadcastDomainType type, String ip4Address, String netmask, String gateway, Mode mode, String[] dns) {
+ this.id = id;
+ this.type = type;
+ this.ip4Address = ip4Address;
+ this.netmask = netmask;
+ this.gateway = gateway;
+ this.mode = mode;
+ this.dns = dns;
+ }
+}
diff --git a/api/src/com/cloud/vm/VmCharacteristics.java b/api/src/com/cloud/vm/VmCharacteristics.java
index 6df26121c30..94b5f5ac5e6 100644
--- a/api/src/com/cloud/vm/VmCharacteristics.java
+++ b/api/src/com/cloud/vm/VmCharacteristics.java
@@ -22,12 +22,12 @@ import java.util.Map;
import com.cloud.hypervisor.Hypervisor;
public class VmCharacteristics {
+ long id;
int core;
int speed; // in mhz
long ram; // in bytes
Hypervisor.Type hypervisorType;
VirtualMachine.Type type;
-
Map params;
public VmCharacteristics(VirtualMachine.Type type) {
@@ -39,9 +39,6 @@ public class VmCharacteristics {
}
- public VmCharacteristics() {
- }
-
public int getCores() {
return core;
}
@@ -58,11 +55,15 @@ public class VmCharacteristics {
return hypervisorType;
}
- public VmCharacteristics(int core, int speed, long ram, Hypervisor.Type type, Map params) {
+ public VmCharacteristics(long id, int core, int speed, long ram, Hypervisor.Type type, Map params) {
this.core = core;
this.speed = speed;
this.ram = ram;
this.hypervisorType = type;
this.params = params;
+ this.id = id;
+ }
+
+ protected VmCharacteristics() {
}
}
\ No newline at end of file
diff --git a/build/.gitignore b/build/.gitignore
new file mode 100644
index 00000000000..ca06b0abecc
--- /dev/null
+++ b/build/.gitignore
@@ -0,0 +1 @@
+/override
diff --git a/build/build.number b/build/build.number
new file mode 100644
index 00000000000..e130ae9cdbf
--- /dev/null
+++ b/build/build.number
@@ -0,0 +1,3 @@
+#Build Number for ANT. Do not edit!
+#Mon Aug 16 11:01:21 PDT 2010
+build.number=31
diff --git a/build/developer.xml b/build/developer.xml
old mode 100755
new mode 100644
index 9bb2d33e6e3..0928e48dfd6
--- a/build/developer.xml
+++ b/build/developer.xml
@@ -27,6 +27,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -86,23 +98,11 @@
-
+
-
diff --git a/build/override/build-cloud.properties b/build/override/build-cloud.properties
new file mode 100644
index 00000000000..fbceda3fcaa
--- /dev/null
+++ b/build/override/build-cloud.properties
@@ -0,0 +1,19 @@
+# This is a template file for defining properties needed by build-vmops.xml.
+# If you need to add properties to be used in build-vmops.xml, then you should
+# add it in this file. If all you need is to change the default values,
+# you should "cp build-vmops.properties.template build-vmops.properties"
+# and modify the values within build-vmops.properties.
+
+debug=true
+debuglevel=vars,lines,source
+tomcat.home=/home/tomcat/current
+debug.jvmarg=-Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n
+deprecation=off
+meld.home=/usr/bin
+target.compat.version=1.6
+source.compat.version=1.6
+assertion=-ea
+branding.name=default
+build.type=developer
+premium.name=premium
+#manual.build.number=8
diff --git a/build/override/replace.properties b/build/override/replace.properties
new file mode 100644
index 00000000000..2e1bbaab5e2
--- /dev/null
+++ b/build/override/replace.properties
@@ -0,0 +1,7 @@
+DBUSER=cloud
+DBROOTPW=
+DBPW=cloud
+MSLOG=.\/dist\/vmops.log
+APISERVERLOG=.\/dist\/api.log
+DBHOST=localhost
+
diff --git a/core/src/com/cloud/agent/api/StartupStorageCommand.java b/core/src/com/cloud/agent/api/StartupStorageCommand.java
old mode 100755
new mode 100644
index a698f58468d..1122e82f0d3
--- a/core/src/com/cloud/agent/api/StartupStorageCommand.java
+++ b/core/src/com/cloud/agent/api/StartupStorageCommand.java
@@ -20,7 +20,7 @@ package com.cloud.agent.api;
import java.util.HashMap;
import java.util.Map;
-import com.cloud.storage.Volume;
+import com.cloud.storage.Storage;
import com.cloud.storage.Storage.StoragePoolType;
import com.cloud.storage.template.TemplateInfo;
@@ -31,7 +31,7 @@ public class StartupStorageCommand extends StartupCommand {
Map templateInfo;
long totalSize;
StoragePoolInfo poolInfo;
- Volume.StorageResourceType resourceType;
+ Storage.StorageResourceType resourceType;
StoragePoolType fsType;
Map hostDetails = new HashMap();
String nfsShare;
@@ -91,11 +91,11 @@ public class StartupStorageCommand extends StartupCommand {
this.poolInfo = poolInfo;
}
- public Volume.StorageResourceType getResourceType() {
+ public Storage.StorageResourceType getResourceType() {
return resourceType;
}
- public void setResourceType(Volume.StorageResourceType resourceType) {
+ public void setResourceType(Storage.StorageResourceType resourceType) {
this.resourceType = resourceType;
}
diff --git a/core/src/com/cloud/agent/api/storage/CreateCommand.java b/core/src/com/cloud/agent/api/storage/CreateCommand.java
index 2c0ade671a9..99c3d3051c5 100644
--- a/core/src/com/cloud/agent/api/storage/CreateCommand.java
+++ b/core/src/com/cloud/agent/api/storage/CreateCommand.java
@@ -18,16 +18,16 @@
package com.cloud.agent.api.storage;
import com.cloud.agent.api.Command;
-import com.cloud.agent.api.to.DiskCharacteristicsTO;
import com.cloud.agent.api.to.StoragePoolTO;
import com.cloud.storage.StoragePoolVO;
import com.cloud.storage.VolumeVO;
+import com.cloud.vm.DiskCharacteristics;
import com.cloud.vm.VMInstanceVO;
public class CreateCommand extends Command {
private long volId;
private StoragePoolTO pool;
- private DiskCharacteristicsTO diskCharacteristics;
+ private DiskCharacteristics diskCharacteristics;
private String templateUrl;
private long size;
@@ -44,7 +44,7 @@ public class CreateCommand extends Command {
* @param templateUrl
* @param pool
*/
- public CreateCommand(VolumeVO vol, VMInstanceVO vm, DiskCharacteristicsTO diskCharacteristics, String templateUrl, StoragePoolVO pool) {
+ public CreateCommand(VolumeVO vol, VMInstanceVO vm, DiskCharacteristics diskCharacteristics, String templateUrl, StoragePoolVO pool) {
this(vol, vm, diskCharacteristics, pool, 0);
this.templateUrl = templateUrl;
}
@@ -57,7 +57,7 @@ public class CreateCommand extends Command {
* @param diskCharacteristics
* @param pool
*/
- public CreateCommand(VolumeVO vol, VMInstanceVO vm, DiskCharacteristicsTO diskCharacteristics, StoragePoolVO pool, long size) {
+ public CreateCommand(VolumeVO vol, VMInstanceVO vm, DiskCharacteristics diskCharacteristics, StoragePoolVO pool, long size) {
this.volId = vol.getId();
this.diskCharacteristics = diskCharacteristics;
this.pool = new StoragePoolTO(pool);
@@ -78,7 +78,7 @@ public class CreateCommand extends Command {
return pool;
}
- public DiskCharacteristicsTO getDiskCharacteristics() {
+ public DiskCharacteristics getDiskCharacteristics() {
return diskCharacteristics;
}
diff --git a/core/src/com/cloud/agent/api/to/VolumeTO.java b/core/src/com/cloud/agent/api/to/VolumeTO.java
index e0afde2cb2e..39561f9d310 100644
--- a/core/src/com/cloud/agent/api/to/VolumeTO.java
+++ b/core/src/com/cloud/agent/api/to/VolumeTO.java
@@ -17,12 +17,13 @@
*/
package com.cloud.agent.api.to;
+import com.cloud.storage.Storage;
+import com.cloud.storage.Storage.StorageResourceType;
import com.cloud.storage.StoragePoolVO;
import com.cloud.storage.VMTemplateStoragePoolVO;
import com.cloud.storage.Volume;
import com.cloud.storage.VolumeVO;
import com.cloud.storage.Storage.StoragePoolType;
-import com.cloud.storage.Volume.StorageResourceType;
public class VolumeTO {
@@ -35,11 +36,11 @@ public class VolumeTO {
private String path;
private long size;
private Volume.VolumeType type;
- private Volume.StorageResourceType resourceType;
+ private Storage.StorageResourceType resourceType;
private StoragePoolType storagePoolType;
private long poolId;
- public VolumeTO(long id, Volume.VolumeType type, Volume.StorageResourceType resourceType, StoragePoolType poolType, String name, String mountPoint, String path, long size) {
+ public VolumeTO(long id, Volume.VolumeType type, Storage.StorageResourceType resourceType, StoragePoolType poolType, String name, String mountPoint, String path, long size) {
this.id = id;
this.name= name;
this.path = path;
@@ -65,12 +66,12 @@ public class VolumeTO {
this.id = templatePoolRef.getId();
this.path = templatePoolRef.getInstallPath();
this.size = templatePoolRef.getTemplateSize();
- this.resourceType = StorageResourceType.STORAGE_POOL;
+ this.resourceType = Storage.StorageResourceType.STORAGE_POOL;
this.storagePoolType = pool.getPoolType();
this.mountPoint = pool.getPath();
}
- public Volume.StorageResourceType getResourceType() {
+ public Storage.StorageResourceType getResourceType() {
return resourceType;
}
diff --git a/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java b/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
index 1f5ca0f6827..6503da76def 100644
--- a/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
+++ b/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
@@ -141,18 +141,18 @@ import com.cloud.agent.api.storage.DownloadAnswer;
import com.cloud.agent.api.storage.PrimaryStorageDownloadCommand;
import com.cloud.agent.api.storage.ShareAnswer;
import com.cloud.agent.api.storage.ShareCommand;
-import com.cloud.agent.api.to.DiskCharacteristicsTO;
import com.cloud.agent.api.to.StoragePoolTO;
import com.cloud.agent.api.to.VolumeTO;
import com.cloud.exception.InternalErrorException;
import com.cloud.host.Host.Type;
import com.cloud.hypervisor.Hypervisor;
import com.cloud.resource.ServerResource;
+import com.cloud.storage.Storage;
import com.cloud.storage.Storage.ImageFormat;
import com.cloud.storage.Storage.StoragePoolType;
+import com.cloud.storage.Storage.StorageResourceType;
import com.cloud.storage.StorageLayer;
import com.cloud.storage.StoragePoolVO;
-import com.cloud.storage.Volume.StorageResourceType;
import com.cloud.storage.Volume.VolumeType;
import com.cloud.storage.VolumeVO;
import com.cloud.storage.resource.StoragePoolResource;
@@ -165,6 +165,7 @@ import com.cloud.utils.exception.CloudRuntimeException;
import com.cloud.utils.net.NetUtils;
import com.cloud.utils.script.Script;
import com.cloud.vm.ConsoleProxyVO;
+import com.cloud.vm.DiskCharacteristics;
import com.cloud.vm.DomainRouter;
import com.cloud.vm.SecondaryStorageVmVO;
import com.cloud.vm.State;
@@ -1119,8 +1120,8 @@ public abstract class CitrixResourceBase implements StoragePoolResource, ServerR
}
}
- protected StorageResourceType getStorageResourceType() {
- return StorageResourceType.STORAGE_POOL;
+ protected Storage.StorageResourceType getStorageResourceType() {
+ return Storage.StorageResourceType.STORAGE_POOL;
}
protected CheckHealthAnswer execute(CheckHealthCommand cmd) {
@@ -3423,7 +3424,7 @@ public abstract class CitrixResourceBase implements StoragePoolResource, ServerR
StartupStorageCommand cmd = new StartupStorageCommand();
cmd.setPoolInfo(pInfo);
cmd.setGuid(_host.uuid);
- cmd.setResourceType(StorageResourceType.STORAGE_POOL);
+ cmd.setResourceType(Storage.StorageResourceType.STORAGE_POOL);
return cmd;
} catch (XenAPIException e) {
String msg = "build startupstoragecommand err in host:" + _host.uuid + e.toString();
@@ -4263,7 +4264,7 @@ public abstract class CitrixResourceBase implements StoragePoolResource, ServerR
public CreateAnswer execute(CreateCommand cmd) {
StoragePoolTO pool = cmd.getPool();
- DiskCharacteristicsTO dskch = cmd.getDiskCharacteristics();
+ DiskCharacteristics dskch = cmd.getDiskCharacteristics();
VDI vdi = null;
Connection conn = getConnection();
@@ -4293,7 +4294,7 @@ public abstract class CitrixResourceBase implements StoragePoolResource, ServerR
vdir = vdi.getRecord(conn);
s_logger.debug("Succesfully created VDI for " + cmd + ". Uuid = " + vdir.uuid);
- VolumeTO vol = new VolumeTO(cmd.getVolumeId(), dskch.getType(), StorageResourceType.STORAGE_POOL, pool.getType(), vdir.nameLabel, pool.getPath(), vdir.uuid,
+ VolumeTO vol = new VolumeTO(cmd.getVolumeId(), dskch.getType(), Storage.StorageResourceType.STORAGE_POOL, pool.getType(), vdir.nameLabel, pool.getPath(), vdir.uuid,
vdir.virtualSize);
return new CreateAnswer(cmd, vol);
} catch (Exception e) {
diff --git a/core/src/com/cloud/storage/DiskOfferingVO.java b/core/src/com/cloud/storage/DiskOfferingVO.java
index 5b972e817a0..eaed5fa3d4b 100644
--- a/core/src/com/cloud/storage/DiskOfferingVO.java
+++ b/core/src/com/cloud/storage/DiskOfferingVO.java
@@ -86,8 +86,7 @@ public class DiskOfferingVO implements DiskOffering {
@Column(name="use_local_storage")
private boolean useLocalStorage;
-
-
+
public DiskOfferingVO() {
}
diff --git a/core/src/com/cloud/storage/FileSystemStorageResource.java b/core/src/com/cloud/storage/FileSystemStorageResource.java
index 4df2f409583..72f180935bb 100644
--- a/core/src/com/cloud/storage/FileSystemStorageResource.java
+++ b/core/src/com/cloud/storage/FileSystemStorageResource.java
@@ -41,7 +41,7 @@ import com.cloud.agent.api.storage.UpgradeDiskAnswer;
import com.cloud.agent.api.storage.UpgradeDiskCommand;
import com.cloud.agent.api.to.VolumeTO;
import com.cloud.storage.Storage.StoragePoolType;
-import com.cloud.storage.Volume.StorageResourceType;
+import com.cloud.storage.Storage.StorageResourceType;
import com.cloud.storage.template.TemplateInfo;
import com.cloud.utils.exception.CloudRuntimeException;
import com.cloud.utils.net.NfsUtils;
@@ -329,8 +329,8 @@ public abstract class FileSystemStorageResource extends StorageResource {
}
@Override
- protected StorageResourceType getStorageResourceType() {
- return StorageResourceType.STORAGE_POOL;
+ protected Storage.StorageResourceType getStorageResourceType() {
+ return Storage.StorageResourceType.STORAGE_POOL;
}
protected String mountNfs(String hostAddress, String hostPath, String localPath) {
diff --git a/core/src/com/cloud/storage/StorageManager.java b/core/src/com/cloud/storage/StorageManager.java
index 7b7ed9c1aef..77629924d44 100644
--- a/core/src/com/cloud/storage/StorageManager.java
+++ b/core/src/com/cloud/storage/StorageManager.java
@@ -34,7 +34,6 @@ import com.cloud.host.Host;
import com.cloud.host.HostVO;
import com.cloud.service.ServiceOfferingVO;
import com.cloud.user.Account;
-import com.cloud.uservm.UserVm;
import com.cloud.utils.Pair;
import com.cloud.utils.component.Manager;
import com.cloud.utils.exception.ExecutionException;
diff --git a/core/src/com/cloud/storage/StorageResource.java b/core/src/com/cloud/storage/StorageResource.java
old mode 100755
new mode 100644
index 6ca2dd80cc7..c80509708a4
--- a/core/src/com/cloud/storage/StorageResource.java
+++ b/core/src/com/cloud/storage/StorageResource.java
@@ -304,7 +304,7 @@ public abstract class StorageResource extends ServerResourceBase implements Serv
protected abstract Answer execute(DestroyCommand cmd) ;
protected abstract UpgradeDiskAnswer execute(final UpgradeDiskCommand cmd);
protected abstract String delete(String imagePath, String extra);
- protected abstract Volume.StorageResourceType getStorageResourceType();
+ protected abstract Storage.StorageResourceType getStorageResourceType();
protected abstract void configureFolders(String name, Map params) throws ConfigurationException ;
diff --git a/core/src/com/cloud/storage/VolumeVO.java b/core/src/com/cloud/storage/VolumeVO.java
old mode 100755
new mode 100644
index c85d628b8da..fe0c6ce0e02
--- a/core/src/com/cloud/storage/VolumeVO.java
+++ b/core/src/com/cloud/storage/VolumeVO.java
@@ -96,7 +96,7 @@ public class VolumeVO implements Volume {
String hostip;
@Column(name="disk_offering_id")
- Long diskOfferingId;
+ long diskOfferingId;
@Expose
@Column(name="mirror_vol")
@@ -129,7 +129,7 @@ public class VolumeVO implements Volume {
@Expose
@Column(name="resource_type")
@Enumerated(EnumType.STRING)
- StorageResourceType storageResourceType;
+ Storage.StorageResourceType storageResourceType;
@Expose
@Column(name="status", updatable = true, nullable=false)
@@ -143,6 +143,10 @@ public class VolumeVO implements Volume {
@Column(name="recreatable")
boolean recreatable;
+ @Column(name="state")
+ @Enumerated(value=EnumType.STRING)
+ private State state;
+
/**
* Constructor for data disk.
* @param type
@@ -167,9 +171,24 @@ public class VolumeVO implements Volume {
this.templateId = null;
this.mirrorState = MirrorState.NOT_MIRRORED;
this.mirrorVolume = null;
- this.storageResourceType = StorageResourceType.STORAGE_POOL;
+ this.storageResourceType = Storage.StorageResourceType.STORAGE_POOL;
this.poolType = null;
}
+
+ // Real Constructor
+ public VolumeVO(VolumeType type, String name, long dcId, long domainId, long accountId, long diskOfferingId, long size) {
+ this.volumeType = type;
+ this.name = name;
+ this.dataCenterId = dcId;
+ this.accountId = accountId;
+ this.domainId = domainId;
+ this.size = size;
+ this.mirrorVolume = null;
+ this.mirrorState = MirrorState.NOT_MIRRORED;
+ this.diskOfferingId = diskOfferingId;
+ this.status = AsyncInstanceCreateStatus.Creating;
+ this.state = State.Allocated;
+ }
/**
* Constructor for volume based on a template.
@@ -371,11 +390,11 @@ public class VolumeVO implements Volume {
this.mirrorState = mirrorState;
}
- public Long getDiskOfferingId() {
+ public long getDiskOfferingId() {
return diskOfferingId;
}
- public void setDiskOfferingId(Long diskOfferingId) {
+ public void setDiskOfferingId(long diskOfferingId) {
this.diskOfferingId = diskOfferingId;
}
@@ -404,11 +423,11 @@ public class VolumeVO implements Volume {
}
@Override
- public StorageResourceType getStorageResourceType() {
+ public Storage.StorageResourceType getStorageResourceType() {
return storageResourceType;
}
- public void setStorageResourceType(StorageResourceType storageResourceType2) {
+ public void setStorageResourceType(Storage.StorageResourceType storageResourceType2) {
this.storageResourceType = storageResourceType2;
}
@@ -420,12 +439,10 @@ public class VolumeVO implements Volume {
this.poolId = poolId;
}
- @Override
public AsyncInstanceCreateStatus getStatus() {
return status;
}
- @Override
public void setStatus(AsyncInstanceCreateStatus status) {
this.status = status;
}
@@ -433,6 +450,10 @@ public class VolumeVO implements Volume {
public Date getUpdated() {
return updated;
}
+
+ public State getState() {
+ return state;
+ }
public void setUpdated(Date updated) {
this.updated = updated;
diff --git a/core/src/com/cloud/storage/resource/DummySecondaryStorageResource.java b/core/src/com/cloud/storage/resource/DummySecondaryStorageResource.java
index b15a538de78..611dc1c5450 100644
--- a/core/src/com/cloud/storage/resource/DummySecondaryStorageResource.java
+++ b/core/src/com/cloud/storage/resource/DummySecondaryStorageResource.java
@@ -42,7 +42,7 @@ import com.cloud.host.Host;
import com.cloud.host.Host.Type;
import com.cloud.resource.ServerResource;
import com.cloud.resource.ServerResourceBase;
-import com.cloud.storage.Volume;
+import com.cloud.storage.Storage;
import com.cloud.storage.Storage.StoragePoolType;
import com.cloud.storage.template.TemplateInfo;
@@ -102,7 +102,7 @@ public class DummySecondaryStorageResource extends ServerResourceBase implements
StoragePoolType.NetworkFilesystem, 1024*1024*1024*100L,
new HashMap());
- cmd.setResourceType(Volume.StorageResourceType.SECONDARY_STORAGE);
+ cmd.setResourceType(Storage.StorageResourceType.SECONDARY_STORAGE);
cmd.setIqn(null);
cmd.setNfsShare(_guid);
diff --git a/core/src/com/cloud/storage/resource/NfsSecondaryStorageResource.java b/core/src/com/cloud/storage/resource/NfsSecondaryStorageResource.java
index dc00d8983d0..51be90328c7 100644
--- a/core/src/com/cloud/storage/resource/NfsSecondaryStorageResource.java
+++ b/core/src/com/cloud/storage/resource/NfsSecondaryStorageResource.java
@@ -52,8 +52,8 @@ import com.cloud.host.Host;
import com.cloud.host.Host.Type;
import com.cloud.resource.ServerResource;
import com.cloud.resource.ServerResourceBase;
+import com.cloud.storage.Storage;
import com.cloud.storage.StorageLayer;
-import com.cloud.storage.Volume;
import com.cloud.storage.Storage.StoragePoolType;
import com.cloud.storage.template.DownloadManager;
import com.cloud.storage.template.DownloadManagerImpl;
@@ -600,7 +600,7 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
final StartupStorageCommand cmd = new StartupStorageCommand(_parent, StoragePoolType.NetworkFilesystem, getTotalSize(), new HashMap());
- cmd.setResourceType(Volume.StorageResourceType.SECONDARY_STORAGE);
+ cmd.setResourceType(Storage.StorageResourceType.SECONDARY_STORAGE);
cmd.setIqn(null);
fillNetworkInformation(cmd);
diff --git a/server/src/com/cloud/agent/manager/AgentManagerImpl.java b/server/src/com/cloud/agent/manager/AgentManagerImpl.java
old mode 100755
new mode 100644
index a34cd13381f..d360d1ec242
--- a/server/src/com/cloud/agent/manager/AgentManagerImpl.java
+++ b/server/src/com/cloud/agent/manager/AgentManagerImpl.java
@@ -110,11 +110,12 @@ import com.cloud.resource.Discoverer;
import com.cloud.resource.ServerResource;
import com.cloud.service.ServiceOfferingVO;
import com.cloud.storage.GuestOSCategoryVO;
+import com.cloud.storage.Storage;
+import com.cloud.storage.Storage.StorageResourceType;
import com.cloud.storage.StoragePoolVO;
import com.cloud.storage.VMTemplateHostVO;
import com.cloud.storage.VMTemplateVO;
import com.cloud.storage.VirtualMachineTemplate;
-import com.cloud.storage.Volume.StorageResourceType;
import com.cloud.storage.dao.GuestOSCategoryDao;
import com.cloud.storage.dao.StoragePoolDao;
import com.cloud.storage.dao.StoragePoolHostDao;
@@ -1403,7 +1404,7 @@ public class AgentManagerImpl implements AgentManager, HandlerFactory {
if (startup instanceof StartupStorageCommand) {
StartupStorageCommand ssCmd = ((StartupStorageCommand) startup);
- if (ssCmd.getResourceType() == StorageResourceType.SECONDARY_STORAGE) {
+ if (ssCmd.getResourceType() == Storage.StorageResourceType.SECONDARY_STORAGE) {
type = Host.Type.SecondaryStorage;
if (resource != null && resource instanceof DummySecondaryStorageResource){
resource = null;
@@ -1755,7 +1756,7 @@ public class AgentManagerImpl implements AgentManager, HandlerFactory {
if (startup instanceof StartupStorageCommand) {
StartupStorageCommand ssCmd = (StartupStorageCommand) startup;
- if (ssCmd.getResourceType() == StorageResourceType.STORAGE_HOST) {
+ if (ssCmd.getResourceType() == Storage.StorageResourceType.STORAGE_HOST) {
CapacityVO capacity = new CapacityVO(server.getId(), server.getDataCenterId(), server.getPodId(), 0L, server.getTotalSize(),
CapacityVO.CAPACITY_TYPE_STORAGE);
_capacityDao.persist(capacity);
diff --git a/server/src/com/cloud/api/commands/ListVolumesCmd.java b/server/src/com/cloud/api/commands/ListVolumesCmd.java
index ca414103ec1..a4680be0441 100644
--- a/server/src/com/cloud/api/commands/ListVolumesCmd.java
+++ b/server/src/com/cloud/api/commands/ListVolumesCmd.java
@@ -218,11 +218,8 @@ public class ListVolumesCmd extends BaseCmd{
volumeData.add(new Pair(BaseCmd.Properties.STORAGE_TYPE.getName(), storageType));
volumeData.add(new Pair(BaseCmd.Properties.DISK_OFFERING_ID.getName(),volume.getDiskOfferingId()));
- if(volume.getDiskOfferingId()!=null)
- {
- volumeData.add(new Pair(BaseCmd.Properties.DISK_OFFERING_NAME.getName(),getManagementServer().findDiskOfferingById(volume.getDiskOfferingId()).getName()));
- volumeData.add(new Pair(BaseCmd.Properties.DISK_OFFERING_DISPLAY_TEXT.getName(),getManagementServer().findDiskOfferingById(volume.getDiskOfferingId()).getDisplayText()));
- }
+ volumeData.add(new Pair(BaseCmd.Properties.DISK_OFFERING_NAME.getName(),getManagementServer().findDiskOfferingById(volume.getDiskOfferingId()).getName()));
+ volumeData.add(new Pair(BaseCmd.Properties.DISK_OFFERING_DISPLAY_TEXT.getName(),getManagementServer().findDiskOfferingById(volume.getDiskOfferingId()).getDisplayText()));
Long poolId = volume.getPoolId();
String poolName = (poolId == null) ? "none" : getManagementServer().findPoolById(poolId).getName();
volumeData.add(new Pair(BaseCmd.Properties.STORAGE.getName(), poolName));
diff --git a/server/src/com/cloud/storage/LocalStoragePoolListener.java b/server/src/com/cloud/storage/LocalStoragePoolListener.java
index 626a7cad7d8..2c82edfe064 100644
--- a/server/src/com/cloud/storage/LocalStoragePoolListener.java
+++ b/server/src/com/cloud/storage/LocalStoragePoolListener.java
@@ -29,7 +29,7 @@ import com.cloud.agent.api.StartupStorageCommand;
import com.cloud.agent.api.StoragePoolInfo;
import com.cloud.host.HostVO;
import com.cloud.host.Status;
-import com.cloud.storage.Volume.StorageResourceType;
+import com.cloud.storage.Storage.StorageResourceType;
import com.cloud.storage.dao.StoragePoolDao;
import com.cloud.storage.dao.StoragePoolHostDao;
import com.cloud.utils.component.Inject;
@@ -72,7 +72,7 @@ public class LocalStoragePoolListener implements Listener {
StartupStorageCommand ssCmd = (StartupStorageCommand)cmd;
- if (ssCmd.getResourceType() != StorageResourceType.STORAGE_POOL) {
+ if (ssCmd.getResourceType() != Storage.StorageResourceType.STORAGE_POOL) {
return true;
}
diff --git a/server/src/com/cloud/storage/StorageManagerImpl.java b/server/src/com/cloud/storage/StorageManagerImpl.java
index a25e42c3f0c..f13c6b30699 100644
--- a/server/src/com/cloud/storage/StorageManagerImpl.java
+++ b/server/src/com/cloud/storage/StorageManagerImpl.java
@@ -55,7 +55,6 @@ import com.cloud.agent.api.storage.CreateAnswer;
import com.cloud.agent.api.storage.CreateCommand;
import com.cloud.agent.api.storage.DeleteTemplateCommand;
import com.cloud.agent.api.storage.DestroyCommand;
-import com.cloud.agent.api.to.DiskCharacteristicsTO;
import com.cloud.agent.api.to.VolumeTO;
import com.cloud.alert.AlertManager;
import com.cloud.api.BaseCmd;
@@ -64,7 +63,6 @@ import com.cloud.async.AsyncJobExecutor;
import com.cloud.async.AsyncJobManager;
import com.cloud.async.AsyncJobVO;
import com.cloud.async.BaseAsyncJobExecutor;
-import com.cloud.async.executor.VMOperationParam;
import com.cloud.capacity.CapacityVO;
import com.cloud.capacity.dao.CapacityDao;
import com.cloud.configuration.Config;
@@ -91,9 +89,9 @@ import com.cloud.exception.ResourceAllocationException;
import com.cloud.exception.ResourceInUseException;
import com.cloud.exception.StorageUnavailableException;
import com.cloud.host.Host;
+import com.cloud.host.Host.Type;
import com.cloud.host.HostVO;
import com.cloud.host.Status;
-import com.cloud.host.Host.Type;
import com.cloud.host.dao.DetailsDao;
import com.cloud.host.dao.HostDao;
import com.cloud.hypervisor.Hypervisor;
@@ -104,7 +102,6 @@ import com.cloud.service.dao.ServiceOfferingDao;
import com.cloud.storage.Storage.ImageFormat;
import com.cloud.storage.Storage.StoragePoolType;
import com.cloud.storage.Volume.MirrorState;
-import com.cloud.storage.Volume.StorageResourceType;
import com.cloud.storage.Volume.VolumeType;
import com.cloud.storage.allocator.StoragePoolAllocator;
import com.cloud.storage.dao.DiskOfferingDao;
@@ -122,6 +119,7 @@ import com.cloud.storage.snapshot.SnapshotScheduler;
import com.cloud.template.TemplateManager;
import com.cloud.user.Account;
import com.cloud.user.AccountManager;
+import com.cloud.user.AccountVO;
import com.cloud.user.User;
import com.cloud.user.dao.AccountDao;
import com.cloud.uservm.UserVm;
@@ -138,7 +136,7 @@ import com.cloud.utils.db.SearchCriteria;
import com.cloud.utils.db.Transaction;
import com.cloud.utils.exception.CloudRuntimeException;
import com.cloud.utils.exception.ExecutionException;
-import com.cloud.vm.ConsoleProxyVO;
+import com.cloud.vm.DiskCharacteristics;
import com.cloud.vm.State;
import com.cloud.vm.UserVmManager;
import com.cloud.vm.UserVmVO;
@@ -227,6 +225,39 @@ public class StorageManagerImpl implements StorageManager {
return true;
}
+ protected void setDeviceId(VolumeVO vol) {
+ //TODO: Need to figure out what to do here.
+ vol.setDeviceId(1l);
+ }
+
+ @DB
+ public List allocate(DiskCharacteristics rootDisk, List dataDisks, VMInstanceVO vm, DataCenterVO dc, AccountVO account) {
+ ArrayList vols = new ArrayList(dataDisks.size() + 1);
+ VolumeVO dataVol = null;
+ VolumeVO rootVol = null;
+ long deviceId = 0;
+ Transaction txn = Transaction.currentTxn();
+ txn.start();
+ rootVol = new VolumeVO(VolumeType.ROOT, rootDisk.getName(), dc.getId(), account.getDomainId(), account.getId(), rootDisk.getDiskOfferingId(), rootDisk.getSize());
+ if (rootDisk.getTemplateId() != null) {
+ rootVol.setTemplateId(rootDisk.getTemplateId());
+ }
+ rootVol.setInstanceId(vm.getId());
+ rootVol.setDeviceId(deviceId++);
+ rootVol = _volsDao.persist(rootVol);
+ vols.add(rootVol);
+ for (DiskCharacteristics dataDisk : dataDisks) {
+ dataVol = new VolumeVO(VolumeType.DATADISK, dataDisk.getName(), dc.getId(), account.getDomainId(), account.getId(), dataDisk.getDiskOfferingId(), dataDisk.getSize());
+ dataVol.setDeviceId(deviceId++);
+ dataVol = _volsDao.persist(dataVol);
+ dataVol.setInstanceId(vm.getId());
+ vols.add(dataVol);
+ }
+ txn.commit();
+
+ return vols;
+ }
+
public List prepare(VMInstanceVO vm, HostVO host) {
List vols = _volsDao.findCreatedByInstance(vm.getId());
List recreateVols = new ArrayList(vols.size());
@@ -259,9 +290,7 @@ public class StorageManagerImpl implements StorageManager {
DataCenterVO dc = _dcDao.findById(create.getDataCenterId());
HostPodVO pod = _podDao.findById(host.getPodId());
DiskOfferingVO diskOffering = null;
- if (vol.getDiskOfferingId() != null) {
- diskOffering = _diskOfferingDao.findById(vol.getDiskOfferingId());
- }
+ diskOffering = _diskOfferingDao.findById(vol.getDiskOfferingId());
ServiceOfferingVO offering;
if (vm instanceof UserVmVO) {
offering = _offeringDao.findById(((UserVmVO)vm).getServiceOfferingId());
@@ -333,7 +362,7 @@ public class StorageManagerImpl implements StorageManager {
return unshare(vm, vols, host) ? vols : null;
}
- protected StoragePoolVO findStoragePool(DiskCharacteristicsTO dskCh, final DataCenterVO dc, HostPodVO pod, Long clusterId, final ServiceOffering offering, final VMInstanceVO vm, final VMTemplateVO template, final Set avoid) {
+ protected StoragePoolVO findStoragePool(DiskCharacteristics dskCh, final DataCenterVO dc, HostPodVO pod, Long clusterId, final ServiceOffering offering, final VMInstanceVO vm, final VMTemplateVO template, final Set avoid) {
Enumeration en = _storagePoolAllocators.enumeration();
while (en.hasMoreElements()) {
final StoragePoolAllocator allocator = en.nextElement();
@@ -385,7 +414,7 @@ public class StorageManagerImpl implements StorageManager {
return answers[0];
}
- protected DiskCharacteristicsTO createDiskCharacteristics(VolumeVO volume, VMTemplateVO template, DataCenterVO dc, DiskOfferingVO diskOffering) {
+ protected DiskCharacteristics createDiskCharacteristics(VolumeVO volume, VMTemplateVO template, DataCenterVO dc, DiskOfferingVO diskOffering) {
if (volume.getVolumeType() == VolumeType.ROOT && Storage.ImageFormat.ISO != template.getFormat()) {
SearchCriteria sc = HostTemplateStatesSearch.create();
sc.setParameters("id", template.getId());
@@ -398,9 +427,9 @@ public class StorageManagerImpl implements StorageManager {
}
VMTemplateHostVO ss = sss.get(0);
- return new DiskCharacteristicsTO(volume.getVolumeType(), volume.getName(), diskOffering, ss.getSize());
+ return new DiskCharacteristics(volume.getVolumeType(), volume.getName(), diskOffering.getId(), ss.getSize(), diskOffering.getTagsArray(), diskOffering.getUseLocalStorage(), diskOffering.isRecreatable(), Storage.ImageFormat.ISO != template.getFormat() ? template.getId() : null);
} else {
- return new DiskCharacteristicsTO(volume.getVolumeType(), volume.getName(), diskOffering);
+ return new DiskCharacteristics(volume.getVolumeType(), volume.getName(), diskOffering.getId(), diskOffering.getDiskSizeInBytes(), diskOffering.getTagsArray(), diskOffering.getUseLocalStorage(), diskOffering.isRecreatable(), null);
}
}
@@ -436,7 +465,7 @@ public class StorageManagerImpl implements StorageManager {
volume.setDiskOfferingId(diskOffering.getId());
}
volume.setSize(originalVolumeSize);
- volume.setStorageResourceType(StorageResourceType.STORAGE_POOL);
+ volume.setStorageResourceType(Storage.StorageResourceType.STORAGE_POOL);
volume.setInstanceId(null);
volume.setUpdated(new Date());
volume.setStatus(AsyncInstanceCreateStatus.Creating);
@@ -462,7 +491,7 @@ public class StorageManagerImpl implements StorageManager {
String volumeUUID = null;
String details = null;
- DiskCharacteristicsTO dskCh = createDiskCharacteristics(volume, template, dc, diskOffering);
+ DiskCharacteristics dskCh = createDiskCharacteristics(volume, template, dc, diskOffering);
// Determine what pod to store the volume in
@@ -617,9 +646,7 @@ public class StorageManagerImpl implements StorageManager {
if(originalVolume.getTemplateId() != null){
templateId = originalVolume.getTemplateId();
}
- if(originalVolume.getDiskOfferingId() != null){
- diskOfferingId = originalVolume.getDiskOfferingId();
- }
+ diskOfferingId = originalVolume.getDiskOfferingId();
long sizeMB = createdVolume.getSize()/(1024*1024);
String poolName = _storagePoolDao.findById(createdVolume.getPoolId()).getName();
@@ -690,7 +717,7 @@ public class StorageManagerImpl implements StorageManager {
StoragePoolVO pool = null;
final HashSet avoidPools = new HashSet(avoids);
- DiskCharacteristicsTO dskCh = null;
+ DiskCharacteristics dskCh = null;
if (volume.getVolumeType() == VolumeType.ROOT && Storage.ImageFormat.ISO != template.getFormat()) {
dskCh = createDiskCharacteristics(volume, template, dc, offering);
} else {
@@ -1439,7 +1466,7 @@ public class StorageManagerImpl implements StorageManager {
public VolumeVO moveVolume(VolumeVO volume, long destPoolDcId, Long destPoolPodId, Long destPoolClusterId) throws InternalErrorException {
// Find a destination storage pool with the specified criteria
DiskOfferingVO diskOffering = _diskOfferingDao.findById(volume.getDiskOfferingId());
- DiskCharacteristicsTO dskCh = new DiskCharacteristicsTO(volume.getVolumeType(), volume.getName(), diskOffering);
+ DiskCharacteristics dskCh = new DiskCharacteristics(volume.getVolumeType(), volume.getName(), diskOffering.getId(), diskOffering.getDiskSizeInBytes(), diskOffering.getTagsArray(), diskOffering.getUseLocalStorage(), diskOffering.isRecreatable(), null);
DataCenterVO destPoolDataCenter = _dcDao.findById(destPoolDcId);
HostPodVO destPoolPod = _podDao.findById(destPoolPodId);
StoragePoolVO destPool = findStoragePool(dskCh, destPoolDataCenter, destPoolPod, destPoolClusterId, null, null, null, new HashSet());
@@ -1523,7 +1550,7 @@ public class StorageManagerImpl implements StorageManager {
volume.setDomainId(account.getDomainId().longValue());
volume.setMirrorState(MirrorState.NOT_MIRRORED);
volume.setDiskOfferingId(diskOffering.getId());
- volume.setStorageResourceType(StorageResourceType.STORAGE_POOL);
+ volume.setStorageResourceType(Storage.StorageResourceType.STORAGE_POOL);
volume.setInstanceId(null);
volume.setUpdated(new Date());
volume.setStatus(AsyncInstanceCreateStatus.Creating);
diff --git a/server/src/com/cloud/storage/allocator/AbstractStoragePoolAllocator.java b/server/src/com/cloud/storage/allocator/AbstractStoragePoolAllocator.java
index ed8d67ca8a3..b332bd187cc 100644
--- a/server/src/com/cloud/storage/allocator/AbstractStoragePoolAllocator.java
+++ b/server/src/com/cloud/storage/allocator/AbstractStoragePoolAllocator.java
@@ -27,7 +27,6 @@ import javax.naming.ConfigurationException;
import org.apache.log4j.Logger;
-import com.cloud.agent.api.to.DiskCharacteristicsTO;
import com.cloud.configuration.dao.ConfigurationDao;
import com.cloud.host.Host;
import com.cloud.host.HostVO;
@@ -56,6 +55,7 @@ import com.cloud.utils.Pair;
import com.cloud.utils.component.AdapterBase;
import com.cloud.utils.component.ComponentLocator;
import com.cloud.utils.component.Inject;
+import com.cloud.vm.DiskCharacteristics;
import com.cloud.vm.VMInstanceVO;
import com.cloud.vm.VirtualMachine;
@@ -100,7 +100,7 @@ public abstract class AbstractStoragePoolAllocator extends AdapterBase implement
return true;
}
- abstract boolean allocatorIsCorrectType(DiskCharacteristicsTO dskCh, VMInstanceVO vm, ServiceOffering offering);
+ abstract boolean allocatorIsCorrectType(DiskCharacteristics dskCh, VMInstanceVO vm, ServiceOffering offering);
protected boolean templateAvailable(long templateId, long poolId) {
VMTemplateStorageResourceAssoc thvo = _templatePoolDao.findByPoolTemplate(poolId, templateId);
@@ -114,7 +114,7 @@ public abstract class AbstractStoragePoolAllocator extends AdapterBase implement
}
}
- protected boolean localStorageAllocationNeeded(DiskCharacteristicsTO dskCh, VMInstanceVO vm, ServiceOffering offering) {
+ protected boolean localStorageAllocationNeeded(DiskCharacteristics dskCh, VMInstanceVO vm, ServiceOffering offering) {
if (vm == null) {
// We are finding a pool for a volume, so we need a shared storage allocator
return false;
@@ -128,12 +128,12 @@ public abstract class AbstractStoragePoolAllocator extends AdapterBase implement
}
}
- protected boolean poolIsCorrectType(DiskCharacteristicsTO dskCh, StoragePool pool, VMInstanceVO vm, ServiceOffering offering) {
+ protected boolean poolIsCorrectType(DiskCharacteristics dskCh, StoragePool pool, VMInstanceVO vm, ServiceOffering offering) {
boolean localStorageAllocationNeeded = localStorageAllocationNeeded(dskCh, vm, offering);
return ((!localStorageAllocationNeeded && pool.getPoolType().isShared()) || (localStorageAllocationNeeded && !pool.getPoolType().isShared()));
}
- protected boolean checkPool(Set extends StoragePool> avoid, StoragePoolVO pool, DiskCharacteristicsTO dskCh, VMTemplateVO template, List templatesInPool, ServiceOffering offering,
+ protected boolean checkPool(Set extends StoragePool> avoid, StoragePoolVO pool, DiskCharacteristics dskCh, VMTemplateVO template, List templatesInPool, ServiceOffering offering,
VMInstanceVO vm, StatsCollector sc) {
if (avoid.contains(pool)) {
return false;
diff --git a/server/src/com/cloud/storage/allocator/FirstFitStoragePoolAllocator.java b/server/src/com/cloud/storage/allocator/FirstFitStoragePoolAllocator.java
index ae9bf16f7db..24bc8a3e6c9 100644
--- a/server/src/com/cloud/storage/allocator/FirstFitStoragePoolAllocator.java
+++ b/server/src/com/cloud/storage/allocator/FirstFitStoragePoolAllocator.java
@@ -25,7 +25,6 @@ import javax.ejb.Local;
import org.apache.log4j.Logger;
-import com.cloud.agent.api.to.DiskCharacteristicsTO;
import com.cloud.dc.DataCenterVO;
import com.cloud.dc.HostPodVO;
import com.cloud.offering.ServiceOffering;
@@ -33,6 +32,7 @@ import com.cloud.server.StatsCollector;
import com.cloud.storage.StoragePool;
import com.cloud.storage.StoragePoolVO;
import com.cloud.storage.VMTemplateVO;
+import com.cloud.vm.DiskCharacteristics;
import com.cloud.vm.VMInstanceVO;
@Local(value=StoragePoolAllocator.class)
@@ -40,12 +40,12 @@ public class FirstFitStoragePoolAllocator extends AbstractStoragePoolAllocator {
private static final Logger s_logger = Logger.getLogger(FirstFitStoragePoolAllocator.class);
@Override
- public boolean allocatorIsCorrectType(DiskCharacteristicsTO dskCh, VMInstanceVO vm, ServiceOffering offering) {
+ public boolean allocatorIsCorrectType(DiskCharacteristics dskCh, VMInstanceVO vm, ServiceOffering offering) {
return !localStorageAllocationNeeded(dskCh, vm, offering);
}
@Override
- public StoragePool allocateToPool(DiskCharacteristicsTO dskCh, ServiceOffering offering, DataCenterVO dc, HostPodVO pod, Long clusterId,
+ public StoragePool allocateToPool(DiskCharacteristics dskCh, ServiceOffering offering, DataCenterVO dc, HostPodVO pod, Long clusterId,
VMInstanceVO vm, VMTemplateVO template, Set extends StoragePool> avoid) {
// Check that the allocator type is correct
if (!allocatorIsCorrectType(dskCh, vm, offering)) {
diff --git a/server/src/com/cloud/storage/allocator/GarbageCollectingStoragePoolAllocator.java b/server/src/com/cloud/storage/allocator/GarbageCollectingStoragePoolAllocator.java
index 9bb42ce5c90..ca49b197d89 100644
--- a/server/src/com/cloud/storage/allocator/GarbageCollectingStoragePoolAllocator.java
+++ b/server/src/com/cloud/storage/allocator/GarbageCollectingStoragePoolAllocator.java
@@ -26,7 +26,6 @@ import javax.naming.ConfigurationException;
import org.apache.log4j.Logger;
-import com.cloud.agent.api.to.DiskCharacteristicsTO;
import com.cloud.configuration.dao.ConfigurationDao;
import com.cloud.dc.DataCenterVO;
import com.cloud.dc.HostPodVO;
@@ -35,6 +34,7 @@ import com.cloud.storage.StorageManager;
import com.cloud.storage.StoragePool;
import com.cloud.storage.VMTemplateVO;
import com.cloud.utils.component.ComponentLocator;
+import com.cloud.vm.DiskCharacteristics;
import com.cloud.vm.VMInstanceVO;
@Local(value=StoragePoolAllocator.class)
@@ -48,7 +48,7 @@ public class GarbageCollectingStoragePoolAllocator extends AbstractStoragePoolAl
boolean _storagePoolCleanupEnabled;
@Override
- public boolean allocatorIsCorrectType(DiskCharacteristicsTO dskCh, VMInstanceVO vm, ServiceOffering offering) {
+ public boolean allocatorIsCorrectType(DiskCharacteristics dskCh, VMInstanceVO vm, ServiceOffering offering) {
return true;
}
@@ -61,7 +61,7 @@ public class GarbageCollectingStoragePoolAllocator extends AbstractStoragePoolAl
}
@Override
- public StoragePool allocateToPool(DiskCharacteristicsTO dskCh,
+ public StoragePool allocateToPool(DiskCharacteristics dskCh,
ServiceOffering offering,
DataCenterVO dc,
HostPodVO pod,
diff --git a/server/src/com/cloud/storage/allocator/LocalStoragePoolAllocator.java b/server/src/com/cloud/storage/allocator/LocalStoragePoolAllocator.java
index 6c77e946c2a..b70e7049fd0 100644
--- a/server/src/com/cloud/storage/allocator/LocalStoragePoolAllocator.java
+++ b/server/src/com/cloud/storage/allocator/LocalStoragePoolAllocator.java
@@ -27,7 +27,6 @@ import javax.naming.ConfigurationException;
import org.apache.log4j.Logger;
-import com.cloud.agent.api.to.DiskCharacteristicsTO;
import com.cloud.capacity.CapacityVO;
import com.cloud.capacity.dao.CapacityDao;
import com.cloud.configuration.dao.ConfigurationDao;
@@ -49,6 +48,7 @@ import com.cloud.utils.db.GenericSearchBuilder;
import com.cloud.utils.db.SearchBuilder;
import com.cloud.utils.db.SearchCriteria;
import com.cloud.utils.db.SearchCriteria.Func;
+import com.cloud.vm.DiskCharacteristics;
import com.cloud.vm.State;
import com.cloud.vm.UserVmVO;
import com.cloud.vm.VMInstanceVO;
@@ -83,12 +83,12 @@ public class LocalStoragePoolAllocator extends FirstFitStoragePoolAllocator {
@Override
- public boolean allocatorIsCorrectType(DiskCharacteristicsTO dskCh, VMInstanceVO vm, ServiceOffering offering) {
+ public boolean allocatorIsCorrectType(DiskCharacteristics dskCh, VMInstanceVO vm, ServiceOffering offering) {
return localStorageAllocationNeeded(dskCh, vm, offering);
}
@Override
- public StoragePool allocateToPool(DiskCharacteristicsTO dskCh,
+ public StoragePool allocateToPool(DiskCharacteristics dskCh,
ServiceOffering offering,
DataCenterVO dc,
HostPodVO pod,
diff --git a/server/src/com/cloud/storage/allocator/RandomStoragePoolAllocator.java b/server/src/com/cloud/storage/allocator/RandomStoragePoolAllocator.java
index ee0b6252911..7937372ec79 100644
--- a/server/src/com/cloud/storage/allocator/RandomStoragePoolAllocator.java
+++ b/server/src/com/cloud/storage/allocator/RandomStoragePoolAllocator.java
@@ -25,7 +25,6 @@ import javax.ejb.Local;
import org.apache.log4j.Logger;
-import com.cloud.agent.api.to.DiskCharacteristicsTO;
import com.cloud.dc.DataCenterVO;
import com.cloud.dc.HostPodVO;
import com.cloud.offering.ServiceOffering;
@@ -33,6 +32,7 @@ import com.cloud.server.StatsCollector;
import com.cloud.storage.StoragePool;
import com.cloud.storage.StoragePoolVO;
import com.cloud.storage.VMTemplateVO;
+import com.cloud.vm.DiskCharacteristics;
import com.cloud.vm.VMInstanceVO;
@Local(value=StoragePoolAllocator.class)
@@ -40,12 +40,12 @@ public class RandomStoragePoolAllocator extends AbstractStoragePoolAllocator {
private static final Logger s_logger = Logger.getLogger(RandomStoragePoolAllocator.class);
@Override
- public boolean allocatorIsCorrectType(DiskCharacteristicsTO dskCh, VMInstanceVO vm, ServiceOffering offering) {
+ public boolean allocatorIsCorrectType(DiskCharacteristics dskCh, VMInstanceVO vm, ServiceOffering offering) {
return true;
}
@Override
- public StoragePool allocateToPool(DiskCharacteristicsTO dskCh, ServiceOffering offering,
+ public StoragePool allocateToPool(DiskCharacteristics dskCh, ServiceOffering offering,
DataCenterVO dc, HostPodVO pod, Long clusterId, VMInstanceVO vm,
VMTemplateVO template, Set extends StoragePool> avoid) {
diff --git a/server/src/com/cloud/storage/allocator/StoragePoolAllocator.java b/server/src/com/cloud/storage/allocator/StoragePoolAllocator.java
index 8d592ec4bfb..8972d2418e7 100644
--- a/server/src/com/cloud/storage/allocator/StoragePoolAllocator.java
+++ b/server/src/com/cloud/storage/allocator/StoragePoolAllocator.java
@@ -19,7 +19,6 @@ package com.cloud.storage.allocator;
import java.util.Set;
-import com.cloud.agent.api.to.DiskCharacteristicsTO;
import com.cloud.dc.DataCenterVO;
import com.cloud.dc.HostPodVO;
import com.cloud.host.Host;
@@ -27,6 +26,7 @@ import com.cloud.offering.ServiceOffering;
import com.cloud.storage.StoragePool;
import com.cloud.storage.VMTemplateVO;
import com.cloud.utils.component.Adapter;
+import com.cloud.vm.DiskCharacteristics;
import com.cloud.vm.VMInstanceVO;
import com.cloud.vm.VirtualMachine;
@@ -36,7 +36,7 @@ import com.cloud.vm.VirtualMachine;
*/
public interface StoragePoolAllocator extends Adapter {
- StoragePool allocateToPool(DiskCharacteristicsTO dskCh, ServiceOffering offering, DataCenterVO dc, HostPodVO pod, Long cluster, VMInstanceVO vm, VMTemplateVO template, Set extends StoragePool> avoids);
+ StoragePool allocateToPool(DiskCharacteristics dskCh, ServiceOffering offering, DataCenterVO dc, HostPodVO pod, Long cluster, VMInstanceVO vm, VMTemplateVO template, Set extends StoragePool> avoids);
String chooseStorageIp(VirtualMachine vm, Host host, Host storage);
}
diff --git a/server/src/com/cloud/storage/allocator/UseLocalForRootAllocator.java b/server/src/com/cloud/storage/allocator/UseLocalForRootAllocator.java
index 1423b214349..6d9c1adfdef 100644
--- a/server/src/com/cloud/storage/allocator/UseLocalForRootAllocator.java
+++ b/server/src/com/cloud/storage/allocator/UseLocalForRootAllocator.java
@@ -23,7 +23,6 @@ import java.util.Set;
import javax.ejb.Local;
import javax.naming.ConfigurationException;
-import com.cloud.agent.api.to.DiskCharacteristicsTO;
import com.cloud.configuration.Config;
import com.cloud.configuration.dao.ConfigurationDao;
import com.cloud.dc.DataCenterVO;
@@ -34,6 +33,7 @@ import com.cloud.storage.StoragePool;
import com.cloud.storage.VMTemplateVO;
import com.cloud.storage.Volume.VolumeType;
import com.cloud.utils.component.ComponentLocator;
+import com.cloud.vm.DiskCharacteristics;
import com.cloud.vm.VMInstanceVO;
import com.cloud.vm.VirtualMachine;
@@ -42,7 +42,7 @@ public class UseLocalForRootAllocator extends LocalStoragePoolAllocator implemen
boolean _useLocalStorage;
@Override
- public StoragePool allocateToPool(DiskCharacteristicsTO dskCh, ServiceOffering offering, DataCenterVO dc, HostPodVO pod, Long clusterId, VMInstanceVO vm, VMTemplateVO template, Set extends StoragePool> avoids) {
+ public StoragePool allocateToPool(DiskCharacteristics dskCh, ServiceOffering offering, DataCenterVO dc, HostPodVO pod, Long clusterId, VMInstanceVO vm, VMTemplateVO template, Set extends StoragePool> avoids) {
if (!_useLocalStorage) {
return null;
}
@@ -69,7 +69,7 @@ public class UseLocalForRootAllocator extends LocalStoragePoolAllocator implemen
}
@Override
- protected boolean localStorageAllocationNeeded(DiskCharacteristicsTO dskCh, VMInstanceVO vm, ServiceOffering offering) {
+ protected boolean localStorageAllocationNeeded(DiskCharacteristics dskCh, VMInstanceVO vm, ServiceOffering offering) {
if (dskCh.getType() == VolumeType.ROOT) {
return true;
} else if (dskCh.getType() == VolumeType.DATADISK) {
diff --git a/server/src/com/cloud/storage/download/DownloadListener.java b/server/src/com/cloud/storage/download/DownloadListener.java
index e0e97e111ce..0d83855bd32 100644
--- a/server/src/com/cloud/storage/download/DownloadListener.java
+++ b/server/src/com/cloud/storage/download/DownloadListener.java
@@ -40,9 +40,9 @@ import com.cloud.agent.api.storage.DownloadProgressCommand.RequestType;
import com.cloud.event.EventTypes;
import com.cloud.event.EventVO;
import com.cloud.host.HostVO;
+import com.cloud.storage.Storage;
import com.cloud.storage.VMTemplateHostVO;
import com.cloud.storage.VMTemplateVO;
-import com.cloud.storage.Volume;
import com.cloud.storage.VMTemplateStorageResourceAssoc.Status;
import com.cloud.storage.dao.VMTemplateHostDao;
import com.cloud.storage.download.DownloadState.DownloadEvent;
@@ -286,8 +286,8 @@ public class DownloadListener implements Listener {
long agentId = agent.getId();
StartupStorageCommand storage = (StartupStorageCommand)cmd;
- if (storage.getResourceType() == Volume.StorageResourceType.STORAGE_HOST ||
- storage.getResourceType() == Volume.StorageResourceType.SECONDARY_STORAGE )
+ if (storage.getResourceType() == Storage.StorageResourceType.STORAGE_HOST ||
+ storage.getResourceType() == Storage.StorageResourceType.SECONDARY_STORAGE )
{
downloadMonitor.handleTemplateSync(agentId, storage.getTemplateInfo());
} else {
diff --git a/server/src/com/cloud/storage/secondary/LocalSecondaryStorageResource.java b/server/src/com/cloud/storage/secondary/LocalSecondaryStorageResource.java
index f5878e0aa48..0d051c1b452 100644
--- a/server/src/com/cloud/storage/secondary/LocalSecondaryStorageResource.java
+++ b/server/src/com/cloud/storage/secondary/LocalSecondaryStorageResource.java
@@ -40,8 +40,8 @@ import com.cloud.host.Host;
import com.cloud.host.Host.Type;
import com.cloud.resource.ServerResource;
import com.cloud.resource.ServerResourceBase;
+import com.cloud.storage.Storage;
import com.cloud.storage.StorageLayer;
-import com.cloud.storage.Volume;
import com.cloud.storage.Storage.StoragePoolType;
import com.cloud.storage.template.DownloadManager;
import com.cloud.storage.template.DownloadManagerImpl;
@@ -160,7 +160,7 @@ public class LocalSecondaryStorageResource extends ServerResourceBase implements
public StartupCommand[] initialize() {
final StartupStorageCommand cmd = new StartupStorageCommand(_parent, StoragePoolType.Filesystem, 1024l*1024l*1024l*1024l, _dlMgr.gatherTemplateInfo());
- cmd.setResourceType(Volume.StorageResourceType.SECONDARY_STORAGE);
+ cmd.setResourceType(Storage.StorageResourceType.SECONDARY_STORAGE);
cmd.setIqn(null);
fillNetworkInformation(cmd);
cmd.setDataCenter(_dc);
diff --git a/server/src/com/cloud/storage/secondary/SecondaryStorageListener.java b/server/src/com/cloud/storage/secondary/SecondaryStorageListener.java
index 3c91763f102..72677dbfe9c 100644
--- a/server/src/com/cloud/storage/secondary/SecondaryStorageListener.java
+++ b/server/src/com/cloud/storage/secondary/SecondaryStorageListener.java
@@ -28,7 +28,8 @@ import com.cloud.agent.api.StartupCommand;
import com.cloud.agent.api.StartupStorageCommand;
import com.cloud.host.HostVO;
import com.cloud.host.Status;
-import com.cloud.storage.Volume.StorageResourceType;
+import com.cloud.storage.Storage;
+import com.cloud.storage.Storage.StorageResourceType;
public class SecondaryStorageListener implements Listener {
private final static Logger s_logger = Logger.getLogger(SecondaryStorageListener.class);
@@ -82,7 +83,7 @@ public class SecondaryStorageListener implements Listener {
if (cmd instanceof StartupStorageCommand) {
StartupStorageCommand ss = (StartupStorageCommand)cmd;
- if (ss.getResourceType() == StorageResourceType.SECONDARY_STORAGE) {
+ if (ss.getResourceType() == Storage.StorageResourceType.SECONDARY_STORAGE) {
_ssVmMgr.onAgentConnect(agent.getDataCenterId(), cmd);
_ssVmMgr.generateFirewallConfiguration(agent.getId());
_ssVmMgr.generateSetupCommand(agent.getDataCenterId());
diff --git a/server/src/com/cloud/vm/MauriceMoss.java b/server/src/com/cloud/vm/MauriceMoss.java
index 1223b63012e..c3da57fd10b 100644
--- a/server/src/com/cloud/vm/MauriceMoss.java
+++ b/server/src/com/cloud/vm/MauriceMoss.java
@@ -17,6 +17,8 @@
*/
package com.cloud.vm;
+import java.util.List;
+
import com.cloud.offerings.NetworkOfferingVO;
import com.cloud.service.ServiceOfferingVO;
import com.cloud.storage.DiskOfferingVO;
@@ -27,41 +29,27 @@ public class MauriceMoss implements VmManager {
public VMInstanceVO allocate(VMInstanceVO vm, ServiceOfferingVO serviceOffering, NetworkOfferingVO[] networkOfferings, DiskOfferingVO[] diskOffering) {
return null;
}
-
- /* (non-Javadoc)
- * @see com.cloud.vm.VmManager#create(com.cloud.vm.VMInstanceVO)
- */
@Override
- public void create(VMInstanceVO vm) {
+ public void create(VmCharacteristics vm, List disks, List networks) {
// TODO Auto-generated method stub
}
- /* (non-Javadoc)
- * @see com.cloud.vm.VmManager#destroy()
- */
@Override
public void destroy() {
// TODO Auto-generated method stub
}
- /* (non-Javadoc)
- * @see com.cloud.vm.VmManager#start()
- */
@Override
public void start() {
// TODO Auto-generated method stub
}
- /* (non-Javadoc)
- * @see com.cloud.vm.VmManager#stop()
- */
@Override
public void stop() {
// TODO Auto-generated method stub
-
}
}
diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java
old mode 100755
new mode 100644
index 89ae3351502..14b6a32c94d
--- a/server/src/com/cloud/vm/UserVmManagerImpl.java
+++ b/server/src/com/cloud/vm/UserVmManagerImpl.java
@@ -1767,9 +1767,7 @@ public class UserVmManagerImpl implements UserVmManager {
if(volume.getTemplateId() !=null){
templateId = volume.getTemplateId();
}
- if(volume.getDiskOfferingId() !=null){
- diskOfferingId = volume.getDiskOfferingId();
- }
+ diskOfferingId = volume.getDiskOfferingId();
long sizeMB = volume.getSize()/(1024*1024);
String eventParams = "id=" + volume.getId() +"\ndoId="+diskOfferingId+"\ntId="+templateId+"\ndcId="+volume.getDataCenterId()+"\nsize="+sizeMB;
EventVO volEvent = new EventVO();
diff --git a/server/src/com/cloud/vm/VmManager.java b/server/src/com/cloud/vm/VmManager.java
index 115bb18936b..2da194a7f7c 100644
--- a/server/src/com/cloud/vm/VmManager.java
+++ b/server/src/com/cloud/vm/VmManager.java
@@ -17,6 +17,8 @@
*/
package com.cloud.vm;
+import java.util.List;
+
import com.cloud.offerings.NetworkOfferingVO;
import com.cloud.service.ServiceOfferingVO;
import com.cloud.storage.DiskOfferingVO;
@@ -31,7 +33,7 @@ public interface VmManager {
NetworkOfferingVO[] networkOfferings,
DiskOfferingVO[] diskOffering);
- void create(VMInstanceVO vm);
+ void create(VmCharacteristics vm, List disks, List networks);
void start();
diff --git a/setup/db/create-schema.sql b/setup/db/create-schema.sql
index d58e157bffe..2bfe94c29bf 100644
--- a/setup/db/create-schema.sql
+++ b/setup/db/create-schema.sql
@@ -222,7 +222,7 @@ CREATE TABLE `cloud`.`volumes` (
`data_center_id` bigint unsigned NOT NULL COMMENT 'data center this volume belongs to',
`iscsi_name` varchar(255) COMMENT 'iscsi target name',
`host_ip` varchar(15) COMMENT 'host ip address for convenience',
- `volume_type` varchar(64) COMMENT 'root, swap or data',
+ `volume_type` varchar(64) NOT NULL COMMENT 'root, swap or data',
`resource_type` varchar(64) COMMENT 'pool-based or host-based',
`pool_type` varchar(64) COMMENT 'type of the pool',
`mirror_state` varchar(64) COMMENT 'not_mirrored, active or defunct',
@@ -236,6 +236,7 @@ CREATE TABLE `cloud`.`volumes` (
`updated` datetime COMMENT 'Date updated for attach/detach',
`removed` datetime COMMENT 'Date removed. not null if removed',
`status` varchar(32) COMMENT 'Async API volume creation status',
+ `state` varchar(32) COMMENT 'State machine',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
diff --git a/setup/db/override/server-setup.xml b/setup/db/override/server-setup.xml
new file mode 100644
index 00000000000..76f67e0cd8d
--- /dev/null
+++ b/setup/db/override/server-setup.xml
@@ -0,0 +1,583 @@
+
+
+ 2.0
+
+
+ 1
+ AH
+ 72.52.126.11
+ 72.52.126.12
+ 192.168.10.253
+ 192.168.10.254
+ 100-199
+ 10.1.1.0/24
+
+
+ 2
+ KM
+ 72.52.126.11
+ 72.52.126.12
+ 192.168.10.253
+ 192.168.10.254
+ 200-299
+ 10.1.1.0/24
+
+
+ 3
+ KY
+ 72.52.126.11
+ 72.52.126.12
+ 192.168.10.253
+ 192.168.10.254
+ 300-399
+ 10.1.1.0/24
+
+
+ 4
+ WC
+ 72.52.126.11
+ 72.52.126.12
+ 192.168.10.253
+ 192.168.10.254
+ 400-499
+ 10.1.1.0/24
+
+
+ 5
+ CV
+ 72.52.126.11
+ 72.52.126.12
+ 192.168.10.253
+ 192.168.10.254
+ 500-599
+ 10.1.1.0/24
+
+
+ 6
+ KS
+ 72.52.126.11
+ 72.52.126.12
+ 192.168.10.253
+ 192.168.10.254
+ 600-699
+ 10.1.1.0/24
+
+
+ 7
+ ES
+ 72.52.126.11
+ 72.52.126.12
+ 192.168.10.253
+ 192.168.10.254
+ 700-799
+ 10.1.1.0/24
+
+
+ 8
+ RC
+ 72.52.126.11
+ 72.52.126.12
+ 192.168.10.253
+ 192.168.10.254
+ 800-899
+ 10.1.1.0/24
+
+
+ 9
+ AX
+ 72.52.126.11
+ 72.52.126.12
+ 192.168.10.253
+ 192.168.10.254
+ 900-999
+ 10.1.1.0/24
+
+
+ 10
+ JW
+ 72.52.126.11
+ 72.52.126.12
+ 192.168.10.253
+ 192.168.10.254
+ 900-999
+ 10.1.1.0/24
+
+
+ 11
+ AJ
+ 72.52.126.11
+ 72.52.126.12
+ 192.168.10.253
+ 192.168.10.254
+ 1000-1099
+ 10.1.1.0/24
+
+
+
+
+
+
+ 1
+ 31
+ VirtualNetwork
+ 192.168.31.1
+ 255.255.255.0
+ 192.168.31.150-192.168.31.159
+
+
+ 2
+ 32
+ VirtualNetwork
+ 192.168.32.1
+ 255.255.255.0
+ 192.168.32.150-192.168.32.159
+
+
+ 3
+ 33
+ VirtualNetwork
+ 192.168.33.1
+ 255.255.255.0
+ 192.168.33.150-192.168.33.159
+
+
+ 4
+ 34
+ VirtualNetwork
+ 192.168.34.1
+ 255.255.255.0
+ 192.168.34.150-192.168.34.159
+
+
+ 5
+ 35
+ VirtualNetwork
+ 192.168.35.1
+ 255.255.255.0
+ 192.168.35.150-192.168.35.159
+
+
+ 6
+ 36
+ VirtualNetwork
+ 192.168.36.1
+ 255.255.255.0
+ 192.168.36.150-192.168.36.159
+
+
+ 7
+ 37
+ VirtualNetwork
+ 192.168.37.1
+ 255.255.255.0
+ 192.168.37.150-192.168.37.159
+
+
+ 8
+ 38
+ VirtualNetwork
+ 192.168.38.1
+ 255.255.255.0
+ 192.168.38.150-192.168.38.159
+
+
+ 9
+ 39
+ VirtualNetwork
+ 192.168.39.1
+ 255.255.255.0
+ 192.168.39.150-192.168.39.159
+
+
+ 10
+ 40
+ VirtualNetwork
+ 192.168.40.1
+ 255.255.255.0
+ 192.168.40.150-192.168.40.159
+
+
+ 11
+ 41
+ VirtualNetwork
+ 192.168.41.1
+ 255.255.255.0
+ 192.168.41.150-192.168.41.159
+
+
+
+
+
+ 1
+ AH
+ 1
+ 192.168.140.20-192.168.140.24
+ 192.168.140.0/24
+ 192.168.140.1
+
+
+ 2
+ KM
+ 2
+ 192.168.10.25-192.168.10.29
+ 192.168.10.0/24
+ 192.168.10.1
+
+
+ 3
+ KY
+ 3
+ 192.168.10.30-192.168.10.34
+ 192.168.10.0/24
+ 192.168.10.1
+
+
+ 4
+ WC
+ 4
+ 192.168.10.35-192.168.10.39
+ 192.168.10.0/24
+ 192.168.10.1
+
+
+ 5
+ CV
+ 5
+ 192.168.10.40-192.168.10.44
+ 192.168.10.0/24
+ 192.168.10.1
+
+
+ 6
+ KS
+ 6
+ 192.168.10.45-192.168.10.49
+ 192.168.10.0/24
+ 192.168.10.1
+
+
+ 7
+ ES
+ 7
+ 192.168.10.50-192.168.10.54
+ 192.168.10.0/24
+ 192.168.10.1
+
+
+ 8
+ RC
+ 8
+ 192.168.10.55-192.168.10.59
+ 192.168.10.0/24
+ 192.168.10.1
+
+
+ 9
+ AX
+ 9
+ 192.168.10.62-192.168.10.64
+ 192.168.10.0/24
+ 192.168.10.1
+
+
+ 10
+ JW
+ 10
+ 192.168.10.65-192.168.10.69
+ 192.168.10.0/24
+ 192.168.10.1
+
+
+ 11
+ AJ
+ 11
+ 192.168.10.70-192.168.10.74
+ 192.168.10.0/24
+ 192.168.10.1
+
+
+
+
+
+
+ 1
+ Small Instance
+ Small Instance [500MHZ CPU, 512MB MEM, 16GB Disk] - $0.10 per hour
+ 1
+ 512
+ 500
+ false
+
+
+ 2
+ Medium Instance
+ Medium Instance [500MHZ CPU, 1GB MEM, 32GB Disk] - $0.20 per hour
+ 1
+ 1024
+ 512
+
+
+ 3
+ Large Instance
+ Large Instance [2GHZ CPU, 4GB MEM, 64GB Disk] - $0.30 per hour
+ 2
+ 4096
+ 2000
+
+
+
+
+
+ 1
+ 1
+ Small Disk
+ Small Disk [16GB Disk]
+ 16000
+
+
+ 2
+ 1
+ Medium Disk
+ Medium Disk [32GB Disk]
+ 32000
+ mid_disk,mid_performance
+
+
+ 3
+ 1
+ Large Disk
+ Large Disk [64GB Disk]
+ 64000
+ high_performance
+
+
+
+
+
+
+ 2
+ admin
+ password
+ Admin
+ User
+ admin@mailprovider.com
+
+
+
+
+
+ ssh.privatekey
+ -----BEGIN RSA PRIVATE KEY-----\nMIIEoQIBAAKCAQEAnNUMVgQS87EzAQN9ufGgH3T1kOpqcvTmUrp8RVZyeA5qwptS\nrZxONRbhLK709pZFBJLmeFqiqciWoA/srVIFk+rPmBlVsMw8BK53hTGoax7iSe8s\nLFCAATm6vp0HnZzYqNfrzR2by36ET5aQD/VAyA55u+uUgAlxQuhKff2xjyahEHs+\nUiRlReiAgItygm9g3co3+8fJDOuRse+s0TOip1D0jPdo2AJFscyxrG9hWqQH86R/\nZlLJ7DqsiaAcUmn52u6Nsmd3BkRmGVx/D35Mq6upJqrk/QDfug9LF66yiIP/BEIn\n08N/wQ6m/O37WUtqqyl3rRKqs5TJ9ZnhsqeO9QIBIwKCAQA6QIDsv69EkkYk8qsK\njPJU06uq2rnS7T+bEhDmjdK+4MiRbOQx2vh6HnDktgM3BJ1K13oss/NGYHJ190lH\nsMA+QUXKx5TbRItSMixkrAta/Ne1D7FSScklBtBVbYZ8XtQhdMVML5GjWuCv2NZs\nU8eaw4xNHPyklcr7mBurI7b6p13VK5BNUWR/VNuigT4U89YzRcoEZ/sTlR+4ACYr\nxbUJJGBA03+NhdSAe2vodlMh5lGflD0JmHMFqqg9BcAtVb73JsOsxFQArbXwRd/q\nNckdoAvgJfhTOvXF5GMPLI0lGb6skJkS229F4GaBB2Iz4A9O0aHZob8I8zsWUbiu\npvBrAoGBAMjUDfF2x13NjH1cFHietO5O1oM0nZaAxKodxoAUvHVMUd5DIY50tqYw\n7ecKi2Cw43ONpdj0nP9Nc2NV3NDRqLopwkKUsTtq9AKQ2cIuw3+uS5vm0VZBzmTP\nuF04Qo4bXh/jFRA62u9bXsmIFtaehKxE1Gp6zi393GcbWP4HX/3dAoGBAMfq0KD3\ngeU1PHi9uI3Ss89nXzJsiGcwC5Iunu1aTzJCYhMlJkfmRcXYMAqSfg0nGWnfvlDh\nuOO26CHKjG182mTwYXdgQzIPpBc8suvgUWDBTrIzJI+zuyBLtPbd9DJEVrZkRVQX\nXrOV3Y5oOWsba4F+b20jaaHFAiY7s6OtrX/5AoGBAMMXI3zZyPwJgSlSIoPNX03m\nL3gke9QID4CvNduB26UlkVuRq5GzNRZ4rJdMEl3tqcC1fImdKswfWiX7o06ChqY3\nMb0FePfkPX7V2tnkSOJuzRsavLoxTCdqsxi6T0g318c0XZq81K4A/P5Jr8ksRl40\nPA+qfyVdAf3Cy3ptkHLzAoGASkFGLSi7N+CSzcLPhSJgCzUGGgsOF7LCeB/x4yGL\nIUvbSPCKj7vuB6gR2AqGlyvHnFprQpz7h8eYDI0PlmGS8kqn2+HtEpgYYGcAoMEI\nSIJQbhL+84vmaxTOL87IanEnhZL1LdzLZ0ZK+mE55fQ936P9gE77WVfNmSweJtob\n3xMCgYAl0aLeGf4oUZbI56eEaCbu8U7dEe6MF54VbozyiXqbp455QnUpuBrRn5uf\nc079dNcqTNDuk1+hYX9qNn1aXsvWeuofBXqWoFXu/c4yoWxJAPhEVhzZ9xrXI76I\nBKiPCyKrOa7bSLvs6SQPpuf5AQ8+NJrOxkEB9hbMuaAr2N5rCw==\n-----END RSA PRIVATE KEY-----
+
+ Hidden
+
+
+ ssh.publickey
+ ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAnNUMVgQS87EzAQN9ufGgH3T1kOpqcvTmUrp8RVZyeA5qwptSrZxONRbhLK709pZFBJLmeFqiqciWoA/srVIFk+rPmBlVsMw8BK53hTGoax7iSe8sLFCAATm6vp0HnZzYqNfrzR2by36ET5aQD/VAyA55u+uUgAlxQuhKff2xjyahEHs+UiRlReiAgItygm9g3co3+8fJDOuRse+s0TOip1D0jPdo2AJFscyxrG9hWqQH86R/ZlLJ7DqsiaAcUmn52u6Nsmd3BkRmGVx/D35Mq6upJqrk/QDfug9LF66yiIP/BEIn08N/wQ6m/O37WUtqqyl3rRKqs5TJ9ZnhsqeO9Q== root@test2.lab.vmops.com
+
+ Hidden
+
+
+ default.zone
+ AH
+
+
+ domain.suffix
+ vmops-test.vmops.com
+
+
+ instance.name
+ AH
+
+
+ consoleproxy.ram.size
+ 256
+
+
+ host.stats.interval
+ 3600000
+
+
+ storage.stats.interval
+ 120000
+
+
+ volume.stats.interval
+ -1
+
+
+ ping.interval
+ 60
+
+
+ alert.wait
+ 1800
+
+
+ expunge.interval
+ 86400
+
+
+ usage.aggregation.timezone
+ GMT
+
+
+ init
+ true
+
+
+ use.local.storage
+ true
+
+
+ system.vm.use.local.storage
+ true
+
+
+ secondary.storage.vm
+ false
+
+
+
+
+ memory.capacity.threshold
+ 0.85
+
+
+ cpu.capacity.threshold
+ 0.85
+
+
+ storage.capacity.threshold
+ 0.85
+
+
+ storage.allocated.capacity.threshold
+ 0.85
+
+
+ capacity.check.period
+ 3600000
+
+
+ wait
+ 240
+
+
+ network.throttling.rate
+ 200
+
+
+ multicast.throttling.rate
+ 10
+
+
+ management.network.cidr
+ 192.168.1.0/24
+
+
+ usage.aggregation.timezone
+ GMT
+
+
+ usage.stats.job.exec.time
+ 00:15
+
+
+ system.vm.local.storage.required
+ false
+
+
+ hypervisor.type
+ xenserver
+
+
+ secondary.storage.vm
+ false
+
+
+
+
+
+
+