use of org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.AssociateNetworksOutput in project netvirt by opendaylight.
the class NeutronvpnManager method associateNetworks.
/**
* It handles the invocations to the neutronvpn:associateNetworks RPC method.
*/
@Override
// TODO Clean up the exception handling
@SuppressWarnings("checkstyle:IllegalCatch")
public Future<RpcResult<AssociateNetworksOutput>> associateNetworks(AssociateNetworksInput input) {
AssociateNetworksOutputBuilder opBuilder = new AssociateNetworksOutputBuilder();
SettableFuture<RpcResult<AssociateNetworksOutput>> result = SettableFuture.create();
LOG.debug("associateNetworks {}", input);
StringBuilder returnMsg = new StringBuilder();
Uuid vpnId = input.getVpnId();
try {
if (neutronvpnUtils.getVpnMap(vpnId) != null) {
List<Uuid> netIds = input.getNetworkId();
if (netIds != null && !netIds.isEmpty()) {
List<String> failed = associateNetworksToVpn(vpnId, netIds);
if (!failed.isEmpty()) {
returnMsg.append(failed);
}
}
} else {
returnMsg.append("VPN not found : ").append(vpnId.getValue());
}
if (returnMsg.length() != 0) {
opBuilder.setResponse("ErrorType: PROTOCOL, ErrorTag: invalid-value, ErrorMessage: " + formatAndLog(LOG::error, "associate Networks to vpn {} failed due to {}", vpnId.getValue(), returnMsg));
result.set(RpcResultBuilder.<AssociateNetworksOutput>success().withResult(opBuilder.build()).build());
} else {
result.set(RpcResultBuilder.<AssociateNetworksOutput>success().build());
}
} catch (Exception ex) {
result.set(RpcResultBuilder.<AssociateNetworksOutput>failed().withError(ErrorType.APPLICATION, formatAndLog(LOG::error, "associate Networks to vpn {} failed due to {}", input.getVpnId().getValue(), ex.getMessage(), ex)).build());
}
LOG.debug("associateNetworks returns..");
return result;
}
use of org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.AssociateNetworksOutput in project netvirt by opendaylight.
the class ConfigureL3VpnCommand method createL3VpnCLI.
private void createL3VpnCLI() throws InterruptedException, ExecutionException {
if (vid == null) {
session.getConsole().println("Please supply a valid VPN ID");
session.getConsole().println(getHelp("create"));
return;
}
if (rd == null) {
session.getConsole().println("Please supply a valid RD");
session.getConsole().println(getHelp("create"));
return;
}
if (irt == null) {
session.getConsole().println("Please supply a valid list of import RTs separated by {,}");
session.getConsole().println(getHelp("create"));
return;
}
if (ert == null) {
session.getConsole().println("Please supply a valid list of export RTs separated by {,}");
session.getConsole().println(getHelp("create"));
return;
}
Uuid vuuid = new Uuid(vid);
RpcResult<CreateL3VPNOutput> createL3VpnRpcResult = null;
{
ArrayList<String> rdList = new ArrayList<>(Arrays.asList(rd.split(",")));
ArrayList<String> irtList = new ArrayList<>(Arrays.asList(irt.split(",")));
ArrayList<String> ertList = new ArrayList<>(Arrays.asList(ert.split(",")));
Uuid tuuid = null;
if (tid != null) {
tuuid = new Uuid(tid);
}
List<L3vpn> l3vpns = new ArrayList<>();
L3vpn l3vpn = new L3vpnBuilder().setId(vuuid).setName(name).setRouteDistinguisher(rdList).setImportRT(irtList).setExportRT(ertList).setTenantId(tuuid).build();
l3vpns.add(l3vpn);
Future<RpcResult<CreateL3VPNOutput>> result = neutronvpnService.createL3VPN(new CreateL3VPNInputBuilder().setL3vpn(l3vpns).build());
createL3VpnRpcResult = result.get();
if (createL3VpnRpcResult.isSuccessful()) {
session.getConsole().println("L3VPN created successfully");
LOG.trace("createl3vpn: {}", result);
} else {
session.getConsole().println("Error populating createL3VPN : " + result.get().getErrors());
session.getConsole().println(getHelp("create"));
}
}
/**
* passing a subnetId list alongwith create-l3-vpn CLI implicitly indicates that
* association of network(s) to VPN is being intended.
*/
if (createL3VpnRpcResult.isSuccessful()) {
{
List<Uuid> networkIdList = new ArrayList<>();
if (sid != null) {
for (String sidStr : sid.split(",")) {
Uuid subnetId = new Uuid(sidStr);
Uuid networkId = neutronVpnManager.getNetworkForSubnet(subnetId);
if (networkId != null) {
networkIdList.add(networkId);
} else {
session.getConsole().println("Could not find network for subnet " + subnetId.getValue() + ". Not proceeding with adding subnet to VPN");
}
}
if (!networkIdList.isEmpty()) {
Future<RpcResult<AssociateNetworksOutput>> result = neutronvpnService.associateNetworks(new AssociateNetworksInputBuilder().setVpnId(vuuid).setNetworkId(networkIdList).build());
RpcResult<AssociateNetworksOutput> associateNetworksRpcResult = result.get();
if (associateNetworksRpcResult.isSuccessful()) {
session.getConsole().println("Subnet(s) added to VPN successfully");
LOG.trace("associateNetworks: {}", result);
} else {
session.getConsole().println("Error while adding subnet(s) to VPN: " + result.get().getErrors());
session.getConsole().println(getHelp("create"));
}
}
}
}
}
}
Aggregations