Committed by
Gerrit Code Review
Fix how default partitions are created
Change-Id: Icb4881fb87b982d88502a0201175dbc2bc209c9c
Showing
4 changed files
with
33 additions
and
49 deletions
| ... | @@ -13,17 +13,13 @@ | ... | @@ -13,17 +13,13 @@ |
| 13 | * See the License for the specific language governing permissions and | 13 | * See the License for the specific language governing permissions and |
| 14 | * limitations under the License. | 14 | * limitations under the License. |
| 15 | */ | 15 | */ |
| 16 | -package org.onosproject.store.cluster.impl; | 16 | +package org.onosproject.cluster; |
| 17 | 17 | ||
| 18 | import static com.google.common.base.Preconditions.checkNotNull; | 18 | import static com.google.common.base.Preconditions.checkNotNull; |
| 19 | 19 | ||
| 20 | import java.util.Collection; | 20 | import java.util.Collection; |
| 21 | import java.util.Objects; | 21 | import java.util.Objects; |
| 22 | 22 | ||
| 23 | -import org.onosproject.cluster.NodeId; | ||
| 24 | -import org.onosproject.cluster.Partition; | ||
| 25 | -import org.onosproject.cluster.PartitionId; | ||
| 26 | - | ||
| 27 | import com.google.common.base.MoreObjects; | 23 | import com.google.common.base.MoreObjects; |
| 28 | import com.google.common.collect.ImmutableSet; | 24 | import com.google.common.collect.ImmutableSet; |
| 29 | import com.google.common.collect.Sets; | 25 | import com.google.common.collect.Sets; | ... | ... |
| ... | @@ -34,6 +34,7 @@ import org.onosproject.cluster.ClusterService; | ... | @@ -34,6 +34,7 @@ import org.onosproject.cluster.ClusterService; |
| 34 | import org.onosproject.cluster.ClusterStore; | 34 | import org.onosproject.cluster.ClusterStore; |
| 35 | import org.onosproject.cluster.ClusterStoreDelegate; | 35 | import org.onosproject.cluster.ClusterStoreDelegate; |
| 36 | import org.onosproject.cluster.ControllerNode; | 36 | import org.onosproject.cluster.ControllerNode; |
| 37 | +import org.onosproject.cluster.DefaultPartition; | ||
| 37 | import org.onosproject.cluster.NodeId; | 38 | import org.onosproject.cluster.NodeId; |
| 38 | import org.onosproject.cluster.Partition; | 39 | import org.onosproject.cluster.Partition; |
| 39 | import org.onosproject.cluster.PartitionId; | 40 | import org.onosproject.cluster.PartitionId; |
| ... | @@ -179,35 +180,18 @@ public class ClusterManager | ... | @@ -179,35 +180,18 @@ public class ClusterManager |
| 179 | Collections.sort(sorted, (o1, o2) -> o1.id().toString().compareTo(o2.id().toString())); | 180 | Collections.sort(sorted, (o1, o2) -> o1.id().toString().compareTo(o2.id().toString())); |
| 180 | Collection<Partition> partitions = Lists.newArrayList(); | 181 | Collection<Partition> partitions = Lists.newArrayList(); |
| 181 | // add p0 partition | 182 | // add p0 partition |
| 182 | - partitions.add(new Partition() { | 183 | + partitions.add(new DefaultPartition(PartitionId.from(0), |
| 183 | - @Override | 184 | + Sets.newHashSet(Collections2.transform(nodes, ControllerNode::id)))); |
| 184 | - public PartitionId getId() { | ||
| 185 | - return PartitionId.from((0)); | ||
| 186 | - } | ||
| 187 | - @Override | ||
| 188 | - public Collection<NodeId> getMembers() { | ||
| 189 | - return Sets.newHashSet(Collections2.transform(nodes, ControllerNode::id)); | ||
| 190 | - } | ||
| 191 | - }); | ||
| 192 | // add extended partitions | 185 | // add extended partitions |
| 193 | int length = nodes.size(); | 186 | int length = nodes.size(); |
| 194 | - int count = 3; | 187 | + int count = Math.min(3, length); |
| 195 | for (int i = 0; i < length; i++) { | 188 | for (int i = 0; i < length; i++) { |
| 196 | int index = i; | 189 | int index = i; |
| 197 | Set<NodeId> set = new HashSet<>(count); | 190 | Set<NodeId> set = new HashSet<>(count); |
| 198 | for (int j = 0; j < count; j++) { | 191 | for (int j = 0; j < count; j++) { |
| 199 | set.add(sorted.get((i + j) % length).id()); | 192 | set.add(sorted.get((i + j) % length).id()); |
| 200 | } | 193 | } |
| 201 | - partitions.add(new Partition() { | 194 | + partitions.add(new DefaultPartition(PartitionId.from((index + 1)), set)); |
| 202 | - @Override | ||
| 203 | - public PartitionId getId() { | ||
| 204 | - return PartitionId.from((index + 1)); | ||
| 205 | - } | ||
| 206 | - @Override | ||
| 207 | - public Collection<NodeId> getMembers() { | ||
| 208 | - return set; | ||
| 209 | - } | ||
| 210 | - }); | ||
| 211 | } | 195 | } |
| 212 | return partitions; | 196 | return partitions; |
| 213 | } | 197 | } | ... | ... |
| ... | @@ -41,6 +41,7 @@ import org.onosproject.cluster.ClusterMetadataStore; | ... | @@ -41,6 +41,7 @@ import org.onosproject.cluster.ClusterMetadataStore; |
| 41 | import org.onosproject.cluster.ClusterMetadataStoreDelegate; | 41 | import org.onosproject.cluster.ClusterMetadataStoreDelegate; |
| 42 | import org.onosproject.cluster.ControllerNode; | 42 | import org.onosproject.cluster.ControllerNode; |
| 43 | import org.onosproject.cluster.DefaultControllerNode; | 43 | import org.onosproject.cluster.DefaultControllerNode; |
| 44 | +import org.onosproject.cluster.DefaultPartition; | ||
| 44 | import org.onosproject.cluster.NodeId; | 45 | import org.onosproject.cluster.NodeId; |
| 45 | import org.onosproject.cluster.Partition; | 46 | import org.onosproject.cluster.Partition; |
| 46 | import org.onosproject.cluster.PartitionId; | 47 | import org.onosproject.cluster.PartitionId; |
| ... | @@ -94,6 +95,8 @@ public class StaticClusterMetadataStore | ... | @@ -94,6 +95,8 @@ public class StaticClusterMetadataStore |
| 94 | module.addSerializer(ControllerNode.class, new ControllerNodeSerializer()); | 95 | module.addSerializer(ControllerNode.class, new ControllerNodeSerializer()); |
| 95 | module.addDeserializer(ControllerNode.class, new ControllerNodeDeserializer()); | 96 | module.addDeserializer(ControllerNode.class, new ControllerNodeDeserializer()); |
| 96 | module.addDeserializer(Partition.class, new PartitionDeserializer()); | 97 | module.addDeserializer(Partition.class, new PartitionDeserializer()); |
| 98 | + module.addSerializer(PartitionId.class, new PartitionIdSerializer()); | ||
| 99 | + module.addDeserializer(PartitionId.class, new PartitionIdDeserializer()); | ||
| 97 | mapper.registerModule(module); | 100 | mapper.registerModule(module); |
| 98 | File metadataFile = new File(CLUSTER_METADATA_FILE); | 101 | File metadataFile = new File(CLUSTER_METADATA_FILE); |
| 99 | if (metadataFile.exists()) { | 102 | if (metadataFile.exists()) { |
| ... | @@ -107,21 +110,14 @@ public class StaticClusterMetadataStore | ... | @@ -107,21 +110,14 @@ public class StaticClusterMetadataStore |
| 107 | String localIp = getSiteLocalAddress(); | 110 | String localIp = getSiteLocalAddress(); |
| 108 | ControllerNode localNode = | 111 | ControllerNode localNode = |
| 109 | new DefaultControllerNode(new NodeId(localIp), IpAddress.valueOf(localIp), DEFAULT_ONOS_PORT); | 112 | new DefaultControllerNode(new NodeId(localIp), IpAddress.valueOf(localIp), DEFAULT_ONOS_PORT); |
| 110 | - Partition defaultPartition = new Partition() { | 113 | + // p0 partition |
| 111 | - @Override | 114 | + Partition basePartition = new DefaultPartition(PartitionId.from(0), Sets.newHashSet(localNode.id())); |
| 112 | - public PartitionId getId() { | 115 | + // p1 partition |
| 113 | - return PartitionId.from(1); | 116 | + Partition extendedPartition = new DefaultPartition(PartitionId.from(1), Sets.newHashSet(localNode.id())); |
| 114 | - } | ||
| 115 | - | ||
| 116 | - @Override | ||
| 117 | - public Collection<NodeId> getMembers() { | ||
| 118 | - return Sets.newHashSet(localNode.id()); | ||
| 119 | - } | ||
| 120 | - }; | ||
| 121 | metadata.set(ClusterMetadata.builder() | 117 | metadata.set(ClusterMetadata.builder() |
| 122 | .withName("default") | 118 | .withName("default") |
| 123 | .withControllerNodes(Arrays.asList(localNode)) | 119 | .withControllerNodes(Arrays.asList(localNode)) |
| 124 | - .withPartitions(Lists.newArrayList(defaultPartition)) | 120 | + .withPartitions(Lists.newArrayList(basePartition, extendedPartition)) |
| 125 | .build()); | 121 | .build()); |
| 126 | version = System.currentTimeMillis(); | 122 | version = System.currentTimeMillis(); |
| 127 | } | 123 | } |
| ... | @@ -194,6 +190,23 @@ public class StaticClusterMetadataStore | ... | @@ -194,6 +190,23 @@ public class StaticClusterMetadataStore |
| 194 | } | 190 | } |
| 195 | } | 191 | } |
| 196 | 192 | ||
| 193 | + private static class PartitionIdSerializer extends JsonSerializer<PartitionId> { | ||
| 194 | + @Override | ||
| 195 | + public void serialize(PartitionId partitionId, JsonGenerator jgen, SerializerProvider provider) | ||
| 196 | + throws IOException, JsonProcessingException { | ||
| 197 | + jgen.writeNumber(partitionId.asInt()); | ||
| 198 | + } | ||
| 199 | + } | ||
| 200 | + | ||
| 201 | + private class PartitionIdDeserializer extends JsonDeserializer<PartitionId> { | ||
| 202 | + @Override | ||
| 203 | + public PartitionId deserialize(JsonParser jp, DeserializationContext ctxt) | ||
| 204 | + throws IOException, JsonProcessingException { | ||
| 205 | + JsonNode node = jp.getCodec().readTree(jp); | ||
| 206 | + return new PartitionId(node.asInt()); | ||
| 207 | + } | ||
| 208 | + } | ||
| 209 | + | ||
| 197 | private static class ControllerNodeSerializer extends JsonSerializer<ControllerNode> { | 210 | private static class ControllerNodeSerializer extends JsonSerializer<ControllerNode> { |
| 198 | @Override | 211 | @Override |
| 199 | public void serialize(ControllerNode node, JsonGenerator jgen, SerializerProvider provider) | 212 | public void serialize(ControllerNode node, JsonGenerator jgen, SerializerProvider provider) | ... | ... |
| ... | @@ -36,6 +36,7 @@ import org.onosproject.cluster.ClusterMetadataEventListener; | ... | @@ -36,6 +36,7 @@ import org.onosproject.cluster.ClusterMetadataEventListener; |
| 36 | import org.onosproject.cluster.ClusterMetadataService; | 36 | import org.onosproject.cluster.ClusterMetadataService; |
| 37 | import org.onosproject.cluster.ControllerNode; | 37 | import org.onosproject.cluster.ControllerNode; |
| 38 | import org.onosproject.cluster.DefaultControllerNode; | 38 | import org.onosproject.cluster.DefaultControllerNode; |
| 39 | +import org.onosproject.cluster.DefaultPartition; | ||
| 39 | import org.onosproject.cluster.NodeId; | 40 | import org.onosproject.cluster.NodeId; |
| 40 | import org.onosproject.cluster.Partition; | 41 | import org.onosproject.cluster.Partition; |
| 41 | import org.onosproject.cluster.PartitionId; | 42 | import org.onosproject.cluster.PartitionId; |
| ... | @@ -79,7 +80,6 @@ import org.onosproject.net.provider.AbstractProviderService; | ... | @@ -79,7 +80,6 @@ import org.onosproject.net.provider.AbstractProviderService; |
| 79 | import org.onosproject.net.provider.ProviderId; | 80 | import org.onosproject.net.provider.ProviderId; |
| 80 | 81 | ||
| 81 | import java.nio.ByteBuffer; | 82 | import java.nio.ByteBuffer; |
| 82 | -import java.util.Collection; | ||
| 83 | import java.util.HashMap; | 83 | import java.util.HashMap; |
| 84 | import java.util.HashSet; | 84 | import java.util.HashSet; |
| 85 | import java.util.List; | 85 | import java.util.List; |
| ... | @@ -953,16 +953,7 @@ public class LldpLinkProviderTest { | ... | @@ -953,16 +953,7 @@ public class LldpLinkProviderTest { |
| 953 | public ClusterMetadata getClusterMetadata() { | 953 | public ClusterMetadata getClusterMetadata() { |
| 954 | final NodeId nid = new NodeId("test-node"); | 954 | final NodeId nid = new NodeId("test-node"); |
| 955 | final IpAddress addr = IpAddress.valueOf(0); | 955 | final IpAddress addr = IpAddress.valueOf(0); |
| 956 | - final Partition p = new Partition() { | 956 | + final Partition p = new DefaultPartition(PartitionId.from(1), Sets.newHashSet(nid)); |
| 957 | - public PartitionId getId() { | ||
| 958 | - return PartitionId.from(1); | ||
| 959 | - } | ||
| 960 | - | ||
| 961 | - @Override | ||
| 962 | - public Collection<NodeId> getMembers() { | ||
| 963 | - return Sets.newHashSet(nid); | ||
| 964 | - } | ||
| 965 | - }; | ||
| 966 | return ClusterMetadata.builder() | 957 | return ClusterMetadata.builder() |
| 967 | .withName("test-cluster") | 958 | .withName("test-cluster") |
| 968 | .withControllerNodes(Sets.newHashSet(new DefaultControllerNode(nid, addr))) | 959 | .withControllerNodes(Sets.newHashSet(new DefaultControllerNode(nid, addr))) | ... | ... |
-
Please register or login to post a comment