Skip to content

Commit dc511dd

Browse files
sbalineniSheng Yang
authored andcommitted
Contrail VRouter plugin major bug fixes for CS 4.3
Signed-off-by: Sheng Yang <sheng.yang@citrix.com>
1 parent 5c4caf0 commit dc511dd

File tree

15 files changed

+965
-206
lines changed

15 files changed

+965
-206
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ public static class Provider {
115115
private static List<Provider> supportedProviders = new ArrayList<Provider>();
116116

117117
public static final Provider VirtualRouter = new Provider("VirtualRouter", false);
118-
public static final Provider JuniperContrail = new Provider("JuniperContrail", false);
118+
public static final Provider JuniperContrailRouter = new Provider("JuniperContrailRouter", false);
119119
public static final Provider JuniperSRX = new Provider("JuniperSRX", true);
120120
public static final Provider PaloAlto = new Provider("PaloAlto", true);
121121
public static final Provider F5BigIp = new Provider("F5BigIp", true);

plugins/network-elements/juniper-contrail/src/org/apache/cloudstack/network/contrail/management/ContrailElementImpl.java

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,8 @@
5252
import com.cloud.network.element.NetworkACLServiceProvider;
5353
import com.cloud.network.element.SourceNatServiceProvider;
5454
import com.cloud.network.element.StaticNatServiceProvider;
55-
import com.cloud.network.element.VpcProvider;
5655
import com.cloud.network.rules.StaticNat;
5756
import com.cloud.network.vpc.NetworkACLItem;
58-
import com.cloud.network.vpc.PrivateGateway;
59-
import com.cloud.network.vpc.StaticRouteProfile;
60-
import com.cloud.network.vpc.Vpc;
6157
import com.cloud.offering.NetworkOffering;
6258
import com.cloud.utils.component.AdapterBase;
6359
import com.cloud.vm.NicProfile;
@@ -68,14 +64,21 @@
6864
import com.cloud.vm.VirtualMachineProfile;
6965
import com.cloud.vm.dao.NicDao;
7066
import com.cloud.network.IpAddress;
67+
import com.cloud.server.ConfigurationServer;
68+
import com.cloud.server.ConfigurationServerImpl;
69+
import com.cloud.network.dao.NetworkDao;
70+
import com.cloud.network.dao.NetworkVO;
71+
import com.cloud.resource.ResourceManager;
7172

7273
@Component
73-
@Local(value = {ContrailElement.class, StaticNatServiceProvider.class})
74+
@Local(value = {ContrailElement.class, StaticNatServiceProvider.class, IpDeployer.class, SourceNatServiceProvider.class})
7475
public class ContrailElementImpl extends AdapterBase
75-
implements ContrailElement, IpDeployer, StaticNatServiceProvider {
76+
implements ContrailElement, StaticNatServiceProvider, IpDeployer, SourceNatServiceProvider, DhcpServiceProvider {
7677

7778
private static final Map<Service, Map<Capability, String>> _capabilities = InitCapabilities();
7879

80+
@Inject ResourceManager _resourceMgr;
81+
@Inject NetworkDao _networksDao;
7982
@Inject ContrailManager _manager;
8083
@Inject NicDao _nicDao;
8184
@Inject ServerDBSync _dbSync;
@@ -99,7 +102,7 @@ public List<Class<?>> getCommands() {
99102
// NetworkElement API
100103
@Override
101104
public Provider getProvider() {
102-
return Provider.JuniperContrail;
105+
return Provider.JuniperContrailRouter;
103106
}
104107

105108
private static Map<Service, Map<Capability, String>> InitCapabilities() {
@@ -346,4 +349,28 @@ private boolean isFloatingIpCreate(PublicIpAddress ip) {
346349
}
347350
return false;
348351
}
352+
353+
@Override
354+
public boolean addDhcpEntry(Network network, NicProfile nic,
355+
VirtualMachineProfile vm,
356+
DeployDestination dest, ReservationContext context)
357+
throws ConcurrentOperationException, InsufficientCapacityException,
358+
ResourceUnavailableException {
359+
return false;
360+
}
361+
362+
@Override
363+
public boolean configDhcpSupportForSubnet(Network network, NicProfile nic,
364+
VirtualMachineProfile vm,
365+
DeployDestination dest, ReservationContext context)
366+
throws ConcurrentOperationException, InsufficientCapacityException,
367+
ResourceUnavailableException {
368+
return false;
369+
}
370+
371+
@Override
372+
public boolean removeDhcpSupportForSubnet(Network network)
373+
throws ResourceUnavailableException {
374+
return false;
375+
}
349376
}

plugins/network-elements/juniper-contrail/src/org/apache/cloudstack/network/contrail/management/ContrailGuru.java

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919

2020

2121
import java.io.IOException;
22+
import java.net.URI;
23+
import java.util.List;
2224

2325
import javax.inject.Inject;
2426

@@ -60,18 +62,28 @@
6062
import com.cloud.vm.VirtualMachineProfile;
6163
import com.cloud.vm.dao.NicDao;
6264
import com.cloud.vm.NicVO;
65+
import com.cloud.network.dao.IPAddressDao;
66+
import com.cloud.network.dao.IPAddressVO;
67+
import com.cloud.network.addr.PublicIp;
68+
import com.cloud.user.AccountManager;
69+
import com.cloud.network.IpAddressManager;
6370

64-
@Component
71+
@Local(value = {NetworkGuru.class})
6572
public class ContrailGuru extends AdapterBase implements NetworkGuru {
6673
@Inject NetworkDao _networkDao;
6774
@Inject ContrailManager _manager;
6875
@Inject NicDao _nicDao;
76+
@Inject IPAddressDao _ipAddressDao;
77+
@Inject AccountManager _accountMgr;
78+
@Inject IpAddressManager _ipAddrMgr;
6979

7080
private static final Logger s_logger = Logger.getLogger(ContrailGuru.class);
7181
private static final TrafficType[] _trafficTypes = {TrafficType.Guest};
7282

7383
private boolean canHandle(NetworkOffering offering) {
74-
return (offering.getName().equals(ContrailManager.offeringName));
84+
if (offering.getId() == _manager.getRouterOffering().getId())
85+
return true;
86+
return false;
7587
}
7688

7789
@Override
@@ -142,7 +154,13 @@ public NicProfile allocate(Network network, NicProfile profile,
142154
}
143155

144156
profile.setStrategy(ReservationStrategy.Start);
145-
157+
URI broadcastUri = null;
158+
try {
159+
broadcastUri = new URI("vlan://untagged");
160+
} catch (Exception e) {
161+
s_logger.warn("unable to instantiate broadcast URI: " + e);
162+
}
163+
profile.setBroadcastUri(broadcastUri);
146164
return profile;
147165
}
148166

@@ -225,7 +243,9 @@ public void reserve(NicProfile nic, Network network,
225243
if (nic.getIp4Address() == null) {
226244
s_logger.debug("Allocated IP address " + ipModel.getAddress());
227245
nic.setIp4Address(ipModel.getAddress());
228-
nic.setNetmask(NetUtils.cidr2Netmask(network.getCidr()));
246+
if (network.getCidr() != null) {
247+
nic.setNetmask(NetUtils.cidr2Netmask(network.getCidr()));
248+
}
229249
nic.setGateway(network.getGateway());
230250
nic.setFormat(AddressFormat.Ip4);
231251
}
@@ -296,6 +316,7 @@ public void shutdown(NetworkProfile network, NetworkOffering offering) {
296316
return;
297317
}
298318
try {
319+
_manager.getDatabase().getVirtualNetworks().remove(vnModel);
299320
vnModel.delete(_manager.getModelController());
300321
} catch (IOException e) {
301322
s_logger.warn("virtual-network delete", e);

plugins/network-elements/juniper-contrail/src/org/apache/cloudstack/network/contrail/management/ContrailManager.java

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@
2525

2626
import net.juniper.contrail.api.ApiConnector;
2727
import net.juniper.contrail.api.types.FloatingIp;
28+
import net.juniper.contrail.api.types.NetworkPolicy;
29+
import net.juniper.contrail.api.types.Project;
30+
2831
import net.juniper.contrail.api.types.VirtualNetwork;
2932

3033
import com.cloud.network.Network;
@@ -36,16 +39,21 @@
3639
import com.cloud.network.dao.NetworkVO;
3740
import com.cloud.domain.DomainVO;
3841
import com.cloud.projects.ProjectVO;
42+
import com.cloud.network.vpc.NetworkACLVO;
3943

4044
public interface ContrailManager {
41-
public static final String offeringName = "Juniper Contrail offering";
42-
public static final String offeringDisplayText = "Juniper Contrail network offering";
45+
public static final String routerOfferingName = "Juniper Contrail Network Offering";
46+
public static final String routerOfferingDisplayText = "Juniper Contrail Network Offering";
47+
public static final String routerPublicOfferingName = "Juniper Contrail Public Network Offering";
48+
public static final String routerPublicOfferingDisplayText = "Juniper Contrail Public Network Offering";
4349
public static final int DB_SYNC_INTERVAL_DEFAULT = 600000;
4450
public static final String VNC_ROOT_DOMAIN = "default-domain";
4551
public static final String VNC_DEFAULT_PROJECT = "default-project";
4652
public static final String managementNetworkName = "ip-fabric";
4753

48-
public NetworkOffering getOffering();
54+
public NetworkOffering getRouterOffering();
55+
public NetworkOffering getPublicRouterOffering();
56+
4957
public void syncNetworkDB(short syncMode) throws IOException;
5058

5159
public boolean isManagedPhysicalNetwork(Network network);
@@ -68,6 +76,7 @@ public interface ContrailManager {
6876
public String getDefaultPublicNetworkFQN();
6977
public String getProjectId(long domainId, long accountId) throws IOException;
7078
public net.juniper.contrail.api.types.Project getVncProject(long domainId, long accountId) throws IOException;
79+
public net.juniper.contrail.api.types.Project getDefaultVncProject() throws IOException;
7180
public boolean isSystemRootDomain(net.juniper.contrail.api.types.Domain vnc);
7281
public boolean isSystemRootDomain(DomainVO domain);
7382
public boolean isSystemDefaultProject(net.juniper.contrail.api.types.Project project);
@@ -80,14 +89,16 @@ public interface ContrailManager {
8089
public ApiConnector getApiConnector();
8190
public ModelDatabase getDatabase();
8291
public ModelController getModelController();
83-
public List<NetworkVO> findJuniperManagedNetworks(List<TrafficType> types);
84-
public List<IPAddressVO> findJuniperManagedPublicIps();
92+
public List<NetworkVO> findManagedNetworks(List<TrafficType> types);
93+
public List<NetworkVO> findSystemNetworks(List<TrafficType> types);
94+
public List<IPAddressVO> findManagedPublicIps();
95+
public List<NetworkACLVO> findManagedACLs();
8596
public VirtualNetwork findDefaultVirtualNetwork(TrafficType trafficType)
8697
throws IOException;
8798
public List<FloatingIp> getFloatingIps();
8899
public VirtualNetworkModel lookupPublicNetworkModel();
89-
public void createPublicNetworks();
90100
public boolean createFloatingIp(PublicIpAddress ip);
91101
public boolean deleteFloatingIp(PublicIpAddress ip);
102+
public boolean isSystemDefaultNetworkPolicy(NetworkPolicy policy);
92103
}
93104

0 commit comments

Comments
 (0)