Supports Mm5 Interface in KubevirtNode app.
- Adds datacenter and cluster id parameter to KubevirtApiConfig
- Implements related REST API web resource
Change-Id: Ib1b6cbc1dbbe11def4d97d78c2e74b5eeec560dc
diff --git a/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/DefaultKubevirtApiConfig.java b/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/DefaultKubevirtApiConfig.java
index 1cf58ed..753d360 100644
--- a/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/DefaultKubevirtApiConfig.java
+++ b/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/DefaultKubevirtApiConfig.java
@@ -41,6 +41,8 @@
private final String serviceFqdn;
private final String apiServerFqdn;
private final IpAddress controllerIp;
+ private final String datacenterId;
+ private final String clusterId;
/**
* Default constructor for Kubevirt API config.
@@ -56,13 +58,15 @@
* @param serviceFqdn service FQDN
* @param apiServerFqdn API server FQDN
* @param controllerIp controller IP address
+ * @param datacenterId datacenter Id
+ * @param clusterId cluster Id
*/
private DefaultKubevirtApiConfig(Scheme scheme, IpAddress ipAddress,
- int port, State state,
- String token, String caCertData,
- String clientCertData, String clientKeyData,
- String serviceFqdn, String apiServerFqdn,
- IpAddress controllerIp) {
+ int port, State state,
+ String token, String caCertData,
+ String clientCertData, String clientKeyData,
+ String serviceFqdn, String apiServerFqdn,
+ IpAddress controllerIp, String datacenterId, String clusterId) {
this.scheme = scheme;
this.ipAddress = ipAddress;
this.port = port;
@@ -74,6 +78,8 @@
this.serviceFqdn = serviceFqdn;
this.apiServerFqdn = apiServerFqdn;
this.controllerIp = controllerIp;
+ this.datacenterId = datacenterId;
+ this.clusterId = clusterId;
}
@Override
@@ -110,6 +116,8 @@
.serviceFqdn(serviceFqdn)
.apiServerFqdn(apiServerFqdn)
.controllerIp(controllerIp)
+ .datacenterId(datacenterId)
+ .clusterId(clusterId)
.build();
}
@@ -127,6 +135,8 @@
.serviceFqdn(serviceFqdn)
.apiServerFqdn(apiServerFqdn)
.controllerIp(controllerIp)
+ .datacenterId(datacenterId)
+ .clusterId(clusterId)
.build();
}
@@ -144,6 +154,8 @@
.serviceFqdn(serviceFqdn)
.apiServerFqdn(apiServerFqdn)
.controllerIp(controllerIp)
+ .datacenterId(datacenterId)
+ .clusterId(clusterId)
.build();
}
@@ -183,6 +195,16 @@
}
@Override
+ public String datacenterId() {
+ return datacenterId;
+ }
+
+ @Override
+ public String clusterId() {
+ return clusterId;
+ }
+
+ @Override
public boolean equals(Object o) {
if (this == o) {
return true;
@@ -198,14 +220,16 @@
clientKeyData.equals(that.clientKeyData) &&
Objects.equals(serviceFqdn, that.serviceFqdn) &&
Objects.equals(apiServerFqdn, that.apiServerFqdn) &&
- Objects.equals(controllerIp, that.controllerIp);
+ Objects.equals(controllerIp, that.controllerIp) &&
+ Objects.equals(datacenterId, that.datacenterId) &&
+ Objects.equals(clusterId, that.clusterId);
}
@Override
public int hashCode() {
return Objects.hash(scheme, ipAddress, port, state, token,
caCertData, clientCertData, clientKeyData, serviceFqdn,
- apiServerFqdn, controllerIp);
+ apiServerFqdn, controllerIp, datacenterId, clusterId);
}
@Override
@@ -222,6 +246,8 @@
.add("serviceFqdn", serviceFqdn)
.add("apiServerFqdn", apiServerFqdn)
.add("controllerIp", controllerIp)
+ .add("datacenterId", datacenterId)
+ .add("clusterId", clusterId)
.toString();
}
@@ -247,6 +273,8 @@
private String serviceFqdn;
private String apiServerFqdn;
private IpAddress controllerIp;
+ private String datacenterId;
+ private String clusterId;
@Override
public KubevirtApiConfig build() {
@@ -262,7 +290,7 @@
return new DefaultKubevirtApiConfig(scheme, ipAddress, port, state,
token, caCertData, clientCertData, clientKeyData, serviceFqdn,
- apiServerFqdn, controllerIp);
+ apiServerFqdn, controllerIp, datacenterId, clusterId);
}
@Override
@@ -330,5 +358,17 @@
this.controllerIp = controllerIp;
return this;
}
+
+ @Override
+ public Builder datacenterId(String datacenterId) {
+ this.datacenterId = datacenterId;
+ return this;
+ }
+
+ @Override
+ public Builder clusterId(String clusterId) {
+ this.clusterId = clusterId;
+ return this;
+ }
}
}
diff --git a/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/KubevirtApiConfig.java b/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/KubevirtApiConfig.java
index 74ad4cb..c56c9b6 100644
--- a/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/KubevirtApiConfig.java
+++ b/apps/kubevirt-node/api/src/main/java/org/onosproject/kubevirtnode/api/KubevirtApiConfig.java
@@ -154,6 +154,20 @@
IpAddress controllerIp();
/**
+ * Returns the datacenter id.
+ *
+ * @return datacenter id.
+ */
+ String datacenterId();
+
+ /**
+ * Returns the cluster id.
+ *
+ * @return cluster id.
+ */
+ String clusterId();
+
+ /**
* Builder of new API config entity.
*/
interface Builder {
@@ -252,5 +266,21 @@
* @return Kubevirt API config builder
*/
Builder controllerIp(IpAddress controllerIp);
+
+ /**
+ * Returns kubevirt API server config builder with the supplied datacenter id.
+ *
+ * @param datacenteId datacenter id
+ * @return Kubevirt API config builder
+ */
+ Builder datacenterId(String datacenteId);
+
+ /**
+ * Returns kubevirt API server config builder with the supplied cluster id.
+ *
+ * @param clusterId cluster id
+ * @return Kubevirt API config builder
+ */
+ Builder clusterId(String clusterId);
}
}
diff --git a/apps/kubevirt-node/api/src/test/java/org/onosproject/kubevirtnode/api/DefaultKubevirtApiConfigTest.java b/apps/kubevirt-node/api/src/test/java/org/onosproject/kubevirtnode/api/DefaultKubevirtApiConfigTest.java
index 7b98323..486e0dc 100644
--- a/apps/kubevirt-node/api/src/test/java/org/onosproject/kubevirtnode/api/DefaultKubevirtApiConfigTest.java
+++ b/apps/kubevirt-node/api/src/test/java/org/onosproject/kubevirtnode/api/DefaultKubevirtApiConfigTest.java
@@ -62,6 +62,13 @@
private static final IpAddress CONTROLLER_IP_1 = IpAddress.valueOf("127.0.0.1");
private static final IpAddress CONTROLLER_IP_2 = IpAddress.valueOf("169.254.169.254");
+ private static final String DATACENTER_ID_1 = "BD";
+ private static final String DATACENTER_ID_2 = "SS";
+
+ private static final String CLUSTER_ID_1 = "BD-CT-01";
+ private static final String CLUSTER_ID_2 = "SS-CT-01";
+
+
private KubevirtApiConfig config1;
private KubevirtApiConfig sameAsConfig1;
private KubevirtApiConfig config2;
@@ -91,6 +98,8 @@
.serviceFqdn(SERVICE_FQDN_1)
.apiServerFqdn(API_SERVER_FQDN_1)
.controllerIp(CONTROLLER_IP_1)
+ .datacenterId(DATACENTER_ID_1)
+ .clusterId(CLUSTER_ID_1)
.build();
sameAsConfig1 = DefaultKubevirtApiConfig.builder()
@@ -105,6 +114,8 @@
.serviceFqdn(SERVICE_FQDN_1)
.apiServerFqdn(API_SERVER_FQDN_1)
.controllerIp(CONTROLLER_IP_1)
+ .datacenterId(DATACENTER_ID_1)
+ .clusterId(CLUSTER_ID_1)
.build();
config2 = DefaultKubevirtApiConfig.builder()
@@ -119,6 +130,8 @@
.serviceFqdn(SERVICE_FQDN_2)
.apiServerFqdn(API_SERVER_FQDN_2)
.controllerIp(CONTROLLER_IP_2)
+ .datacenterId(DATACENTER_ID_2)
+ .clusterId(CLUSTER_ID_2)
.build();
}
@@ -150,5 +163,7 @@
assertEquals(SERVICE_FQDN_1, config.serviceFqdn());
assertEquals(API_SERVER_FQDN_1, config.apiServerFqdn());
assertEquals(CONTROLLER_IP_1, config.controllerIp());
+ assertEquals(DATACENTER_ID_1, config.datacenterId());
+ assertEquals(CLUSTER_ID_1, config.clusterId());
}
}
diff --git a/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/cli/KubevirtListApiConfigsCommand.java b/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/cli/KubevirtListApiConfigsCommand.java
index 5b9c268..75d4ced 100644
--- a/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/cli/KubevirtListApiConfigsCommand.java
+++ b/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/cli/KubevirtListApiConfigsCommand.java
@@ -33,7 +33,7 @@
description = "Lists all KubeVirt API server configs registered to the service")
public class KubevirtListApiConfigsCommand extends AbstractShellCommand {
- private static final String FORMAT = "%-10s%-20s%-10s%-25s%-10s";
+ private static final String FORMAT = "%-10s%-20s%-10s%-25s%-10s%-20s%-20s";
@Override
protected void doExecute() throws Exception {
@@ -43,14 +43,14 @@
if (outputJson()) {
print("%s", json(config));
} else {
- print(FORMAT, "Scheme", "Server IP", "Port", "Controller IP", "State");
+ print(FORMAT, "Scheme", "Server IP", "Port", "Controller IP", "State", "Datacenter ID", "Cluster ID");
String controllerIp = "N/A";
if (config != null) {
if (config.controllerIp() != null) {
controllerIp = config.controllerIp().toString();
}
print(FORMAT, config.scheme().name(), config.ipAddress().toString(),
- config.port(), controllerIp, config.state().name());
+ config.port(), controllerIp, config.state().name(), config.datacenterId(), config.clusterId());
} else {
print("Kubevirt config not found!");
}
diff --git a/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/codec/KubevirtApiConfigCodec.java b/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/codec/KubevirtApiConfigCodec.java
index 9fc2099..e79843f 100644
--- a/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/codec/KubevirtApiConfigCodec.java
+++ b/apps/kubevirt-node/app/src/main/java/org/onosproject/kubevirtnode/codec/KubevirtApiConfigCodec.java
@@ -44,6 +44,8 @@
private static final String SERVICE_FQDN = "serviceFqdn";
private static final String API_SERVER_FQDN = "apiServerFqdn";
private static final String CONTROLLER_IP = "controllerIp";
+ private static final String DATACENTER_ID = "datacenterId";
+ private static final String CLUSTER_ID = "clusterId";
private static final String MISSING_MESSAGE = " is required in KubevirtApiConfig";
@@ -53,7 +55,9 @@
.put(SCHEME, entity.scheme().name())
.put(IP_ADDRESS, entity.ipAddress().toString())
.put(PORT, entity.port())
- .put(STATE, entity.state().name());
+ .put(STATE, entity.state().name())
+ .put(DATACENTER_ID, entity.datacenterId())
+ .put(CLUSTER_ID, entity.clusterId());
if (entity.scheme() == HTTPS) {
node.put(CA_CERT_DATA, entity.caCertData())
@@ -122,6 +126,8 @@
JsonNode serviceFqdn = json.get(SERVICE_FQDN);
JsonNode apiServerFqdn = json.get(API_SERVER_FQDN);
JsonNode controllerIp = json.get(CONTROLLER_IP);
+ JsonNode datacenterId = json.get(DATACENTER_ID);
+ JsonNode clusterId = json.get(CLUSTER_ID);
String token = "";
String caCertData = "";
@@ -186,6 +192,14 @@
builder.controllerIp(IpAddress.valueOf(controllerIp.asText()));
}
+ if (datacenterId != null) {
+ builder.datacenterId(datacenterId.asText());
+ }
+
+ if (clusterId != null) {
+ builder.clusterId(clusterId.asText());
+ }
+
return builder.build();
}
}
diff --git a/apps/kubevirt-node/app/src/main/resources/definitions/KubevirtApiConfig.json b/apps/kubevirt-node/app/src/main/resources/definitions/KubevirtApiConfig.json
index 4e0800d..88c5520 100644
--- a/apps/kubevirt-node/app/src/main/resources/definitions/KubevirtApiConfig.json
+++ b/apps/kubevirt-node/app/src/main/resources/definitions/KubevirtApiConfig.json
@@ -5,7 +5,9 @@
"segmentId",
"scheme",
"ipAddress",
- "port"
+ "port",
+ "datacenterId",
+ "clusterId"
],
"properties": {
"clusterName": {
@@ -27,6 +29,14 @@
"port": {
"type": "integer",
"example": 6443
+ },
+ "datacenterId": {
+ "type": "string",
+ "example": "BD"
+ },
+ "clusterId": {
+ "type": "string",
+ "example": "BD-MEH-CT01"
}
}
}
\ No newline at end of file
diff --git a/apps/kubevirt-node/app/src/test/java/org/onosproject/kubevirtnode/codec/KubevirtApiConfigCodecTest.java b/apps/kubevirt-node/app/src/test/java/org/onosproject/kubevirtnode/codec/KubevirtApiConfigCodecTest.java
index 16af906..06dfd48 100644
--- a/apps/kubevirt-node/app/src/test/java/org/onosproject/kubevirtnode/codec/KubevirtApiConfigCodecTest.java
+++ b/apps/kubevirt-node/app/src/test/java/org/onosproject/kubevirtnode/codec/KubevirtApiConfigCodecTest.java
@@ -89,7 +89,10 @@
.serviceFqdn("kubevirt.edgestack.svc.cluster.local")
.apiServerFqdn("kubernetes.default.svc.cluster.local")
.controllerIp(IpAddress.valueOf("127.0.0.1"))
+ .datacenterId("BD")
+ .clusterId("BD-MEH-CT01")
.build();
+
ObjectNode configJson = kubevirtApiConfigCodec.encode(config, context);
assertThat(configJson, matchesKubevirtApiConfig(config));
}
@@ -113,6 +116,9 @@
assertEquals("kubevirt.edgestack.svc.cluster.local", config.serviceFqdn());
assertEquals("kubernetes.default.svc.cluster.local", config.apiServerFqdn());
assertEquals("127.0.0.1", config.controllerIp().toString());
+ assertEquals("BD", config.datacenterId());
+ assertEquals("BD-MEH-CT01", config.clusterId());
+
}
private KubevirtApiConfig getKubevirtApiConfig(String resourceName) throws IOException {
diff --git a/apps/kubevirt-node/app/src/test/java/org/onosproject/kubevirtnode/impl/KubevirtApiConfigManagerTest.java b/apps/kubevirt-node/app/src/test/java/org/onosproject/kubevirtnode/impl/KubevirtApiConfigManagerTest.java
index 0e5db34..98a6b1e 100644
--- a/apps/kubevirt-node/app/src/test/java/org/onosproject/kubevirtnode/impl/KubevirtApiConfigManagerTest.java
+++ b/apps/kubevirt-node/app/src/test/java/org/onosproject/kubevirtnode/impl/KubevirtApiConfigManagerTest.java
@@ -74,12 +74,16 @@
.ipAddress(IpAddress.valueOf("10.10.10.2"))
.port(6443)
.state(DISCONNECTED)
+ .datacenterId("BD")
+ .clusterId("BD-MEH-CT01")
.build();
apiConfig2 = DefaultKubevirtApiConfig.builder()
.scheme(KubevirtApiConfig.Scheme.HTTP)
.ipAddress(IpAddress.valueOf("10.10.10.3"))
.port(6443)
.state(DISCONNECTED)
+ .datacenterId("BD")
+ .clusterId("BD-MEH-CT01")
.build();
configStore = new DistributedKubevirtApiConfigStore();
diff --git a/apps/kubevirt-node/app/src/test/java/org/onosproject/kubevirtnode/web/KubevirtApiConfigWebResourceTest.java b/apps/kubevirt-node/app/src/test/java/org/onosproject/kubevirtnode/web/KubevirtApiConfigWebResourceTest.java
index e6d1034..5a72b49 100644
--- a/apps/kubevirt-node/app/src/test/java/org/onosproject/kubevirtnode/web/KubevirtApiConfigWebResourceTest.java
+++ b/apps/kubevirt-node/app/src/test/java/org/onosproject/kubevirtnode/web/KubevirtApiConfigWebResourceTest.java
@@ -87,6 +87,8 @@
.caCertData("caCertData")
.clientCertData("clientCertData")
.clientKeyData("clientKeyData")
+ .datacenterId("DB")
+ .clusterId("BD-MEH-CT01")
.build();
}
diff --git a/apps/kubevirt-node/app/src/test/resources/org/onosproject/kubevirtnode/codec/KubevirtApiConfig.json b/apps/kubevirt-node/app/src/test/resources/org/onosproject/kubevirtnode/codec/KubevirtApiConfig.json
index b95c29a..5f48d0a 100644
--- a/apps/kubevirt-node/app/src/test/resources/org/onosproject/kubevirtnode/codec/KubevirtApiConfig.json
+++ b/apps/kubevirt-node/app/src/test/resources/org/onosproject/kubevirtnode/codec/KubevirtApiConfig.json
@@ -8,5 +8,7 @@
"clientKeyData": "clientKeyData",
"serviceFqdn": "kubevirt.edgestack.svc.cluster.local",
"apiServerFqdn": "kubernetes.default.svc.cluster.local",
- "controllerIp": "127.0.0.1"
+ "controllerIp": "127.0.0.1",
+ "datacenterId": "BD",
+ "clusterId": "BD-MEH-CT01"
}
\ No newline at end of file
diff --git a/apps/kubevirt-node/app/src/test/resources/org/onosproject/kubevirtnode/web/kubevirt-api-config.json b/apps/kubevirt-node/app/src/test/resources/org/onosproject/kubevirtnode/web/kubevirt-api-config.json
index 7a5c5f5..b256cc4 100644
--- a/apps/kubevirt-node/app/src/test/resources/org/onosproject/kubevirtnode/web/kubevirt-api-config.json
+++ b/apps/kubevirt-node/app/src/test/resources/org/onosproject/kubevirtnode/web/kubevirt-api-config.json
@@ -6,5 +6,7 @@
"caCertData": "caCertData",
"clientCertData": "clientCertData",
"clientKeyData": "clientKeyData",
- "controllerIp": "127.0.0.1"
+ "controllerIp": "127.0.0.1",
+ "datacenterId": "BD",
+ "clusterId": "BD-MEH-CT01"
}
\ No newline at end of file