You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ra...@apache.org on 2018/03/08 09:59:55 UTC
[cloudstack] branch master updated: [CLOUDSTACK-10197] Update
DisplayText of XenServer tools ISO entry in the database when it already
exists (#2470)
This is an automated email from the ASF dual-hosted git repository.
rafael pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/master by this push:
new c3e5c09 [CLOUDSTACK-10197] Update DisplayText of XenServer tools ISO entry in the database when it already exists (#2470)
c3e5c09 is described below
commit c3e5c09ac6bfecedbdd831acba0e8fbcb5d4d3d5
Author: Rafael Weingärtner <ra...@gmail.com>
AuthorDate: Thu Mar 8 06:59:52 2018 -0300
[CLOUDSTACK-10197] Update DisplayText of XenServer tools ISO entry in the database when it already exists (#2470)
* Update the displayText of XenServer ISO when it already exist in the DB
Besides updating the ISO display text, I also created unit test cases for 'createXenServerToolsIsoEntryInDatabase' and 'getActualIsoTemplate' methods.
* Formatting and cleanups for checkstyle of changed classes
---
.../xenserver/discoverer/XcpServerDiscoverer.java | 110 ++--
.../xenserver/resource/CitrixResourceBase.java | 555 ++++++++++-----------
.../discoverer/XcpServerDiscovererTest.java | 72 +++
.../xenserver/resource/CitrixResourceBaseTest.java | 76 +++
.../xenserver/resource/XcpOssResourceTest.java | 16 +-
.../xenserver/resource/XcpServerResourceTest.java | 15 +-
.../resource/XenServer56FP1ResourceTest.java | 15 +-
.../resource/XenServer56ResourceTest.java | 14 +-
.../resource/XenServer56SP2ResourceTest.java | 20 +-
.../resource/XenServer600ResourceTest.java | 21 +-
.../resource/XenServer625ResourceTest.java | 13 +-
.../resource/XenServer650ResourceTest.java | 20 +-
12 files changed, 524 insertions(+), 423 deletions(-)
diff --git a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/discoverer/XcpServerDiscoverer.java b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/discoverer/XcpServerDiscoverer.java
index d23f7a8..75ee557 100644
--- a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/discoverer/XcpServerDiscoverer.java
+++ b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/discoverer/XcpServerDiscoverer.java
@@ -16,6 +16,24 @@
// under the License.
package com.cloud.hypervisor.xenserver.discoverer;
+import java.net.InetAddress;
+import java.net.URI;
+import java.net.UnknownHostException;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Queue;
+import java.util.Set;
+
+import javax.inject.Inject;
+import javax.naming.ConfigurationException;
+import javax.persistence.EntityExistsException;
+
+import org.apache.cloudstack.hypervisor.xenserver.XenserverConfigs;
+import org.apache.log4j.Logger;
+import org.apache.xmlrpc.XmlRpcException;
+
import com.cloud.agent.AgentManager;
import com.cloud.agent.Listener;
import com.cloud.agent.api.AgentControlAnswer;
@@ -81,46 +99,28 @@ import com.xensource.xenapi.Session;
import com.xensource.xenapi.Types.SessionAuthenticationFailed;
import com.xensource.xenapi.Types.UuidInvalid;
import com.xensource.xenapi.Types.XenAPIException;
-import org.apache.cloudstack.hypervisor.xenserver.XenserverConfigs;
-import org.apache.log4j.Logger;
-import org.apache.xmlrpc.XmlRpcException;
-
-import javax.inject.Inject;
-import javax.naming.ConfigurationException;
-import javax.persistence.EntityExistsException;
-import java.net.InetAddress;
-import java.net.URI;
-import java.net.UnknownHostException;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Queue;
-import java.util.Set;
public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, Listener, ResourceStateAdapter {
private static final Logger s_logger = Logger.getLogger(XcpServerDiscoverer.class);
- protected String _publicNic;
- protected String _privateNic;
- protected String _storageNic1;
- protected String _storageNic2;
- protected int _wait;
- protected XenServerConnectionPool _connPool;
- protected boolean _checkHvm;
- protected String _guestNic;
- protected boolean _setupMultipath;
- protected String _instance;
+ private int _wait;
+ private XenServerConnectionPool _connPool;
+ private boolean _checkHvm;
+ private boolean _setupMultipath;
+ private String _instance;
@Inject
- protected AlertManager _alertMgr;
+ private AlertManager _alertMgr;
@Inject
- protected AgentManager _agentMgr;
+ private AgentManager _agentMgr;
@Inject
private VMTemplateDao _tmpltDao;
@Inject
private HostPodDao _podDao;
+ private String xenServerIsoName = "xs-tools.iso";
+ private String xenServerIsoDisplayText = "XenServer Tools Installer ISO (xen-pv-drv-iso)";
+
protected XcpServerDiscoverer() {
}
@@ -198,8 +198,9 @@ public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, L
ClusterVO cluster = _clusterDao.findById(clusterId);
if (cluster == null || cluster.getHypervisorType() != HypervisorType.XenServer) {
- if (s_logger.isInfoEnabled())
+ if (s_logger.isInfoEnabled()) {
s_logger.info("invalid cluster id or cluster is not for XenServer hypervisors");
+ }
return null;
}
@@ -237,7 +238,7 @@ public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, L
if (clusterHosts != null && clusterHosts.size() > 0) {
if (!clu.getGuid().equals(poolUuid)) {
String msg = "Please join the host " + hostIp + " to XS pool "
- + clu.getGuid() + " through XC/XS before adding it through CS UI";
+ + clu.getGuid() + " through XC/XS before adding it through CS UI";
s_logger.warn(msg);
throw new DiscoveryException(msg);
}
@@ -395,18 +396,18 @@ public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, L
protected CitrixResourceBase createServerResource(String prodBrand, String prodVersion, String prodVersionTextShort, String hotfix) {
// Xen Cloud Platform group of hypervisors
if (prodBrand.equals("XCP") && (prodVersion.equals("1.0.0") || prodVersion.equals("1.1.0")
- || prodVersion.equals("5.6.100") || prodVersion.startsWith("1.4") || prodVersion.startsWith("1.6"))) {
+ || prodVersion.equals("5.6.100") || prodVersion.startsWith("1.4") || prodVersion.startsWith("1.6"))) {
return new XcpServerResource();
} // Citrix Xenserver group of hypervisors
- else if (prodBrand.equals("XenServer") && prodVersion.equals("5.6.0"))
+ else if (prodBrand.equals("XenServer") && prodVersion.equals("5.6.0")) {
return new XenServer56Resource();
- else if (prodBrand.equals("XenServer") && prodVersion.equals("6.0.0"))
+ } else if (prodBrand.equals("XenServer") && prodVersion.equals("6.0.0")) {
return new XenServer600Resource();
- else if (prodBrand.equals("XenServer") && prodVersion.equals("6.0.2"))
+ } else if (prodBrand.equals("XenServer") && prodVersion.equals("6.0.2")) {
return new XenServer600Resource();
- else if (prodBrand.equals("XenServer") && prodVersion.equals("6.1.0"))
+ } else if (prodBrand.equals("XenServer") && prodVersion.equals("6.1.0")) {
return new XenServer610Resource();
- else if (prodBrand.equals("XenServer") && prodVersion.equals("6.2.0")) {
+ } else if (prodBrand.equals("XenServer") && prodVersion.equals("6.2.0")) {
if (hotfix != null && hotfix.equals(XenserverConfigs.XSHotFix62ESP1004)) {
return new Xenserver625Resource();
} else if (hotfix != null && hotfix.equals(XenserverConfigs.XSHotFix62ESP1)) {
@@ -464,37 +465,27 @@ public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, L
super.configure(name, params);
serverConfig();
- _publicNic = _params.get(Config.XenServerPublicNetwork.key());
- _privateNic = _params.get(Config.XenServerPrivateNetwork.key());
-
- _storageNic1 = _params.get(Config.XenServerStorageNetwork1.key());
- _storageNic2 = _params.get(Config.XenServerStorageNetwork2.key());
-
- _guestNic = _params.get(Config.XenServerGuestNetwork.key());
-
String value = _params.get(Config.XapiWait.toString());
_wait = NumbersUtil.parseInt(value, Integer.parseInt(Config.XapiWait.getDefaultValue()));
_instance = _params.get(Config.InstanceName.key());
- value = _params.get(Config.XenServerSetupMultipath.key());
- Boolean.parseBoolean(value);
-
value = _params.get("xenserver.check.hvm");
_checkHvm = Boolean.parseBoolean(value);
_connPool = XenServerConnectionPool.getInstance();
_agentMgr.registerForHostEvents(this, true, false, true);
- createXsToolsISO();
+ createXenServerToolsIsoEntryInDatabase();
_resourceMgr.registerResourceStateAdapter(this.getClass().getSimpleName(), this);
return true;
}
@Override
public boolean matchHypervisor(String hypervisor) {
- if (hypervisor == null)
+ if (hypervisor == null) {
return true;
+ }
return Hypervisor.HypervisorType.XenServer.toString().equalsIgnoreCase(hypervisor);
}
@@ -528,20 +519,23 @@ public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, L
return false;
}
- private void createXsToolsISO() {
- String isoName = "xs-tools.iso";
- VMTemplateVO tmplt = _tmpltDao.findByTemplateName(isoName);
- Long id;
+ /**
+ * Create the XenServer tools ISO entry in the database.
+ * If there is already an entry with 'isoName' equals to {@value #xenServerIsoName} , we update its 'displayText' to {@value #xenServerIsoDisplayText}.
+ * Otherwise, we create a new entry.
+ */
+ protected void createXenServerToolsIsoEntryInDatabase() {
+ VMTemplateVO tmplt = _tmpltDao.findByTemplateName(xenServerIsoName);
if (tmplt == null) {
- id = _tmpltDao.getNextInSequence(Long.class, "id");
- VMTemplateVO template =
- VMTemplateVO.createPreHostIso(id, isoName, isoName, ImageFormat.ISO, true, true, TemplateType.PERHOST, null, null, true, 64, Account.ACCOUNT_ID_SYSTEM,
- null, "XenServer Tools Installer ISO (xen-pv-drv-iso)", false, 1, false, HypervisorType.XenServer);
+ long id = _tmpltDao.getNextInSequence(Long.class, "id");
+ VMTemplateVO template = VMTemplateVO.createPreHostIso(id, xenServerIsoName, xenServerIsoName, ImageFormat.ISO, true, true, TemplateType.PERHOST, null, null, true, 64,
+ Account.ACCOUNT_ID_SYSTEM, null, xenServerIsoDisplayText, false, 1, false, HypervisorType.XenServer);
_tmpltDao.persist(template);
} else {
- id = tmplt.getId();
+ long id = tmplt.getId();
tmplt.setTemplateType(TemplateType.PERHOST);
tmplt.setUrl(null);
+ tmplt.setDisplayText(xenServerIsoDisplayText);
_tmpltDao.update(id, tmplt);
}
}
diff --git a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java
index 4b7080a..ee146a1 100644
--- a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java
+++ b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java
@@ -16,8 +16,52 @@
// under the License.
package com.cloud.hypervisor.xenserver.resource;
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Properties;
+import java.util.Queue;
+import java.util.Random;
+import java.util.Set;
+import java.util.UUID;
+import java.util.concurrent.TimeoutException;
+
+import javax.naming.ConfigurationException;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import org.apache.cloudstack.storage.to.TemplateObjectTO;
+import org.apache.cloudstack.storage.to.VolumeObjectTO;
import org.apache.commons.collections.MapUtils;
+import org.apache.commons.io.FileUtils;
+import org.apache.log4j.Logger;
+import org.apache.xmlrpc.XmlRpcException;
+import org.joda.time.Duration;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+
import com.cloud.agent.IAgentControl;
import com.cloud.agent.api.Answer;
import com.cloud.agent.api.Command;
@@ -112,49 +156,6 @@ import com.xensource.xenapi.VIF;
import com.xensource.xenapi.VLAN;
import com.xensource.xenapi.VM;
import com.xensource.xenapi.XenAPIObject;
-import org.apache.cloudstack.storage.to.TemplateObjectTO;
-import org.apache.cloudstack.storage.to.VolumeObjectTO;
-import org.apache.commons.io.FileUtils;
-import org.apache.log4j.Logger;
-import org.apache.xmlrpc.XmlRpcException;
-import org.joda.time.Duration;
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-
-import javax.naming.ConfigurationException;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
-import java.net.MalformedURLException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.net.URLConnection;
-import java.nio.charset.Charset;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Properties;
-import java.util.Queue;
-import java.util.Random;
-import java.util.Set;
-import java.util.UUID;
-import java.util.concurrent.TimeoutException;
/**
* CitrixResourceBase encapsulates the calls to the XenServer Xapi process to
@@ -205,6 +206,9 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
private static final Logger s_logger = Logger.getLogger(CitrixResourceBase.class);
protected static final HashMap<VmPowerState, PowerState> s_powerStatesTable;
+ private String xenServer70plusGuestToolsName = "guest-tools.iso";
+ private String xenServerBefore70GuestToolsName = "xs-tools.iso";
+
static {
s_powerStatesTable = new HashMap<VmPowerState, PowerState>();
s_powerStatesTable.put(VmPowerState.HALTED, PowerState.PowerOff);
@@ -268,8 +272,8 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
protected VirtualRoutingResource _vrResource;
- protected String _configDriveIsopath = "/opt/xensource/packages/configdrive_iso/";
- protected String _configDriveSRName = "ConfigDriveISOs";
+ protected String _configDriveIsopath = "/opt/xensource/packages/configdrive_iso/";
+ protected String _configDriveSRName = "ConfigDriveISOs";
public String _attachIsoDeviceNum = "3";
protected XenServerUtilitiesHelper xenServerUtilitiesHelper = new XenServerUtilitiesHelper();
@@ -562,7 +566,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
@Override
public ExecutionResult cleanupCommand(final NetworkElementCommand cmd) {
if (cmd instanceof IpAssocCommand && !(cmd instanceof IpAssocVpcCommand)) {
- return cleanupNetworkElementCommand((IpAssocCommand) cmd);
+ return cleanupNetworkElementCommand((IpAssocCommand)cmd);
}
return new ExecutionResult(true, null);
}
@@ -600,7 +604,6 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
try {
final IpAddressTO[] ips = cmd.getIpAddresses();
- final int ipsCount = ips.length;
for (final IpAddressTO ip : ips) {
final VM router = getVM(conn, routerName);
@@ -734,7 +737,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
try {
task = vdi.copyAsync(conn, sr);
// poll every 1 seconds , timeout after 2 hours
- waitForTask(conn, task, 1000, (long) wait * 1000);
+ waitForTask(conn, task, 1000, (long)wait * 1000);
checkForSuccess(conn, task);
final VDI dvdi = Types.toVDI(task, conn);
return dvdi;
@@ -783,44 +786,44 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
_name = name;
try {
- _dcId = Long.parseLong((String) params.get("zone"));
+ _dcId = Long.parseLong((String)params.get("zone"));
} catch (final NumberFormatException e) {
throw new ConfigurationException("Unable to get the zone " + params.get("zone"));
}
- _host.setUuid((String) params.get("guid"));
+ _host.setUuid((String)params.get("guid"));
_name = _host.getUuid();
- _host.setIp((String) params.get("ipaddress"));
-
- _username = (String) params.get("username");
- _password.add((String) params.get("password"));
- _pod = (String) params.get("pod");
- _cluster = (String) params.get("cluster");
- _privateNetworkName = (String) params.get("private.network.device");
- _publicNetworkName = (String) params.get("public.network.device");
- _guestNetworkName = (String) params.get("guest.network.device");
- _instance = (String) params.get("instance.name");
- _securityGroupEnabled = Boolean.parseBoolean((String) params.get("securitygroupenabled"));
-
- _linkLocalPrivateNetworkName = (String) params.get("private.linkLocal.device");
+ _host.setIp((String)params.get("ipaddress"));
+
+ _username = (String)params.get("username");
+ _password.add((String)params.get("password"));
+ _pod = (String)params.get("pod");
+ _cluster = (String)params.get("cluster");
+ _privateNetworkName = (String)params.get("private.network.device");
+ _publicNetworkName = (String)params.get("public.network.device");
+ _guestNetworkName = (String)params.get("guest.network.device");
+ _instance = (String)params.get("instance.name");
+ _securityGroupEnabled = Boolean.parseBoolean((String)params.get("securitygroupenabled"));
+
+ _linkLocalPrivateNetworkName = (String)params.get("private.linkLocal.device");
if (_linkLocalPrivateNetworkName == null) {
_linkLocalPrivateNetworkName = "cloud_link_local_network";
}
- _storageNetworkName1 = (String) params.get("storage.network.device1");
- _storageNetworkName2 = (String) params.get("storage.network.device2");
+ _storageNetworkName1 = (String)params.get("storage.network.device1");
+ _storageNetworkName2 = (String)params.get("storage.network.device2");
- _heartbeatTimeout = NumbersUtil.parseInt((String) params.get("xenserver.heartbeat.timeout"), 120);
- _heartbeatInterval = NumbersUtil.parseInt((String) params.get("xenserver.heartbeat.interval"), 60);
+ _heartbeatTimeout = NumbersUtil.parseInt((String)params.get("xenserver.heartbeat.timeout"), 120);
+ _heartbeatInterval = NumbersUtil.parseInt((String)params.get("xenserver.heartbeat.interval"), 60);
- String value = (String) params.get("wait");
+ String value = (String)params.get("wait");
_wait = NumbersUtil.parseInt(value, 600);
- value = (String) params.get("migratewait");
+ value = (String)params.get("migratewait");
_migratewait = NumbersUtil.parseInt(value, 3600);
- _maxNics = NumbersUtil.parseInt((String) params.get("xenserver.nics.max"), 7);
+ _maxNics = NumbersUtil.parseInt((String)params.get("xenserver.nics.max"), 7);
if (_pod == null) {
throw new ConfigurationException("Unable to get the pod");
@@ -869,7 +872,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
if (configuredHosts != null) {
final String hostIdsStr[] = configuredHosts.split(",");
for (final String hostIdStr : hostIdsStr) {
- if (hostIdStr.equals(((Long) hostId).toString())) {
+ if (hostIdStr.equals(((Long)hostId).toString())) {
configured = true;
break;
}
@@ -879,17 +882,15 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
if (!configured) {
String result;
if (bridgeName.startsWith("OVS-DR-VPC-Bridge")) {
- result = callHostPlugin(conn, "ovstunnel", "setup_ovs_bridge_for_distributed_routing", "bridge", bridge, "key", bridgeName, "xs_nw_uuid", nw.getUuid(conn),
- "cs_host_id", ((Long) hostId).toString());
+ result = callHostPlugin(conn, "ovstunnel", "setup_ovs_bridge_for_distributed_routing", "bridge", bridge, "key", bridgeName, "xs_nw_uuid", nw.getUuid(conn), "cs_host_id",
+ ((Long)hostId).toString());
} else {
- result = callHostPlugin(conn, "ovstunnel", "setup_ovs_bridge", "bridge", bridge, "key", bridgeName, "xs_nw_uuid", nw.getUuid(conn), "cs_host_id",
- ((Long) hostId).toString());
+ result = callHostPlugin(conn, "ovstunnel", "setup_ovs_bridge", "bridge", bridge, "key", bridgeName, "xs_nw_uuid", nw.getUuid(conn), "cs_host_id", ((Long)hostId).toString());
}
// Note down the fact that the ovs bridge has been setup
final String[] res = result.split(":");
if (res.length != 2 || !res[0].equalsIgnoreCase("SUCCESS")) {
- // TODO: Should make this error not fatal?
throw new CloudRuntimeException("Unable to pre-configure OVS bridge " + bridge);
}
}
@@ -937,8 +938,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
public String copyVhdFromSecondaryStorage(final Connection conn, final String mountpoint, final String sruuid, final int wait) {
final String nameLabel = "cloud-" + UUID.randomUUID().toString();
- final String results = callHostPluginAsync(conn, "vmopspremium", "copy_vhd_from_secondarystorage", wait, "mountpoint", mountpoint, "sruuid", sruuid, "namelabel",
- nameLabel);
+ final String results = callHostPluginAsync(conn, "vmopspremium", "copy_vhd_from_secondarystorage", wait, "mountpoint", mountpoint, "sruuid", sruuid, "namelabel", nameLabel);
String errMsg = null;
if (results == null || results.isEmpty()) {
errMsg = "copy_vhd_from_secondarystorage return null";
@@ -1093,8 +1093,8 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
String createTemplateFromSnapshot(final Connection conn, final String templatePath, final String snapshotPath, final int wait) {
final String tmpltLocalDir = UUID.randomUUID().toString();
- final String results = callHostPluginAsync(conn, "vmopspremium", "create_privatetemplate_from_snapshot", wait, "templatePath", templatePath, "snapshotPath", snapshotPath,
- "tmpltLocalDir", tmpltLocalDir);
+ final String results = callHostPluginAsync(conn, "vmopspremium", "create_privatetemplate_from_snapshot", wait, "templatePath", templatePath, "snapshotPath", snapshotPath, "tmpltLocalDir",
+ tmpltLocalDir);
String errMsg = null;
if (results == null || results.isEmpty()) {
errMsg = "create_privatetemplate_from_snapshot return null";
@@ -1113,8 +1113,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
throw new CloudRuntimeException(errMsg);
}
- public VBD createVbd(final Connection conn, final DiskTO volume, final String vmName, final VM vm, final BootloaderType bootLoaderType, VDI vdi) throws XmlRpcException,
- XenAPIException {
+ public VBD createVbd(final Connection conn, final DiskTO volume, final String vmName, final VM vm, final BootloaderType bootLoaderType, VDI vdi) throws XmlRpcException, XenAPIException {
final Volume.Type type = volume.getType();
if (vdi == null) {
@@ -1158,7 +1157,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
vbdr.userdevice = "autodetect";
final Long deviceId = volume.getDiskSeq();
if (deviceId != null && (!isDeviceUsed(conn, vm, deviceId) || deviceId > 3)) {
- vbdr.userdevice = deviceId.toString();
+ vbdr.userdevice = deviceId.toString();
}
}
final VBD vbd = VBD.create(conn, vbdr);
@@ -1268,7 +1267,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
vmr.actionsAfterCrash = Types.OnCrashBehaviour.DESTROY;
vmr.actionsAfterShutdown = Types.OnNormalExit.DESTROY;
vmr.otherConfig.put("vm_uuid", vmSpec.getUuid());
- vmr.VCPUsMax = (long) vmSpec.getCpus(); // FIX ME: In case of dynamic
+ vmr.VCPUsMax = (long)vmSpec.getCpus(); // FIX ME: In case of dynamic
// scaling this VCPU max should
// be the minumum of
// recommended value for that template and capacity remaining on host
@@ -1276,32 +1275,30 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
long recommendedMemoryMin = 0l;
long recommendedMemoryMax = 0l;
- Map<String,String> guestOsDetails = vmSpec.getGuestOsDetails();
+ Map<String, String> guestOsDetails = vmSpec.getGuestOsDetails();
- if(guestOsDetails != null){
- if(guestOsDetails.containsKey("xenserver.dynamicMin")){
+ if (guestOsDetails != null) {
+ if (guestOsDetails.containsKey("xenserver.dynamicMin")) {
recommendedMemoryMin = Long.valueOf(guestOsDetails.get("xenserver.dynamicMin")).longValue();
}
- if(guestOsDetails.containsKey("xenserver.dynamicMax")){
+ if (guestOsDetails.containsKey("xenserver.dynamicMax")) {
recommendedMemoryMax = Long.valueOf(guestOsDetails.get("xenserver.dynamicMax")).longValue();
}
}
-
-
if (isDmcEnabled(conn, host) && vmSpec.isEnableDynamicallyScaleVm()) {
// scaling is allowed
- vmr.memoryStaticMin = getStaticMin(vmSpec.getOs(), vmSpec.getBootloader() == BootloaderType.CD, vmSpec.getMinRam(), vmSpec.getMaxRam(),recommendedMemoryMin);
- vmr.memoryStaticMax = getStaticMax(vmSpec.getOs(), vmSpec.getBootloader() == BootloaderType.CD, vmSpec.getMinRam(), vmSpec.getMaxRam(),recommendedMemoryMax);
+ vmr.memoryStaticMin = getStaticMin(vmSpec.getOs(), vmSpec.getBootloader() == BootloaderType.CD, vmSpec.getMinRam(), vmSpec.getMaxRam(), recommendedMemoryMin);
+ vmr.memoryStaticMax = getStaticMax(vmSpec.getOs(), vmSpec.getBootloader() == BootloaderType.CD, vmSpec.getMinRam(), vmSpec.getMaxRam(), recommendedMemoryMax);
vmr.memoryDynamicMin = vmSpec.getMinRam();
vmr.memoryDynamicMax = vmSpec.getMaxRam();
if (guestOsTypeName.toLowerCase().contains("windows")) {
- vmr.VCPUsMax = (long) vmSpec.getCpus();
+ vmr.VCPUsMax = (long)vmSpec.getCpus();
} else {
if (vmSpec.getVcpuMaxLimit() != null) {
- vmr.VCPUsMax = (long) vmSpec.getVcpuMaxLimit();
+ vmr.VCPUsMax = (long)vmSpec.getVcpuMaxLimit();
}
}
} else {
@@ -1315,16 +1312,16 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
;
vmr.memoryDynamicMax = vmSpec.getMaxRam();
- vmr.VCPUsMax = (long) vmSpec.getCpus();
+ vmr.VCPUsMax = (long)vmSpec.getCpus();
}
- vmr.VCPUsAtStartup = (long) vmSpec.getCpus();
+ vmr.VCPUsAtStartup = (long)vmSpec.getCpus();
vmr.consoles.clear();
vmr.xenstoreData.clear();
//Add xenstore data for the NetscalerVM
- if(vmSpec.getType()== VirtualMachine.Type.NetScalerVm) {
+ if (vmSpec.getType() == VirtualMachine.Type.NetScalerVm) {
NicTO mgmtNic = vmSpec.getNics()[0];
- if(mgmtNic != null ) {
+ if (mgmtNic != null) {
Map<String, String> xenstoreData = new HashMap<String, String>(3);
xenstoreData.put("vm-data/ip", mgmtNic.getIp().toString().trim());
xenstoreData.put("vm-data/gateway", mgmtNic.getGateway().toString().trim());
@@ -1342,11 +1339,11 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
final Integer speed = vmSpec.getMinSpeed();
if (speed != null) {
- int cpuWeight = _maxWeight; // cpu_weight
+ int cpuWeight = _maxWeight; // cpu_weight
int utilization = 0; // max CPU cap, default is unlimited
// weight based allocation, CPU weight is calculated per VCPU
- cpuWeight = (int) (speed * 0.99 / _host.getSpeed() * _maxWeight);
+ cpuWeight = (int)(speed * 0.99 / _host.getSpeed() * _maxWeight);
if (cpuWeight > _maxWeight) {
cpuWeight = _maxWeight;
}
@@ -1354,7 +1351,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
if (vmSpec.getLimitCpuUse()) {
// CPU cap is per VM, so need to assign cap based on the number
// of vcpus
- utilization = (int) (vmSpec.getMaxSpeed() * 0.99 * vmSpec.getCpus() / _host.getSpeed() * 100);
+ utilization = (int)(vmSpec.getMaxSpeed() * 0.99 * vmSpec.getCpus() / _host.getSpeed() * 100);
}
vcpuParams.put("weight", Integer.toString(cpuWeight));
@@ -1381,7 +1378,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
final DiskTO[] disks = vmSpec.getDisks();
for (final DiskTO disk : disks) {
if (disk.getType() == Volume.Type.ISO) {
- final TemplateObjectTO iso = (TemplateObjectTO) disk.getData();
+ final TemplateObjectTO iso = (TemplateObjectTO)disk.getData();
final String osType = iso.getGuestOsType();
if (osType != null) {
final String isoGuestOsName = getGuestOsType(vmSpec.getPlatformEmulator());
@@ -1399,7 +1396,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
}
} else if (vmSpec.getBootloader() == BootloaderType.PyGrub) {
vm.setPVBootloader(conn, "pygrub");
- vm.setPVBootloaderArgs(conn,CitrixHelper.getPVbootloaderArgs(guestOsTypeName));
+ vm.setPVBootloaderArgs(conn, CitrixHelper.getPVbootloaderArgs(guestOsTypeName));
} else {
vm.destroy(conn);
throw new CloudRuntimeException("Unable to handle boot loader type: " + vmSpec.getBootloader());
@@ -1418,8 +1415,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
// below is redundant but keeping for consistency and code readabilty
final String guestOsTypeName = platformEmulator;
if (guestOsTypeName == null) {
- final String msg = " Hypervisor " + this.getClass().getName() + " doesn't support guest OS type " + guestOSType
- + ". you can choose 'Other install media' to run it as HVM";
+ final String msg = " Hypervisor " + this.getClass().getName() + " doesn't support guest OS type " + guestOSType + ". you can choose 'Other install media' to run it as HVM";
s_logger.warn(msg);
throw new CloudRuntimeException(msg);
}
@@ -1466,12 +1462,11 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
return details != null && details.equals("1");
}
- protected String deleteSnapshotBackup(final Connection conn, final Long dcId, final Long accountId, final Long volumeId, final String secondaryStorageMountPath,
- final String backupUUID) {
+ protected String deleteSnapshotBackup(final Connection conn, final Long dcId, final Long accountId, final Long volumeId, final String secondaryStorageMountPath, final String backupUUID) {
// If anybody modifies the formatting below again, I'll skin them
- final String result = callHostPlugin(conn, "vmopsSnapshot", "deleteSnapshotBackup", "backupUUID", backupUUID, "dcId", dcId.toString(), "accountId", accountId.toString(),
- "volumeId", volumeId.toString(), "secondaryStorageMountPath", secondaryStorageMountPath);
+ final String result = callHostPlugin(conn, "vmopsSnapshot", "deleteSnapshotBackup", "backupUUID", backupUUID, "dcId", dcId.toString(), "accountId", accountId.toString(), "volumeId",
+ volumeId.toString(), "secondaryStorageMountPath", secondaryStorageMountPath);
return result;
}
@@ -1500,13 +1495,9 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
public synchronized void destroyTunnelNetwork(final Connection conn, final Network nw, final long hostId) {
try {
final String bridge = nw.getBridge(conn);
- final String result = callHostPlugin(conn, "ovstunnel", "destroy_ovs_bridge", "bridge", bridge, "cs_host_id", ((Long) hostId).toString());
+ final String result = callHostPlugin(conn, "ovstunnel", "destroy_ovs_bridge", "bridge", bridge, "cs_host_id", ((Long)hostId).toString());
final String[] res = result.split(":");
if (res.length != 2 || !res[0].equalsIgnoreCase("SUCCESS")) {
- // TODO: Should make this error not fatal?
- // Can Concurrent VM shutdown/migration/reboot events can cause
- // this method
- // to be executed on a bridge which has already been removed?
throw new CloudRuntimeException("Unable to remove OVS bridge " + bridge + ":" + result);
}
return;
@@ -1791,7 +1782,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
}
}
- ram = (long) ((ram - dom0Ram - _xsMemoryUsed) * _xsVirtualizationFactor);
+ ram = (long)((ram - dom0Ram - _xsMemoryUsed) * _xsVirtualizationFactor);
cmd.setMemory(ram);
cmd.setDom0MinMemory(dom0Ram);
@@ -1852,8 +1843,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
Pair<Boolean, String> result = xenServerUtilitiesHelper.executeSshWrapper(_host.getIp(), 22, _username, null, getPwdFromQueue(), cmdLine);
- boolean supportsClonedVolumes = result != null && result.first() != null && result.first() &&
- result.second() != null && result.second().length() > 0;
+ boolean supportsClonedVolumes = result != null && result.first() != null && result.first() && result.second() != null && result.second().length() > 0;
cmd.setSupportsClonedVolumes(supportsClonedVolumes);
} catch (NumberFormatException ex) {
@@ -2215,10 +2205,10 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
return null;
}
- final Integer numRows = (Integer) rrdData[0];
- final Integer numColumns = (Integer) rrdData[1];
- final Node legend = (Node) rrdData[2];
- final Node dataNode = (Node) rrdData[3];
+ final Integer numRows = (Integer)rrdData[0];
+ final Integer numColumns = (Integer)rrdData[1];
+ final Node legend = (Node)rrdData[2];
+ final Node dataNode = (Node)rrdData[3];
final NodeList legendChildren = legend.getChildNodes();
for (int col = 0; col < numColumns; col++) {
@@ -2329,24 +2319,20 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
return vmStates;
}
- public SR getIscsiSR(final Connection conn, final String srNameLabel, final String target, String path, final String chapInitiatorUsername,
- final String chapInitiatorPassword, final boolean ignoreIntroduceException) {
+ public SR getIscsiSR(final Connection conn, final String srNameLabel, final String target, String path, final String chapInitiatorUsername, final String chapInitiatorPassword,
+ final boolean ignoreIntroduceException) {
- return getIscsiSR(conn, srNameLabel, target, path, chapInitiatorUsername,
- chapInitiatorPassword, false, SRType.LVMOISCSI.toString(),
- ignoreIntroduceException);
+ return getIscsiSR(conn, srNameLabel, target, path, chapInitiatorUsername, chapInitiatorPassword, false, SRType.LVMOISCSI.toString(), ignoreIntroduceException);
}
- public SR getIscsiSR(final Connection conn, final String srNameLabel, final String target, String path, final String chapInitiatorUsername,
- final String chapInitiatorPassword, final boolean resignature, final boolean ignoreIntroduceException) {
+ public SR getIscsiSR(final Connection conn, final String srNameLabel, final String target, String path, final String chapInitiatorUsername, final String chapInitiatorPassword,
+ final boolean resignature, final boolean ignoreIntroduceException) {
- return getIscsiSR(conn, srNameLabel, target, path, chapInitiatorUsername,
- chapInitiatorPassword, resignature, SRType.LVMOISCSI.toString(),
- ignoreIntroduceException);
+ return getIscsiSR(conn, srNameLabel, target, path, chapInitiatorUsername, chapInitiatorPassword, resignature, SRType.LVMOISCSI.toString(), ignoreIntroduceException);
}
- public SR getIscsiSR(final Connection conn, final String srNameLabel, final String target, String path, final String chapInitiatorUsername,
- final String chapInitiatorPassword, final boolean resignature, final String srType, final boolean ignoreIntroduceException) {
+ public SR getIscsiSR(final Connection conn, final String srNameLabel, final String target, String path, final String chapInitiatorUsername, final String chapInitiatorPassword,
+ final boolean resignature, final String srType, final boolean ignoreIntroduceException) {
synchronized (srNameLabel.intern()) {
final Map<String, String> deviceConfig = new HashMap<String, String>();
try {
@@ -2396,8 +2382,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
if (pooluuid == null || pooluuid.length() != 36) {
sr = SR.create(conn, host, deviceConfig, new Long(0), srNameLabel, srNameLabel, srType, "user", true, smConfig);
- }
- else {
+ } else {
if (resignature) {
// We resignature the SR for managed storage if needed. At the end of this
// we have an SR which is ready to be attached. For VHDoISCSI SR,
@@ -2422,7 +2407,8 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
}
}
- private SR introduceAndPlugIscsiSr(Connection conn, String pooluuid, String srNameLabel, String type, Map<String, String> smConfig, Map<String, String> deviceConfig, boolean ignoreIntroduceException) throws XmlRpcException, XenAPIException {
+ private SR introduceAndPlugIscsiSr(Connection conn, String pooluuid, String srNameLabel, String type, Map<String, String> smConfig, Map<String, String> deviceConfig,
+ boolean ignoreIntroduceException) throws XmlRpcException, XenAPIException {
SR sr = null;
try {
sr = SR.introduce(conn, pooluuid, srNameLabel, srNameLabel, type, "user", true, smConfig);
@@ -2459,8 +2445,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
return sr;
}
- private String resignatureIscsiSr(Connection conn, Host host, Map<String, String> deviceConfig, String srNameLabel, Map<String, String> smConfig)
- throws XmlRpcException, XenAPIException {
+ private String resignatureIscsiSr(Connection conn, Host host, Map<String, String> deviceConfig, String srNameLabel, Map<String, String> smConfig) throws XmlRpcException, XenAPIException {
String pooluuid;
try {
@@ -2471,8 +2456,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
// That being the case, if this CloudRuntimeException statement is executed, there appears to have been some kind
// of failure in the execution of the above SR.create (resign) method.
throw new CloudRuntimeException("Problem resigning the metadata");
- }
- catch (XenAPIException ex) {
+ } catch (XenAPIException ex) {
String msg = ex.toString();
if (!msg.contains("successfully resigned")) {
@@ -2497,43 +2481,43 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
}
private void checkIfIscsiSrExisits(Connection conn, String srNameLabel, String target, String targetiqn, String lunid) throws XenAPIException, XmlRpcException {
- final Set<SR> srs = SR.getByNameLabel(conn, srNameLabel);
- for (final SR sr : srs) {
- if (!(SRType.LVMOISCSI.equals(sr.getType(conn)))) {
- continue;
- }
- final Set<PBD> pbds = sr.getPBDs(conn);
- if (pbds.isEmpty()) {
- continue;
- }
- final PBD pbd = pbds.iterator().next();
- final Map<String, String> dc = pbd.getDeviceConfig(conn);
- if (dc == null) {
- continue;
- }
- if (dc.get("target") == null) {
- continue;
- }
- if (dc.get("targetIQN") == null) {
- continue;
- }
- if (dc.get("lunid") == null) {
- continue;
- }
- if (target.equals(dc.get("target")) && targetiqn.equals(dc.get("targetIQN")) && lunid.equals(dc.get("lunid"))) {
- throw new CloudRuntimeException("There is a SR using the same configuration target:" + dc.get("target") + ", targetIQN:" + dc.get("targetIQN")
- + ", lunid:" + dc.get("lunid") + " for pool " + srNameLabel + "on host:" + _host.getUuid());
- }
- }
+ final Set<SR> srs = SR.getByNameLabel(conn, srNameLabel);
+ for (final SR sr : srs) {
+ if (!(SRType.LVMOISCSI.equals(sr.getType(conn)))) {
+ continue;
+ }
+ final Set<PBD> pbds = sr.getPBDs(conn);
+ if (pbds.isEmpty()) {
+ continue;
+ }
+ final PBD pbd = pbds.iterator().next();
+ final Map<String, String> dc = pbd.getDeviceConfig(conn);
+ if (dc == null) {
+ continue;
+ }
+ if (dc.get("target") == null) {
+ continue;
+ }
+ if (dc.get("targetIQN") == null) {
+ continue;
+ }
+ if (dc.get("lunid") == null) {
+ continue;
+ }
+ if (target.equals(dc.get("target")) && targetiqn.equals(dc.get("targetIQN")) && lunid.equals(dc.get("lunid"))) {
+ throw new CloudRuntimeException("There is a SR using the same configuration target:" + dc.get("target") + ", targetIQN:" + dc.get("targetIQN") + ", lunid:" + dc.get("lunid")
+ + " for pool " + srNameLabel + "on host:" + _host.getUuid());
+ }
+ }
}
- private String probeScisiId(Connection conn, Host host, Map<String, String> deviceConfig, String type, String srNameLabel, String lunid, Map<String, String> smConfig) throws XenAPIException, XmlRpcException {
- SR sr = null;
+ private String probeScisiId(Connection conn, Host host, Map<String, String> deviceConfig, String type, String srNameLabel, String lunid, Map<String, String> smConfig)
+ throws XenAPIException, XmlRpcException {
String scsiid = null;
try {
- sr = SR.create(conn, host, deviceConfig, new Long(0), srNameLabel, srNameLabel, type, "user", true, smConfig);
+ SR.create(conn, host, deviceConfig, new Long(0), srNameLabel, srNameLabel, type, "user", true, smConfig);
} catch (final XenAPIException e) {
final String errmsg = e.toString();
if (errmsg.contains("SR_BACKEND_FAILURE_107")) {
@@ -2593,7 +2577,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
String mountpoint = null;
if (isoURL.startsWith("xs-tools")) {
try {
- final String actualIsoURL = actualIsoTemplate(conn);
+ final String actualIsoURL = getActualIsoTemplate(conn);
final Set<VDI> vdis = VDI.getByNameLabel(conn, actualIsoURL);
if (vdis.isEmpty()) {
throw new CloudRuntimeException("Could not find ISO with URL: " + actualIsoURL);
@@ -2632,20 +2616,27 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
}
}
- private String actualIsoTemplate(final Connection conn) throws BadServerResponse, XenAPIException, XmlRpcException {
- final Host host = Host.getByUuid(conn, _host.getUuid());
- final Host.Record record = host.getRecord(conn);
- final String xenBrand = record.softwareVersion.get("product_brand");
- final String xenVersion = record.softwareVersion.get("product_version");
- final String[] items = xenVersion.split("\\.");
+ /**
+ * Retrieve the actual ISO 'name-label' to be used.
+ * We based our decision on XenServer version.
+ * <ul>
+ * <li> for XenServer 7.0+, we use {@value #xenServer70plusGuestToolsName};
+ * <li> for versions before 7.0, we use {@value #xenServerBefore70GuestToolsName}.
+ * </ul>
+ *
+ * For XCP we always use {@value #xenServerBefore70GuestToolsName}.
+ */
+ protected String getActualIsoTemplate(Connection conn) throws XenAPIException, XmlRpcException {
+ Host host = Host.getByUuid(conn, _host.getUuid());
+ Host.Record record = host.getRecord(conn);
+ String xenBrand = record.softwareVersion.get("product_brand");
+ String xenVersion = record.softwareVersion.get("product_version");
+ String[] items = xenVersion.split("\\.");
- // guest-tools.iso for XenServer version 7.0+
if (xenBrand.equals("XenServer") && Integer.parseInt(items[0]) >= 7) {
- return "guest-tools.iso";
+ return xenServer70plusGuestToolsName;
}
-
- // xs-tools.iso for older XenServer versions
- return "xs-tools.iso";
+ return xenServerBefore70GuestToolsName;
}
public String getLabel() {
@@ -2774,8 +2765,8 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
final PIF.Record rec = pif.getRecord(conn);
if (rec.management) {
if (rec.VLAN != null && rec.VLAN != -1) {
- final String msg = new StringBuilder("Unsupported configuration. Management network is on a VLAN. host=").append(_host.getUuid()).append("; pif=")
- .append(rec.uuid).append("; vlan=").append(rec.VLAN).toString();
+ final String msg = new StringBuilder("Unsupported configuration. Management network is on a VLAN. host=").append(_host.getUuid()).append("; pif=").append(rec.uuid)
+ .append("; vlan=").append(rec.VLAN).toString();
s_logger.warn(msg);
throw new CloudRuntimeException(msg);
}
@@ -2795,7 +2786,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
final Bond bond = mgmtPifRec.bondSlaveOf;
if (!isRefNull(bond)) {
final String msg = "Management interface is on slave(" + mgmtPifRec.uuid + ") of bond(" + bond.getUuid(conn) + ") on host(" + _host.getUuid()
- + "), please move management interface to bond!";
+ + "), please move management interface to bond!";
s_logger.warn(msg);
throw new CloudRuntimeException(msg);
}
@@ -3014,8 +3005,8 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
}
if (server.equals(dc.get("server")) && serverpath.equals(dc.get("serverpath"))) {
- throw new CloudRuntimeException("There is a SR using the same configuration server:" + dc.get("server") + ", serverpath:" + dc.get("serverpath")
- + " for pool " + uuid + " on host:" + _host.getUuid());
+ throw new CloudRuntimeException(
+ "There is a SR using the same configuration server:" + dc.get("server") + ", serverpath:" + dc.get("serverpath") + " for pool " + uuid + " on host:" + _host.getUuid());
}
}
@@ -3052,7 +3043,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
String patch = getPatchFilePath();
String patchfilePath = Script.findScript("", patch);
if (patchfilePath == null) {
- throw new CloudRuntimeException("Unable to find patch file "+patch);
+ throw new CloudRuntimeException("Unable to find patch file " + patch);
}
List<File> files = new ArrayList<File>();
files.add(new File(patchfilePath));
@@ -3114,7 +3105,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
}
}
- return new Object[] { numRows, numColumns, legend, dataNode };
+ return new Object[] {numRows, numColumns, legend, dataNode};
}
@Override
@@ -3153,8 +3144,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
// stability
if (dynamicMaxRam > staticMax) { // XS contraint that dynamic max <=
// static max
- s_logger.warn("dynamixMax " + dynamicMaxRam + " cant be greater than static max " + staticMax
- + ", can lead to stability issues. Setting static max as much as dynamic max ");
+ s_logger.warn("dynamixMax " + dynamicMaxRam + " cant be greater than static max " + staticMax + ", can lead to stability issues. Setting static max as much as dynamic max ");
return dynamicMaxRam;
}
return staticMax;
@@ -3295,8 +3285,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
}
public String getVhdParent(final Connection conn, final String primaryStorageSRUuid, final String snapshotUuid, final Boolean isISCSI) {
- final String parentUuid = callHostPlugin(conn, "vmopsSnapshot", "getVhdParent", "primaryStorageSRUuid", primaryStorageSRUuid, "snapshotUuid", snapshotUuid, "isISCSI",
- isISCSI.toString());
+ final String parentUuid = callHostPlugin(conn, "vmopsSnapshot", "getVhdParent", "primaryStorageSRUuid", primaryStorageSRUuid, "snapshotUuid", snapshotUuid, "isISCSI", isISCSI.toString());
if (parentUuid == null || parentUuid.isEmpty() || parentUuid.equalsIgnoreCase("None")) {
s_logger.debug("Unable to get parent of VHD " + snapshotUuid + " in SR " + primaryStorageSRUuid);
@@ -3351,7 +3340,8 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
return _instance;
}
- public long getVMSnapshotChainSize(final Connection conn, final VolumeObjectTO volumeTo, final String vmName, final String vmSnapshotName) throws BadServerResponse, XenAPIException, XmlRpcException {
+ public long getVMSnapshotChainSize(final Connection conn, final VolumeObjectTO volumeTo, final String vmName, final String vmSnapshotName)
+ throws BadServerResponse, XenAPIException, XmlRpcException {
if (volumeTo.getVolumeType() == Volume.Type.DATADISK) {
final VDI dataDisk = VDI.getByUuid(conn, volumeTo.getPath());
if (dataDisk != null) {
@@ -3383,10 +3373,10 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
}
if (volumeTo.getVolumeType() == Volume.Type.ROOT) {
VM vm = getVM(conn, vmName);
- if(vm != null){
- Set<VM> vmSnapshots=vm.getSnapshots(conn);
- if(vmSnapshots != null){
- for(VM vmsnap: vmSnapshots){
+ if (vm != null) {
+ Set<VM> vmSnapshots = vm.getSnapshots(conn);
+ if (vmSnapshots != null) {
+ for (VM vmsnap : vmSnapshots) {
try {
final String vmSnapName = vmsnap.getNameLabel(conn);
s_logger.debug("snapname " + vmSnapName);
@@ -3395,16 +3385,16 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
VDI memoryVDI = vmsnap.getSuspendVDI(conn);
if (!isRefNull(memoryVDI)) {
size = size + memoryVDI.getPhysicalUtilisation(conn);
- s_logger.debug("memoryVDI size :"+size);
+ s_logger.debug("memoryVDI size :" + size);
String parentUuid = memoryVDI.getSmConfig(conn).get("vhd-parent");
VDI pMemoryVDI = VDI.getByUuid(conn, parentUuid);
if (!isRefNull(pMemoryVDI)) {
size = size + pMemoryVDI.getPhysicalUtilisation(conn);
}
- s_logger.debug("memoryVDI size+parent :"+size);
+ s_logger.debug("memoryVDI size+parent :" + size);
}
}
- } catch (Exception e) {
+ } catch (Exception e) {
s_logger.debug("Exception occurs when calculate snapshot capacity for memory: due to " + e.toString());
continue;
}
@@ -3462,7 +3452,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
final HashMap<String, VmStatsEntry> vmResponseMap = new HashMap<String, VmStatsEntry>();
for (final String vmUUID : vmUUIDs) {
- vmResponseMap.put(vmUUID, new VmStatsEntry(0,0,0,0, 0, 0, 0, "vm"));
+ vmResponseMap.put(vmUUID, new VmStatsEntry(0, 0, 0, 0, 0, 0, 0, "vm"));
}
final Object[] rrdData = getRRDData(conn, 2); // call rrddata with 2 for
@@ -3472,10 +3462,10 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
return null;
}
- final Integer numRows = (Integer) rrdData[0];
- final Integer numColumns = (Integer) rrdData[1];
- final Node legend = (Node) rrdData[2];
- final Node dataNode = (Node) rrdData[3];
+ final Integer numRows = (Integer)rrdData[0];
+ final Integer numColumns = (Integer)rrdData[1];
+ final Node legend = (Node)rrdData[2];
+ final Node dataNode = (Node)rrdData[3];
final NodeList legendChildren = legend.getChildNodes();
for (int col = 0; col < numColumns; col++) {
@@ -3682,9 +3672,9 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
}
final StartupStorageCommand sscmd = initializeLocalSR(conn);
if (sscmd != null) {
- return new StartupCommand[] { cmd, sscmd };
+ return new StartupCommand[] {cmd, sscmd};
}
- return new StartupCommand[] { cmd };
+ return new StartupCommand[] {cmd};
}
protected StartupStorageCommand initializeLocalSR(final Connection conn) {
@@ -3834,8 +3824,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
}
public boolean launchHeartBeat(final Connection conn) {
- final String result = callHostPluginPremium(conn, "heartbeat", "host", _host.getUuid(), "timeout", Integer.toString(_heartbeatTimeout), "interval",
- Integer.toString(_heartbeatInterval));
+ final String result = callHostPluginPremium(conn, "heartbeat", "host", _host.getUuid(), "timeout", Integer.toString(_heartbeatTimeout), "interval", Integer.toString(_heartbeatInterval));
if (result == null || !result.contains("> DONE <")) {
s_logger.warn("Unable to launch the heartbeat process on " + _host.getIp());
return false;
@@ -3888,7 +3877,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
final DataTO data = volume.getData();
final Volume.Type type = volume.getType();
if (type == Volume.Type.ISO) {
- final TemplateObjectTO iso = (TemplateObjectTO) data;
+ final TemplateObjectTO iso = (TemplateObjectTO)data;
final DataStoreTO store = iso.getDataStore();
if (store == null) {
@@ -3900,7 +3889,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
final String templateName = iso.getName();
if (templateName.startsWith("xs-tools")) {
try {
- final String actualTemplateName = actualIsoTemplate(conn);
+ final String actualTemplateName = getActualIsoTemplate(conn);
final Set<VDI> vdis = VDI.getByNameLabel(conn, actualTemplateName);
if (vdis.isEmpty()) {
throw new CloudRuntimeException("Could not find ISO with URL: " + actualTemplateName);
@@ -3916,7 +3905,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
if (!(store instanceof NfsTO)) {
throw new CloudRuntimeException("only support mount iso on nfs");
}
- final NfsTO nfsStore = (NfsTO) store;
+ final NfsTO nfsStore = (NfsTO)store;
final String isoPath = nfsStore.getUrl() + File.separator + iso.getPath();
final int index = isoPath.lastIndexOf("/");
@@ -3938,7 +3927,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
}
return isoVdi;
} else {
- final VolumeObjectTO vol = (VolumeObjectTO) data;
+ final VolumeObjectTO vol = (VolumeObjectTO)data;
return VDI.getByUuid(conn, vol.getPath());
}
}
@@ -4057,8 +4046,8 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
}
}
- protected boolean postCreatePrivateTemplate(final Connection conn, final String templatePath, final String tmpltFilename, final String templateName,
- String templateDescription, String checksum, final long size, final long virtualSize, final long templateId) {
+ protected boolean postCreatePrivateTemplate(final Connection conn, final String templatePath, final String tmpltFilename, final String templateName, String templateDescription, String checksum,
+ final long size, final long virtualSize, final long templateId) {
if (templateDescription == null) {
templateDescription = "";
@@ -4068,9 +4057,8 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
checksum = "";
}
- final String result = callHostPlugin(conn, "vmopsSnapshot", "post_create_private_template", "templatePath", templatePath, "templateFilename", tmpltFilename,
- "templateName", templateName, "templateDescription", templateDescription, "checksum", checksum, "size", String.valueOf(size), "virtualSize",
- String.valueOf(virtualSize), "templateId", String.valueOf(templateId));
+ final String result = callHostPlugin(conn, "vmopsSnapshot", "post_create_private_template", "templatePath", templatePath, "templateFilename", tmpltFilename, "templateName", templateName,
+ "templateDescription", templateDescription, "checksum", checksum, "size", String.valueOf(size), "virtualSize", String.valueOf(virtualSize), "templateId", String.valueOf(templateId));
boolean success = false;
if (result != null && !result.isEmpty()) {
@@ -4094,20 +4082,20 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
assert cmd.getRouterAccessIp() != null;
if (cmd instanceof IpAssocVpcCommand) {
- return prepareNetworkElementCommand((IpAssocVpcCommand) cmd);
+ return prepareNetworkElementCommand((IpAssocVpcCommand)cmd);
} else if (cmd instanceof IpAssocCommand) {
- return prepareNetworkElementCommand((IpAssocCommand) cmd);
+ return prepareNetworkElementCommand((IpAssocCommand)cmd);
} else if (cmd instanceof SetupGuestNetworkCommand) {
- return prepareNetworkElementCommand((SetupGuestNetworkCommand) cmd);
+ return prepareNetworkElementCommand((SetupGuestNetworkCommand)cmd);
} else if (cmd instanceof SetSourceNatCommand) {
- return prepareNetworkElementCommand((SetSourceNatCommand) cmd);
+ return prepareNetworkElementCommand((SetSourceNatCommand)cmd);
} else if (cmd instanceof SetNetworkACLCommand) {
- return prepareNetworkElementCommand((SetNetworkACLCommand) cmd);
+ return prepareNetworkElementCommand((SetNetworkACLCommand)cmd);
}
return new ExecutionResult(true, null);
}
- public void prepareISO(final Connection conn, final String vmName, List<String[]> vmDataList, String configDriveLabel) throws XmlRpcException, XenAPIException {
+ public void prepareISO(final Connection conn, final String vmName, List<String[]> vmDataList, String configDriveLabel) throws XmlRpcException, XenAPIException {
final Set<VM> vms = VM.getByNameLabel(conn, vmName);
if (vms == null || vms.size() != 1) {
@@ -4117,7 +4105,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
if (vmDataList != null) {
// create SR
- SR sr = createLocalIsoSR(conn, _configDriveSRName+getHost().getIp());
+ SR sr = createLocalIsoSR(conn, _configDriveSRName + getHost().getIp());
// 1. create vm data files
createVmdataFiles(vmName, vmDataList, configDriveLabel);
@@ -4197,8 +4185,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
return getNfsSR(conn, poolid, namelable, storageHost, mountpoint, volumedesc);
} else {
- return getIscsiSR(conn, iScsiName, storageHost, iScsiName,
- chapInitiatorUsername, chapInitiatorSecret, false, SRType.LVMOISCSI.toString(), true);
+ return getIscsiSR(conn, iScsiName, storageHost, iScsiName, chapInitiatorUsername, chapInitiatorSecret, false, SRType.LVMOISCSI.toString(), true);
}
}
@@ -4590,8 +4577,8 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
public String revertToSnapshot(final Connection conn, final VM vmSnapshot, final String vmName, final String oldVmUuid, final Boolean snapshotMemory, final String hostUUID)
throws XenAPIException, XmlRpcException {
- final String results = callHostPluginAsync(conn, "vmopsSnapshot", "revert_memory_snapshot", 10 * 60 * 1000, "snapshotUUID", vmSnapshot.getUuid(conn), "vmName", vmName,
- "oldVmUuid", oldVmUuid, "snapshotMemory", snapshotMemory.toString(), "hostUUID", hostUUID);
+ final String results = callHostPluginAsync(conn, "vmopsSnapshot", "revert_memory_snapshot", 10 * 60 * 1000, "snapshotUUID", vmSnapshot.getUuid(conn), "vmName", vmName, "oldVmUuid", oldVmUuid,
+ "snapshotMemory", snapshotMemory.toString(), "hostUUID", hostUUID);
String errMsg = null;
if (results == null || results.isEmpty()) {
errMsg = "revert_memory_snapshot return null";
@@ -4613,12 +4600,12 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
final Long newDynamicMemoryMin = vmSpec.getMinRam();
final Long newDynamicMemoryMax = vmSpec.getMaxRam();
if (staticMemoryMin > newDynamicMemoryMin || newDynamicMemoryMax > staticMemoryMax) {
- throw new CloudRuntimeException("Cannot scale up the vm because of memory constraint violation: " + "0 <= memory-static-min(" + staticMemoryMin
- + ") <= memory-dynamic-min(" + newDynamicMemoryMin + ") <= memory-dynamic-max(" + newDynamicMemoryMax + ") <= memory-static-max(" + staticMemoryMax + ")");
+ throw new CloudRuntimeException("Cannot scale up the vm because of memory constraint violation: " + "0 <= memory-static-min(" + staticMemoryMin + ") <= memory-dynamic-min("
+ + newDynamicMemoryMin + ") <= memory-dynamic-max(" + newDynamicMemoryMax + ") <= memory-static-max(" + staticMemoryMax + ")");
}
vm.setMemoryDynamicRange(conn, newDynamicMemoryMin, newDynamicMemoryMax);
- vm.setVCPUsNumberLive(conn, (long) vmSpec.getCpus());
+ vm.setVCPUsNumberLive(conn, (long)vmSpec.getCpus());
final Integer speed = vmSpec.getMinSpeed();
if (speed != null) {
@@ -4627,14 +4614,14 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
// weight based allocation
- cpuWeight = (int) (speed * 0.99 / _host.getSpeed() * _maxWeight);
+ cpuWeight = (int)(speed * 0.99 / _host.getSpeed() * _maxWeight);
if (cpuWeight > _maxWeight) {
cpuWeight = _maxWeight;
}
if (vmSpec.getLimitCpuUse()) {
long utilization = 0; // max CPU cap, default is unlimited
- utilization = (int) (vmSpec.getMaxSpeed() * 0.99 * vmSpec.getCpus() / _host.getSpeed() * 100);
+ utilization = (int)(vmSpec.getMaxSpeed() * 0.99 * vmSpec.getCpus() / _host.getSpeed() * 100);
// vm.addToVCPUsParamsLive(conn, "cap",
// Long.toString(utilization)); currently xenserver doesnot
// support Xapi to add VCPUs params live.
@@ -4691,8 +4678,8 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
public void setName(final String name) {
}
- protected void setNicDevIdIfCorrectVifIsNotNull(final Connection conn, final IpAddressTO ip, final VIF correctVif) throws InternalErrorException, BadServerResponse,
- XenAPIException, XmlRpcException {
+ protected void setNicDevIdIfCorrectVifIsNotNull(final Connection conn, final IpAddressTO ip, final VIF correctVif)
+ throws InternalErrorException, BadServerResponse, XenAPIException, XmlRpcException {
if (correctVif == null) {
if (ip.isAdd()) {
throw new InternalErrorException("Failed to find DomR VIF to associate IP with.");
@@ -4870,8 +4857,8 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
final Properties props = PropertiesUtil.loadFromFile(file);
for (final Map.Entry<Object, Object> entry : props.entrySet()) {
- final String k = (String) entry.getKey();
- final String v = (String) entry.getValue();
+ final String k = (String)entry.getKey();
+ final String v = (String)entry.getValue();
assert k != null && k.length() > 0 && v != null && v.length() > 0 : "Problems with " + k + "=" + v;
@@ -5211,8 +5198,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
public void waitForTask(final Connection c, final Task task, final long pollInterval, final long timeout) throws XenAPIException, XmlRpcException, TimeoutException {
final long beginTime = System.currentTimeMillis();
if (s_logger.isTraceEnabled()) {
- s_logger.trace("Task " + task.getNameLabel(c) + " (" + task.getUuid(c) + ") sent to " + c.getSessionReference() + " is pending completion with a " + timeout
- + "ms timeout");
+ s_logger.trace("Task " + task.getNameLabel(c) + " (" + task.getUuid(c) + ") sent to " + c.getSessionReference() + " is pending completion with a " + timeout + "ms timeout");
}
while (task.getStatus(c) == Types.TaskStatusType.PENDING) {
try {
@@ -5237,16 +5223,16 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
final String vmName = vm.getNameLabel(conn);
// create SR
- final SR sr = createLocalIsoSR(conn, _configDriveSRName+_host.getIp());
+ final SR sr = createLocalIsoSR(conn, _configDriveSRName + _host.getIp());
if (sr == null) {
s_logger.debug("Failed to create local SR for the config drive");
return false;
}
- s_logger.debug("Creating vm data files in config drive for vm "+vmName);
+ s_logger.debug("Creating vm data files in config drive for vm " + vmName);
// 1. create vm data files
if (!createVmdataFiles(vmName, vmDataList, configDriveLabel)) {
- s_logger.debug("Failed to create vm data files in config drive for vm "+vmName);
+ s_logger.debug("Failed to create vm data files in config drive for vm " + vmName);
return false;
}
@@ -5266,7 +5252,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
public boolean createVmdataFiles(final String vmName, final List<String[]> vmDataList, final String configDriveLabel) {
// add vm iso to the isolibrary
- final String isoPath = "/tmp/"+vmName+"/configDrive/";
+ final String isoPath = "/tmp/" + vmName + "/configDrive/";
final String configDriveName = "cloudstack/";
//create folder for the VM
@@ -5275,12 +5261,11 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
try {
deleteLocalFolder("/tmp/" + isoPath);
} catch (final IOException e) {
- s_logger.debug("Failed to delete the exiting config drive for vm "+vmName+ " "+ e.getMessage());
+ s_logger.debug("Failed to delete the exiting config drive for vm " + vmName + " " + e.getMessage());
} catch (final Exception e) {
- s_logger.debug("Failed to delete the exiting config drive for vm "+vmName+ " "+ e.getMessage());
+ s_logger.debug("Failed to delete the exiting config drive for vm " + vmName + " " + e.getMessage());
}
-
if (vmDataList != null) {
for (final String[] item : vmDataList) {
final String dataType = item[0];
@@ -5291,7 +5276,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
if (dataType != null && !dataType.isEmpty()) {
//create folder
- final String folder = isoPath+configDriveName+dataType;
+ final String folder = isoPath + configDriveName + dataType;
if (folder != null && !folder.isEmpty()) {
final File dir = new File(folder);
final boolean result = true;
@@ -5300,40 +5285,37 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
if (!dir.exists()) {
dir.mkdirs();
}
- }catch (final SecurityException ex) {
- s_logger.debug("Failed to create dir "+ ex.getMessage());
+ } catch (final SecurityException ex) {
+ s_logger.debug("Failed to create dir " + ex.getMessage());
return false;
}
if (result && content != null && !content.isEmpty()) {
- File file = new File(folder+"/"+fileName+".txt");
- try (OutputStreamWriter fw = new OutputStreamWriter(new FileOutputStream(file.getAbsoluteFile()),"UTF-8");
- BufferedWriter bw = new BufferedWriter(fw);
- ) {
+ File file = new File(folder + "/" + fileName + ".txt");
+ try (OutputStreamWriter fw = new OutputStreamWriter(new FileOutputStream(file.getAbsoluteFile()), "UTF-8");
+ BufferedWriter bw = new BufferedWriter(fw);) {
bw.write(content);
- s_logger.debug("created file: "+ file + " in folder:"+folder);
+ s_logger.debug("created file: " + file + " in folder:" + folder);
} catch (final IOException ex) {
- s_logger.debug("Failed to create file "+ ex.getMessage());
+ s_logger.debug("Failed to create file " + ex.getMessage());
return false;
}
}
}
}
}
- s_logger.debug("Created the vm data in "+ isoPath);
+ s_logger.debug("Created the vm data in " + isoPath);
}
String s = null;
try {
- final String cmd = "mkisofs -iso-level 3 -V "+ configDriveLabel +" -o "+ isoPath+vmName +".iso " + isoPath;
+ final String cmd = "mkisofs -iso-level 3 -V " + configDriveLabel + " -o " + isoPath + vmName + ".iso " + isoPath;
final Process p = Runtime.getRuntime().exec(cmd);
- final BufferedReader stdInput = new BufferedReader(new
- InputStreamReader(p.getInputStream(),Charset.defaultCharset()));
+ final BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream(), Charset.defaultCharset()));
- final BufferedReader stdError = new BufferedReader(new
- InputStreamReader(p.getErrorStream(),Charset.defaultCharset()));
+ final BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream(), Charset.defaultCharset()));
// read the output from the command
while ((s = stdInput.readLine()) != null) {
@@ -5344,7 +5326,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
while ((s = stdError.readLine()) != null) {
s_logger.debug(s);
}
- s_logger.debug(" Created config drive ISO using the command " + cmd +" in the host "+ _host.getIp());
+ s_logger.debug(" Created config drive ISO using the command " + cmd + " in the host " + _host.getIp());
} catch (final IOException e) {
s_logger.debug(e.getMessage());
return false;
@@ -5355,7 +5337,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
public boolean copyConfigDriveIsoToHost(final Connection conn, final SR sr, final String vmName) {
- final String vmIso = "/tmp/"+vmName+"/configDrive/"+vmName+".iso";
+ final String vmIso = "/tmp/" + vmName + "/configDrive/" + vmName + ".iso";
//scp file into the host
final com.trilead.ssh2.Connection sshConnection = new com.trilead.ssh2.Connection(_host.getIp(), 22);
@@ -5365,7 +5347,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
throw new CloudRuntimeException("Unable to authenticate");
}
- s_logger.debug("scp config drive iso file "+vmIso +" to host " + _host.getIp() +" path "+_configDriveIsopath);
+ s_logger.debug("scp config drive iso file " + vmIso + " to host " + _host.getIp() + " path " + _configDriveIsopath);
final SCPClient scp = new SCPClient(sshConnection);
final String p = "0755";
@@ -5376,20 +5358,18 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
s_logger.debug("failed to copy configdrive iso " + vmIso + " to host " + _host, e);
return false;
} catch (final XmlRpcException e) {
- s_logger.debug("Failed to scan config drive iso SR "+ _configDriveSRName+_host.getIp() + " in host "+ _host, e);
+ s_logger.debug("Failed to scan config drive iso SR " + _configDriveSRName + _host.getIp() + " in host " + _host, e);
return false;
} finally {
sshConnection.close();
//clean up the config drive files
- final String configDir = "/tmp/"+vmName;
+ final String configDir = "/tmp/" + vmName;
try {
deleteLocalFolder(configDir);
- s_logger.debug("Successfully cleaned up config drive directory " + configDir
- + " after copying it to host ");
+ s_logger.debug("Successfully cleaned up config drive directory " + configDir + " after copying it to host ");
} catch (final Exception e) {
- s_logger.debug("Failed to delete config drive folder :" + configDir + " for VM " + vmName + " "
- + e.getMessage());
+ s_logger.debug("Failed to delete config drive folder :" + configDir + " for VM " + vmName + " " + e.getMessage());
}
}
@@ -5399,7 +5379,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
public boolean attachConfigDriveIsoToVm(final Connection conn, final VM vm) throws XenAPIException, XmlRpcException {
final String vmName = vm.getNameLabel(conn);
- final String isoURL = _configDriveIsopath + vmName+".iso";
+ final String isoURL = _configDriveIsopath + vmName + ".iso";
VDI srVdi;
//1. find the vdi of the iso
@@ -5407,11 +5387,11 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
//3. attach iso to vm
try {
- final Set<VDI> vdis = VDI.getByNameLabel(conn, vmName+".iso");
+ final Set<VDI> vdis = VDI.getByNameLabel(conn, vmName + ".iso");
if (vdis.isEmpty()) {
throw new CloudRuntimeException("Could not find ISO with URL: " + isoURL);
}
- srVdi = vdis.iterator().next();
+ srVdi = vdis.iterator().next();
} catch (final XenAPIException e) {
s_logger.debug("Unable to get config drive iso: " + isoURL + " due to " + e.toString());
@@ -5462,7 +5442,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
// Insert the new ISO
isoVBD.insert(conn, srVdi);
s_logger.debug("Attached config drive iso to vm " + vmName);
- }catch (final XmlRpcException ex) {
+ } catch (final XmlRpcException ex) {
s_logger.debug("Failed to attach config drive iso to vm " + vmName);
return false;
}
@@ -5474,14 +5454,14 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
public SR createLocalIsoSR(final Connection conn, final String srName) throws XenAPIException, XmlRpcException {
// if config drive sr already exists then return
- SR sr = getSRByNameLabelandHost(conn, _configDriveSRName+_host.getIp());
+ SR sr = getSRByNameLabelandHost(conn, _configDriveSRName + _host.getIp());
if (sr != null) {
s_logger.debug("Config drive SR already exist, returing it");
return sr;
}
- try{
+ try {
final Map<String, String> deviceConfig = new HashMap<String, String>();
final com.trilead.ssh2.Connection sshConnection = new com.trilead.ssh2.Connection(_host.getIp(), 22);
@@ -5500,19 +5480,19 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
} finally {
sshConnection.close();
}
- s_logger.debug("Created the config drive SR " + srName +" folder path "+ _configDriveIsopath);
+ s_logger.debug("Created the config drive SR " + srName + " folder path " + _configDriveIsopath);
- deviceConfig.put("location", _configDriveIsopath);
+ deviceConfig.put("location", _configDriveIsopath);
deviceConfig.put("legacy_mode", "true");
final Host host = Host.getByUuid(conn, _host.getUuid());
final String type = SRType.ISO.toString();
- sr = SR.create(conn, host, deviceConfig, new Long(0), _configDriveIsopath, "iso", type, "iso", false, new HashMap<String, String>());
+ sr = SR.create(conn, host, deviceConfig, new Long(0), _configDriveIsopath, "iso", type, "iso", false, new HashMap<String, String>());
sr.setNameLabel(conn, srName);
sr.setNameDescription(conn, deviceConfig.get("location"));
sr.scan(conn);
- s_logger.debug("Config drive ISO SR at the path " + _configDriveIsopath +" got created in host " + _host);
+ s_logger.debug("Config drive ISO SR at the path " + _configDriveIsopath + " got created in host " + _host);
return sr;
} catch (final XenAPIException e) {
final String msg = "createLocalIsoSR failed! mountpoint " + e.toString();
@@ -5559,13 +5539,12 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
return ressr;
}
-
public boolean attachConfigDriveToMigratedVm(Connection conn, String vmName, String ipAddr) {
// attach the config drive in destination host
try {
- s_logger.debug("Attaching config drive iso device for the VM "+ vmName + " In host "+ ipAddr);
+ s_logger.debug("Attaching config drive iso device for the VM " + vmName + " In host " + ipAddr);
Set<VM> vms = VM.getByNameLabel(conn, vmName);
SR sr = getSRByNameLabel(conn, _configDriveSRName + ipAddr);
@@ -5618,13 +5597,13 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
return true;
} catch (BadServerResponse e) {
- s_logger.warn("Failed to attach config drive ISO to the VM "+ vmName + " In host " + ipAddr + " due to a bad server response.", e);
+ s_logger.warn("Failed to attach config drive ISO to the VM " + vmName + " In host " + ipAddr + " due to a bad server response.", e);
return false;
} catch (XenAPIException e) {
- s_logger.warn("Failed to attach config drive ISO to the VM "+ vmName + " In host " + ipAddr + " due to a xapi problem.", e);
+ s_logger.warn("Failed to attach config drive ISO to the VM " + vmName + " In host " + ipAddr + " due to a xapi problem.", e);
return false;
} catch (XmlRpcException e) {
- s_logger.warn("Failed to attach config drive ISO to the VM "+ vmName + " In host " + ipAddr + " due to a problem in a remote call.", e);
+ s_logger.warn("Failed to attach config drive ISO to the VM " + vmName + " In host " + ipAddr + " due to a problem in a remote call.", e);
return false;
}
diff --git a/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/discoverer/XcpServerDiscovererTest.java b/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/discoverer/XcpServerDiscovererTest.java
new file mode 100644
index 0000000..a3082c6
--- /dev/null
+++ b/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/discoverer/XcpServerDiscovererTest.java
@@ -0,0 +1,72 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package com.cloud.hypervisor.xenserver.discoverer;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InOrder;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.Spy;
+import org.mockito.runners.MockitoJUnitRunner;
+
+import com.cloud.storage.Storage.TemplateType;
+import com.cloud.storage.VMTemplateVO;
+import com.cloud.storage.dao.VMTemplateDao;
+
+@RunWith(MockitoJUnitRunner.class)
+public class XcpServerDiscovererTest {
+
+ @Spy
+ @InjectMocks
+ private XcpServerDiscoverer xcpServerDiscoverer;
+
+ @Mock
+ private VMTemplateDao vmTemplateDao;
+
+ @Test
+ public void createXenServerToolsIsoEntryInDatabaseTestNoEntryFound() {
+ Mockito.when(vmTemplateDao.findByTemplateName("xs-tools.iso")).thenReturn(null);
+ Mockito.when(vmTemplateDao.getNextInSequence(Long.class, "id")).thenReturn(1L);
+
+ xcpServerDiscoverer.createXenServerToolsIsoEntryInDatabase();
+
+ InOrder inOrder = Mockito.inOrder(vmTemplateDao);
+ inOrder.verify(vmTemplateDao).findByTemplateName("xs-tools.iso");
+ inOrder.verify(vmTemplateDao).getNextInSequence(Long.class, "id");
+ inOrder.verify(vmTemplateDao).persist(Mockito.any(VMTemplateVO.class));
+ }
+
+ @Test
+ public void createXenServerToolsIsoEntryInDatabaseTestEntryAlreadyExist() {
+ VMTemplateVO vmTemplateVOMock = Mockito.mock(VMTemplateVO.class);
+ Mockito.when(vmTemplateDao.findByTemplateName("xs-tools.iso")).thenReturn(vmTemplateVOMock);
+ Mockito.when(vmTemplateVOMock.getId()).thenReturn(1L);
+
+ xcpServerDiscoverer.createXenServerToolsIsoEntryInDatabase();
+
+ InOrder inOrder = Mockito.inOrder(vmTemplateDao, vmTemplateVOMock);
+ inOrder.verify(vmTemplateDao).findByTemplateName("xs-tools.iso");
+ inOrder.verify(vmTemplateDao, Mockito.times(0)).getNextInSequence(Long.class, "id");
+ inOrder.verify(vmTemplateVOMock).setTemplateType(TemplateType.PERHOST);
+ inOrder.verify(vmTemplateVOMock).setUrl(null);
+ inOrder.verify(vmTemplateVOMock).setDisplayText("XenServer Tools Installer ISO (xen-pv-drv-iso)");
+ inOrder.verify(vmTemplateDao).update(1L, vmTemplateVOMock);
+ }
+}
diff --git a/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBaseTest.java b/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBaseTest.java
index 67fce92..dfdc127 100644
--- a/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBaseTest.java
+++ b/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBaseTest.java
@@ -16,17 +16,32 @@
package com.cloud.hypervisor.xenserver.resource;
import java.io.File;
+import java.util.HashMap;
import java.util.List;
+import org.apache.xmlrpc.XmlRpcException;
import org.junit.Assert;
+import org.junit.Before;
import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
import org.mockito.Mockito;
+import org.mockito.Spy;
import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
import com.cloud.utils.script.Script;
+import com.xensource.xenapi.Connection;
+import com.xensource.xenapi.Host;
+import com.xensource.xenapi.Host.Record;
+import com.xensource.xenapi.Types.XenAPIException;
+@RunWith(PowerMockRunner.class)
+@PrepareForTest({Host.class, Script.class})
public class CitrixResourceBaseTest {
+ @Spy
protected CitrixResourceBase citrixResourceBase = new CitrixResourceBase() {
@Override
protected String getPatchFilePath() {
@@ -34,6 +49,27 @@ public class CitrixResourceBaseTest {
}
};
+ @Mock
+ private Connection connectionMock;
+ @Mock
+ private Host hostMock;
+ @Mock
+ private Record hostRecordMock;
+
+ private String hostUuidMock = "hostUuidMock";
+
+ @Before
+ public void beforeTest() throws XenAPIException, XmlRpcException {
+ citrixResourceBase._host.setUuid(hostUuidMock);
+
+ PowerMockito.mockStatic(Host.class);
+ PowerMockito.when(Host.getByUuid(connectionMock, hostUuidMock)).thenReturn(hostMock);
+
+ hostRecordMock.softwareVersion = new HashMap<>();
+ Mockito.when(hostMock.getRecord(connectionMock)).thenReturn(hostRecordMock);
+
+ }
+
public void testGetPathFilesExeption() {
String patch = citrixResourceBase.getPatchFilePath();
@@ -92,4 +128,44 @@ public class CitrixResourceBaseTest {
String guestOsType = citrixResourceBase.getGuestOsType(platformEmulator);
Assert.assertEquals(platformEmulator, guestOsType);
}
+
+ @Test
+ public void actualIsoTemplateTestXcpHots() throws XenAPIException, XmlRpcException {
+ hostRecordMock.softwareVersion.put("product_brand", "XCP");
+ hostRecordMock.softwareVersion.put("product_version", "1.0");
+
+ String returnedIsoTemplateName = citrixResourceBase.getActualIsoTemplate(connectionMock);
+
+ Assert.assertEquals("xs-tools.iso", returnedIsoTemplateName);
+ }
+
+ @Test
+ public void actualIsoTemplateTestXenServerBefore70() throws XenAPIException, XmlRpcException {
+ hostRecordMock.softwareVersion.put("product_brand", "XenServer");
+ hostRecordMock.softwareVersion.put("product_version", "6.0");
+
+ String returnedIsoTemplateName = citrixResourceBase.getActualIsoTemplate(connectionMock);
+
+ Assert.assertEquals("xs-tools.iso", returnedIsoTemplateName);
+ }
+
+ @Test
+ public void actualIsoTemplateTestXenServer70() throws XenAPIException, XmlRpcException {
+ hostRecordMock.softwareVersion.put("product_brand", "XenServer");
+ hostRecordMock.softwareVersion.put("product_version", "7.0");
+
+ String returnedIsoTemplateName = citrixResourceBase.getActualIsoTemplate(connectionMock);
+
+ Assert.assertEquals("guest-tools.iso", returnedIsoTemplateName);
+ }
+
+ @Test
+ public void actualIsoTemplateTestXenServer71() throws XenAPIException, XmlRpcException {
+ hostRecordMock.softwareVersion.put("product_brand", "XenServer");
+ hostRecordMock.softwareVersion.put("product_version", "7.1");
+
+ String returnedIsoTemplateName = citrixResourceBase.getActualIsoTemplate(connectionMock);
+
+ Assert.assertEquals("guest-tools.iso", returnedIsoTemplateName);
+ }
}
diff --git a/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/XcpOssResourceTest.java b/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/XcpOssResourceTest.java
index 9266bf9..15bd88b 100644
--- a/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/XcpOssResourceTest.java
+++ b/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/XcpOssResourceTest.java
@@ -15,21 +15,21 @@
*/
package com.cloud.hypervisor.xenserver.resource;
+import org.apache.xmlrpc.XmlRpcException;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
import com.cloud.utils.exception.CloudRuntimeException;
-import com.cloud.utils.script.Script;
-@RunWith(PowerMockRunner.class)
-public class XcpOssResourceTest extends CitrixResourceBaseTest{
+import com.xensource.xenapi.Types.XenAPIException;
+
+public class XcpOssResourceTest extends CitrixResourceBaseTest {
@Before
- public void beforeTest() {
+ @Override
+ public void beforeTest() throws XenAPIException, XmlRpcException {
super.citrixResourceBase = new XcpOssResource();
+ super.beforeTest();
}
@Test
@@ -41,13 +41,11 @@ public class XcpOssResourceTest extends CitrixResourceBaseTest{
}
@Test(expected = CloudRuntimeException.class)
- @PrepareForTest(Script.class )
public void testGetFiles(){
testGetPathFilesExeption();
}
@Test
- @PrepareForTest(Script.class )
public void testGetFilesListReturned(){
testGetPathFilesListReturned();
}
diff --git a/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/XcpServerResourceTest.java b/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/XcpServerResourceTest.java
index 5b80a1d..6a90f23 100644
--- a/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/XcpServerResourceTest.java
+++ b/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/XcpServerResourceTest.java
@@ -15,22 +15,21 @@
*/
package com.cloud.hypervisor.xenserver.resource;
+import org.apache.xmlrpc.XmlRpcException;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
import com.cloud.utils.exception.CloudRuntimeException;
-import com.cloud.utils.script.Script;
+import com.xensource.xenapi.Types.XenAPIException;
-@RunWith(PowerMockRunner.class)
-public class XcpServerResourceTest extends CitrixResourceBaseTest{
+public class XcpServerResourceTest extends CitrixResourceBaseTest {
@Before
- public void beforeTest() {
+ @Override
+ public void beforeTest() throws XenAPIException, XmlRpcException {
super.citrixResourceBase = new XcpServerResource();
+ super.beforeTest();
}
@Test
@@ -42,13 +41,11 @@ public class XcpServerResourceTest extends CitrixResourceBaseTest{
}
@Test(expected = CloudRuntimeException.class)
- @PrepareForTest(Script.class )
public void testGetFilesExeption(){
testGetPathFilesExeption();
}
@Test
- @PrepareForTest(Script.class )
public void testGetFilesListReturned(){
testGetPathFilesListReturned();
}
diff --git a/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/XenServer56FP1ResourceTest.java b/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/XenServer56FP1ResourceTest.java
index d2edbd4..84df3c6 100644
--- a/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/XenServer56FP1ResourceTest.java
+++ b/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/XenServer56FP1ResourceTest.java
@@ -15,22 +15,21 @@
*/
package com.cloud.hypervisor.xenserver.resource;
+import org.apache.xmlrpc.XmlRpcException;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
import com.cloud.utils.exception.CloudRuntimeException;
-import com.cloud.utils.script.Script;
+import com.xensource.xenapi.Types.XenAPIException;
-@RunWith(PowerMockRunner.class)
-public class XenServer56FP1ResourceTest extends CitrixResourceBaseTest{
+public class XenServer56FP1ResourceTest extends CitrixResourceBaseTest {
@Before
- public void beforeTest() {
+ @Override
+ public void beforeTest() throws XenAPIException, XmlRpcException {
super.citrixResourceBase = new XenServer56FP1Resource();
+ super.beforeTest();
}
@Test
@@ -42,13 +41,11 @@ public class XenServer56FP1ResourceTest extends CitrixResourceBaseTest{
}
@Test(expected = CloudRuntimeException.class)
- @PrepareForTest(Script.class )
public void testGetFiles(){
testGetPathFilesExeption();
}
@Test
- @PrepareForTest(Script.class )
public void testGetFilesListReturned(){
testGetPathFilesListReturned();
}
diff --git a/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/XenServer56ResourceTest.java b/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/XenServer56ResourceTest.java
index dccdb28..4f6c2b3 100644
--- a/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/XenServer56ResourceTest.java
+++ b/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/XenServer56ResourceTest.java
@@ -15,21 +15,21 @@
*/
package com.cloud.hypervisor.xenserver.resource;
+import org.apache.xmlrpc.XmlRpcException;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
import com.cloud.utils.exception.CloudRuntimeException;
-import com.cloud.utils.script.Script;
-@RunWith(PowerMockRunner.class)
+import com.xensource.xenapi.Types.XenAPIException;
+
public class XenServer56ResourceTest extends CitrixResourceBaseTest {
+ @Override
@Before
- public void beforeTest() {
+ public void beforeTest() throws XenAPIException, XmlRpcException {
super.citrixResourceBase = new XenServer56Resource();
+ super.beforeTest();
}
@Test
@@ -41,13 +41,11 @@ public class XenServer56ResourceTest extends CitrixResourceBaseTest {
}
@Test(expected = CloudRuntimeException.class)
- @PrepareForTest(Script.class )
public void testGetFiles(){
testGetPathFilesExeption();
}
@Test
- @PrepareForTest(Script.class )
public void testGetFilesListReturned(){
testGetPathFilesListReturned();
}
diff --git a/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/XenServer56SP2ResourceTest.java b/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/XenServer56SP2ResourceTest.java
index 4cc9470..f34c89b 100644
--- a/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/XenServer56SP2ResourceTest.java
+++ b/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/XenServer56SP2ResourceTest.java
@@ -15,21 +15,21 @@
*/
package com.cloud.hypervisor.xenserver.resource;
+import org.apache.xmlrpc.XmlRpcException;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
import com.cloud.utils.exception.CloudRuntimeException;
-import com.cloud.utils.script.Script;
-@RunWith(PowerMockRunner.class)
-public class XenServer56SP2ResourceTest extends CitrixResourceBaseTest{
+import com.xensource.xenapi.Types.XenAPIException;
+public class XenServer56SP2ResourceTest extends CitrixResourceBaseTest {
+
+ @Override
@Before
- public void beforeTest() {
+ public void beforeTest() throws XenAPIException, XmlRpcException {
super.citrixResourceBase = new XenServer56SP2Resource();
+ super.beforeTest();
}
@Test
@@ -41,14 +41,12 @@ public class XenServer56SP2ResourceTest extends CitrixResourceBaseTest{
}
@Test(expected = CloudRuntimeException.class)
- @PrepareForTest(Script.class )
- public void testGetFiles(){
+ public void testGetFiles() {
testGetPathFilesExeption();
}
@Test
- @PrepareForTest(Script.class )
- public void testGetFilesListReturned(){
+ public void testGetFilesListReturned() {
testGetPathFilesListReturned();
}
}
diff --git a/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/XenServer600ResourceTest.java b/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/XenServer600ResourceTest.java
index d5eba2af..83c2a69 100644
--- a/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/XenServer600ResourceTest.java
+++ b/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/XenServer600ResourceTest.java
@@ -15,24 +15,23 @@
*/
package com.cloud.hypervisor.xenserver.resource;
+import org.apache.xmlrpc.XmlRpcException;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
import com.cloud.utils.exception.CloudRuntimeException;
-import com.cloud.utils.script.Script;
-@RunWith(PowerMockRunner.class)
-public class XenServer600ResourceTest extends CitrixResourceBaseTest{
+import com.xensource.xenapi.Types.XenAPIException;
+
+public class XenServer600ResourceTest extends CitrixResourceBaseTest {
@Before
- public void beforeTest() {
+ @Override
+ public void beforeTest() throws XenAPIException, XmlRpcException {
super.citrixResourceBase = new XenServer600Resource();
+ super.beforeTest();
}
-
@Test
public void testPatchFilePath() {
String patchFilePath = citrixResourceBase.getPatchFilePath();
@@ -42,14 +41,12 @@ public class XenServer600ResourceTest extends CitrixResourceBaseTest{
}
@Test(expected = CloudRuntimeException.class)
- @PrepareForTest(Script.class )
- public void testGetFiles(){
+ public void testGetFiles() {
testGetPathFilesExeption();
}
@Test
- @PrepareForTest(Script.class )
- public void testGetFilesListReturned(){
+ public void testGetFilesListReturned() {
testGetPathFilesListReturned();
}
}
diff --git a/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/XenServer625ResourceTest.java b/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/XenServer625ResourceTest.java
index 9998c2f..317562c 100644
--- a/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/XenServer625ResourceTest.java
+++ b/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/XenServer625ResourceTest.java
@@ -15,22 +15,21 @@
*/
package com.cloud.hypervisor.xenserver.resource;
+import org.apache.xmlrpc.XmlRpcException;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
import com.cloud.utils.exception.CloudRuntimeException;
-import com.cloud.utils.script.Script;
+import com.xensource.xenapi.Types.XenAPIException;
-@RunWith(PowerMockRunner.class)
public class XenServer625ResourceTest extends CitrixResourceBaseTest {
@Before
- public void beforeTest() {
+ @Override
+ public void beforeTest() throws XenAPIException, XmlRpcException {
super.citrixResourceBase = new Xenserver625Resource();
+ super.beforeTest();
}
@Test
@@ -42,13 +41,11 @@ public class XenServer625ResourceTest extends CitrixResourceBaseTest {
}
@Test(expected = CloudRuntimeException.class)
- @PrepareForTest(Script.class)
public void testGetFiles() {
testGetPathFilesExeption();
}
@Test
- @PrepareForTest(Script.class)
public void testGetFilesListReturned() {
testGetPathFilesListReturned();
}
diff --git a/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/XenServer650ResourceTest.java b/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/XenServer650ResourceTest.java
index 5195025..e5773af 100644
--- a/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/XenServer650ResourceTest.java
+++ b/plugins/hypervisors/xenserver/src/test/java/com/cloud/hypervisor/xenserver/resource/XenServer650ResourceTest.java
@@ -15,21 +15,21 @@
*/
package com.cloud.hypervisor.xenserver.resource;
+import org.apache.xmlrpc.XmlRpcException;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
import com.cloud.utils.exception.CloudRuntimeException;
-import com.cloud.utils.script.Script;
-@RunWith(PowerMockRunner.class)
-public class XenServer650ResourceTest extends CitrixResourceBaseTest{
+import com.xensource.xenapi.Types.XenAPIException;
+public class XenServer650ResourceTest extends CitrixResourceBaseTest {
+
+ @Override
@Before
- public void beforeTest() {
+ public void beforeTest() throws XenAPIException, XmlRpcException {
super.citrixResourceBase = new XenServer650Resource();
+ super.beforeTest();
}
@Test
@@ -41,14 +41,12 @@ public class XenServer650ResourceTest extends CitrixResourceBaseTest{
}
@Test(expected = CloudRuntimeException.class)
- @PrepareForTest(Script.class )
- public void testGetFiles(){
+ public void testGetFiles() {
testGetPathFilesExeption();
}
@Test
- @PrepareForTest(Script.class )
- public void testGetFilesListReturned(){
+ public void testGetFilesListReturned() {
testGetPathFilesListReturned();
}
}
--
To stop receiving notification emails like this one, please contact
rafael@apache.org.