Phaneendra Manda
Committed by Gerrit Code Review

[ONOS-3116] Port Pair Service implementation to store port pairs

Change-Id: I8c46003dd4331303e73b06432f1ecd597705146e
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.vtnrsc.portpair.impl;
17 +
18 +import static com.google.common.base.Preconditions.checkNotNull;
19 +import static org.slf4j.LoggerFactory.getLogger;
20 +
21 +import java.util.Collections;
22 +
23 +import org.apache.felix.scr.annotations.Activate;
24 +import org.apache.felix.scr.annotations.Component;
25 +import org.apache.felix.scr.annotations.Deactivate;
26 +import org.apache.felix.scr.annotations.Reference;
27 +import org.apache.felix.scr.annotations.ReferenceCardinality;
28 +import org.apache.felix.scr.annotations.Service;
29 +import org.onlab.util.KryoNamespace;
30 +import org.onosproject.store.serializers.KryoNamespaces;
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;
35 +import org.onosproject.vtnrsc.PortPair;
36 +import org.onosproject.vtnrsc.PortPairId;
37 +import org.onosproject.vtnrsc.portpair.PortPairService;
38 +import org.slf4j.Logger;
39 +
40 +/**
41 + * Provides implementation of the portPairService.
42 + */
43 +@Component(immediate = true)
44 +@Service
45 +public class PortPairManager implements PortPairService {
46 +
47 + private final Logger log = getLogger(getClass());
48 +
49 + private static final String PORT_PAIR_ID_NULL = "PortPair ID cannot be null";
50 + private static final String PORT_PAIR_NULL = "PortPair cannot be null";
51 +
52 + private EventuallyConsistentMap<PortPairId, PortPair> portPairStore;
53 +
54 + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
55 + protected StorageService storageService;
56 +
57 + @Activate
58 + public void activate() {
59 +
60 + KryoNamespace.Builder serializer = KryoNamespace.newBuilder()
61 + .register(KryoNamespaces.API)
62 + .register(MultiValuedTimestamp.class)
63 + .register(PortPair.class);
64 +
65 + portPairStore = storageService
66 + .<PortPairId, PortPair>eventuallyConsistentMapBuilder()
67 + .withName("portpairstore").withSerializer(serializer)
68 + .withTimestampProvider((k, v) -> new WallClockTimestamp()).build();
69 +
70 + log.info("Started");
71 + }
72 +
73 + @Deactivate
74 + public void deactivate() {
75 + portPairStore.destroy();
76 + log.info("Stopped");
77 + }
78 +
79 + @Override
80 + public boolean exists(PortPairId portPairId) {
81 + checkNotNull(portPairId, PORT_PAIR_ID_NULL);
82 + return portPairStore.containsKey(portPairId);
83 + }
84 +
85 + @Override
86 + public int getPortPairCount() {
87 + return portPairStore.size();
88 + }
89 +
90 + @Override
91 + public Iterable<PortPair> getPortPairs() {
92 + return Collections.unmodifiableCollection(portPairStore.values());
93 + }
94 +
95 + @Override
96 + public PortPair getPortPair(PortPairId portPairId) {
97 + checkNotNull(portPairId, PORT_PAIR_ID_NULL);
98 + return portPairStore.get(portPairId);
99 + }
100 +
101 + @Override
102 + public boolean createPortPair(PortPair portPair) {
103 + checkNotNull(portPair, PORT_PAIR_NULL);
104 +
105 + portPairStore.put(portPair.portPairId(), portPair);
106 + if (!portPairStore.containsKey(portPair.portPairId())) {
107 + log.debug("The portPair is created failed which identifier was {}", portPair.portPairId()
108 + .toString());
109 + return false;
110 + }
111 + return true;
112 + }
113 +
114 + @Override
115 + public boolean updatePortPair(PortPair portPair) {
116 + checkNotNull(portPair, PORT_PAIR_NULL);
117 +
118 + if (!portPairStore.containsKey(portPair.portPairId())) {
119 + log.debug("The portPair is not exist whose identifier was {} ",
120 + portPair.portPairId().toString());
121 + return false;
122 + }
123 +
124 + portPairStore.put(portPair.portPairId(), portPair);
125 +
126 + if (!portPair.equals(portPairStore.get(portPair.portPairId()))) {
127 + log.debug("The portPair is updated failed whose identifier was {} ",
128 + portPair.portPairId().toString());
129 + return false;
130 + }
131 + return true;
132 + }
133 +
134 + @Override
135 + public boolean removePortPair(PortPairId portPairId) {
136 + checkNotNull(portPairId, PORT_PAIR_NULL);
137 +
138 + portPairStore.remove(portPairId);
139 + if (portPairStore.containsKey(portPairId)) {
140 + log.debug("The portPair is removed failed whose identifier was {}",
141 + portPairId.toString());
142 + return false;
143 + }
144 + return true;
145 + }
146 +}
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 + * Implementation of service for interacting with the inventory of port pairs.
19 + */
20 +package org.onosproject.vtnrsc.portpair.impl;