You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ra...@apache.org on 2014/03/14 13:01:41 UTC
[2/3] git commit: updated refs/heads/master to 6a4927f
CLOUDSTACK-6106 Agent side changes for VPC on Hyper-V
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/4523f5d8
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/4523f5d8
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/4523f5d8
Branch: refs/heads/master
Commit: 4523f5d8de64761a507b5a8f1f9b4d451a8be17a
Parents: 1b4325d
Author: Rajesh Battala <ra...@citrix.com>
Authored: Wed Mar 12 07:45:50 2014 +0530
Committer: Rajesh Battala <ra...@citrix.com>
Committed: Fri Mar 14 17:36:43 2014 +0530
----------------------------------------------------------------------
.../HypervResource/HypervResourceController.cs | 14 ++++++++---
.../HypervResource/IWmiCallsV2.cs | 1 +
.../ServerResource/HypervResource/WmiCallsV2.cs | 26 +++++++++++++++++++-
3 files changed, 37 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/4523f5d8/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/HypervResourceController.cs
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/HypervResourceController.cs b/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/HypervResourceController.cs
index 2d44753..40609e4 100644
--- a/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/HypervResourceController.cs
+++ b/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/HypervResourceController.cs
@@ -992,6 +992,7 @@ namespace HypervResource
using (log4net.NDC.Push(Guid.NewGuid().ToString()))
{
logger.Info(CloudStackTypes.PlugNicCommand + cmd.ToString());
+
object ansContent = new
{
result = true,
@@ -1299,9 +1300,16 @@ namespace HypervResource
String vmName = cmd.vmName;
uint vlan = (uint)cmd.vlan;
string macAddress = cmd.macAddress;
- wmiCallsV2.ModifyVmVLan(vmName, vlan, macAddress);
-
- result = true;
+ uint pos = cmd.index;
+ if (macAddress != null)
+ {
+ wmiCallsV2.ModifyVmVLan(vmName, vlan, macAddress);
+ }
+ else if (pos > 1)
+ {
+ wmiCallsV2.ModifyVmVLan(vmName, vlan, pos);
+ }
+ result = true;
object ansContent = new
{
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/4523f5d8/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/IWmiCallsV2.cs
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/IWmiCallsV2.cs b/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/IWmiCallsV2.cs
index 6018896..8c682ad 100644
--- a/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/IWmiCallsV2.cs
+++ b/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/IWmiCallsV2.cs
@@ -70,5 +70,6 @@ namespace HypervResource
void SetState(ComputerSystem vm, ushort requiredState);
Dictionary<String, VmState> GetVmSync(String privateIpAddress);
void ModifyVmVLan(string vmName, uint vlanid, string mac);
+ void ModifyVmVLan(string vmName, uint vlanid, uint pos);
}
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/4523f5d8/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/WmiCallsV2.cs
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/WmiCallsV2.cs b/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/WmiCallsV2.cs
index 73156c5..d5cf7c9 100644
--- a/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/WmiCallsV2.cs
+++ b/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/WmiCallsV2.cs
@@ -229,6 +229,7 @@ namespace HypervResource
string errMsg = vmName;
var diskDrives = vmInfo.disks;
var bootArgs = vmInfo.bootArgs;
+ string defaultvlan = "4094";
// assert
errMsg = vmName + ": missing disk information, array empty or missing, agent expects *at least* one disk for a VM";
@@ -391,6 +392,8 @@ namespace HypervResource
string vlan = null;
string isolationUri = nic.isolationUri;
string broadcastUri = nic.broadcastUri;
+ string nicIp = nic.ip;
+ string nicNetmask = nic.netmask;
if ( (broadcastUri != null ) || (isolationUri != null && isolationUri.StartsWith("vlan://")))
{
if (broadcastUri != null && broadcastUri.StartsWith("storage"))
@@ -415,6 +418,10 @@ namespace HypervResource
throw ex;
}
}
+ if(nicIp.Equals("0.0.0.0") && nicNetmask.Equals("255.255.255.255") ) {
+ // this is the extra nic added to VR.
+ vlan = defaultvlan;
+ }
if (nicCount == 2)
{
@@ -913,7 +920,6 @@ namespace HypervResource
ResourceAllocationSettingData defaultDiskDriveSettings = defaultDiskDriveSettingsObjs.OfType<ResourceAllocationSettingData>().First();
return new ResourceAllocationSettingData((ManagementBaseObject)defaultDiskDriveSettings.LateBoundObject.Clone());
}
-
// Modify the systemvm nic's VLAN id
public void ModifyVmVLan(string vmName, uint vlanid, String mac)
@@ -945,6 +951,24 @@ namespace HypervResource
vlanSettings.LateBoundObject.GetText(TextFormat.CimDtd20)});
}
+ // Modify the systemvm nic's VLAN id
+ public void ModifyVmVLan(string vmName, uint vlanid, uint pos)
+ {
+ ComputerSystem vm = GetComputerSystem(vmName);
+ SyntheticEthernetPortSettingData[] nicSettingsViaVm = GetEthernetPortSettings(vm);
+ // Obtain controller for Hyper-V virtualisation subsystem
+ VirtualSystemManagementService vmMgmtSvc = GetVirtualisationSystemManagementService();
+
+ EthernetPortAllocationSettingData[] ethernetConnections = GetEthernetConnections(vm);
+ EthernetSwitchPortVlanSettingData vlanSettings = GetVlanSettings(ethernetConnections[pos]);
+
+ //Assign configuration to new NIC
+ vlanSettings.LateBoundObject["AccessVlanId"] = vlanid;
+ vlanSettings.LateBoundObject["OperationMode"] = 1;
+ ModifyFeatureVmResources(vmMgmtSvc, vm, new String[] {
+ vlanSettings.LateBoundObject.GetText(TextFormat.CimDtd20)});
+ }
+
public void AttachIso(string displayName, string iso)
{
logger.DebugFormat("Got request to attach iso {0} to vm {1}", iso, displayName);