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 @@
-
+
+