Skip to content

Commit 9a3adc9

Browse files
committed
CLOUDSTACK-5967: GRE tunnel creation is failing
after network orchestrator refactor, only network elements providingg services as defined by network offering, are invloved network design and imlement phase. So OVS network element need to be enables as 'Connectivity' service provider to make GRE tunnels work. This fix introduced 'Ovs' provider as Connectivity service provider. Conflicts: server/src/com/cloud/network/NetworkServiceImpl.java
1 parent efc79be commit 9a3adc9

4 files changed

Lines changed: 23 additions & 3 deletions

File tree

api/src/com/cloud/network/Network.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ public static class Provider {
127127
public static final Provider NiciraNvp = new Provider("NiciraNvp", false);
128128
public static final Provider InternalLbVm = new Provider("InternalLbVm", false);
129129
public static final Provider CiscoVnmc = new Provider("CiscoVnmc", true);
130+
public static final Provider Ovs = new Provider("Ovs", false);
130131

131132
private String name;
132133
private boolean isExternal;

plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -895,7 +895,12 @@ private void enableXenServerNetwork(Connection conn, Network nw,
895895
dom0vif = VIF.create(conn, vifr);
896896
}
897897
// At this stage we surely have a VIF
898-
dom0vif.plug(conn);
898+
try {
899+
dom0vif.plug(conn);
900+
} catch (Exception e) {
901+
// though wierd exception is thrown, VIF actually gets plugged-in to dom0, so just ignore exception
902+
s_logger.info("Ignoring the benign error thrown while plugging VIF to dom0");
903+
}
899904
dom0vif.unplug(conn);
900905
synchronized(_tmpDom0Vif) {
901906
_tmpDom0Vif.add(dom0vif);

plugins/network-elements/ovs/src/com/cloud/network/element/OvsElement.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
// under the License.
1717
package com.cloud.network.element;
1818

19+
import java.util.HashMap;
1920
import java.util.Map;
2021
import java.util.Set;
2122

@@ -53,12 +54,14 @@ public boolean destroy(Network network, ReservationContext context)
5354

5455
@Override
5556
public Map<Service, Map<Capability, String>> getCapabilities() {
56-
return null;
57+
Map<Service, Map<Capability, String>> capabilities = new HashMap<Service, Map<Capability, String>>();
58+
capabilities.put(Service.Connectivity, null);
59+
return capabilities;
5760
}
5861

5962
@Override
6063
public Provider getProvider() {
61-
return null;
64+
return Network.Provider.Ovs;
6265
}
6366

6467
@Override

server/src/com/cloud/network/NetworkServiceImpl.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2472,8 +2472,14 @@ public PhysicalNetwork createPhysicalNetwork(Long zoneId, String vnetRange, Stri
24722472
//Add Internal Load Balancer element as a default network service provider
24732473
addDefaultInternalLbProviderToPhysicalNetwork(pNetwork.getId());
24742474

2475+
// Add OVS provider as default network service provider
2476+
if (pNetwork.getIsolationMethods().contains("GRE")) {
2477+
addDefaultOvsToPhysicalNetwork(pNetwork.getId());
2478+
}
2479+
24752480
txn.commit();
24762481
return pNetwork;
2482+
24772483
} catch (Exception ex) {
24782484
s_logger.warn("Exception: ", ex);
24792485
throw new CloudRuntimeException("Fail to create a physical network");
@@ -3740,6 +3746,11 @@ private PhysicalNetworkServiceProvider addDefaultBaremetalProvidersToPhysicalNet
37403746
return null;
37413747
}
37423748

3749+
private PhysicalNetworkServiceProvider addDefaultOvsToPhysicalNetwork(long physicalNetworkId) {
3750+
PhysicalNetworkServiceProvider nsp = addProviderToPhysicalNetwork(physicalNetworkId, Network.Provider.Ovs.getName(), null, null);
3751+
return nsp;
3752+
}
3753+
37433754
protected boolean isNetworkSystem(Network network) {
37443755
NetworkOffering no = _networkOfferingDao.findByIdIncludingRemoved(network.getNetworkOfferingId());
37453756
if (no.isSystemOnly()) {

0 commit comments

Comments
 (0)