You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ek...@apache.org on 2015/05/22 12:56:48 UTC
[2/8] git commit: updated refs/heads/master to 0c6758f
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7ff1a81c/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixRequestWrapper.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixRequestWrapper.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixRequestWrapper.java
index 02f3774..8dabaf2 100644
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixRequestWrapper.java
+++ b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixRequestWrapper.java
@@ -20,75 +20,12 @@
package com.cloud.hypervisor.xenserver.resource.wrapper;
import java.util.Hashtable;
+import java.util.Set;
+
+import org.reflections.Reflections;
import com.cloud.agent.api.Answer;
-import com.cloud.agent.api.AttachIsoCommand;
-import com.cloud.agent.api.AttachVolumeCommand;
-import com.cloud.agent.api.CheckHealthCommand;
-import com.cloud.agent.api.CheckNetworkCommand;
-import com.cloud.agent.api.CheckOnHostCommand;
-import com.cloud.agent.api.CheckVirtualMachineCommand;
-import com.cloud.agent.api.CleanupNetworkRulesCmd;
-import com.cloud.agent.api.ClusterVMMetaDataSyncCommand;
import com.cloud.agent.api.Command;
-import com.cloud.agent.api.CreateStoragePoolCommand;
-import com.cloud.agent.api.CreateVMSnapshotCommand;
-import com.cloud.agent.api.DeleteStoragePoolCommand;
-import com.cloud.agent.api.DeleteVMSnapshotCommand;
-import com.cloud.agent.api.FenceCommand;
-import com.cloud.agent.api.GetGPUStatsCommand;
-import com.cloud.agent.api.GetHostStatsCommand;
-import com.cloud.agent.api.GetStorageStatsCommand;
-import com.cloud.agent.api.GetVmDiskStatsCommand;
-import com.cloud.agent.api.GetVmStatsCommand;
-import com.cloud.agent.api.GetVncPortCommand;
-import com.cloud.agent.api.MaintainCommand;
-import com.cloud.agent.api.MigrateCommand;
-import com.cloud.agent.api.MigrateWithStorageCommand;
-import com.cloud.agent.api.MigrateWithStorageCompleteCommand;
-import com.cloud.agent.api.MigrateWithStorageReceiveCommand;
-import com.cloud.agent.api.MigrateWithStorageSendCommand;
-import com.cloud.agent.api.ModifySshKeysCommand;
-import com.cloud.agent.api.ModifyStoragePoolCommand;
-import com.cloud.agent.api.NetworkRulesSystemVmCommand;
-import com.cloud.agent.api.NetworkRulesVmSecondaryIpCommand;
-import com.cloud.agent.api.NetworkUsageCommand;
-import com.cloud.agent.api.OvsCreateGreTunnelCommand;
-import com.cloud.agent.api.OvsCreateTunnelCommand;
-import com.cloud.agent.api.OvsDeleteFlowCommand;
-import com.cloud.agent.api.OvsDestroyBridgeCommand;
-import com.cloud.agent.api.OvsDestroyTunnelCommand;
-import com.cloud.agent.api.OvsFetchInterfaceCommand;
-import com.cloud.agent.api.OvsSetTagAndFlowCommand;
-import com.cloud.agent.api.OvsSetupBridgeCommand;
-import com.cloud.agent.api.OvsVpcPhysicalTopologyConfigCommand;
-import com.cloud.agent.api.OvsVpcRoutingPolicyConfigCommand;
-import com.cloud.agent.api.PerformanceMonitorCommand;
-import com.cloud.agent.api.PingTestCommand;
-import com.cloud.agent.api.PlugNicCommand;
-import com.cloud.agent.api.PrepareForMigrationCommand;
-import com.cloud.agent.api.PvlanSetupCommand;
-import com.cloud.agent.api.ReadyCommand;
-import com.cloud.agent.api.RebootCommand;
-import com.cloud.agent.api.RebootRouterCommand;
-import com.cloud.agent.api.RevertToVMSnapshotCommand;
-import com.cloud.agent.api.ScaleVmCommand;
-import com.cloud.agent.api.SecurityGroupRulesCmd;
-import com.cloud.agent.api.SetupCommand;
-import com.cloud.agent.api.StartCommand;
-import com.cloud.agent.api.StopCommand;
-import com.cloud.agent.api.UnPlugNicCommand;
-import com.cloud.agent.api.UpdateHostPasswordCommand;
-import com.cloud.agent.api.UpgradeSnapshotCommand;
-import com.cloud.agent.api.check.CheckSshCommand;
-import com.cloud.agent.api.proxy.CheckConsoleProxyLoadCommand;
-import com.cloud.agent.api.proxy.WatchConsoleProxyLoadCommand;
-import com.cloud.agent.api.routing.NetworkElementCommand;
-import com.cloud.agent.api.storage.CreateCommand;
-import com.cloud.agent.api.storage.DestroyCommand;
-import com.cloud.agent.api.storage.MigrateVolumeCommand;
-import com.cloud.agent.api.storage.PrimaryStorageDownloadCommand;
-import com.cloud.agent.api.storage.ResizeVolumeCommand;
import com.cloud.hypervisor.xenserver.resource.CitrixResourceBase;
import com.cloud.hypervisor.xenserver.resource.XcpServerResource;
import com.cloud.hypervisor.xenserver.resource.XenServer56FP1Resource;
@@ -107,103 +44,60 @@ public class CitrixRequestWrapper extends RequestWrapper {
instance = new CitrixRequestWrapper();
}
+ Reflections baseWrappers = new Reflections("com.cloud.hypervisor.xenserver.resource.wrapper");
+ @SuppressWarnings("rawtypes")
+ Set<Class<? extends CommandWrapper>> baseSet = baseWrappers.getSubTypesOf(CommandWrapper.class);
+
+ Reflections xenServer56Wrappers = new Reflections("com.cloud.hypervisor.xenserver.resource.wrapper.xen56");
+ @SuppressWarnings("rawtypes")
+ Set<Class<? extends CommandWrapper>> xenServer56Set = xenServer56Wrappers.getSubTypesOf(CommandWrapper.class);
+
+ Reflections xenServer56P1Wrappers = new Reflections("com.cloud.hypervisor.xenserver.resource.wrapper.xen56p1");
+ @SuppressWarnings("rawtypes")
+ Set<Class<? extends CommandWrapper>> xenServer56P1Set = xenServer56P1Wrappers.getSubTypesOf(CommandWrapper.class);
+
+ Reflections xenServer610Wrappers = new Reflections("com.cloud.hypervisor.xenserver.resource.wrapper.xen610");
+ @SuppressWarnings("rawtypes")
+ Set<Class<? extends CommandWrapper>> xenServer610Set = xenServer610Wrappers.getSubTypesOf(CommandWrapper.class);
+
+ Reflections xenServer620SP1Wrappers = new Reflections("com.cloud.hypervisor.xenserver.resource.wrapper.xen620sp1");
+ @SuppressWarnings("rawtypes")
+ Set<Class<? extends CommandWrapper>> xenServer620SP1Set = xenServer620SP1Wrappers.getSubTypesOf(CommandWrapper.class);
+
+ Reflections xcpWrappers = new Reflections("com.cloud.hypervisor.xenserver.resource.wrapper.xcp");
+ @SuppressWarnings("rawtypes")
+ Set<Class<? extends CommandWrapper>> xcpSet = xcpWrappers.getSubTypesOf(CommandWrapper.class);
+
private CitrixRequestWrapper() {
init();
}
@SuppressWarnings("rawtypes")
private void init() {
+
+ final Hashtable<Class<? extends Command>, CommandWrapper> citrixCommands = processAnnotations(baseSet);
+ final Hashtable<Class<? extends Command>, CommandWrapper> xenServer56Commands = processAnnotations(xenServer56Set);
+ final Hashtable<Class<? extends Command>, CommandWrapper> xenServer56P1Commands = processAnnotations(xenServer56P1Set);
+ final Hashtable<Class<? extends Command>, CommandWrapper> xenServer610Commands = processAnnotations(xenServer610Set);
+ final Hashtable<Class<? extends Command>, CommandWrapper> xenServer620SP1Commands = processAnnotations(xenServer620SP1Set);
+ final Hashtable<Class<? extends Command>, CommandWrapper> xcpServerResourceCommand = processAnnotations(xcpSet);
+
// CitrixResourceBase commands
- final Hashtable<Class<? extends Command>, CommandWrapper> citrixCommands = new Hashtable<Class<? extends Command>, CommandWrapper>();
- citrixCommands.put(RebootRouterCommand.class, new CitrixRebootRouterCommandWrapper());
- citrixCommands.put(CreateCommand.class, new CitrixCreateCommandWrapper());
- citrixCommands.put(CheckConsoleProxyLoadCommand.class, new CitrixCheckConsoleProxyLoadCommandWrapper());
- citrixCommands.put(WatchConsoleProxyLoadCommand.class, new CitrixWatchConsoleProxyLoadCommandWrapper());
- citrixCommands.put(ReadyCommand.class, new CitrixReadyCommandWrapper());
- citrixCommands.put(GetHostStatsCommand.class, new CitrixGetHostStatsCommandWrapper());
- citrixCommands.put(GetVmStatsCommand.class, new CitrixGetVmStatsCommandWrapper());
- citrixCommands.put(GetVmDiskStatsCommand.class, new CitrixGetVmDiskStatsCommandWrapper());
- citrixCommands.put(CheckHealthCommand.class, new CitrixCheckHealthCommandWrapper());
- citrixCommands.put(StopCommand.class, new CitrixStopCommandWrapper());
- citrixCommands.put(RebootCommand.class, new CitrixRebootCommandWrapper());
- citrixCommands.put(CheckVirtualMachineCommand.class, new CitrixCheckVirtualMachineCommandWrapper());
- citrixCommands.put(PrepareForMigrationCommand.class, new CitrixPrepareForMigrationCommandWrapper());
- citrixCommands.put(MigrateCommand.class, new CitrixMigrateCommandWrapper());
- citrixCommands.put(DestroyCommand.class, new CitrixDestroyCommandWrapper());
- citrixCommands.put(CreateStoragePoolCommand.class, new CitrixCreateStoragePoolCommandWrapper());
- citrixCommands.put(ModifyStoragePoolCommand.class, new CitrixModifyStoragePoolCommandWrapper());
- citrixCommands.put(DeleteStoragePoolCommand.class, new CitrixDeleteStoragePoolCommandWrapper());
- citrixCommands.put(ResizeVolumeCommand.class, new CitrixResizeVolumeCommandWrapper());
- citrixCommands.put(AttachVolumeCommand.class, new CitrixAttachVolumeCommandWrapper());
- citrixCommands.put(AttachIsoCommand.class, new CitrixAttachIsoCommandWrapper());
- citrixCommands.put(UpgradeSnapshotCommand.class, new CitrixUpgradeSnapshotCommandWrapper());
- citrixCommands.put(GetStorageStatsCommand.class, new CitrixGetStorageStatsCommandWrapper());
- citrixCommands.put(PrimaryStorageDownloadCommand.class, new CitrixPrimaryStorageDownloadCommandWrapper());
- citrixCommands.put(GetVncPortCommand.class, new CitrixGetVncPortCommandWrapper());
- citrixCommands.put(SetupCommand.class, new CitrixSetupCommandWrapper());
- citrixCommands.put(MaintainCommand.class, new CitrixMaintainCommandWrapper());
- citrixCommands.put(PingTestCommand.class, new CitrixPingTestCommandWrapper());
- citrixCommands.put(CheckOnHostCommand.class, new CitrixCheckOnHostCommandWrapper());
- citrixCommands.put(ModifySshKeysCommand.class, new CitrixModifySshKeysCommandWrapper());
- citrixCommands.put(StartCommand.class, new CitrixStartCommandWrapper());
- citrixCommands.put(OvsSetTagAndFlowCommand.class, new CitrixOvsSetTagAndFlowCommandWrapper());
- citrixCommands.put(CheckSshCommand.class, new CitrixCheckSshCommandWrapper());
- citrixCommands.put(SecurityGroupRulesCmd.class, new CitrixSecurityGroupRulesCommandWrapper());
- citrixCommands.put(OvsFetchInterfaceCommand.class, new CitrixOvsFetchInterfaceCommandWrapper());
- citrixCommands.put(OvsCreateGreTunnelCommand.class, new CitrixOvsCreateGreTunnelCommandWrapper());
- citrixCommands.put(OvsDeleteFlowCommand.class, new CitrixOvsDeleteFlowCommandWrapper());
- citrixCommands.put(OvsVpcPhysicalTopologyConfigCommand.class, new CitrixOvsVpcPhysicalTopologyConfigCommandWrapper());
- citrixCommands.put(OvsVpcRoutingPolicyConfigCommand.class, new CitrixOvsVpcRoutingPolicyConfigCommandWrapper());
- citrixCommands.put(CleanupNetworkRulesCmd.class, new CitrixCleanupNetworkRulesCmdWrapper());
- citrixCommands.put(NetworkRulesSystemVmCommand.class, new CitrixNetworkRulesSystemVmCommandWrapper());
- citrixCommands.put(OvsCreateTunnelCommand.class, new CitrixOvsCreateTunnelCommandWrapper());
- citrixCommands.put(OvsSetupBridgeCommand.class, new CitrixOvsSetupBridgeCommandWrapper());
- citrixCommands.put(OvsDestroyBridgeCommand.class, new CitrixOvsDestroyBridgeCommandWrapper());
- citrixCommands.put(OvsDestroyTunnelCommand.class, new CitrixOvsDestroyTunnelCommandWrapper());
- citrixCommands.put(UpdateHostPasswordCommand.class, new CitrixUpdateHostPasswordCommandWrapper());
- citrixCommands.put(ClusterVMMetaDataSyncCommand.class, new CitrixClusterVMMetaDataSyncCommandWrapper());
- citrixCommands.put(CheckNetworkCommand.class, new CitrixCheckNetworkCommandWrapper());
- citrixCommands.put(PlugNicCommand.class, new CitrixPlugNicCommandWrapper());
- citrixCommands.put(UnPlugNicCommand.class, new CitrixUnPlugNicCommandWrapper());
- citrixCommands.put(CreateVMSnapshotCommand.class, new CitrixCreateVMSnapshotCommandWrapper());
- citrixCommands.put(DeleteVMSnapshotCommand.class, new CitrixDeleteVMSnapshotCommandWrapper());
- citrixCommands.put(RevertToVMSnapshotCommand.class, new CitrixRevertToVMSnapshotCommandWrapper());
- citrixCommands.put(NetworkRulesVmSecondaryIpCommand.class, new CitrixNetworkRulesVmSecondaryIpCommandWrapper());
- citrixCommands.put(ScaleVmCommand.class, new CitrixScaleVmCommandWrapper());
- citrixCommands.put(PvlanSetupCommand.class, new CitrixPvlanSetupCommandWrapper());
- citrixCommands.put(PerformanceMonitorCommand.class, new CitrixPerformanceMonitorCommandWrapper());
- citrixCommands.put(NetworkElementCommand.class, new CitrixNetworkElementCommandWrapper());
resources.put(CitrixResourceBase.class, citrixCommands);
// XenServer56Resource commands
- final Hashtable<Class<? extends Command>, CommandWrapper> xenServer56Commands = new Hashtable<Class<? extends Command>, CommandWrapper>();
- xenServer56Commands.put(CheckOnHostCommand.class, new XenServer56CheckOnHostCommandWrapper());
- xenServer56Commands.put(FenceCommand.class, new XenServer56FenceCommandWrapper());
- xenServer56Commands.put(NetworkUsageCommand.class, new XenServer56NetworkUsageCommandWrapper());
resources.put(XenServer56Resource.class, xenServer56Commands);
// XenServer56FP1Resource commands
- final Hashtable<Class<? extends Command>, CommandWrapper> xenServer56P1Commands = new Hashtable<Class<? extends Command>, CommandWrapper>();
- xenServer56P1Commands.put(FenceCommand.class, new XenServer56FP1FenceCommandWrapper());
resources.put(XenServer56FP1Resource.class, xenServer56P1Commands);
// XenServer620SP1Resource commands
- final Hashtable<Class<? extends Command>, CommandWrapper> xenServer620SP1Commands = new Hashtable<Class<? extends Command>, CommandWrapper>();
- xenServer620SP1Commands.put(GetGPUStatsCommand.class, new XenServer620SP1GetGPUStatsCommandWrapper());
resources.put(XenServer620SP1Resource.class, xenServer620SP1Commands);
// XenServer610Resource commands
- final Hashtable<Class<? extends Command>, CommandWrapper> xenServer610Commands = new Hashtable<Class<? extends Command>, CommandWrapper>();
- xenServer610Commands.put(MigrateWithStorageCommand.class, new XenServer610MigrateWithStorageCommandWrapper());
- xenServer610Commands.put(MigrateWithStorageReceiveCommand.class, new XenServer610MigrateWithStorageReceiveCommandWrapper());
- xenServer610Commands.put(MigrateWithStorageSendCommand.class, new XenServer610MigrateWithStorageSendCommandWrapper());
- xenServer610Commands.put(MigrateWithStorageCompleteCommand.class, new XenServer610MigrateWithStorageCompleteCommandWrapper());
- xenServer610Commands.put(MigrateVolumeCommand.class, new XenServer610MigrateVolumeCommandWrapper());
resources.put(XenServer610Resource.class, xenServer610Commands);
// XcpServerResource commands
- final Hashtable<Class<? extends Command>, CommandWrapper> xcpServerResourceCommand = new Hashtable<Class<? extends Command>, CommandWrapper>();
- xcpServerResourceCommand.put(NetworkUsageCommand.class, new XcpServerNetworkUsageCommandWrapper());
resources.put(XcpServerResource.class, xcpServerResourceCommand);
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7ff1a81c/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixResizeVolumeCommandWrapper.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixResizeVolumeCommandWrapper.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixResizeVolumeCommandWrapper.java
index 62f9093..25f350f 100644
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixResizeVolumeCommandWrapper.java
+++ b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixResizeVolumeCommandWrapper.java
@@ -26,9 +26,11 @@ import com.cloud.agent.api.storage.ResizeVolumeAnswer;
import com.cloud.agent.api.storage.ResizeVolumeCommand;
import com.cloud.hypervisor.xenserver.resource.CitrixResourceBase;
import com.cloud.resource.CommandWrapper;
+import com.cloud.resource.ResourceWrapper;
import com.xensource.xenapi.Connection;
import com.xensource.xenapi.VDI;
+@ResourceWrapper(handles = ResizeVolumeCommand.class)
public final class CitrixResizeVolumeCommandWrapper extends CommandWrapper<ResizeVolumeCommand, Answer, CitrixResourceBase> {
private static final Logger s_logger = Logger.getLogger(CitrixResizeVolumeCommandWrapper.class);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7ff1a81c/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixRevertToVMSnapshotCommandWrapper.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixRevertToVMSnapshotCommandWrapper.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixRevertToVMSnapshotCommandWrapper.java
index a929132..def4df7 100644
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixRevertToVMSnapshotCommandWrapper.java
+++ b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixRevertToVMSnapshotCommandWrapper.java
@@ -32,6 +32,7 @@ import com.cloud.agent.api.RevertToVMSnapshotAnswer;
import com.cloud.agent.api.RevertToVMSnapshotCommand;
import com.cloud.hypervisor.xenserver.resource.CitrixResourceBase;
import com.cloud.resource.CommandWrapper;
+import com.cloud.resource.ResourceWrapper;
import com.cloud.vm.VirtualMachine.PowerState;
import com.cloud.vm.snapshot.VMSnapshot;
import com.xensource.xenapi.Connection;
@@ -40,6 +41,7 @@ import com.xensource.xenapi.VBD;
import com.xensource.xenapi.VDI;
import com.xensource.xenapi.VM;
+@ResourceWrapper(handles = RevertToVMSnapshotCommand.class)
public final class CitrixRevertToVMSnapshotCommandWrapper extends CommandWrapper<RevertToVMSnapshotCommand, Answer, CitrixResourceBase> {
private static final Logger s_logger = Logger.getLogger(CitrixRevertToVMSnapshotCommandWrapper.class);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7ff1a81c/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixScaleVmCommandWrapper.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixScaleVmCommandWrapper.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixScaleVmCommandWrapper.java
index 47a30f5..d21bcbd 100644
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixScaleVmCommandWrapper.java
+++ b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixScaleVmCommandWrapper.java
@@ -31,6 +31,7 @@ import com.cloud.agent.api.ScaleVmCommand;
import com.cloud.agent.api.to.VirtualMachineTO;
import com.cloud.hypervisor.xenserver.resource.CitrixResourceBase;
import com.cloud.resource.CommandWrapper;
+import com.cloud.resource.ResourceWrapper;
import com.cloud.utils.exception.CloudRuntimeException;
import com.xensource.xenapi.Connection;
import com.xensource.xenapi.Host;
@@ -38,6 +39,7 @@ import com.xensource.xenapi.Types.VmPowerState;
import com.xensource.xenapi.Types.XenAPIException;
import com.xensource.xenapi.VM;
+@ResourceWrapper(handles = ScaleVmCommand.class)
public final class CitrixScaleVmCommandWrapper extends CommandWrapper<ScaleVmCommand, Answer, CitrixResourceBase> {
private static final Logger s_logger = Logger.getLogger(CitrixScaleVmCommandWrapper.class);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7ff1a81c/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixSecurityGroupRulesCommandWrapper.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixSecurityGroupRulesCommandWrapper.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixSecurityGroupRulesCommandWrapper.java
index 0cf4a8a..793a564 100644
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixSecurityGroupRulesCommandWrapper.java
+++ b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixSecurityGroupRulesCommandWrapper.java
@@ -26,8 +26,10 @@ import com.cloud.agent.api.SecurityGroupRuleAnswer;
import com.cloud.agent.api.SecurityGroupRulesCmd;
import com.cloud.hypervisor.xenserver.resource.CitrixResourceBase;
import com.cloud.resource.CommandWrapper;
+import com.cloud.resource.ResourceWrapper;
import com.xensource.xenapi.Connection;
+@ResourceWrapper(handles = SecurityGroupRulesCmd.class)
public final class CitrixSecurityGroupRulesCommandWrapper extends CommandWrapper<SecurityGroupRulesCmd, Answer, CitrixResourceBase> {
private static final Logger s_logger = Logger.getLogger(CitrixSecurityGroupRulesCommandWrapper.class);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7ff1a81c/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixSetupCommandWrapper.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixSetupCommandWrapper.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixSetupCommandWrapper.java
index 3b24aa3..3ff0dfe 100644
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixSetupCommandWrapper.java
+++ b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixSetupCommandWrapper.java
@@ -30,6 +30,7 @@ import com.cloud.agent.api.SetupAnswer;
import com.cloud.agent.api.SetupCommand;
import com.cloud.hypervisor.xenserver.resource.CitrixResourceBase;
import com.cloud.resource.CommandWrapper;
+import com.cloud.resource.ResourceWrapper;
import com.cloud.utils.Pair;
import com.cloud.utils.exception.CloudRuntimeException;
import com.xensource.xenapi.Bond;
@@ -41,6 +42,7 @@ import com.xensource.xenapi.Pool;
import com.xensource.xenapi.Types;
import com.xensource.xenapi.Types.XenAPIException;
+@ResourceWrapper(handles = SetupCommand.class)
public final class CitrixSetupCommandWrapper extends CommandWrapper<SetupCommand, Answer, CitrixResourceBase> {
private static final Logger s_logger = Logger.getLogger(CitrixSetupCommandWrapper.class);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7ff1a81c/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixStartCommandWrapper.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixStartCommandWrapper.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixStartCommandWrapper.java
index ceaaf34..27f8474 100644
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixStartCommandWrapper.java
+++ b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixStartCommandWrapper.java
@@ -40,6 +40,7 @@ import com.cloud.network.Networks;
import com.cloud.network.Networks.BroadcastDomainType;
import com.cloud.network.Networks.IsolationType;
import com.cloud.resource.CommandWrapper;
+import com.cloud.resource.ResourceWrapper;
import com.cloud.vm.VirtualMachine;
import com.xensource.xenapi.Connection;
import com.xensource.xenapi.Host;
@@ -47,6 +48,7 @@ import com.xensource.xenapi.Types.VmPowerState;
import com.xensource.xenapi.VDI;
import com.xensource.xenapi.VM;
+@ResourceWrapper(handles = StartCommand.class)
public final class CitrixStartCommandWrapper extends CommandWrapper<StartCommand, Answer, CitrixResourceBase> {
private static final Logger s_logger = Logger.getLogger(CitrixStartCommandWrapper.class);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7ff1a81c/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixStopCommandWrapper.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixStopCommandWrapper.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixStopCommandWrapper.java
index ce8517f..8310cd8 100644
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixStopCommandWrapper.java
+++ b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixStopCommandWrapper.java
@@ -34,6 +34,7 @@ import com.cloud.agent.api.VgpuTypesInfo;
import com.cloud.agent.api.to.GPUDeviceTO;
import com.cloud.hypervisor.xenserver.resource.CitrixResourceBase;
import com.cloud.resource.CommandWrapper;
+import com.cloud.resource.ResourceWrapper;
import com.cloud.utils.StringUtils;
import com.xensource.xenapi.Connection;
import com.xensource.xenapi.Network;
@@ -44,6 +45,7 @@ import com.xensource.xenapi.VGPU;
import com.xensource.xenapi.VIF;
import com.xensource.xenapi.VM;
+@ResourceWrapper(handles = StopCommand.class)
public final class CitrixStopCommandWrapper extends CommandWrapper<StopCommand, Answer, CitrixResourceBase> {
private static final Logger s_logger = Logger.getLogger(CitrixStopCommandWrapper.class);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7ff1a81c/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixUnPlugNicCommandWrapper.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixUnPlugNicCommandWrapper.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixUnPlugNicCommandWrapper.java
index 6250835..639cfb0 100644
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixUnPlugNicCommandWrapper.java
+++ b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixUnPlugNicCommandWrapper.java
@@ -29,11 +29,13 @@ import com.cloud.agent.api.UnPlugNicCommand;
import com.cloud.agent.api.to.NicTO;
import com.cloud.hypervisor.xenserver.resource.CitrixResourceBase;
import com.cloud.resource.CommandWrapper;
+import com.cloud.resource.ResourceWrapper;
import com.xensource.xenapi.Connection;
import com.xensource.xenapi.Network;
import com.xensource.xenapi.VIF;
import com.xensource.xenapi.VM;
+@ResourceWrapper(handles = UnPlugNicCommand.class)
public final class CitrixUnPlugNicCommandWrapper extends CommandWrapper<UnPlugNicCommand, Answer, CitrixResourceBase> {
private static final Logger s_logger = Logger.getLogger(CitrixUnPlugNicCommandWrapper.class);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7ff1a81c/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixUpdateHostPasswordCommandWrapper.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixUpdateHostPasswordCommandWrapper.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixUpdateHostPasswordCommandWrapper.java
index f2f1fb5..c5654fd 100644
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixUpdateHostPasswordCommandWrapper.java
+++ b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixUpdateHostPasswordCommandWrapper.java
@@ -23,7 +23,9 @@ import com.cloud.agent.api.Answer;
import com.cloud.agent.api.UpdateHostPasswordCommand;
import com.cloud.hypervisor.xenserver.resource.CitrixResourceBase;
import com.cloud.resource.CommandWrapper;
+import com.cloud.resource.ResourceWrapper;
+@ResourceWrapper(handles = UpdateHostPasswordCommand.class)
public final class CitrixUpdateHostPasswordCommandWrapper extends CommandWrapper<UpdateHostPasswordCommand, Answer, CitrixResourceBase> {
@Override
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7ff1a81c/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixUpgradeSnapshotCommandWrapper.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixUpgradeSnapshotCommandWrapper.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixUpgradeSnapshotCommandWrapper.java
index a7f3a50..c23ba1b 100644
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixUpgradeSnapshotCommandWrapper.java
+++ b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixUpgradeSnapshotCommandWrapper.java
@@ -27,8 +27,10 @@ import com.cloud.agent.api.Answer;
import com.cloud.agent.api.UpgradeSnapshotCommand;
import com.cloud.hypervisor.xenserver.resource.CitrixResourceBase;
import com.cloud.resource.CommandWrapper;
+import com.cloud.resource.ResourceWrapper;
import com.xensource.xenapi.Connection;
+@ResourceWrapper(handles = UpgradeSnapshotCommand.class)
public final class CitrixUpgradeSnapshotCommandWrapper extends CommandWrapper<UpgradeSnapshotCommand, Answer, CitrixResourceBase> {
private static final Logger s_logger = Logger.getLogger(CitrixUpgradeSnapshotCommandWrapper.class);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7ff1a81c/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixWatchConsoleProxyLoadCommandWrapper.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixWatchConsoleProxyLoadCommandWrapper.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixWatchConsoleProxyLoadCommandWrapper.java
index f188c20..74ca0dd 100644
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixWatchConsoleProxyLoadCommandWrapper.java
+++ b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixWatchConsoleProxyLoadCommandWrapper.java
@@ -23,8 +23,10 @@ import com.cloud.agent.api.Answer;
import com.cloud.agent.api.Command;
import com.cloud.agent.api.proxy.WatchConsoleProxyLoadCommand;
import com.cloud.hypervisor.xenserver.resource.CitrixResourceBase;
+import com.cloud.resource.ResourceWrapper;
import com.cloud.resource.ServerResource;
+@ResourceWrapper(handles = WatchConsoleProxyLoadCommand.class)
public final class CitrixWatchConsoleProxyLoadCommandWrapper extends CitrixConsoleProxyLoadCommandWrapper<WatchConsoleProxyLoadCommand, Answer, CitrixResourceBase> {
@Override
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7ff1a81c/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XcpServerNetworkUsageCommandWrapper.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XcpServerNetworkUsageCommandWrapper.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XcpServerNetworkUsageCommandWrapper.java
deleted file mode 100644
index d22c608..0000000
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XcpServerNetworkUsageCommandWrapper.java
+++ /dev/null
@@ -1,52 +0,0 @@
-//
-// 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.resource.wrapper;
-
-import org.apache.log4j.Logger;
-
-import com.cloud.agent.api.Answer;
-import com.cloud.agent.api.NetworkUsageAnswer;
-import com.cloud.agent.api.NetworkUsageCommand;
-import com.cloud.hypervisor.xenserver.resource.XcpServerResource;
-import com.cloud.resource.CommandWrapper;
-import com.xensource.xenapi.Connection;
-
-public final class XcpServerNetworkUsageCommandWrapper extends CommandWrapper<NetworkUsageCommand, Answer, XcpServerResource> {
-
- private static final Logger s_logger = Logger.getLogger(XcpServerNetworkUsageCommandWrapper.class);
-
- @Override
- public Answer execute(final NetworkUsageCommand command, final XcpServerResource xcpServerResource) {
- try {
- final Connection conn = xcpServerResource.getConnection();
- if (command.getOption() != null && command.getOption().equals("create")) {
- final String result = xcpServerResource.networkUsage(conn, command.getPrivateIP(), "create", null);
- final NetworkUsageAnswer answer = new NetworkUsageAnswer(command, result, 0L, 0L);
- return answer;
- }
- final long[] stats = xcpServerResource.getNetworkStats(conn, command.getPrivateIP());
- final NetworkUsageAnswer answer = new NetworkUsageAnswer(command, "", stats[0], stats[1]);
- return answer;
- } catch (final Exception ex) {
- s_logger.warn("Failed to get network usage stats due to ", ex);
- return new NetworkUsageAnswer(command, ex);
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7ff1a81c/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer56CheckOnHostCommandWrapper.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer56CheckOnHostCommandWrapper.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer56CheckOnHostCommandWrapper.java
deleted file mode 100644
index 972936e..0000000
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer56CheckOnHostCommandWrapper.java
+++ /dev/null
@@ -1,48 +0,0 @@
-//
-// 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.resource.wrapper;
-
-import org.apache.log4j.Logger;
-
-import com.cloud.agent.api.Answer;
-import com.cloud.agent.api.CheckOnHostAnswer;
-import com.cloud.agent.api.CheckOnHostCommand;
-import com.cloud.hypervisor.xenserver.resource.XenServer56Resource;
-import com.cloud.resource.CommandWrapper;
-
-public final class XenServer56CheckOnHostCommandWrapper extends CommandWrapper<CheckOnHostCommand, Answer, XenServer56Resource> {
-
- private static final Logger s_logger = Logger.getLogger(XenServer56CheckOnHostCommandWrapper.class);
-
- @Override
- public Answer execute(final CheckOnHostCommand command, final XenServer56Resource xenServer56) {
- final Boolean alive = xenServer56.checkHeartbeat(command.getHost().getGuid());
- String msg = "";
- if (alive == null) {
- msg = " cannot determine ";
- } else if ( alive == true) {
- msg = "Heart beat is still going";
- } else {
- msg = "Heart beat is gone so dead.";
- }
- s_logger.debug(msg);
- return new CheckOnHostAnswer(command, alive, msg);
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7ff1a81c/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer56FP1FenceCommandWrapper.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer56FP1FenceCommandWrapper.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer56FP1FenceCommandWrapper.java
deleted file mode 100644
index b169636..0000000
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer56FP1FenceCommandWrapper.java
+++ /dev/null
@@ -1,92 +0,0 @@
-//
-// 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.resource.wrapper;
-
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.log4j.Logger;
-import org.apache.xmlrpc.XmlRpcException;
-
-import com.cloud.agent.api.Answer;
-import com.cloud.agent.api.FenceAnswer;
-import com.cloud.agent.api.FenceCommand;
-import com.cloud.hypervisor.xenserver.resource.XenServer56Resource;
-import com.cloud.resource.CommandWrapper;
-import com.xensource.xenapi.Connection;
-import com.xensource.xenapi.Types.XenAPIException;
-import com.xensource.xenapi.VBD;
-import com.xensource.xenapi.VDI;
-import com.xensource.xenapi.VM;
-
-public final class XenServer56FP1FenceCommandWrapper extends CommandWrapper<FenceCommand, Answer, XenServer56Resource> {
-
- private static final Logger s_logger = Logger.getLogger(XenServer56FP1FenceCommandWrapper.class);
-
- @Override
- public Answer execute(final FenceCommand command, final XenServer56Resource xenServer56) {
- final Connection conn = xenServer56.getConnection();
- try {
- final Boolean alive = xenServer56.checkHeartbeat(command.getHostGuid());
- if ( alive == null ) {
- s_logger.debug("Failed to check heartbeat, so unable to fence");
- return new FenceAnswer(command, false, "Failed to check heartbeat, so unable to fence");
- }
- if ( alive ) {
- s_logger.debug("Heart beat is still going so unable to fence");
- return new FenceAnswer(command, false, "Heartbeat is still going on unable to fence");
- }
- final Set<VM> vms = VM.getByNameLabel(conn, command.getVmName());
- for (final VM vm : vms) {
- final Set<VDI> vdis = new HashSet<VDI>();
- final Set<VBD> vbds = vm.getVBDs(conn);
- for (final VBD vbd : vbds) {
- final VDI vdi = vbd.getVDI(conn);
- if (!xenServer56.isRefNull(vdi)) {
- vdis.add(vdi);
- }
- }
- s_logger.info("Fence command for VM " + command.getVmName());
- vm.powerStateReset(conn);
- vm.destroy(conn);
- for (final VDI vdi : vdis) {
- final Map<String, String> smConfig = vdi.getSmConfig(conn);
- for (final String key : smConfig.keySet()) {
- if (key.startsWith("host_")) {
- vdi.removeFromSmConfig(conn, key);
- break;
- }
- }
- }
- }
- return new FenceAnswer(command);
- } catch (final XmlRpcException e) {
- s_logger.warn("Unable to fence", e);
- return new FenceAnswer(command, false, e.getMessage());
- } catch (final XenAPIException e) {
- s_logger.warn("Unable to fence", e);
- return new FenceAnswer(command, false, e.getMessage());
- } catch (final Exception e) {
- s_logger.warn("Unable to fence", e);
- return new FenceAnswer(command, false, e.getMessage());
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7ff1a81c/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer56FenceCommandWrapper.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer56FenceCommandWrapper.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer56FenceCommandWrapper.java
deleted file mode 100644
index ece3329..0000000
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer56FenceCommandWrapper.java
+++ /dev/null
@@ -1,71 +0,0 @@
-//
-// 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.resource.wrapper;
-
-import java.util.Set;
-
-import org.apache.log4j.Logger;
-import org.apache.xmlrpc.XmlRpcException;
-
-import com.cloud.agent.api.Answer;
-import com.cloud.agent.api.FenceAnswer;
-import com.cloud.agent.api.FenceCommand;
-import com.cloud.hypervisor.xenserver.resource.XenServer56Resource;
-import com.cloud.resource.CommandWrapper;
-import com.xensource.xenapi.Connection;
-import com.xensource.xenapi.Types.XenAPIException;
-import com.xensource.xenapi.VM;
-
-public final class XenServer56FenceCommandWrapper extends CommandWrapper<FenceCommand, Answer, XenServer56Resource> {
-
- private static final Logger s_logger = Logger.getLogger(XenServer56FenceCommandWrapper.class);
-
- @Override
- public Answer execute(final FenceCommand command, final XenServer56Resource xenServer56) {
- final Connection conn = xenServer56.getConnection();
- try {
- final Boolean alive = xenServer56.checkHeartbeat(command.getHostGuid());
- if (alive == null) {
- s_logger.debug("Failed to check heartbeat, so unable to fence");
- return new FenceAnswer(command, false, "Failed to check heartbeat, so unable to fence");
- }
- if (alive) {
- s_logger.debug("Heart beat is still going so unable to fence");
- return new FenceAnswer(command, false, "Heartbeat is still going on unable to fence");
- }
- final Set<VM> vms = VM.getByNameLabel(conn, command.getVmName());
- for (final VM vm : vms) {
- s_logger.info("Fence command for VM " + command.getVmName());
- vm.powerStateReset(conn);
- vm.destroy(conn);
- }
- return new FenceAnswer(command);
- } catch (final XmlRpcException e) {
- s_logger.warn("Unable to fence", e);
- return new FenceAnswer(command, false, e.getMessage());
- } catch (final XenAPIException e) {
- s_logger.warn("Unable to fence", e);
- return new FenceAnswer(command, false, e.getMessage());
- } catch (final Exception e) {
- s_logger.warn("Unable to fence", e);
- return new FenceAnswer(command, false, e.getMessage());
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7ff1a81c/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer56NetworkUsageCommandWrapper.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer56NetworkUsageCommandWrapper.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer56NetworkUsageCommandWrapper.java
deleted file mode 100644
index 9132aa1..0000000
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer56NetworkUsageCommandWrapper.java
+++ /dev/null
@@ -1,103 +0,0 @@
-//
-// 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.resource.wrapper;
-
-import org.apache.log4j.Logger;
-
-import com.xensource.xenapi.Connection;
-
-import com.cloud.agent.api.Answer;
-import com.cloud.agent.api.NetworkUsageAnswer;
-import com.cloud.agent.api.NetworkUsageCommand;
-import com.cloud.hypervisor.xenserver.resource.XenServer56Resource;
-import com.cloud.resource.CommandWrapper;
-import com.cloud.utils.ExecutionResult;
-
-public final class XenServer56NetworkUsageCommandWrapper extends CommandWrapper<NetworkUsageCommand, Answer, XenServer56Resource> {
-
- private static final Logger s_logger = Logger.getLogger(XenServer56NetworkUsageCommandWrapper.class);
-
- @Override
- public Answer execute(final NetworkUsageCommand command, final XenServer56Resource xenServer56) {
- if (command.isForVpc()) {
- return executeNetworkUsage(command, xenServer56);
- }
- try {
- final Connection conn = xenServer56.getConnection();
- if (command.getOption() != null && command.getOption().equals("create")) {
- final String result = xenServer56.networkUsage(conn, command.getPrivateIP(), "create", null);
- final NetworkUsageAnswer answer = new NetworkUsageAnswer(command, result, 0L, 0L);
- return answer;
- }
- final long[] stats = xenServer56.getNetworkStats(conn, command.getPrivateIP());
- final NetworkUsageAnswer answer = new NetworkUsageAnswer(command, "", stats[0], stats[1]);
- return answer;
- } catch (final Exception ex) {
- s_logger.warn("Failed to get network usage stats due to ", ex);
- return new NetworkUsageAnswer(command, ex);
- }
- }
-
- protected NetworkUsageAnswer executeNetworkUsage(final NetworkUsageCommand command, final XenServer56Resource xenServer56) {
- try {
- final String option = command.getOption();
- final String publicIp = command.getGatewayIP();
-
- String args = " -l " + publicIp + " ";
- if (option.equals("get")) {
- args += "-g";
- } else if (option.equals("create")) {
- args += "-c";
- final String vpcCIDR = command.getVpcCIDR();
- args += " -v " + vpcCIDR;
- } else if (option.equals("reset")) {
- args += "-r";
- } else if (option.equals("vpn")) {
- args += "-n";
- } else if (option.equals("remove")) {
- args += "-d";
- } else {
- return new NetworkUsageAnswer(command, "success", 0L, 0L);
- }
-
- final ExecutionResult result = xenServer56.executeInVR(command.getPrivateIP(), "vpc_netusage.sh", args);
- final String detail = result.getDetails();
- if (!result.isSuccess()) {
- throw new Exception(" vpc network usage plugin call failed ");
- }
- if (option.equals("get") || option.equals("vpn")) {
- final long[] stats = new long[2];
- if (detail != null) {
- final String[] splitResult = detail.split(":");
- int i = 0;
- while (i < splitResult.length - 1) {
- stats[0] += Long.parseLong(splitResult[i++]);
- stats[1] += Long.parseLong(splitResult[i++]);
- }
- return new NetworkUsageAnswer(command, "success", stats[0], stats[1]);
- }
- }
- return new NetworkUsageAnswer(command, "success", 0L, 0L);
- } catch (final Exception ex) {
- s_logger.warn("Failed to get network usage stats due to ", ex);
- return new NetworkUsageAnswer(command, ex);
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7ff1a81c/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer610MigrateVolumeCommandWrapper.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer610MigrateVolumeCommandWrapper.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer610MigrateVolumeCommandWrapper.java
deleted file mode 100644
index 284ec89..0000000
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer610MigrateVolumeCommandWrapper.java
+++ /dev/null
@@ -1,71 +0,0 @@
-//
-// 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.resource.wrapper;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.log4j.Logger;
-
-import com.cloud.agent.api.Answer;
-import com.cloud.agent.api.storage.MigrateVolumeAnswer;
-import com.cloud.agent.api.storage.MigrateVolumeCommand;
-import com.cloud.agent.api.to.StorageFilerTO;
-import com.cloud.hypervisor.xenserver.resource.XenServer610Resource;
-import com.cloud.resource.CommandWrapper;
-import com.xensource.xenapi.Connection;
-import com.xensource.xenapi.SR;
-import com.xensource.xenapi.Task;
-import com.xensource.xenapi.Types;
-import com.xensource.xenapi.VDI;
-
-public final class XenServer610MigrateVolumeCommandWrapper extends CommandWrapper<MigrateVolumeCommand, Answer, XenServer610Resource> {
-
- private static final Logger s_logger = Logger.getLogger(XenServer610MigrateVolumeCommandWrapper.class);
-
- @Override
- public Answer execute(final MigrateVolumeCommand command, final XenServer610Resource xenServer610Resource) {
- final Connection connection = xenServer610Resource.getConnection();
- final String volumeUUID = command.getVolumePath();
- final StorageFilerTO poolTO = command.getPool();
-
- try {
- String uuid = poolTO.getUuid();
- final SR destinationPool = xenServer610Resource.getStorageRepository(connection, uuid);
- final VDI srcVolume = xenServer610Resource.getVDIbyUuid(connection, volumeUUID);
- final Map<String, String> other = new HashMap<String, String>();
- other.put("live", "true");
-
- // Live migrate the vdi across pool.
- final Task task = srcVolume.poolMigrateAsync(connection, destinationPool, other);
- final long timeout = xenServer610Resource.getMigrateWait() * 1000L;
- xenServer610Resource.waitForTask(connection, task, 1000, timeout);
- xenServer610Resource.checkForSuccess(connection, task);
-
- final VDI dvdi = Types.toVDI(task, connection);
-
- return new MigrateVolumeAnswer(command, true, null, dvdi.getUuid(connection));
- } catch (final Exception e) {
- final String msg = "Catch Exception " + e.getClass().getName() + " due to " + e.toString();
- s_logger.error(msg, e);
- return new MigrateVolumeAnswer(command, false, msg, null);
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7ff1a81c/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer610MigrateWithStorageCommandWrapper.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer610MigrateWithStorageCommandWrapper.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer610MigrateWithStorageCommandWrapper.java
deleted file mode 100644
index 970ed10..0000000
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer610MigrateWithStorageCommandWrapper.java
+++ /dev/null
@@ -1,137 +0,0 @@
-//
-// 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.resource.wrapper;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.cloudstack.storage.to.VolumeObjectTO;
-import org.apache.log4j.Logger;
-
-import com.cloud.agent.api.Answer;
-import com.cloud.agent.api.MigrateWithStorageAnswer;
-import com.cloud.agent.api.MigrateWithStorageCommand;
-import com.cloud.agent.api.to.NicTO;
-import com.cloud.agent.api.to.StorageFilerTO;
-import com.cloud.agent.api.to.VirtualMachineTO;
-import com.cloud.agent.api.to.VolumeTO;
-import com.cloud.hypervisor.xenserver.resource.XenServer610Resource;
-import com.cloud.hypervisor.xenserver.resource.XsHost;
-import com.cloud.hypervisor.xenserver.resource.XsLocalNetwork;
-import com.cloud.network.Networks.TrafficType;
-import com.cloud.resource.CommandWrapper;
-import com.cloud.utils.exception.CloudRuntimeException;
-import com.xensource.xenapi.Connection;
-import com.xensource.xenapi.Host;
-import com.xensource.xenapi.Network;
-import com.xensource.xenapi.SR;
-import com.xensource.xenapi.Task;
-import com.xensource.xenapi.Types;
-import com.xensource.xenapi.VDI;
-import com.xensource.xenapi.VIF;
-import com.xensource.xenapi.VM;
-
-public final class XenServer610MigrateWithStorageCommandWrapper extends CommandWrapper<MigrateWithStorageCommand, Answer, XenServer610Resource> {
-
- private static final Logger s_logger = Logger.getLogger(XenServer610MigrateWithStorageCommandWrapper.class);
-
- @Override
- public Answer execute(final MigrateWithStorageCommand command, final XenServer610Resource xenServer610Resource) {
- final Connection connection = xenServer610Resource.getConnection();
- final VirtualMachineTO vmSpec = command.getVirtualMachine();
- final Map<VolumeTO, StorageFilerTO> volumeToFiler = command.getVolumeToFiler();
- final String vmName = vmSpec.getName();
- Task task = null;
-
- final XsHost xsHost = xenServer610Resource.getHost();
- final String uuid = xsHost.getUuid();
- try {
- xenServer610Resource.prepareISO(connection, vmName);
-
- // Get the list of networks and recreate VLAN, if required.
- for (final NicTO nicTo : vmSpec.getNics()) {
- xenServer610Resource.getNetwork(connection, nicTo);
- }
-
- final Map<String, String> other = new HashMap<String, String>();
- other.put("live", "true");
-
- final XsLocalNetwork nativeNetworkForTraffic = xenServer610Resource.getNativeNetworkForTraffic(connection, TrafficType.Storage, null);
- final Network networkForSm = nativeNetworkForTraffic.getNetwork();
-
- // Create the vif map. The vm stays in the same cluster so we have to pass an empty vif map.
- final Map<VIF, Network> vifMap = new HashMap<VIF, Network>();
- final Map<VDI, SR> vdiMap = new HashMap<VDI, SR>();
- for (final Map.Entry<VolumeTO, StorageFilerTO> entry : volumeToFiler.entrySet()) {
- final VolumeTO volume = entry.getKey();
- final StorageFilerTO sotrageFiler = entry.getValue();
- vdiMap.put(xenServer610Resource.getVDIbyUuid(connection, volume.getPath()), xenServer610Resource.getStorageRepository(connection, sotrageFiler.getUuid()));
- }
-
- // Get the vm to migrate.
- final Set<VM> vms = VM.getByNameLabel(connection, vmSpec.getName());
- final VM vmToMigrate = vms.iterator().next();
-
- // Check migration with storage is possible.
- final Host host = Host.getByUuid(connection, uuid);
- final Map<String, String> token = host.migrateReceive(connection, networkForSm, other);
- task = vmToMigrate.assertCanMigrateAsync(connection, token, true, vdiMap, vifMap, other);
- try {
- // poll every 1 seconds
- final long timeout = xenServer610Resource.getMigrateWait() * 1000L;
- xenServer610Resource.waitForTask(connection, task, 1000, timeout);
- xenServer610Resource.checkForSuccess(connection, task);
- } catch (final Types.HandleInvalid e) {
- s_logger.error("Error while checking if vm " + vmName + " can be migrated to the destination host " + host, e);
- throw new CloudRuntimeException("Error while checking if vm " + vmName + " can be migrated to the " + "destination host " + host, e);
- }
-
- // Migrate now.
- task = vmToMigrate.migrateSendAsync(connection, token, true, vdiMap, vifMap, other);
- try {
- // poll every 1 seconds.
- final long timeout = xenServer610Resource.getMigrateWait() * 1000L;
- xenServer610Resource.waitForTask(connection, task, 1000, timeout);
- xenServer610Resource.checkForSuccess(connection, task);
- } catch (final Types.HandleInvalid e) {
- s_logger.error("Error while migrating vm " + vmName + " to the destination host " + host, e);
- throw new CloudRuntimeException("Error while migrating vm " + vmName + " to the destination host " + host, e);
- }
-
- // Volume paths would have changed. Return that information.
- final List<VolumeObjectTO> volumeToList = xenServer610Resource.getUpdatedVolumePathsOfMigratedVm(connection, vmToMigrate, vmSpec.getDisks());
- vmToMigrate.setAffinity(connection, host);
- return new MigrateWithStorageAnswer(command, volumeToList);
- } catch (final Exception e) {
- s_logger.warn("Catch Exception " + e.getClass().getName() + ". Storage motion failed due to " + e.toString(), e);
- return new MigrateWithStorageAnswer(command, e);
- } finally {
- if (task != null) {
- try {
- task.destroy(connection);
- } catch (final Exception e) {
- s_logger.debug("Unable to destroy task " + task.toString() + " on host " + uuid + " due to " + e.toString());
- }
- }
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7ff1a81c/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer610MigrateWithStorageCompleteCommandWrapper.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer610MigrateWithStorageCompleteCommandWrapper.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer610MigrateWithStorageCompleteCommandWrapper.java
deleted file mode 100644
index e993b96..0000000
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer610MigrateWithStorageCompleteCommandWrapper.java
+++ /dev/null
@@ -1,81 +0,0 @@
-//
-// 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.resource.wrapper;
-
-import java.util.List;
-import java.util.Set;
-
-import org.apache.cloudstack.storage.to.VolumeObjectTO;
-import org.apache.log4j.Logger;
-
-import com.cloud.agent.api.Answer;
-import com.cloud.agent.api.MigrateWithStorageCompleteAnswer;
-import com.cloud.agent.api.MigrateWithStorageCompleteCommand;
-import com.cloud.agent.api.to.VirtualMachineTO;
-import com.cloud.hypervisor.xenserver.resource.XenServer610Resource;
-import com.cloud.hypervisor.xenserver.resource.XsHost;
-import com.cloud.resource.CommandWrapper;
-import com.cloud.utils.exception.CloudRuntimeException;
-import com.xensource.xenapi.Connection;
-import com.xensource.xenapi.Host;
-import com.xensource.xenapi.VM;
-
-public final class XenServer610MigrateWithStorageCompleteCommandWrapper extends CommandWrapper<MigrateWithStorageCompleteCommand, Answer, XenServer610Resource> {
-
- private static final Logger s_logger = Logger.getLogger(XenServer610MigrateWithStorageCompleteCommandWrapper.class);
-
- @Override
- public Answer execute(final MigrateWithStorageCompleteCommand command, final XenServer610Resource xenServer610Resource) {
- final Connection connection = xenServer610Resource.getConnection();
- final VirtualMachineTO vmSpec = command.getVirtualMachine();
-
- final String name = vmSpec.getName();
- try {
- final XsHost xsHost = xenServer610Resource.getHost();
- final String uuid = xsHost.getUuid();
-
- final Set<VM> vms = VM.getByNameLabel(connection, name);
- // Check if VMs can be found by label.
- if (vms == null) {
- throw new CloudRuntimeException("Couldn't find VMs by label " + name + " on the destination host.");
- }
- final VM migratedVm = vms.iterator().next();
-
- // Check the vm is present on the new host.
- if (migratedVm == null) {
- throw new CloudRuntimeException("Couldn't find the migrated vm " + name + " on the destination host.");
- }
-
- final Host host = Host.getByUuid(connection, uuid);
- migratedVm.setAffinity(connection, host);
-
- // Volume paths would have changed. Return that information.
- final List<VolumeObjectTO> volumeToSet = xenServer610Resource.getUpdatedVolumePathsOfMigratedVm(connection, migratedVm, vmSpec.getDisks());
-
- return new MigrateWithStorageCompleteAnswer(command, volumeToSet);
- } catch (final CloudRuntimeException e) {
- s_logger.error("Migration of vm " + name + " with storage failed due to " + e.toString(), e);
- return new MigrateWithStorageCompleteAnswer(command, e);
- } catch (final Exception e) {
- s_logger.error("Migration of vm " + name + " with storage failed due to " + e.toString(), e);
- return new MigrateWithStorageCompleteAnswer(command, e);
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7ff1a81c/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer610MigrateWithStorageReceiveCommandWrapper.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer610MigrateWithStorageReceiveCommandWrapper.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer610MigrateWithStorageReceiveCommandWrapper.java
deleted file mode 100644
index 57f5851..0000000
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer610MigrateWithStorageReceiveCommandWrapper.java
+++ /dev/null
@@ -1,91 +0,0 @@
-//
-// 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.resource.wrapper;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.log4j.Logger;
-
-import com.cloud.agent.api.Answer;
-import com.cloud.agent.api.MigrateWithStorageReceiveAnswer;
-import com.cloud.agent.api.MigrateWithStorageReceiveCommand;
-import com.cloud.agent.api.to.NicTO;
-import com.cloud.agent.api.to.StorageFilerTO;
-import com.cloud.agent.api.to.VirtualMachineTO;
-import com.cloud.agent.api.to.VolumeTO;
-import com.cloud.hypervisor.xenserver.resource.XenServer610Resource;
-import com.cloud.hypervisor.xenserver.resource.XsHost;
-import com.cloud.hypervisor.xenserver.resource.XsLocalNetwork;
-import com.cloud.network.Networks.TrafficType;
-import com.cloud.resource.CommandWrapper;
-import com.cloud.utils.exception.CloudRuntimeException;
-import com.xensource.xenapi.Connection;
-import com.xensource.xenapi.Host;
-import com.xensource.xenapi.Network;
-import com.xensource.xenapi.SR;
-
-public final class XenServer610MigrateWithStorageReceiveCommandWrapper extends CommandWrapper<MigrateWithStorageReceiveCommand, Answer, XenServer610Resource> {
-
- private static final Logger s_logger = Logger.getLogger(XenServer610MigrateWithStorageReceiveCommandWrapper.class);
-
- @Override
- public Answer execute(final MigrateWithStorageReceiveCommand command, final XenServer610Resource xenServer610Resource) {
- final Connection connection = xenServer610Resource.getConnection();
- final VirtualMachineTO vmSpec = command.getVirtualMachine();
- final Map<VolumeTO, StorageFilerTO> volumeToFiler = command.getVolumeToFiler();
-
- try {
- // Get a map of all the SRs to which the vdis will be migrated.
- final Map<VolumeTO, Object> volumeToSr = new HashMap<VolumeTO, Object>();
- for (final Map.Entry<VolumeTO, StorageFilerTO> entry : volumeToFiler.entrySet()) {
- final StorageFilerTO storageFiler = entry.getValue();
- final SR sr = xenServer610Resource.getStorageRepository(connection, storageFiler.getUuid());
- volumeToSr.put(entry.getKey(), sr);
- }
-
- // Get the list of networks to which the vifs will attach.
- final Map<NicTO, Object> nicToNetwork = new HashMap<NicTO, Object>();
- for (final NicTO nicTo : vmSpec.getNics()) {
- final Network network = xenServer610Resource.getNetwork(connection, nicTo);
- nicToNetwork.put(nicTo, network);
- }
-
- final XsLocalNetwork nativeNetworkForTraffic = xenServer610Resource.getNativeNetworkForTraffic(connection, TrafficType.Storage, null);
- final Network network = nativeNetworkForTraffic.getNetwork();
- final XsHost xsHost = xenServer610Resource.getHost();
- final String uuid = xsHost.getUuid();
-
- final Map<String, String> other = new HashMap<String, String>();
- other.put("live", "true");
-
- final Host host = Host.getByUuid(connection, uuid);
- final Map<String, String> token = host.migrateReceive(connection, network, other);
-
- return new MigrateWithStorageReceiveAnswer(command, volumeToSr, nicToNetwork, token);
- } catch (final CloudRuntimeException e) {
- s_logger.error("Migration of vm " + vmSpec.getName() + " with storage failed due to " + e.toString(), e);
- return new MigrateWithStorageReceiveAnswer(command, e);
- } catch (final Exception e) {
- s_logger.error("Migration of vm " + vmSpec.getName() + " with storage failed due to " + e.toString(), e);
- return new MigrateWithStorageReceiveAnswer(command, e);
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7ff1a81c/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer610MigrateWithStorageSendCommandWrapper.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer610MigrateWithStorageSendCommandWrapper.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer610MigrateWithStorageSendCommandWrapper.java
deleted file mode 100644
index 267f528..0000000
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer610MigrateWithStorageSendCommandWrapper.java
+++ /dev/null
@@ -1,143 +0,0 @@
-//
-// 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.resource.wrapper;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.log4j.Logger;
-
-import com.cloud.agent.api.Answer;
-import com.cloud.agent.api.MigrateWithStorageSendAnswer;
-import com.cloud.agent.api.MigrateWithStorageSendCommand;
-import com.cloud.agent.api.to.NicTO;
-import com.cloud.agent.api.to.VirtualMachineTO;
-import com.cloud.agent.api.to.VolumeTO;
-import com.cloud.hypervisor.xenserver.resource.XenServer610Resource;
-import com.cloud.resource.CommandWrapper;
-import com.cloud.utils.exception.CloudRuntimeException;
-import com.xensource.xenapi.Connection;
-import com.xensource.xenapi.Network;
-import com.xensource.xenapi.SR;
-import com.xensource.xenapi.Task;
-import com.xensource.xenapi.Types;
-import com.xensource.xenapi.VDI;
-import com.xensource.xenapi.VIF;
-import com.xensource.xenapi.VM;
-
-public final class XenServer610MigrateWithStorageSendCommandWrapper extends CommandWrapper<MigrateWithStorageSendCommand, Answer, XenServer610Resource> {
-
- private static final Logger s_logger = Logger.getLogger(XenServer610MigrateWithStorageSendCommandWrapper.class);
-
- @Override
- public Answer execute(final MigrateWithStorageSendCommand command, final XenServer610Resource xenServer610Resource) {
- final Connection connection = xenServer610Resource.getConnection();
-
- final VirtualMachineTO vmSpec = command.getVirtualMachine();
- final Map<VolumeTO, Object> volumeToSr = command.getVolumeToSr();
- final Map<NicTO, Object> nicToNetwork = command.getNicToNetwork();
- final Map<String, String> token = command.getToken();
- final String vmName = vmSpec.getName();
-
- Task task = null;
- try {
-
- final Map<String, String> other = new HashMap<String, String>();
- other.put("live", "true");
-
- // Create the vdi map which tells what volumes of the vm need to go
- // on which sr on the destination.
- final Map<VDI, SR> vdiMap = new HashMap<VDI, SR>();
- for (final Map.Entry<VolumeTO, Object> entry : volumeToSr.entrySet()) {
- final Object srObj = entry.getValue();
- if (srObj instanceof SR) {
- final SR sr = (SR) srObj;
- final VolumeTO volume = entry.getKey();
- final VDI vdi = xenServer610Resource.getVDIbyUuid(connection, volume.getPath());
- vdiMap.put(vdi, sr);
- } else {
- throw new CloudRuntimeException("The object " + srObj + " passed is not of type SR.");
- }
- }
-
- final Set<VM> vms = VM.getByNameLabel(connection, vmSpec.getName());
- VM vmToMigrate = null;
- if (vms != null) {
- vmToMigrate = vms.iterator().next();
- }
-
- // Create the vif map.
- final Map<VIF, Network> vifMap = new HashMap<VIF, Network>();
- for (final Map.Entry<NicTO, Object> entry : nicToNetwork.entrySet()) {
- Object networkObj = entry.getValue();
- if (networkObj instanceof Network) {
- final Network network = (Network) networkObj;
- NicTO nic = entry.getKey();
- final VIF vif = xenServer610Resource.getVifByMac(connection, vmToMigrate, nic.getMac());
- vifMap.put(vif, network);
- } else {
- throw new CloudRuntimeException("The object " + networkObj + " passed is not of type Network.");
- }
- }
-
- // Check migration with storage is possible.
- task = vmToMigrate.assertCanMigrateAsync(connection, token, true, vdiMap, vifMap, other);
- try {
- // poll every 1 seconds.
- final long timeout = xenServer610Resource.getMigrateWait() * 1000L;
- xenServer610Resource.waitForTask(connection, task, 1000, timeout);
- xenServer610Resource.checkForSuccess(connection, task);
- } catch (final Types.HandleInvalid e) {
- s_logger.error("Error while checking if vm " + vmName + " can be migrated.", e);
- throw new CloudRuntimeException("Error while checking if vm " + vmName + " can be migrated.", e);
- }
-
- // Migrate now.
- task = vmToMigrate.migrateSendAsync(connection, token, true, vdiMap, vifMap, other);
- try {
- // poll every 1 seconds.
- final long timeout = xenServer610Resource.getMigrateWait() * 1000L;
- xenServer610Resource.waitForTask(connection, task, 1000, timeout);
- xenServer610Resource.checkForSuccess(connection, task);
- } catch (final Types.HandleInvalid e) {
- s_logger.error("Error while migrating vm " + vmName, e);
- throw new CloudRuntimeException("Error while migrating vm " + vmName, e);
- }
-
- final Set<VolumeTO> volumeToSet = null;
- return new MigrateWithStorageSendAnswer(command, volumeToSet);
- } catch (final CloudRuntimeException e) {
- s_logger.error("Migration of vm " + vmName + " with storage failed due to " + e.toString(), e);
- return new MigrateWithStorageSendAnswer(command, e);
- } catch (final Exception e) {
- s_logger.error("Migration of vm " + vmName + " with storage failed due to " + e.toString(), e);
- return new MigrateWithStorageSendAnswer(command, e);
- } finally {
- if (task != null) {
- try {
- task.destroy(connection);
- } catch (final Exception e) {
- s_logger.debug("Unable to destroy task " + task.toString() + " on host " + xenServer610Resource.getHost().getUuid() + " due to " + e.toString());
- }
- }
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7ff1a81c/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer620SP1GetGPUStatsCommandWrapper.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer620SP1GetGPUStatsCommandWrapper.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer620SP1GetGPUStatsCommandWrapper.java
deleted file mode 100644
index e177256..0000000
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/XenServer620SP1GetGPUStatsCommandWrapper.java
+++ /dev/null
@@ -1,51 +0,0 @@
-//
-// 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.resource.wrapper;
-
-import java.util.HashMap;
-
-import org.apache.log4j.Logger;
-
-import com.cloud.agent.api.Answer;
-import com.cloud.agent.api.GetGPUStatsAnswer;
-import com.cloud.agent.api.GetGPUStatsCommand;
-import com.cloud.agent.api.VgpuTypesInfo;
-import com.cloud.hypervisor.xenserver.resource.XenServer620SP1Resource;
-import com.cloud.resource.CommandWrapper;
-import com.xensource.xenapi.Connection;
-
-public final class XenServer620SP1GetGPUStatsCommandWrapper extends CommandWrapper<GetGPUStatsCommand, Answer, XenServer620SP1Resource> {
-
- private static final Logger s_logger = Logger.getLogger(XenServer620SP1GetGPUStatsCommandWrapper.class);
-
- @Override
- public Answer execute(final GetGPUStatsCommand command, final XenServer620SP1Resource xenServer620SP1Resource) {
- final Connection conn = xenServer620SP1Resource.getConnection();
- HashMap<String, HashMap<String, VgpuTypesInfo>> groupDetails = new HashMap<String, HashMap<String, VgpuTypesInfo>>();
- try {
- groupDetails = xenServer620SP1Resource.getGPUGroupDetails(conn);
- } catch (final Exception e) {
- final String msg = "Unable to get GPU stats" + e.toString();
- s_logger.warn(msg, e);
- return new GetGPUStatsAnswer(command, false, msg);
- }
- return new GetGPUStatsAnswer(command, groupDetails);
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7ff1a81c/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/xcp/XcpServerNetworkUsageCommandWrapper.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/xcp/XcpServerNetworkUsageCommandWrapper.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/xcp/XcpServerNetworkUsageCommandWrapper.java
new file mode 100644
index 0000000..e034021
--- /dev/null
+++ b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/xcp/XcpServerNetworkUsageCommandWrapper.java
@@ -0,0 +1,54 @@
+//
+// 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.resource.wrapper.xcp;
+
+import org.apache.log4j.Logger;
+
+import com.cloud.agent.api.Answer;
+import com.cloud.agent.api.NetworkUsageAnswer;
+import com.cloud.agent.api.NetworkUsageCommand;
+import com.cloud.hypervisor.xenserver.resource.XcpServerResource;
+import com.cloud.resource.CommandWrapper;
+import com.cloud.resource.ResourceWrapper;
+import com.xensource.xenapi.Connection;
+
+@ResourceWrapper(handles = NetworkUsageCommand.class)
+public final class XcpServerNetworkUsageCommandWrapper extends CommandWrapper<NetworkUsageCommand, Answer, XcpServerResource> {
+
+ private static final Logger s_logger = Logger.getLogger(XcpServerNetworkUsageCommandWrapper.class);
+
+ @Override
+ public Answer execute(final NetworkUsageCommand command, final XcpServerResource xcpServerResource) {
+ try {
+ final Connection conn = xcpServerResource.getConnection();
+ if (command.getOption() != null && command.getOption().equals("create")) {
+ final String result = xcpServerResource.networkUsage(conn, command.getPrivateIP(), "create", null);
+ final NetworkUsageAnswer answer = new NetworkUsageAnswer(command, result, 0L, 0L);
+ return answer;
+ }
+ final long[] stats = xcpServerResource.getNetworkStats(conn, command.getPrivateIP());
+ final NetworkUsageAnswer answer = new NetworkUsageAnswer(command, "", stats[0], stats[1]);
+ return answer;
+ } catch (final Exception ex) {
+ s_logger.warn("Failed to get network usage stats due to ", ex);
+ return new NetworkUsageAnswer(command, ex);
+ }
+ }
+}
\ No newline at end of file