CORD-538 Implemented NetworkService with OpenStack networking API
Change-Id: Ia04fff12d44ba4eef23518e3e7366384dd2d2699
diff --git a/src/main/java/org/opencord/cordvtn/api/config/CordVtnConfig.java b/src/main/java/org/opencord/cordvtn/api/config/CordVtnConfig.java
index 0789d51..3f2b094 100644
--- a/src/main/java/org/opencord/cordvtn/api/config/CordVtnConfig.java
+++ b/src/main/java/org/opencord/cordvtn/api/config/CordVtnConfig.java
@@ -248,4 +248,17 @@
getConfig(jsonNode, USER),
getConfig(jsonNode, PASSWORD));
}
+
+ /**
+ * Returns OpenStack API endpoint and credential configuration.
+ *
+ * @return openstack api configuration
+ */
+ public OpenStackConfig openStackConfig() {
+ JsonNode jsonNode = object.get(OPENSTACK);
+ return new OpenStackConfig(jsonNode.path(ENDPOINT).asText(),
+ jsonNode.path(TENANT).asText(),
+ jsonNode.path(USER).asText(),
+ jsonNode.path(PASSWORD).asText());
+ }
}
diff --git a/src/main/java/org/opencord/cordvtn/api/config/OpenStackConfig.java b/src/main/java/org/opencord/cordvtn/api/config/OpenStackConfig.java
new file mode 100644
index 0000000..913b5e8
--- /dev/null
+++ b/src/main/java/org/opencord/cordvtn/api/config/OpenStackConfig.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2016-present Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.opencord.cordvtn.api.config;
+
+import com.google.common.base.MoreObjects;
+
+import java.util.Objects;
+
+/**
+ * Representation of OpenStack API access configuration.
+ */
+public final class OpenStackConfig extends AbstractApiConfig {
+
+ private final String tenant;
+
+ /**
+ * Default constructor.
+ *
+ * @param endpoint api endpoint
+ * @param tenant tenant name
+ * @param user user name
+ * @param password password of the user
+ */
+ public OpenStackConfig(String endpoint, String tenant, String user,
+ String password) {
+ super(endpoint, user, password);
+ this.tenant = tenant;
+ }
+
+ /**
+ * Returns the tenant name.
+ *
+ * @return tenant name
+ */
+ public String tenant() {
+ return tenant;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(endpoint, tenant, user, password);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if ((obj instanceof OpenStackConfig)) {
+ OpenStackConfig that = (OpenStackConfig) obj;
+ if (Objects.equals(endpoint, that.endpoint) &&
+ Objects.equals(tenant, that.tenant) &&
+ Objects.equals(user, that.user) &&
+ Objects.equals(password, that.password)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public String toString() {
+ return MoreObjects.toStringHelper(getClass())
+ .add("endpoint", endpoint)
+ .add("tenant", tenant)
+ .add("user", user)
+ .add("password", password)
+ .toString();
+ }
+}