CORD-131 Added XOS vtn service and port APIs
Change-Id: Ide34212eeb593af5af8db218c6dd2af7d5ab4eaa
diff --git a/apps/xosclient/src/main/java/org/onosproject/xosclient/impl/DefaultVtnServiceApi.java b/apps/xosclient/src/main/java/org/onosproject/xosclient/impl/DefaultVtnServiceApi.java
index d327dae..94d8bbc 100644
--- a/apps/xosclient/src/main/java/org/onosproject/xosclient/impl/DefaultVtnServiceApi.java
+++ b/apps/xosclient/src/main/java/org/onosproject/xosclient/impl/DefaultVtnServiceApi.java
@@ -17,19 +17,18 @@
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.base.Strings;
import com.google.common.collect.Sets;
import org.onosproject.xosclient.api.VtnServiceApi;
import org.onosproject.xosclient.api.XosAccess;
+import org.onosproject.xosclient.api.VtnService;
+import org.onosproject.xosclient.api.VtnServiceId;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
-import java.util.Iterator;
-import java.util.Map;
import java.util.Set;
-import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;
/**
@@ -39,63 +38,52 @@
private final Logger log = LoggerFactory.getLogger(getClass());
- private static DefaultVtnServiceApi instance = null;
-
/**
* Default constructor.
+ *
+ * @param baseUrl base url
+ * @param access xos access
*/
- private DefaultVtnServiceApi(String baseUrl, XosAccess access) {
+ public DefaultVtnServiceApi(String baseUrl, XosAccess access) {
super(baseUrl, access);
}
- /**
- * Returns VTN service API instance. Creates a new instance only if base url or
- * access has been changed.
- *
- * @param baseUrl base url
- * @param access access
- * @return vtn service api
- */
- public static synchronized DefaultVtnServiceApi getInstance(String baseUrl, XosAccess access) {
- checkNotNull(access, "XOS access information is null");
- checkArgument(!Strings.isNullOrEmpty(baseUrl), "VTN service API base url is null or empty");
-
- if (instance == null ||
- !instance.baseUrl.equals(baseUrl) ||
- !instance.access.equals(access)) {
- instance = new DefaultVtnServiceApi(baseUrl, access);
- }
- return instance;
- }
-
@Override
- public Set<String> services() {
+ public Set<VtnServiceId> services() {
String response = restGet(EMPTY_STRING);
log.trace("Get services {}", response);
ObjectMapper mapper = new ObjectMapper();
+ Set<VtnServiceId> services = Sets.newHashSet();
+
try {
JsonNode nodes = mapper.readTree(response);
- return Sets.newHashSet(nodes.fieldNames());
+ nodes.fieldNames().forEachRemaining(id -> services.add(VtnServiceId.of(id)));
} catch (IOException e) {
log.warn("Failed to get service list");
- return Sets.newHashSet();
}
+ return services;
}
@Override
- public Set<String> getProviderServices(String tServiceId) {
+ public VtnService service(VtnServiceId serviceId) {
+ // TODO implement this when XOS provides this API
+ return null;
+ }
+
+ @Override
+ public Set<VtnServiceId> providerServices(VtnServiceId tServiceId) {
checkNotNull(tServiceId);
- String response = restGet(tServiceId);
+ String response = restGet(tServiceId.id());
log.trace("Get provider services {}", response);
ObjectMapper mapper = new ObjectMapper();
- Set<String> pServices = Sets.newHashSet();
+ Set<VtnServiceId> pServices = Sets.newHashSet();
try {
JsonNode nodes = mapper.readTree(response);
- nodes.forEach(node -> pServices.add(node.asText()));
+ nodes.forEach(node -> pServices.add(VtnServiceId.of(node.asText())));
} catch (IOException e) {
log.warn("Failed to get service dependency");
}
@@ -103,26 +91,23 @@
}
@Override
- public Set<String> getTenantServices(String tServiceId) {
+ public Set<VtnServiceId> tenantServices(VtnServiceId tServiceId) {
checkNotNull(tServiceId);
String response = restGet(EMPTY_STRING);
log.trace("Get tenant services {}", response);
ObjectMapper mapper = new ObjectMapper();
- Set<String> tServices = Sets.newHashSet();
+ Set<VtnServiceId> tServices = Sets.newHashSet();
+
try {
JsonNode nodes = mapper.readTree(response);
- Iterator<Map.Entry<String, JsonNode>> iterator = nodes.fields();
-
- while (iterator.hasNext()) {
- Map.Entry<String, JsonNode> entry = iterator.next();
- entry.getValue().forEach(pService -> {
- if (pService.asText().equals(tServiceId)) {
- tServices.add(entry.getKey());
- }
- });
- }
+ nodes.fields().forEachRemaining(entry -> entry.getValue().forEach(
+ pService -> {
+ if (pService.asText().equals(tServiceId.id())) {
+ tServices.add(VtnServiceId.of(entry.getKey()));
+ }
+ }));
} catch (IOException e) {
log.warn("Failed to get service list");
}