pass controllerPort to VTN app
Change-Id: Idc85737b9788072ae8a9438151b276a8fad7f00a
diff --git a/xos/admin.py b/xos/admin.py
index 45c1083..ff3400e 100644
--- a/xos/admin.py
+++ b/xos/admin.py
@@ -31,6 +31,7 @@
xosUser = forms.CharField(required=False)
xosPassword = forms.CharField(required=False)
vtnAPIVersion = forms.IntegerField(required=False)
+ controllerPort = forms.CharField(required=False)
def __init__(self,*args,**kwargs):
super (VTNServiceForm,self ).__init__(*args,**kwargs)
@@ -46,6 +47,7 @@
self.fields['xosUser'].initial = self.instance.xosUser
self.fields['xosPassword'].initial = self.instance.xosPassword
self.fields['vtnAPIVersion'].initial = self.instance.vtnAPIVersion
+ self.fields['controllerPort'].initial = self.instance.controllerPort
def save(self, commit=True):
self.instance.privateGatewayMac = self.cleaned_data.get("privateGatewayMac")
@@ -59,6 +61,7 @@
self.instance.xosUser = self.cleaned_data.get("xosUser")
self.instance.xosPassword = self.cleaned_data.get("xosPassword")
self.instance.vtnAPIVersion = self.cleaned_data.get("vtnAPIVersion")
+ self.instance.controllerPort = self.cleaned_data.get("controllerPort")
return super(VTNServiceForm, self).save(commit=commit)
class Meta:
@@ -73,7 +76,7 @@
list_display = ("backend_status_icon", "name", "enabled")
list_display_links = ('backend_status_icon', 'name', )
fieldsets = [(None, {'fields': ['backend_status_text', 'name','enabled','versionNumber','description',"view_url","icon_url",
- 'privateGatewayMac', 'localManagementIp', 'ovsdbPort', 'sshPort', 'sshUser', 'sshKeyFile', 'mgmtSubnetBits', 'xosEndpoint', 'xosUser', 'xosPassword', 'vtnAPIVersion' ], 'classes':['suit-tab suit-tab-general']})]
+ 'privateGatewayMac', 'localManagementIp', 'ovsdbPort', 'sshPort', 'sshUser', 'sshKeyFile', 'mgmtSubnetBits', 'xosEndpoint', 'xosUser', 'xosPassword', 'vtnAPIVersion', 'controllerPort' ], 'classes':['suit-tab suit-tab-general']})]
readonly_fields = ('backend_status_text', )
inlines = [SliceInline,ServiceAttrAsTabInline,ServicePrivilegeInline]
diff --git a/xos/models.py b/xos/models.py
index 9833628..1c6f7bf 100644
--- a/xos/models.py
+++ b/xos/models.py
@@ -40,6 +40,7 @@
("xosUser", "padmin@vicci.org"),
("xosPassword", "letmein"),
("vtnAPIVersion", 1),
+ ("controllerPort", "onos-cord:6653"),
)
diff --git a/xos/synchronizer/steps/sync_onos_netcfg.py b/xos/synchronizer/steps/sync_onos_netcfg.py
index 7e76cc9..509c7a0 100644
--- a/xos/synchronizer/steps/sync_onos_netcfg.py
+++ b/xos/synchronizer/steps/sync_onos_netcfg.py
@@ -59,6 +59,13 @@
xosUser = vtn.xosUser
xosPassword = vtn.xosPassword
+ controllerPort = vtn.controllerPort
+ if ":" in controllerPort:
+ (c_hostname, c_port) = controllerPort.split(":",1)
+ controllerPort = socket.gethostbyname(c_hostname) + ":" + c_port
+ else:
+ controllerPort = ":" + controllerPort
+
data = {
"apps" : {
"org.opencord.vtn" : {
@@ -77,7 +84,8 @@
"password": xosPassword
},
"publicGateways": [],
- "nodes" : []
+ "nodes" : [],
+ "controllers": [controllerPort]
}
}
}
diff --git a/xos/synchronizer/steps/sync_vtn_service.py b/xos/synchronizer/steps/sync_vtn_service.py
index 97f0db6..6ec5610 100644
--- a/xos/synchronizer/steps/sync_vtn_service.py
+++ b/xos/synchronizer/steps/sync_vtn_service.py
@@ -50,6 +50,9 @@
if vtn_service.rest_hostname:
return vtn_service.rest_hostname
+ # code below this point is for ONOS running in a slice, and is
+ # probably outdated
+
if not vtn_service.slices.exists():
raise "VTN Service has no slices"
@@ -62,6 +65,17 @@
return vtn_instance.node.name
+ def get_vtn_port(self):
+ vtn_service = self.get_vtn_onos_service()
+
+ if vtn_service.rest_port:
+ return vtn_service.rest_port
+
+ # code below this point is for ONOS running in a slice, and is
+ # probably outdated
+
+ raise Exception("Must set rest_port")
+
def sync_legacy_vtn_api(self):
global glo_saved_vtn_maps
@@ -78,7 +92,7 @@
for vtn_map in vtn_maps:
if not (vtn_map in glo_saved_vtn_maps):
# call vtn rest api to add map
- url = "http://" + self.get_vtn_addr() + ":8181/onos/cordvtn/service-dependency/%s/%s" % (vtn_map[0], vtn_map[1])
+ url = "http://" + self.get_vtn_addr() + ":" + self.get_vtn_port() + "/onos/cordvtn/service-dependency/%s/%s" % (vtn_map[0], vtn_map[1])
print "POST %s" % url
r = requests.post(url, auth=self.get_vtn_auth() )
@@ -88,7 +102,7 @@
for vtn_map in glo_saved_vtn_maps:
if not vtn_map in vtn_maps:
# call vtn rest api to delete map
- url = "http://" + self.get_vtn_addr() + ":8181/onos/cordvtn/service-dependency/%s/%s" % (vtn_map[0],vtn_map[1])
+ url = "http://" + self.get_vtn_addr() + ":" + self.get_vtn_port() + "/onos/cordvtn/service-dependency/%s/%s" % (vtn_map[0],vtn_map[1])
print "DELETE %s" % url
r = requests.delete(url, auth=self.get_vtn_auth() )
@@ -123,7 +137,7 @@
valid_ids.append(network.id)
if (glo_saved_networks.get(network.id, None) != network.to_dict()):
- (exists, url, method, req_func) = self.get_method("http://" + self.get_vtn_addr() + ":8181/onos/cordvtn/serviceNetworks", network.id)
+ (exists, url, method, req_func) = self.get_method("http://" + self.get_vtn_addr() + ":" + self.get_vtn_port() + "/onos/cordvtn/serviceNetworks", network.id)
if (network.type=="PRIVATE") and (not network.providerNetworks):
logger.info("Skipping network %s because it has no relevant state" % network.id)
@@ -152,7 +166,7 @@
if network_id not in valid_ids:
logger.info("DELETEing VTN API for network %s" % network_id)
- url = "http://" + self.get_vtn_addr() + ":8181/onos/cordvtn/serviceNetworks/%s" % network_id
+ url = "http://" + self.get_vtn_addr() + ":" + self.get_vtn_port() + "/onos/cordvtn/serviceNetworks/%s" % network_id
logger.info("URL: %s" % url)
r = requests.delete(url, auth=self.get_vtn_auth() )
@@ -176,7 +190,7 @@
valid_ids.append(port.id)
if (glo_saved_ports.get(port.id, None) != port.to_dict()):
- (exists, url, method, req_func) = self.get_method("http://" + self.get_vtn_addr() + ":8181/onos/cordvtn/servicePorts", port.id)
+ (exists, url, method, req_func) = self.get_method("http://" + self.get_vtn_addr() + ":" + self.get_vtn_port() + "/onos/cordvtn/servicePorts", port.id)
logger.info("%sing VTN API for port %s" % (method, port.id))
@@ -197,7 +211,7 @@
if port_id not in valid_ids:
logger.info("DELETEing VTN API for port %s" % port_id)
- url = "http://" + self.get_vtn_addr() + ":8181/onos/cordvtn/servicePorts/%s" % port_id
+ url = "http://" + self.get_vtn_addr() + ":" + self.get_vtn_port() + "/onos/cordvtn/servicePorts/%s" % port_id
logger.info("URL: %s" % url)
r = requests.delete(url, auth=self.get_vtn_auth() )
diff --git a/xos/tosca/resources/vtnservice.py b/xos/tosca/resources/vtnservice.py
index 4a525e1..1bbbaaa 100644
--- a/xos/tosca/resources/vtnservice.py
+++ b/xos/tosca/resources/vtnservice.py
@@ -4,4 +4,4 @@
class XOSVTNService(XOSService):
provides = "tosca.nodes.VTNService"
xos_model = VTNService
- copyin_props = ["view_url", "icon_url", "enabled", "published", "public_key", "versionNumber", 'privateGatewayMac', 'localManagementIp', 'ovsdbPort', 'sshPort', 'sshUser', 'sshKeyFile', 'mgmtSubnetBits', 'xosEndpoint', 'xosUser', 'xosPassword', 'vtnAPIVersion']
+ copyin_props = ["view_url", "icon_url", "enabled", "published", "public_key", "versionNumber", 'privateGatewayMac', 'localManagementIp', 'ovsdbPort', 'sshPort', 'sshUser', 'sshKeyFile', 'mgmtSubnetBits', 'xosEndpoint', 'xosUser', 'xosPassword', 'vtnAPIVersion', 'controllerPort']