xuzhang
Committed by Gerrit Code Review

[ONOS-2248]The implementation of port resource service.

Change-Id: I4ad8422f9bc199e2e56166c041adece8de707e5d
1 +<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2 +<!--
3 + ~ Copyright 2015 Open Networking Laboratory
4 + ~
5 + ~ Licensed under the Apache License, Version 2.0 (the "License");
6 + ~ you may not use this file except in compliance with the License.
7 + ~ You may obtain a copy of the License at
8 + ~
9 + ~ http://www.apache.org/licenses/LICENSE-2.0
10 + ~
11 + ~ Unless required by applicable law or agreed to in writing, software
12 + ~ distributed under the License is distributed on an "AS IS" BASIS,
13 + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 + ~ See the License for the specific language governing permissions and
15 + ~ limitations under the License.
16 + -->
17 +<features xmlns="http://karaf.apache.org/xmlns/features/v1.2.0" name="${project.artifactId}-${project.version}">
18 + <repository>mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features</repository>
19 + <feature name="onos-app-vtnrsc" version="@FEATURE-VERSION"
20 + description="ONOS app vtnrsc components">
21 + <feature>onos-api</feature>
22 + <bundle>mvn:org.onosproject/onos-app-vtnrsc/@ONOS-VERSION
23 + </bundle>
24 + </feature>
25 +</features>
1 +/*
2 + * Copyright 2015 Open Networking Laboratory
3 + *
4 + * Licensed under the Apache License, Version 2.0 (the "License");
5 + * you may not use this file except in compliance with the License.
6 + * You may obtain a copy of the License at
7 + *
8 + * http://www.apache.org/licenses/LICENSE-2.0
9 + *
10 + * Unless required by applicable law or agreed to in writing, software
11 + * distributed under the License is distributed on an "AS IS" BASIS,
12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 + * See the License for the specific language governing permissions and
14 + * limitations under the License.
15 + */
16 +package org.onosproject.app.vtnrsc;
17 +
18 +import static com.google.common.base.MoreObjects.toStringHelper;
19 +
20 +import java.util.Collection;
21 +import java.util.Map;
22 +import java.util.Objects;
23 +
24 +import org.onlab.packet.MacAddress;
25 +import org.onosproject.net.DeviceId;
26 +import org.onosproject.net.HostId;
27 +
28 +/**
29 + * Default implementation of VirtualPort interface .
30 + */
31 +public final class DefaultVirtualPort implements VirtualPort {
32 + private final VirtualPortId id;
33 + private final TenantNetworkId networkId;
34 + private final Boolean adminStateUp;
35 + private final String name;
36 + private final State state;
37 + private final MacAddress macAddress;
38 + private final TenantId tenantId;
39 + private final String deviceOwner;
40 + private final DeviceId deviceId;
41 + private final FixedIp fixedIp;
42 + private final HostId bindingHostId;
43 + private final String bindingVnicType;
44 + private final String bindingVifType;
45 + private final String bindingVifDetails;
46 + private final Collection<AllowedAddressPair> allowedAddressPairs;
47 + private final Collection<SecurityGroup> securityGroups;
48 +
49 + /**
50 + * Creates a VirtualPort object.
51 + *
52 + * @param id the virtual port identifier
53 + * @param networkId the network identifier
54 + * @param adminStateUp adminStateup true or false
55 + * @param strMap the map of properties of virtual port
56 + * @param state virtual port state
57 + * @param macAddress the MAC address
58 + * @param tenantId the tenant identifier
59 + * @param deviceId the device identifier
60 + * @param fixedIp the fixed IP
61 + * @param bindingHostId the binding host identifier
62 + * @param allowedAddressPairs the collection of allowdeAddressPairs
63 + * @param securityGroups the collection of securityGroups
64 + */
65 + public DefaultVirtualPort(VirtualPortId id,
66 + TenantNetworkId networkId,
67 + Boolean adminStateUp,
68 + Map<String, String> strMap,
69 + State state,
70 + MacAddress macAddress,
71 + TenantId tenantId,
72 + DeviceId deviceId,
73 + FixedIp fixedIp,
74 + HostId bindingHostId,
75 + Collection<AllowedAddressPair> allowedAddressPairs,
76 + Collection<SecurityGroup> securityGroups) {
77 + this.id = id;
78 + this.networkId = networkId;
79 + this.adminStateUp = adminStateUp;
80 + this.name = strMap.get("name");
81 + this.state = state;
82 + this.macAddress = macAddress;
83 + this.tenantId = tenantId;
84 + this.deviceOwner = strMap.get("deviceOwner");
85 + this.deviceId = deviceId;
86 + this.fixedIp = fixedIp;
87 + this.bindingHostId = bindingHostId;
88 + this.bindingVnicType = strMap.get("bindingVnicType");
89 + this.bindingVifType = strMap.get("bindingVifType");
90 + this.bindingVifDetails = strMap.get("bindingVifDetails");
91 + this.allowedAddressPairs = allowedAddressPairs;
92 + this.securityGroups = securityGroups;
93 + }
94 +
95 + @Override
96 + public VirtualPortId portId() {
97 + return id;
98 + }
99 +
100 + @Override
101 + public TenantNetworkId networkId() {
102 + return networkId;
103 + }
104 +
105 + @Override
106 + public String name() {
107 + return name;
108 + }
109 +
110 + @Override
111 + public boolean adminStateUp() {
112 + return adminStateUp;
113 + }
114 +
115 + @Override
116 + public State state() {
117 + return state;
118 + }
119 +
120 + @Override
121 + public MacAddress macAddress() {
122 + return macAddress;
123 + }
124 +
125 + @Override
126 + public TenantId tenantId() {
127 + return tenantId;
128 + }
129 +
130 + @Override
131 + public DeviceId deviceId() {
132 + return deviceId;
133 + }
134 +
135 + @Override
136 + public String deviceOwner() {
137 + return deviceOwner;
138 + }
139 +
140 + @Override
141 + public Collection<AllowedAddressPair> allowedAddressPairs() {
142 + return allowedAddressPairs;
143 + }
144 +
145 + @Override
146 + public FixedIp fixedIps() {
147 + return fixedIp;
148 + }
149 +
150 + @Override
151 + public HostId bindingHostId() {
152 + return bindingHostId;
153 + }
154 +
155 + @Override
156 + public String bindingVnicType() {
157 + return bindingVifType;
158 + }
159 +
160 + @Override
161 + public String bindingVifType() {
162 + return bindingVifType;
163 + }
164 +
165 + @Override
166 + public String bindingVifDetails() {
167 + return bindingVifDetails;
168 + }
169 +
170 + @Override
171 + public Collection<SecurityGroup> securityGroups() {
172 + return securityGroups;
173 + }
174 +
175 + @Override
176 + public int hashCode() {
177 + return Objects.hash(id, networkId, adminStateUp, name, state,
178 + macAddress, tenantId, deviceId, deviceOwner,
179 + allowedAddressPairs, fixedIp, bindingHostId,
180 + bindingVnicType, bindingVifType, bindingVifDetails,
181 + securityGroups);
182 + }
183 +
184 + @Override
185 + public boolean equals(Object obj) {
186 + if (this == obj) {
187 + return true;
188 + }
189 + if (obj instanceof DefaultVirtualPort) {
190 + final DefaultVirtualPort that = (DefaultVirtualPort) obj;
191 + return Objects.equals(this.id, that.id)
192 + && Objects.equals(this.networkId, that.networkId)
193 + && Objects.equals(this.adminStateUp, that.adminStateUp)
194 + && Objects.equals(this.state, that.state)
195 + && Objects.equals(this.name, that.name)
196 + && Objects.equals(this.tenantId, that.tenantId)
197 + && Objects.equals(this.macAddress, that.macAddress)
198 + && Objects.equals(this.deviceId, that.deviceId)
199 + && Objects.equals(this.deviceOwner, that.deviceOwner)
200 + && Objects.equals(this.allowedAddressPairs,
201 + that.allowedAddressPairs)
202 + && Objects.equals(this.fixedIp, that.fixedIp)
203 + && Objects.equals(this.bindingHostId, that.bindingHostId)
204 + && Objects.equals(this.bindingVifDetails,
205 + that.bindingVifDetails)
206 + && Objects.equals(this.bindingVifType, that.bindingVifType)
207 + && Objects.equals(this.bindingVnicType,
208 + that.bindingVnicType)
209 + && Objects.equals(this.securityGroups, that.securityGroups);
210 + }
211 + return false;
212 + }
213 +
214 + @Override
215 + public String toString() {
216 + return toStringHelper(this).add("id", id).add("network_id", networkId)
217 + .add("adminStateUp", adminStateUp).add("state", state)
218 + .add("name", name).add("state", state)
219 + .add("macAddress", macAddress).add("tenantId", tenantId)
220 + .add("deviced", deviceId).add("deviceOwner", deviceOwner)
221 + .add("allowedAddressPairs", allowedAddressPairs)
222 + .add("fixedIp", fixedIp).add("bindingHostId", bindingHostId)
223 + .add("bindingVnicType", bindingVnicType)
224 + .add("bindingVifDetails", bindingVifDetails)
225 + .add("bindingVifType", bindingVifType)
226 + .add("securityGroups", securityGroups).toString();
227 + }
228 +
229 +}
...@@ -22,7 +22,7 @@ import org.onosproject.net.DeviceId; ...@@ -22,7 +22,7 @@ import org.onosproject.net.DeviceId;
22 import org.onosproject.net.HostId; 22 import org.onosproject.net.HostId;
23 23
24 /** 24 /**
25 - * Representation of a virtual port. 25 + * Representation of the VirtualPort.
26 */ 26 */
27 public interface VirtualPort { 27 public interface VirtualPort {
28 /** 28 /**
...@@ -50,7 +50,7 @@ public interface VirtualPort { ...@@ -50,7 +50,7 @@ public interface VirtualPort {
50 /** 50 /**
51 * Returns the network identifier. 51 * Returns the network identifier.
52 * 52 *
53 - * @return tenantNetwork ID 53 + * @return tenantNetwork identifier
54 */ 54 */
55 TenantNetworkId networkId(); 55 TenantNetworkId networkId();
56 56
...@@ -65,9 +65,9 @@ public interface VirtualPort { ...@@ -65,9 +65,9 @@ public interface VirtualPort {
65 * Returns the administrative status of the port,which is up(true) or 65 * Returns the administrative status of the port,which is up(true) or
66 * down(false). 66 * down(false).
67 * 67 *
68 - * @return true or false 68 + * @return true if the administrative status of the port is up
69 */ 69 */
70 - Boolean adminStateUp(); 70 + boolean adminStateUp();
71 71
72 /** 72 /**
73 * Returns the state. 73 * Returns the state.
...@@ -145,7 +145,7 @@ public interface VirtualPort { ...@@ -145,7 +145,7 @@ public interface VirtualPort {
145 * 145 *
146 * @return virtualPort bindingvifDetail 146 * @return virtualPort bindingvifDetail
147 */ 147 */
148 - String bindingvifDetails(); 148 + String bindingVifDetails();
149 149
150 /** 150 /**
151 * Returns the security groups. 151 * Returns the security groups.
......
...@@ -45,32 +45,30 @@ public interface VirtualPortService { ...@@ -45,32 +45,30 @@ public interface VirtualPortService {
45 45
46 /** 46 /**
47 * Returns the collection of the currently known virtualPort. 47 * Returns the collection of the currently known virtualPort.
48 - *
49 - * @return virtualPort.
50 */ 48 */
51 Collection<VirtualPort> getPorts(); 49 Collection<VirtualPort> getPorts();
52 50
53 /** 51 /**
54 * Returns the collection of the virtualPorts associated with the networkId. 52 * Returns the collection of the virtualPorts associated with the networkId.
55 * 53 *
56 - * @param networkId network identifier 54 + * @param networkId the network identifer
57 - * @return collection of virtualPort 55 + * @return collection of virtualPort.
58 */ 56 */
59 Collection<VirtualPort> getPorts(TenantNetworkId networkId); 57 Collection<VirtualPort> getPorts(TenantNetworkId networkId);
60 58
61 /** 59 /**
62 * Returns the collection of the virtualPorts associated with the tenantId. 60 * Returns the collection of the virtualPorts associated with the tenantId.
63 * 61 *
64 - * @param tenantId tenant identifier 62 + * @param tenantId the tenant identifier
65 - * @return collection of virtualPort 63 + * @return collection of virtualPorts.
66 */ 64 */
67 Collection<VirtualPort> getPorts(TenantId tenantId); 65 Collection<VirtualPort> getPorts(TenantId tenantId);
68 66
69 /** 67 /**
70 * Returns the collection of the virtualPorts associated with the deviceId. 68 * Returns the collection of the virtualPorts associated with the deviceId.
71 * 69 *
72 - * @param deviceId device identifier 70 + * @param deviceId the device identifier
73 - * @return collection of virtualPort 71 + * @return collection of virtualPort.
74 */ 72 */
75 Collection<VirtualPort> getPorts(DeviceId deviceId); 73 Collection<VirtualPort> getPorts(DeviceId deviceId);
76 74
...@@ -86,7 +84,7 @@ public interface VirtualPortService { ...@@ -86,7 +84,7 @@ public interface VirtualPortService {
86 * Updates virtualPorts by virtualPorts. 84 * Updates virtualPorts by virtualPorts.
87 * 85 *
88 * @param virtualPorts the iterable collection of virtualPorts 86 * @param virtualPorts the iterable collection of virtualPorts
89 - * @return true if all given identifiers updated successfully 87 + * @return true if all given identifiers updated successfully.
90 */ 88 */
91 boolean updatePorts(Iterable<VirtualPort> virtualPorts); 89 boolean updatePorts(Iterable<VirtualPort> virtualPorts);
92 90
...@@ -95,7 +93,7 @@ public interface VirtualPortService { ...@@ -95,7 +93,7 @@ public interface VirtualPortService {
95 * 93 *
96 * @param virtualPortIds the iterable collection of virtualPort identifiers 94 * @param virtualPortIds the iterable collection of virtualPort identifiers
97 * @return true or false if one with the given identifier to delete is 95 * @return true or false if one with the given identifier to delete is
98 - * successfully 96 + * successfully.
99 */ 97 */
100 boolean removePorts(Iterable<VirtualPortId> virtualPortIds); 98 boolean removePorts(Iterable<VirtualPortId> virtualPortIds);
101 } 99 }
......
...@@ -15,6 +15,8 @@ ...@@ -15,6 +15,8 @@
15 */ 15 */
16 package org.onosproject.app.vtnrsc.virtualport.impl; 16 package org.onosproject.app.vtnrsc.virtualport.impl;
17 17
18 +import static com.google.common.base.Preconditions.checkNotNull;
19 +
18 import java.util.Collection; 20 import java.util.Collection;
19 import java.util.Collections; 21 import java.util.Collections;
20 22
...@@ -25,17 +27,17 @@ import org.apache.felix.scr.annotations.Reference; ...@@ -25,17 +27,17 @@ import org.apache.felix.scr.annotations.Reference;
25 import org.apache.felix.scr.annotations.ReferenceCardinality; 27 import org.apache.felix.scr.annotations.ReferenceCardinality;
26 import org.apache.felix.scr.annotations.Service; 28 import org.apache.felix.scr.annotations.Service;
27 import org.onlab.util.KryoNamespace; 29 import org.onlab.util.KryoNamespace;
30 +import org.onosproject.net.DeviceId;
31 +import org.onosproject.store.service.EventuallyConsistentMap;
32 +import org.onosproject.store.service.MultiValuedTimestamp;
33 +import org.onosproject.store.service.StorageService;
34 +import org.onosproject.store.service.WallClockTimestamp;
28 import org.onosproject.app.vtnrsc.TenantId; 35 import org.onosproject.app.vtnrsc.TenantId;
29 import org.onosproject.app.vtnrsc.TenantNetworkId; 36 import org.onosproject.app.vtnrsc.TenantNetworkId;
30 import org.onosproject.app.vtnrsc.VirtualPort; 37 import org.onosproject.app.vtnrsc.VirtualPort;
31 import org.onosproject.app.vtnrsc.VirtualPortId; 38 import org.onosproject.app.vtnrsc.VirtualPortId;
32 import org.onosproject.app.vtnrsc.tenantnetwork.TenantNetworkService; 39 import org.onosproject.app.vtnrsc.tenantnetwork.TenantNetworkService;
33 import org.onosproject.app.vtnrsc.virtualport.VirtualPortService; 40 import org.onosproject.app.vtnrsc.virtualport.VirtualPortService;
34 -import org.onosproject.net.DeviceId;
35 -import org.onosproject.store.service.EventuallyConsistentMap;
36 -import org.onosproject.store.service.MultiValuedTimestamp;
37 -import org.onosproject.store.service.StorageService;
38 -import org.onosproject.store.service.WallClockTimestamp;
39 import org.slf4j.Logger; 41 import org.slf4j.Logger;
40 import org.slf4j.LoggerFactory; 42 import org.slf4j.LoggerFactory;
41 43
...@@ -45,8 +47,15 @@ import org.slf4j.LoggerFactory; ...@@ -45,8 +47,15 @@ import org.slf4j.LoggerFactory;
45 @Component(immediate = true) 47 @Component(immediate = true)
46 @Service 48 @Service
47 public class VirtualPortManager implements VirtualPortService { 49 public class VirtualPortManager implements VirtualPortService {
50 +
48 private final Logger log = LoggerFactory.getLogger(getClass()); 51 private final Logger log = LoggerFactory.getLogger(getClass());
49 52
53 + private static final String VIRTUALPORT_ID_NULL = "VirtualPort ID cannot be null";
54 + private static final String VIRTUALPORT_NOT_NULL = "VirtualPort cannot be null";
55 + private static final String TENANTID_NOT_NULL = "TenantId cannot be null";
56 + private static final String NETWORKID_NOT_NULL = "NetworkId cannot be null";
57 + private static final String DEVICEID_NOT_NULL = "DeviceId cannot be null";
58 +
50 private EventuallyConsistentMap<VirtualPortId, VirtualPort> vPortStore; 59 private EventuallyConsistentMap<VirtualPortId, VirtualPort> vPortStore;
51 60
52 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) 61 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
...@@ -74,14 +83,13 @@ public class VirtualPortManager implements VirtualPortService { ...@@ -74,14 +83,13 @@ public class VirtualPortManager implements VirtualPortService {
74 83
75 @Override 84 @Override
76 public boolean exists(VirtualPortId vPortId) { 85 public boolean exists(VirtualPortId vPortId) {
86 + checkNotNull(vPortId, VIRTUALPORT_ID_NULL);
77 return vPortStore.containsKey(vPortId); 87 return vPortStore.containsKey(vPortId);
78 } 88 }
79 89
80 @Override 90 @Override
81 public VirtualPort getPort(VirtualPortId vPortId) { 91 public VirtualPort getPort(VirtualPortId vPortId) {
82 - if (!exists(vPortId)) { 92 + checkNotNull(vPortId, VIRTUALPORT_ID_NULL);
83 - return null;
84 - }
85 return vPortStore.get(vPortId); 93 return vPortStore.get(vPortId);
86 } 94 }
87 95
...@@ -92,81 +100,93 @@ public class VirtualPortManager implements VirtualPortService { ...@@ -92,81 +100,93 @@ public class VirtualPortManager implements VirtualPortService {
92 100
93 @Override 101 @Override
94 public Collection<VirtualPort> getPorts(TenantNetworkId networkId) { 102 public Collection<VirtualPort> getPorts(TenantNetworkId networkId) {
95 - Collection<VirtualPort> vPortWithNetworkId = 103 + checkNotNull(networkId, NETWORKID_NOT_NULL);
96 - Collections.unmodifiableCollection(vPortStore.values()); 104 + Collection<VirtualPort> vPortWithNetworkIds = vPortStore.values();
97 - if (networkId == null || !networkService.exists(networkId)) { 105 + for (VirtualPort vPort : vPortWithNetworkIds) {
98 - return null;
99 - }
100 - for (VirtualPort vPort : vPortWithNetworkId) {
101 if (!vPort.networkId().equals(networkId)) { 106 if (!vPort.networkId().equals(networkId)) {
102 - vPortWithNetworkId.remove(vPort); 107 + vPortWithNetworkIds.remove(vPort);
103 } 108 }
104 } 109 }
105 - return vPortWithNetworkId; 110 + return vPortWithNetworkIds;
106 } 111 }
107 112
108 @Override 113 @Override
109 public Collection<VirtualPort> getPorts(TenantId tenantId) { 114 public Collection<VirtualPort> getPorts(TenantId tenantId) {
110 - Collection<VirtualPort> vPortWithTenantId = 115 + checkNotNull(tenantId, TENANTID_NOT_NULL);
111 - Collections.unmodifiableCollection(vPortStore.values()); 116 + Collection<VirtualPort> vPortWithTenantIds = vPortStore.values();
112 - if (tenantId == null) { 117 + for (VirtualPort vPort : vPortWithTenantIds) {
113 - return null;
114 - }
115 - for (VirtualPort vPort : vPortWithTenantId) {
116 if (!vPort.tenantId().equals(tenantId)) { 118 if (!vPort.tenantId().equals(tenantId)) {
117 - vPortWithTenantId.remove(vPort); 119 + vPortWithTenantIds.remove(vPort);
118 } 120 }
119 } 121 }
120 - return vPortWithTenantId; 122 + return vPortWithTenantIds;
121 } 123 }
122 124
123 @Override 125 @Override
124 public Collection<VirtualPort> getPorts(DeviceId deviceId) { 126 public Collection<VirtualPort> getPorts(DeviceId deviceId) {
125 - Collection<VirtualPort> vPortWithDeviceId = 127 + checkNotNull(deviceId, DEVICEID_NOT_NULL);
126 - Collections.unmodifiableCollection(vPortStore.values()); 128 + Collection<VirtualPort> vPortWithDeviceIds = vPortStore.values();
127 - if (deviceId == null) { 129 + for (VirtualPort vPort : vPortWithDeviceIds) {
128 - return null;
129 - }
130 - for (VirtualPort vPort : vPortWithDeviceId) {
131 if (!vPort.deviceId().equals(deviceId)) { 130 if (!vPort.deviceId().equals(deviceId)) {
132 - vPortWithDeviceId.remove(vPort); 131 + vPortWithDeviceIds.remove(vPort);
133 } 132 }
134 } 133 }
135 - return vPortWithDeviceId; 134 + return vPortWithDeviceIds;
136 } 135 }
137 136
138 @Override 137 @Override
139 public boolean createPorts(Iterable<VirtualPort> vPorts) { 138 public boolean createPorts(Iterable<VirtualPort> vPorts) {
140 - for (VirtualPort vPort:vPorts) { 139 + checkNotNull(vPorts, VIRTUALPORT_NOT_NULL);
141 - log.info("vPortId is {} ", vPort.portId().toString()); 140 + for (VirtualPort vPort : vPorts) {
141 + log.debug("vPortId is {} ", vPort.portId().toString());
142 vPortStore.put(vPort.portId(), vPort); 142 vPortStore.put(vPort.portId(), vPort);
143 + if (!vPortStore.containsKey(vPort.portId())) {
144 + log.debug("the virtualPort created failed whose identifier was {} ",
145 + vPort.portId().toString());
146 + return false;
147 + }
143 } 148 }
144 return true; 149 return true;
145 } 150 }
146 151
147 @Override 152 @Override
148 public boolean updatePorts(Iterable<VirtualPort> vPorts) { 153 public boolean updatePorts(Iterable<VirtualPort> vPorts) {
149 - Boolean flag = false; 154 + checkNotNull(vPorts, VIRTUALPORT_NOT_NULL);
150 if (vPorts != null) { 155 if (vPorts != null) {
151 - for (VirtualPort vPort:vPorts) { 156 + for (VirtualPort vPort : vPorts) {
152 vPortStore.put(vPort.portId(), vPort); 157 vPortStore.put(vPort.portId(), vPort);
153 - flag = true; 158 + if (!vPortStore.containsKey(vPort.portId())) {
159 + log.debug("the virtualPort did not exist whose identifier was {}",
160 + vPort.portId().toString());
161 + return false;
162 + }
163 +
164 + vPortStore.put(vPort.portId(), vPort);
165 +
166 + if (!vPort.equals(vPortStore.get(vPort.portId()))) {
167 + log.debug("the virtualPort updated failed whose identifier was {}",
168 + vPort.portId().toString());
169 + return false;
170 + }
154 } 171 }
155 } 172 }
156 - return flag; 173 + return true;
157 } 174 }
158 175
159 @Override 176 @Override
160 public boolean removePorts(Iterable<VirtualPortId> vPortIds) { 177 public boolean removePorts(Iterable<VirtualPortId> vPortIds) {
161 - Boolean flag = false; 178 + checkNotNull(vPortIds, VIRTUALPORT_ID_NULL);
162 if (vPortIds != null) { 179 if (vPortIds != null) {
163 - for (VirtualPortId vPortId:vPortIds) { 180 + for (VirtualPortId vPortId : vPortIds) {
164 vPortStore.remove(vPortId); 181 vPortStore.remove(vPortId);
165 - flag = true; 182 + if (vPortStore.containsKey(vPortId)) {
166 - log.info("The result of removing vPortId is {}", flag.toString()); 183 + log.debug("the virtualPort removed failed whose identifier was {}",
184 + vPortId.toString());
185 + return false;
186 + }
167 } 187 }
168 } 188 }
169 - return flag; 189 + return true;
170 } 190 }
171 191
172 } 192 }
......
1 +/*
2 + * Copyright 2015 Open Networking Laboratory
3 + *
4 + * Licensed under the Apache License, Version 2.0 (the "License");
5 + * you may not use this file except in compliance with the License.
6 + * You may obtain a copy of the License at
7 + *
8 + * http://www.apache.org/licenses/LICENSE-2.0
9 + *
10 + * Unless required by applicable law or agreed to in writing, software
11 + * distributed under the License is distributed on an "AS IS" BASIS,
12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 + * See the License for the specific language governing permissions and
14 + * limitations under the License.
15 + */
16 +package org.onosproject.app.vtnrsc.web;
17 +
18 +import static com.google.common.base.Preconditions.checkNotNull;
19 +
20 +import org.onosproject.app.vtnrsc.AllowedAddressPair;
21 +import org.onosproject.codec.CodecContext;
22 +import org.onosproject.codec.JsonCodec;
23 +
24 +import com.fasterxml.jackson.databind.node.ObjectNode;
25 +
26 +/**
27 + * VirtualPort AllowedAddressPair codec.
28 + */
29 +public final class AllowedAddressPairCodec extends JsonCodec<AllowedAddressPair> {
30 +
31 + @Override
32 + public ObjectNode encode(AllowedAddressPair alocAddPair, CodecContext context) {
33 + checkNotNull(alocAddPair, "AllowedAddressPair cannot be null");
34 + ObjectNode result = context.mapper().createObjectNode()
35 + .put("ip_address", alocAddPair.ip().toString())
36 + .put("mac_address", alocAddPair.mac().toString());
37 + return result;
38 + }
39 +
40 +}
1 +/*
2 + * Copyright 2015 Open Networking Laboratory
3 + *
4 + * Licensed under the Apache License, Version 2.0 (the "License");
5 + * you may not use this file except in compliance with the License.
6 + * You may obtain a copy of the License at
7 + *
8 + * http://www.apache.org/licenses/LICENSE-2.0
9 + *
10 + * Unless required by applicable law or agreed to in writing, software
11 + * distributed under the License is distributed on an "AS IS" BASIS,
12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 + * See the License for the specific language governing permissions and
14 + * limitations under the License.
15 + */
16 +package org.onosproject.app.vtnrsc.web;
17 +
18 +import static com.google.common.base.Preconditions.checkNotNull;
19 +
20 +import org.onosproject.app.vtnrsc.FixedIp;
21 +import org.onosproject.codec.CodecContext;
22 +import org.onosproject.codec.JsonCodec;
23 +
24 +import com.fasterxml.jackson.databind.node.ObjectNode;
25 +
26 +/**
27 + * VirtualPort FixedIp codec.
28 + */
29 +public final class FixedIpCodec extends JsonCodec<FixedIp> {
30 +
31 + @Override
32 + public ObjectNode encode(FixedIp fixIp, CodecContext context) {
33 + checkNotNull(fixIp, "FixedIp cannot be null");
34 + ObjectNode result = context.mapper().createObjectNode()
35 + .put("subnet_id", fixIp.subnetId().toString())
36 + .put("ip_address", fixIp.ip().toString());
37 + return result;
38 + }
39 +
40 +}
1 +/*
2 + * Copyright 2015 Open Networking Laboratory
3 + *
4 + * Licensed under the Apache License, Version 2.0 (the "License");
5 + * you may not use this file except in compliance with the License.
6 + * You may obtain a copy of the License at
7 + *
8 + * http://www.apache.org/licenses/LICENSE-2.0
9 + *
10 + * Unless required by applicable law or agreed to in writing, software
11 + * distributed under the License is distributed on an "AS IS" BASIS,
12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 + * See the License for the specific language governing permissions and
14 + * limitations under the License.
15 + */
16 +package org.onosproject.app.vtnrsc.web;
17 +
18 +import static com.google.common.base.Preconditions.checkNotNull;
19 +
20 +import org.onosproject.app.vtnrsc.SecurityGroup;
21 +import org.onosproject.codec.CodecContext;
22 +import org.onosproject.codec.JsonCodec;
23 +
24 +import com.fasterxml.jackson.databind.node.ObjectNode;
25 +
26 +/**
27 + * Virtualport SecurityGroup codec.
28 + */
29 +public final class SecurityGroupCodec extends JsonCodec<SecurityGroup> {
30 +
31 + @Override
32 + public ObjectNode encode(SecurityGroup securGroup, CodecContext context) {
33 + checkNotNull(securGroup, "SecurityGroup cannot be null");
34 + ObjectNode result = context.mapper().createObjectNode()
35 + .put("security_group", securGroup.securityGroup());
36 + return result;
37 + }
38 +
39 +}
1 +/*
2 + * Copyright 2015 Open Networking Laboratory
3 + *
4 + * Licensed under the Apache License, Version 2.0 (the "License");
5 + * you may not use this file except in compliance with the License.
6 + * You may obtain a copy of the License at
7 + *
8 + * http://www.apache.org/licenses/LICENSE-2.0
9 + *
10 + * Unless required by applicable law or agreed to in writing, software
11 + * distributed under the License is distributed on an "AS IS" BASIS,
12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 + * See the License for the specific language governing permissions and
14 + * limitations under the License.
15 + */
16 +package org.onosproject.app.vtnrsc.web;
17 +
18 +import static com.google.common.base.Preconditions.checkNotNull;
19 +
20 +import org.onosproject.codec.CodecContext;
21 +import org.onosproject.codec.JsonCodec;
22 +import org.onosproject.app.vtnrsc.VirtualPort;
23 +
24 +import com.fasterxml.jackson.databind.node.ObjectNode;
25 +
26 +/**
27 + * VirtualPort JSON codec.
28 + */
29 +public final class VirtualPortCodec extends JsonCodec<VirtualPort> {
30 + @Override
31 + public ObjectNode encode(VirtualPort vPort, CodecContext context) {
32 + checkNotNull(vPort, "VPort cannot be null");
33 + ObjectNode result = context
34 + .mapper()
35 + .createObjectNode()
36 + .put("id", vPort.portId().toString())
37 + .put("network_id", vPort.networkId().toString())
38 + .put("admin_state_up", vPort.adminStateUp())
39 + .put("name", vPort.name().toString())
40 + .put("status", vPort.state().toString())
41 + .put("mac_address", vPort.macAddress().toString())
42 + .put("tenant_id", vPort.tenantId().toString())
43 + .put("device_id", vPort.deviceId().toString())
44 + .put("device_owner", vPort.deviceOwner().toString())
45 + .put("binding:vnic_type", vPort.bindingVnicType().toString())
46 + .put("binding:Vif_type", vPort.bindingVifType().toString())
47 + .put("binding:host_id", vPort.bindingHostId().mac().toString())
48 + .put("binding:vif_details", vPort.bindingVifDetails().toString());
49 + result.set("allowed_address_pairs", new AllowedAddressPairCodec().encode(
50 + vPort.allowedAddressPairs(), context));
51 + result.set("fixed_ips", new FixedIpCodec().encode(
52 + vPort.fixedIps(), context));
53 + result.set("security_groups", new SecurityGroupCodec().encode(
54 + vPort.securityGroups(), context));
55 + return result;
56 + }
57 +}
1 +<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2 +<!--
3 + ~ Copyright 2015 Open Networking Laboratory
4 + ~
5 + ~ Licensed under the Apache License, Version 2.0 (the "License");
6 + ~ you may not use this file except in compliance with the License.
7 + ~ You may obtain a copy of the License at
8 + ~
9 + ~ http://www.apache.org/licenses/LICENSE-2.0
10 + ~
11 + ~ Unless required by applicable law or agreed to in writing, software
12 + ~ distributed under the License is distributed on an "AS IS" BASIS,
13 + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 + ~ See the License for the specific language governing permissions and
15 + ~ limitations under the License.
16 + -->
17 +<features xmlns="http://karaf.apache.org/xmlns/features/v1.2.0" name="${project.artifactId}-${project.version}">
18 + <repository>mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features</repository>
19 + <feature name="onos-app-vtnweb" version="@FEATURE-VERSION"
20 + description="ONOS app vtnweb components">
21 + <feature>onos-app-vtnrsc</feature>
22 + <bundle>mvn:org.onosproject/vtnweb/@ONOS-VERSION
23 + </bundle>
24 + </feature>
25 +</features>