Improvements for XOS integration app
- Add a default value for the tenant provider service
id and don't require callers to set it when creating
a tenant.
- Add javadocs to the volt tenant object.
Change-Id: I1144820eb3e311cffc87ecefaccf689127730dcf
diff --git a/apps/xos-integration/src/main/java/org/onosproject/xosintegration/OnosXOSIntegrationManager.java b/apps/xos-integration/src/main/java/org/onosproject/xosintegration/OnosXOSIntegrationManager.java
index d62cbde..9950c33 100644
--- a/apps/xos-integration/src/main/java/org/onosproject/xosintegration/OnosXOSIntegrationManager.java
+++ b/apps/xos-integration/src/main/java/org/onosproject/xosintegration/OnosXOSIntegrationManager.java
@@ -56,24 +56,39 @@
@Component(immediate = true)
@Service
public class OnosXOSIntegrationManager implements VoltTenantService {
+ private static final String XOS_SERVER_ADDRESS_PROPERTY_NAME =
+ "xosServerAddress";
+ private static final String XOS_SERVER_PORT_PROPERTY_NAME =
+ "xosServerPort";
+ private static final String XOS_PROVIDER_SERVICE_PROPERTY_NAME =
+ "xosProviderService";
private static final String TEST_XOS_SERVER_ADDRESS = "10.254.1.22";
private static final int TEST_XOS_SERVER_PORT = 8000;
private static final String XOS_TENANT_BASE_URI = "/xoslib/volttenant/";
+ private static final int TEST_XOS_PROVIDER_SERVICE = 1;
private final Logger log = getLogger(getClass());
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected CoreService coreService;
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected ComponentConfigService cfgService;
- @Property(name = "XOSServerAddress",
+
+ @Property(name = XOS_SERVER_ADDRESS_PROPERTY_NAME,
value = TEST_XOS_SERVER_ADDRESS,
label = "XOS Server address")
protected String xosServerAddress = TEST_XOS_SERVER_ADDRESS;
- @Property(name = "XOSServerPort",
+
+ @Property(name = XOS_SERVER_PORT_PROPERTY_NAME,
intValue = TEST_XOS_SERVER_PORT,
label = "XOS Server port")
protected int xosServerPort = TEST_XOS_SERVER_PORT;
+
+ @Property(name = XOS_PROVIDER_SERVICE_PROPERTY_NAME,
+ intValue = TEST_XOS_PROVIDER_SERVICE,
+ label = "XOS Provider Service")
+ protected int xosProviderService = TEST_XOS_PROVIDER_SERVICE;
+
private ApplicationId appId;
@Activate
@@ -244,7 +259,16 @@
@Override
public VoltTenant addTenant(VoltTenant newTenant) {
- String json = tenantToJson(newTenant);
+ long providerServiceId = newTenant.providerService();
+ if (providerServiceId == -1) {
+ providerServiceId = xosProviderService;
+ }
+ VoltTenant tenantToCreate = VoltTenant.builder()
+ .withProviderService(providerServiceId)
+ .withServiceSpecificId(newTenant.serviceSpecificId())
+ .withVlanId(newTenant.vlanId())
+ .build();
+ String json = tenantToJson(tenantToCreate);
postRest(json);
return newTenant;
}
@@ -268,16 +292,23 @@
private void readComponentConfiguration(ComponentContext context) {
Dictionary<?, ?> properties = context.getProperties();
- String newXosServerAddress = Tools.get(properties, "XOSServerAddress");
+ String newXosServerAddress =
+ Tools.get(properties, XOS_SERVER_ADDRESS_PROPERTY_NAME);
if (!isNullOrEmpty(newXosServerAddress)) {
xosServerAddress = newXosServerAddress;
}
- String newXosServerPortString = Tools.get(properties, "XOSServerPort");
+ String newXosServerPortString =
+ Tools.get(properties, XOS_SERVER_PORT_PROPERTY_NAME);
if (!isNullOrEmpty(newXosServerPortString)) {
xosServerPort = Integer.parseInt(newXosServerPortString);
}
- log.info("XOS URL is now http://{}:{}", xosServerAddress, xosServerPort);
+
+ String newXosProviderServiceString =
+ Tools.get(properties, XOS_PROVIDER_SERVICE_PROPERTY_NAME);
+ if (!isNullOrEmpty(newXosProviderServiceString)) {
+ xosProviderService = Integer.parseInt(newXosProviderServiceString);
+ }
}
}
diff --git a/apps/xos-integration/src/main/java/org/onosproject/xosintegration/VoltTenant.java b/apps/xos-integration/src/main/java/org/onosproject/xosintegration/VoltTenant.java
index e35a630..18b24e1 100644
--- a/apps/xos-integration/src/main/java/org/onosproject/xosintegration/VoltTenant.java
+++ b/apps/xos-integration/src/main/java/org/onosproject/xosintegration/VoltTenant.java
@@ -15,7 +15,6 @@
*/
package org.onosproject.xosintegration;
-
import com.google.common.base.MoreObjects;
public final class VoltTenant {
@@ -26,6 +25,15 @@
private final String serviceSpecificId;
private final String vlanId;
+ /**
+ * Constructs a vOLT tenant object.
+ *
+ * @param humanReadableName name string
+ * @param id identifier for the tenant
+ * @param providerService provider service ID
+ * @param serviceSpecificId id for the user
+ * @param vlanId vlan id for the user
+ */
private VoltTenant(String humanReadableName, long id, long providerService,
String serviceSpecificId, String vlanId) {
this.humanReadableName = humanReadableName;
@@ -35,62 +43,131 @@
this.vlanId = vlanId;
}
+ /**
+ * Fetches a builder to make a tenant.
+ *
+ * @return tenant builder
+ */
public static Builder builder() {
return new Builder();
}
+ /**
+ * Fetches the name of the tenant.
+ *
+ * @return human readable name
+ */
public String humanReadableName() {
return humanReadableName;
}
+ /**
+ * Fetches the ID of the tenant object.
+ *
+ * @return ID of tenant object.
+ */
public long id() {
return id;
}
+ /**
+ * Fetches the identifier for the provider service.
+ *
+ * @return provider service ID
+ */
public long providerService() {
return providerService;
}
+ /**
+ * Fetches the server specific ID (user id).
+ *
+ * @return server specific ID
+ */
public String serviceSpecificId() {
return serviceSpecificId;
}
+ /**
+ * Fetches the vlan id for this tenant.
+ *
+ * @return VLAN ID
+ */
public String vlanId() {
return vlanId;
}
+ /**
+ * Builder class to allow callers to assemble tenants.
+ */
+
public static final class Builder {
private String humanReadableName = "unknown";
private long id = 0;
- private long providerService = 0;
+ private long providerService = -1;
private String serviceSpecificId = "unknown";
private String vlanId = "unknown";
+ /**
+ * Sets the name string for the tenant.
+ *
+ * @param humanReadableName name
+ * @return self
+ */
public Builder withHumanReadableName(String humanReadableName) {
this.humanReadableName = humanReadableName;
return this;
}
+ /**
+ * Sets the identifier for the tenant.
+ *
+ * @param id identifier for the tenant
+ * @return self
+ */
public Builder withId(long id) {
this.id = id;
return this;
}
- public Builder withProviderService(long providerService) {
- this.providerService = providerService;
- return this;
- }
-
+ /**
+ * Sets the server specific id (user id) for the tenant.
+ *
+ * @param serviceSpecificId server specific (user) id
+ * @return self
+ */
public Builder withServiceSpecificId(String serviceSpecificId) {
this.serviceSpecificId = serviceSpecificId;
return this;
}
+ /**
+ * Sets the VLAN ID for the tenant.
+ *
+ * @param vlanId VLAN ID
+ * @return self
+ */
public Builder withVlanId(String vlanId) {
this.vlanId = vlanId;
return this;
}
+ /**
+ * Sets the provider service ID.
+ *
+ * @param providerService provider service ID
+ * @return self
+ */
+ public Builder withProviderService(long providerService) {
+ this.providerService = providerService;
+ return this;
+ }
+
+ /**
+ * Constructs a VoltTenant from the assembled data.
+ *
+ * @return constructed tenant object
+ */
public VoltTenant build() {
return new VoltTenant(humanReadableName, id, providerService,
serviceSpecificId, vlanId);
diff --git a/apps/xos-integration/src/main/java/org/onosproject/xosintegration/cli/VoltTenantsCreateCommand.java b/apps/xos-integration/src/main/java/org/onosproject/xosintegration/cli/VoltTenantsCreateCommand.java
index 76605df..611446d 100644
--- a/apps/xos-integration/src/main/java/org/onosproject/xosintegration/cli/VoltTenantsCreateCommand.java
+++ b/apps/xos-integration/src/main/java/org/onosproject/xosintegration/cli/VoltTenantsCreateCommand.java
@@ -27,17 +27,13 @@
@Command(scope = "onos", name = "add-tenant",
description = "Lists the inventory of VOLT tenants and their contents")
public class VoltTenantsCreateCommand extends AbstractShellCommand {
- @Argument(index = 0, name = "provider service",
- description = "Tenant ID",
- required = true, multiValued = false)
- long providerService;
- @Argument(index = 1, name = "service specific ID",
+ @Argument(index = 0, name = "service specific ID",
description = "service specific ID",
required = true, multiValued = false)
String serviceSpecificId;
- @Argument(index = 2, name = "vlan ID",
+ @Argument(index = 1, name = "vlan ID",
description = "vlan ID",
required = true, multiValued = false)
String vlanId;
@@ -47,7 +43,6 @@
VoltTenantService service = get(VoltTenantService.class);
VoltTenant newTenant = VoltTenant.builder()
- .withProviderService(providerService)
.withServiceSpecificId(serviceSpecificId)
.withVlanId(vlanId)
.build();