Phaneendra Manda
Committed by Gerrit Code Review

[ONOS-3831,ONOS-3836] Load balance algorithm for sfc

Change-Id: I48a428587420ce6d782c128b835b5bb90e0cacfe
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.sfc.manager;
17 -
18 -import java.util.concurrent.atomic.AtomicInteger;
19 -
20 -/**
21 - * Unique NSH SPI Id generator for NSH header.
22 - */
23 -public final class NshSpiIdGenerators {
24 -
25 - private static final AtomicInteger NSH_SPI_ID_GEN = new AtomicInteger();
26 - private static final int MAX_NSH_SPI_ID = 0x7FFFFFFF;
27 - private static int nshSpiId;
28 -
29 - /**
30 - * Default constructor.
31 - */
32 - private NshSpiIdGenerators() {
33 - }
34 -
35 - /**
36 - * Get the next NSH SPI id.
37 - *
38 - * @return NSH SPI id
39 - */
40 - public static int create() {
41 - do {
42 - if (nshSpiId >= MAX_NSH_SPI_ID) {
43 - if (NSH_SPI_ID_GEN.get() >= MAX_NSH_SPI_ID) {
44 - NSH_SPI_ID_GEN.set(0);
45 - }
46 - }
47 - nshSpiId = NSH_SPI_ID_GEN.incrementAndGet();
48 - } while (nshSpiId > MAX_NSH_SPI_ID);
49 - return nshSpiId;
50 - }
51 -}
...@@ -142,6 +142,14 @@ public final class DefaultPortChain implements PortChain { ...@@ -142,6 +142,14 @@ public final class DefaultPortChain implements PortChain {
142 } 142 }
143 143
144 @Override 144 @Override
145 + public int getLoadBalancePathSize() {
146 + if (sfcLoadBalanceIdMap.isEmpty()) {
147 + return 0;
148 + }
149 + return sfcLoadBalanceIdMap.size();
150 + }
151 +
152 + @Override
145 public Optional<LoadBalanceId> matchPath(List<PortPairId> path) { 153 public Optional<LoadBalanceId> matchPath(List<PortPairId> path) {
146 154
147 LoadBalanceId id = null; 155 LoadBalanceId id = null;
......
...@@ -113,6 +113,13 @@ public interface PortChain { ...@@ -113,6 +113,13 @@ public interface PortChain {
113 List<PortPairId> getLoadBalancePath(FiveTuple fiveTuple); 113 List<PortPairId> getLoadBalancePath(FiveTuple fiveTuple);
114 114
115 /** 115 /**
116 + * Get the no of load balance paths created.
117 + *
118 + * @return size of load balanced paths
119 + */
120 + int getLoadBalancePathSize();
121 +
122 + /**
116 * Match the given path with existing load balanced paths. 123 * Match the given path with existing load balanced paths.
117 * 124 *
118 * @param path load balanced path 125 * @param path load balanced path
......
...@@ -142,38 +142,37 @@ public class PortChainResourceTest extends VtnResourceTest { ...@@ -142,38 +142,37 @@ public class PortChainResourceTest extends VtnResourceTest {
142 142
143 @Override 143 @Override
144 public void addLoadBalancePath(FiveTuple fiveTuple, LoadBalanceId id, List<PortPairId> path) { 144 public void addLoadBalancePath(FiveTuple fiveTuple, LoadBalanceId id, List<PortPairId> path) {
145 - // TODO Auto-generated method stub
146 } 145 }
147 146
148 @Override 147 @Override
149 public LoadBalanceId getLoadBalanceId(FiveTuple fiveTuple) { 148 public LoadBalanceId getLoadBalanceId(FiveTuple fiveTuple) {
150 - // TODO Auto-generated method stub
151 return null; 149 return null;
152 } 150 }
153 151
154 @Override 152 @Override
155 public Set<FiveTuple> getLoadBalanceIdMapKeys() { 153 public Set<FiveTuple> getLoadBalanceIdMapKeys() {
156 - // TODO Auto-generated method stub
157 return null; 154 return null;
158 } 155 }
159 156
160 @Override 157 @Override
161 public List<PortPairId> getLoadBalancePath(LoadBalanceId id) { 158 public List<PortPairId> getLoadBalancePath(LoadBalanceId id) {
162 - // TODO Auto-generated method stub
163 return null; 159 return null;
164 } 160 }
165 161
166 @Override 162 @Override
167 public List<PortPairId> getLoadBalancePath(FiveTuple fiveTuple) { 163 public List<PortPairId> getLoadBalancePath(FiveTuple fiveTuple) {
168 - // TODO Auto-generated method stub
169 return null; 164 return null;
170 } 165 }
171 166
172 @Override 167 @Override
173 public Optional<LoadBalanceId> matchPath(List<PortPairId> path) { 168 public Optional<LoadBalanceId> matchPath(List<PortPairId> path) {
174 - // TODO Auto-generated method stub
175 return null; 169 return null;
176 } 170 }
171 +
172 + @Override
173 + public int getLoadBalancePathSize() {
174 + return 0;
175 + }
177 } 176 }
178 177
179 /** 178 /**
......