a538e66c180a3b86faf60fd4694e13f7ee18c1a9
[ovsdb.git] / openstack / net-virt-providers / src / main / java / org / opendaylight / ovsdb / openstack / netvirt / providers / PipelineOrchestratorImpl.java
1 package org.opendaylight.ovsdb.openstack.netvirt.providers;
2
3 import com.google.common.collect.Lists;
4 import com.google.common.collect.Maps;
5 import com.google.common.collect.Queues;
6
7 import java.util.List;
8 import java.util.Map;
9 import java.util.Queue;
10 import java.util.UUID;
11
12 /**
13  * Created by dave on 27/08/14.
14  */
15 public class PipelineOrchestratorImpl implements PipelineOrchestrator {
16
17   private Map<UUID, ServiceProperties> serviceRegistry = Maps.newHashMap();
18   private Queue<Integer> registerQueue = Queues.newArrayBlockingQueue(16);
19   private List<Integer> tableIdList = Lists.newArrayList(255);
20
21   public UUID registerService(Integer altitude, ServiceDirection direction) {
22     return UUID.randomUUID();
23   }
24
25   @Override
26   public void unregisterService(UUID serviceID) {
27     ServiceProperties sp = serviceRegistry.get(serviceID);
28     List<Integer> registers = sp.getRegisters();
29     if (registers != null) {
30       for (Integer register : registers) {
31         registerQueue.add(register);
32       }
33     }
34     // Add Table ID allocation back
35
36   }
37
38   @Override
39   public Integer getTableId(UUID serviceID) {
40     ServiceProperties sp = serviceRegistry.get(serviceID);
41     return sp.tableId;
42   }
43
44   @Override
45   public Integer assignRegister(UUID serviceID) {
46     Integer register = registerQueue.poll();
47     if (register == null) {
48       throw new RuntimeException("No registers remaining");
49     }
50     return register;
51   }
52
53   private Integer assignTableId(Integer altitude) {
54     return null;
55   }
56
57   private class ServiceProperties {
58     Integer altitude;
59     ServiceDirection direction;
60     Integer tableId;
61     List<Integer> registers;
62
63     public ServiceProperties(Integer altitude,
64                              ServiceDirection direction,
65                              Integer tableId,
66                              List<Integer> registers) {
67       this.altitude = altitude;
68       this.direction = direction;
69       this.tableId = tableId;
70       this.registers = registers;
71     }
72
73     public Integer getAltitude() {
74       return altitude;
75     }
76
77     public void setAltitude(Integer altitude) {
78       this.altitude = altitude;
79     }
80
81     public ServiceDirection getDirection() {
82       return direction;
83     }
84
85     public void setDirection(ServiceDirection direction) {
86       this.direction = direction;
87     }
88
89     public Integer getTableId() {
90       return tableId;
91     }
92
93     public void setTableId(Integer tableId) {
94       this.tableId = tableId;
95     }
96
97     public List<Integer> getRegisters() {
98       return registers;
99     }
100
101     public void setRegisters(List<Integer> registers) {
102       this.registers = registers;
103     }
104
105     public void addRegister(Integer register) {
106       this.registers.add(register);
107     }
108
109   }
110
111 }