Fix: make all openstack resource name optional
Change-Id: I6f4fd34ab691701ea0d6a15eb77428c9e8f4e700
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/util/OpenstackNetworkingUtil.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/util/OpenstackNetworkingUtil.java
index cb78448..87b8d50 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/util/OpenstackNetworkingUtil.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/util/OpenstackNetworkingUtil.java
@@ -85,6 +85,7 @@
import org.openstack4j.core.transport.Config;
import org.openstack4j.core.transport.ObjectMapperSingleton;
import org.openstack4j.model.ModelEntity;
+import org.openstack4j.model.common.BasicResource;
import org.openstack4j.model.common.Identifier;
import org.openstack4j.model.network.ExternalGateway;
import org.openstack4j.model.network.IP;
@@ -173,6 +174,9 @@
private static final String PREFIX_DEVICE_NUMBER = "s";
private static final String PREFIX_FUNCTION_NUMBER = "f";
+ private static final String PARENTHESES_START = "(";
+ private static final String PARENTHESES_END = ")";
+
// keystone endpoint related variables
private static final String DOMAIN_DEFAULT = "default";
private static final String KEYSTONE_V2 = "v2.0";
@@ -526,7 +530,7 @@
* @param osSg openstack security group
*/
public static void printSecurityGroup(SecurityGroup osSg) {
- print(SECURITY_GROUP_FORMAT, osSg.getId(), osSg.getName());
+ print(SECURITY_GROUP_FORMAT, osSg.getId(), deriveResourceName(osSg));
}
/**
@@ -537,7 +541,7 @@
public static void printNetwork(Network osNet) {
final String strNet = String.format(NETWORK_FORMAT,
osNet.getId(),
- osNet.getName(),
+ deriveResourceName(osNet),
osNet.getProviderSegID(),
osNet.getSubnets());
print(strNet);
@@ -552,7 +556,7 @@
public static void printSubnet(Subnet osSubnet,
OpenstackNetworkService osNetService) {
final Network network = osNetService.network(osSubnet.getNetworkId());
- final String netName = network == null ? NOT_AVAILABLE : network.getName();
+ final String netName = network == null ? NOT_AVAILABLE : deriveResourceName(network);
final String strSubnet = String.format(SUBNET_FORMAT,
osSubnet.getId(),
netName,
@@ -572,7 +576,7 @@
.map(IP::getIpAddress)
.collect(Collectors.toList());
final Network network = osNetService.network(osPort.getNetworkId());
- final String netName = network == null ? NOT_AVAILABLE : network.getName();
+ final String netName = network == null ? NOT_AVAILABLE : deriveResourceName(network);
final String strPort = String.format(PORT_FORMAT,
osPort.getId(),
netName,
@@ -605,7 +609,7 @@
final String strRouter = String.format(ROUTER_FORMAT,
osRouter.getId(),
- osRouter.getName(),
+ deriveResourceName(osRouter),
externals.isEmpty() ? "" : externals,
internals.isEmpty() ? "" : internals);
print(strRouter);
@@ -1160,8 +1164,7 @@
}
if (osRouter.getExternalGatewayInfo() == null) {
// this router does not have external connectivity
- log.trace("router({}) has no external gateway",
- osRouter.getName());
+ log.trace("router({}) has no external gateway", deriveResourceName(osRouter));
return null;
}
@@ -1501,6 +1504,20 @@
return getDhcpOptionValue(port, "tag:ipxe,67");
}
+ /**
+ * Returns a valid resource name.
+ *
+ * @param resource openstack basic resource object
+ * @return a valid resource name
+ */
+ public static String deriveResourceName(BasicResource resource) {
+ if (Strings.isNullOrEmpty(resource.getName())) {
+ return PARENTHESES_START + resource.getId() + PARENTHESES_END;
+ } else {
+ return resource.getName();
+ }
+ }
+
private static String getDhcpOptionValue(NeutronPort port, String optionNameStr) {
ObjectNode node = modelEntityToJson(port, NeutronPort.class);