You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by al...@apache.org on 2012/06/16 00:38:03 UTC

[39/51] [abbrv] git commit: VPC : implement SetupGuestNetworkCommand

VPC : implement SetupGuestNetworkCommand


Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/f5056d48
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/f5056d48
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/f5056d48

Branch: refs/heads/vpc
Commit: f5056d489861d35760c00505a4da56861e96f6e7
Parents: 8c1700a
Author: anthony <an...@cloud.com>
Authored: Tue Jun 5 18:49:00 2012 -0700
Committer: Alena Prokharchyk <al...@citrix.com>
Committed: Fri Jun 15 14:23:00 2012 -0700

----------------------------------------------------------------------
 .../cloud/agent/api/SetupGuestNetworkCommand.java  |    4 ++
 .../xen/resource/CitrixResourceBase.java           |   43 ++++++++++++++-
 wscript                                            |    2 +-
 3 files changed, 46 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/f5056d48/api/src/com/cloud/agent/api/SetupGuestNetworkCommand.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/agent/api/SetupGuestNetworkCommand.java b/api/src/com/cloud/agent/api/SetupGuestNetworkCommand.java
index c2ca11b..e36ca28 100644
--- a/api/src/com/cloud/agent/api/SetupGuestNetworkCommand.java
+++ b/api/src/com/cloud/agent/api/SetupGuestNetworkCommand.java
@@ -28,6 +28,10 @@ public class SetupGuestNetworkCommand extends NetworkElementCommand{
     boolean add = true;
     NicTO nic;
     
+    public NicTO getNic() {
+        return nic;
+    }
+
     @Override
     public boolean executeInSequence() {
         return true;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/f5056d48/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
----------------------------------------------------------------------
diff --git a/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java b/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
index 89b197d..30641c0 100644
--- a/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
+++ b/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
@@ -7030,8 +7030,47 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
      * @return
      */
     private SetupGuestNetworkAnswer execute(SetupGuestNetworkCommand cmd) {
-        // TODO Auto-generated method stub
-        return null;
+        Connection conn = getConnection();
+        NicTO nic = cmd.getNic();
+        String domrIP = cmd.getAccessDetail(NetworkElementCommand.ROUTER_IP);
+        String domrGIP = cmd.getAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP);
+        String domrName = cmd.getAccessDetail(NetworkElementCommand.ROUTER_NAME);
+        try {
+            Set<VM> vms = VM.getByNameLabel(conn, domrName);
+            if ( vms == null || vms.isEmpty() ) {
+                return new SetupGuestNetworkAnswer(cmd, false, "Can not find VM " + domrName);
+            }
+            VM vm = vms.iterator().next();
+            String mac = nic.getMac();
+            VIF domrVif = null;
+            for ( VIF vif : vm.getVIFs(conn)) {
+                String lmac = vif.getMAC(conn);
+                if ( lmac.equals(mac) ) {
+                    domrVif = vif;
+                    break;
+                }
+            }
+            if ( domrVif == null ) {
+                return new SetupGuestNetworkAnswer(cmd, false, "Can not find vif with mac " + mac + " for VM " + domrName);
+            }
+
+            String args = "guestnw.sh " + domrIP + " -C";
+            String dev = "eth" + domrVif.getDevice(conn);
+            args += " -d " + dev;
+            args += " -i " + domrGIP;
+            args += " -g " + nic.getGateway();
+            args += " -m " + Long.toString(NetUtils.getCidrSize(nic.getNetmask()));
+            args += " -s " + nic.getDns1();
+            String result = callHostPlugin(conn, "vmops", "routerProxy", "args", args);
+            if (result == null || result.isEmpty()) {
+                return new SetupGuestNetworkAnswer(cmd, false, "creating guest network failed due to " + ((result == null)? "null":result));
+            }
+            return new SetupGuestNetworkAnswer(cmd, true, "success");
+        } catch (Exception e) {
+            String msg = " UnPlug Nic failed due to " + e.toString();
+            s_logger.warn(msg, e);
+            return new SetupGuestNetworkAnswer(cmd, false, msg);
+        }
     }
 
 

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/f5056d48/wscript
----------------------------------------------------------------------
diff --git a/wscript b/wscript
index 5708656..1d33861 100644
--- a/wscript
+++ b/wscript
@@ -4,7 +4,7 @@
 # the following two variables are used by the target "waf dist"
 # if you change 'em here, you need to change it also in cloud.spec, add a %changelog entry there, and add an entry in debian/changelog
 
-VERSION = '3.0.3.2012-06-06T00:22:14Z'
+VERSION = '3.0.3.2012-06-06T01:46:43Z'
 APPNAME = 'cloud'
 
 import shutil,os