mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
more changes for the rewrite.
This commit is contained in:
parent
c3c5f7fa7c
commit
867b43dcf9
@ -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;
|
||||
|
||||
@ -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}
|
||||
}
|
||||
|
||||
22
core/src/com/cloud/storage/Volume.java → api/src/com/cloud/storage/Volume.java
Executable file → Normal file
22
core/src/com/cloud/storage/Volume.java → api/src/com/cloud/storage/Volume.java
Executable file → Normal file
@ -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();
|
||||
}
|
||||
@ -15,63 +15,97 @@
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
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();
|
||||
58
api/src/com/cloud/vm/NetworkCharacteristics.java
Normal file
58
api/src/com/cloud/vm/NetworkCharacteristics.java
Normal file
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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<String, String> 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<String, String> params) {
|
||||
public VmCharacteristics(long id, int core, int speed, long ram, Hypervisor.Type type, Map<String, String> params) {
|
||||
this.core = core;
|
||||
this.speed = speed;
|
||||
this.ram = ram;
|
||||
this.hypervisorType = type;
|
||||
this.params = params;
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
protected VmCharacteristics() {
|
||||
}
|
||||
}
|
||||
1
build/.gitignore
vendored
Normal file
1
build/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
/override
|
||||
3
build/build.number
Normal file
3
build/build.number
Normal file
@ -0,0 +1,3 @@
|
||||
#Build Number for ANT. Do not edit!
|
||||
#Mon Aug 16 11:01:21 PDT 2010
|
||||
build.number=31
|
||||
26
build/developer.xml
Executable file → Normal file
26
build/developer.xml
Executable file → Normal file
@ -27,6 +27,18 @@
|
||||
<target name="run" depends="start-tomcat"/>
|
||||
<target name="stop" depends="stop-tomcat"/>
|
||||
<target name="debug" depends="debug-tomcat"/>
|
||||
|
||||
<target name="setup">
|
||||
<mkdir dir="${build.dir}/override"/>
|
||||
<copy todir="${build.dir}/override">
|
||||
<fileset dir="${build.dir}">
|
||||
<include name="build-cloud.properties"/>
|
||||
<include name="replace.properties"/>
|
||||
</fileset>
|
||||
</copy>
|
||||
<loadproperties srcfile="${build.dir}/override/replace.properties" resource="propertyresource"/>
|
||||
<!-- propertyfile file="${build.dir}/override/replace.properties"/ -->
|
||||
</target>
|
||||
|
||||
<target name="debug-suspend">
|
||||
<java jar="${tomcat.home}/bin/bootstrap.jar" fork="true">
|
||||
@ -86,23 +98,11 @@
|
||||
<target name="unzip-usage" if="usagezip.uptodate">
|
||||
<unzip src="${deploy.work.dir}/usage.zip" dest="${deploy.work.dir}/usage"/>
|
||||
</target>
|
||||
<!--
|
||||
<target name="deploy-db">
|
||||
<property file="
|
||||
<sql
|
||||
driver="com.mysql.jdbc.Driver"
|
||||
url="jdbc:database-url"
|
||||
userid="cloud"
|
||||
password="cloud"
|
||||
src="data.sql"
|
||||
/>
|
||||
</target>
|
||||
-->
|
||||
|
||||
<target name="deploy-server" depends="deploy-common" >
|
||||
<copy todir="${server.deploy.to.dir}/webapps/client/WEB-INF/lib/vms" file="${dist.dir}/systemvm.zip" />
|
||||
</target>
|
||||
|
||||
|
||||
<target name="deploy-common" >
|
||||
<condition property="zip.uptodate">
|
||||
<available file="${deploy.work.dir}/client.zip" type="file"/>
|
||||
|
||||
19
build/override/build-cloud.properties
Normal file
19
build/override/build-cloud.properties
Normal file
@ -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
|
||||
7
build/override/replace.properties
Normal file
7
build/override/replace.properties
Normal file
@ -0,0 +1,7 @@
|
||||
DBUSER=cloud
|
||||
DBROOTPW=
|
||||
DBPW=cloud
|
||||
MSLOG=.\/dist\/vmops.log
|
||||
APISERVERLOG=.\/dist\/api.log
|
||||
DBHOST=localhost
|
||||
|
||||
8
core/src/com/cloud/agent/api/StartupStorageCommand.java
Executable file → Normal file
8
core/src/com/cloud/agent/api/StartupStorageCommand.java
Executable file → Normal file
@ -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<String, TemplateInfo> templateInfo;
|
||||
long totalSize;
|
||||
StoragePoolInfo poolInfo;
|
||||
Volume.StorageResourceType resourceType;
|
||||
Storage.StorageResourceType resourceType;
|
||||
StoragePoolType fsType;
|
||||
Map<String, String> hostDetails = new HashMap<String, String>();
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -86,8 +86,7 @@ public class DiskOfferingVO implements DiskOffering {
|
||||
|
||||
@Column(name="use_local_storage")
|
||||
private boolean useLocalStorage;
|
||||
|
||||
|
||||
|
||||
public DiskOfferingVO() {
|
||||
}
|
||||
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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;
|
||||
|
||||
2
core/src/com/cloud/storage/StorageResource.java
Executable file → Normal file
2
core/src/com/cloud/storage/StorageResource.java
Executable file → Normal file
@ -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<String, Object> params) throws ConfigurationException ;
|
||||
|
||||
|
||||
|
||||
39
core/src/com/cloud/storage/VolumeVO.java
Executable file → Normal file
39
core/src/com/cloud/storage/VolumeVO.java
Executable file → Normal file
@ -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;
|
||||
|
||||
@ -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<String, TemplateInfo>());
|
||||
|
||||
cmd.setResourceType(Volume.StorageResourceType.SECONDARY_STORAGE);
|
||||
cmd.setResourceType(Storage.StorageResourceType.SECONDARY_STORAGE);
|
||||
cmd.setIqn(null);
|
||||
cmd.setNfsShare(_guid);
|
||||
|
||||
|
||||
@ -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<String, TemplateInfo>());
|
||||
|
||||
cmd.setResourceType(Volume.StorageResourceType.SECONDARY_STORAGE);
|
||||
cmd.setResourceType(Storage.StorageResourceType.SECONDARY_STORAGE);
|
||||
cmd.setIqn(null);
|
||||
|
||||
fillNetworkInformation(cmd);
|
||||
|
||||
7
server/src/com/cloud/agent/manager/AgentManagerImpl.java
Executable file → Normal file
7
server/src/com/cloud/agent/manager/AgentManagerImpl.java
Executable file → Normal file
@ -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);
|
||||
|
||||
@ -218,11 +218,8 @@ public class ListVolumesCmd extends BaseCmd{
|
||||
volumeData.add(new Pair<String, Object>(BaseCmd.Properties.STORAGE_TYPE.getName(), storageType));
|
||||
|
||||
volumeData.add(new Pair<String, Object>(BaseCmd.Properties.DISK_OFFERING_ID.getName(),volume.getDiskOfferingId()));
|
||||
if(volume.getDiskOfferingId()!=null)
|
||||
{
|
||||
volumeData.add(new Pair<String, Object>(BaseCmd.Properties.DISK_OFFERING_NAME.getName(),getManagementServer().findDiskOfferingById(volume.getDiskOfferingId()).getName()));
|
||||
volumeData.add(new Pair<String, Object>(BaseCmd.Properties.DISK_OFFERING_DISPLAY_TEXT.getName(),getManagementServer().findDiskOfferingById(volume.getDiskOfferingId()).getDisplayText()));
|
||||
}
|
||||
volumeData.add(new Pair<String, Object>(BaseCmd.Properties.DISK_OFFERING_NAME.getName(),getManagementServer().findDiskOfferingById(volume.getDiskOfferingId()).getName()));
|
||||
volumeData.add(new Pair<String, Object>(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<String, Object>(BaseCmd.Properties.STORAGE.getName(), poolName));
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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<VolumeVO> allocate(DiskCharacteristics rootDisk, List<DiskCharacteristics> dataDisks, VMInstanceVO vm, DataCenterVO dc, AccountVO account) {
|
||||
ArrayList<VolumeVO> vols = new ArrayList<VolumeVO>(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<VolumeVO> prepare(VMInstanceVO vm, HostVO host) {
|
||||
List<VolumeVO> vols = _volsDao.findCreatedByInstance(vm.getId());
|
||||
List<VolumeVO> recreateVols = new ArrayList<VolumeVO>(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<StoragePool> avoid) {
|
||||
protected StoragePoolVO findStoragePool(DiskCharacteristics dskCh, final DataCenterVO dc, HostPodVO pod, Long clusterId, final ServiceOffering offering, final VMInstanceVO vm, final VMTemplateVO template, final Set<StoragePool> avoid) {
|
||||
Enumeration<StoragePoolAllocator> 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<VMTemplateHostVO> 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<StoragePool> avoidPools = new HashSet<StoragePool>(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<StoragePool>());
|
||||
@ -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);
|
||||
|
||||
@ -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<VMTemplateStoragePoolVO> templatesInPool, ServiceOffering offering,
|
||||
protected boolean checkPool(Set<? extends StoragePool> avoid, StoragePoolVO pool, DiskCharacteristics dskCh, VMTemplateVO template, List<VMTemplateStoragePoolVO> templatesInPool, ServiceOffering offering,
|
||||
VMInstanceVO vm, StatsCollector sc) {
|
||||
if (avoid.contains(pool)) {
|
||||
return false;
|
||||
|
||||
@ -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)) {
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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) {
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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());
|
||||
|
||||
@ -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<DiskCharacteristics> disks, List<NetworkCharacteristics> 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
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
4
server/src/com/cloud/vm/UserVmManagerImpl.java
Executable file → Normal file
4
server/src/com/cloud/vm/UserVmManagerImpl.java
Executable file → Normal file
@ -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();
|
||||
|
||||
@ -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<DiskCharacteristics> disks, List<NetworkCharacteristics> networks);
|
||||
|
||||
void start();
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
583
setup/db/override/server-setup.xml
Normal file
583
setup/db/override/server-setup.xml
Normal file
@ -0,0 +1,583 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<data>
|
||||
<version>2.0</version>
|
||||
<zones>
|
||||
<zone>
|
||||
<id>1</id>
|
||||
<name>AH</name>
|
||||
<dns1>72.52.126.11</dns1>
|
||||
<dns2>72.52.126.12</dns2>
|
||||
<internalDns1>192.168.10.253</internalDns1>
|
||||
<internalDns2>192.168.10.254</internalDns2>
|
||||
<vnet>100-199</vnet>
|
||||
<guestNetworkCidr>10.1.1.0/24</guestNetworkCidr>
|
||||
</zone>
|
||||
<zone>
|
||||
<id>2</id>
|
||||
<name>KM</name>
|
||||
<dns1>72.52.126.11</dns1>
|
||||
<dns2>72.52.126.12</dns2>
|
||||
<internalDns1>192.168.10.253</internalDns1>
|
||||
<internalDns2>192.168.10.254</internalDns2>
|
||||
<vnet>200-299</vnet>
|
||||
<guestNetworkCidr>10.1.1.0/24</guestNetworkCidr>
|
||||
</zone>
|
||||
<zone>
|
||||
<id>3</id>
|
||||
<name>KY</name>
|
||||
<dns1>72.52.126.11</dns1>
|
||||
<dns2>72.52.126.12</dns2>
|
||||
<internalDns1>192.168.10.253</internalDns1>
|
||||
<internalDns2>192.168.10.254</internalDns2>
|
||||
<vnet>300-399</vnet>
|
||||
<guestNetworkCidr>10.1.1.0/24</guestNetworkCidr>
|
||||
</zone>
|
||||
<zone>
|
||||
<id>4</id>
|
||||
<name>WC</name>
|
||||
<dns1>72.52.126.11</dns1>
|
||||
<dns2>72.52.126.12</dns2>
|
||||
<internalDns1>192.168.10.253</internalDns1>
|
||||
<internalDns2>192.168.10.254</internalDns2>
|
||||
<vnet>400-499</vnet>
|
||||
<guestNetworkCidr>10.1.1.0/24</guestNetworkCidr>
|
||||
</zone>
|
||||
<zone>
|
||||
<id>5</id>
|
||||
<name>CV</name>
|
||||
<dns1>72.52.126.11</dns1>
|
||||
<dns2>72.52.126.12</dns2>
|
||||
<internalDns1>192.168.10.253</internalDns1>
|
||||
<internalDns2>192.168.10.254</internalDns2>
|
||||
<vnet>500-599</vnet>
|
||||
<guestNetworkCidr>10.1.1.0/24</guestNetworkCidr>
|
||||
</zone>
|
||||
<zone>
|
||||
<id>6</id>
|
||||
<name>KS</name>
|
||||
<dns1>72.52.126.11</dns1>
|
||||
<dns2>72.52.126.12</dns2>
|
||||
<internalDns1>192.168.10.253</internalDns1>
|
||||
<internalDns2>192.168.10.254</internalDns2>
|
||||
<vnet>600-699</vnet>
|
||||
<guestNetworkCidr>10.1.1.0/24</guestNetworkCidr>
|
||||
</zone>
|
||||
<zone>
|
||||
<id>7</id>
|
||||
<name>ES</name>
|
||||
<dns1>72.52.126.11</dns1>
|
||||
<dns2>72.52.126.12</dns2>
|
||||
<internalDns1>192.168.10.253</internalDns1>
|
||||
<internalDns2>192.168.10.254</internalDns2>
|
||||
<vnet>700-799</vnet>
|
||||
<guestNetworkCidr>10.1.1.0/24</guestNetworkCidr>
|
||||
</zone>
|
||||
<zone>
|
||||
<id>8</id>
|
||||
<name>RC</name>
|
||||
<dns1>72.52.126.11</dns1>
|
||||
<dns2>72.52.126.12</dns2>
|
||||
<internalDns1>192.168.10.253</internalDns1>
|
||||
<internalDns2>192.168.10.254</internalDns2>
|
||||
<vnet>800-899</vnet>
|
||||
<guestNetworkCidr>10.1.1.0/24</guestNetworkCidr>
|
||||
</zone>
|
||||
<zone>
|
||||
<id>9</id>
|
||||
<name>AX</name>
|
||||
<dns1>72.52.126.11</dns1>
|
||||
<dns2>72.52.126.12</dns2>
|
||||
<internalDns1>192.168.10.253</internalDns1>
|
||||
<internalDns2>192.168.10.254</internalDns2>
|
||||
<vnet>900-999</vnet>
|
||||
<guestNetworkCidr>10.1.1.0/24</guestNetworkCidr>
|
||||
</zone>
|
||||
<zone>
|
||||
<id>10</id>
|
||||
<name>JW</name>
|
||||
<dns1>72.52.126.11</dns1>
|
||||
<dns2>72.52.126.12</dns2>
|
||||
<internalDns1>192.168.10.253</internalDns1>
|
||||
<internalDns2>192.168.10.254</internalDns2>
|
||||
<vnet>900-999</vnet>
|
||||
<guestNetworkCidr>10.1.1.0/24</guestNetworkCidr>
|
||||
</zone>
|
||||
<zone>
|
||||
<id>11</id>
|
||||
<name>AJ</name>
|
||||
<dns1>72.52.126.11</dns1>
|
||||
<dns2>72.52.126.12</dns2>
|
||||
<internalDns1>192.168.10.253</internalDns1>
|
||||
<internalDns2>192.168.10.254</internalDns2>
|
||||
<vnet>1000-1099</vnet>
|
||||
<guestNetworkCidr>10.1.1.0/24</guestNetworkCidr>
|
||||
</zone>
|
||||
</zones>
|
||||
<!--
|
||||
<storagePools>
|
||||
<storagePool>
|
||||
<zoneId>5</zoneId>
|
||||
<name>sol10-2</name>
|
||||
<hostAddress>sol10-2</hostAddress>
|
||||
<hostPath>/tank/vmops-nfs/</hostPath>
|
||||
</storagePool>
|
||||
</storagePools>
|
||||
-->
|
||||
|
||||
<vlans>
|
||||
<vlan>
|
||||
<zoneId>1</zoneId>
|
||||
<vlanId>31</vlanId>
|
||||
<vlanType>VirtualNetwork</vlanType>
|
||||
<gateway>192.168.31.1</gateway>
|
||||
<netmask>255.255.255.0</netmask>
|
||||
<ipAddressRange>192.168.31.150-192.168.31.159</ipAddressRange>
|
||||
</vlan>
|
||||
<vlan>
|
||||
<zoneId>2</zoneId>
|
||||
<vlanId>32</vlanId>
|
||||
<vlanType>VirtualNetwork</vlanType>
|
||||
<gateway>192.168.32.1</gateway>
|
||||
<netmask>255.255.255.0</netmask>
|
||||
<ipAddressRange>192.168.32.150-192.168.32.159</ipAddressRange>
|
||||
</vlan>
|
||||
<vlan>
|
||||
<zoneId>3</zoneId>
|
||||
<vlanId>33</vlanId>
|
||||
<vlanType>VirtualNetwork</vlanType>
|
||||
<gateway>192.168.33.1</gateway>
|
||||
<netmask>255.255.255.0</netmask>
|
||||
<ipAddressRange>192.168.33.150-192.168.33.159</ipAddressRange>
|
||||
</vlan>
|
||||
<vlan>
|
||||
<zoneId>4</zoneId>
|
||||
<vlanId>34</vlanId>
|
||||
<vlanType>VirtualNetwork</vlanType>
|
||||
<gateway>192.168.34.1</gateway>
|
||||
<netmask>255.255.255.0</netmask>
|
||||
<ipAddressRange>192.168.34.150-192.168.34.159</ipAddressRange>
|
||||
</vlan>
|
||||
<vlan>
|
||||
<zoneId>5</zoneId>
|
||||
<vlanId>35</vlanId>
|
||||
<vlanType>VirtualNetwork</vlanType>
|
||||
<gateway>192.168.35.1</gateway>
|
||||
<netmask>255.255.255.0</netmask>
|
||||
<ipAddressRange>192.168.35.150-192.168.35.159</ipAddressRange>
|
||||
</vlan>
|
||||
<vlan>
|
||||
<zoneId>6</zoneId>
|
||||
<vlanId>36</vlanId>
|
||||
<vlanType>VirtualNetwork</vlanType>
|
||||
<gateway>192.168.36.1</gateway>
|
||||
<netmask>255.255.255.0</netmask>
|
||||
<ipAddressRange>192.168.36.150-192.168.36.159</ipAddressRange>
|
||||
</vlan>
|
||||
<vlan>
|
||||
<zoneId>7</zoneId>
|
||||
<vlanId>37</vlanId>
|
||||
<vlanType>VirtualNetwork</vlanType>
|
||||
<gateway>192.168.37.1</gateway>
|
||||
<netmask>255.255.255.0</netmask>
|
||||
<ipAddressRange>192.168.37.150-192.168.37.159</ipAddressRange>
|
||||
</vlan>
|
||||
<vlan>
|
||||
<zoneId>8</zoneId>
|
||||
<vlanId>38</vlanId>
|
||||
<vlanType>VirtualNetwork</vlanType>
|
||||
<gateway>192.168.38.1</gateway>
|
||||
<netmask>255.255.255.0</netmask>
|
||||
<ipAddressRange>192.168.38.150-192.168.38.159</ipAddressRange>
|
||||
</vlan>
|
||||
<vlan>
|
||||
<zoneId>9</zoneId>
|
||||
<vlanId>39</vlanId>
|
||||
<vlanType>VirtualNetwork</vlanType>
|
||||
<gateway>192.168.39.1</gateway>
|
||||
<netmask>255.255.255.0</netmask>
|
||||
<ipAddressRange>192.168.39.150-192.168.39.159</ipAddressRange>
|
||||
</vlan>
|
||||
<vlan>
|
||||
<zoneId>10</zoneId>
|
||||
<vlanId>40</vlanId>
|
||||
<vlanType>VirtualNetwork</vlanType>
|
||||
<gateway>192.168.40.1</gateway>
|
||||
<netmask>255.255.255.0</netmask>
|
||||
<ipAddressRange>192.168.40.150-192.168.40.159</ipAddressRange>
|
||||
</vlan>
|
||||
<vlan>
|
||||
<zoneId>11</zoneId>
|
||||
<vlanId>41</vlanId>
|
||||
<vlanType>VirtualNetwork</vlanType>
|
||||
<gateway>192.168.41.1</gateway>
|
||||
<netmask>255.255.255.0</netmask>
|
||||
<ipAddressRange>192.168.41.150-192.168.41.159</ipAddressRange>
|
||||
</vlan>
|
||||
</vlans>
|
||||
|
||||
<pods>
|
||||
<pod>
|
||||
<id>1</id>
|
||||
<name>AH</name>
|
||||
<zoneId>1</zoneId>
|
||||
<ipAddressRange>192.168.140.20-192.168.140.24</ipAddressRange>
|
||||
<cidr>192.168.140.0/24</cidr>
|
||||
<gateway>192.168.140.1</gateway>
|
||||
</pod>
|
||||
<pod>
|
||||
<id>2</id>
|
||||
<name>KM</name>
|
||||
<zoneId>2</zoneId>
|
||||
<ipAddressRange>192.168.10.25-192.168.10.29</ipAddressRange>
|
||||
<cidr>192.168.10.0/24</cidr>
|
||||
<gateway>192.168.10.1</gateway>
|
||||
</pod>
|
||||
<pod>
|
||||
<id>3</id>
|
||||
<name>KY</name>
|
||||
<zoneId>3</zoneId>
|
||||
<ipAddressRange>192.168.10.30-192.168.10.34</ipAddressRange>
|
||||
<cidr>192.168.10.0/24</cidr>
|
||||
<gateway>192.168.10.1</gateway>
|
||||
</pod>
|
||||
<pod>
|
||||
<id>4</id>
|
||||
<name>WC</name>
|
||||
<zoneId>4</zoneId>
|
||||
<ipAddressRange>192.168.10.35-192.168.10.39</ipAddressRange>
|
||||
<cidr>192.168.10.0/24</cidr>
|
||||
<gateway>192.168.10.1</gateway>
|
||||
</pod>
|
||||
<pod>
|
||||
<id>5</id>
|
||||
<name>CV</name>
|
||||
<zoneId>5</zoneId>
|
||||
<ipAddressRange>192.168.10.40-192.168.10.44</ipAddressRange>
|
||||
<cidr>192.168.10.0/24</cidr>
|
||||
<gateway>192.168.10.1</gateway>
|
||||
</pod>
|
||||
<pod>
|
||||
<id>6</id>
|
||||
<name>KS</name>
|
||||
<zoneId>6</zoneId>
|
||||
<ipAddressRange>192.168.10.45-192.168.10.49</ipAddressRange>
|
||||
<cidr>192.168.10.0/24</cidr>
|
||||
<gateway>192.168.10.1</gateway>
|
||||
</pod>
|
||||
<pod>
|
||||
<id>7</id>
|
||||
<name>ES</name>
|
||||
<zoneId>7</zoneId>
|
||||
<ipAddressRange>192.168.10.50-192.168.10.54</ipAddressRange>
|
||||
<cidr>192.168.10.0/24</cidr>
|
||||
<gateway>192.168.10.1</gateway>
|
||||
</pod>
|
||||
<pod>
|
||||
<id>8</id>
|
||||
<name>RC</name>
|
||||
<zoneId>8</zoneId>
|
||||
<ipAddressRange>192.168.10.55-192.168.10.59</ipAddressRange>
|
||||
<cidr>192.168.10.0/24</cidr>
|
||||
<gateway>192.168.10.1</gateway>
|
||||
</pod>
|
||||
<pod>
|
||||
<id>9</id>
|
||||
<name>AX</name>
|
||||
<zoneId>9</zoneId>
|
||||
<ipAddressRange>192.168.10.62-192.168.10.64</ipAddressRange>
|
||||
<cidr>192.168.10.0/24</cidr>
|
||||
<gateway>192.168.10.1</gateway>
|
||||
</pod>
|
||||
<pod>
|
||||
<id>10</id>
|
||||
<name>JW</name>
|
||||
<zoneId>10</zoneId>
|
||||
<ipAddressRange>192.168.10.65-192.168.10.69</ipAddressRange>
|
||||
<cidr>192.168.10.0/24</cidr>
|
||||
<gateway>192.168.10.1</gateway>
|
||||
</pod>
|
||||
<pod>
|
||||
<id>11</id>
|
||||
<name>AJ</name>
|
||||
<zoneId>11</zoneId>
|
||||
<ipAddressRange>192.168.10.70-192.168.10.74</ipAddressRange>
|
||||
<cidr>192.168.10.0/24</cidr>
|
||||
<gateway>192.168.10.1</gateway>
|
||||
</pod>
|
||||
</pods>
|
||||
|
||||
<!--
|
||||
* cpu is the number of CPUs for the offering
|
||||
* ramSize is total memory in MB
|
||||
* speed is the CPU speed for each core in MHZ
|
||||
* diskSpace is the storage space in MB
|
||||
* price is the price of the offering per hour
|
||||
-->
|
||||
<serviceOfferings>
|
||||
<serviceOffering>
|
||||
<id>1</id>
|
||||
<name>Small Instance</name>
|
||||
<displayText>Small Instance [500MHZ CPU, 512MB MEM, 16GB Disk] - $0.10 per hour</displayText>
|
||||
<cpu>1</cpu>
|
||||
<ramSize>512</ramSize>
|
||||
<speed>500</speed>
|
||||
<mirrored>false</mirrored>
|
||||
</serviceOffering>
|
||||
<serviceOffering>
|
||||
<id>2</id>
|
||||
<name>Medium Instance</name>
|
||||
<displayText>Medium Instance [500MHZ CPU, 1GB MEM, 32GB Disk] - $0.20 per hour</displayText>
|
||||
<cpu>1</cpu>
|
||||
<ramSize>1024</ramSize>
|
||||
<speed>512</speed>
|
||||
</serviceOffering>
|
||||
<serviceOffering>
|
||||
<id>3</id>
|
||||
<name>Large Instance</name>
|
||||
<displayText>Large Instance [2GHZ CPU, 4GB MEM, 64GB Disk] - $0.30 per hour</displayText>
|
||||
<cpu>2</cpu>
|
||||
<ramSize>4096</ramSize>
|
||||
<speed>2000</speed>
|
||||
</serviceOffering>
|
||||
</serviceOfferings>
|
||||
|
||||
<diskOfferings>
|
||||
<diskOffering>
|
||||
<id>1</id>
|
||||
<domainId>1</domainId>
|
||||
<name>Small Disk</name>
|
||||
<displayText>Small Disk [16GB Disk]</displayText>
|
||||
<diskSpace>16000</diskSpace>
|
||||
</diskOffering>
|
||||
<diskOffering>
|
||||
<id>2</id>
|
||||
<domainId>1</domainId>
|
||||
<name>Medium Disk</name>
|
||||
<displayText>Medium Disk [32GB Disk]</displayText>
|
||||
<diskSpace>32000</diskSpace>
|
||||
<tags>mid_disk,mid_performance</tags>
|
||||
</diskOffering>
|
||||
<diskOffering>
|
||||
<id>3</id>
|
||||
<domainId>1</domainId>
|
||||
<name>Large Disk</name>
|
||||
<displayText>Large Disk [64GB Disk]</displayText>
|
||||
<diskSpace>64000</diskSpace>
|
||||
<tags>high_performance</tags>
|
||||
</diskOffering>
|
||||
</diskOfferings>
|
||||
|
||||
<!--
|
||||
* firstname/lastname are optional parameters
|
||||
* id, username, password are required parameters
|
||||
-->
|
||||
<users>
|
||||
<user>
|
||||
<id>2</id>
|
||||
<username>admin</username>
|
||||
<password>password</password>
|
||||
<firstname>Admin</firstname>
|
||||
<lastname>User</lastname>
|
||||
<email>admin@mailprovider.com</email>
|
||||
</user>
|
||||
</users>
|
||||
|
||||
<configurationEntries>
|
||||
<configuration>
|
||||
<name>ssh.privatekey</name>
|
||||
<value>-----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-----
|
||||
</value>
|
||||
<category>Hidden</category>
|
||||
</configuration>
|
||||
<configuration>
|
||||
<name>ssh.publickey</name>
|
||||
<value>ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAnNUMVgQS87EzAQN9ufGgH3T1kOpqcvTmUrp8RVZyeA5qwptSrZxONRbhLK709pZFBJLmeFqiqciWoA/srVIFk+rPmBlVsMw8BK53hTGoax7iSe8sLFCAATm6vp0HnZzYqNfrzR2by36ET5aQD/VAyA55u+uUgAlxQuhKff2xjyahEHs+UiRlReiAgItygm9g3co3+8fJDOuRse+s0TOip1D0jPdo2AJFscyxrG9hWqQH86R/ZlLJ7DqsiaAcUmn52u6Nsmd3BkRmGVx/D35Mq6upJqrk/QDfug9LF66yiIP/BEIn08N/wQ6m/O37WUtqqyl3rRKqs5TJ9ZnhsqeO9Q== root@test2.lab.vmops.com
|
||||
</value>
|
||||
<category>Hidden</category>
|
||||
</configuration>
|
||||
<configuration>
|
||||
<name>default.zone</name>
|
||||
<value>AH</value>
|
||||
</configuration>
|
||||
<configuration>
|
||||
<name>domain.suffix</name>
|
||||
<value>vmops-test.vmops.com</value>
|
||||
</configuration>
|
||||
<configuration>
|
||||
<name>instance.name</name>
|
||||
<value>AH</value>
|
||||
</configuration>
|
||||
<configuration>
|
||||
<name>consoleproxy.ram.size</name>
|
||||
<value>256</value>
|
||||
</configuration>
|
||||
<configuration>
|
||||
<name>host.stats.interval</name>
|
||||
<value>3600000</value>
|
||||
</configuration>
|
||||
<configuration>
|
||||
<name>storage.stats.interval</name>
|
||||
<value>120000</value>
|
||||
</configuration>
|
||||
<configuration>
|
||||
<name>volume.stats.interval</name>
|
||||
<value>-1</value>
|
||||
</configuration>
|
||||
<configuration>
|
||||
<name>ping.interval</name>
|
||||
<value>60</value>
|
||||
</configuration>
|
||||
<configuration>
|
||||
<name>alert.wait</name>
|
||||
<value>1800</value>
|
||||
</configuration>
|
||||
<configuration>
|
||||
<name>expunge.interval</name>
|
||||
<value>86400</value>
|
||||
</configuration>
|
||||
<configuration>
|
||||
<name>usage.aggregation.timezone</name>
|
||||
<value>GMT</value>
|
||||
</configuration>
|
||||
<configuration>
|
||||
<name>init</name>
|
||||
<value>true</value>
|
||||
</configuration>
|
||||
<configuration>
|
||||
<name>use.local.storage</name>
|
||||
<value>true</value>
|
||||
</configuration>
|
||||
<configuration>
|
||||
<name>system.vm.use.local.storage</name>
|
||||
<value>true</value>
|
||||
</configuration>
|
||||
<configuration>
|
||||
<name>secondary.storage.vm</name>
|
||||
<value>false</value>
|
||||
</configuration>
|
||||
<!-- the following are for configuring alerts and need to be changed to proper configuration values -->
|
||||
<!--
|
||||
<configuration>
|
||||
<name>alert.smtp.host</name>
|
||||
<value>smtp.host.com</value>
|
||||
</configuration>
|
||||
<configuration>
|
||||
<name>alert.smtp.port</name>
|
||||
<value>25</value>
|
||||
</configuration>
|
||||
<configuration>
|
||||
<name>alert.smtp.useAuth</name>
|
||||
<value>false</value>
|
||||
</configuration>
|
||||
<configuration>
|
||||
<name>alert.smtp.username</name>
|
||||
<value>some.user@example.com</value>
|
||||
</configuration>
|
||||
<configuration>
|
||||
<name>alert.smtp.password</name>
|
||||
<value>password</value>
|
||||
</configuration>
|
||||
<configuration>
|
||||
<name>alert.email.sender</name>
|
||||
<value>some.user@example.com</value>
|
||||
</configuration>
|
||||
<configuration>
|
||||
<name>alert.email.addresses</name>
|
||||
<value>some.admin@example.com</value>
|
||||
</configuration>
|
||||
<configuration>
|
||||
<name>alert.smtp.debug</name>
|
||||
<value>false</value>
|
||||
</configuration>
|
||||
-->
|
||||
<configuration>
|
||||
<name>memory.capacity.threshold</name>
|
||||
<value>0.85</value>
|
||||
</configuration>
|
||||
<configuration>
|
||||
<name>cpu.capacity.threshold</name>
|
||||
<value>0.85</value>
|
||||
</configuration>
|
||||
<configuration>
|
||||
<name>storage.capacity.threshold</name>
|
||||
<value>0.85</value>
|
||||
</configuration>
|
||||
<configuration>
|
||||
<name>storage.allocated.capacity.threshold</name>
|
||||
<value>0.85</value>
|
||||
</configuration>
|
||||
<configuration>
|
||||
<name>capacity.check.period</name>
|
||||
<value>3600000</value>
|
||||
</configuration>
|
||||
<configuration>
|
||||
<name>wait</name>
|
||||
<value>240</value>
|
||||
</configuration>
|
||||
<configuration>
|
||||
<name>network.throttling.rate</name>
|
||||
<value>200</value>
|
||||
</configuration>
|
||||
<configuration>
|
||||
<name>multicast.throttling.rate</name>
|
||||
<value>10</value>
|
||||
</configuration>
|
||||
<configuration>
|
||||
<name>management.network.cidr</name>
|
||||
<value>192.168.1.0/24</value>
|
||||
</configuration>
|
||||
<configuration>
|
||||
<name>usage.aggregation.timezone</name>
|
||||
<value>GMT</value>
|
||||
</configuration>
|
||||
<configuration>
|
||||
<name>usage.stats.job.exec.time</name>
|
||||
<value>00:15</value>
|
||||
</configuration>
|
||||
<configuration>
|
||||
<name>system.vm.local.storage.required</name>
|
||||
<value>false</value>
|
||||
</configuration>
|
||||
<configuration>
|
||||
<name>hypervisor.type</name>
|
||||
<value>xenserver</value>
|
||||
</configuration>
|
||||
<configuration>
|
||||
<name>secondary.storage.vm</name>
|
||||
<value>false</value>
|
||||
</configuration>
|
||||
</configurationEntries>
|
||||
|
||||
<!--
|
||||
It is possible to specify a single IP address. For example, to add 192.168.1.1
|
||||
as the only address, specify as follows.
|
||||
<publicIpAddresses>
|
||||
<zoneId>1</zoneId>
|
||||
<ipAddressRange>192.168.1.1</ipAddressRange>
|
||||
</publicIpAddresses>
|
||||
|
||||
For each ip address range, create a new object. For example, to add the range 192.168.2.1 to 192.168.2.255
|
||||
copy the following object tag into the privateIpRange
|
||||
<privateIpAddresses>
|
||||
<zoneId>1</zoneId>
|
||||
<podId>1</podId>
|
||||
<ipAddressRange>192.168.2.1-192.168.2.255</ipAddressRange>
|
||||
</privateIpAddresses>
|
||||
-->
|
||||
|
||||
<!--
|
||||
It is possible to specify a single IP address. For example, to add 65.37.141.29
|
||||
as the only address, specify as follows.
|
||||
<publicIpAddresses>
|
||||
<zoneId>1</zoneId>
|
||||
<ipAddressRange>65.37.141.29</ipAddressRange>
|
||||
</publicIpAddresses>
|
||||
|
||||
For each ip address range, create a new object. For example, to add the range 65.37.141.29 to 65.37.141.39
|
||||
copy the following object tag into the publicIpRange
|
||||
<publicIpAddresses>
|
||||
<zoneId>1</zoneId>
|
||||
<ipAddressRange>65.37.141.29-65.37.141.39</ipAddressRange>
|
||||
</publicIpAddresses>
|
||||
-->
|
||||
</data>
|
||||
Loading…
x
Reference in New Issue
Block a user