You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by bf...@apache.org on 2013/11/08 19:09:29 UTC

[73/76] [abbrv] git commit: updated refs/heads/ui-restyle to 9dd6ff6

Enabled the traffic lable support the hyperv hypervisor type. Modified the physical_network_traffic_types table to introduce hyperv_network lable column.
Modified associated VO's and impls classes. Modified the List/Update/Add TrafficType command api's and response classes.
Fixed the Unit tests


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

Branch: refs/heads/ui-restyle
Commit: 19e9849d862cba607f4190ccb8d0f3d6a37dc5ae
Parents: 4674ae4
Author: Rajesh Battala <ra...@citrix.com>
Authored: Fri Nov 8 19:49:10 2013 +0530
Committer: Rajesh Battala <ra...@citrix.com>
Committed: Fri Nov 8 20:21:18 2013 +0530

----------------------------------------------------------------------
 api/src/com/cloud/network/NetworkService.java        |  4 ++--
 .../cloud/network/PhysicalNetworkTrafficType.java    |  2 ++
 api/src/org/apache/cloudstack/api/ApiConstants.java  |  1 +
 .../api/command/admin/usage/AddTrafficTypeCmd.java   |  9 ++++++++-
 .../command/admin/usage/UpdateTrafficTypeCmd.java    |  9 ++++++++-
 .../cloudstack/api/response/TrafficTypeResponse.java | 10 ++++++++++
 .../subsystem/api/storage/DataStoreProvider.java     |  2 +-
 .../dao/PhysicalNetworkTrafficTypeDaoImpl.java       | 13 ++++++++++++-
 .../network/dao/PhysicalNetworkTrafficTypeVO.java    | 15 ++++++++++++++-
 .../contrail/management/ManagementServerMock.java    |  6 +++---
 server/src/com/cloud/api/ApiResponseHelper.java      |  1 +
 server/src/com/cloud/configuration/Config.java       |  5 +++++
 .../configuration/ConfigurationManagerImpl.java      |  2 +-
 server/src/com/cloud/network/NetworkModelImpl.java   | 13 +++++++++++++
 server/src/com/cloud/network/NetworkServiceImpl.java | 13 ++++++++++---
 .../test/com/cloud/vpc/MockNetworkManagerImpl.java   |  4 ++--
 setup/db/db/schema-421to430.sql                      |  1 +
 17 files changed, 94 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/19e9849d/api/src/com/cloud/network/NetworkService.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/network/NetworkService.java b/api/src/com/cloud/network/NetworkService.java
index 8f81697..b91a63d 100755
--- a/api/src/com/cloud/network/NetworkService.java
+++ b/api/src/com/cloud/network/NetworkService.java
@@ -116,11 +116,11 @@ public interface NetworkService {
     long findPhysicalNetworkId(long zoneId, String tag, TrafficType trafficType);
 
     PhysicalNetworkTrafficType addTrafficTypeToPhysicalNetwork(Long physicalNetworkId, String trafficType,
-            String xenLabel, String kvmLabel, String vmwareLabel, String simulatorLabel, String vlan);
+            String xenLabel, String kvmLabel, String vmwareLabel, String simulatorLabel, String vlan, String hypervLabel);
 
     PhysicalNetworkTrafficType getPhysicalNetworkTrafficType(Long id);
 
-    PhysicalNetworkTrafficType updatePhysicalNetworkTrafficType(Long id, String xenLabel, String kvmLabel, String vmwareLabel);
+    PhysicalNetworkTrafficType updatePhysicalNetworkTrafficType(Long id, String xenLabel, String kvmLabel, String vmwareLabel, String hypervLabel);
 
     boolean deletePhysicalNetworkTrafficType(Long id);
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/19e9849d/api/src/com/cloud/network/PhysicalNetworkTrafficType.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/network/PhysicalNetworkTrafficType.java b/api/src/com/cloud/network/PhysicalNetworkTrafficType.java
index a385b53..ad3b93d 100644
--- a/api/src/com/cloud/network/PhysicalNetworkTrafficType.java
+++ b/api/src/com/cloud/network/PhysicalNetworkTrafficType.java
@@ -37,4 +37,6 @@ public interface PhysicalNetworkTrafficType extends InternalIdentity, Identity {
     String getVmwareNetworkLabel();
 
     String getSimulatorNetworkLabel();
+    
+    String getHypervNetworkLabel();
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/19e9849d/api/src/org/apache/cloudstack/api/ApiConstants.java
----------------------------------------------------------------------
diff --git a/api/src/org/apache/cloudstack/api/ApiConstants.java b/api/src/org/apache/cloudstack/api/ApiConstants.java
index ae6be63..82b2af6 100755
--- a/api/src/org/apache/cloudstack/api/ApiConstants.java
+++ b/api/src/org/apache/cloudstack/api/ApiConstants.java
@@ -355,6 +355,7 @@ public class ApiConstants {
     public static final String XEN_NETWORK_LABEL = "xennetworklabel";
     public static final String KVM_NETWORK_LABEL = "kvmnetworklabel";
     public static final String VMWARE_NETWORK_LABEL = "vmwarenetworklabel";
+    public static final String HYPERV_NETWORK_LABEL = "hypervnetworklabel";
     public static final String NETWORK_SERVICE_PROVIDER_ID = "nspid";
     public static final String SERVICE_LIST = "servicelist";
     public static final String CAN_ENABLE_INDIVIDUAL_SERVICE = "canenableindividualservice";

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/19e9849d/api/src/org/apache/cloudstack/api/command/admin/usage/AddTrafficTypeCmd.java
----------------------------------------------------------------------
diff --git a/api/src/org/apache/cloudstack/api/command/admin/usage/AddTrafficTypeCmd.java b/api/src/org/apache/cloudstack/api/command/admin/usage/AddTrafficTypeCmd.java
index 3957e69..f6e4319 100644
--- a/api/src/org/apache/cloudstack/api/command/admin/usage/AddTrafficTypeCmd.java
+++ b/api/src/org/apache/cloudstack/api/command/admin/usage/AddTrafficTypeCmd.java
@@ -60,6 +60,9 @@ public class AddTrafficTypeCmd extends BaseAsyncCreateCmd {
     @Parameter(name=ApiConstants.VMWARE_NETWORK_LABEL, type=CommandType.STRING, description="The network name label of the physical device dedicated to this traffic on a VMware host")
     private String vmwareLabel;
 
+    @Parameter(name=ApiConstants.HYPERV_NETWORK_LABEL, type=CommandType.STRING, description="The network name label of the physical device dedicated to this traffic on a Hyperv host")
+    private String hypervLabel;
+
     @Parameter(name=ApiConstants.VLAN, type=CommandType.STRING, description="The VLAN id to be used for Management traffic by VMware host")
     private String vlan;
 
@@ -88,6 +91,10 @@ public class AddTrafficTypeCmd extends BaseAsyncCreateCmd {
         return vmwareLabel;
     }
 
+    public String getHypervLabel() {
+        return hypervLabel;
+    }
+
     public String getSimulatorLabel() {
         //simulators will have no labels
         return null;
@@ -130,7 +137,7 @@ public class AddTrafficTypeCmd extends BaseAsyncCreateCmd {
 
     @Override
     public void create() throws ResourceAllocationException {
-        PhysicalNetworkTrafficType result = _networkService.addTrafficTypeToPhysicalNetwork(getPhysicalNetworkId(), getTrafficType(), getXenLabel(), getKvmLabel(), getVmwareLabel(), getSimulatorLabel(), getVlan());
+        PhysicalNetworkTrafficType result = _networkService.addTrafficTypeToPhysicalNetwork(getPhysicalNetworkId(), getTrafficType(), getXenLabel(), getKvmLabel(), getVmwareLabel(), getSimulatorLabel(), getVlan(), getHypervLabel());
         if (result != null) {
             setEntityId(result.getId());
             setEntityUuid(result.getUuid());

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/19e9849d/api/src/org/apache/cloudstack/api/command/admin/usage/UpdateTrafficTypeCmd.java
----------------------------------------------------------------------
diff --git a/api/src/org/apache/cloudstack/api/command/admin/usage/UpdateTrafficTypeCmd.java b/api/src/org/apache/cloudstack/api/command/admin/usage/UpdateTrafficTypeCmd.java
index e54b87c..c1e36aa 100644
--- a/api/src/org/apache/cloudstack/api/command/admin/usage/UpdateTrafficTypeCmd.java
+++ b/api/src/org/apache/cloudstack/api/command/admin/usage/UpdateTrafficTypeCmd.java
@@ -23,6 +23,7 @@ import org.apache.cloudstack.api.ApiErrorCode;
 import org.apache.cloudstack.api.BaseAsyncCmd;
 import org.apache.cloudstack.api.Parameter;
 import org.apache.cloudstack.api.ServerApiException;
+import org.apache.cloudstack.api.BaseCmd.CommandType;
 import org.apache.cloudstack.api.response.TrafficTypeResponse;
 import org.apache.log4j.Logger;
 
@@ -53,6 +54,8 @@ public class UpdateTrafficTypeCmd extends BaseAsyncCmd {
     @Parameter(name=ApiConstants.VMWARE_NETWORK_LABEL, type=CommandType.STRING, description="The network name label of the physical device dedicated to this traffic on a VMware host")
     private String vmwareLabel;
 
+    @Parameter(name=ApiConstants.HYPERV_NETWORK_LABEL, type=CommandType.STRING, description="The network name label of the physical device dedicated to this traffic on a Hyperv host")
+    private String hypervLabel;
 
     /////////////////////////////////////////////////////
     /////////////////// Accessors ///////////////////////
@@ -73,6 +76,10 @@ public class UpdateTrafficTypeCmd extends BaseAsyncCmd {
         return vmwareLabel;
     }
 
+    public String getHypervLabel() {
+        return hypervLabel;
+    }
+    
     /////////////////////////////////////////////////////
     /////////////// API Implementation///////////////////
     /////////////////////////////////////////////////////
@@ -89,7 +96,7 @@ public class UpdateTrafficTypeCmd extends BaseAsyncCmd {
 
     @Override
     public void execute(){
-        PhysicalNetworkTrafficType result = _networkService.updatePhysicalNetworkTrafficType(getId(), getXenLabel(), getKvmLabel(), getVmwareLabel());
+        PhysicalNetworkTrafficType result = _networkService.updatePhysicalNetworkTrafficType(getId(), getXenLabel(), getKvmLabel(), getVmwareLabel(), getHypervLabel());
         if (result != null) {
             TrafficTypeResponse response = _responseGenerator.createTrafficTypeResponse(result);
             response.setResponseName(getCommandName());

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/19e9849d/api/src/org/apache/cloudstack/api/response/TrafficTypeResponse.java
----------------------------------------------------------------------
diff --git a/api/src/org/apache/cloudstack/api/response/TrafficTypeResponse.java b/api/src/org/apache/cloudstack/api/response/TrafficTypeResponse.java
index 494048e..0205daa 100644
--- a/api/src/org/apache/cloudstack/api/response/TrafficTypeResponse.java
+++ b/api/src/org/apache/cloudstack/api/response/TrafficTypeResponse.java
@@ -45,6 +45,9 @@ public class TrafficTypeResponse extends BaseResponse {
     @SerializedName(ApiConstants.VMWARE_NETWORK_LABEL) @Param(description="The network name label of the physical device dedicated to this traffic on a VMware host")
     private String vmwareNetworkLabel;
 
+    @SerializedName(ApiConstants.HYPERV_NETWORK_LABEL) @Param(description="The network name label of the physical device dedicated to this traffic on a HyperV host")
+    private String hypervNetworkLabel;
+
 
     @Override
     public String getObjectId() {
@@ -82,10 +85,17 @@ public class TrafficTypeResponse extends BaseResponse {
     public String getKvmLabel() {
         return kvmNetworkLabel;
     }
+    public String getHypervLabel() {
+        return hypervNetworkLabel;
+    }
 
     public void setXenLabel(String xenLabel) {
         this.xenNetworkLabel = xenLabel;
     }
+    
+    public void setHypervLabel(String hypervLabel) {
+        this.hypervNetworkLabel = hypervLabel;
+    }
 
     public void setKvmLabel(String kvmLabel) {
         this.kvmNetworkLabel = kvmLabel;

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/19e9849d/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStoreProvider.java
----------------------------------------------------------------------
diff --git a/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStoreProvider.java b/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStoreProvider.java
index 855f085..7b5f8d9 100644
--- a/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStoreProvider.java
+++ b/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStoreProvider.java
@@ -27,7 +27,7 @@ public interface DataStoreProvider {
     static final String S3_IMAGE = "S3";
     static final String SWIFT_IMAGE = "Swift";
     static final String SAMPLE_IMAGE = "Sample";
-
+    static final String SMB = "NFS";
     static final String DEFAULT_PRIMARY = "DefaultPrimary";
 
     static enum DataStoreProviderType {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/19e9849d/engine/schema/src/com/cloud/network/dao/PhysicalNetworkTrafficTypeDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/network/dao/PhysicalNetworkTrafficTypeDaoImpl.java b/engine/schema/src/com/cloud/network/dao/PhysicalNetworkTrafficTypeDaoImpl.java
index 2a712a6..8f7b319 100755
--- a/engine/schema/src/com/cloud/network/dao/PhysicalNetworkTrafficTypeDaoImpl.java
+++ b/engine/schema/src/com/cloud/network/dao/PhysicalNetworkTrafficTypeDaoImpl.java
@@ -41,6 +41,7 @@ public class PhysicalNetworkTrafficTypeDaoImpl extends GenericDaoBase<PhysicalNe
     final GenericSearchBuilder<PhysicalNetworkTrafficTypeVO, String> vmWareAllFieldsSearch;
     final GenericSearchBuilder<PhysicalNetworkTrafficTypeVO, String> simulatorAllFieldsSearch;
     final GenericSearchBuilder<PhysicalNetworkTrafficTypeVO, String> ovmAllFieldsSearch;
+    final GenericSearchBuilder<PhysicalNetworkTrafficTypeVO, String> hypervAllFieldsSearch;
 
     protected PhysicalNetworkTrafficTypeDaoImpl() {
         super();
@@ -55,6 +56,13 @@ public class PhysicalNetworkTrafficTypeDaoImpl extends GenericDaoBase<PhysicalNe
         kvmAllFieldsSearch.selectFields(kvmAllFieldsSearch.entity().getKvmNetworkLabel());
         kvmAllFieldsSearch.done();
 
+        hypervAllFieldsSearch = createSearchBuilder(String.class);
+        hypervAllFieldsSearch.and("physicalNetworkId", hypervAllFieldsSearch.entity().getPhysicalNetworkId(), Op.EQ);
+        hypervAllFieldsSearch.and("trafficType", hypervAllFieldsSearch.entity().getTrafficType(), Op.EQ);
+        hypervAllFieldsSearch.selectFields(hypervAllFieldsSearch.entity().getHypervNetworkLabel());
+        hypervAllFieldsSearch.done();
+
+
         xenAllFieldsSearch = createSearchBuilder(String.class);
         xenAllFieldsSearch.and("physicalNetworkId", xenAllFieldsSearch.entity().getPhysicalNetworkId(), Op.EQ);
         xenAllFieldsSearch.and("trafficType", xenAllFieldsSearch.entity().getTrafficType(), Op.EQ);
@@ -114,7 +122,10 @@ public class PhysicalNetworkTrafficTypeDaoImpl extends GenericDaoBase<PhysicalNe
         	sc = ovmAllFieldsSearch.create();
         } else if (hType == HypervisorType.BareMetal) {
         	return null;
-        } else {
+        } else if (hType == HypervisorType.Hyperv) {
+            sc = hypervAllFieldsSearch.create();
+        } 
+        else {
             assert(false) : "We don't handle this hypervisor type";
             return null;
         }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/19e9849d/engine/schema/src/com/cloud/network/dao/PhysicalNetworkTrafficTypeVO.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/network/dao/PhysicalNetworkTrafficTypeVO.java b/engine/schema/src/com/cloud/network/dao/PhysicalNetworkTrafficTypeVO.java
index 4c32d0a..4c0cfd4 100644
--- a/engine/schema/src/com/cloud/network/dao/PhysicalNetworkTrafficTypeVO.java
+++ b/engine/schema/src/com/cloud/network/dao/PhysicalNetworkTrafficTypeVO.java
@@ -61,19 +61,23 @@ public class PhysicalNetworkTrafficTypeVO implements PhysicalNetworkTrafficType
     @Column(name = "simulator_network_label")
     private String simulatorNetworkLabel;
     
+    @Column(name = "hyperv_network_label")
+    private String hypervNetworkLabel;
+    
     @Column(name = "vlan")
     private String vlan;
     
     public PhysicalNetworkTrafficTypeVO() {
     }
 
-    public PhysicalNetworkTrafficTypeVO(long physicalNetworkId, TrafficType trafficType, String xenLabel, String kvmLabel, String vmwareLabel, String simulatorLabel, String vlan) {
+    public PhysicalNetworkTrafficTypeVO(long physicalNetworkId, TrafficType trafficType, String xenLabel, String kvmLabel, String vmwareLabel, String simulatorLabel, String vlan, String hypervLabel) {
         this.physicalNetworkId = physicalNetworkId;
         this.trafficType = trafficType;
         this.xenNetworkLabel = xenLabel;
         this.kvmNetworkLabel = kvmLabel;
         this.vmwareNetworkLabel = vmwareLabel;
         this.simulatorNetworkLabel = simulatorLabel;
+        this.hypervNetworkLabel = hypervLabel;
         this.setVlan(vlan);
         this.uuid = UUID.randomUUID().toString();
     }
@@ -146,4 +150,13 @@ public class PhysicalNetworkTrafficTypeVO implements PhysicalNetworkTrafficType
         this.uuid = uuid;
     }
 
+    public void setHypervNetworkLabel(String hypervNetworkLable) {
+        this.hypervNetworkLabel = hypervNetworkLable;
+
+    }
+    @Override
+    public String getHypervNetworkLabel() {
+        return hypervNetworkLabel;
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/19e9849d/plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/network/contrail/management/ManagementServerMock.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/network/contrail/management/ManagementServerMock.java b/plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/network/contrail/management/ManagementServerMock.java
index 82893f1..86750ca 100644
--- a/plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/network/contrail/management/ManagementServerMock.java
+++ b/plugins/network-elements/juniper-contrail/test/org/apache/cloudstack/network/contrail/management/ManagementServerMock.java
@@ -315,7 +315,7 @@ public class ManagementServerMock {
             _znet = _networkService.getPhysicalNetwork(id);
             List<PhysicalNetworkVO> nets = _physicalNetworkDao.listByZoneAndTrafficType(_zone.getId(), TrafficType.Public);
             if (nets == null || nets.isEmpty()) {
-                _networkService.addTrafficTypeToPhysicalNetwork(_znet.getId(), TrafficType.Public.toString(), null, null, null, null, null);
+                _networkService.addTrafficTypeToPhysicalNetwork(_znet.getId(), TrafficType.Public.toString(), null, null, null, null, null, null);
             }
         } catch (InvalidParameterValueException e) {
             List<String> isolationMethods = new ArrayList<String>();
@@ -325,7 +325,7 @@ public class ManagementServerMock {
                     null, "znet");
             List<PhysicalNetworkVO> nets = _physicalNetworkDao.listByZoneAndTrafficType(_zone.getId(), TrafficType.Public);
             if (nets == null || nets.isEmpty()) {
-                _networkService.addTrafficTypeToPhysicalNetwork(_znet.getId(), TrafficType.Public.toString(), null, null, null, null, null);
+                _networkService.addTrafficTypeToPhysicalNetwork(_znet.getId(), TrafficType.Public.toString(), null, null, null, null, null, null);
             }
         }
         if (_znet.getState() != PhysicalNetwork.State.Enabled) {
@@ -344,7 +344,7 @@ public class ManagementServerMock {
         }
         if (!found) {
             _networkService.addTrafficTypeToPhysicalNetwork(_znet.getId(), TrafficType.Guest.toString(),
-                    null, null, null, null, null);
+                    null, null, null, null, null, null);
         }
 
         Pair<List<? extends PhysicalNetworkServiceProvider>, Integer> providers =

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/19e9849d/server/src/com/cloud/api/ApiResponseHelper.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/ApiResponseHelper.java b/server/src/com/cloud/api/ApiResponseHelper.java
index e1c48cf..f70af5f 100755
--- a/server/src/com/cloud/api/ApiResponseHelper.java
+++ b/server/src/com/cloud/api/ApiResponseHelper.java
@@ -2696,6 +2696,7 @@ public class ApiResponseHelper implements ResponseGenerator {
         response.setXenLabel(result.getXenNetworkLabel());
         response.setKvmLabel(result.getKvmNetworkLabel());
         response.setVmwareLabel(result.getVmwareNetworkLabel());
+        response.setHypervLabel(result.getHypervNetworkLabel());
 
         response.setObjectName("traffictype");
         return response;

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/19e9849d/server/src/com/cloud/configuration/Config.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/configuration/Config.java b/server/src/com/cloud/configuration/Config.java
index e787576..bc805b7 100755
--- a/server/src/com/cloud/configuration/Config.java
+++ b/server/src/com/cloud/configuration/Config.java
@@ -275,6 +275,11 @@ public enum Config {
     KvmPrivateNetwork("Hidden", ManagementServer.class, String.class, "kvm.private.network.device", null, "Specify the private bridge on host for private network", null),
     KvmGuestNetwork("Hidden", ManagementServer.class, String.class, "kvm.guest.network.device", null, "Specify the private bridge on host for private network", null),
     KvmSshToAgentEnabled("Advanced", ManagementServer.class, Boolean.class, "kvm.ssh.to.agent", "true", "Specify whether or not the management server is allowed to SSH into KVM Agents", null),
+    
+    // Hyperv
+    HypervPublicNetwork("Hidden", ManagementServer.class, String.class, "hyperv.public.network.device", null, "Specify the public virtual switch on host for public network", null),
+    HypervPrivateNetwork("Hidden", ManagementServer.class, String.class, "hyperv.private.network.device", null, "Specify the virtual switch on host for private network", null),
+    HypervGuestNetwork("Hidden", ManagementServer.class, String.class, "hyperv.guest.network.device", null, "Specify the virtual switch on host for private network", null),
 
 	// Usage
 	UsageExecutionTimezone("Usage", ManagementServer.class, String.class, "usage.execution.timezone", null, "The timezone to use for usage job execution time", null),

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/19e9849d/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
index c3a196f..82256ca 100755
--- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
+++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
@@ -1738,7 +1738,7 @@ ConfigurationManagerImpl extends ManagerBase implements ConfigurationManager, Co
                                 _networkSvc.addTrafficTypeToPhysicalNetwork(mgmtPhyNetwork.getId(),
                                         TrafficType.Storage.toString(), mgmtTraffic.getXenNetworkLabel(),
                                         mgmtTraffic.getKvmNetworkLabel(), mgmtTraffic.getVmwareNetworkLabel(),
-                                        mgmtTraffic.getSimulatorNetworkLabel(), mgmtTraffic.getVlan());
+                                        mgmtTraffic.getSimulatorNetworkLabel(), mgmtTraffic.getVlan(), mgmtTraffic.getHypervNetworkLabel());
                                 s_logger.info("No storage traffic type was specified by admin, create default storage traffic on physical network "
                                         + mgmtPhyNetwork.getId() + " with same configure of management traffic type");
                             }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/19e9849d/server/src/com/cloud/network/NetworkModelImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/NetworkModelImpl.java b/server/src/com/cloud/network/NetworkModelImpl.java
index c8733b0..4a298cb 100755
--- a/server/src/com/cloud/network/NetworkModelImpl.java
+++ b/server/src/com/cloud/network/NetworkModelImpl.java
@@ -1179,6 +1179,9 @@ public class NetworkModelImpl extends ManagerBase implements NetworkModel {
                                break;
                     case VMware : label = mgmtTraffic.getVmwareNetworkLabel();
                                   break;
+                    case Hyperv:
+                        label = mgmtTraffic.getHypervNetworkLabel();
+                        break;
                 }
                 return label;
             }
@@ -1204,6 +1207,9 @@ public class NetworkModelImpl extends ManagerBase implements NetworkModel {
                                break;
                     case VMware : label = storageTraffic.getVmwareNetworkLabel();
                                   break;
+                    case Hyperv:
+                        label = storageTraffic.getHypervNetworkLabel();
+                        break;
                 }
                 return label;
             }
@@ -1549,6 +1555,9 @@ public class NetworkModelImpl extends ManagerBase implements NetworkModel {
                 case VMware:
                     label = publicTraffic.getVmwareNetworkLabel();
                     break;
+                case Hyperv:
+                    label = publicTraffic.getHypervNetworkLabel();
+                    break;
                 }
                 return label;
             }
@@ -1578,6 +1587,10 @@ public class NetworkModelImpl extends ManagerBase implements NetworkModel {
                 case VMware:
                     label = guestTraffic.getVmwareNetworkLabel();
                     break;
+                case Hyperv:
+                    label = guestTraffic.getHypervNetworkLabel();
+                    break;
+                    
                 }
                 return label;
             }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/19e9849d/server/src/com/cloud/network/NetworkServiceImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/NetworkServiceImpl.java b/server/src/com/cloud/network/NetworkServiceImpl.java
index 7e971bd..c6c78f5 100755
--- a/server/src/com/cloud/network/NetworkServiceImpl.java
+++ b/server/src/com/cloud/network/NetworkServiceImpl.java
@@ -3542,7 +3542,7 @@ public class NetworkServiceImpl extends ManagerBase implements  NetworkService {
     @Override
     @DB
     @ActionEvent(eventType = EventTypes.EVENT_TRAFFIC_TYPE_CREATE, eventDescription = "Creating Physical Network TrafficType", create = true)
-    public PhysicalNetworkTrafficType addTrafficTypeToPhysicalNetwork(Long physicalNetworkId, String trafficTypeStr, String xenLabel, String kvmLabel, String vmwareLabel, String simulatorLabel, String vlan) {
+    public PhysicalNetworkTrafficType addTrafficTypeToPhysicalNetwork(Long physicalNetworkId, String trafficTypeStr, String xenLabel, String kvmLabel, String vmwareLabel, String simulatorLabel, String vlan, String hypervLabel) {
 
         // verify input parameters
         PhysicalNetworkVO network = _physicalNetworkDao.findById(physicalNetworkId);
@@ -3592,7 +3592,7 @@ public class NetworkServiceImpl extends ManagerBase implements  NetworkService {
             if (xenLabel == null) {
                 xenLabel = getDefaultXenNetworkLabel(trafficType);
             }
-            PhysicalNetworkTrafficTypeVO pNetworktrafficType = new PhysicalNetworkTrafficTypeVO(physicalNetworkId, trafficType, xenLabel, kvmLabel, vmwareLabel, simulatorLabel, vlan);
+            PhysicalNetworkTrafficTypeVO pNetworktrafficType = new PhysicalNetworkTrafficTypeVO(physicalNetworkId, trafficType, xenLabel, kvmLabel, vmwareLabel, simulatorLabel, vlan, hypervLabel);
             pNetworktrafficType = _pNTrafficTypeDao.persist(pNetworktrafficType);
 
             return pNetworktrafficType;
@@ -3636,7 +3636,7 @@ public class NetworkServiceImpl extends ManagerBase implements  NetworkService {
 
     @Override
     @ActionEvent(eventType = EventTypes.EVENT_TRAFFIC_TYPE_UPDATE, eventDescription = "Updating physical network TrafficType", async = true)
-    public PhysicalNetworkTrafficType updatePhysicalNetworkTrafficType(Long id, String xenLabel, String kvmLabel, String vmwareLabel) {
+    public PhysicalNetworkTrafficType updatePhysicalNetworkTrafficType(Long id, String xenLabel, String kvmLabel, String vmwareLabel, String hypervLabel) {
 
         PhysicalNetworkTrafficTypeVO trafficType = _pNTrafficTypeDao.findById(id);
 
@@ -3662,6 +3662,13 @@ public class NetworkServiceImpl extends ManagerBase implements  NetworkService {
             }
             trafficType.setVmwareNetworkLabel(vmwareLabel);
         }
+
+        if (hypervLabel != null) {
+            if("".equals(hypervLabel)){
+                hypervLabel = null;
+            }
+            trafficType.setHypervNetworkLabel(hypervLabel);
+        }
         _pNTrafficTypeDao.update(id, trafficType);
 
         return trafficType;

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/19e9849d/server/test/com/cloud/vpc/MockNetworkManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/vpc/MockNetworkManagerImpl.java b/server/test/com/cloud/vpc/MockNetworkManagerImpl.java
index 35fde8e..705a254 100644
--- a/server/test/com/cloud/vpc/MockNetworkManagerImpl.java
+++ b/server/test/com/cloud/vpc/MockNetworkManagerImpl.java
@@ -520,7 +520,7 @@ public class MockNetworkManagerImpl extends ManagerBase implements NetworkOrches
      */
     @Override
     public PhysicalNetworkTrafficType addTrafficTypeToPhysicalNetwork(Long physicalNetworkId, String trafficType,
-            String xenLabel, String kvmLabel, String vmwareLabel, String simulatorLabel, String vlan) {
+            String xenLabel, String kvmLabel, String vmwareLabel, String simulatorLabel, String vlan, String hypervLabel) {
         // TODO Auto-generated method stub
         return null;
     }
@@ -547,7 +547,7 @@ public class MockNetworkManagerImpl extends ManagerBase implements NetworkOrches
      */
     @Override
     public PhysicalNetworkTrafficType updatePhysicalNetworkTrafficType(Long id, String xenLabel, String kvmLabel,
-            String vmwareLabel) {
+            String vmwareLabel, String hypervLabel) {
         // TODO Auto-generated method stub
         return null;
     }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/19e9849d/setup/db/db/schema-421to430.sql
----------------------------------------------------------------------
diff --git a/setup/db/db/schema-421to430.sql b/setup/db/db/schema-421to430.sql
index 53cd0bf..dbfab4a 100644
--- a/setup/db/db/schema-421to430.sql
+++ b/setup/db/db/schema-421to430.sql
@@ -493,6 +493,7 @@ CREATE TABLE `load_balancer_cert_map` (
       CONSTRAINT `fk_load_balancer_cert_map__load_balancer_id` FOREIGN KEY (`load_balancer_id`) REFERENCES `load_balancing_rules` (`id`) ON DELETE CASCADE);
 
 ALTER TABLE `cloud`.`host` ADD COLUMN `cpu_sockets` int(10) unsigned DEFAULT NULL COMMENT "the number of CPU sockets on the host" AFTER pod_id;
+ALTER TABLE `cloud`.`physical_network_traffic_types` ADD COLUMN `hyperv_network_label` varchar(255) DEFAULT NULL COMMENT 'The network name label of the physical device dedicated to this traffic on a HyperV host';
 
 DROP VIEW IF EXISTS `cloud`.`host_view`;
 CREATE VIEW `cloud`.`host_view` AS