mirror of
https://github.com/opennetworkinglab/onos.git
synced 2026-05-05 04:06:49 +02:00
Refactor: reduce to number of column for better readability at SONA
Change-Id: Ic8dd78cfc219272f98f37651f244c3564755960c
This commit is contained in:
parent
6f5b646aa7
commit
5ecfd1a59c
@ -39,14 +39,17 @@ public final class Constants {
|
||||
public static final String PORT_NAME_PREFIX_VM = "tap";
|
||||
public static final String PORT_NAME_VHOST_USER_PREFIX_VM = "vhu";
|
||||
|
||||
public static final String OPENSTACK_NETWORKING_APP_ID = "org.onosproject.openstacknetworking";
|
||||
public static final String OPENSTACK_NETWORKING_APP_ID =
|
||||
"org.onosproject.openstacknetworking";
|
||||
|
||||
public static final String ARP_BROADCAST_MODE = "broadcast";
|
||||
public static final String ARP_PROXY_MODE = "proxy";
|
||||
|
||||
public static final String DEFAULT_GATEWAY_MAC_STR = "fe:00:00:00:00:02";
|
||||
public static final MacAddress DEFAULT_GATEWAY_MAC = MacAddress.valueOf(DEFAULT_GATEWAY_MAC_STR);
|
||||
public static final MacAddress DEFAULT_EXTERNAL_ROUTER_MAC = MacAddress.valueOf("fe:00:00:00:00:01");
|
||||
public static final MacAddress DEFAULT_GATEWAY_MAC =
|
||||
MacAddress.valueOf(DEFAULT_GATEWAY_MAC_STR);
|
||||
public static final MacAddress DEFAULT_EXTERNAL_ROUTER_MAC =
|
||||
MacAddress.valueOf("fe:00:00:00:00:01");
|
||||
|
||||
public static final String PCI_VENDOR_INFO = "pci_vendor_info";
|
||||
public static final String DIRECT = "direct";
|
||||
|
||||
@ -104,7 +104,8 @@ public interface OpenstackNetworkAdminService extends OpenstackNetworkService {
|
||||
* @param router router which owns externalGateway
|
||||
* @param vlanId vlan id of external network
|
||||
*/
|
||||
void deriveExternalPeerRouterMac(ExternalGateway externalGateway, Router router, VlanId vlanId);
|
||||
void deriveExternalPeerRouterMac(ExternalGateway externalGateway,
|
||||
Router router, VlanId vlanId);
|
||||
|
||||
/**
|
||||
* Deletes external router with supplied external gateway.
|
||||
|
||||
@ -26,7 +26,8 @@ import static com.google.common.base.MoreObjects.toStringHelper;
|
||||
/**
|
||||
* Describes OpenStack network service event.
|
||||
*/
|
||||
public class OpenstackNetworkEvent extends AbstractEvent<OpenstackNetworkEvent.Type, Network> {
|
||||
public class OpenstackNetworkEvent
|
||||
extends AbstractEvent<OpenstackNetworkEvent.Type, Network> {
|
||||
|
||||
private final Port port;
|
||||
private final Subnet subnet;
|
||||
|
||||
@ -20,5 +20,6 @@ import org.onosproject.store.StoreDelegate;
|
||||
/**
|
||||
* OpenStack network store delegate abstraction.
|
||||
*/
|
||||
public interface OpenstackNetworkStoreDelegate extends StoreDelegate<OpenstackNetworkEvent> {
|
||||
public interface OpenstackNetworkStoreDelegate
|
||||
extends StoreDelegate<OpenstackNetworkEvent> {
|
||||
}
|
||||
|
||||
@ -27,7 +27,8 @@ import static com.google.common.base.MoreObjects.toStringHelper;
|
||||
/**
|
||||
* Describes OpenStack router service events.
|
||||
*/
|
||||
public class OpenstackRouterEvent extends AbstractEvent<OpenstackRouterEvent.Type, Router> {
|
||||
public class OpenstackRouterEvent
|
||||
extends AbstractEvent<OpenstackRouterEvent.Type, Router> {
|
||||
|
||||
private final ExternalGateway exGateway;
|
||||
private final RouterInterface routerIface;
|
||||
|
||||
@ -21,7 +21,8 @@ import org.openstack4j.model.network.SecurityGroupRule;
|
||||
/**
|
||||
* Service for administering the inventory of Openstack security group.
|
||||
*/
|
||||
public interface OpenstackSecurityGroupAdminService extends OpenstackSecurityGroupService {
|
||||
public interface OpenstackSecurityGroupAdminService
|
||||
extends OpenstackSecurityGroupService {
|
||||
/**
|
||||
* Creates a security group.
|
||||
*
|
||||
|
||||
@ -55,7 +55,8 @@ public class OpenstackSecurityGroupEvent
|
||||
* @param type SecurityGroupEvent type
|
||||
* @param sg SecurityGroup object
|
||||
*/
|
||||
public OpenstackSecurityGroupEvent(OpenstackSecurityGroupEvent.Type type, SecurityGroup sg) {
|
||||
public OpenstackSecurityGroupEvent(OpenstackSecurityGroupEvent.Type type,
|
||||
SecurityGroup sg) {
|
||||
super(type, sg);
|
||||
}
|
||||
|
||||
@ -66,7 +67,8 @@ public class OpenstackSecurityGroupEvent
|
||||
* @param sg security group
|
||||
* @param sgRule SecurityGroup object
|
||||
*/
|
||||
public OpenstackSecurityGroupEvent(OpenstackSecurityGroupEvent.Type type, SecurityGroup sg,
|
||||
public OpenstackSecurityGroupEvent(OpenstackSecurityGroupEvent.Type type,
|
||||
SecurityGroup sg,
|
||||
SecurityGroupRule sgRule) {
|
||||
super(type, sg);
|
||||
this.sgRule = sgRule;
|
||||
|
||||
@ -20,5 +20,6 @@ import org.onosproject.store.StoreDelegate;
|
||||
/**
|
||||
* OpenStack security group store delegate abstraction.
|
||||
*/
|
||||
public interface OpenstackSecurityGroupStoreDelegate extends StoreDelegate<OpenstackSecurityGroupEvent> {
|
||||
public interface OpenstackSecurityGroupStoreDelegate
|
||||
extends StoreDelegate<OpenstackSecurityGroupEvent> {
|
||||
}
|
||||
|
||||
@ -20,5 +20,6 @@ import org.onosproject.openstacknetworking.api.OpenstackNetworkEvent.Type;
|
||||
/**
|
||||
* Handles port precommit request.
|
||||
*/
|
||||
public interface PreCommitPortService extends PreCommitService<String, Type, InstancePortAdminService> {
|
||||
public interface PreCommitPortService
|
||||
extends PreCommitService<String, Type, InstancePortAdminService> {
|
||||
}
|
||||
|
||||
@ -26,6 +26,8 @@ import org.onosproject.openstacknetworking.api.OpenstackNetworkAdminService;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.onosproject.cli.AbstractShellCommand.get;
|
||||
|
||||
/**
|
||||
* Deletes external peer router.
|
||||
*/
|
||||
@ -39,11 +41,12 @@ public class DeleteExternalPeerRouterCommand extends AbstractShellCommand {
|
||||
private String ipAddress = null;
|
||||
|
||||
private static final String FORMAT = "%-20s%-20s%-20s";
|
||||
private static final String NO_ELEMENT = "There's no external peer router information with given ip address";
|
||||
private static final String NO_ELEMENT =
|
||||
"There's no external peer router information with given ip address";
|
||||
|
||||
@Override
|
||||
protected void doExecute() {
|
||||
OpenstackNetworkAdminService service = AbstractShellCommand.get(OpenstackNetworkAdminService.class);
|
||||
OpenstackNetworkAdminService service = get(OpenstackNetworkAdminService.class);
|
||||
|
||||
if (service.externalPeerRouters().stream()
|
||||
.noneMatch(router -> router.ipAddress().toString().equals(ipAddress))) {
|
||||
|
||||
@ -20,7 +20,6 @@ import org.apache.karaf.shell.api.console.CommandLine;
|
||||
import org.apache.karaf.shell.api.console.Completer;
|
||||
import org.apache.karaf.shell.api.console.Session;
|
||||
import org.apache.karaf.shell.support.completers.StringsCompleter;
|
||||
import org.onosproject.cli.AbstractShellCommand;
|
||||
import org.onosproject.openstacknetworking.api.OpenstackNetworkService;
|
||||
import org.openstack4j.model.network.Port;
|
||||
|
||||
@ -30,6 +29,7 @@ import java.util.Set;
|
||||
import java.util.SortedSet;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static org.onosproject.cli.AbstractShellCommand.get;
|
||||
import static org.onosproject.openstacknetworking.api.Constants.DIRECT;
|
||||
|
||||
/**
|
||||
@ -41,7 +41,7 @@ public class DirectPortListCompleter implements Completer {
|
||||
@Override
|
||||
public int complete(Session session, CommandLine commandLine, List<String> candidates) {
|
||||
StringsCompleter delegate = new StringsCompleter();
|
||||
OpenstackNetworkService osNetService = AbstractShellCommand.get(OpenstackNetworkService.class);
|
||||
OpenstackNetworkService osNetService = get(OpenstackNetworkService.class);
|
||||
Set<String> set = osNetService.ports().stream()
|
||||
.filter(port -> port.getvNicType().equals(DIRECT))
|
||||
.map(Port::getId)
|
||||
|
||||
@ -26,6 +26,7 @@ import org.onosproject.openstacknetworking.api.OpenstackNetworkService;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.onosproject.cli.AbstractShellCommand.get;
|
||||
import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.prettyJson;
|
||||
|
||||
/**
|
||||
@ -40,8 +41,9 @@ public class ExternalPeerRouterListCommand extends AbstractShellCommand {
|
||||
|
||||
@Override
|
||||
protected void doExecute() {
|
||||
OpenstackNetworkService service = AbstractShellCommand.get(OpenstackNetworkService.class);
|
||||
List<ExternalPeerRouter> routers = Lists.newArrayList(service.externalPeerRouters());
|
||||
OpenstackNetworkService service = get(OpenstackNetworkService.class);
|
||||
List<ExternalPeerRouter> routers =
|
||||
Lists.newArrayList(service.externalPeerRouters());
|
||||
|
||||
if (outputJson()) {
|
||||
print("%s", json(this, routers));
|
||||
|
||||
@ -21,7 +21,6 @@ import org.apache.karaf.shell.api.console.Completer;
|
||||
import org.apache.karaf.shell.api.console.Session;
|
||||
import org.apache.karaf.shell.support.completers.StringsCompleter;
|
||||
import org.onlab.packet.IpAddress;
|
||||
import org.onosproject.cli.AbstractShellCommand;
|
||||
import org.onosproject.openstacknetworking.api.ExternalPeerRouter;
|
||||
import org.onosproject.openstacknetworking.api.OpenstackNetworkService;
|
||||
|
||||
@ -31,6 +30,8 @@ import java.util.Set;
|
||||
import java.util.SortedSet;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static org.onosproject.cli.AbstractShellCommand.get;
|
||||
|
||||
/**
|
||||
* IP Address Completer.
|
||||
*/
|
||||
@ -40,7 +41,7 @@ public class IpAddressCompleter implements Completer {
|
||||
@Override
|
||||
public int complete(Session session, CommandLine commandLine, List<String> candidates) {
|
||||
StringsCompleter delegate = new StringsCompleter();
|
||||
OpenstackNetworkService osNetService = AbstractShellCommand.get(OpenstackNetworkService.class);
|
||||
OpenstackNetworkService osNetService = get(OpenstackNetworkService.class);
|
||||
Set<IpAddress> set = osNetService.externalPeerRouters().stream()
|
||||
.map(ExternalPeerRouter::ipAddress)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
@ -21,7 +21,6 @@ import org.apache.karaf.shell.api.console.Completer;
|
||||
import org.apache.karaf.shell.api.console.Session;
|
||||
import org.apache.karaf.shell.support.completers.StringsCompleter;
|
||||
import org.onlab.packet.MacAddress;
|
||||
import org.onosproject.cli.AbstractShellCommand;
|
||||
import org.onosproject.openstacknetworking.api.ExternalPeerRouter;
|
||||
import org.onosproject.openstacknetworking.api.OpenstackNetworkService;
|
||||
|
||||
@ -31,6 +30,8 @@ import java.util.Set;
|
||||
import java.util.SortedSet;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static org.onosproject.cli.AbstractShellCommand.get;
|
||||
|
||||
/**
|
||||
* Mac Address Completer.
|
||||
*/
|
||||
@ -40,7 +41,7 @@ public class MacAddressCompleter implements Completer {
|
||||
@Override
|
||||
public int complete(Session session, CommandLine commandLine, List<String> candidates) {
|
||||
StringsCompleter delegate = new StringsCompleter();
|
||||
OpenstackNetworkService osNetService = AbstractShellCommand.get(OpenstackNetworkService.class);
|
||||
OpenstackNetworkService osNetService = get(OpenstackNetworkService.class);
|
||||
Set<MacAddress> set = osNetService.externalPeerRouters().stream()
|
||||
.map(ExternalPeerRouter::macAddress)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
@ -35,6 +35,7 @@ import org.onosproject.openstacknetworking.api.OpenstackFlowRuleService;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
import static org.onosproject.cli.AbstractShellCommand.get;
|
||||
import static org.onosproject.openstacknetworking.api.Constants.DHCP_TABLE;
|
||||
import static org.onosproject.openstacknetworking.api.Constants.OPENSTACK_NETWORKING_APP_ID;
|
||||
import static org.onosproject.openstacknetworking.api.Constants.PRIORITY_FORCED_ACL_RULE;
|
||||
@ -61,12 +62,12 @@ public class OpenstackAddAclCommand extends AbstractShellCommand {
|
||||
@Override
|
||||
protected void doExecute() {
|
||||
|
||||
OpenstackFlowRuleService flowRuleService = AbstractShellCommand.get(OpenstackFlowRuleService.class);
|
||||
CoreService coreService = AbstractShellCommand.get(CoreService.class);
|
||||
OpenstackFlowRuleService flowRuleService = get(OpenstackFlowRuleService.class);
|
||||
CoreService coreService = get(CoreService.class);
|
||||
|
||||
ApplicationId appId = coreService.getAppId(OPENSTACK_NETWORKING_APP_ID);
|
||||
|
||||
InstancePortService instancePortService = AbstractShellCommand.get(InstancePortService.class);
|
||||
InstancePortService instancePortService = get(InstancePortService.class);
|
||||
|
||||
IpAddress srcIpAddress;
|
||||
|
||||
|
||||
@ -66,9 +66,11 @@ public class OpenstackConfigArpModeCommand extends AbstractShellCommand {
|
||||
// reinstall all rules only if the arpMode is changed to the configured one
|
||||
while (true) {
|
||||
String switchingValue =
|
||||
getPropertyValue(service.getProperties(switchingComponent), ARP_MODE_NAME);
|
||||
getPropertyValue(
|
||||
service.getProperties(switchingComponent), ARP_MODE_NAME);
|
||||
String routingValue =
|
||||
getPropertyValue(service.getProperties(routingComponent), ARP_MODE_NAME);
|
||||
getPropertyValue(
|
||||
service.getProperties(routingComponent), ARP_MODE_NAME);
|
||||
|
||||
if (arpMode.equals(switchingValue) && arpMode.equals(routingValue)) {
|
||||
break;
|
||||
|
||||
@ -29,6 +29,7 @@ import org.openstack4j.model.network.Port;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
import static org.onosproject.cli.AbstractShellCommand.get;
|
||||
import static org.onosproject.openstacknetworking.api.Constants.UNSUPPORTED_VENDOR;
|
||||
import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.getIntfNameFromPciAddress;
|
||||
import static org.onosproject.openstacknode.api.OpenstackNode.NodeType.COMPUTE;
|
||||
@ -48,9 +49,9 @@ public class OpenstackDirectPortAddCommand extends AbstractShellCommand {
|
||||
|
||||
@Override
|
||||
protected void doExecute() {
|
||||
OpenstackNetworkService osNetService = AbstractShellCommand.get(OpenstackNetworkService.class);
|
||||
OpenstackNodeService osNodeService = AbstractShellCommand.get(OpenstackNodeService.class);
|
||||
DeviceService deviceService = AbstractShellCommand.get(DeviceService.class);
|
||||
OpenstackNetworkService osNetService = get(OpenstackNetworkService.class);
|
||||
OpenstackNodeService osNodeService = get(OpenstackNodeService.class);
|
||||
DeviceService deviceService = get(DeviceService.class);
|
||||
|
||||
Port port = osNetService.port(portId);
|
||||
if (port == null) {
|
||||
|
||||
@ -26,6 +26,7 @@ import org.openstack4j.model.network.Port;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static org.onosproject.cli.AbstractShellCommand.get;
|
||||
import static org.onosproject.openstacknetworking.api.Constants.DIRECT;
|
||||
import static org.onosproject.openstacknetworking.api.Constants.PCISLOT;
|
||||
import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.getIntfNameFromPciAddress;
|
||||
@ -42,7 +43,7 @@ public class OpenstackDirectPortListCommand extends AbstractShellCommand {
|
||||
|
||||
@Override
|
||||
protected void doExecute() {
|
||||
OpenstackNetworkService service = AbstractShellCommand.get(OpenstackNetworkService.class);
|
||||
OpenstackNetworkService service = get(OpenstackNetworkService.class);
|
||||
|
||||
List<Port> ports = service.ports().stream()
|
||||
.filter(port -> port.getvNicType().equals(DIRECT))
|
||||
@ -67,7 +68,8 @@ public class OpenstackDirectPortListCommand extends AbstractShellCommand {
|
||||
osNet.getName(),
|
||||
port.getMacAddress(),
|
||||
fixedIps.isEmpty() ? "" : fixedIps,
|
||||
port.getProfile().containsKey(PCISLOT) ? port.getProfile().get(PCISLOT).toString() : "",
|
||||
port.getProfile().containsKey(PCISLOT) ?
|
||||
port.getProfile().get(PCISLOT).toString() : "",
|
||||
getIntfNameFromPciAddress(port));
|
||||
}
|
||||
|
||||
|
||||
@ -29,6 +29,7 @@ import org.openstack4j.openstack.networking.domain.NeutronFloatingIP;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
import static org.onosproject.cli.AbstractShellCommand.get;
|
||||
import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.modelEntityToJson;
|
||||
import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.prettyJson;
|
||||
|
||||
@ -44,7 +45,7 @@ public class OpenstackFloatingIpListCommand extends AbstractShellCommand {
|
||||
|
||||
@Override
|
||||
protected void doExecute() {
|
||||
OpenstackRouterService service = AbstractShellCommand.get(OpenstackRouterService.class);
|
||||
OpenstackRouterService service = get(OpenstackRouterService.class);
|
||||
List<NetFloatingIP> floatingIps = Lists.newArrayList(service.floatingIps());
|
||||
floatingIps.sort(Comparator.comparing(NetFloatingIP::getFloatingIpAddress));
|
||||
|
||||
|
||||
@ -28,6 +28,7 @@ import org.onosproject.openstacknode.api.OpenstackNodeAdminService;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
import static org.onosproject.cli.AbstractShellCommand.get;
|
||||
import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.sendTraceRequestToNode;
|
||||
import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.traceRequestString;
|
||||
|
||||
@ -49,16 +50,19 @@ public class OpenstackFlowTraceCommand extends AbstractShellCommand {
|
||||
@Completion(InstanceIpAddressCompleter.class)
|
||||
private String dstIp = null;
|
||||
|
||||
private static final String NO_ELEMENT = "There's no instance port information with given ip address";
|
||||
private static final String FLOW_TRACE_REQUEST_STRING_UPLINK = "Flow trace request string for uplink: ";
|
||||
private static final String FLOW_TRACE_REQUEST_STRING_DOWNLINK = "Flow trace request string for downlink: ";
|
||||
private static final String NO_ELEMENT =
|
||||
"There's no instance port information with given ip address";
|
||||
private static final String FLOW_TRACE_REQUEST_STRING_UPLINK =
|
||||
"Flow trace request string for uplink: ";
|
||||
private static final String FLOW_TRACE_REQUEST_STRING_DOWNLINK =
|
||||
"Flow trace request string for downlink: ";
|
||||
|
||||
|
||||
@Override
|
||||
protected void doExecute() {
|
||||
OpenstackNodeAdminService osNodeService = AbstractShellCommand.get(OpenstackNodeAdminService.class);
|
||||
InstancePortAdminService instancePortService = AbstractShellCommand.get(InstancePortAdminService.class);
|
||||
OpenstackNetworkAdminService osNetService = AbstractShellCommand.get(OpenstackNetworkAdminService.class);
|
||||
OpenstackNodeAdminService osNodeService = get(OpenstackNodeAdminService.class);
|
||||
InstancePortAdminService instancePortService = get(InstancePortAdminService.class);
|
||||
OpenstackNetworkAdminService osNetService = get(OpenstackNetworkAdminService.class);
|
||||
|
||||
Optional<InstancePort> srcInstance = instancePortService.instancePorts().stream()
|
||||
.filter(port -> port.ipAddress().toString().equals(srcIp)).findAny();
|
||||
@ -71,8 +75,9 @@ public class OpenstackFlowTraceCommand extends AbstractShellCommand {
|
||||
OpenstackNode srcNode = osNodeService.node(srcInstance.get().deviceId());
|
||||
if (srcNode == null || srcNode.sshAuthInfo() == null) {
|
||||
log.error("Openstack node {} is null or has no SSH authentication information.\n" +
|
||||
" Please refers to the sample network-cfg.json in OpenstackNode app to push" +
|
||||
"SSH authentication information", srcNode == null ? "" : srcNode.hostname());
|
||||
" Please refers to the sample network-cfg.json in " +
|
||||
"OpenstackNode app to push SSH authentication information",
|
||||
srcNode == null ? "" : srcNode.hostname());
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@ -30,6 +30,7 @@ import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static org.onosproject.cli.AbstractShellCommand.get;
|
||||
import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.modelEntityToJson;
|
||||
import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.prettyJson;
|
||||
|
||||
@ -45,7 +46,7 @@ public class OpenstackNetworkListCommand extends AbstractShellCommand {
|
||||
|
||||
@Override
|
||||
protected void doExecute() {
|
||||
OpenstackNetworkService service = AbstractShellCommand.get(OpenstackNetworkService.class);
|
||||
OpenstackNetworkService service = get(OpenstackNetworkService.class);
|
||||
List<Network> networks = Lists.newArrayList(service.networks());
|
||||
networks.sort(Comparator.comparing(Network::getName));
|
||||
|
||||
|
||||
@ -33,6 +33,7 @@ import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static org.onosproject.cli.AbstractShellCommand.get;
|
||||
import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.modelEntityToJson;
|
||||
import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.prettyJson;
|
||||
|
||||
@ -51,7 +52,7 @@ public class OpenstackPortListCommand extends AbstractShellCommand {
|
||||
|
||||
@Override
|
||||
protected void doExecute() {
|
||||
OpenstackNetworkService service = AbstractShellCommand.get(OpenstackNetworkService.class);
|
||||
OpenstackNetworkService service = get(OpenstackNetworkService.class);
|
||||
|
||||
List<Port> ports = Lists.newArrayList(service.ports());
|
||||
ports.sort(Comparator.comparing(Port::getNetworkId));
|
||||
|
||||
@ -25,6 +25,7 @@ import org.onosproject.openstacknetworking.api.Constants;
|
||||
|
||||
import static java.lang.Thread.sleep;
|
||||
import static java.util.stream.StreamSupport.stream;
|
||||
import static org.onosproject.cli.AbstractShellCommand.get;
|
||||
|
||||
/**
|
||||
* Purges all existing network states.
|
||||
@ -39,8 +40,8 @@ public class OpenstackPurgeRulesCommand extends AbstractShellCommand {
|
||||
|
||||
@Override
|
||||
protected void doExecute() {
|
||||
FlowRuleService flowRuleService = AbstractShellCommand.get(FlowRuleService.class);
|
||||
CoreService coreService = AbstractShellCommand.get(CoreService.class);
|
||||
FlowRuleService flowRuleService = get(FlowRuleService.class);
|
||||
CoreService coreService = get(CoreService.class);
|
||||
ApplicationId appId = coreService.getAppId(Constants.OPENSTACK_NETWORKING_APP_ID);
|
||||
|
||||
if (appId == null) {
|
||||
@ -49,7 +50,7 @@ public class OpenstackPurgeRulesCommand extends AbstractShellCommand {
|
||||
}
|
||||
|
||||
flowRuleService.removeFlowRulesById(appId);
|
||||
print("Successfully purged flow rules installed by OpenStack networking application.");
|
||||
print("Successfully purged flow rules installed by OpenStack networking app.");
|
||||
|
||||
boolean result = true;
|
||||
long timeoutExpiredMs = System.currentTimeMillis() + TIMEOUT_MS;
|
||||
|
||||
@ -35,6 +35,7 @@ import org.onosproject.openstacknetworking.api.OpenstackFlowRuleService;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
import static org.onosproject.cli.AbstractShellCommand.get;
|
||||
import static org.onosproject.openstacknetworking.api.Constants.DHCP_TABLE;
|
||||
import static org.onosproject.openstacknetworking.api.Constants.OPENSTACK_NETWORKING_APP_ID;
|
||||
import static org.onosproject.openstacknetworking.api.Constants.PRIORITY_FORCED_ACL_RULE;
|
||||
@ -61,12 +62,12 @@ public class OpenstackRemoveAclCommand extends AbstractShellCommand {
|
||||
@Override
|
||||
protected void doExecute() {
|
||||
|
||||
OpenstackFlowRuleService flowRuleService = AbstractShellCommand.get(OpenstackFlowRuleService.class);
|
||||
CoreService coreService = AbstractShellCommand.get(CoreService.class);
|
||||
OpenstackFlowRuleService flowRuleService = get(OpenstackFlowRuleService.class);
|
||||
CoreService coreService = get(CoreService.class);
|
||||
|
||||
ApplicationId appId = coreService.getAppId(OPENSTACK_NETWORKING_APP_ID);
|
||||
|
||||
InstancePortService instancePortService = AbstractShellCommand.get(InstancePortService.class);
|
||||
InstancePortService instancePortService = get(InstancePortService.class);
|
||||
|
||||
IpAddress srcIpAddress = null;
|
||||
|
||||
|
||||
@ -29,6 +29,7 @@ import org.openstack4j.openstack.networking.domain.NeutronSecurityGroup;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
import static org.onosproject.cli.AbstractShellCommand.get;
|
||||
import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.modelEntityToJson;
|
||||
import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.prettyJson;
|
||||
|
||||
@ -47,8 +48,7 @@ public class OpenstackSecurityGroupListCommand extends AbstractShellCommand {
|
||||
|
||||
@Override
|
||||
protected void doExecute() {
|
||||
OpenstackSecurityGroupService service =
|
||||
AbstractShellCommand.get(OpenstackSecurityGroupService.class);
|
||||
OpenstackSecurityGroupService service = get(OpenstackSecurityGroupService.class);
|
||||
|
||||
List<SecurityGroup> sgs = Lists.newArrayList(service.securityGroups());
|
||||
sgs.sort(Comparator.comparing(SecurityGroup::getId));
|
||||
|
||||
@ -28,6 +28,7 @@ import org.openstack4j.openstack.networking.domain.NeutronSubnet;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
import static org.onosproject.cli.AbstractShellCommand.get;
|
||||
import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.modelEntityToJson;
|
||||
import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.prettyJson;
|
||||
|
||||
@ -43,14 +44,15 @@ public class OpenstackSubnetListCommand extends AbstractShellCommand {
|
||||
|
||||
@Override
|
||||
protected void doExecute() {
|
||||
OpenstackNetworkService service = AbstractShellCommand.get(OpenstackNetworkService.class);
|
||||
OpenstackNetworkService service = get(OpenstackNetworkService.class);
|
||||
List<Subnet> subnets = Lists.newArrayList(service.subnets());
|
||||
subnets.sort(Comparator.comparing(Subnet::getName));
|
||||
|
||||
if (outputJson()) {
|
||||
print("%s", json(subnets));
|
||||
} else {
|
||||
print(FORMAT, "ID", "Name", "CIDR", "GatewayIp", "NetworkId", "NetworkName", "HostRoutes");
|
||||
print(FORMAT, "ID", "Name", "CIDR", "GatewayIp", "NetworkId",
|
||||
"NetworkName", "HostRoutes");
|
||||
|
||||
for (Subnet subnet: subnets) {
|
||||
print(FORMAT,
|
||||
|
||||
@ -23,6 +23,7 @@ import org.onosproject.openstacknode.api.OpenstackNode;
|
||||
import org.onosproject.openstacknode.api.OpenstackNodeAdminService;
|
||||
|
||||
import static java.lang.Thread.sleep;
|
||||
import static org.onosproject.cli.AbstractShellCommand.get;
|
||||
import static org.onosproject.openstacknode.api.NodeState.COMPLETE;
|
||||
import static org.onosproject.openstacknode.api.OpenstackNode.NodeType.COMPUTE;
|
||||
import static org.onosproject.openstacknode.api.OpenstackNode.NodeType.GATEWAY;
|
||||
@ -42,7 +43,7 @@ public class OpenstackSyncRulesCommand extends AbstractShellCommand {
|
||||
protected void doExecute() {
|
||||
// All handlers in this application reacts the node complete event and
|
||||
// tries to re-configure flow rules for the complete node.
|
||||
OpenstackNodeAdminService osNodeService = AbstractShellCommand.get(OpenstackNodeAdminService.class);
|
||||
OpenstackNodeAdminService osNodeService = get(OpenstackNodeAdminService.class);
|
||||
if (osNodeService == null) {
|
||||
error("Failed to re-install flow rules for OpenStack networking.");
|
||||
return;
|
||||
|
||||
@ -66,12 +66,15 @@ public class OpenstackSyncStateCommand extends AbstractShellCommand {
|
||||
|
||||
@Override
|
||||
protected void doExecute() {
|
||||
OpenstackSecurityGroupAdminService osSgAdminService = get(OpenstackSecurityGroupAdminService.class);
|
||||
OpenstackNetworkAdminService osNetAdminService = get(OpenstackNetworkAdminService.class);
|
||||
OpenstackRouterAdminService osRouterAdminService = get(OpenstackRouterAdminService.class);
|
||||
OpenstackSecurityGroupAdminService osSgAdminService =
|
||||
get(OpenstackSecurityGroupAdminService.class);
|
||||
OpenstackNetworkAdminService osNetAdminService =
|
||||
get(OpenstackNetworkAdminService.class);
|
||||
OpenstackRouterAdminService osRouterAdminService =
|
||||
get(OpenstackRouterAdminService.class);
|
||||
OpenstackNodeService osNodeService = get(OpenstackNodeService.class);
|
||||
|
||||
Map<String, String> headerMap = new HashMap();
|
||||
Map<String, String> headerMap = new HashMap<>();
|
||||
headerMap.put(HTTP_HEADER_ACCEPT, HTTP_HEADER_VALUE_JSON);
|
||||
|
||||
Optional<OpenstackNode> node = osNodeService.nodes(CONTROLLER).stream().findFirst();
|
||||
|
||||
@ -30,6 +30,8 @@ import org.onosproject.openstacknetworking.api.OpenstackNetworkAdminService;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.onosproject.cli.AbstractShellCommand.get;
|
||||
|
||||
/**
|
||||
* Updates external peer router.
|
||||
*/
|
||||
@ -54,12 +56,13 @@ public class UpdateExternalPeerRouterCommand extends AbstractShellCommand {
|
||||
private String vlanId = null;
|
||||
|
||||
private static final String FORMAT = "%-20s%-20s%-20s";
|
||||
private static final String NO_ELEMENT = "There's no external peer router information with given ip address";
|
||||
private static final String NO_ELEMENT =
|
||||
"There's no external peer router information with given ip address";
|
||||
private static final String NONE = "None";
|
||||
|
||||
@Override
|
||||
protected void doExecute() {
|
||||
OpenstackNetworkAdminService service = AbstractShellCommand.get(OpenstackNetworkAdminService.class);
|
||||
OpenstackNetworkAdminService service = get(OpenstackNetworkAdminService.class);
|
||||
|
||||
IpAddress externalPeerIpAddress = IpAddress.valueOf(
|
||||
IpAddress.Version.INET, Ip4Address.valueOf(ipAddress).toOctets());
|
||||
|
||||
@ -33,6 +33,8 @@ import org.openstack4j.model.network.Subnet;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.onosproject.cli.AbstractShellCommand.get;
|
||||
|
||||
/**
|
||||
* Updates external peer router macc address.
|
||||
*/
|
||||
@ -51,13 +53,14 @@ public class UpdateExternalPeerRouterVlanCommand extends AbstractShellCommand {
|
||||
private String vlanId = null;
|
||||
|
||||
private static final String FORMAT = "%-20s%-20s%-20s";
|
||||
private static final String NO_ELEMENT = "There's no external peer router information with given ip address";
|
||||
private static final String NO_ELEMENT =
|
||||
"There's no external peer router information with given ip address";
|
||||
private static final String NONE = "None";
|
||||
|
||||
@Override
|
||||
protected void doExecute() {
|
||||
OpenstackNetworkAdminService osNetAdminService = AbstractShellCommand.get(OpenstackNetworkAdminService.class);
|
||||
OpenstackRouterService osRouterService = AbstractShellCommand.get(OpenstackRouterService.class);
|
||||
OpenstackNetworkAdminService osNetAdminService = get(OpenstackNetworkAdminService.class);
|
||||
OpenstackRouterService osRouterService = get(OpenstackRouterService.class);
|
||||
|
||||
IpAddress externalPeerIpAddress = IpAddress.valueOf(
|
||||
IpAddress.Version.INET, Ip4Address.valueOf(ipAddress).toOctets());
|
||||
@ -93,10 +96,13 @@ public class UpdateExternalPeerRouterVlanCommand extends AbstractShellCommand {
|
||||
|
||||
try {
|
||||
if (vlanId.equals(NONE)) {
|
||||
osNetAdminService.updateExternalPeerRouterVlan(externalPeerIpAddress, VlanId.NONE);
|
||||
osNetAdminService.deriveExternalPeerRouterMac(router.getExternalGatewayInfo(), router, VlanId.NONE);
|
||||
osNetAdminService.updateExternalPeerRouterVlan(
|
||||
externalPeerIpAddress, VlanId.NONE);
|
||||
osNetAdminService.deriveExternalPeerRouterMac(
|
||||
router.getExternalGatewayInfo(), router, VlanId.NONE);
|
||||
} else {
|
||||
osNetAdminService.updateExternalPeerRouterVlan(externalPeerIpAddress, VlanId.vlanId(vlanId));
|
||||
osNetAdminService.updateExternalPeerRouterVlan(
|
||||
externalPeerIpAddress, VlanId.vlanId(vlanId));
|
||||
osNetAdminService.deriveExternalPeerRouterMac(
|
||||
router.getExternalGatewayInfo(), router, VlanId.vlanId(vlanId));
|
||||
|
||||
@ -106,7 +112,8 @@ public class UpdateExternalPeerRouterVlanCommand extends AbstractShellCommand {
|
||||
}
|
||||
|
||||
print(FORMAT, "Router IP", "Mac Address", "VLAN ID");
|
||||
List<ExternalPeerRouter> routers = Lists.newArrayList(osNetAdminService.externalPeerRouters());
|
||||
List<ExternalPeerRouter> routers =
|
||||
Lists.newArrayList(osNetAdminService.externalPeerRouters());
|
||||
|
||||
for (ExternalPeerRouter r: routers) {
|
||||
print(FORMAT, r.ipAddress(),
|
||||
|
||||
@ -21,7 +21,6 @@ import org.apache.karaf.shell.api.console.Completer;
|
||||
import org.apache.karaf.shell.api.console.Session;
|
||||
import org.apache.karaf.shell.support.completers.StringsCompleter;
|
||||
import org.onlab.packet.VlanId;
|
||||
import org.onosproject.cli.AbstractShellCommand;
|
||||
import org.onosproject.openstacknetworking.api.ExternalPeerRouter;
|
||||
import org.onosproject.openstacknetworking.api.OpenstackNetworkService;
|
||||
|
||||
@ -31,6 +30,8 @@ import java.util.Set;
|
||||
import java.util.SortedSet;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static org.onosproject.cli.AbstractShellCommand.get;
|
||||
|
||||
/**
|
||||
* Vlan Id Completer.
|
||||
*/
|
||||
@ -40,7 +41,7 @@ public class VlanIdCompleter implements Completer {
|
||||
@Override
|
||||
public int complete(Session session, CommandLine commandLine, List<String> candidates) {
|
||||
StringsCompleter delegate = new StringsCompleter();
|
||||
OpenstackNetworkService osNetService = AbstractShellCommand.get(OpenstackNetworkService.class);
|
||||
OpenstackNetworkService osNetService = get(OpenstackNetworkService.class);
|
||||
Set<VlanId> set = osNetService.externalPeerRouters().stream()
|
||||
.map(ExternalPeerRouter::vlanId)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
@ -15,6 +15,6 @@
|
||||
*/
|
||||
|
||||
/**
|
||||
* CLI implementation for refresh/reprogram the data plane for the existing VM(OpenStackInstance).
|
||||
* CLI implementation for refresh/reprogram the data plane for the existing VM.
|
||||
*/
|
||||
package org.onosproject.openstacknetworking.cli;
|
||||
|
||||
@ -121,9 +121,12 @@ public class DistributedOpenstackNetworkStore
|
||||
private final ExecutorService eventExecutor = newSingleThreadExecutor(
|
||||
groupedThreads(this.getClass().getSimpleName(), "event-handler", log));
|
||||
|
||||
private final MapEventListener<String, Network> networkMapListener = new OpenstackNetworkMapListener();
|
||||
private final MapEventListener<String, Subnet> subnetMapListener = new OpenstackSubnetMapListener();
|
||||
private final MapEventListener<String, Port> portMapListener = new OpenstackPortMapListener();
|
||||
private final MapEventListener<String, Network>
|
||||
networkMapListener = new OpenstackNetworkMapListener();
|
||||
private final MapEventListener<String, Subnet>
|
||||
subnetMapListener = new OpenstackSubnetMapListener();
|
||||
private final MapEventListener<String, Port>
|
||||
portMapListener = new OpenstackPortMapListener();
|
||||
|
||||
private ConsistentMap<String, Network> osNetworkStore;
|
||||
private ConsistentMap<String, Subnet> osSubnetStore;
|
||||
@ -276,7 +279,8 @@ public class DistributedOpenstackNetworkStore
|
||||
osNetworkStore.clear();
|
||||
}
|
||||
|
||||
private class OpenstackNetworkMapListener implements MapEventListener<String, Network> {
|
||||
private class OpenstackNetworkMapListener
|
||||
implements MapEventListener<String, Network> {
|
||||
|
||||
@Override
|
||||
public void event(MapEvent<String, Network> event) {
|
||||
@ -421,7 +425,8 @@ public class DistributedOpenstackNetworkStore
|
||||
ImmutableList.of() : newPort.getSecurityGroups();
|
||||
|
||||
oldSecurityGroups.stream()
|
||||
.filter(sgId -> !Objects.requireNonNull(newPort.getSecurityGroups()).contains(sgId))
|
||||
.filter(sgId -> !Objects.requireNonNull(
|
||||
newPort.getSecurityGroups()).contains(sgId))
|
||||
.forEach(sgId -> notifyDelegate(new OpenstackNetworkEvent(
|
||||
OPENSTACK_PORT_SECURITY_GROUP_REMOVED, newPort, sgId
|
||||
)));
|
||||
|
||||
@ -109,11 +109,12 @@ public class DistributedOpenstackRouterStore
|
||||
|
||||
private final ExecutorService eventExecutor = newSingleThreadExecutor(
|
||||
groupedThreads(this.getClass().getSimpleName(), "event-handler", log));
|
||||
private final MapEventListener<String, Router> routerMapListener = new OpenstackRouterMapListener();
|
||||
private final MapEventListener<String, RouterInterface> routerInterfaceMapListener =
|
||||
new OpenstackRouterInterfaceMapListener();
|
||||
private final MapEventListener<String, NetFloatingIP> floatingIpMapListener =
|
||||
new OpenstackFloatingIpMapListener();
|
||||
private final MapEventListener<String, Router>
|
||||
routerMapListener = new OpenstackRouterMapListener();
|
||||
private final MapEventListener<String, RouterInterface>
|
||||
routerInterfaceMapListener = new OpenstackRouterInterfaceMapListener();
|
||||
private final MapEventListener<String, NetFloatingIP>
|
||||
floatingIpMapListener = new OpenstackFloatingIpMapListener();
|
||||
|
||||
private ConsistentMap<String, Router> osRouterStore;
|
||||
private ConsistentMap<String, RouterInterface> osRouterInterfaceStore;
|
||||
|
||||
@ -152,14 +152,16 @@ public class DistributedSecurityGroupStore
|
||||
osSecurityGroupStore.clear();
|
||||
}
|
||||
|
||||
private class OpenstackSecurityGroupMapListener implements MapEventListener<String, SecurityGroup> {
|
||||
private class OpenstackSecurityGroupMapListener
|
||||
implements MapEventListener<String, SecurityGroup> {
|
||||
|
||||
@Override
|
||||
public void event(MapEvent<String, SecurityGroup> event) {
|
||||
switch (event.type()) {
|
||||
case INSERT:
|
||||
log.debug("OpenStack security group created {}", event.newValue());
|
||||
eventExecutor.execute(() -> notifyDelegate(new OpenstackSecurityGroupEvent(
|
||||
eventExecutor.execute(() ->
|
||||
notifyDelegate(new OpenstackSecurityGroupEvent(
|
||||
OPENSTACK_SECURITY_GROUP_CREATED,
|
||||
event.newValue().value())));
|
||||
break;
|
||||
@ -171,7 +173,8 @@ public class DistributedSecurityGroupStore
|
||||
break;
|
||||
case REMOVE:
|
||||
log.debug("OpenStack security group removed {}", event.oldValue());
|
||||
eventExecutor.execute(() -> notifyDelegate(new OpenstackSecurityGroupEvent(
|
||||
eventExecutor.execute(() ->
|
||||
notifyDelegate(new OpenstackSecurityGroupEvent(
|
||||
OPENSTACK_SECURITY_GROUP_REMOVED,
|
||||
event.oldValue().value())));
|
||||
break;
|
||||
|
||||
@ -67,7 +67,10 @@ import static org.slf4j.LoggerFactory.getLogger;
|
||||
* Provides implementation of administering and interfacing instance ports.
|
||||
* It also provides instance port events for the hosts mapped to OpenStack VM interface.
|
||||
*/
|
||||
@Component(immediate = true, service = { InstancePortService.class, InstancePortAdminService.class })
|
||||
@Component(
|
||||
immediate = true,
|
||||
service = { InstancePortService.class, InstancePortAdminService.class }
|
||||
)
|
||||
public class InstancePortManager
|
||||
extends ListenerRegistry<InstancePortEvent, InstancePortListener>
|
||||
implements InstancePortService, InstancePortAdminService {
|
||||
@ -155,7 +158,8 @@ public class InstancePortManager
|
||||
// in case OpenStack removes the port prior to OVS, we will not update
|
||||
// the instance port as it does not exist in the store
|
||||
if (instancePortStore.instancePort(instancePort.portId()) == null) {
|
||||
log.warn("Unable to update instance port {}, as it does not exist", instancePort.portId());
|
||||
log.warn("Unable to update instance port {}, as it does not exist",
|
||||
instancePort.portId());
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@ -93,10 +93,12 @@ public class OpenStackSwitchingDirectPortProvider {
|
||||
@Reference(cardinality = ReferenceCardinality.MANDATORY)
|
||||
protected MastershipService mastershipService;
|
||||
|
||||
private final ExecutorService executor =
|
||||
Executors.newSingleThreadExecutor(groupedThreads(this.getClass().getSimpleName(), "direct-port-event"));
|
||||
private final OpenstackNetworkListener openstackNetworkListener = new InternalOpenstackNetworkListener();
|
||||
private final InternalOpenstackNodeListener internalNodeListener = new InternalOpenstackNodeListener();
|
||||
private final ExecutorService executor = Executors.newSingleThreadExecutor(
|
||||
groupedThreads(this.getClass().getSimpleName(), "direct-port-event"));
|
||||
private final OpenstackNetworkListener
|
||||
openstackNetworkListener = new InternalOpenstackNetworkListener();
|
||||
private final InternalOpenstackNodeListener
|
||||
internalNodeListener = new InternalOpenstackNodeListener();
|
||||
|
||||
private NodeId localNodeId;
|
||||
private ApplicationId appId;
|
||||
@ -173,7 +175,8 @@ public class OpenStackSwitchingDirectPortProvider {
|
||||
.filter(node -> node.hostname().equals(port.getHostId()))
|
||||
.findAny();
|
||||
if (!osNode.isPresent()) {
|
||||
log.error("AddPort failed because openstackNode doesn't exist that matches hostname {}",
|
||||
log.error("AddPort failed because openstackNode doesn't " +
|
||||
"exist that matches hostname {}",
|
||||
port.getHostId());
|
||||
return;
|
||||
}
|
||||
@ -189,15 +192,18 @@ public class OpenStackSwitchingDirectPortProvider {
|
||||
log.trace("Retrieved interface name: {}", intfName);
|
||||
|
||||
try {
|
||||
//If the VF port has been already added to the device for some reason, we remove it first,
|
||||
//and then add VF so that other handlers run their logic.
|
||||
// if the VF port has been already added to the device for
|
||||
// some reason, we remove it first, and then add VF so that
|
||||
// other handlers run their logic.
|
||||
if (hasIntfAleadyInDevice(osNode.get().intgBridge(),
|
||||
intfName, deviceService)) {
|
||||
log.trace("Device {} has already has VF interface {}, so remove first.",
|
||||
osNode.get().intgBridge(),
|
||||
intfName);
|
||||
osNodeService.removeVfPort(osNode.get(), intfName);
|
||||
//we wait 3000ms because the ovsdb client can't deal with removal/add at the same time.
|
||||
|
||||
// we wait 3000ms because the ovsdb client can't deal
|
||||
// with removal/add at the same time.
|
||||
sleep(SLEEP_MS);
|
||||
}
|
||||
} catch (InterruptedException e) {
|
||||
@ -212,7 +218,8 @@ public class OpenStackSwitchingDirectPortProvider {
|
||||
if (!port.getvNicType().equals(DIRECT)) {
|
||||
return;
|
||||
} else if (instancePortService.instancePort(port.getId()) == null) {
|
||||
log.trace("RemovePort skipped because no instance port exist for portId: {}", port.getId());
|
||||
log.trace("RemovePort skipped because no instance port exist for portId: {}",
|
||||
port.getId());
|
||||
return;
|
||||
} else {
|
||||
InstancePort instancePort = instancePortService.instancePort(port.getId());
|
||||
@ -228,7 +235,8 @@ public class OpenStackSwitchingDirectPortProvider {
|
||||
return;
|
||||
}
|
||||
|
||||
Optional<org.onosproject.net.Port> removedPort = deviceService.getPorts(deviceId).stream()
|
||||
Optional<org.onosproject.net.Port> removedPort =
|
||||
deviceService.getPorts(deviceId).stream()
|
||||
.filter(p -> Objects.equals(p.number(), instancePort.portNumber()))
|
||||
.findAny();
|
||||
|
||||
@ -309,15 +317,17 @@ public class OpenStackSwitchingDirectPortProvider {
|
||||
if (intfName == null) {
|
||||
log.error("Failed to retrieve interface name from a port {}", port.getId());
|
||||
} else if (intfName.equals(UNSUPPORTED_VENDOR)) {
|
||||
log.warn("Failed to retrieve interface name from a port {} because of unsupported ovs-based sr-iov");
|
||||
log.warn("Failed to retrieve interface name from a port {} " +
|
||||
"because of unsupported ovs-based sr-iov");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!hasIntfAleadyInDevice(node.intgBridge(), intfName, deviceService)) {
|
||||
log.debug("Port {} is bound to the interface {} but not added in the bridge {}. Adding it..",
|
||||
port.getId(),
|
||||
intfName,
|
||||
node.intgBridge());
|
||||
log.debug("Port {} is bound to the interface {} but not " +
|
||||
"added in the bridge {}. Adding it..",
|
||||
port.getId(),
|
||||
intfName,
|
||||
node.intgBridge());
|
||||
osNodeService.addVfPort(node, intfName);
|
||||
}
|
||||
}
|
||||
|
||||
@ -219,12 +219,16 @@ public class OpenstackFlowRuleManager implements OpenstackFlowRuleService {
|
||||
setupJumpTable(deviceId);
|
||||
|
||||
// for outbound table transition
|
||||
connectTables(deviceId, Constants.STAT_OUTBOUND_TABLE, Constants.VTAP_OUTBOUND_TABLE);
|
||||
connectTables(deviceId, Constants.VTAP_OUTBOUND_TABLE, Constants.FORWARDING_TABLE);
|
||||
connectTables(deviceId, Constants.STAT_OUTBOUND_TABLE,
|
||||
Constants.VTAP_OUTBOUND_TABLE);
|
||||
connectTables(deviceId, Constants.VTAP_OUTBOUND_TABLE,
|
||||
Constants.FORWARDING_TABLE);
|
||||
|
||||
// for FLAT outbound table transition
|
||||
connectTables(deviceId, Constants.STAT_FLAT_OUTBOUND_TABLE, Constants.VTAP_FLAT_OUTBOUND_TABLE);
|
||||
connectTables(deviceId, Constants.VTAP_FLAT_OUTBOUND_TABLE, Constants.FLAT_TABLE);
|
||||
connectTables(deviceId, Constants.STAT_FLAT_OUTBOUND_TABLE,
|
||||
Constants.VTAP_FLAT_OUTBOUND_TABLE);
|
||||
connectTables(deviceId, Constants.VTAP_FLAT_OUTBOUND_TABLE,
|
||||
Constants.FLAT_TABLE);
|
||||
}
|
||||
|
||||
private void setupJumpTable(DeviceId deviceId) {
|
||||
|
||||
@ -493,7 +493,8 @@ public class OpenstackMetadataProxyHandler {
|
||||
|
||||
request.addHeader(new BasicHeader(INSTANCE_ID_HEADER, port.getDeviceId()));
|
||||
request.addHeader(new BasicHeader(TENANT_ID_HEADER, port.getTenantId()));
|
||||
request.addHeader(new BasicHeader(FORWARDED_FOR_HEADER, instPort.ipAddress().toString()));
|
||||
request.addHeader(new BasicHeader(FORWARDED_FOR_HEADER,
|
||||
instPort.ipAddress().toString()));
|
||||
if (metadataSecret() != null) {
|
||||
request.addHeader(new BasicHeader(INSTANCE_ID_SIGNATURE_HEADER,
|
||||
hmacEncrypt(metadataSecret(), port.getDeviceId())));
|
||||
|
||||
@ -71,11 +71,13 @@ import java.util.stream.Collectors;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static java.util.Objects.requireNonNull;
|
||||
import static org.onosproject.net.AnnotationKeys.PORT_NAME;
|
||||
import static org.onosproject.openstacknetworking.api.Constants.DIRECT;
|
||||
import static org.onosproject.openstacknetworking.api.Constants.PCISLOT;
|
||||
import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.getIntfNameFromPciAddress;
|
||||
import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.vnicType;
|
||||
import static org.onosproject.openstacknode.api.OpenstackNode.NodeType.GATEWAY;
|
||||
import static org.slf4j.LoggerFactory.getLogger;
|
||||
|
||||
/**
|
||||
@ -83,7 +85,10 @@ import static org.slf4j.LoggerFactory.getLogger;
|
||||
* subnet, and port.
|
||||
*/
|
||||
|
||||
@Component(immediate = true, service = { OpenstackNetworkAdminService.class, OpenstackNetworkService.class })
|
||||
@Component(
|
||||
immediate = true,
|
||||
service = { OpenstackNetworkAdminService.class, OpenstackNetworkService.class }
|
||||
)
|
||||
public class OpenstackNetworkManager
|
||||
extends ListenerRegistry<OpenstackNetworkEvent, OpenstackNetworkListener>
|
||||
implements OpenstackNetworkAdminService, OpenstackNetworkService {
|
||||
@ -97,15 +102,24 @@ public class OpenstackNetworkManager
|
||||
private static final String MSG_UPDATED = "updated";
|
||||
private static final String MSG_REMOVED = "removed";
|
||||
|
||||
private static final String ERR_NULL_NETWORK = "OpenStack network cannot be null";
|
||||
private static final String ERR_NULL_NETWORK_ID = "OpenStack network ID cannot be null";
|
||||
private static final String ERR_NULL_SUBNET = "OpenStack subnet cannot be null";
|
||||
private static final String ERR_NULL_SUBNET_ID = "OpenStack subnet ID cannot be null";
|
||||
private static final String ERR_NULL_SUBNET_NET_ID = "OpenStack subnet network ID cannot be null";
|
||||
private static final String ERR_NULL_SUBNET_CIDR = "OpenStack subnet CIDR cannot be null";
|
||||
private static final String ERR_NULL_PORT = "OpenStack port cannot be null";
|
||||
private static final String ERR_NULL_PORT_ID = "OpenStack port ID cannot be null";
|
||||
private static final String ERR_NULL_PORT_NET_ID = "OpenStack port network ID cannot be null";
|
||||
private static final String ERR_NULL_NETWORK =
|
||||
"OpenStack network cannot be null";
|
||||
private static final String ERR_NULL_NETWORK_ID =
|
||||
"OpenStack network ID cannot be null";
|
||||
private static final String ERR_NULL_SUBNET =
|
||||
"OpenStack subnet cannot be null";
|
||||
private static final String ERR_NULL_SUBNET_ID =
|
||||
"OpenStack subnet ID cannot be null";
|
||||
private static final String ERR_NULL_SUBNET_NET_ID =
|
||||
"OpenStack subnet network ID cannot be null";
|
||||
private static final String ERR_NULL_SUBNET_CIDR =
|
||||
"OpenStack subnet CIDR cannot be null";
|
||||
private static final String ERR_NULL_PORT =
|
||||
"OpenStack port cannot be null";
|
||||
private static final String ERR_NULL_PORT_ID =
|
||||
"OpenStack port ID cannot be null";
|
||||
private static final String ERR_NULL_PORT_NET_ID =
|
||||
"OpenStack port network ID cannot be null";
|
||||
|
||||
private static final String ERR_IN_USE = " still in use";
|
||||
|
||||
@ -130,11 +144,13 @@ public class OpenstackNetworkManager
|
||||
@Reference(cardinality = ReferenceCardinality.MANDATORY)
|
||||
protected OpenstackNodeService osNodeService;
|
||||
|
||||
private final OpenstackNetworkStoreDelegate delegate = new InternalNetworkStoreDelegate();
|
||||
private final OpenstackNetworkStoreDelegate
|
||||
delegate = new InternalNetworkStoreDelegate();
|
||||
|
||||
private ConsistentMap<String, ExternalPeerRouter> externalPeerRouterMap;
|
||||
|
||||
private static final KryoNamespace SERIALIZER_EXTERNAL_PEER_ROUTER_MAP = KryoNamespace.newBuilder()
|
||||
private static final KryoNamespace
|
||||
SERIALIZER_EXTERNAL_PEER_ROUTER_MAP = KryoNamespace.newBuilder()
|
||||
.register(KryoNamespaces.API)
|
||||
.register(ExternalPeerRouter.class)
|
||||
.register(DefaultExternalPeerRouter.class)
|
||||
@ -332,8 +348,10 @@ public class OpenstackNetworkManager
|
||||
//Additional prefixes will be added
|
||||
osPort = osNetworkStore.ports()
|
||||
.stream()
|
||||
.filter(p -> p.getvNicType().equals(DIRECT) && p.getProfile().get(PCISLOT) != null)
|
||||
.filter(p -> Objects.requireNonNull(getIntfNameFromPciAddress(p)).equals(portName))
|
||||
.filter(p -> p.getvNicType().equals(DIRECT) &&
|
||||
p.getProfile().get(PCISLOT) != null)
|
||||
.filter(p -> requireNonNull(
|
||||
getIntfNameFromPciAddress(p)).equals(portName))
|
||||
.findFirst();
|
||||
return osPort.orElse(null);
|
||||
default:
|
||||
@ -425,15 +443,16 @@ public class OpenstackNetworkManager
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deriveExternalPeerRouterMac(ExternalGateway externalGateway, Router router, VlanId vlanId) {
|
||||
public void deriveExternalPeerRouterMac(ExternalGateway externalGateway,
|
||||
Router router, VlanId vlanId) {
|
||||
log.info("deriveExternalPeerRouterMac called");
|
||||
|
||||
IpAddress sourceIp = getExternalGatewaySourceIp(externalGateway, router);
|
||||
IpAddress targetIp = getExternalPeerRouterIp(externalGateway);
|
||||
|
||||
if (sourceIp == null || targetIp == null) {
|
||||
log.warn("Failed to derive external router mac address because source IP {} or target IP {} is null",
|
||||
sourceIp, targetIp);
|
||||
log.warn("Failed to derive external router mac address because " +
|
||||
"source IP {} or target IP {} is null", sourceIp, targetIp);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -449,11 +468,11 @@ public class OpenstackNetworkManager
|
||||
targetIp.toOctets(),
|
||||
vlanId.id());
|
||||
|
||||
if (osNodeService.completeNodes(OpenstackNode.NodeType.GATEWAY).isEmpty()) {
|
||||
if (osNodeService.completeNodes(GATEWAY).isEmpty()) {
|
||||
log.warn("There's no complete gateway");
|
||||
return;
|
||||
}
|
||||
OpenstackNode gatewayNode = osNodeService.completeNodes(OpenstackNode.NodeType.GATEWAY)
|
||||
OpenstackNode gatewayNode = osNodeService.completeNodes(GATEWAY)
|
||||
.stream()
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
@ -483,7 +502,8 @@ public class OpenstackNetworkManager
|
||||
.vlanId(vlanId)
|
||||
.build());
|
||||
|
||||
log.info("Initializes external peer router map with peer router IP {}", targetIp.toString());
|
||||
log.info("Initializes external peer router map with peer router IP {}",
|
||||
targetIp.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -515,7 +535,8 @@ public class OpenstackNetworkManager
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateExternalPeerRouterMac(IpAddress ipAddress, MacAddress macAddress) {
|
||||
public void updateExternalPeerRouterMac(IpAddress ipAddress,
|
||||
MacAddress macAddress) {
|
||||
try {
|
||||
externalPeerRouterMap.computeIfPresent(ipAddress.toString(), (id, existing) ->
|
||||
DefaultExternalPeerRouter.builder()
|
||||
@ -532,7 +553,9 @@ public class OpenstackNetworkManager
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateExternalPeerRouter(IpAddress ipAddress, MacAddress macAddress, VlanId vlanId) {
|
||||
public void updateExternalPeerRouter(IpAddress ipAddress,
|
||||
MacAddress macAddress,
|
||||
VlanId vlanId) {
|
||||
try {
|
||||
externalPeerRouterMap.computeIfPresent(ipAddress.toString(), (id, existing) ->
|
||||
DefaultExternalPeerRouter.builder()
|
||||
@ -671,7 +694,8 @@ public class OpenstackNetworkManager
|
||||
}
|
||||
}
|
||||
|
||||
private IpAddress getExternalGatewaySourceIp(ExternalGateway externalGateway, Router router) {
|
||||
private IpAddress getExternalGatewaySourceIp(ExternalGateway externalGateway,
|
||||
Router router) {
|
||||
Port exGatewayPort = ports(externalGateway.getNetworkId())
|
||||
.stream()
|
||||
.filter(port -> Objects.equals(port.getDeviceId(), router.getId()))
|
||||
@ -694,6 +718,7 @@ public class OpenstackNetworkManager
|
||||
.stream()
|
||||
.findFirst();
|
||||
|
||||
return externalSubnet.map(subnet -> IpAddress.valueOf(subnet.getGateway())).orElse(null);
|
||||
return externalSubnet.map(subnet ->
|
||||
IpAddress.valueOf(subnet.getGateway())).orElse(null);
|
||||
}
|
||||
}
|
||||
@ -48,7 +48,10 @@ import static org.slf4j.LoggerFactory.getLogger;
|
||||
* Provides implementation of administering and interfacing OpenStack router and
|
||||
* floating IP address.
|
||||
*/
|
||||
@Component(immediate = true, service = { OpenstackRouterAdminService.class, OpenstackRouterService.class })
|
||||
@Component(
|
||||
immediate = true,
|
||||
service = { OpenstackRouterAdminService.class, OpenstackRouterService.class }
|
||||
)
|
||||
public class OpenstackRouterManager
|
||||
extends ListenerRegistry<OpenstackRouterEvent, OpenstackRouterListener>
|
||||
implements OpenstackRouterAdminService, OpenstackRouterService {
|
||||
@ -62,14 +65,22 @@ public class OpenstackRouterManager
|
||||
private static final String MSG_UPDATED = "updated";
|
||||
private static final String MSG_REMOVED = "removed";
|
||||
|
||||
private static final String ERR_NULL_ROUTER = "OpenStack router cannot be null";
|
||||
private static final String ERR_NULL_ROUTER_ID = "OpenStack router ID cannot be null";
|
||||
private static final String ERR_NULL_ROUTER_NAME = "OpenStack router name cannot be null";
|
||||
private static final String ERR_NULL_IFACE = "OpenStack router interface cannot be null";
|
||||
private static final String ERR_NULL_IFACE_ROUTER_ID = "OpenStack router interface router ID cannot be null";
|
||||
private static final String ERR_NULL_IFACE_PORT_ID = "OpenStack router interface port ID cannot be null";
|
||||
private static final String ERR_NULL_FLOATING = "OpenStack floating IP cannot be null";
|
||||
private static final String ERR_NULL_FLOATING_ID = "OpenStack floating IP cannot be null";
|
||||
private static final String ERR_NULL_ROUTER =
|
||||
"OpenStack router cannot be null";
|
||||
private static final String ERR_NULL_ROUTER_ID =
|
||||
"OpenStack router ID cannot be null";
|
||||
private static final String ERR_NULL_ROUTER_NAME =
|
||||
"OpenStack router name cannot be null";
|
||||
private static final String ERR_NULL_IFACE =
|
||||
"OpenStack router interface cannot be null";
|
||||
private static final String ERR_NULL_IFACE_ROUTER_ID =
|
||||
"OpenStack router interface router ID cannot be null";
|
||||
private static final String ERR_NULL_IFACE_PORT_ID =
|
||||
"OpenStack router interface port ID cannot be null";
|
||||
private static final String ERR_NULL_FLOATING =
|
||||
"OpenStack floating IP cannot be null";
|
||||
private static final String ERR_NULL_FLOATING_ID =
|
||||
"OpenStack floating IP cannot be null";
|
||||
|
||||
private static final String ERR_IN_USE = " still in use";
|
||||
|
||||
@ -79,7 +90,8 @@ public class OpenstackRouterManager
|
||||
@Reference(cardinality = ReferenceCardinality.MANDATORY)
|
||||
protected OpenstackRouterStore osRouterStore;
|
||||
|
||||
private final OpenstackRouterStoreDelegate delegate = new InternalRouterStoreDelegate();
|
||||
private final OpenstackRouterStoreDelegate
|
||||
delegate = new InternalRouterStoreDelegate();
|
||||
|
||||
@Activate
|
||||
protected void activate() {
|
||||
|
||||
@ -138,11 +138,16 @@ public class OpenstackRoutingFloatingIpHandler {
|
||||
|
||||
private final ExecutorService eventExecutor = newSingleThreadExecutor(
|
||||
groupedThreads(this.getClass().getSimpleName(), "event-handler", log));
|
||||
private final OpenstackRouterListener floatingIpListener = new InternalFloatingIpListener();
|
||||
private final InstancePortListener instancePortListener = new InternalInstancePortListener();
|
||||
private final OpenstackNodeListener osNodeListener = new InternalNodeListener();
|
||||
private final OpenstackNetworkListener osNetworkListener = new InternalOpenstackNetworkListener();
|
||||
private final InstancePortListener instPortListener = new InternalInstancePortListener();
|
||||
private final OpenstackRouterListener
|
||||
floatingIpListener = new InternalFloatingIpListener();
|
||||
private final InstancePortListener
|
||||
instancePortListener = new InternalInstancePortListener();
|
||||
private final OpenstackNodeListener
|
||||
osNodeListener = new InternalNodeListener();
|
||||
private final OpenstackNetworkListener
|
||||
osNetworkListener = new InternalOpenstackNetworkListener();
|
||||
private final InstancePortListener
|
||||
instPortListener = new InternalInstancePortListener();
|
||||
|
||||
private ApplicationId appId;
|
||||
private NodeId localNodeId;
|
||||
@ -323,7 +328,8 @@ public class OpenstackRoutingFloatingIpHandler {
|
||||
|
||||
TrafficTreatment.Builder tBuilder = DefaultTrafficTreatment.builder();
|
||||
|
||||
OpenstackNode selectedGatewayNode = getGwByComputeDevId(gateways, instPort.deviceId());
|
||||
OpenstackNode selectedGatewayNode =
|
||||
getGwByComputeDevId(gateways, instPort.deviceId());
|
||||
|
||||
if (selectedGatewayNode == null) {
|
||||
log.warn(ERR_FLOW + "no gateway node selected");
|
||||
|
||||
@ -216,17 +216,21 @@ public class OpenstackRoutingHandler {
|
||||
private void routerUpdated(Router osRouter) {
|
||||
ExternalGateway exGateway = osRouter.getExternalGatewayInfo();
|
||||
osRouterService.routerInterfaces(osRouter.getId()).forEach(iface -> {
|
||||
Network network = osNetworkAdminService.network(osNetworkAdminService.subnet(iface.getSubnetId())
|
||||
Network network = osNetworkAdminService.network(
|
||||
osNetworkAdminService.subnet(iface.getSubnetId())
|
||||
.getNetworkId());
|
||||
setRouterAdminRules(network.getProviderSegID(), network.getNetworkType(), !osRouter.isAdminStateUp());
|
||||
setRouterAdminRules(network.getProviderSegID(),
|
||||
network.getNetworkType(), !osRouter.isAdminStateUp());
|
||||
});
|
||||
|
||||
ExternalPeerRouter externalPeerRouter = osNetworkAdminService.externalPeerRouter(exGateway);
|
||||
ExternalPeerRouter externalPeerRouter =
|
||||
osNetworkAdminService.externalPeerRouter(exGateway);
|
||||
VlanId vlanId = externalPeerRouter == null ? VlanId.NONE : externalPeerRouter.vlanId();
|
||||
|
||||
if (exGateway == null) {
|
||||
deleteUnassociatedExternalPeerRouter();
|
||||
osRouterService.routerInterfaces(osRouter.getId()).forEach(iface -> setSourceNat(iface, false));
|
||||
osRouterService.routerInterfaces(osRouter.getId()).forEach(iface ->
|
||||
setSourceNat(iface, false));
|
||||
} else {
|
||||
osNetworkAdminService.deriveExternalPeerRouterMac(exGateway, osRouter, vlanId);
|
||||
osRouterService.routerInterfaces(osRouter.getId()).forEach(iface ->
|
||||
@ -250,7 +254,8 @@ public class OpenstackRoutingHandler {
|
||||
!routerIps.contains(externalPeerRouter.ipAddress().toString()))
|
||||
.forEach(externalPeerRouter -> {
|
||||
osNetworkAdminService
|
||||
.deleteExternalPeerRouter(externalPeerRouter.ipAddress().toString());
|
||||
.deleteExternalPeerRouter(
|
||||
externalPeerRouter.ipAddress().toString());
|
||||
log.trace("Deleted unassociated external peer router {}",
|
||||
externalPeerRouter.ipAddress().toString());
|
||||
});
|
||||
@ -261,7 +266,8 @@ public class OpenstackRoutingHandler {
|
||||
|
||||
private void routerRemove(Router osRouter) {
|
||||
osRouterService.routerInterfaces(osRouter.getId()).forEach(iface -> {
|
||||
Network network = osNetworkAdminService.network(osNetworkAdminService.subnet(iface.getSubnetId())
|
||||
Network network = osNetworkAdminService.network(
|
||||
osNetworkAdminService.subnet(iface.getSubnetId())
|
||||
.getNetworkId());
|
||||
setRouterAdminRules(network.getProviderSegID(), network.getNetworkType(), false);
|
||||
});
|
||||
@ -279,7 +285,8 @@ public class OpenstackRoutingHandler {
|
||||
|
||||
if (!osRouter.isAdminStateUp()) {
|
||||
Network network = osNetworkAdminService.network(osSubnet.getNetworkId());
|
||||
setRouterAdminRules(network.getProviderSegID(), network.getNetworkType(), true);
|
||||
setRouterAdminRules(network.getProviderSegID(),
|
||||
network.getNetworkType(), true);
|
||||
}
|
||||
|
||||
setInternalRoutes(osRouter, osSubnet, true);
|
||||
@ -303,7 +310,8 @@ public class OpenstackRoutingHandler {
|
||||
|
||||
if (!osRouter.isAdminStateUp()) {
|
||||
Network network = osNetworkAdminService.network(osSubnet.getNetworkId());
|
||||
setRouterAdminRules(network.getProviderSegID(), network.getNetworkType(), false);
|
||||
setRouterAdminRules(network.getProviderSegID(),
|
||||
network.getNetworkType(), false);
|
||||
}
|
||||
|
||||
setInternalRoutes(osRouter, osSubnet, false);
|
||||
@ -395,7 +403,8 @@ public class OpenstackRoutingHandler {
|
||||
if (osRouter.getExternalGatewayInfo() == null) {
|
||||
return null;
|
||||
}
|
||||
String extNetId = osNetworkAdminService.network(osRouter.getExternalGatewayInfo().getNetworkId()).getId();
|
||||
String extNetId = osNetworkAdminService.network(
|
||||
osRouter.getExternalGatewayInfo().getNetworkId()).getId();
|
||||
Optional<Subnet> extSubnet = osNetworkAdminService.subnets().stream()
|
||||
.filter(subnet -> subnet.getNetworkId().equals(extNetId))
|
||||
.findAny();
|
||||
@ -706,9 +715,13 @@ public class OpenstackRoutingHandler {
|
||||
install);
|
||||
}
|
||||
|
||||
private void setRulesToGateway(OpenstackNode osNode, String segmentId, IpPrefix srcSubnet,
|
||||
NetworkType networkType, boolean install) {
|
||||
OpenstackNode sourceNatGateway = osNodeService.completeNodes(GATEWAY).stream().findFirst().orElse(null);
|
||||
private void setRulesToGateway(OpenstackNode osNode,
|
||||
String segmentId,
|
||||
IpPrefix srcSubnet,
|
||||
NetworkType networkType,
|
||||
boolean install) {
|
||||
OpenstackNode sourceNatGateway =
|
||||
osNodeService.completeNodes(GATEWAY).stream().findFirst().orElse(null);
|
||||
|
||||
if (sourceNatGateway == null) {
|
||||
return;
|
||||
@ -763,8 +776,11 @@ public class OpenstackRoutingHandler {
|
||||
install);
|
||||
}
|
||||
|
||||
private void setRulesForSnatIngressRule(DeviceId deviceId, Long vni, IpPrefix destVmIp,
|
||||
DeviceId dstDeviceId, boolean install) {
|
||||
private void setRulesForSnatIngressRule(DeviceId deviceId,
|
||||
Long vni,
|
||||
IpPrefix destVmIp,
|
||||
DeviceId dstDeviceId,
|
||||
boolean install) {
|
||||
|
||||
TrafficSelector selector = DefaultTrafficSelector.builder()
|
||||
.matchEthType(Ethernet.TYPE_IPV4)
|
||||
@ -791,13 +807,16 @@ public class OpenstackRoutingHandler {
|
||||
install);
|
||||
}
|
||||
|
||||
private void setRulesToGatewayWithRoutableSubnets(OpenstackNode osNode, OpenstackNode sourceNatGateway,
|
||||
String segmentId, Subnet updatedSubnet,
|
||||
Set<Subnet> routableSubnets, NetworkMode networkMode,
|
||||
private void setRulesToGatewayWithRoutableSubnets(OpenstackNode osNode,
|
||||
OpenstackNode sourceNatGateway,
|
||||
String segmentId,
|
||||
Subnet updatedSubnet,
|
||||
Set<Subnet> routableSubnets,
|
||||
NetworkMode networkMode,
|
||||
boolean install) {
|
||||
//At first we install flow rules to gateway with segId and gatewayIp of updated subnet
|
||||
setRulesToGatewayWithDstIp(osNode, sourceNatGateway, segmentId, IpAddress.valueOf(updatedSubnet.getGateway()),
|
||||
networkMode, install);
|
||||
setRulesToGatewayWithDstIp(osNode, sourceNatGateway, segmentId,
|
||||
IpAddress.valueOf(updatedSubnet.getGateway()), networkMode, install);
|
||||
|
||||
routableSubnets.forEach(subnet -> {
|
||||
setRulesToGatewayWithDstIp(osNode, sourceNatGateway,
|
||||
@ -811,9 +830,12 @@ public class OpenstackRoutingHandler {
|
||||
});
|
||||
}
|
||||
|
||||
private void setRulesToGatewayWithDstIp(OpenstackNode osNode, OpenstackNode sourceNatGateway,
|
||||
String segmentId, IpAddress dstIp,
|
||||
NetworkMode networkMode, boolean install) {
|
||||
private void setRulesToGatewayWithDstIp(OpenstackNode osNode,
|
||||
OpenstackNode sourceNatGateway,
|
||||
String segmentId,
|
||||
IpAddress dstIp,
|
||||
NetworkMode networkMode,
|
||||
boolean install) {
|
||||
TrafficSelector.Builder sBuilder = DefaultTrafficSelector.builder()
|
||||
.matchEthType(Ethernet.TYPE_IPV4)
|
||||
.matchIPDst(dstIp.getIp4Address().toIpPrefix());
|
||||
@ -850,7 +872,10 @@ public class OpenstackRoutingHandler {
|
||||
install);
|
||||
}
|
||||
|
||||
private void setOvsNatIngressRule(DeviceId deviceId, IpPrefix cidr, MacAddress dstMac, boolean install) {
|
||||
private void setOvsNatIngressRule(DeviceId deviceId,
|
||||
IpPrefix cidr,
|
||||
MacAddress dstMac,
|
||||
boolean install) {
|
||||
|
||||
TrafficSelector selector = DefaultTrafficSelector.builder()
|
||||
.matchEthType(Ethernet.TYPE_IPV4)
|
||||
@ -879,7 +904,10 @@ public class OpenstackRoutingHandler {
|
||||
install);
|
||||
}
|
||||
|
||||
private void setOvsNatEgressRule(DeviceId deviceId, IpAddress natAddress, long vni, PortNumber output,
|
||||
private void setOvsNatEgressRule(DeviceId deviceId,
|
||||
IpAddress natAddress,
|
||||
long vni,
|
||||
PortNumber output,
|
||||
boolean install) {
|
||||
|
||||
TrafficSelector selector = DefaultTrafficSelector.builder()
|
||||
@ -912,8 +940,11 @@ public class OpenstackRoutingHandler {
|
||||
install);
|
||||
}
|
||||
|
||||
private void setRulesToController(DeviceId deviceId, String segmentId, IpPrefix srcSubnet,
|
||||
NetworkType networkType, boolean install) {
|
||||
private void setRulesToController(DeviceId deviceId,
|
||||
String segmentId,
|
||||
IpPrefix srcSubnet,
|
||||
NetworkType networkType,
|
||||
boolean install) {
|
||||
TrafficSelector.Builder sBuilder = DefaultTrafficSelector.builder()
|
||||
.matchEthType(Ethernet.TYPE_IPV4)
|
||||
.matchIPSrc(srcSubnet)
|
||||
@ -951,7 +982,9 @@ public class OpenstackRoutingHandler {
|
||||
install);
|
||||
}
|
||||
|
||||
private void setRouterAdminRules(String segmentId, NetworkType networkType, boolean install) {
|
||||
private void setRouterAdminRules(String segmentId,
|
||||
NetworkType networkType,
|
||||
boolean install) {
|
||||
TrafficTreatment treatment;
|
||||
TrafficSelector.Builder sBuilder = DefaultTrafficSelector.builder()
|
||||
.matchEthType(Ethernet.TYPE_IPV4);
|
||||
|
||||
@ -307,8 +307,9 @@ public class OpenstackRoutingIcmpHandler {
|
||||
|
||||
private boolean handleEchoRequest(DeviceId srcDevice, MacAddress srcMac, IPv4 ipPacket,
|
||||
ICMP icmp) {
|
||||
//We only handles a request from an instance port
|
||||
//In case of ehco request to SNAT ip address from an external router, we intentionally ignore it
|
||||
// we only handles a request from an instance port
|
||||
// in case of ehco request to SNAT ip address from an external router,
|
||||
// we intentionally ignore it
|
||||
InstancePort instPort = instancePortService.instancePort(srcMac);
|
||||
if (instPort == null) {
|
||||
log.warn(ERR_REQ + "unknown source host(MAC:{})", srcMac);
|
||||
@ -339,14 +340,16 @@ public class OpenstackRoutingIcmpHandler {
|
||||
// this is a request to an external network
|
||||
log.trace("Icmp request to external {} from {}", dstIp, srcIp);
|
||||
|
||||
IpAddress externalIp = externalIpFromSubnet(srcSubnet, osRouterService, osNetworkService);
|
||||
IpAddress externalIp = externalIpFromSubnet(srcSubnet,
|
||||
osRouterService, osNetworkService);
|
||||
if (externalIp == null) {
|
||||
log.warn(ERR_REQ + "failed to get external ip");
|
||||
return false;
|
||||
}
|
||||
|
||||
ExternalPeerRouter externalPeerRouter =
|
||||
externalPeerRouterFromSubnet(srcSubnet, osRouterService, osNetworkService);
|
||||
externalPeerRouterFromSubnet(srcSubnet,
|
||||
osRouterService, osNetworkService);
|
||||
if (externalPeerRouter == null) {
|
||||
log.warn(ERR_REQ + "failed to get external peer router");
|
||||
return false;
|
||||
@ -413,7 +416,8 @@ public class OpenstackRoutingIcmpHandler {
|
||||
}
|
||||
|
||||
Router osRouter = osRouterService.router(osRouterIface.getId());
|
||||
Set<IpAddress> routableGateways = osRouterService.routerInterfaces(osRouter.getId())
|
||||
Set<IpAddress> routableGateways =
|
||||
osRouterService.routerInterfaces(osRouter.getId())
|
||||
.stream()
|
||||
.map(iface -> osNetworkService.subnet(iface.getSubnetId()).getGateway())
|
||||
.map(IpAddress::valueOf)
|
||||
@ -443,8 +447,10 @@ public class OpenstackRoutingIcmpHandler {
|
||||
sendReply(icmpReply, instPort);
|
||||
}
|
||||
|
||||
private void sendRequestForExternal(IPv4 ipPacket, DeviceId srcDevice,
|
||||
IpAddress srcNatIp, ExternalPeerRouter externalPeerRouter) {
|
||||
private void sendRequestForExternal(IPv4 ipPacket,
|
||||
DeviceId srcDevice,
|
||||
IpAddress srcNatIp,
|
||||
ExternalPeerRouter externalPeerRouter) {
|
||||
ICMP icmpReq = (ICMP) ipPacket.getPayload();
|
||||
icmpReq.resetChecksum();
|
||||
ipPacket.setSourceAddress(srcNatIp.getIp4Address().toInt()).resetChecksum();
|
||||
|
||||
@ -222,8 +222,10 @@ public class OpenstackRoutingSnatHandler {
|
||||
return osNetworkService.subnet(fixedIp.getSubnetId());
|
||||
}
|
||||
|
||||
private void populateSnatFlowRules(InboundPacket packetIn, InstancePort srcInstPort,
|
||||
TpPort patPort, IpAddress externalIp, ExternalPeerRouter externalPeerRouter) {
|
||||
private void populateSnatFlowRules(InboundPacket packetIn,
|
||||
InstancePort srcInstPort,
|
||||
TpPort patPort, IpAddress externalIp,
|
||||
ExternalPeerRouter externalPeerRouter) {
|
||||
Network osNet = osNetworkService.network(srcInstPort.networkId());
|
||||
if (osNet == null) {
|
||||
final String error = String.format("%s network %s not found",
|
||||
@ -344,8 +346,10 @@ public class OpenstackRoutingSnatHandler {
|
||||
return tmpBuilder.build();
|
||||
}
|
||||
|
||||
private void setUpstreamRules(String segmentId, NetworkType networkType,
|
||||
IpAddress externalIp, ExternalPeerRouter externalPeerRouter,
|
||||
private void setUpstreamRules(String segmentId,
|
||||
NetworkType networkType,
|
||||
IpAddress externalIp,
|
||||
ExternalPeerRouter externalPeerRouter,
|
||||
TpPort patPort,
|
||||
InboundPacket packetIn) {
|
||||
IPv4 iPacket = (IPv4) packetIn.parsed().getPayload();
|
||||
|
||||
@ -47,8 +47,10 @@ import static org.slf4j.LoggerFactory.getLogger;
|
||||
* Provides implementation of administering and interfacing OpenStack security
|
||||
* groups.
|
||||
*/
|
||||
@Component(immediate = true,
|
||||
service = { OpenstackSecurityGroupAdminService.class, OpenstackSecurityGroupService.class })
|
||||
@Component(
|
||||
immediate = true,
|
||||
service = { OpenstackSecurityGroupAdminService.class, OpenstackSecurityGroupService.class }
|
||||
)
|
||||
public class OpenstackSecurityGroupManager
|
||||
extends ListenerRegistry<OpenstackSecurityGroupEvent, OpenstackSecurityGroupListener>
|
||||
implements OpenstackSecurityGroupAdminService, OpenstackSecurityGroupService {
|
||||
@ -61,10 +63,14 @@ public class OpenstackSecurityGroupManager
|
||||
private static final String MSG_CREATED = "created";
|
||||
private static final String MSG_REMOVED = "removed";
|
||||
|
||||
private static final String ERR_NULL_SG = "OpenStack security group cannot be null";
|
||||
private static final String ERR_NULL_SG_ID = "OpenStack security group ID cannot be null";
|
||||
private static final String ERR_NULL_SG_RULE = "OpenStack security group rule cannot be null";
|
||||
private static final String ERR_NULL_SG_RULE_ID = "OpenStack security group rule ID cannot be null";
|
||||
private static final String ERR_NULL_SG =
|
||||
"OpenStack security group cannot be null";
|
||||
private static final String ERR_NULL_SG_ID =
|
||||
"OpenStack security group ID cannot be null";
|
||||
private static final String ERR_NULL_SG_RULE =
|
||||
"OpenStack security group rule cannot be null";
|
||||
private static final String ERR_NULL_SG_RULE_ID =
|
||||
"OpenStack security group rule ID cannot be null";
|
||||
private static final String ERR_NOT_FOUND = "not found";
|
||||
private static final String ERR_DUPLICATE = "already exist";
|
||||
|
||||
@ -76,7 +82,8 @@ public class OpenstackSecurityGroupManager
|
||||
@Reference(cardinality = ReferenceCardinality.MANDATORY)
|
||||
protected OpenstackSecurityGroupStore osSecurityGroupStore;
|
||||
|
||||
private final OpenstackSecurityGroupStoreDelegate delegate = new InternalSecurityGroupStoreDelegate();
|
||||
private final OpenstackSecurityGroupStoreDelegate
|
||||
delegate = new InternalSecurityGroupStoreDelegate();
|
||||
|
||||
@Activate
|
||||
protected void activate() {
|
||||
@ -125,10 +132,12 @@ public class OpenstackSecurityGroupManager
|
||||
synchronized (this) {
|
||||
SecurityGroup sg = securityGroup(sgRule.getSecurityGroupId());
|
||||
if (sg == null) {
|
||||
final String error = String.format(MSG_SG, sgRule.getSecurityGroupId(), ERR_NOT_FOUND);
|
||||
final String error = String.format(MSG_SG,
|
||||
sgRule.getSecurityGroupId(), ERR_NOT_FOUND);
|
||||
throw new IllegalStateException(error);
|
||||
}
|
||||
if (sg.getRules().stream().anyMatch(rule -> Objects.equals(rule.getId(), sgRule.getId()))) {
|
||||
if (sg.getRules().stream().anyMatch(rule ->
|
||||
Objects.equals(rule.getId(), sgRule.getId()))) {
|
||||
final String error = String.format(MSG_SG_RULE,
|
||||
sgRule.getSecurityGroupId(), ERR_DUPLICATE);
|
||||
throw new IllegalStateException(error);
|
||||
@ -157,11 +166,13 @@ public class OpenstackSecurityGroupManager
|
||||
|
||||
SecurityGroup sg = securityGroup(sgRule.getSecurityGroupId());
|
||||
if (sg == null) {
|
||||
final String error = String.format(MSG_SG, sgRule.getSecurityGroupId(), ERR_NOT_FOUND);
|
||||
final String error = String.format(MSG_SG,
|
||||
sgRule.getSecurityGroupId(), ERR_NOT_FOUND);
|
||||
throw new IllegalStateException(error);
|
||||
}
|
||||
|
||||
if (sg.getRules().stream().noneMatch(rule -> Objects.equals(rule.getId(), sgRule.getId()))) {
|
||||
if (sg.getRules().stream().noneMatch(rule ->
|
||||
Objects.equals(rule.getId(), sgRule.getId()))) {
|
||||
final String error = String.format(MSG_SG_RULE,
|
||||
sgRule.getSecurityGroupId(), ERR_NOT_FOUND);
|
||||
throw new IllegalStateException(error);
|
||||
@ -210,7 +221,8 @@ public class OpenstackSecurityGroupManager
|
||||
.findFirst().orElse(null);
|
||||
}
|
||||
|
||||
private class InternalSecurityGroupStoreDelegate implements OpenstackSecurityGroupStoreDelegate {
|
||||
private class InternalSecurityGroupStoreDelegate
|
||||
implements OpenstackSecurityGroupStoreDelegate {
|
||||
|
||||
@Override
|
||||
public void notify(OpenstackSecurityGroupEvent event) {
|
||||
|
||||
@ -634,7 +634,8 @@ public class OpenstackSwitchingArpHandler {
|
||||
}
|
||||
|
||||
for (OpenstackNode remoteNode : osNodeService.completeNodes(COMPUTE)) {
|
||||
if (!remoteNode.intgBridge().equals(port.deviceId()) && remoteNode.vlanIntf() != null) {
|
||||
if (!remoteNode.intgBridge().equals(port.deviceId()) &&
|
||||
remoteNode.vlanIntf() != null) {
|
||||
TrafficTreatment treatmentToRemote = DefaultTrafficTreatment.builder()
|
||||
.setOutput(remoteNode.vlanPortNum())
|
||||
.build();
|
||||
|
||||
@ -318,7 +318,8 @@ public class OpenstackSwitchingDhcpHandler {
|
||||
IPv4 ipv4Request = (IPv4) ethRequest.getPayload();
|
||||
IPv4 ipv4Reply = new IPv4();
|
||||
|
||||
ipv4Reply.setSourceAddress(clusterService.getLocalNode().ip().getIp4Address().toString());
|
||||
ipv4Reply.setSourceAddress(
|
||||
clusterService.getLocalNode().ip().getIp4Address().toString());
|
||||
ipv4Reply.setDestinationAddress(reqInstPort.ipAddress().getIp4Address().toInt());
|
||||
ipv4Reply.setTtl(PACKET_TTL);
|
||||
|
||||
@ -575,7 +576,8 @@ public class OpenstackSwitchingDhcpHandler {
|
||||
.split("/")[0]
|
||||
.split("\\.");
|
||||
|
||||
// retrieve destination descriptor and put this to bytebuffer according to RFC 3442
|
||||
// retrieve destination descriptor and put this to byte buffer
|
||||
// according to RFC 3442
|
||||
// ex) 0.0.0.0/0 -> 0
|
||||
// ex) 10.0.0.0/8 -> 8.10
|
||||
// ex) 10.17.0.0/16 -> 16.10.17
|
||||
|
||||
@ -107,8 +107,8 @@ public class OpenstackSwitchingHostProvider
|
||||
|
||||
private HostProviderService hostProviderService;
|
||||
|
||||
private final ExecutorService executor =
|
||||
Executors.newSingleThreadExecutor(groupedThreads(this.getClass().getSimpleName(), "device-event"));
|
||||
private final ExecutorService executor = Executors.newSingleThreadExecutor(
|
||||
groupedThreads(this.getClass().getSimpleName(), "device-event"));
|
||||
private final InternalDeviceListener internalDeviceListener =
|
||||
new InternalDeviceListener();
|
||||
private final InternalOpenstackNodeListener internalNodeListener =
|
||||
|
||||
@ -113,6 +113,7 @@ import java.util.concurrent.TimeUnit;
|
||||
import static com.fasterxml.jackson.databind.SerializationFeature.INDENT_OUTPUT;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static com.google.common.base.Strings.isNullOrEmpty;
|
||||
import static org.onlab.packet.Ip4Address.valueOf;
|
||||
import static org.onosproject.net.AnnotationKeys.PORT_NAME;
|
||||
import static org.onosproject.openstacknetworking.api.Constants.DEFAULT_GATEWAY_MAC_STR;
|
||||
import static org.onosproject.openstacknetworking.api.Constants.PCISLOT;
|
||||
@ -292,7 +293,8 @@ public final class OpenstackNetworkingUtil {
|
||||
* @param deviceId device identifier
|
||||
* @return a gateway node
|
||||
*/
|
||||
public static OpenstackNode getGwByComputeDevId(Set<OpenstackNode> gws, DeviceId deviceId) {
|
||||
public static OpenstackNode getGwByComputeDevId(Set<OpenstackNode> gws,
|
||||
DeviceId deviceId) {
|
||||
int numOfGw = gws.size();
|
||||
|
||||
if (numOfGw == 0) {
|
||||
@ -372,7 +374,8 @@ public final class OpenstackNetworkingUtil {
|
||||
|
||||
if (!port.getProfile().containsKey(PCISLOT) ||
|
||||
Strings.isNullOrEmpty(port.getProfile().get(PCISLOT).toString())) {
|
||||
log.error("Failed to retrieve the interface name because of no pci_slot information from the port");
|
||||
log.error("Failed to retrieve the interface name because of no " +
|
||||
"pci_slot information from the port");
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -416,12 +419,14 @@ public final class OpenstackNetworkingUtil {
|
||||
* @param deviceService device service
|
||||
* @return true if the given interface is added to the given device or false otherwise
|
||||
*/
|
||||
public static boolean hasIntfAleadyInDevice(DeviceId deviceId, String intfName, DeviceService deviceService) {
|
||||
public static boolean hasIntfAleadyInDevice(DeviceId deviceId,
|
||||
String intfName,
|
||||
DeviceService deviceService) {
|
||||
checkNotNull(deviceId);
|
||||
checkNotNull(intfName);
|
||||
|
||||
return deviceService.getPorts(deviceId).stream()
|
||||
.anyMatch(port -> Objects.equals(port.annotations().value(PORT_NAME), intfName));
|
||||
return deviceService.getPorts(deviceId).stream().anyMatch(port ->
|
||||
Objects.equals(port.annotations().value(PORT_NAME), intfName));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -430,7 +435,8 @@ public final class OpenstackNetworkingUtil {
|
||||
* @param osPort port
|
||||
* @param adminService openstack admin service
|
||||
*/
|
||||
public static void addRouterIface(Port osPort, OpenstackRouterAdminService adminService) {
|
||||
public static void addRouterIface(Port osPort,
|
||||
OpenstackRouterAdminService adminService) {
|
||||
osPort.getFixedIps().forEach(p -> {
|
||||
JsonNode jsonTree = new ObjectMapper().createObjectNode()
|
||||
.put("id", osPort.getDeviceId())
|
||||
@ -459,7 +465,8 @@ public final class OpenstackNetworkingUtil {
|
||||
* @param name key name
|
||||
* @return mapping value
|
||||
*/
|
||||
public static String getPropertyValue(Set<ConfigProperty> properties, String name) {
|
||||
public static String getPropertyValue(Set<ConfigProperty> properties,
|
||||
String name) {
|
||||
Optional<ConfigProperty> property =
|
||||
properties.stream().filter(p -> p.name().equals(name)).findFirst();
|
||||
return property.map(ConfigProperty::value).orElse(null);
|
||||
@ -472,7 +479,8 @@ public final class OpenstackNetworkingUtil {
|
||||
* @param name key name
|
||||
* @return mapping value
|
||||
*/
|
||||
public static boolean getPropertyValueAsBoolean(Set<ConfigProperty> properties, String name) {
|
||||
public static boolean getPropertyValueAsBoolean(Set<ConfigProperty> properties,
|
||||
String name) {
|
||||
Optional<ConfigProperty> property =
|
||||
properties.stream().filter(p -> p.name().equals(name)).findFirst();
|
||||
|
||||
@ -598,7 +606,8 @@ public final class OpenstackNetworkingUtil {
|
||||
new SessionInputBufferImpl(
|
||||
new HttpTransportMetricsImpl(), HTTP_PAYLOAD_BUFFER);
|
||||
sessionInputBuffer.bind(new ByteArrayInputStream(rawData));
|
||||
DefaultHttpRequestParser requestParser = new DefaultHttpRequestParser(sessionInputBuffer);
|
||||
DefaultHttpRequestParser requestParser =
|
||||
new DefaultHttpRequestParser(sessionInputBuffer);
|
||||
try {
|
||||
return requestParser.parse();
|
||||
} catch (IOException | HttpException e) {
|
||||
@ -623,8 +632,8 @@ public final class OpenstackNetworkingUtil {
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
sessionOutputBuffer.bind(baos);
|
||||
|
||||
HttpMessageWriter<HttpRequest> requestWriter = new DefaultHttpRequestWriter(
|
||||
sessionOutputBuffer);
|
||||
HttpMessageWriter<HttpRequest> requestWriter =
|
||||
new DefaultHttpRequestWriter(sessionOutputBuffer);
|
||||
requestWriter.write(request);
|
||||
sessionOutputBuffer.flush();
|
||||
|
||||
@ -647,7 +656,8 @@ public final class OpenstackNetworkingUtil {
|
||||
new SessionInputBufferImpl(
|
||||
new HttpTransportMetricsImpl(), HTTP_PAYLOAD_BUFFER);
|
||||
sessionInputBuffer.bind(new ByteArrayInputStream(rawData));
|
||||
DefaultHttpResponseParser responseParser = new DefaultHttpResponseParser(sessionInputBuffer);
|
||||
DefaultHttpResponseParser responseParser =
|
||||
new DefaultHttpResponseParser(sessionInputBuffer);
|
||||
try {
|
||||
return responseParser.parse();
|
||||
} catch (IOException | HttpException e) {
|
||||
@ -741,7 +751,8 @@ public final class OpenstackNetworkingUtil {
|
||||
public static String traceRequestString(String srcIp,
|
||||
String dstIp,
|
||||
InstancePort srcInstancePort,
|
||||
OpenstackNetworkService osNetService, boolean uplink) {
|
||||
OpenstackNetworkService osNetService,
|
||||
boolean uplink) {
|
||||
|
||||
StringBuilder requestStringBuilder = new StringBuilder(DEFAULT_REQUEST_STRING);
|
||||
|
||||
@ -762,7 +773,8 @@ public final class OpenstackNetworkingUtil {
|
||||
modifiedDstIp = osNetService.gatewayIp(srcInstancePort.portId());
|
||||
requestStringBuilder.append(DL_DST)
|
||||
.append(DEFAULT_GATEWAY_MAC_STR).append(COMMA);
|
||||
} else if (!osNetService.ipPrefix(srcInstancePort.portId()).contains(IpAddress.valueOf(dstIp))) {
|
||||
} else if (!osNetService.ipPrefix(srcInstancePort.portId()).contains(
|
||||
IpAddress.valueOf(dstIp))) {
|
||||
requestStringBuilder.append(DL_DST)
|
||||
.append(DEFAULT_GATEWAY_MAC_STR)
|
||||
.append(COMMA);
|
||||
@ -824,7 +836,7 @@ public final class OpenstackNetworkingUtil {
|
||||
final InputStream inputStream =
|
||||
new ByteArrayInputStream(requestString.getBytes(Charsets.UTF_8));
|
||||
|
||||
OutputStream outputStream = new ByteArrayOutputStream();
|
||||
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
||||
OutputStream errStream = new ByteArrayOutputStream();
|
||||
|
||||
channel.setIn(new NoCloseInputStream(inputStream));
|
||||
@ -848,7 +860,7 @@ public final class OpenstackNetworkingUtil {
|
||||
}
|
||||
TimeUnit.SECONDS.sleep(WAIT_OUTPUT_STREAM_SECOND);
|
||||
|
||||
traceResult = ((ByteArrayOutputStream) outputStream).toString(Charsets.UTF_8.name());
|
||||
traceResult = outputStream.toString(Charsets.UTF_8.name());
|
||||
|
||||
channel.close();
|
||||
}
|
||||
@ -874,7 +886,8 @@ public final class OpenstackNetworkingUtil {
|
||||
* @return floating ip
|
||||
*/
|
||||
public static NetFloatingIP floatingIpByInstancePort(InstancePort instancePort,
|
||||
OpenstackRouterAdminService osRouterAdminService) {
|
||||
OpenstackRouterAdminService
|
||||
osRouterAdminService) {
|
||||
return osRouterAdminService.floatingIps().stream()
|
||||
.filter(netFloatingIP -> netFloatingIP.getPortId() != null)
|
||||
.filter(netFloatingIP -> netFloatingIP.getPortId().equals(instancePort.portId()))
|
||||
@ -913,8 +926,10 @@ public final class OpenstackNetworkingUtil {
|
||||
* @return external peer router
|
||||
*/
|
||||
public static ExternalPeerRouter externalPeerRouterForNetwork(Network network,
|
||||
OpenstackNetworkService osNetworkService,
|
||||
OpenstackRouterAdminService osRouterAdminService) {
|
||||
OpenstackNetworkService
|
||||
osNetworkService,
|
||||
OpenstackRouterAdminService
|
||||
osRouterAdminService) {
|
||||
if (network == null) {
|
||||
return null;
|
||||
}
|
||||
@ -950,8 +965,11 @@ public final class OpenstackNetworkingUtil {
|
||||
* @param osNetworkService openstack network service
|
||||
* @return external peer router
|
||||
*/
|
||||
public static ExternalPeerRouter externalPeerRouterFromSubnet(Subnet subnet, OpenstackRouterService osRouterService,
|
||||
OpenstackNetworkService osNetworkService) {
|
||||
public static ExternalPeerRouter externalPeerRouterFromSubnet(Subnet subnet,
|
||||
OpenstackRouterService
|
||||
osRouterService,
|
||||
OpenstackNetworkService
|
||||
osNetworkService) {
|
||||
Router osRouter = getRouterFromSubnet(subnet, osRouterService);
|
||||
if (osRouter == null) {
|
||||
return null;
|
||||
@ -975,8 +993,10 @@ public final class OpenstackNetworkingUtil {
|
||||
* @return external ip address
|
||||
*/
|
||||
public static IpAddress externalIpFromSubnet(Subnet srcSubnet,
|
||||
OpenstackRouterService osRouterService,
|
||||
OpenstackNetworkService osNetworkService) {
|
||||
OpenstackRouterService
|
||||
osRouterService,
|
||||
OpenstackNetworkService
|
||||
osNetworkService) {
|
||||
|
||||
Router osRouter = getRouterFromSubnet(srcSubnet, osRouterService);
|
||||
|
||||
@ -997,14 +1017,16 @@ public final class OpenstackNetworkingUtil {
|
||||
* @param osNetworkService openstack network service
|
||||
* @return external ip address
|
||||
*/
|
||||
public static IpAddress getExternalIp(Router router, OpenstackNetworkService osNetworkService) {
|
||||
public static IpAddress getExternalIp(Router router,
|
||||
OpenstackNetworkService osNetworkService) {
|
||||
if (router == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
ExternalGateway externalGateway = router.getExternalGatewayInfo();
|
||||
if (externalGateway == null || !externalGateway.isEnableSnat()) {
|
||||
log.trace("Failed to get externalIp for router {} because externalGateway is null or SNAT is disabled",
|
||||
log.trace("Failed to get externalIp for router {} because " +
|
||||
"externalGateway is null or SNAT is disabled",
|
||||
router.getId());
|
||||
return null;
|
||||
}
|
||||
@ -1023,7 +1045,8 @@ public final class OpenstackNetworkingUtil {
|
||||
.findAny().get().getIpAddress());
|
||||
}
|
||||
|
||||
private static Router getRouterFromSubnet(Subnet subnet, OpenstackRouterService osRouterService) {
|
||||
private static Router getRouterFromSubnet(Subnet subnet,
|
||||
OpenstackRouterService osRouterService) {
|
||||
RouterInterface osRouterIface = osRouterService.routerInterfaces().stream()
|
||||
.filter(i -> Objects.equals(i.getSubnetId(), subnet.getId()))
|
||||
.findAny().orElse(null);
|
||||
@ -1066,8 +1089,8 @@ public final class OpenstackNetworkingUtil {
|
||||
arp.setSenderHardwareAddress(instancePort.macAddress().toBytes());
|
||||
arp.setTargetHardwareAddress(MacAddress.BROADCAST.toBytes());
|
||||
|
||||
arp.setSenderProtocolAddress(Ip4Address.valueOf(floatingIP.getFloatingIpAddress()).toInt());
|
||||
arp.setTargetProtocolAddress(Ip4Address.valueOf(floatingIP.getFloatingIpAddress()).toInt());
|
||||
arp.setSenderProtocolAddress(valueOf(floatingIP.getFloatingIpAddress()).toInt());
|
||||
arp.setTargetProtocolAddress(valueOf(floatingIP.getFloatingIpAddress()).toInt());
|
||||
|
||||
ethernet.setPayload(arp);
|
||||
|
||||
|
||||
@ -76,7 +76,8 @@ public final class RulePopulatorUtil {
|
||||
* @param id DeviceId
|
||||
* @return a builder for OVS Connection Tracking feature actions
|
||||
*/
|
||||
public static NiriraConnTrackTreatmentBuilder niciraConnTrackTreatmentBuilder(DriverService ds, DeviceId id) {
|
||||
public static NiriraConnTrackTreatmentBuilder
|
||||
niciraConnTrackTreatmentBuilder(DriverService ds, DeviceId id) {
|
||||
return new NiriraConnTrackTreatmentBuilder(ds, id);
|
||||
}
|
||||
|
||||
@ -102,12 +103,14 @@ public final class RulePopulatorUtil {
|
||||
}
|
||||
|
||||
ExtensionTreatmentResolver resolver = device.as(ExtensionTreatmentResolver.class);
|
||||
ExtensionTreatment treatment = resolver.getExtensionInstruction(NICIRA_SET_TUNNEL_DST.type());
|
||||
ExtensionTreatment treatment =
|
||||
resolver.getExtensionInstruction(NICIRA_SET_TUNNEL_DST.type());
|
||||
try {
|
||||
treatment.setPropertyValue(TUNNEL_DST, remoteIp);
|
||||
return treatment;
|
||||
} catch (ExtensionPropertyException e) {
|
||||
log.warn("Failed to get tunnelDst extension treatment for {} because of {}", deviceId, e);
|
||||
log.warn("Failed to get tunnelDst extension treatment for {} " +
|
||||
"because of {}", deviceId, e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@ -121,8 +124,10 @@ public final class RulePopulatorUtil {
|
||||
* @param ctSateMask connection tracking sate masking value
|
||||
* @return OVS ConnTrack extension match
|
||||
*/
|
||||
public static ExtensionSelector buildCtExtensionSelector(DriverService driverService, DeviceId deviceId,
|
||||
long ctState, long ctSateMask) {
|
||||
public static ExtensionSelector buildCtExtensionSelector(DriverService driverService,
|
||||
DeviceId deviceId,
|
||||
long ctState,
|
||||
long ctSateMask) {
|
||||
DriverHandler handler = driverService.createHandler(deviceId);
|
||||
ExtensionSelectorResolver esr = handler.behaviour(ExtensionSelectorResolver.class);
|
||||
|
||||
@ -147,7 +152,9 @@ public final class RulePopulatorUtil {
|
||||
* @param isEstablished true for +est, false for nothing
|
||||
* @return ConnTrack State flags
|
||||
*/
|
||||
public static long computeCtStateFlag(boolean isTracking, boolean isNew, boolean isEstablished) {
|
||||
public static long computeCtStateFlag(boolean isTracking,
|
||||
boolean isNew,
|
||||
boolean isEstablished) {
|
||||
long ctMaskFlag = 0x00;
|
||||
|
||||
if (isTracking) {
|
||||
@ -175,7 +182,9 @@ public final class RulePopulatorUtil {
|
||||
* @param isEstablished true for setting +est value, false for otherwise
|
||||
* @return ConnTrack State Mask value
|
||||
*/
|
||||
public static long computeCtMaskFlag(boolean isTracking, boolean isNew, boolean isEstablished) {
|
||||
public static long computeCtMaskFlag(boolean isTracking,
|
||||
boolean isNew,
|
||||
boolean isEstablished) {
|
||||
long ctMaskFlag = 0x00;
|
||||
|
||||
if (isTracking) {
|
||||
@ -209,7 +218,8 @@ public final class RulePopulatorUtil {
|
||||
private boolean natAction;
|
||||
|
||||
|
||||
private NiriraConnTrackTreatmentBuilder(DriverService driverService, DeviceId deviceId) {
|
||||
private NiriraConnTrackTreatmentBuilder(DriverService driverService,
|
||||
DeviceId deviceId) {
|
||||
this.driverService = driverService;
|
||||
this.deviceId = deviceId;
|
||||
}
|
||||
@ -278,12 +288,13 @@ public final class RulePopulatorUtil {
|
||||
DriverHandler handler = driverService.createHandler(deviceId);
|
||||
ExtensionTreatmentResolver etr = handler.behaviour(ExtensionTreatmentResolver.class);
|
||||
|
||||
ExtensionTreatment natTreatment
|
||||
= etr.getExtensionInstruction(ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_NAT.type());
|
||||
ExtensionTreatment natTreatment = etr.getExtensionInstruction(
|
||||
ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_NAT.type());
|
||||
try {
|
||||
if (natAddress != null) {
|
||||
natTreatment.setPropertyValue(CT_FLAGS, 1);
|
||||
natTreatment.setPropertyValue(CT_PRESENT_FLAGS, buildPresentFlag(false, true));
|
||||
natTreatment.setPropertyValue(CT_PRESENT_FLAGS,
|
||||
buildPresentFlag(false, true));
|
||||
natTreatment.setPropertyValue(CT_IPADDRESS_MIN, natAddress);
|
||||
natTreatment.setPropertyValue(CT_IPADDRESS_MAX, natAddress);
|
||||
} else {
|
||||
@ -295,8 +306,8 @@ public final class RulePopulatorUtil {
|
||||
return null;
|
||||
}
|
||||
|
||||
ExtensionTreatment ctTreatment
|
||||
= etr.getExtensionInstruction(ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_CT.type());
|
||||
ExtensionTreatment ctTreatment = etr.getExtensionInstruction(
|
||||
ExtensionTreatmentType.ExtensionTreatmentTypes.NICIRA_CT.type());
|
||||
try {
|
||||
List<ExtensionTreatment> nat = new ArrayList<>();
|
||||
if (natAction) {
|
||||
|
||||
@ -58,7 +58,8 @@ public class OpenstackPortWebResource extends AbstractWebResource {
|
||||
private static final String VHOSTUSER = "vhostuser";
|
||||
private static final String SOCKET_DIR = "socket_dir";
|
||||
|
||||
private final OpenstackNetworkAdminService adminService = get(OpenstackNetworkAdminService.class);
|
||||
private final OpenstackNetworkAdminService
|
||||
adminService = get(OpenstackNetworkAdminService.class);
|
||||
private final OpenstackNodeService nodeService = get(OpenstackNodeService.class);
|
||||
|
||||
@Context
|
||||
|
||||
@ -20,7 +20,6 @@ import org.apache.karaf.shell.api.console.CommandLine;
|
||||
import org.apache.karaf.shell.api.console.Completer;
|
||||
import org.apache.karaf.shell.api.console.Session;
|
||||
import org.apache.karaf.shell.support.completers.StringsCompleter;
|
||||
import org.onosproject.cli.AbstractShellCommand;
|
||||
import org.onosproject.openstacknode.api.OpenstackNode;
|
||||
import org.onosproject.openstacknode.api.OpenstackNodeService;
|
||||
|
||||
@ -29,6 +28,8 @@ import java.util.Set;
|
||||
import java.util.SortedSet;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static org.onosproject.cli.AbstractShellCommand.get;
|
||||
|
||||
/**
|
||||
* Openstack host completer.
|
||||
*/
|
||||
@ -38,7 +39,7 @@ public class OpenstackHostnameCompleter implements Completer {
|
||||
@Override
|
||||
public int complete(Session session, CommandLine commandLine, List<String> candidates) {
|
||||
StringsCompleter delegate = new StringsCompleter();
|
||||
OpenstackNodeService osNodeService = AbstractShellCommand.get(OpenstackNodeService.class);
|
||||
OpenstackNodeService osNodeService = get(OpenstackNodeService.class);
|
||||
|
||||
Set<String> hostnames = osNodeService.nodes().stream()
|
||||
.map(OpenstackNode::hostname)
|
||||
|
||||
@ -21,9 +21,9 @@ import org.apache.karaf.shell.api.action.Command;
|
||||
import org.apache.karaf.shell.api.action.Completion;
|
||||
import org.apache.karaf.shell.api.action.lifecycle.Service;
|
||||
import org.onosproject.cli.AbstractShellCommand;
|
||||
import org.onosproject.net.Device;
|
||||
import org.onosproject.net.DeviceId;
|
||||
import org.onosproject.net.Port;
|
||||
import org.onosproject.net.Device;
|
||||
import org.onosproject.net.device.DeviceService;
|
||||
import org.onosproject.openstacknode.api.NodeState;
|
||||
import org.onosproject.openstacknode.api.OpenstackNode;
|
||||
@ -55,8 +55,8 @@ public class OpenstackNodeCheckCommand extends AbstractShellCommand {
|
||||
|
||||
@Override
|
||||
protected void doExecute() {
|
||||
OpenstackNodeService osNodeService = AbstractShellCommand.get(OpenstackNodeService.class);
|
||||
DeviceService deviceService = AbstractShellCommand.get(DeviceService.class);
|
||||
OpenstackNodeService osNodeService = get(OpenstackNodeService.class);
|
||||
DeviceService deviceService = get(DeviceService.class);
|
||||
|
||||
OpenstackNode osNode = osNodeService.node(hostname);
|
||||
if (osNode == null) {
|
||||
@ -110,7 +110,8 @@ public class OpenstackNodeCheckCommand extends AbstractShellCommand {
|
||||
}
|
||||
}
|
||||
|
||||
private void printPortState(DeviceService deviceService, DeviceId deviceId, String portName) {
|
||||
private void printPortState(DeviceService deviceService,
|
||||
DeviceId deviceId, String portName) {
|
||||
Port port = deviceService.getPorts(deviceId).stream()
|
||||
.filter(p -> p.annotations().value(PORT_NAME).equals(portName) &&
|
||||
p.isEnabled())
|
||||
|
||||
@ -51,10 +51,8 @@ public class OpenstackNodeInitCommand extends AbstractShellCommand {
|
||||
|
||||
@Override
|
||||
protected void doExecute() {
|
||||
OpenstackNodeService osNodeService =
|
||||
AbstractShellCommand.get(OpenstackNodeService.class);
|
||||
OpenstackNodeAdminService osNodeAdminService =
|
||||
AbstractShellCommand.get(OpenstackNodeAdminService.class);
|
||||
OpenstackNodeService osNodeService = get(OpenstackNodeService.class);
|
||||
OpenstackNodeAdminService osNodeAdminService = get(OpenstackNodeAdminService.class);
|
||||
|
||||
if ((!isAll && !isIncomplete && hostnames == null) ||
|
||||
(isAll && isIncomplete) ||
|
||||
|
||||
@ -28,6 +28,7 @@ import org.onosproject.openstacknode.api.OpenstackNodeService;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
import static org.onosproject.openstacknode.api.OpenstackNode.NodeType.GATEWAY;
|
||||
import static org.onosproject.openstacknode.util.OpenstackNodeUtil.getGwByComputeNode;
|
||||
import static org.onosproject.openstacknode.util.OpenstackNodeUtil.prettyJson;
|
||||
|
||||
@ -43,15 +44,15 @@ public class OpenstackNodeListCommand extends AbstractShellCommand {
|
||||
|
||||
@Override
|
||||
protected void doExecute() {
|
||||
OpenstackNodeService osNodeService = AbstractShellCommand.get(OpenstackNodeService.class);
|
||||
OpenstackNodeService osNodeService = get(OpenstackNodeService.class);
|
||||
List<OpenstackNode> osNodes = Lists.newArrayList(osNodeService.nodes());
|
||||
osNodes.sort(Comparator.comparing(OpenstackNode::hostname));
|
||||
|
||||
if (outputJson()) {
|
||||
print("%s", json(osNodes));
|
||||
} else {
|
||||
print(FORMAT, "Hostname", "Type", "Integration Bridge",
|
||||
"Management IP", "Data IP", "VLAN Intf", "Uplink Port", "State", "SelectedGw");
|
||||
print(FORMAT, "Hostname", "Type", "Integration Bridge", "Management IP",
|
||||
"Data IP", "VLAN Intf", "Uplink Port", "State", "SelectedGw");
|
||||
for (OpenstackNode osNode : osNodes) {
|
||||
print(FORMAT,
|
||||
osNode.hostname(),
|
||||
@ -62,7 +63,7 @@ public class OpenstackNodeListCommand extends AbstractShellCommand {
|
||||
osNode.vlanIntf() != null ? osNode.vlanIntf() : "",
|
||||
osNode.uplinkPort() != null ? osNode.uplinkPort() : "",
|
||||
osNode.state(),
|
||||
getGwByComputeNode(osNodeService.completeNodes(OpenstackNode.NodeType.GATEWAY), osNode));
|
||||
getGwByComputeNode(osNodeService.completeNodes(GATEWAY), osNode));
|
||||
}
|
||||
print("Total %s nodes", osNodeService.nodes().size());
|
||||
}
|
||||
|
||||
@ -149,7 +149,8 @@ public class DefaultOpenstackNodeHandler implements OpenstackNodeHandler {
|
||||
/** OVSDB server listen port. */
|
||||
private int ovsdbPortNum = OVSDB_PORT_NUM_DEFAULT;
|
||||
|
||||
/** A flag which indicates whether auto-recover openstack node status on switch reconnecting event. */
|
||||
/** A flag which indicates whether auto-recover openstack node status on
|
||||
* switch reconnecting event. */
|
||||
private boolean autoRecovery = AUTO_RECOVERY_DEFAULT;
|
||||
|
||||
private final ExecutorService eventExecutor = newSingleThreadExecutor(
|
||||
@ -229,14 +230,14 @@ public class DefaultOpenstackNodeHandler implements OpenstackNodeHandler {
|
||||
|
||||
if (osNode.dpdkConfig() != null && osNode.dpdkConfig().dpdkIntfs() != null) {
|
||||
osNode.dpdkConfig().dpdkIntfs().stream()
|
||||
.filter(dpdkInterface -> dpdkInterface.deviceName().equals(TUNNEL_BRIDGE))
|
||||
.forEach(dpdkInterface -> addOrRemoveDpdkInterface(
|
||||
osNode, dpdkInterface, ovsdbPortNum, ovsdbController, true));
|
||||
.filter(dpdkintf -> dpdkintf.deviceName().equals(TUNNEL_BRIDGE))
|
||||
.forEach(dpdkintf -> addOrRemoveDpdkInterface(
|
||||
osNode, dpdkintf, ovsdbPortNum, ovsdbController, true));
|
||||
|
||||
osNode.dpdkConfig().dpdkIntfs().stream()
|
||||
.filter(dpdkInterface -> dpdkInterface.deviceName().equals(INTEGRATION_BRIDGE))
|
||||
.forEach(dpdkInterface -> addOrRemoveDpdkInterface(
|
||||
osNode, dpdkInterface, ovsdbPortNum, ovsdbController, true));
|
||||
.filter(dpdkintf -> dpdkintf.deviceName().equals(INTEGRATION_BRIDGE))
|
||||
.forEach(dpdkintf -> addOrRemoveDpdkInterface(
|
||||
osNode, dpdkintf, ovsdbPortNum, ovsdbController, true));
|
||||
}
|
||||
|
||||
osNode.phyIntfs().forEach(i -> {
|
||||
@ -249,7 +250,7 @@ public class DefaultOpenstackNodeHandler implements OpenstackNodeHandler {
|
||||
if (osNode.vlanIntf() != null &&
|
||||
!isIntfEnabled(osNode, osNode.vlanIntf())) {
|
||||
addOrRemoveSystemInterface(osNode, INTEGRATION_BRIDGE,
|
||||
osNode.vlanIntf(), deviceService, true);
|
||||
osNode.vlanIntf(), deviceService, true);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("Exception occurred because of {}", e.toString());
|
||||
@ -367,7 +368,8 @@ public class DefaultOpenstackNodeHandler implements OpenstackNodeHandler {
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether a given network interface in a given openstack node is enabled or not.
|
||||
* Checks whether a given network interface in a given openstack node
|
||||
* is enabled or not.
|
||||
*
|
||||
* @param osNode openstack node
|
||||
* @param intf network interface name
|
||||
@ -390,7 +392,8 @@ public class DefaultOpenstackNodeHandler implements OpenstackNodeHandler {
|
||||
private boolean isCurrentStateDone(OpenstackNode osNode) {
|
||||
switch (osNode.state()) {
|
||||
case INIT:
|
||||
if (!isOvsdbConnected(osNode, ovsdbPortNum, ovsdbController, deviceService)) {
|
||||
if (!isOvsdbConnected(osNode, ovsdbPortNum,
|
||||
ovsdbController, deviceService)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -445,15 +448,15 @@ public class DefaultOpenstackNodeHandler implements OpenstackNodeHandler {
|
||||
|
||||
Set<OvsdbPort> ports = client.getPorts();
|
||||
|
||||
for (DpdkInterface dpdkInterface : dpdkInterfaces) {
|
||||
for (DpdkInterface dpdkIntf : dpdkInterfaces) {
|
||||
Optional<OvsdbPort> port = ports.stream()
|
||||
.filter(ovsdbPort -> ovsdbPort.portName().value().equals(dpdkInterface.intf()))
|
||||
.filter(ovsdbPort -> ovsdbPort.portName().value().equals(dpdkIntf.intf()))
|
||||
.findAny();
|
||||
|
||||
if (!port.isPresent()) {
|
||||
return false;
|
||||
}
|
||||
Interface intf = client.getInterface(dpdkInterface.intf());
|
||||
Interface intf = client.getInterface(dpdkIntf.intf());
|
||||
if (intf == null) {
|
||||
return false;
|
||||
}
|
||||
@ -468,8 +471,8 @@ public class DefaultOpenstackNodeHandler implements OpenstackNodeHandler {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!mtu.set().contains(dpdkInterface.mtu().intValue()) ||
|
||||
!option.toString().contains(dpdkInterface.pciAddress())) {
|
||||
if (!mtu.set().contains(dpdkIntf.mtu().intValue()) ||
|
||||
!option.toString().contains(dpdkIntf.pciAddress())) {
|
||||
log.trace("The dpdk interface {} was created but mtu or " +
|
||||
"pci address is different from the config.");
|
||||
return false;
|
||||
@ -516,21 +519,23 @@ public class DefaultOpenstackNodeHandler implements OpenstackNodeHandler {
|
||||
|
||||
private void removeVlanInterface(OpenstackNode osNode) {
|
||||
if (osNode.vlanIntf() != null) {
|
||||
Optional<DpdkInterface> dpdkInterface = dpdkInterfaceByIntfName(osNode, osNode.vlanIntf());
|
||||
Optional<DpdkInterface> dpdkIntf =
|
||||
dpdkInterfaceByIntfName(osNode, osNode.vlanIntf());
|
||||
|
||||
removeInterfaceOnIntegrationBridge(osNode, osNode.vlanIntf(), dpdkInterface);
|
||||
removeInterfaceOnIntegrationBridge(osNode, osNode.vlanIntf(), dpdkIntf);
|
||||
}
|
||||
}
|
||||
|
||||
private void removePhysicalInterface(OpenstackNode osNode) {
|
||||
osNode.phyIntfs().forEach(phyIntf -> {
|
||||
Optional<DpdkInterface> dpdkInterface = dpdkInterfaceByIntfName(osNode, phyIntf.intf());
|
||||
Optional<DpdkInterface> dpdkIntf = dpdkInterfaceByIntfName(osNode, phyIntf.intf());
|
||||
|
||||
removeInterfaceOnIntegrationBridge(osNode, phyIntf.intf(), dpdkInterface);
|
||||
removeInterfaceOnIntegrationBridge(osNode, phyIntf.intf(), dpdkIntf);
|
||||
});
|
||||
}
|
||||
|
||||
private Optional<DpdkInterface> dpdkInterfaceByIntfName(OpenstackNode osNode, String intf) {
|
||||
private Optional<DpdkInterface> dpdkInterfaceByIntfName(OpenstackNode osNode,
|
||||
String intf) {
|
||||
return osNode.dpdkConfig() == null ? Optional.empty() :
|
||||
osNode.dpdkConfig().dpdkIntfs().stream()
|
||||
.filter(dpdkIntf -> dpdkIntf.intf().equals(intf))
|
||||
|
||||
@ -82,8 +82,10 @@ public class DistributedOpenstackNodeStore
|
||||
|
||||
private static final String ERR_NOT_FOUND = " does not exist";
|
||||
private static final String ERR_DUPLICATE = " already exists";
|
||||
private static final String APP_ID = "org.onosproject.openstacknode";
|
||||
|
||||
private static final KryoNamespace SERIALIZER_OPENSTACK_NODE = KryoNamespace.newBuilder()
|
||||
private static final KryoNamespace
|
||||
SERIALIZER_OPENSTACK_NODE = KryoNamespace.newBuilder()
|
||||
.register(KryoNamespaces.API)
|
||||
.register(OpenstackNode.class)
|
||||
.register(DefaultOpenstackNode.class)
|
||||
@ -122,7 +124,7 @@ public class DistributedOpenstackNodeStore
|
||||
|
||||
@Activate
|
||||
protected void activate() {
|
||||
ApplicationId appId = coreService.registerApplication("org.onosproject.openstacknode");
|
||||
ApplicationId appId = coreService.registerApplication(APP_ID);
|
||||
osNodeStore = storageService.<String, OpenstackNode>consistentMapBuilder()
|
||||
.withSerializer(Serializer.using(SERIALIZER_OPENSTACK_NODE))
|
||||
.withName("openstack-nodestore")
|
||||
@ -180,7 +182,8 @@ public class DistributedOpenstackNodeStore
|
||||
/**
|
||||
* An internal openstack node map listener.
|
||||
*/
|
||||
private class OpenstackNodeMapListener implements MapEventListener<String, OpenstackNode> {
|
||||
private class OpenstackNodeMapListener
|
||||
implements MapEventListener<String, OpenstackNode> {
|
||||
|
||||
@Override
|
||||
public void event(MapEvent<String, OpenstackNode> event) {
|
||||
|
||||
@ -78,7 +78,8 @@ import static org.slf4j.LoggerFactory.getLogger;
|
||||
OVSDB_PORT + ":Integer=" + OVSDB_PORT_NUM_DEFAULT
|
||||
}
|
||||
)
|
||||
public class OpenstackNodeManager extends ListenerRegistry<OpenstackNodeEvent, OpenstackNodeListener>
|
||||
public class OpenstackNodeManager
|
||||
extends ListenerRegistry<OpenstackNodeEvent, OpenstackNodeListener>
|
||||
implements OpenstackNodeService, OpenstackNodeAdminService {
|
||||
|
||||
private final Logger log = getLogger(getClass());
|
||||
@ -210,8 +211,8 @@ public class OpenstackNodeManager extends ListenerRegistry<OpenstackNodeEvent, O
|
||||
}
|
||||
|
||||
if (!intfsRemovedFromExistNode(existingNode)) {
|
||||
log.error("Updated node failed because intfs of existingNode {} are not removed properly",
|
||||
existingNode.toString());
|
||||
log.error("Updated node failed because intfs of existingNode {} " +
|
||||
"are not removed properly", existingNode.toString());
|
||||
return;
|
||||
}
|
||||
|
||||
@ -291,7 +292,8 @@ public class OpenstackNodeManager extends ListenerRegistry<OpenstackNodeEvent, O
|
||||
|
||||
connectSwitch(osNode);
|
||||
|
||||
addOrRemoveSystemInterface(osNode, INTEGRATION_BRIDGE, portName, deviceService, true);
|
||||
addOrRemoveSystemInterface(osNode, INTEGRATION_BRIDGE, portName,
|
||||
deviceService, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -300,7 +302,8 @@ public class OpenstackNodeManager extends ListenerRegistry<OpenstackNodeEvent, O
|
||||
|
||||
connectSwitch(osNode);
|
||||
|
||||
addOrRemoveSystemInterface(osNode, INTEGRATION_BRIDGE, portName, deviceService, false);
|
||||
addOrRemoveSystemInterface(osNode, INTEGRATION_BRIDGE, portName,
|
||||
deviceService, false);
|
||||
}
|
||||
|
||||
private boolean intfsRemovedFromExistNode(OpenstackNode osNode) {
|
||||
@ -347,8 +350,8 @@ public class OpenstackNodeManager extends ListenerRegistry<OpenstackNodeEvent, O
|
||||
try {
|
||||
ovsdbController.connect(osNode.managementIp(), tpPort(ovsdbPortNum));
|
||||
} catch (Exception e) {
|
||||
log.error("Failed to connect to the openstackNode via ovsdb protocol because of exception {}",
|
||||
e.toString());
|
||||
log.error("Failed to connect to the openstackNode via ovsdb " +
|
||||
"protocol because of exception {}", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -279,7 +279,8 @@ public final class OpenstackNodeUtil {
|
||||
}
|
||||
|
||||
if (addOrRemove) {
|
||||
Map<String, String> options = ImmutableMap.of(DPDK_DEVARGS, dpdkInterface.pciAddress());
|
||||
Map<String, String> options =
|
||||
ImmutableMap.of(DPDK_DEVARGS, dpdkInterface.pciAddress());
|
||||
|
||||
OvsdbInterface.Builder builder = OvsdbInterface.builder()
|
||||
.name(dpdkInterface.intf())
|
||||
@ -302,7 +303,8 @@ public final class OpenstackNodeUtil {
|
||||
* @param openstackNode device identifier
|
||||
* @return the hostname of selected gateway node
|
||||
*/
|
||||
public static String getGwByComputeNode(Set<OpenstackNode> gws, OpenstackNode openstackNode) {
|
||||
public static String getGwByComputeNode(Set<OpenstackNode> gws,
|
||||
OpenstackNode openstackNode) {
|
||||
int numOfGw = gws.size();
|
||||
|
||||
if (numOfGw == 0) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user