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/23 17:27:55 UTC

[5/9] git commit: updated refs/heads/master to d785479

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/79d24ae2/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixPrepareForMigrationCommandWrapper.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixPrepareForMigrationCommandWrapper.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixPrepareForMigrationCommandWrapper.java
deleted file mode 100644
index fde2155..0000000
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixPrepareForMigrationCommandWrapper.java
+++ /dev/null
@@ -1,63 +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.PrepareForMigrationAnswer;
-import com.cloud.agent.api.PrepareForMigrationCommand;
-import com.cloud.agent.api.to.NicTO;
-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.xensource.xenapi.Connection;
-
-@ResourceWrapper(handles =  PrepareForMigrationCommand.class)
-public final class CitrixPrepareForMigrationCommandWrapper extends CommandWrapper<PrepareForMigrationCommand, Answer, CitrixResourceBase> {
-
-    private static final Logger s_logger = Logger.getLogger(CitrixPrepareForMigrationCommandWrapper.class);
-
-    @Override
-    public Answer execute(final PrepareForMigrationCommand command, final CitrixResourceBase citrixResourceBase) {
-        final Connection conn = citrixResourceBase.getConnection();
-
-        final VirtualMachineTO vm = command.getVirtualMachine();
-        if (s_logger.isDebugEnabled()) {
-            s_logger.debug("Preparing host for migrating " + vm);
-        }
-
-        final NicTO[] nics = vm.getNics();
-        try {
-            citrixResourceBase.prepareISO(conn, vm.getName());
-
-            for (final NicTO nic : nics) {
-                citrixResourceBase.getNetwork(conn, nic);
-            }
-            s_logger.debug("4. The VM " + vm.getName() + " is in Migrating state");
-
-            return new PrepareForMigrationAnswer(command);
-        } catch (final Exception e) {
-            s_logger.warn("Catch Exception " + e.getClass().getName() + " prepare for migration failed due to " + e.toString(), e);
-            return new PrepareForMigrationAnswer(command, e);
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/79d24ae2/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixPrimaryStorageDownloadCommandWrapper.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixPrimaryStorageDownloadCommandWrapper.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixPrimaryStorageDownloadCommandWrapper.java
deleted file mode 100644
index 22eca93..0000000
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixPrimaryStorageDownloadCommandWrapper.java
+++ /dev/null
@@ -1,85 +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.net.URI;
-import java.util.HashMap;
-import java.util.Set;
-
-import org.apache.log4j.Logger;
-
-import com.cloud.agent.api.Answer;
-import com.cloud.agent.api.storage.PrimaryStorageDownloadAnswer;
-import com.cloud.agent.api.storage.PrimaryStorageDownloadCommand;
-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.SR;
-import com.xensource.xenapi.VDI;
-
-@ResourceWrapper(handles =  PrimaryStorageDownloadCommand.class)
-public final class CitrixPrimaryStorageDownloadCommandWrapper extends CommandWrapper<PrimaryStorageDownloadCommand, Answer, CitrixResourceBase> {
-
-    private static final Logger s_logger = Logger.getLogger(CitrixPrimaryStorageDownloadCommandWrapper.class);
-
-    @Override
-    public Answer execute(final PrimaryStorageDownloadCommand command, final CitrixResourceBase citrixResourceBase) {
-        final String tmplturl = command.getUrl();
-        final String poolName = command.getPoolUuid();
-        final int wait = command.getWait();
-        try {
-            final URI uri = new URI(tmplturl);
-            final String tmplpath = uri.getHost() + ":" + uri.getPath();
-            final Connection conn = citrixResourceBase.getConnection();
-            SR poolsr = null;
-            final Set<SR> srs = SR.getByNameLabel(conn, poolName);
-            if (srs.size() != 1) {
-                final String msg = "There are " + srs.size() + " SRs with same name: " + poolName;
-                s_logger.warn(msg);
-                return new PrimaryStorageDownloadAnswer(msg);
-            } else {
-                poolsr = srs.iterator().next();
-            }
-            final String pUuid = poolsr.getUuid(conn);
-            final boolean isISCSI = citrixResourceBase.IsISCSI(poolsr.getType(conn));
-            final String uuid = citrixResourceBase.copyVhdFromSecondaryStorage(conn, tmplpath, pUuid, wait);
-            final VDI tmpl = citrixResourceBase.getVDIbyUuid(conn, uuid);
-            final VDI snapshotvdi = tmpl.snapshot(conn, new HashMap<String, String>());
-            final String snapshotUuid = snapshotvdi.getUuid(conn);
-            snapshotvdi.setNameLabel(conn, "Template " + command.getName());
-            final String parentuuid = citrixResourceBase.getVhdParent(conn, pUuid, snapshotUuid, isISCSI);
-            final VDI parent = citrixResourceBase.getVDIbyUuid(conn, parentuuid);
-            final Long phySize = parent.getPhysicalUtilisation(conn);
-            tmpl.destroy(conn);
-            poolsr.scan(conn);
-            try {
-                Thread.sleep(5000);
-            } catch (final Exception e) {
-            }
-            return new PrimaryStorageDownloadAnswer(snapshotvdi.getUuid(conn), phySize);
-        } catch (final Exception e) {
-            final String msg = "Catch Exception " + e.getClass().getName() + " on host:" + citrixResourceBase.getHost().getUuid() + " for template: " + tmplturl + " due to "
-                    + e.toString();
-            s_logger.warn(msg, e);
-            return new PrimaryStorageDownloadAnswer(msg);
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/79d24ae2/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixPvlanSetupCommandWrapper.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixPvlanSetupCommandWrapper.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixPvlanSetupCommandWrapper.java
deleted file mode 100644
index 8b7c174..0000000
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixPvlanSetupCommandWrapper.java
+++ /dev/null
@@ -1,94 +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 org.apache.xmlrpc.XmlRpcException;
-
-import com.cloud.agent.api.Answer;
-import com.cloud.agent.api.PvlanSetupCommand;
-import com.cloud.hypervisor.xenserver.resource.CitrixResourceBase;
-import com.cloud.hypervisor.xenserver.resource.XsLocalNetwork;
-import com.cloud.network.Networks.TrafficType;
-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.Types.XenAPIException;
-
-@ResourceWrapper(handles =  PvlanSetupCommand.class)
-public final class CitrixPvlanSetupCommandWrapper extends CommandWrapper<PvlanSetupCommand, Answer, CitrixResourceBase> {
-
-    private static final Logger s_logger = Logger.getLogger(CitrixPvlanSetupCommandWrapper.class);
-
-    @Override
-    public Answer execute(final PvlanSetupCommand command, final CitrixResourceBase citrixResourceBase) {
-        final Connection conn = citrixResourceBase.getConnection();
-
-        final String primaryPvlan = command.getPrimary();
-        final String isolatedPvlan = command.getIsolated();
-        final String op = command.getOp();
-        final String dhcpName = command.getDhcpName();
-        final String dhcpMac = command.getDhcpMac();
-        final String dhcpIp = command.getDhcpIp();
-        final String vmMac = command.getVmMac();
-        final String networkTag = command.getNetworkTag();
-
-        String nwNameLabel = null;
-        try {
-            final XsLocalNetwork nw = citrixResourceBase.getNativeNetworkForTraffic(conn, TrafficType.Guest, networkTag);
-            if (nw == null) {
-                s_logger.error("Network is not configured on the backend for pvlan " + primaryPvlan);
-                throw new CloudRuntimeException("Network for the backend is not configured correctly for pvlan primary: " + primaryPvlan);
-            }
-            nwNameLabel = nw.getNetwork().getNameLabel(conn);
-        } catch (final XenAPIException e) {
-            s_logger.warn("Fail to get network", e);
-            return new Answer(command, false, e.toString());
-        } catch (final XmlRpcException e) {
-            s_logger.warn("Fail to get network", e);
-            return new Answer(command, false, e.toString());
-        }
-
-        String result = null;
-        if (command.getType() == PvlanSetupCommand.Type.DHCP) {
-            result = citrixResourceBase.callHostPlugin(conn, "ovs-pvlan", "setup-pvlan-dhcp", "op", op, "nw-label", nwNameLabel, "primary-pvlan", primaryPvlan, "isolated-pvlan",
-                    isolatedPvlan, "dhcp-name", dhcpName, "dhcp-ip", dhcpIp, "dhcp-mac", dhcpMac);
-
-            if (result == null || result.isEmpty() || !Boolean.parseBoolean(result)) {
-                s_logger.warn("Failed to program pvlan for dhcp server with mac " + dhcpMac);
-                return new Answer(command, false, result);
-            } else {
-                s_logger.info("Programmed pvlan for dhcp server with mac " + dhcpMac);
-            }
-        } else if (command.getType() == PvlanSetupCommand.Type.VM) {
-            result = citrixResourceBase.callHostPlugin(conn, "ovs-pvlan", "setup-pvlan-vm", "op", op, "nw-label", nwNameLabel, "primary-pvlan", primaryPvlan, "isolated-pvlan",
-                    isolatedPvlan, "vm-mac", vmMac);
-
-            if (result == null || result.isEmpty() || !Boolean.parseBoolean(result)) {
-                s_logger.warn("Failed to program pvlan for vm with mac " + vmMac);
-                return new Answer(command, false, result);
-            } else {
-                s_logger.info("Programmed pvlan for vm with mac " + vmMac);
-            }
-        }
-        return new Answer(command, true, result);
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/79d24ae2/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixReadyCommandWrapper.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixReadyCommandWrapper.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixReadyCommandWrapper.java
deleted file mode 100644
index 708ea56..0000000
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixReadyCommandWrapper.java
+++ /dev/null
@@ -1,77 +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.ReadyAnswer;
-import com.cloud.agent.api.ReadyCommand;
-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.Host;
-import com.xensource.xenapi.Types.XenAPIException;
-import com.xensource.xenapi.VM;
-
-@ResourceWrapper(handles =  ReadyCommand.class)
-public final class CitrixReadyCommandWrapper extends CommandWrapper<ReadyCommand, Answer, CitrixResourceBase> {
-
-    private static final Logger s_logger = Logger.getLogger(CitrixReadyCommandWrapper.class);
-
-    @Override
-    public Answer execute(final ReadyCommand command, final CitrixResourceBase citrixResourceBase) {
-        final Connection conn = citrixResourceBase.getConnection();
-        final Long dcId = command.getDataCenterId();
-        // Ignore the result of the callHostPlugin. Even if unmounting the
-        // snapshots dir fails, let Ready command
-        // succeed.
-        citrixResourceBase.umountSnapshotDir(conn, dcId);
-
-        citrixResourceBase.setupLinkLocalNetwork(conn);
-        // try to destroy CD-ROM device for all system VMs on this host
-        try {
-            final Host host = Host.getByUuid(conn, citrixResourceBase.getHost().getUuid());
-            final Set<VM> vms = host.getResidentVMs(conn);
-            for (final VM vm : vms) {
-                citrixResourceBase.destroyPatchVbd(conn, vm.getNameLabel(conn));
-            }
-        } catch (final Exception e) {
-        }
-        try {
-            final boolean result = citrixResourceBase.cleanupHaltedVms(conn);
-            if (!result) {
-                return new ReadyAnswer(command, "Unable to cleanup halted vms");
-            }
-        } catch (final XenAPIException e) {
-            s_logger.warn("Unable to cleanup halted vms", e);
-            return new ReadyAnswer(command, "Unable to cleanup halted vms");
-        } catch (final XmlRpcException e) {
-            s_logger.warn("Unable to cleanup halted vms", e);
-            return new ReadyAnswer(command, "Unable to cleanup halted vms");
-        }
-
-        return new ReadyAnswer(command);
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/79d24ae2/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixRebootCommandWrapper.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixRebootCommandWrapper.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixRebootCommandWrapper.java
deleted file mode 100644
index cc27528..0000000
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixRebootCommandWrapper.java
+++ /dev/null
@@ -1,70 +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 com.cloud.agent.api.Answer;
-import com.cloud.agent.api.RebootAnswer;
-import com.cloud.agent.api.RebootCommand;
-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.Types.XenAPIException;
-import com.xensource.xenapi.VM;
-
-@ResourceWrapper(handles =  RebootCommand.class)
-public final class CitrixRebootCommandWrapper extends CommandWrapper<RebootCommand, Answer, CitrixResourceBase> {
-
-    private static final Logger s_logger = Logger.getLogger(CitrixRebootCommandWrapper.class);
-
-    @Override
-    public Answer execute(final RebootCommand command, final CitrixResourceBase citrixResourceBase) {
-        final Connection conn = citrixResourceBase.getConnection();
-        s_logger.debug("7. The VM " + command.getVmName() + " is in Starting state");
-        try {
-            Set<VM> vms = null;
-            try {
-                vms = VM.getByNameLabel(conn, command.getVmName());
-            } catch (final XenAPIException e0) {
-                s_logger.debug("getByNameLabel failed " + e0.toString());
-                return new RebootAnswer(command, "getByNameLabel failed " + e0.toString(), false);
-            } catch (final Exception e0) {
-                s_logger.debug("getByNameLabel failed " + e0.getMessage());
-                return new RebootAnswer(command, "getByNameLabel failed", false);
-            }
-            for (final VM vm : vms) {
-                try {
-                    citrixResourceBase.rebootVM(conn, vm, vm.getNameLabel(conn));
-                } catch (final Exception e) {
-                    final String msg = e.toString();
-                    s_logger.warn(msg, e);
-                    return new RebootAnswer(command, msg, false);
-                }
-            }
-            return new RebootAnswer(command, "reboot succeeded", true);
-        } finally {
-            s_logger.debug("8. The VM " + command.getVmName() + " is in Running state");
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/79d24ae2/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixRebootRouterCommandWrapper.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixRebootRouterCommandWrapper.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixRebootRouterCommandWrapper.java
deleted file mode 100644
index 182048c..0000000
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixRebootRouterCommandWrapper.java
+++ /dev/null
@@ -1,54 +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 com.cloud.agent.api.Answer;
-import com.cloud.agent.api.RebootCommand;
-import com.cloud.agent.api.RebootRouterCommand;
-import com.cloud.hypervisor.xenserver.resource.CitrixResourceBase;
-import com.cloud.resource.CommandWrapper;
-import com.cloud.resource.ResourceWrapper;
-import com.xensource.xenapi.Connection;
-
-@ResourceWrapper(handles =  RebootRouterCommand.class)
-public final class CitrixRebootRouterCommandWrapper extends CommandWrapper<RebootRouterCommand, Answer, CitrixResourceBase> {
-
-    @Override
-    public Answer execute(final RebootRouterCommand command, final CitrixResourceBase citrixResourceBase) {
-        final Connection conn = citrixResourceBase.getConnection();
-
-        final CitrixRequestWrapper wrapper = CitrixRequestWrapper.getInstance();
-
-        final RebootCommand rebootCommand = new RebootCommand(command.getVmName());
-        final Answer answer = wrapper.execute(rebootCommand, citrixResourceBase);
-
-        if (answer.getResult()) {
-            final String cnct = citrixResourceBase.connect(conn, command.getVmName(), command.getPrivateIpAddress());
-            citrixResourceBase.networkUsage(conn, command.getPrivateIpAddress(), "create", null);
-
-            if (cnct == null) {
-                return answer;
-            } else {
-                return new Answer(command, false, cnct);
-            }
-        }
-        return answer;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/79d24ae2/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
deleted file mode 100644
index 8dabaf2..0000000
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixRequestWrapper.java
+++ /dev/null
@@ -1,124 +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.Hashtable;
-import java.util.Set;
-
-import org.reflections.Reflections;
-
-import com.cloud.agent.api.Answer;
-import com.cloud.agent.api.Command;
-import com.cloud.hypervisor.xenserver.resource.CitrixResourceBase;
-import com.cloud.hypervisor.xenserver.resource.XcpServerResource;
-import com.cloud.hypervisor.xenserver.resource.XenServer56FP1Resource;
-import com.cloud.hypervisor.xenserver.resource.XenServer56Resource;
-import com.cloud.hypervisor.xenserver.resource.XenServer610Resource;
-import com.cloud.hypervisor.xenserver.resource.XenServer620SP1Resource;
-import com.cloud.resource.CommandWrapper;
-import com.cloud.resource.RequestWrapper;
-import com.cloud.resource.ServerResource;
-
-public class CitrixRequestWrapper extends RequestWrapper {
-
-    private static CitrixRequestWrapper instance;
-
-    static {
-        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
-        resources.put(CitrixResourceBase.class, citrixCommands);
-
-        // XenServer56Resource commands
-        resources.put(XenServer56Resource.class, xenServer56Commands);
-
-        // XenServer56FP1Resource commands
-        resources.put(XenServer56FP1Resource.class, xenServer56P1Commands);
-
-        // XenServer620SP1Resource commands
-        resources.put(XenServer620SP1Resource.class, xenServer620SP1Commands);
-
-        // XenServer610Resource commands
-        resources.put(XenServer610Resource.class, xenServer610Commands);
-
-        // XcpServerResource commands
-        resources.put(XcpServerResource.class, xcpServerResourceCommand);
-    }
-
-    public static CitrixRequestWrapper getInstance() {
-        return instance;
-    }
-
-    @SuppressWarnings({"rawtypes" })
-    @Override
-    public Answer execute(final Command command, final ServerResource serverResource) {
-        final Class<? extends ServerResource> resourceClass = serverResource.getClass();
-
-        final Hashtable<Class<? extends Command>, CommandWrapper> resourceCommands = retrieveResource(command, resourceClass);
-
-        CommandWrapper<Command, Answer, ServerResource> commandWrapper = retrieveCommands(command.getClass(), resourceCommands);
-
-        while (commandWrapper == null) {
-            //Could not find the command in the given resource, will traverse the family tree.
-            commandWrapper = retryWhenAllFails(command, resourceClass, resourceCommands);
-        }
-
-        return commandWrapper.execute(command, serverResource);
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/79d24ae2/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
deleted file mode 100644
index 25f350f..0000000
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixResizeVolumeCommandWrapper.java
+++ /dev/null
@@ -1,54 +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.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);
-
-    @Override
-    public Answer execute(final ResizeVolumeCommand command, final CitrixResourceBase citrixResourceBase) {
-        final Connection conn = citrixResourceBase.getConnection();
-        final String volid = command.getPath();
-        final long newSize = command.getNewSize();
-
-        try {
-            final VDI vdi = citrixResourceBase.getVDIbyUuid(conn, volid);
-            vdi.resize(conn, newSize);
-            return new ResizeVolumeAnswer(command, true, "success", newSize);
-        } catch (final Exception e) {
-            s_logger.warn("Unable to resize volume", e);
-            final String error = "failed to resize volume:" + e;
-            return new ResizeVolumeAnswer(command, false, error);
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/79d24ae2/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
deleted file mode 100644
index def4df7..0000000
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixRevertToVMSnapshotCommandWrapper.java
+++ /dev/null
@@ -1,112 +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.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;
-import com.xensource.xenapi.Types;
-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);
-
-    @Override
-    public Answer execute(final RevertToVMSnapshotCommand command, final CitrixResourceBase citrixResourceBase) {
-        final String vmName = command.getVmName();
-        final List<VolumeObjectTO> listVolumeTo = command.getVolumeTOs();
-        final VMSnapshot.Type vmSnapshotType = command.getTarget().getType();
-        final Boolean snapshotMemory = vmSnapshotType == VMSnapshot.Type.DiskAndMemory;
-        final Connection conn = citrixResourceBase.getConnection();
-        PowerState vmState = null;
-        VM vm = null;
-        try {
-
-            final Set<VM> vmSnapshots = VM.getByNameLabel(conn, command.getTarget().getSnapshotName());
-            if (vmSnapshots == null || vmSnapshots.size() == 0) {
-                return new RevertToVMSnapshotAnswer(command, false, "Cannot find vmSnapshot with name: " + command.getTarget().getSnapshotName());
-            }
-
-            final VM vmSnapshot = vmSnapshots.iterator().next();
-
-            // find target VM or creating a work VM
-            try {
-                vm = citrixResourceBase.getVM(conn, vmName);
-            } catch (final Exception e) {
-                vm = citrixResourceBase.createWorkingVM(conn, vmName, command.getGuestOSType(), command.getPlatformEmulator(), listVolumeTo);
-            }
-
-            if (vm == null) {
-                return new RevertToVMSnapshotAnswer(command, false, "Revert to VM Snapshot Failed due to can not find vm: " + vmName);
-            }
-
-            // call plugin to execute revert
-            citrixResourceBase.revertToSnapshot(conn, vmSnapshot, vmName, vm.getUuid(conn), snapshotMemory, citrixResourceBase.getHost().getUuid());
-            vm = citrixResourceBase.getVM(conn, vmName);
-            final Set<VBD> vbds = vm.getVBDs(conn);
-            final Map<String, VDI> vdiMap = new HashMap<String, VDI>();
-            // get vdi:vbdr to a map
-            for (final VBD vbd : vbds) {
-                final VBD.Record vbdr = vbd.getRecord(conn);
-                if (vbdr.type == Types.VbdType.DISK) {
-                    final VDI vdi = vbdr.VDI;
-                    vdiMap.put(vbdr.userdevice, vdi);
-                }
-            }
-
-            if (!snapshotMemory) {
-                vm.destroy(conn);
-                vmState = PowerState.PowerOff;
-            } else {
-                vmState = PowerState.PowerOn;
-            }
-
-            // after revert, VM's volumes path have been changed, need to report to manager
-            for (final VolumeObjectTO volumeTo : listVolumeTo) {
-                final Long deviceId = volumeTo.getDeviceId();
-                final VDI vdi = vdiMap.get(deviceId.toString());
-                volumeTo.setPath(vdi.getUuid(conn));
-            }
-
-            return new RevertToVMSnapshotAnswer(command, listVolumeTo, vmState);
-        } catch (final Exception e) {
-            s_logger.error("revert vm " + vmName + " to snapshot " + command.getTarget().getSnapshotName() + " failed due to " + e.getMessage());
-            return new RevertToVMSnapshotAnswer(command, false, e.getMessage());
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/79d24ae2/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
deleted file mode 100644
index d21bcbd..0000000
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixScaleVmCommandWrapper.java
+++ /dev/null
@@ -1,108 +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.Iterator;
-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.ScaleVmAnswer;
-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;
-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);
-
-    @Override
-    public Answer execute(final ScaleVmCommand command, final CitrixResourceBase citrixResourceBase) {
-        final VirtualMachineTO vmSpec = command.getVirtualMachine();
-        final String vmName = vmSpec.getName();
-        try {
-            final Connection conn = citrixResourceBase.getConnection();
-            final Set<VM> vms = VM.getByNameLabel(conn, vmName);
-            final Host host = Host.getByUuid(conn, citrixResourceBase.getHost().getUuid());
-
-            // If DMC is not enable then don't execute this command.
-            if (!citrixResourceBase.isDmcEnabled(conn, host)) {
-                throw new CloudRuntimeException("Unable to scale the vm: " + vmName + " as DMC - Dynamic memory control is not enabled for the XenServer:"
-                        + citrixResourceBase.getHost().getUuid() + " ,check your license and hypervisor version.");
-            }
-
-            if (vms == null || vms.size() == 0) {
-                s_logger.info("No running VM " + vmName + " exists on XenServer" + citrixResourceBase.getHost().getUuid());
-                return new ScaleVmAnswer(command, false, "VM does not exist");
-            }
-
-            // stop vm which is running on this host or is in halted state
-            final Iterator<VM> iter = vms.iterator();
-            while (iter.hasNext()) {
-                final VM vm = iter.next();
-                final VM.Record vmr = vm.getRecord(conn);
-
-                if (vmr.powerState == VmPowerState.HALTED || vmr.powerState == VmPowerState.RUNNING && !citrixResourceBase.isRefNull(vmr.residentOn)
-                        && !vmr.residentOn.getUuid(conn).equals(citrixResourceBase.getHost().getUuid())) {
-                    iter.remove();
-                }
-            }
-
-            for (final VM vm : vms) {
-                vm.getRecord(conn);
-                try {
-                    citrixResourceBase.scaleVM(conn, vm, vmSpec, host);
-                } catch (final Exception e) {
-                    final String msg = "Catch exception " + e.getClass().getName() + " when scaling VM:" + vmName + " due to " + e.toString();
-                    s_logger.debug(msg);
-                    return new ScaleVmAnswer(command, false, msg);
-                }
-
-            }
-            final String msg = "scaling VM " + vmName + " is successful on host " + host;
-            s_logger.debug(msg);
-            return new ScaleVmAnswer(command, true, msg);
-
-        } catch (final XenAPIException e) {
-            final String msg = "Upgrade Vm " + vmName + " fail due to " + e.toString();
-            s_logger.warn(msg, e);
-            return new ScaleVmAnswer(command, false, msg);
-        } catch (final XmlRpcException e) {
-            final String msg = "Upgrade Vm " + vmName + " fail due to " + e.getMessage();
-            s_logger.warn(msg, e);
-            return new ScaleVmAnswer(command, false, msg);
-        } catch (final Exception e) {
-            final String msg = "Unable to upgrade " + vmName + " due to " + e.getMessage();
-            s_logger.warn(msg, e);
-            return new ScaleVmAnswer(command, false, msg);
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/79d24ae2/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
deleted file mode 100644
index 793a564..0000000
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixSecurityGroupRulesCommandWrapper.java
+++ /dev/null
@@ -1,63 +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.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);
-
-    @Override
-    public Answer execute(final SecurityGroupRulesCmd command, final CitrixResourceBase citrixResourceBase) {
-        final Connection conn = citrixResourceBase.getConnection();
-        if (s_logger.isTraceEnabled()) {
-            s_logger.trace("Sending network rules command to " + citrixResourceBase.getHost().getIp());
-        }
-
-        if (!citrixResourceBase.canBridgeFirewall()) {
-            s_logger.warn("Host " + citrixResourceBase.getHost().getIp() + " cannot do bridge firewalling");
-            return new SecurityGroupRuleAnswer(command, false, "Host " + citrixResourceBase.getHost().getIp() + " cannot do bridge firewalling",
-                    SecurityGroupRuleAnswer.FailureReason.CANNOT_BRIDGE_FIREWALL);
-        }
-
-        final String result = citrixResourceBase.callHostPlugin(conn, "vmops", "network_rules", "vmName", command.getVmName(), "vmIP", command.getGuestIp(), "vmMAC",
-                command.getGuestMac(), "vmID", Long.toString(command.getVmId()), "signature", command.getSignature(), "seqno", Long.toString(command.getSeqNum()), "deflated",
-                "true", "rules", command.compressStringifiedRules(), "secIps", command.getSecIpsString());
-
-        if (result == null || result.isEmpty() || !Boolean.parseBoolean(result)) {
-            s_logger.warn("Failed to program network rules for vm " + command.getVmName());
-            return new SecurityGroupRuleAnswer(command, false, "programming network rules failed");
-        } else {
-            s_logger.info("Programmed network rules for vm " + command.getVmName() + " guestIp=" + command.getGuestIp() + ", ingress numrules="
-                    + command.getIngressRuleSet().length + ", egress numrules=" + command.getEgressRuleSet().length);
-            return new SecurityGroupRuleAnswer(command);
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/79d24ae2/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
deleted file mode 100644
index 3ff0dfe..0000000
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixSetupCommandWrapper.java
+++ /dev/null
@@ -1,202 +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.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.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;
-import com.xensource.xenapi.Connection;
-import com.xensource.xenapi.Host;
-import com.xensource.xenapi.Network;
-import com.xensource.xenapi.PIF;
-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);
-
-    @Override
-    public Answer execute(final SetupCommand command, final CitrixResourceBase citrixResourceBase) {
-        final Connection conn = citrixResourceBase.getConnection();
-        try {
-            final Map<Pool, Pool.Record> poolRecs = Pool.getAllRecords(conn);
-            if (poolRecs.size() != 1) {
-                throw new CloudRuntimeException("There are " + poolRecs.size() + " pool for host :" + citrixResourceBase.getHost().getUuid());
-            }
-            final Host master = poolRecs.values().iterator().next().master;
-            citrixResourceBase.setupServer(conn, master);
-            final Host host = Host.getByUuid(conn, citrixResourceBase.getHost().getUuid());
-            citrixResourceBase.setupServer(conn, host);
-
-            if (!citrixResourceBase.setIptables(conn)) {
-                s_logger.warn("set xenserver Iptable failed");
-                return null;
-            }
-
-            if (citrixResourceBase.isSecurityGroupEnabled()) {
-                final boolean canBridgeFirewall = citrixResourceBase.canBridgeFirewall(conn);
-                citrixResourceBase.setCanBridgeFirewall(canBridgeFirewall);
-                if (!canBridgeFirewall) {
-                    final String msg = "Failed to configure brige firewall";
-                    s_logger.warn(msg);
-                    s_logger.warn("Check host " + citrixResourceBase.getHost().getIp() +" for CSP is installed or not and check network mode for bridge");
-                    return new SetupAnswer(command, msg);
-                }
-
-            }
-
-
-            final boolean r = citrixResourceBase.launchHeartBeat(conn);
-            if (!r) {
-                return null;
-            }
-            citrixResourceBase.cleanupTemplateSR(conn);
-            try {
-                if (command.useMultipath()) {
-                    // the config value is set to true
-                    host.addToOtherConfig(conn, "multipathing", "true");
-                    host.addToOtherConfig(conn, "multipathhandle", "dmp");
-                }
-
-            } catch (final Types.MapDuplicateKey e) {
-                s_logger.debug("multipath is already set");
-            }
-
-            if (command.needSetup() ) {
-                final String result = citrixResourceBase.callHostPlugin(conn, "vmops", "setup_iscsi", "uuid", citrixResourceBase.getHost().getUuid());
-
-                if (!result.contains("> DONE <")) {
-                    s_logger.warn("Unable to setup iscsi: " + result);
-                    return new SetupAnswer(command, result);
-                }
-
-                Pair<PIF, PIF.Record> mgmtPif = null;
-                final Set<PIF> hostPifs = host.getPIFs(conn);
-                for (final PIF pif : hostPifs) {
-                    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(citrixResourceBase.getHost().getUuid())
-                                    .append("; pif=")
-                                    .append(rec.uuid)
-                                    .append("; vlan=")
-                                    .append(rec.VLAN)
-                                    .toString();
-                            s_logger.warn(msg);
-                            return new SetupAnswer(command, msg);
-                        }
-                        if (s_logger.isDebugEnabled()) {
-                            s_logger.debug("Management network is on pif=" + rec.uuid);
-                        }
-                        mgmtPif = new Pair<PIF, PIF.Record>(pif, rec);
-                        break;
-                    }
-                }
-
-                if (mgmtPif == null) {
-                    final String msg = "Unable to find management network for " + citrixResourceBase.getHost().getUuid();
-                    s_logger.warn(msg);
-                    return new SetupAnswer(command, msg);
-                }
-
-                final Map<Network, Network.Record> networks = Network.getAllRecords(conn);
-                if(networks == null) {
-                    final String msg = "Unable to setup as there are no networks in the host: " +  citrixResourceBase.getHost().getUuid();
-                    s_logger.warn(msg);
-                    return new SetupAnswer(command, msg);
-                }
-                for (final Network.Record network : networks.values()) {
-                    if (network.nameLabel.equals("cloud-private")) {
-                        for (final PIF pif : network.PIFs) {
-                            final PIF.Record pr = pif.getRecord(conn);
-                            if (citrixResourceBase.getHost().getUuid().equals(pr.host.getUuid(conn))) {
-                                if (s_logger.isDebugEnabled()) {
-                                    s_logger.debug("Found a network called cloud-private. host=" + citrixResourceBase.getHost().getUuid() + ";  Network=" + network.uuid + "; pif=" + pr.uuid);
-                                }
-                                if (pr.VLAN != null && pr.VLAN != -1) {
-                                    final String msg =
-                                            new StringBuilder("Unsupported configuration.  Network cloud-private is on a VLAN.  Network=").append(network.uuid)
-                                            .append(" ; pif=")
-                                            .append(pr.uuid)
-                                            .toString();
-                                    s_logger.warn(msg);
-                                    return new SetupAnswer(command, msg);
-                                }
-                                if (!pr.management && pr.bondMasterOf != null && pr.bondMasterOf.size() > 0) {
-                                    if (pr.bondMasterOf.size() > 1) {
-                                        final String msg =
-                                                new StringBuilder("Unsupported configuration.  Network cloud-private has more than one bond.  Network=").append(network.uuid)
-                                                .append("; pif=")
-                                                .append(pr.uuid)
-                                                .toString();
-                                        s_logger.warn(msg);
-                                        return new SetupAnswer(command, msg);
-                                    }
-                                    final Bond bond = pr.bondMasterOf.iterator().next();
-                                    final Set<PIF> slaves = bond.getSlaves(conn);
-                                    for (final PIF slave : slaves) {
-                                        final PIF.Record spr = slave.getRecord(conn);
-                                        if (spr.management) {
-                                            if (!citrixResourceBase.transferManagementNetwork(conn, host, slave, spr, pif)) {
-                                                final String msg =
-                                                        new StringBuilder("Unable to transfer management network.  slave=" + spr.uuid + "; master=" + pr.uuid + "; host=" +
-                                                                citrixResourceBase.getHost().getUuid()).toString();
-                                                s_logger.warn(msg);
-                                                return new SetupAnswer(command, msg);
-                                            }
-                                            break;
-                                        }
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-            return new SetupAnswer(command, false);
-
-        } catch (final XmlRpcException e) {
-            s_logger.warn("Unable to setup", e);
-            return new SetupAnswer(command, e.getMessage());
-        } catch (final XenAPIException e) {
-            s_logger.warn("Unable to setup", e);
-            return new SetupAnswer(command, e.getMessage());
-        } catch (final Exception e) {
-            s_logger.warn("Unable to setup", e);
-            return new SetupAnswer(command, e.getMessage());
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/79d24ae2/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
deleted file mode 100644
index 27f8474..0000000
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixStartCommandWrapper.java
+++ /dev/null
@@ -1,212 +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.log4j.Logger;
-
-import com.cloud.agent.api.Answer;
-import com.cloud.agent.api.OvsSetTagAndFlowAnswer;
-import com.cloud.agent.api.OvsSetTagAndFlowCommand;
-import com.cloud.agent.api.StartAnswer;
-import com.cloud.agent.api.StartCommand;
-import com.cloud.agent.api.to.DiskTO;
-import com.cloud.agent.api.to.GPUDeviceTO;
-import com.cloud.agent.api.to.NicTO;
-import com.cloud.agent.api.to.VirtualMachineTO;
-import com.cloud.hypervisor.xenserver.resource.CitrixResourceBase;
-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;
-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);
-
-    @Override
-    public Answer execute(final StartCommand command, final CitrixResourceBase citrixResourceBase) {
-        final Connection conn = citrixResourceBase.getConnection();
-        final VirtualMachineTO vmSpec = command.getVirtualMachine();
-        final String vmName = vmSpec.getName();
-        VmPowerState state = VmPowerState.HALTED;
-        VM vm = null;
-        // if a VDI is created, record its UUID to send back to the CS MS
-        final Map<String, String> iqnToPath = new HashMap<String, String>();
-        try {
-            final Set<VM> vms = VM.getByNameLabel(conn, vmName);
-            if (vms != null) {
-                for (final VM v : vms) {
-                    final VM.Record vRec = v.getRecord(conn);
-                    if (vRec.powerState == VmPowerState.HALTED) {
-                        v.destroy(conn);
-                    } else if (vRec.powerState == VmPowerState.RUNNING) {
-                        final String host = vRec.residentOn.getUuid(conn);
-                        final String msg = "VM " + vmName + " is runing on host " + host;
-                        s_logger.debug(msg);
-                        return new StartAnswer(command, msg, host);
-                    } else {
-                        final String msg = "There is already a VM having the same name " + vmName + " vm record " + vRec.toString();
-                        s_logger.warn(msg);
-                        return new StartAnswer(command, msg);
-                    }
-                }
-            }
-            s_logger.debug("1. The VM " + vmName + " is in Starting state.");
-
-            final Host host = Host.getByUuid(conn, citrixResourceBase.getHost().getUuid());
-            vm = citrixResourceBase.createVmFromTemplate(conn, vmSpec, host);
-
-            final GPUDeviceTO gpuDevice = vmSpec.getGpuDevice();
-            if (gpuDevice != null) {
-                s_logger.debug("Creating VGPU for of VGPU type: " + gpuDevice.getVgpuType() + " in GPU group " + gpuDevice.getGpuGroup() + " for VM " + vmName);
-                citrixResourceBase.createVGPU(conn, command, vm, gpuDevice);
-            }
-
-            for (final DiskTO disk : vmSpec.getDisks()) {
-                final VDI newVdi = citrixResourceBase.prepareManagedDisk(conn, disk, vmName);
-
-                if (newVdi != null) {
-                    final String path = newVdi.getUuid(conn);
-
-                    iqnToPath.put(disk.getDetails().get(DiskTO.IQN), path);
-                }
-
-                citrixResourceBase.createVbd(conn, disk, vmName, vm, vmSpec.getBootloader(), newVdi);
-            }
-
-            if (vmSpec.getType() != VirtualMachine.Type.User) {
-                citrixResourceBase.createPatchVbd(conn, vmName, vm);
-            }
-
-            for (final NicTO nic : vmSpec.getNics()) {
-                citrixResourceBase.createVif(conn, vmName, vm, vmSpec, nic);
-            }
-
-            citrixResourceBase.startVM(conn, host, vm, vmName);
-
-            if (citrixResourceBase.isOvs()) {
-                // TODO(Salvatore-orlando): This code should go
-                for (final NicTO nic : vmSpec.getNics()) {
-                    if (nic.getBroadcastType() == Networks.BroadcastDomainType.Vswitch) {
-                        final HashMap<String, String> args = citrixResourceBase.parseDefaultOvsRuleComamnd(BroadcastDomainType.getValue(nic.getBroadcastUri()));
-                        final OvsSetTagAndFlowCommand flowCmd = new OvsSetTagAndFlowCommand(args.get("vmName"), args.get("tag"), args.get("vlans"), args.get("seqno"),
-                                Long.parseLong(args.get("vmId")));
-
-                        final CitrixRequestWrapper citrixRequestWrapper = CitrixRequestWrapper.getInstance();
-
-                        final OvsSetTagAndFlowAnswer r = (OvsSetTagAndFlowAnswer) citrixRequestWrapper.execute(flowCmd, citrixResourceBase);
-
-                        if (!r.getResult()) {
-                            s_logger.warn("Failed to set flow for VM " + r.getVmId());
-                        } else {
-                            s_logger.info("Success to set flow for VM " + r.getVmId());
-                        }
-                    }
-                }
-            }
-
-            if (citrixResourceBase.canBridgeFirewall()) {
-                String result = null;
-                if (vmSpec.getType() != VirtualMachine.Type.User) {
-                    final NicTO[] nics = vmSpec.getNics();
-                    boolean secGrpEnabled = false;
-                    for (final NicTO nic : nics) {
-                        if (nic.isSecurityGroupEnabled() || nic.getIsolationUri() != null && nic.getIsolationUri().getScheme().equalsIgnoreCase(IsolationType.Ec2.toString())) {
-                            secGrpEnabled = true;
-                            break;
-                        }
-                    }
-                    if (secGrpEnabled) {
-                        result = citrixResourceBase.callHostPlugin(conn, "vmops", "default_network_rules_systemvm", "vmName", vmName);
-                        if (result == null || result.isEmpty() || !Boolean.parseBoolean(result)) {
-                            s_logger.warn("Failed to program default network rules for " + vmName);
-                        } else {
-                            s_logger.info("Programmed default network rules for " + vmName);
-                        }
-                    }
-
-                } else {
-                    // For user vm, program the rules for each nic if the
-                    // isolation uri scheme is ec2
-                    final NicTO[] nics = vmSpec.getNics();
-                    for (final NicTO nic : nics) {
-                        if (nic.isSecurityGroupEnabled() || nic.getIsolationUri() != null && nic.getIsolationUri().getScheme().equalsIgnoreCase(IsolationType.Ec2.toString())) {
-                            final List<String> nicSecIps = nic.getNicSecIps();
-                            String secIpsStr;
-                            final StringBuilder sb = new StringBuilder();
-                            if (nicSecIps != null) {
-                                for (final String ip : nicSecIps) {
-                                    sb.append(ip).append(":");
-                                }
-                                secIpsStr = sb.toString();
-                            } else {
-                                secIpsStr = "0:";
-                            }
-                            result = citrixResourceBase.callHostPlugin(conn, "vmops", "default_network_rules", "vmName", vmName, "vmIP", nic.getIp(), "vmMAC", nic.getMac(),
-                                    "vmID", Long.toString(vmSpec.getId()), "secIps", secIpsStr);
-
-                            if (result == null || result.isEmpty() || !Boolean.parseBoolean(result)) {
-                                s_logger.warn("Failed to program default network rules for " + vmName + " on nic with ip:" + nic.getIp() + " mac:" + nic.getMac());
-                            } else {
-                                s_logger.info("Programmed default network rules for " + vmName + " on nic with ip:" + nic.getIp() + " mac:" + nic.getMac());
-                            }
-                        }
-                    }
-                }
-            }
-
-            state = VmPowerState.RUNNING;
-
-            final StartAnswer startAnswer = new StartAnswer(command);
-
-            startAnswer.setIqnToPath(iqnToPath);
-
-            return startAnswer;
-        } catch (final Exception e) {
-            s_logger.warn("Catch Exception: " + e.getClass().toString() + " due to " + e.toString(), e);
-            final String msg = citrixResourceBase.handleVmStartFailure(conn, vmName, vm, "", e);
-
-            final StartAnswer startAnswer = new StartAnswer(command, msg);
-
-            startAnswer.setIqnToPath(iqnToPath);
-
-            return startAnswer;
-        } finally {
-            if (state != VmPowerState.HALTED) {
-                s_logger.debug("2. The VM " + vmName + " is in " + state + " state.");
-            } else {
-                s_logger.debug("The VM is in stopped state, detected problem during startup : " + vmName);
-            }
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/79d24ae2/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
deleted file mode 100644
index 8310cd8..0000000
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixStopCommandWrapper.java
+++ /dev/null
@@ -1,175 +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.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.log4j.Logger;
-
-import com.cloud.agent.api.Answer;
-import com.cloud.agent.api.StopAnswer;
-import com.cloud.agent.api.StopCommand;
-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;
-import com.xensource.xenapi.SR;
-import com.xensource.xenapi.Types.VmPowerState;
-import com.xensource.xenapi.Types.XenAPIException;
-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);
-
-    @Override
-    public Answer execute(final StopCommand command, final CitrixResourceBase citrixResourceBase) {
-        final String vmName = command.getVmName();
-        String platformstring = null;
-        try {
-            final Connection conn = citrixResourceBase.getConnection();
-            final Set<VM> vms = VM.getByNameLabel(conn, vmName);
-            // stop vm which is running on this host or is in halted state
-            final Iterator<VM> iter = vms.iterator();
-            while (iter.hasNext()) {
-                final VM vm = iter.next();
-                final VM.Record vmr = vm.getRecord(conn);
-                if (vmr.powerState != VmPowerState.RUNNING) {
-                    continue;
-                }
-                if (citrixResourceBase.isRefNull(vmr.residentOn)) {
-                    continue;
-                }
-                if (vmr.residentOn.getUuid(conn).equals(citrixResourceBase.getHost().getUuid())) {
-                    continue;
-                }
-                iter.remove();
-            }
-
-            if (vms.size() == 0) {
-                return new StopAnswer(command, "VM does not exist", true);
-            }
-            for (final VM vm : vms) {
-                final VM.Record vmr = vm.getRecord(conn);
-                platformstring = StringUtils.mapToString(vmr.platform);
-                if (vmr.isControlDomain) {
-                    final String msg = "Tring to Shutdown control domain";
-                    s_logger.warn(msg);
-                    return new StopAnswer(command, msg, false);
-                }
-
-                if (vmr.powerState == VmPowerState.RUNNING && !citrixResourceBase.isRefNull(vmr.residentOn) && !vmr.residentOn.getUuid(conn).equals(citrixResourceBase.getHost().getUuid())) {
-                    final String msg = "Stop Vm " + vmName + " failed due to this vm is not running on this host: " + citrixResourceBase.getHost().getUuid() + " but host:" + vmr.residentOn.getUuid(conn);
-                    s_logger.warn(msg);
-                    return new StopAnswer(command, msg, platformstring, false);
-                }
-
-                if (command.checkBeforeCleanup() && vmr.powerState == VmPowerState.RUNNING) {
-                    final String msg = "Vm " + vmName + " is running on host and checkBeforeCleanup flag is set, so bailing out";
-                    s_logger.debug(msg);
-                    return new StopAnswer(command, msg, false);
-                }
-
-                s_logger.debug("9. The VM " + vmName + " is in Stopping state");
-
-                try {
-                    if (vmr.powerState == VmPowerState.RUNNING) {
-                        /* when stop a vm, set affinity to current xenserver */
-                        vm.setAffinity(conn, vm.getResidentOn(conn));
-
-                        if (citrixResourceBase.canBridgeFirewall()) {
-                            final String result = citrixResourceBase.callHostPlugin(conn, "vmops", "destroy_network_rules_for_vm", "vmName", command.getVmName());
-                            if (result == null || result.isEmpty() || !Boolean.parseBoolean(result)) {
-                                s_logger.warn("Failed to remove  network rules for vm " + command.getVmName());
-                            } else {
-                                s_logger.info("Removed  network rules for vm " + command.getVmName());
-                            }
-                        }
-                        citrixResourceBase.shutdownVM(conn, vm, vmName);
-                    }
-                } catch (final Exception e) {
-                    final String msg = "Catch exception " + e.getClass().getName() + " when stop VM:" + command.getVmName() + " due to " + e.toString();
-                    s_logger.debug(msg);
-                    return new StopAnswer(command, msg, platformstring, false);
-                } finally {
-
-                    try {
-                        if (vm.getPowerState(conn) == VmPowerState.HALTED) {
-                            Set<VGPU> vGPUs = null;
-                            // Get updated GPU details
-                            try {
-                                vGPUs = vm.getVGPUs(conn);
-                            } catch (final XenAPIException e2) {
-                                s_logger.debug("VM " + vmName + " does not have GPU support.");
-                            }
-                            if (vGPUs != null && !vGPUs.isEmpty()) {
-                                final HashMap<String, HashMap<String, VgpuTypesInfo>> groupDetails = citrixResourceBase.getGPUGroupDetails(conn);
-                                command.setGpuDevice(new GPUDeviceTO(null, null, groupDetails));
-                            }
-
-                            final Set<VIF> vifs = vm.getVIFs(conn);
-                            final List<Network> networks = new ArrayList<Network>();
-                            for (final VIF vif : vifs) {
-                                networks.add(vif.getNetwork(conn));
-                            }
-                            vm.destroy(conn);
-                            final SR sr = citrixResourceBase.getISOSRbyVmName(conn, command.getVmName());
-                            citrixResourceBase.removeSR(conn, sr);
-                            // Disable any VLAN networks that aren't used
-                            // anymore
-                            for (final Network network : networks) {
-                                try {
-                                    if (network.getNameLabel(conn).startsWith("VLAN")) {
-                                        citrixResourceBase.disableVlanNetwork(conn, network);
-                                    }
-                                } catch (final Exception e) {
-                                    // network might be destroyed by other host
-                                }
-                            }
-                            return new StopAnswer(command, "Stop VM " + vmName + " Succeed", platformstring, true);
-                        }
-                    } catch (final Exception e) {
-                        final String msg = "VM destroy failed in Stop " + vmName + " Command due to " + e.getMessage();
-                        s_logger.warn(msg, e);
-                    } finally {
-                        s_logger.debug("10. The VM " + vmName + " is in Stopped state");
-                    }
-                }
-            }
-
-        } catch (final Exception e) {
-            final String msg = "Stop Vm " + vmName + " fail due to " + e.toString();
-            s_logger.warn(msg, e);
-            return new StopAnswer(command, msg, platformstring, false);
-        }
-        return new StopAnswer(command, "Stop VM failed", platformstring, false);
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/79d24ae2/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixStorageSubSystemCommandWrapper.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixStorageSubSystemCommandWrapper.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixStorageSubSystemCommandWrapper.java
deleted file mode 100644
index c14818e..0000000
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixStorageSubSystemCommandWrapper.java
+++ /dev/null
@@ -1,38 +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.cloudstack.storage.command.StorageSubSystemCommand;
-
-import com.cloud.agent.api.Answer;
-import com.cloud.hypervisor.xenserver.resource.CitrixResourceBase;
-import com.cloud.resource.CommandWrapper;
-import com.cloud.resource.ResourceWrapper;
-import com.cloud.storage.resource.StorageSubsystemCommandHandler;
-
-@ResourceWrapper(handles =  StorageSubSystemCommand.class)
-public final class CitrixStorageSubSystemCommandWrapper extends CommandWrapper<StorageSubSystemCommand, Answer, CitrixResourceBase> {
-
-    @Override
-    public Answer execute(final StorageSubSystemCommand command, final CitrixResourceBase citrixResourceBase) {
-        final StorageSubsystemCommandHandler handler = citrixResourceBase.getStorageHandler();
-        return handler.handleStorageCommands(command);
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/79d24ae2/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
deleted file mode 100644
index 639cfb0..0000000
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/CitrixUnPlugNicCommandWrapper.java
+++ /dev/null
@@ -1,74 +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 com.cloud.agent.api.Answer;
-import com.cloud.agent.api.UnPlugNicAnswer;
-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);
-
-    @Override
-    public Answer execute(final UnPlugNicCommand command, final CitrixResourceBase citrixResourceBase) {
-        final Connection conn = citrixResourceBase.getConnection();
-        final String vmName = command.getVmName();
-        try {
-            final Set<VM> vms = VM.getByNameLabel(conn, vmName);
-            if (vms == null || vms.isEmpty()) {
-                return new UnPlugNicAnswer(command, false, "Can not find VM " + vmName);
-            }
-            final VM vm = vms.iterator().next();
-            final NicTO nic = command.getNic();
-            final String mac = nic.getMac();
-            final VIF vif = citrixResourceBase.getVifByMac(conn, vm, mac);
-            if (vif != null) {
-                vif.unplug(conn);
-                final Network network = vif.getNetwork(conn);
-                vif.destroy(conn);
-                try {
-                    if (network.getNameLabel(conn).startsWith("VLAN")) {
-                        citrixResourceBase.disableVlanNetwork(conn, network);
-                    }
-                } catch (final Exception e) {
-                }
-            }
-            return new UnPlugNicAnswer(command, true, "success");
-        } catch (final Exception e) {
-            final String msg = " UnPlug Nic failed due to " + e.toString();
-            s_logger.warn(msg, e);
-            return new UnPlugNicAnswer(command, false, msg);
-        }
-    }
-}
\ No newline at end of file