Committed by
Gerrit Code Review
ONOS-2161 Add OVSDB adapter api in south bound.
Change-Id: I01e2976769b225444ab6fb94cb2fe9d26921ba1f
Showing
21 changed files
with
1277 additions
and
0 deletions
ovsdb/api/pom.xml
0 → 100644
1 | +<?xml version="1.0"?> | ||
2 | +<project | ||
3 | + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" | ||
4 | + xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> | ||
5 | + <modelVersion>4.0.0</modelVersion> | ||
6 | + <parent> | ||
7 | + <groupId>org.onosproject</groupId> | ||
8 | + <artifactId>onos-ovsdb</artifactId> | ||
9 | + <version>1.3.0-SNAPSHOT</version> | ||
10 | + </parent> | ||
11 | + <artifactId>onos-ovsdb-api</artifactId> | ||
12 | + <packaging>bundle</packaging> | ||
13 | + | ||
14 | + <dependencies> | ||
15 | + <dependency> | ||
16 | + <groupId>junit</groupId> | ||
17 | + <artifactId>junit</artifactId> | ||
18 | + <scope>test</scope> | ||
19 | + </dependency> | ||
20 | + <dependency> | ||
21 | + <groupId>commons-pool</groupId> | ||
22 | + <artifactId>commons-pool</artifactId> | ||
23 | + </dependency> | ||
24 | + <dependency> | ||
25 | + <groupId>io.netty</groupId> | ||
26 | + <artifactId>netty-transport</artifactId> | ||
27 | + </dependency> | ||
28 | + <dependency> | ||
29 | + <groupId>io.netty</groupId> | ||
30 | + <artifactId>netty-transport-native-epoll</artifactId> | ||
31 | + <version>${netty4.version}</version> | ||
32 | + </dependency> | ||
33 | + </dependencies> | ||
34 | + | ||
35 | +</project> |
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.ovsdb.controller; | ||
17 | + | ||
18 | +/** | ||
19 | + * Represents for a entity that carry important information for listener. | ||
20 | + */ | ||
21 | +public interface EventSubject { | ||
22 | + | ||
23 | +} |
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.ovsdb.controller; | ||
17 | + | ||
18 | +import static com.google.common.base.MoreObjects.toStringHelper; | ||
19 | +import static com.google.common.base.Preconditions.checkNotNull; | ||
20 | + | ||
21 | +import java.util.Objects; | ||
22 | + | ||
23 | +/** | ||
24 | + * The class representing a ovsdb bridge. This class is immutable. | ||
25 | + */ | ||
26 | +public final class OvsdbBridge { | ||
27 | + | ||
28 | + private final OvsdbBridgeName bridgeName; | ||
29 | + private final OvsdbDatapathId datapathId; | ||
30 | + | ||
31 | + /** | ||
32 | + * Constructor from a OvsdbBridgeName bridgeName and a OvsdbDatapathId | ||
33 | + * datapathId. | ||
34 | + * | ||
35 | + * @param bridgeName the bridgeName to use | ||
36 | + * @param datapathId the datapathId to use | ||
37 | + */ | ||
38 | + public OvsdbBridge(OvsdbBridgeName bridgeName, OvsdbDatapathId datapathId) { | ||
39 | + checkNotNull(bridgeName, "bridgeName is not null"); | ||
40 | + checkNotNull(datapathId, "datapathId is not null"); | ||
41 | + this.bridgeName = bridgeName; | ||
42 | + this.datapathId = datapathId; | ||
43 | + } | ||
44 | + | ||
45 | + /** | ||
46 | + * Gets the bridge name of the bridge. | ||
47 | + * | ||
48 | + * @return the bridge name of the bridge | ||
49 | + */ | ||
50 | + public OvsdbBridgeName bridgeName() { | ||
51 | + return bridgeName; | ||
52 | + } | ||
53 | + | ||
54 | + /** | ||
55 | + * Gets the datapathId of the bridge. | ||
56 | + * | ||
57 | + * @return datapathId the datapathId to use | ||
58 | + */ | ||
59 | + public OvsdbDatapathId datapathId() { | ||
60 | + return datapathId; | ||
61 | + } | ||
62 | + | ||
63 | + @Override | ||
64 | + public int hashCode() { | ||
65 | + return Objects.hash(bridgeName, datapathId); | ||
66 | + } | ||
67 | + | ||
68 | + @Override | ||
69 | + public boolean equals(Object obj) { | ||
70 | + if (this == obj) { | ||
71 | + return true; | ||
72 | + } | ||
73 | + if (obj instanceof OvsdbBridge) { | ||
74 | + final OvsdbBridge otherOvsdbBridge = (OvsdbBridge) obj; | ||
75 | + return Objects.equals(this.bridgeName, otherOvsdbBridge.bridgeName) | ||
76 | + && Objects.equals(this.datapathId, | ||
77 | + otherOvsdbBridge.datapathId); | ||
78 | + } | ||
79 | + return false; | ||
80 | + } | ||
81 | + | ||
82 | + @Override | ||
83 | + public String toString() { | ||
84 | + return toStringHelper(this).add("bridgeName", bridgeName.value()) | ||
85 | + .add("datapathId", datapathId.value()).toString(); | ||
86 | + } | ||
87 | +} |
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.ovsdb.controller; | ||
17 | + | ||
18 | +import static com.google.common.base.MoreObjects.toStringHelper; | ||
19 | +import static com.google.common.base.Preconditions.checkNotNull; | ||
20 | + | ||
21 | +import java.util.Objects; | ||
22 | + | ||
23 | +/** | ||
24 | + * The class representing a bridge name. This class is immutable. | ||
25 | + */ | ||
26 | +public final class OvsdbBridgeName { | ||
27 | + | ||
28 | + private final String value; | ||
29 | + | ||
30 | + /** | ||
31 | + * Constructor from a String bridge name. | ||
32 | + * | ||
33 | + * @param value the bridge name to use | ||
34 | + */ | ||
35 | + public OvsdbBridgeName(String value) { | ||
36 | + checkNotNull(value, "value is not null"); | ||
37 | + this.value = value; | ||
38 | + } | ||
39 | + | ||
40 | + /** | ||
41 | + * Gets the value of the bridge name. | ||
42 | + * | ||
43 | + * @return the value of the bridge name | ||
44 | + */ | ||
45 | + public String value() { | ||
46 | + return value; | ||
47 | + } | ||
48 | + | ||
49 | + @Override | ||
50 | + public int hashCode() { | ||
51 | + return Objects.hash(value); | ||
52 | + } | ||
53 | + | ||
54 | + @Override | ||
55 | + public boolean equals(Object obj) { | ||
56 | + if (this == obj) { | ||
57 | + return true; | ||
58 | + } | ||
59 | + if (obj instanceof OvsdbBridgeName) { | ||
60 | + final OvsdbBridgeName otherBridgeName = (OvsdbBridgeName) obj; | ||
61 | + return Objects.equals(this.value, otherBridgeName.value); | ||
62 | + } | ||
63 | + return false; | ||
64 | + } | ||
65 | + | ||
66 | + @Override | ||
67 | + public String toString() { | ||
68 | + return toStringHelper(this).add("value", value).toString(); | ||
69 | + } | ||
70 | + | ||
71 | +} |
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.ovsdb.controller; | ||
17 | + | ||
18 | +import java.util.Set; | ||
19 | + | ||
20 | +import org.onlab.packet.IpAddress; | ||
21 | + | ||
22 | +/** | ||
23 | + * Represents to provider facing side of a node. | ||
24 | + */ | ||
25 | +public interface OvsdbClientService { | ||
26 | + /** | ||
27 | + * Gets the node identifier. | ||
28 | + * | ||
29 | + * @return node identifier | ||
30 | + */ | ||
31 | + OvsdbNodeId nodeId(); | ||
32 | + | ||
33 | + /** | ||
34 | + * Creates the configuration for the tunnel. | ||
35 | + * | ||
36 | + * @param srcIp source IP address | ||
37 | + * @param dstIp destination IP address | ||
38 | + */ | ||
39 | + void createTunnel(IpAddress srcIp, IpAddress dstIp); | ||
40 | + | ||
41 | + /** | ||
42 | + * Drops the configuration for the tunnel. | ||
43 | + * | ||
44 | + * @param srcIp source IP address | ||
45 | + * @param dstIp destination IP address | ||
46 | + */ | ||
47 | + void dropTunnel(IpAddress srcIp, IpAddress dstIp); | ||
48 | + | ||
49 | + /** | ||
50 | + * Gets tunnels of the node. | ||
51 | + * | ||
52 | + * @return set of tunnels; empty if no tunnel is find | ||
53 | + */ | ||
54 | + Set<OvsdbTunnel> getTunnels(); | ||
55 | + | ||
56 | + /** | ||
57 | + * Creates a bridge. | ||
58 | + * | ||
59 | + * @param bridgeName bridge name | ||
60 | + */ | ||
61 | + void createBridge(String bridgeName); | ||
62 | + | ||
63 | + /** | ||
64 | + * Drops a bridge. | ||
65 | + * | ||
66 | + * @param bridgeName bridge name | ||
67 | + */ | ||
68 | + void dropBridge(String bridgeName); | ||
69 | + | ||
70 | + /** | ||
71 | + * Gets bridges of the node. | ||
72 | + * | ||
73 | + * @return set of bridges; empty if no bridge is find | ||
74 | + */ | ||
75 | + Set<OvsdbBridge> getBridges(); | ||
76 | + | ||
77 | + /** | ||
78 | + * Creates a port. | ||
79 | + * | ||
80 | + * @param bridgeName bridge name | ||
81 | + * @param portName port name | ||
82 | + */ | ||
83 | + void createPort(String bridgeName, String portName); | ||
84 | + | ||
85 | + /** | ||
86 | + * Drops a port. | ||
87 | + * | ||
88 | + * @param bridgeName bridge name | ||
89 | + * @param portName port name | ||
90 | + */ | ||
91 | + void dropPort(String bridgeName, String portName); | ||
92 | + | ||
93 | + /** | ||
94 | + * Gets ports of the bridge. | ||
95 | + * | ||
96 | + * @return set of ports; empty if no ports is find | ||
97 | + */ | ||
98 | + Set<OvsdbPort> getPorts(); | ||
99 | + | ||
100 | + /** | ||
101 | + * Checks if the node is still connected. | ||
102 | + * | ||
103 | + * @return true if the node is still connected | ||
104 | + */ | ||
105 | + boolean isConnected(); | ||
106 | + | ||
107 | +} |
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.ovsdb.controller; | ||
17 | + | ||
18 | +import java.util.List; | ||
19 | + | ||
20 | +/** | ||
21 | + * Abstraction of an ovsdb controller. Serves as a one stop shop for obtaining | ||
22 | + * OvsdbNode and (un)register listeners on ovsdb events and ovsdb node events. | ||
23 | + */ | ||
24 | +public interface OvsdbController { | ||
25 | + | ||
26 | + /** | ||
27 | + * Adds Node Event Listener. | ||
28 | + * | ||
29 | + * @param listener node listener | ||
30 | + */ | ||
31 | + void addNodeListener(OvsdbNodeListener listener); | ||
32 | + | ||
33 | + /** | ||
34 | + * Removes Node Event Listener. | ||
35 | + * | ||
36 | + * @param listener node listener | ||
37 | + */ | ||
38 | + void removeNodeListener(OvsdbNodeListener listener); | ||
39 | + | ||
40 | + /** | ||
41 | + * Adds ovsdb event listener. | ||
42 | + * | ||
43 | + * @param listener event listener | ||
44 | + */ | ||
45 | + void addOvsdbEventListener(OvsdbEventListener listener); | ||
46 | + | ||
47 | + /** | ||
48 | + * Removes ovsdb event listener. | ||
49 | + * | ||
50 | + * @param listener event listener | ||
51 | + */ | ||
52 | + void removeOvsdbEventListener(OvsdbEventListener listener); | ||
53 | + | ||
54 | + /** | ||
55 | + * Gets all the nodes information. | ||
56 | + * | ||
57 | + * @return the list of node id | ||
58 | + */ | ||
59 | + List<OvsdbNodeId> getNodeIds(); | ||
60 | + | ||
61 | + /** | ||
62 | + * Gets a ovsdb client by node identifier. | ||
63 | + * | ||
64 | + * @param nodeId node identifier | ||
65 | + * @return OvsdbClient ovsdb node information | ||
66 | + */ | ||
67 | + OvsdbClientService getOvsdbClient(OvsdbNodeId nodeId); | ||
68 | +} |
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.ovsdb.controller; | ||
17 | + | ||
18 | +import static com.google.common.base.MoreObjects.toStringHelper; | ||
19 | +import static com.google.common.base.Preconditions.checkNotNull; | ||
20 | +import java.util.Objects; | ||
21 | + | ||
22 | +/** | ||
23 | + * The class representing a datapathid. This class is immutable. | ||
24 | + */ | ||
25 | +public final class OvsdbDatapathId { | ||
26 | + private final String value; | ||
27 | + | ||
28 | + /** | ||
29 | + * Constructor from a String datapathid. | ||
30 | + * | ||
31 | + * @param value the datapathid to use | ||
32 | + */ | ||
33 | + public OvsdbDatapathId(String value) { | ||
34 | + checkNotNull(value, "value is not null"); | ||
35 | + this.value = value; | ||
36 | + } | ||
37 | + | ||
38 | + /** | ||
39 | + * Gets the value of the datapathid. | ||
40 | + * | ||
41 | + * @return the value of the datapathid | ||
42 | + */ | ||
43 | + public String value() { | ||
44 | + return value; | ||
45 | + } | ||
46 | + | ||
47 | + @Override | ||
48 | + public int hashCode() { | ||
49 | + return Objects.hash(value); | ||
50 | + } | ||
51 | + | ||
52 | + @Override | ||
53 | + public boolean equals(Object obj) { | ||
54 | + if (this == obj) { | ||
55 | + return true; | ||
56 | + } | ||
57 | + if (obj instanceof OvsdbDatapathId) { | ||
58 | + final OvsdbDatapathId otherDatapathId = (OvsdbDatapathId) obj; | ||
59 | + return Objects.equals(this.value, otherDatapathId.value); | ||
60 | + } | ||
61 | + return false; | ||
62 | + } | ||
63 | + | ||
64 | + @Override | ||
65 | + public String toString() { | ||
66 | + return toStringHelper(this).add("value", value).toString(); | ||
67 | + } | ||
68 | +} |
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.ovsdb.controller; | ||
17 | + | ||
18 | +import static com.google.common.base.MoreObjects.toStringHelper; | ||
19 | + | ||
20 | +/** | ||
21 | + * The abstract event of ovsdb. | ||
22 | + */ | ||
23 | +public final class OvsdbEvent<S> { | ||
24 | + | ||
25 | + public enum Type { | ||
26 | + /** | ||
27 | + * Signifies that a new ovs port update has been detected. | ||
28 | + */ | ||
29 | + PORT_ADDED, | ||
30 | + /** | ||
31 | + * Signifies that a ovs port has been removed. | ||
32 | + */ | ||
33 | + PORT_REMOVED | ||
34 | + } | ||
35 | + | ||
36 | + private final Type type; | ||
37 | + private final S subject; | ||
38 | + | ||
39 | + /** | ||
40 | + * Creates an event of a given type and for the specified event subject. | ||
41 | + * | ||
42 | + * @param type event type | ||
43 | + * @param subject event subject | ||
44 | + */ | ||
45 | + public OvsdbEvent(Type type, S subject) { | ||
46 | + this.type = type; | ||
47 | + this.subject = subject; | ||
48 | + } | ||
49 | + | ||
50 | + /** | ||
51 | + * Returns the type of the event. | ||
52 | + * | ||
53 | + * @return event type | ||
54 | + */ | ||
55 | + public Type type() { | ||
56 | + return type; | ||
57 | + } | ||
58 | + | ||
59 | + /** | ||
60 | + * Returns the subject of the event. | ||
61 | + * | ||
62 | + * @return subject to which this event pertains | ||
63 | + */ | ||
64 | + public S subject() { | ||
65 | + return subject; | ||
66 | + } | ||
67 | + | ||
68 | + @Override | ||
69 | + public String toString() { | ||
70 | + return toStringHelper(this).add("type", type()) | ||
71 | + .add("subject", subject()).toString(); | ||
72 | + } | ||
73 | + | ||
74 | +} |
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.ovsdb.controller; | ||
17 | + | ||
18 | +/** | ||
19 | + * Allows for providers interested in ovsdb events to be notified. | ||
20 | + */ | ||
21 | +public interface OvsdbEventListener { | ||
22 | + /** | ||
23 | + * Handles the ovsdb event. | ||
24 | + * | ||
25 | + * @param event ovsdb event | ||
26 | + */ | ||
27 | + void handle(OvsdbEvent<EventSubject> event); | ||
28 | +} |
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.ovsdb.controller; | ||
17 | + | ||
18 | +import static com.google.common.base.Preconditions.checkNotNull; | ||
19 | + | ||
20 | +import java.util.Objects; | ||
21 | + | ||
22 | +import org.onlab.packet.IpAddress; | ||
23 | + | ||
24 | +/** | ||
25 | + * The class representing a OpenStack Compute or Network nodeId. This class is | ||
26 | + * immutable. | ||
27 | + */ | ||
28 | +public final class OvsdbNodeId { | ||
29 | + private static final String SCHEME = "ovsdb"; | ||
30 | + private final String nodeId; | ||
31 | + private final String ipAddress; | ||
32 | + | ||
33 | + /** | ||
34 | + * Creates a new node identifier from a IpAddress ipAddress, a long port. | ||
35 | + * | ||
36 | + * @param ipAddress node IP address | ||
37 | + * @param port node port | ||
38 | + */ | ||
39 | + public OvsdbNodeId(IpAddress ipAddress, long port) { | ||
40 | + checkNotNull(ipAddress, "ipAddress is not null"); | ||
41 | + this.ipAddress = ipAddress.toString(); | ||
42 | + this.nodeId = ipAddress + ":" + port; | ||
43 | + } | ||
44 | + | ||
45 | + @Override | ||
46 | + public int hashCode() { | ||
47 | + return Objects.hash(nodeId); | ||
48 | + } | ||
49 | + | ||
50 | + @Override | ||
51 | + public boolean equals(Object other) { | ||
52 | + if (!(other instanceof OvsdbNodeId)) { | ||
53 | + return false; | ||
54 | + } | ||
55 | + | ||
56 | + OvsdbNodeId otherNodeId = (OvsdbNodeId) other; | ||
57 | + | ||
58 | + return Objects.equals(otherNodeId.nodeId, this.nodeId); | ||
59 | + } | ||
60 | + | ||
61 | + @Override | ||
62 | + public String toString() { | ||
63 | + return SCHEME + ":" + nodeId; | ||
64 | + } | ||
65 | + | ||
66 | + /** | ||
67 | + * Gets the value of the NodeId. | ||
68 | + * | ||
69 | + * @return the value of the NodeId. | ||
70 | + */ | ||
71 | + public String nodeId() { | ||
72 | + return SCHEME + ":" + nodeId; | ||
73 | + } | ||
74 | + | ||
75 | + /** | ||
76 | + * Get the IP address of the node. | ||
77 | + * | ||
78 | + * @return the IP address of the node | ||
79 | + */ | ||
80 | + public String getIpAddress() { | ||
81 | + return ipAddress; | ||
82 | + } | ||
83 | +} |
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.ovsdb.controller; | ||
17 | + | ||
18 | +/** | ||
19 | + * Allows for providers interested in node events to be notified. | ||
20 | + */ | ||
21 | +public interface OvsdbNodeListener { | ||
22 | + | ||
23 | + /** | ||
24 | + * Notifies that the node was added. | ||
25 | + * | ||
26 | + * @param nodeId the node where the event occurred | ||
27 | + */ | ||
28 | + void nodeAdded(OvsdbNodeId nodeId); | ||
29 | + | ||
30 | + /** | ||
31 | + * Notifies that the node was removed. | ||
32 | + * | ||
33 | + * @param nodeId the node where the event occurred | ||
34 | + */ | ||
35 | + void nodeRemoved(OvsdbNodeId nodeId); | ||
36 | +} |
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.ovsdb.controller; | ||
17 | + | ||
18 | +import static com.google.common.base.MoreObjects.toStringHelper; | ||
19 | +import static com.google.common.base.Preconditions.checkNotNull; | ||
20 | + | ||
21 | +import java.util.Objects; | ||
22 | + | ||
23 | +/** | ||
24 | + * The class representing a ovsdb port. This class is immutable. | ||
25 | + */ | ||
26 | +public final class OvsdbPort { | ||
27 | + | ||
28 | + private final OvsdbPortNumber portNumber; | ||
29 | + private final OvsdbPortName portName; | ||
30 | + | ||
31 | + /** | ||
32 | + * Constructor from a OvsdbPortNumber portNumber, OvsdbPortName portName. | ||
33 | + * | ||
34 | + * @param portNumber the portNumber to use | ||
35 | + * @param portName the portName to use | ||
36 | + */ | ||
37 | + public OvsdbPort(OvsdbPortNumber portNumber, OvsdbPortName portName) { | ||
38 | + checkNotNull(portNumber, "portNumber is not null"); | ||
39 | + checkNotNull(portName, "portName is not null"); | ||
40 | + this.portNumber = portNumber; | ||
41 | + this.portName = portName; | ||
42 | + } | ||
43 | + | ||
44 | + /** | ||
45 | + * Gets the port number of the port. | ||
46 | + * | ||
47 | + * @return the port number of the port | ||
48 | + */ | ||
49 | + public OvsdbPortNumber portNumber() { | ||
50 | + return portNumber; | ||
51 | + } | ||
52 | + | ||
53 | + /** | ||
54 | + * Gets the port name of the port. | ||
55 | + * | ||
56 | + * @return the port name of the port | ||
57 | + */ | ||
58 | + public OvsdbPortName portName() { | ||
59 | + return portName; | ||
60 | + } | ||
61 | + | ||
62 | + @Override | ||
63 | + public int hashCode() { | ||
64 | + return Objects.hash(portNumber, portName); | ||
65 | + } | ||
66 | + | ||
67 | + @Override | ||
68 | + public boolean equals(Object obj) { | ||
69 | + if (this == obj) { | ||
70 | + return true; | ||
71 | + } | ||
72 | + if (obj instanceof OvsdbPort) { | ||
73 | + final OvsdbPort otherOvsdbPort = (OvsdbPort) obj; | ||
74 | + return Objects.equals(this.portNumber, otherOvsdbPort.portNumber) | ||
75 | + && Objects.equals(this.portName, otherOvsdbPort.portName); | ||
76 | + } | ||
77 | + return false; | ||
78 | + } | ||
79 | + | ||
80 | + @Override | ||
81 | + public String toString() { | ||
82 | + return toStringHelper(this) | ||
83 | + .add("portNumber", String.valueOf(portNumber.value())) | ||
84 | + .add("portName", portName.value()).toString(); | ||
85 | + } | ||
86 | +} |
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.ovsdb.controller; | ||
17 | + | ||
18 | +import static com.google.common.base.MoreObjects.toStringHelper; | ||
19 | +import static com.google.common.base.Preconditions.checkNotNull; | ||
20 | + | ||
21 | +import java.util.Objects; | ||
22 | + | ||
23 | +/** | ||
24 | + * The class representing a port number. This class is immutable. | ||
25 | + */ | ||
26 | +public final class OvsdbPortName { | ||
27 | + | ||
28 | + private final String value; | ||
29 | + | ||
30 | + /** | ||
31 | + * Constructor from a String port name. | ||
32 | + * | ||
33 | + * @param value the port name to use | ||
34 | + */ | ||
35 | + public OvsdbPortName(String value) { | ||
36 | + checkNotNull(value, "value is not null"); | ||
37 | + this.value = value; | ||
38 | + } | ||
39 | + | ||
40 | + /** | ||
41 | + * Gets the value of the port name. | ||
42 | + * | ||
43 | + * @return the value of the port name | ||
44 | + */ | ||
45 | + public String value() { | ||
46 | + return value; | ||
47 | + } | ||
48 | + | ||
49 | + @Override | ||
50 | + public int hashCode() { | ||
51 | + return Objects.hash(value); | ||
52 | + } | ||
53 | + | ||
54 | + @Override | ||
55 | + public boolean equals(Object obj) { | ||
56 | + if (this == obj) { | ||
57 | + return true; | ||
58 | + } | ||
59 | + if (obj instanceof OvsdbPortName) { | ||
60 | + final OvsdbPortName otherOvsdbPortName = (OvsdbPortName) obj; | ||
61 | + return Objects.equals(this.value, otherOvsdbPortName.value); | ||
62 | + } | ||
63 | + return false; | ||
64 | + } | ||
65 | + | ||
66 | + @Override | ||
67 | + public String toString() { | ||
68 | + return toStringHelper(this).add("value", value).toString(); | ||
69 | + } | ||
70 | +} |
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.ovsdb.controller; | ||
17 | + | ||
18 | +import static com.google.common.base.MoreObjects.toStringHelper; | ||
19 | + | ||
20 | +import java.util.Objects; | ||
21 | + | ||
22 | +/** | ||
23 | + * The class representing a port number. This class is immutable. | ||
24 | + */ | ||
25 | +public final class OvsdbPortNumber { | ||
26 | + | ||
27 | + private final long value; | ||
28 | + | ||
29 | + /** | ||
30 | + * Constructor from a long port number. | ||
31 | + * | ||
32 | + * @param value the port number to use | ||
33 | + */ | ||
34 | + public OvsdbPortNumber(long value) { | ||
35 | + this.value = value; | ||
36 | + } | ||
37 | + | ||
38 | + /** | ||
39 | + * Gets the value of the port number. | ||
40 | + * | ||
41 | + * @return the value of the port number | ||
42 | + */ | ||
43 | + public long value() { | ||
44 | + return value; | ||
45 | + } | ||
46 | + | ||
47 | + @Override | ||
48 | + public int hashCode() { | ||
49 | + return Objects.hash(value); | ||
50 | + } | ||
51 | + | ||
52 | + @Override | ||
53 | + public boolean equals(Object obj) { | ||
54 | + if (this == obj) { | ||
55 | + return true; | ||
56 | + } | ||
57 | + if (obj instanceof OvsdbPortNumber) { | ||
58 | + final OvsdbPortNumber ovsdbPortNumber = (OvsdbPortNumber) obj; | ||
59 | + return Objects.equals(this.value, ovsdbPortNumber.value); | ||
60 | + } | ||
61 | + return false; | ||
62 | + } | ||
63 | + | ||
64 | + @Override | ||
65 | + public String toString() { | ||
66 | + return toStringHelper(this).add("value", value).toString(); | ||
67 | + } | ||
68 | +} |
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.ovsdb.controller; | ||
17 | + | ||
18 | +import static com.google.common.base.MoreObjects.toStringHelper; | ||
19 | +import static com.google.common.base.Preconditions.checkNotNull; | ||
20 | + | ||
21 | +import java.util.Objects; | ||
22 | + | ||
23 | +import org.onlab.packet.IpAddress; | ||
24 | + | ||
25 | +/** | ||
26 | + * The class representing a ovsdb tunnel. This class is immutable. | ||
27 | + */ | ||
28 | +public final class OvsdbTunnel { | ||
29 | + | ||
30 | + private final IpAddress localIp; | ||
31 | + private final IpAddress remoteIp; | ||
32 | + | ||
33 | + public enum Type { | ||
34 | + VXLAN, GRE | ||
35 | + } | ||
36 | + | ||
37 | + private final Type tunnelType; | ||
38 | + private final OvsdbTunnelName tunnelName; | ||
39 | + | ||
40 | + /** | ||
41 | + * Constructor from a IpAddress localIp, IpAddress remoteIp Type tunnelType, | ||
42 | + * OvsdbTunnelName tunnelName. | ||
43 | + * | ||
44 | + * @param localIp the localIp to use | ||
45 | + * @param remoteIp the remoteIp to use | ||
46 | + * @param tunnelType the tunnelType to use | ||
47 | + * @param tunnelName the tunnelName to use | ||
48 | + */ | ||
49 | + public OvsdbTunnel(IpAddress localIp, IpAddress remoteIp, Type tunnelType, | ||
50 | + OvsdbTunnelName tunnelName) { | ||
51 | + checkNotNull(localIp, "portName is not null"); | ||
52 | + checkNotNull(remoteIp, "portName is not null"); | ||
53 | + checkNotNull(tunnelName, "portName is not null"); | ||
54 | + this.localIp = localIp; | ||
55 | + this.remoteIp = remoteIp; | ||
56 | + this.tunnelType = tunnelType; | ||
57 | + this.tunnelName = tunnelName; | ||
58 | + } | ||
59 | + | ||
60 | + /** | ||
61 | + * Gets the local IP of the tunnel. | ||
62 | + * | ||
63 | + * @return the local IP of the tunnel | ||
64 | + */ | ||
65 | + public IpAddress localIp() { | ||
66 | + return localIp; | ||
67 | + } | ||
68 | + | ||
69 | + /** | ||
70 | + * Gets the remote IP of the tunnel. | ||
71 | + * | ||
72 | + * @return the remote IP of the tunnel | ||
73 | + */ | ||
74 | + public IpAddress remoteIp() { | ||
75 | + return remoteIp; | ||
76 | + } | ||
77 | + | ||
78 | + /** | ||
79 | + * Gets the tunnel type of the tunnel. | ||
80 | + * | ||
81 | + * @return the tunnel type of the tunnel | ||
82 | + */ | ||
83 | + public Type tunnelType() { | ||
84 | + return tunnelType; | ||
85 | + } | ||
86 | + | ||
87 | + /** | ||
88 | + * Gets the tunnel name of the tunnel. | ||
89 | + * | ||
90 | + * @return the tunnel name of the tunnel | ||
91 | + */ | ||
92 | + public OvsdbTunnelName tunnelName() { | ||
93 | + return tunnelName; | ||
94 | + } | ||
95 | + | ||
96 | + @Override | ||
97 | + public int hashCode() { | ||
98 | + return Objects.hash(localIp, remoteIp, tunnelType, tunnelName); | ||
99 | + } | ||
100 | + | ||
101 | + @Override | ||
102 | + public boolean equals(Object obj) { | ||
103 | + if (this == obj) { | ||
104 | + return true; | ||
105 | + } | ||
106 | + if (obj instanceof OvsdbTunnel) { | ||
107 | + final OvsdbTunnel otherOvsdbTunnel = (OvsdbTunnel) obj; | ||
108 | + return Objects.equals(this.localIp, otherOvsdbTunnel.localIp) | ||
109 | + && Objects.equals(this.remoteIp, otherOvsdbTunnel.remoteIp) | ||
110 | + && Objects.equals(this.tunnelType, | ||
111 | + otherOvsdbTunnel.tunnelType) | ||
112 | + && Objects.equals(this.tunnelName, | ||
113 | + otherOvsdbTunnel.tunnelName); | ||
114 | + } | ||
115 | + return false; | ||
116 | + } | ||
117 | + | ||
118 | + @Override | ||
119 | + public String toString() { | ||
120 | + return toStringHelper(this).add("localIp", localIp.toString()) | ||
121 | + .add("remoteIp", remoteIp.toString()) | ||
122 | + .add("tunnelType", tunnelType).add("tunnelName", tunnelName) | ||
123 | + .toString(); | ||
124 | + } | ||
125 | +} |
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.ovsdb.controller; | ||
17 | + | ||
18 | +import static com.google.common.base.MoreObjects.toStringHelper; | ||
19 | +import static com.google.common.base.Preconditions.checkNotNull; | ||
20 | + | ||
21 | +import java.util.Objects; | ||
22 | + | ||
23 | +/** | ||
24 | + * The class representing a tunnel name. This class is immutable. | ||
25 | + */ | ||
26 | +public final class OvsdbTunnelName { | ||
27 | + private final String value; | ||
28 | + | ||
29 | + /** | ||
30 | + * Constructor from a String tunnel name. | ||
31 | + * | ||
32 | + * @param value the tunnel name to use | ||
33 | + */ | ||
34 | + public OvsdbTunnelName(String value) { | ||
35 | + checkNotNull(value, "value is not null"); | ||
36 | + this.value = value; | ||
37 | + } | ||
38 | + | ||
39 | + /** | ||
40 | + * Gets the value of the tunnel name. | ||
41 | + * | ||
42 | + * @return the value of the tunnel name | ||
43 | + */ | ||
44 | + public String value() { | ||
45 | + return value; | ||
46 | + } | ||
47 | + | ||
48 | + @Override | ||
49 | + public int hashCode() { | ||
50 | + return Objects.hash(value); | ||
51 | + } | ||
52 | + | ||
53 | + @Override | ||
54 | + public boolean equals(Object obj) { | ||
55 | + if (this == obj) { | ||
56 | + return true; | ||
57 | + } | ||
58 | + if (obj instanceof OvsdbTunnelName) { | ||
59 | + final OvsdbTunnelName otherOvsdbTunnelName = (OvsdbTunnelName) obj; | ||
60 | + return Objects.equals(this.value, otherOvsdbTunnelName.value); | ||
61 | + } | ||
62 | + return false; | ||
63 | + } | ||
64 | + | ||
65 | + @Override | ||
66 | + public String toString() { | ||
67 | + return toStringHelper(this).add("value", value).toString(); | ||
68 | + } | ||
69 | +} |
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.ovsdb.controller.driver; | ||
17 | + | ||
18 | +import org.onosproject.ovsdb.controller.OvsdbNodeId; | ||
19 | +import org.onosproject.ovsdb.controller.OvsdbClientService; | ||
20 | + | ||
21 | +/** | ||
22 | + * Responsible for keeping track of the current set of nodes connected to the | ||
23 | + * system. | ||
24 | + */ | ||
25 | +public interface OvsdbAgent { | ||
26 | + /** | ||
27 | + * Add a node that has just connected to the system. | ||
28 | + * | ||
29 | + * @param nodeId the nodeId to add | ||
30 | + * @param ovsdbClient the actual node object. | ||
31 | + */ | ||
32 | + void addConnectedNode(OvsdbNodeId nodeId, OvsdbClientService ovsdbClient); | ||
33 | + | ||
34 | + /** | ||
35 | + * Clear all state in controller node maps for a node that has disconnected | ||
36 | + * from the local controller. Also release control for that node from the | ||
37 | + * global repository. Notify node listeners. | ||
38 | + * | ||
39 | + * @param nodeId the node id to be removed. | ||
40 | + */ | ||
41 | + void removeConnectedNode(OvsdbNodeId nodeId); | ||
42 | +} |
ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/OvsdbProviderService.java
0 → 100644
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.ovsdb.controller.driver; | ||
17 | + | ||
18 | +import io.netty.channel.Channel; | ||
19 | + | ||
20 | +/** | ||
21 | + * Represents the driver side of an ovsdb node. This interface should never be | ||
22 | + * exposed to consumers. | ||
23 | + */ | ||
24 | +public interface OvsdbProviderService { | ||
25 | + /** | ||
26 | + * Sets the ovsdb agent to be used. This method can only be called once. | ||
27 | + * | ||
28 | + * @param agent the agent to set. | ||
29 | + */ | ||
30 | + void setAgent(OvsdbAgent agent); | ||
31 | + | ||
32 | + /** | ||
33 | + * Sets the associated Netty channel for this node. | ||
34 | + * | ||
35 | + * @param channel the Netty channel | ||
36 | + */ | ||
37 | + void setChannel(Channel channel); | ||
38 | + | ||
39 | + /** | ||
40 | + * Announces to the ovsdb agent that this node has added. | ||
41 | + */ | ||
42 | + void nodeAdded(); | ||
43 | + | ||
44 | + /** | ||
45 | + * Announces to the ovsdb agent that this node has removed. | ||
46 | + */ | ||
47 | + void nodeRemoved(); | ||
48 | + | ||
49 | + /** | ||
50 | + * Sets whether the node is connected. | ||
51 | + * | ||
52 | + * @param connected whether the node is connected | ||
53 | + */ | ||
54 | + void setConnection(boolean connected); | ||
55 | +} |
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 | + | ||
17 | +/** | ||
18 | + * Ovsdb controller node driver API. | ||
19 | + */ | ||
20 | +package org.onosproject.ovsdb.controller.driver; | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
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 | + | ||
17 | +/** | ||
18 | + * Ovsdb controller API. | ||
19 | + */ | ||
20 | +package org.onosproject.ovsdb.controller; | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
ovsdb/pom.xml
0 → 100644
1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
2 | +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
3 | + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
4 | + <modelVersion>4.0.0</modelVersion> | ||
5 | + <parent> | ||
6 | + <groupId>org.onosproject</groupId> | ||
7 | + <artifactId>onos</artifactId> | ||
8 | + <version>1.3.0-SNAPSHOT</version> | ||
9 | + </parent> | ||
10 | + <artifactId>onos-ovsdb</artifactId> | ||
11 | + <name>onos-ovsdb</name> | ||
12 | + <packaging>pom</packaging> | ||
13 | + | ||
14 | + <dependencies> | ||
15 | + <dependency> | ||
16 | + <groupId>junit</groupId> | ||
17 | + <artifactId>junit</artifactId> | ||
18 | + <scope>test</scope> | ||
19 | + </dependency> | ||
20 | + <dependency> | ||
21 | + <groupId>org.onosproject</groupId> | ||
22 | + <artifactId>onlab-misc</artifactId> | ||
23 | + </dependency> | ||
24 | + <dependency> | ||
25 | + <groupId>org.onosproject</groupId> | ||
26 | + <artifactId>onlab-junit</artifactId> | ||
27 | + </dependency> | ||
28 | + </dependencies> | ||
29 | + | ||
30 | + <build> | ||
31 | + <plugins> | ||
32 | + <plugin> | ||
33 | + <groupId>org.apache.felix</groupId> | ||
34 | + <artifactId>maven-bundle-plugin</artifactId> | ||
35 | + </plugin> | ||
36 | + </plugins> | ||
37 | + </build> | ||
38 | + | ||
39 | + <modules> | ||
40 | + <module>api</module> | ||
41 | + </modules> | ||
42 | +</project> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
-
Please register or login to post a comment