Fix odlparent 3 Checkstyle issues
[groupbasedpolicy.git] / neutron-mapper / src / main / java / org / opendaylight / groupbasedpolicy / neutron / mapper / util / PortUtils.java
1 /*
2  * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.opendaylight.groupbasedpolicy.neutron.mapper.util;
10
11 import com.google.common.base.Optional;
12 import java.util.Collections;
13 import java.util.HashSet;
14 import java.util.List;
15 import java.util.Set;
16 import javax.annotation.Nullable;
17 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.NetworkDomainId;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.binding.rev150712.PortBindingExtension;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.ports.rev150712.port.attributes.FixedIps;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.ports.rev150712.ports.attributes.Ports;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.ports.rev150712.ports.attributes.ports.Port;
23
24 public final class PortUtils {
25     private PortUtils() {
26     }
27
28     public static final String DEVICE_OWNER_DHCP = "network:dhcp";
29     public static final String DEVICE_OWNER_ROUTER_IFACE = "network:router_interface";
30     public static final String DEVICE_OWNER_ROUTER_GATEWAY = "network:router_gateway";
31     public static final String DEVICE_OWNER_FLOATING_IP = "network:floatingip";
32     public static final String DEVICE_VIF_TYPE = "vhostuser";
33
34     public static Optional<Port> findPort(Uuid uuid, @Nullable Ports ports) {
35         if (ports == null || ports.getPort() == null) {
36             return Optional.absent();
37         }
38         for (Port port : ports.getPort()) {
39             if (port.getUuid().equals(uuid)) {
40                 return Optional.of(port);
41             }
42         }
43         return Optional.absent();
44     }
45
46     public static Set<Port> findRouterInterfacePorts(@Nullable Ports ports) {
47         if (ports == null || ports.getPort() == null) {
48             return Collections.emptySet();
49         }
50         Set<Port> routerInterfacePorts = new HashSet<>();
51         for (Port port : ports.getPort()) {
52             if (isRouterInterfacePort(port)) {
53                 routerInterfacePorts.add(port);
54             }
55         }
56         return routerInterfacePorts;
57     }
58
59     public static Set<Port> findPortsBySubnet(Uuid subnetUuid, @Nullable Ports ports) {
60         if (ports == null || ports.getPort() == null) {
61             return Collections.emptySet();
62         }
63         Set<Port> portsWithSubnet = new HashSet<>();
64         for (Port port : ports.getPort()) {
65             List<FixedIps> fixedIps = port.getFixedIps();
66             if (fixedIps != null && !fixedIps.isEmpty()) {
67                 for (FixedIps ipWithSubnet : fixedIps) {
68                     if (ipWithSubnet.getSubnetId().equals(subnetUuid)) {
69                         portsWithSubnet.add(port);
70                     }
71                 }
72             }
73         }
74         return portsWithSubnet;
75     }
76
77     public static Optional<FixedIps> resolveFirstFixedIps(Port port) {
78         List<FixedIps> fixedIps = port.getFixedIps();
79         if (fixedIps != null && !fixedIps.isEmpty()) {
80             return Optional.of(fixedIps.get(0));
81         }
82         return Optional.absent();
83     }
84
85     public static Optional<NetworkDomainId> resolveNetworkContainment(Port port) {
86         Optional<FixedIps> firstFixedIps = PortUtils.resolveFirstFixedIps(port);
87         if (firstFixedIps.isPresent() && firstFixedIps.get().getSubnetId() != null) {
88             FixedIps ipWithSubnet = firstFixedIps.get();
89             return Optional.of(new NetworkDomainId(ipWithSubnet.getSubnetId().getValue()));
90         }
91         return Optional.absent();
92     }
93
94     public static boolean isNormalPort(Port port) {
95         if (isDhcpPort(port) || isRouterInterfacePort(port) || isRouterGatewayPort(port) || isFloatingIpPort(port)) {
96             return false;
97         }
98         return true;
99     }
100
101     public static boolean isDhcpPort(Port port) {
102         return DEVICE_OWNER_DHCP.equals(port.getDeviceOwner());
103     }
104
105     public static boolean isQrouterOrVppRouterPort(Port port) {
106         return DEVICE_OWNER_ROUTER_IFACE.equals(port.getDeviceOwner())
107             && port.getAugmentation(PortBindingExtension.class) != null;
108     }
109
110     public static boolean isRouterInterfacePort(Port port) {
111         return DEVICE_OWNER_ROUTER_IFACE.equals(port.getDeviceOwner());
112     }
113
114     public static boolean isRouterGatewayPort(Port port) {
115         return DEVICE_OWNER_ROUTER_GATEWAY.equals(port.getDeviceOwner());
116     }
117
118     public static boolean isFloatingIpPort(Port port) {
119         return DEVICE_OWNER_FLOATING_IP.equals(port.getDeviceOwner());
120     }
121 }