diff --git a/webroot/config/ports/api/portsconfig.api.js b/webroot/config/ports/api/portsconfig.api.js
index cbe834ae1..7449f7511 100644
--- a/webroot/config/ports/api/portsconfig.api.js
+++ b/webroot/config/ports/api/portsconfig.api.js
@@ -384,7 +384,7 @@ function VMIJSONStructureSubInterface(vmiSubInterfaceDetail, currentVMIDetail){
primaryInterfaceObject['virtual-machine-interface']['virtual_machine_interface_refs'] = [];
}
primaryInterfaceObject['virtual-machine-interface']['virtual_machine_interface_refs'][vmirefIndex] = {};
- primaryInterfaceObject['virtual-machine-interface']['virtual_machine_interface_refs'][vmirefIndex]["uuid"] = currentVMIDetail['virtual-machine-interface']["uuid"];
+ primaryInterfaceObject['virtual-machine-interface']['virtual_machine_interface_refs'][vmirefIndex]["uuid"] = currentVMIDetail['virtual-machine-interface']["uuid"];
primaryInterfaceObject['virtual-machine-interface']['virtual_machine_interface_refs'][vmirefIndex]["to"] = currentVMIDetail['virtual-machine-interface']["fq_name"]
return primaryInterfaceObject;
}
@@ -638,7 +638,7 @@ function portSendResponse (error, req, portConfig, orginalPortData, apiLogicalRo
body = {};
body.portID = portConfig["virtual-machine-interface"]["uuid"];
//body.netID = portConfig["virtual-machine-interface"]["virtual_network_refs"][0]["uuid"];
- body.vmUUID = orginalPortData["virtual-machine-interface"]["virtual_machine_refs"][0]["to"][0];
+ body.vmUUID = orginalPortData["virtual-machine-interface"]["virtual_machine_refs"][0]["uuid"];
attachVMICompute(req, body, function (novaError, results){
updateAvailableDataforCreate(DataObjectArr, portConfig, staticIpPoolRefLen, fixedIpPoolRefLen, appData, function(error, result){
if(novaError != null){
@@ -1059,18 +1059,18 @@ function processDataObjects (error, DataObjectArr, DataObjectDelArr, DataSRObjec
});
});
} else if (boolDeviceOwnerChange == true) {
- deviceOwnerChange(error, [], DataObjectArr, DataObjectLenDetail, portPutData, vmiData, request, appData, function(novaError, data, DataObjectArr){
+ deviceOwnerChange(error, [], DataObjectArr, DataObjectLenDetail, portPutData, vmiData, request, appData, function(error, data, DataObjectArr){
if (novaError != null) {
- deleteAllReference(DataObjectDelArr, DataSRObjectArr, portPutURL, portPutData, boolDeviceOwnerChange, appData, function(error, results){
- if (novaError != null) {
- if (error != null) {
- error.messages += "
" + novaError.messages;
- } else {
- error = novaError;
- }
- }
- callback(error, data);
- return;
+ deleteAllReference(DataObjectDelArr, DataSRObjectArr, portPutURL, portPutData, boolDeviceOwnerChange, appData, function(error, results){
+ if (novaError != null) {
+ if (error != null) {
+ error.messages += "
" + novaError.messages;
+ } else {
+ error = novaError;
+ }
+ }
+ callback(error, data);
+ return;
});
} else {
if (DataObjectArr != null && DataObjectArr.length > 0) {
@@ -1386,7 +1386,7 @@ function deviceOwnerChange(error, result, DataObjectArr, DataObjectLenDetail, po
var body = {};
body.portID = vmiData["virtual-machine-interface"]["uuid"];
//body.netID = vmiData["virtual-machine-interface"]["virtual_network_refs"][0]["uuid"];
- body.vmUUID = vmiData["virtual-machine-interface"]["virtual_machine_refs"][0]["to"][0];
+ body.vmUUID = vmiData["virtual-machine-interface"]["virtual_machine_refs"][0]["uuid"];
detachVMICompute(request, body, function(error, results){
if (error) {
callback(error, result, DataObjectArr)
@@ -1397,7 +1397,7 @@ function deviceOwnerChange(error, result, DataObjectArr, DataObjectLenDetail, po
body = {};
body.portID = portPutData["virtual-machine-interface"]["uuid"];
//body.netID = portPutData["virtual-machine-interface"]["virtual_network_refs"][0]["uuid"];
- body.vmUUID = portPutData["virtual-machine-interface"]["virtual_machine_refs"][0]["to"][0];
+ body.vmUUID = portPutData["virtual-machine-interface"]["virtual_machine_refs"][0]["uuid"];
attachVMICompute(request, body, function(error, results){
if ('virtual_machine_refs' in portPutData['virtual-machine-interface']){
delete portPutData['virtual-machine-interface']['virtual_machine_refs'];
@@ -1424,11 +1424,11 @@ function deviceOwnerChange(error, result, DataObjectArr, DataObjectLenDetail, po
callback(error, result, DataObjectArr);
return;
}
- } else {
- //No attach/edit
- callback(error, result, DataObjectArr);
- return;
}
+ } else {
+ //No attach/edit
+ callback(error, result, DataObjectArr);
+ return;
}
});
} else {
@@ -1491,7 +1491,7 @@ function deviceOwnerChange(error, result, DataObjectArr, DataObjectLenDetail, po
body = {};
body.portID = portPutData["virtual-machine-interface"]["uuid"];
//body.netID = portPutData["virtual-machine-interface"]["virtual_network_refs"][0]["uuid"];
- body.vmUUID = portPutData["virtual-machine-interface"]["virtual_machine_refs"][0]["to"][0];
+ body.vmUUID = portPutData["virtual-machine-interface"]["virtual_machine_refs"][0]["uuid"];
attachVMICompute(request, body, function(error, results){
if ('virtual_machine_refs' in portPutData['virtual-machine-interface']){
delete portPutData['virtual-machine-interface']['virtual_machine_refs'];
@@ -1554,7 +1554,7 @@ function deviceOwnerChange(error, result, DataObjectArr, DataObjectLenDetail, po
body = {};
body.portID = portPutData["virtual-machine-interface"]["uuid"];
//body.netID = portPutData["virtual-machine-interface"]["virtual_network_refs"][0]["uuid"];
- body.vmUUID = portPutData["virtual-machine-interface"]["virtual_machine_refs"][0]["to"][0];
+ body.vmUUID = portPutData["virtual-machine-interface"]["virtual_machine_refs"][0]["uuid"];
attachVMICompute(request, body, function(error, results){
if ('virtual_machine_refs' in portPutData['virtual-machine-interface']){
delete portPutData['virtual-machine-interface']['virtual_machine_refs'];
@@ -1751,7 +1751,7 @@ function filterVMISubInterface(error, portPutData, vmiData, callback)
}
-function filterUpdateFloatingIP(error, portPutData, vmiData, callback)
+function filterUpdateFloatingIP(error, portPutData, vmiData, callback)
{
var i = 0;
var postCopyData = [];
@@ -1997,7 +1997,7 @@ function deletePortAsync (dataObj, callback)
var body = {};
body.portID = vmiData["virtual-machine-interface"]["uuid"];
//body.netID = vmiData["virtual-machine-interface"]["virtual_network_refs"][0]["uuid"];
- body.vmUUID = vmiData["virtual-machine-interface"]["virtual_machine_refs"][0]["to"][0];
+ body.vmUUID = vmiData["virtual-machine-interface"]["virtual_machine_refs"][0]["uuid"];
detachVMICompute(request, body, function(error, results){
if (error) {
callback(error, results)
@@ -2881,4 +2881,3 @@ exports.deletePortsCB = deletePortsCB;
exports.getVMIAndInstIPDetails = getVMIAndInstIPDetails;
exports.getVMIDetails = getVMIDetails;
exports.deleteAllPorts = deleteAllPorts;
-
diff --git a/webroot/config/ports/ui/js/ports_config.js b/webroot/config/ports/ui/js/ports_config.js
index ae8816e48..4a77ff6d2 100644
--- a/webroot/config/ports/ui/js/ports_config.js
+++ b/webroot/config/ports/ui/js/ports_config.js
@@ -10,6 +10,7 @@ function portsConfigObj() {
//Dropdowns
var ddDomain, ddProject;
var ddVN,ddVNState,ddDeviceOwnerName,ddDeviceOwnerUUID,
+ ddDeviceOwnerUUIDRouter,
ddSubInterfaceParent;//,ddAAP,ddTenentID;
//Comboboxes
@@ -315,7 +316,11 @@ function initComponents() {
change:updateDevice
});
- ddDeviceOwnerUUID = $("#ddDeviceOwnerUUID").contrailDropdown({
+ ddDeviceOwnerUUID = $("#ddDeviceOwnerUUID").contrailCombobox({
+ dataTextField:"text",
+ dataValueField:"value"
+ });
+ ddDeviceOwnerUUIDRouter = $("#ddDeviceOwnerUUIDRouter").contrailDropdown({
dataTextField:"text",
dataValueField:"value"
});
@@ -522,19 +527,24 @@ function initActions() {
if(deviceName == "None"){
portConfig["virtual-machine-interface"]["virtual_machine_interface_device_owner"] = "";
} else if(deviceName == "router"){
- var deviceDetail = JSON.parse($("#ddDeviceOwnerUUID").data("contrailDropdown").value());
+ var deviceDetail = JSON.parse($("#ddDeviceOwnerUUIDRouter").data("contrailDropdown").value());
portConfig["virtual-machine-interface"]["virtual_machine_interface_device_owner"] = "network:router_interface";
portConfig["virtual-machine-interface"]["logical_router_back_refs"] = [];
portConfig["virtual-machine-interface"]["logical_router_back_refs"][0] = {};
portConfig["virtual-machine-interface"]["logical_router_back_refs"][0]["to"] = deviceDetail[0]["to"];
portConfig["virtual-machine-interface"]["logical_router_back_refs"][0]["uuid"] = deviceDetail[0]["uuid"];
} else if(deviceName == "compute"){
- var deviceDetail = JSON.parse($("#ddDeviceOwnerUUID").data("contrailDropdown").value());
portConfig["virtual-machine-interface"]["virtual_machine_interface_device_owner"] = "compute:nova";
portConfig["virtual-machine-interface"]["virtual_machine_refs"] = [];
portConfig["virtual-machine-interface"]["virtual_machine_refs"][0] = {};
- portConfig["virtual-machine-interface"]["virtual_machine_refs"][0]["to"] = deviceDetail[0]["to"];
- portConfig["virtual-machine-interface"]["virtual_machine_refs"][0]["uuid"] = deviceDetail[0]["uuid"];
+ var deviceuuidval = $("#ddDeviceOwnerUUID").data("contrailCombobox").value();
+ if(IsJsonString(deviceuuidval)){
+ var deviceDetail = JSON.parse(deviceuuidval);
+ portConfig["virtual-machine-interface"]["virtual_machine_refs"][0]["uuid"] = deviceDetail[0]["uuid"];
+ portConfig["virtual-machine-interface"]["virtual_machine_refs"][0]["to"] = deviceDetail[0]["to"];
+ } else {
+ portConfig["virtual-machine-interface"]["virtual_machine_refs"][0]["uuid"] = deviceuuidval;
+ }
}
@@ -1531,21 +1541,26 @@ function updateDevice(e){
//update
//ddDeviceOwnerUUID
var selectedDeviceValue = $("#ddDeviceOwnerName").data("contrailDropdown").value();
- $("#ddDeviceOwnerUUID").data("contrailDropdown").setData([]);
+ $("#ddDeviceOwnerUUID").data("contrailCombobox").setData([]);
+ $("#ddDeviceOwnerUUIDRouter").data("contrailDropdown").setData([]);
+ $("#divDeviceOwnerUUID").addClass("hide");
+ $("#divDeviceOwnerUUIDRouter").addClass("hide");
if(selectedDeviceValue != "None"){
if(selectedDeviceValue == "router"){
- $("#ddDeviceOwnerUUID").data("contrailDropdown").setData(routerUUID);
+ $("#divDeviceOwnerUUIDRouter").removeClass("hide");
+ $("#ddDeviceOwnerUUIDRouter").data("contrailDropdown").setData(routerUUID);
if(routerUUID.length > 0){
- $("#ddDeviceOwnerUUID").data("contrailDropdown").value(routerUUID[0].value);
+ $("#ddDeviceOwnerUUIDRouter").data("contrailDropdown").value(routerUUID[0].value);
} else {
- $("#ddDeviceOwnerUUID").data("contrailDropdown").value([]);
+ $("#ddDeviceOwnerUUIDRouter").data("contrailDropdown").value([]);
}
} else if(selectedDeviceValue == "compute"){
- $("#ddDeviceOwnerUUID").data("contrailDropdown").setData(computeUUID);
+ $("#divDeviceOwnerUUID").removeClass("hide");
+ $("#ddDeviceOwnerUUID").data("contrailCombobox").setData(computeUUID);
if(computeUUID.length > 0){
- $("#ddDeviceOwnerUUID").data("contrailDropdown").value(computeUUID[0].value);
+ $("#ddDeviceOwnerUUID").data("contrailCombobox").value(computeUUID[0].value);
} else {
- $("#ddDeviceOwnerUUID").data("contrailDropdown").value([]);
+ $("#ddDeviceOwnerUUID").data("contrailCombobox").value([]);
}
}
}
@@ -1607,6 +1622,7 @@ function clearValuesFromDomElements() {
$(".subInterface").addClass("hide");
$("#ddDeviceOwnerName").removeAttr("disabled","disabled");
$("#ddDeviceOwnerUUID").removeAttr("disabled","disabled");
+ $("#ddDeviceOwnerUUIDRouter").removeAttr("disabled","disabled");
updateDevice();
}
@@ -1878,7 +1894,7 @@ function showPortEditWindow(mode, rowIndex) {
var vmArrayLen = vmArray.length;
for(var j=0;j < vmArrayLen;j++){
var vm = vmArray[j]["virtual-machine"];
- var text = vm["fq_name"][0];
+ var text = vm["uuid"];
var valArr = [];
valArr.push({"to":vm["fq_name"], "uuid":vm["uuid"]});
computeUUID.push({"text":text,"value":JSON.stringify(valArr)});
@@ -1951,14 +1967,13 @@ function showPortEditWindow(mode, rowIndex) {
$(".subInterface").addClass("hide");
$("#is_subInterface").attr("disabled","disabled");
$("#ddDeviceOwnerName").data("contrailDropdown").value("None");
- $("#ddDeviceOwnerUUID").data("contrailDropdown").setData([]);
+ $("#ddDeviceOwnerUUIDRouter").data("contrailDropdown").setData([]);
$("#ddDeviceOwnerName").attr("disabled","disabled");
- $("#ddDeviceOwnerUUID").attr("disabled","disabled");
}
if(!isVCenter()) {
$("#ddDeviceOwnerName").data("contrailDropdown").value(mapedData.deviceOwnerValue);
updateDevice();
- $("#ddDeviceOwnerUUID").data("contrailDropdown").value(mapedData.deviceOwnerUUIDValue);
+ $("#ddDeviceOwnerUUID").data("contrailCombobox").value(mapedData.deviceOwnerUUIDValue);
}
if(mapedData.sgMSValues.length > 0){
$("#is_SG")[0].checked = true;
@@ -2092,8 +2107,13 @@ function validate() {
return false;
}
- var deviceUUID = $("#ddDeviceOwnerUUID").data("contrailDropdown").value();
- if(deviceName != "None" && ("" == deviceUUID || null == deviceUUID || typeof deviceUUID == "undefined")){
+ var deviceUUID = $("#ddDeviceOwnerUUID").data("contrailCombobox").text();
+ if(deviceName == "compute" && ("" == deviceUUID || null == deviceUUID || typeof deviceUUID == "undefined")){
+ showInfoWindow("Device Owner UUID cannot be empty.", "Invalid Input");
+ return false
+ }
+ var deviceUUIDRouter = $("#ddDeviceOwnerUUIDRouter").data("contrailDropdown").value();
+ if(deviceName == "router" && ("" == deviceUUIDRouter || null == deviceUUIDRouter || typeof deviceUUIDRouter == "undefined")){
showInfoWindow("Device Owner UUID cannot be empty.", "Invalid Input");
return false
}
@@ -2736,6 +2756,15 @@ Handlebars.registerHelper("formatAAP",function(AllowedAddressPairValue,options)
return returnHtml;
});
+function IsJsonString(str) {
+ try {
+ JSON.parse(str);
+ } catch (e) {
+ return false;
+ }
+ return true;
+}
+
function destroy() {
ddDomain = $("#ddDomainSwitcher").data("contrailDropdown");
if(isSet(ddDomain)) {
@@ -2777,11 +2806,17 @@ function destroy() {
ddDeviceOwnerName.destroy();
ddDeviceOwnerName = $();
}
- ddDeviceOwnerUUID = $("#ddDeviceOwnerUUID").data("contrailDropdown");
+ ddDeviceOwnerUUID = $("#ddDeviceOwnerUUID").data("contrailCombobox");
if(isSet(ddDeviceOwnerUUID)) {
ddDeviceOwnerUUID.destroy();
ddDeviceOwnerUUID = $();
}
+ ddDeviceOwnerUUIDRouter = $("#contrailDropdown").data("contrailCombobox");
+ if(isSet(ddDeviceOwnerUUIDRouter)) {
+ ddDeviceOwnerUUIDRouter.destroy();
+ ddDeviceOwnerUUIDRouter = $();
+ }
+
}
/*ddTenentID = $("#ddTenentID").data("contrailDropdown");
diff --git a/webroot/config/ports/ui/views/ports_config.view b/webroot/config/ports/ui/views/ports_config.view
index 5081e7cdb..8f17efea5 100644
--- a/webroot/config/ports/ui/views/ports_config.view
+++ b/webroot/config/ports/ui/views/ports_config.view
@@ -338,7 +338,8 @@