BUG 2187 - Persisting shard list in ShardManager
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / main / java / org / opendaylight / controller / cluster / datastore / config / ModuleConfig.java
1 /*
2  * Copyright (c) 2015 Brocade Communications Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.controller.cluster.datastore.config;
9
10 import com.google.common.collect.ImmutableSet;
11 import java.util.Collection;
12 import java.util.HashMap;
13 import java.util.Map;
14 import java.util.Set;
15 import org.opendaylight.controller.cluster.datastore.shardstrategy.ShardStrategy;
16
17 /**
18  * Encapsulates configuration for a module.
19  *
20  * @author Thomas Pantelis
21  */
22 public class ModuleConfig {
23     private final String name;
24     private String nameSpace;
25     private ShardStrategy shardStrategy;
26     private final Map<String, ShardConfig> shardConfigs = new HashMap<>();
27
28     public ModuleConfig(final String name) {
29         this.name = name;
30     }
31
32     public ModuleConfig(ModuleConfig moduleConfig) {
33         this.name = moduleConfig.getName();
34         this.nameSpace = moduleConfig.getNameSpace();
35         this.shardStrategy = moduleConfig.getShardStrategy();
36         for (ShardConfig shardConfig : moduleConfig.getShardConfigs()) {
37             shardConfigs.put(shardConfig.getName(), new ShardConfig(shardConfig.getName(),
38                 ImmutableSet.copyOf(shardConfig.getReplicas())));
39         }
40     }
41
42     public String getName() {
43         return name;
44     }
45
46     public String getNameSpace() {
47         return nameSpace;
48     }
49
50     public ShardStrategy getShardStrategy() {
51         return shardStrategy;
52     }
53
54     public ShardConfig getShardConfig(String name) {
55         return shardConfigs.get(name);
56     }
57
58     public Collection<ShardConfig> getShardConfigs() {
59         return shardConfigs.values();
60     }
61
62     public Collection<String> getShardNames() {
63         return shardConfigs.keySet();
64     }
65
66     public void addShardConfig(String name, Set<String> replicas) {
67         shardConfigs.put(name, new ShardConfig(name, replicas));
68     }
69
70     public void setNameSpace(String nameSpace) {
71         this.nameSpace = nameSpace;
72     }
73
74     public void setShardStrategy(ShardStrategy shardStrategy) {
75         this.shardStrategy = shardStrategy;
76     }
77
78     public ShardConfig removeShardConfig(String name) {
79         return shardConfigs.remove(name);
80     }
81 }