importPackage(java.util);
importPackage(java.lang);
importPackage(org.apache.log4j);
importPackage(com.cloupia.feature.ucsController);
importPackage(com.cloupia.lib.cIaaS.ucs);
importPackage(com.cloupia.lib.cIaaS.ucs.model);
importPackage(com.cloupia.lib.cIaaS.ucs.model.generated);
importPackage(com.cloupia.lib.cIaaS.ucs.util);
importPackage(com.cloupia.lib.util);
importPackage(com.cloupia.model.cIM);
importPackage(com.cloupia.service.cIM.inframgr);
importPackage(com.cloupia.service.cIM.inframgr.cmdb);
importPackage(com.cloupia.service.cIM.inframgr.customactions);
importPackage(com.cloupia.service.cIM.inframgr.profiles);
importPackage(com.cloupia.feature.ucsController.wftasks);
function executeCustomAction() {
var configEntryId = ctxt.getConfigEntry().getConfigEntryId();
var srID = ctxt.getSrId();
var uniqueId = configEntryId + ";" + srID;
logger.addInfo("unique id for log table = " + uniqueId);
var config = ctxt.loadConfigObject();
var api = null;
var unBindVnicSPMap = new HashMap();
var templMap = new HashMap();
var spVnicMap = new HashMap();
var unbindSpMap = new HashMap();
var spTemplMap = new HashMap();
var fabricVlanList = new ArrayList();
var ucsVLANList = new ArrayList();
var accountName = input.accountName;
var orgList = "";
var resources = "";
var account = null;
var vlanDnsForUndoTask = "";
var logList = new ArrayList();
var serviceProfileList = getServiceProfileList(input.spList);
var spTemplateList = getServiceProfileList(input.spTemplList);
var vnicTemplateList = getServiceProfileList(input.vnicTemplList);
logger.addInfo("Service Profile List "+serviceProfileList );
logger.addInfo("Service Profile Template List "+spTemplateList );
logger.addInfo("VNic template List "+vnicTemplateList );
try {
// accountName = config.getAccountName();
account = InfrastructureDataUtil.getAccountByType(accountName, InfraAccountTypes.UCSM);
if (account == null) {
throw "UCS Account : " + accountName + " does not Exist!";
}
api = UcsDataPersistenceUtil.getNewUcsAPISession(account);
if (api == null) {
throw "API Session is not astablished.";
}
var comment = new StringBuffer();
if (!UcsValidations.checkName32Char("VLAN name", input.name, comment)){
throw comment.toString();
}
// construct vlan with config
try {
fabricVlanList = constructVlan(config, ucsVLANList);
} catch (e) {
logger.addError("Error construct vlan ");
throw "Error construct vlan ";
}
if ((fabricVlanList != null) && (fabricVlanList.size() > 0)) {
var sb = new StringBuffer();
for (var i = 0; i < fabricVlanList.size(); i++) {
var vlan = fabricVlanList.get(i);
sb.append("");
sb.append(XMLMarshaller.marshall(vlan));
sb.append("");
}
if (sb.length() > 0)
{
api.queryConfigMoRequest(accountName, sb.toString());
}
UcsAPIActions.collectVLANInventory(account, api);
for (var i = 0; i < fabricVlanList.size(); i++) {
var vlan = fabricVlanList.get(i);
var dbVLAN = UcsDataPersistenceUtil.getVLAN(accountName, vlan.getDn());
if (dbVLAN == null) {
throw "Unable to create VLAN : " + vlan.getName();
} else {
vlanDnsForUndoTask = vlanDnsForUndoTask + vlan.getDn() + ";";
logger.addInfo("VLAN created");
// updating vlan pool table
//updateVlanPoolTable(vlan, account);
}
}
vlanDnsForUndoTask = vlanDnsForUndoTask.substring(0, vlanDnsForUndoTask.lastIndexOf(";"));
logger.addInfo("vlans for undo task : " + vlanDnsForUndoTask);
var vlanIdentity = new UcsVLANIdentity(accountName, fabricVlanList.get(0).getDn());
ctxt.getChangeTracker().undoableResourceAdded(UcsAssetTypeConstants.UCS_VLAN,
vlanIdentity.getIdentityKey(), input.name, "VLAN Created ",
UcsVLANDeleteConfig.HANDLER_NAME,
new UcsVLANDeleteConfig(input.accountName, uniqueId, vlanDnsForUndoTask));
ctxt.saveOutputValue("OUTPUT_VLAN_IDENTITY1", accountName + ";" + fabricVlanList.get(0).getDn());
var dbVLAN = UcsDataPersistenceUtil.getVLAN(accountName,fabricVlanList.get(0).getDn());
if(dbVLAN != null)
ctxt.saveOutputValue("OUTPUT_VLAN_ID1", dbVLAN.getId());
else
ctxt.saveOutputValue("OUTPUT_VLAN_ID1", "");
addChangeRecord(ctxt.getUserId(), fabricVlanList.get(0), ChangeRecord.CHANGE_TYPE_ADD, accountName);
if (fabricVlanList.size() == 2) {
vlanIdentity = new UcsVLANIdentity(accountName, fabricVlanList.get(1).getDn());
ctxt.getChangeTracker().resourceAdded(UcsAssetTypeConstants.UCS_VLAN,
vlanIdentity.getIdentityKey(), input.name, "VLAN Created ");
addChangeRecord(ctxt.getUserId(), fabricVlanList.get(1), ChangeRecord.CHANGE_TYPE_ADD,
accountName);
ctxt.saveOutputValue("OUTPUT_VLAN_IDENTITY2", accountName + ";" + fabricVlanList.get(1).getDn());
dbVLAN = UcsDataPersistenceUtil.getVLAN(accountName,fabricVlanList.get(1).getDn());
if(dbVLAN != null)
ctxt.saveOutputValue("OUTPUT_VLAN_ID2", dbVLAN.getId());
} else if(fabricVlanList.size() == 1) {
ctxt.saveOutputValue("OUTPUT_VLAN_IDENTITY2", "");
ctxt.saveOutputValue("OUTPUT_VLAN_ID2", "");
}
}
/*if (!config.isVirtualInfra()) {
var log = new UCSAddVLANToSPLog();
log.setType(UCSAddVLANToSPLog.VIRTUAL_INFRA_FALSE);
log.setTarget("");
log.setAccountName(accountName);
log.setUniqueId(uniqueId);
if (ucsVLANList.size() == 1) {
log.setDn(ucsVLANList.get(0).getDn());
} else if (ucsVLANList.size() == 2) {
log.setDn(ucsVLANList.get(0).getDn() + ";" + ucsVLANList.get(1).getDn());
}
logList.add(log);
UcsDataPersistenceUtil.persistAddVLANtoSPLog(logList);
return;
}*/
}
catch (ex) {
logger.addError("VLAN creation failed."+ex.message);
throw " VLAN creation failed. ";
} finally {
UcsDataPersistenceUtil.closeUcsAPISession(api);
}
try {
logger.addInfo("ucsVlan size "+ucsVLANList.size());
for (var j = 0; j < ucsVLANList.size(); j++) {
var ucsVlan = ucsVLANList.get(j);
unBindVnicSPMap = new HashMap();
templMap = new HashMap();
spVnicMap = new HashMap();
unbindSpMap = new HashMap();
spTemplMap = new HashMap();
logList = new ArrayList();
var entryList = new ArrayList();
var chList = new ArrayList();
orgList = getOrgList(input.orgList);
resources = null;
if ((orgList == null) || (orgList.length() == 0)) {
throw "Failed to get resources to add VLAN.";
}
api = UcsDataPersistenceUtil.getNewUcsAPISession(account);
if (api == null) {
throw "API Session is not astablished.";
}
logger.addInfo("List of organizations to add VLAN : " + orgList);
if (UcsDataPersistenceUtil.isFeatureSupported(accountName, UcsConstants.FEATURE_CONST_VLAN_GROUPING)) {
logger.addInfo("Updating Org Permissions....");
modifyVLANOrgList(orgList, input.name, accountName,ctxt);
logger.addInfo("Org Permissions updated successfully.");
}
var resArr = null;
if (resources != null) {
resArr = resources.split(",");
}
var resMap = new HashMap();
// if ((resArr == null) || (resArr.length == 0))
if((vnicTemplateList != null && !(new java.lang.String(input.getVnicTemplList)).isEmpty())
||(serviceProfileList != null && !(new java.lang.String(serviceProfileList)).isEmpty())
|| (spTemplateList != null && !(new java.lang.String(spTemplateList)).isEmpty()))
{
var vnicTemplListForAcc = new ArrayList();
var spListForAcc = new ArrayList();
var vNICOrgList = new ArrayList();
var spOrgList = new ArrayList();
vnicTemplListForAcc = UcsDataPersistenceUtil.getVNICTemplatesForAcc(accountName);
spListForAcc = UcsDataPersistenceUtil.getServiceProfileForAcc(accountName);
if(vnicTemplListForAcc != null)
{
for (var k = 0; k < vnicTemplListForAcc.size(); k++) {
var t = vnicTemplListForAcc.get(k);
if (vnicTemplateList != null)
{
var arr = vnicTemplateList.split(",");
if (arr != null && arr.length > 0)
{
for (var m = 0; m < arr.length; m++) {
var s = arr[m];
if (s.equals(t.getDn()))
{
vNICOrgList.add(t);
}
}
}
}
}
}
if(spListForAcc != null)
{
for (var k = 0; k < spListForAcc.size(); k++) {
var t = spListForAcc.get(k);
if (serviceProfileList != null)
{
var arr = serviceProfileList.split(",");
if (arr != null && arr.length > 0)
{
for (var m = 0; m < arr.length; m++) {
var s = arr[m];
if (s.equals(t.getDn()))
{
spOrgList.add(t);
}
}
}
}
}
for (var k = 0; k < spListForAcc.size(); k++) {
var t = spListForAcc.get(k);
if (spTemplateList != null)
{
var arr = spTemplateList.split(",");
if (arr != null && arr.length > 0)
{
for (var m = 0; m < arr.length; m++) {
var s = arr[m];
if (s.equals(t.getDn()))
{
spOrgList.add(t);
}
}
}
}
}
}
collectObjectsToAddVLAN(accountName, orgList, ucsVlan.getSwitchId(), spVnicMap, unBindVnicSPMap,
templMap, unbindSpMap, vNICOrgList, spOrgList);
}
else
{
if (resArr != null && resArr.length > 0)
{
if (resArr.length == 3)
{
var vnicTemplListForAcc = new ArrayList();
var spListForAcc = new ArrayList();
vnicTemplListForAcc = UcsDataPersistenceUtil.getVNICTemplatesForAcc(accountName);
spListForAcc = UcsDataPersistenceUtil.getServiceProfileForAcc(accountName);
collectObjectsToAddVLAN(accountName, orgList, ucsVlan.getSwitchId(), spVnicMap,
unBindVnicSPMap, templMap, unbindSpMap, vnicTemplListForAcc, spListForAcc);
} else
{
// "Service Profile", "Service Profile Templates", "vNIC Templates"
for (var i = 0; i < resArr.length; i++)
resMap.put(resArr[i], resArr[i]);
if (resMap.containsKey("vNIC Templates"))
{
collectVNICTemplatesToAddVLAN(accountName, orgList, ucsVlan.getSwitchId(), templMap);
}
if (resMap.containsKey("Service Profile Templates"))
{
collectSPTemplsToAddVLAN(accountName, orgList, ucsVlan.getSwitchId(), spVnicMap,
unBindVnicSPMap, templMap, spTemplMap);
}
if (resMap.containsKey("Service Profiles"))
{
collectSPsToAddVLAN(accountName, orgList, ucsVlan.getSwitchId(), spVnicMap,
unBindVnicSPMap, unbindSpMap, templMap, spTemplMap);
}
}
}
}
logger.addInfo("spVnicMap map size : " + spVnicMap.size());
logger.addInfo("unBindVnicSPMap map size : " + unBindVnicSPMap.size());
logger.addInfo("templMap map size : " + templMap.size());
if ((spVnicMap.size() == 0) && (unBindVnicSPMap.size() == 0) && (templMap.size() == 0))
{
logger.addInfo("No service profiles, service profile templates and VNIC templates are found to modify vlan for Fabric " + ucsVlan.getSwitchId() + ".");
continue;
}
var unbindSPList = new ArrayList();
unbindSPList = createRequestToUnbindSPFromTemplate(unbindSpMap, uniqueId, logList, ctxt, entryList,
chList);
var unbindVnicSPList = new ArrayList();
unbindVnicSPList = createRequestToUnbindVNICTemplFromSP(unBindVnicSPMap, uniqueId, logList, ctxt,
entryList, chList);
var spVnicList = new ArrayList();
spVnicList = createRequestToAddVLANToSP(spVnicMap, ucsVlan, templMap, uniqueId, logList, ctxt,
entryList, chList);
var vnicTemplList = new ArrayList();
vnicTemplList = createRequestToAddVLANToVNICTempl(templMap, ucsVlan, uniqueId, logList, ctxt,
entryList, chList);
var sb = new StringBuffer();
if (unbindSpMap.size() > 0)
{
for (var m = 0; m < unbindSPList.size(); m++) {
var ls = unbindSPList.get(m);
sb.append("");
sb.append(XMLMarshaller.marshall(ls));
sb.append("");
}
}
for (var m = 0; m < unbindVnicSPList.size(); m++) {
var spVnic = unbindVnicSPList.get(m);
sb.append("");
sb.append(XMLMarshaller.marshall(spVnic));
sb.append("");
}
api.queryConfigMoRequest(accountName, sb.toString());
sb = new StringBuffer();
for (var m = 0; m < spVnicList.size(); m++) {
var spVnic = spVnicList.get(m);
sb.append("");
sb.append(XMLMarshaller.marshall(spVnic));
sb.append("");
}
for (var m = 0; m < vnicTemplList.size(); m++) {
var vnicTempl = vnicTemplList.get(m);
sb.append("");
sb.append(XMLMarshaller.marshall(vnicTempl));
sb.append("");
}
api.queryConfigMoRequest(accountName, sb.toString());
logger.addInfo("VLAN added to : " + orgList);
sb = new StringBuffer();
for (var m = 0; m < spVnicList.size(); m++) {
var vnic = spVnicList.get(m);
sb.append(vnic.getDn() + ";");
}
for (var m = 0; m < vnicTemplList.size(); m++) {
var vnic = vnicTemplList.get(m);
sb.append(vnic.getDn() + ";");
}
var modifiedDns = sb.toString();
modifiedDns = modifiedDns.substring(0, modifiedDns.lastIndexOf(';'));
logger.addInfo("Affected objects with new VLANs configured for fabric " + ucsVlan.getSwitchId()
+ " " + modifiedDns);
UcsDataPersistenceUtil.collectVNICTemplateInventory(account, api);
UcsDataPersistenceUtil.collectServiceProfileInventory(accountName);
// UcsAPIActions.collectAssocVLANInventory(account, api);
UcsDataPersistenceUtil.persistAddVLANtoSPLog(logList);
// resource tracking
ctxt.getChangeTracker().addEntry(entryList);
UcsCMDBUtil.persistChangeRecord(chList);
}
} catch (ex2) {
logger.addError("VLAN creation failed."+ex2.message);
throw VLANCreationConfig.HANDLER_NAME + " failed. ";
} finally {
UcsDataPersistenceUtil.closeUcsAPISession(api);
}
}
function constructVlan(config, ucsVLANList) {
var fabricVlanList = new ArrayList();
var vlanName = input.name;
var vlanId = -1;
if (input.vlanType.equals("dual")) {
if (input.dualVLAN == null) {
throw "Dual VLAN is unavailable.";
}
var vlan = new UcsVLAN();
vlan.setName(vlanName);
vlan.setSwitchId("dual");
vlan.setId(input.dualVLAN);
setVLANSharing(vlan, input.sharing_all, input.pubNwName_all);
vlanId = Integer.parseInt(input.dualVLAN);
if ((vlanId != 0) && ((vlanId < 1) || (vlanId > 4093) || ((vlanId > 3967) && (vlanId < 4048))))
{
throw "VLAN ID should be a numeric value between [1-3967] and [4048-4093]";
}
vlan.setDn("fabric/lan/net-" + vlanName);
ucsVLANList.add(vlan);
}
for (var i = 0; i < ucsVLANList.size(); i++) {
var ucsVlan = ucsVLANList.get(i);
var fabVlan = new FabricVlan();
fabVlan.setName(ucsVlan.getName());
fabVlan.setId(ucsVlan.getId());
// fabVlan.setSwitchId(ucsVlan.getSwitchId());
fabVlan.setDn(ucsVlan.getDn());
fabVlan.setDefaultNet("no");
fabVlan.setSharing(ucsVlan.getSharing());
fabVlan.setPubNwName(ucsVlan.getPubNwName());
fabVlan.setStatus(UcsAPIConstants.MANAGED_OBJECT_STATUS_CREATED);
fabricVlanList.add(fabVlan);
}
return fabricVlanList;
}
function createRequestToUnbindVNICTemplFromSP(unBindVnicSPMap,uniqueId,logList, context, entryList,chList) {
var vnicList = new ArrayList();
var i = unBindVnicSPMap.keySet().iterator();
while (i.hasNext()) {
var vnicDn = i.next();
var spVnic = unBindVnicSPMap.get(vnicDn);
var vnic = new VnicEther();
vnic.setDn(spVnic.getDn());
vnic.setNwTemplName(""); // unbound vnic templ from sp vnic
vnicList.add(vnic);
var log = new UCSAddVLANToSPLog();
log.setType(UCSAddVLANToSPLog.BIND_SP_VNIC);
log.setTarget(spVnic.getNwTemplName());
log.setDn(spVnic.getDn());
log.setAccountName(spVnic.getAccountName());
// log.setConfigEntryId(configEntryID);
log.setUniqueId(uniqueId);
logList.add(log);
try {
logger.addInfo("in createRequestToUnbindVNICTemplFromSP : " + logList);
var sp = UcsDataPersistenceUtil.getServiceProfileForAccountAndDn(spVnic.getSpDn(),spVnic.getAccountName());
if (sp != null) {
if (!ctxt.isRESTContext()) {
entryList.add(resourceChange(UcsAssetTypeConstants.UCS_SERVICE_PROFILE, sp.getIdentityKey(), sp
.getDn(), "Service Profile's vNIC '" + spVnic.getName()
+ "' is unbound from vNIC Template : " + spVnic.getNwTemplName(), ctxt));
}
chList.add(createCMDBRecord1("Service Profile's vNIC '" + spVnic.getName()
+ "' is unbound from vNIC Template : " + spVnic.getNwTemplName(), ctxt.getUserId(), sp));
}
} catch (e) {
logger.addError(e.message);
}
}
return vnicList;
}
function createRequestToAddVLANToSP(spVnicMap, ucsVlan, templMap, uniqueId, logList, context, entryList, chList) {
var vnicList = new ArrayList();
var i = spVnicMap.keySet().iterator();
while (i.hasNext())
{
var spVnicDn = i.next();
var spVnic = spVnicMap.get(spVnicDn);
if ((spVnic.getSwitchId() != null)
&& (spVnic.getSwitchId().startsWith(ucsVlan.getSwitchId()) || ucsVlan.getSwitchId().equals("dual")))
{
var vnic = new VnicEther();
vnic.setDn(spVnicDn);
var vlan = new VnicEtherIf();
vlan.setName(ucsVlan.getName());
vlan.setRn("if-" + ucsVlan.getName());
vlan.setStatus("created");
var vlanArr = new Array();
vlanArr[0] = vlan;
vnic.setVnicEtherIf(vlanArr);
vnicList.add(vnic);
var log = new UCSAddVLANToSPLog();
log.setType(UCSAddVLANToSPLog.DELETE_VLAN);
log.setDn(spVnicDn);
log.setAccountName(spVnic.getAccountName());
log.setUniqueId(uniqueId);
log.setVlanName(ucsVlan.getName());
log.setTarget("");
logList.add(log);
// resource tracking
var sp = UcsDataPersistenceUtil.getServiceProfileForAccountAndDn(spVnic.getSpDn(), spVnic.getAccountName());
if (sp != null)
{
if (sp.getType().equals(GlobalConstants.FIELD_CONSTANTS.SERVICE_PROFILE_TYPE_INTANCE))
{
if (!ctxt.isRESTContext())
{
entryList.add(resourceChange(UcsAssetTypeConstants.UCS_SERVICE_PROFILE, sp.getIdentityKey(),
sp.getDn(), "VLAN( " + ucsVlan.getName() + ") is added to Service Profile's vNIC '"
+ spVnic.getName() + "'", ctxt));
}
chList.add(createCMDBRecord1("VLAN( " + ucsVlan.getName()
+ ") is added to Service Profile's vNIC '" + spVnic.getName() + "'",
ctxt.getUserId(), sp ));
} else
{
if (!ctxt.isRESTContext())
{
entryList.add(resourceChange(UcsAssetTypeConstants.UCS_SERVICE_PROFILE_TEMPLATE, sp.getIdentityKey(), sp.getDn(), "VLAN( " + ucsVlan.getName()
+ ") is added to Service Profile Templates's vNIC '" + spVnic.getName() + "'",
ctxt));
}
chList.add(createCMDBRecord1("VLAN( " + ucsVlan.getName()
+ ") is added to Service Profile Templates's vNIC '" + spVnic.getName() + "'",
ctxt.getUserId(), sp));
try
{
if (sp.getType().equals(UcsConstants.SERVICE_PROFILE_TYPE_UPDATING_TEMPLATE))
{
var assocSPList = UcsDataPersistenceUtil.getServiceProfilesAssociatedToTemplate(sp.getAccountName(), sp.getDn());
if ((assocSPList != null) && (assocSPList.size() > 0))
{
for (var j = 0; j < assocSPList.size(); j++) {
var assocSP = assocSPList.get(j);
entryList.add(resourceChange(UcsAssetTypeConstants.UCS_SERVICE_PROFILE,
assocSP.getIdentityKey(), assocSP.getDn(), "VLAN( " + ucsVlan.getName()
+ ") is added to Service Profile's vNIC '" + spVnic.getName()
+ "'", ctxt));
chList.add(createCMDBRecord1("VLAN( " + ucsVlan.getName()
+ ") is added to Service Profile's vNIC '" + spVnic.getName() + "'",
ctxt.getUserId(), sp));
}
}
}
} catch (e) {
logger.addError("Error while recording resources for Service Profiles associated with Templates."+e.message);
}
}
} // end of resource tracking
}
}
return vnicList;
}
function createRequestToAddVLANToVNICTempl(spMap,ucsVlan, uniqueId, logList, context,entryList,chList) {
var vnicTemplList = new ArrayList();
if (spMap.size() == 0) {
return vnicTemplList;
}
var arr = spMap.values().toArray();
for (var i = 0; i < arr.length; i++) {
var vnicTempl = arr[i];
if ((vnicTempl.getSwitchId() != null)
&& (vnicTempl.getSwitchId().startsWith(ucsVlan.getSwitchId()) || ucsVlan.getSwitchId().equals(
"dual")))
{
var vnic = new VnicLanConnTempl();
vnic.setDn(vnicTempl.getDn());
var vlan = new VnicEtherIf();
vlan.setName(ucsVlan.getName());
vlan.setRn("if-" + ucsVlan.getName());
vlan.setStatus("created");
var vlanArr = new Array();
vlanArr[0] = vlan;
vnic.setVnicEtherIf(vlanArr);
vnicTemplList.add(vnic);
var log = new UCSAddVLANToSPLog();
log.setType(UCSAddVLANToSPLog.DELETE_VLAN_FROM_VNIC_TEMPL);
log.setDn(vnicTempl.getDn());
log.setAccountName(vnicTempl.getAccountName());
log.setUniqueId(uniqueId);
log.setVlanName(ucsVlan.getName());
log.setTarget("");
logList.add(log);
if (!ctxt.isRESTContext())
{
entryList.add(resourceChange(UcsAssetTypeConstants.UCS_VNIC_TEMPLATE, vnicTempl.getIdentityKey(),
vnicTempl.getDn(), "VLAN( " + ucsVlan.getName() + ") is added to vNIC Template", ctxt));
}
chList.add(createCMDBRecord("VLAN( " + ucsVlan.getName() + ") is added to vNIC Template",
ctxt.getUserId(), vnicTempl));
try
{
logger.addInfo("vnicTempl.getTemplType()");
if (vnicTempl.getTemplType().equals(UcsConstants.SERVICE_PROFILE_TYPE_UPDATING_TEMPLATE))
{
var nList = UcsDataPersistenceUtil
.getServiceProfilesAssociatedToVNICTemplate(ucsVlan.getAccountName(), vnicTempl.getDn());
if ((nList != null) && (nList.size() > 0))
{
for (var i = 0; i < nList.size(); i++) {
var n = nList.get(i);
var id = new UcsServiceProfileIdentity(ucsVlan.getAccountName()
+ ";" + n.getOrg() + ";" + n.getSpDn());
if (!ctxt.isRESTContext())
{
entryList.add(resourceChange(UcsAssetTypeConstants.UCS_SERVICE_PROFILE, id
.getIdentityKey(), n.getSpDn(), "VLAN( " + ucsVlan.getName()
+ ") is added to Service Profile's vNIC '" + n.getName() + "'", ctxt));
}
var sp = UcsDataPersistenceUtil.getServiceProfileByIdentity(id
.getIdentityKey());
if (sp != null)
{
chList.add(createCMDBRecord1("VLAN( " + ucsVlan.getName()
+ ") is added to Service Profile's vNIC '" + n.getName() + "'",
ctxt.getUserId(), sp));
}
}
}
}
} catch (e)
{
logger.addError(
"Error while recording resources for Service Profile VNICs associated with vNIC Templates."+e.message);
}
}
}
return vnicTemplList;
}
function collectSPsToAddVLAN(accountName, orgList, switchId,spVnicMap, unBindVnicSPMap,
unbindSpMap, vnicTemplMap, spTemplMap) {
var vnicTemplListForAcc = new ArrayList();
var spListForAcc = new ArrayList();
var spMap = new HashMap();
var unwantedSpMap = new HashMap();
var unwantedSpVnicMap = new HashMap();
if ((switchId == null) || (switchId.length() == 0))
{
throw "Failed to get Switch ID.";
}
// account level vnic templates and SPs list
vnicTemplListForAcc = UcsDataPersistenceUtil.getVNICTemplatesForAcc(accountName);
spListForAcc = UcsDataPersistenceUtil.getServiceProfileForAcc(accountName);
if ((spListForAcc == null) || (vnicTemplListForAcc == null))
{
throw "Failed to retrieve VNIC Templates and Service Profiles.";
}
if ((spListForAcc.size() == 0) && (vnicTemplListForAcc.size() == 0))
{
return;
}
logger.addInfo("vnicTemplListForAcc list size : " + vnicTemplListForAcc.size());
logger.addInfo("spListForAcc list size : " + spListForAcc.size());
var orgArr = orgList.split(",");
logger.addInfo("org list size : " + orgArr.length);
for (var i = 0; i < orgArr.length; i++) {
var orgDn = orgArr[i];
logger.addInfo("orgDn : " + orgDn);
// collect all org level SPs
for (var i = 0; i < spListForAcc.size(); i++) {
var sp = spListForAcc.get(i);
if ((sp.getOrgName() != null) && sp.getOrgName().equals(orgDn)) {
if (sp.getType().equals("instance"))
{
spMap.put(sp.getDn(), sp);
}
}
}
} // end of orgArr
// ..................logger...............................
logger.addInfo("Size of SP Map for orglist : " + spMap.size());
var j = 1;
var i = spMap.keySet().iterator();
while (i.hasNext())
logger.addInfo(j++ + " " + i.next());
var arr = spMap.values().toArray();
for (var i = 0; i < arr.length; i++) {
var sp = arr[i];
if (sp.getDn() != null) {
if ((sp.getSrcTemplName() != null) && (sp.getSrcTemplName().length() > 0))
{
var assocSPTempl = getAssocSPTempl(accountName, sp);
if (assocSPTempl.getType().equals(UcsConstants.SERVICE_PROFILE_TYPE_UPDATING_TEMPLATE))
{
if (assocSPTempl.getType().equals(UcsConstants.SERVICE_PROFILE_TYPE_UPDATING_TEMPLATE))
{
if (spTemplMap.containsKey(assocSPTempl.getDn()))
{
unwantedSpMap.put(sp.getDn(), sp);
} else
{
unbindSpMap.put(sp.getDn(), sp);
}
}
}
}
}
}
// ..................logger...............................
logger.addInfo("Size of unwantedSpMap : " + unwantedSpMap.size());
j = 1;
i = unwantedSpMap.keySet().iterator();
while (i.hasNext())
logger.addInfo(j++ + " " + i.next());
logger.addInfo("Size of unbindSpMap : " + unbindSpMap.size());
j = 1;
i = unbindSpMap.keySet().iterator();
while (i.hasNext())
logger.addInfo(j++ + " " + i.next());
// ..................logger...............................
// remove SPs which are bound to updating SP Templ and the template is part of org selection
i = unwantedSpMap.keySet().iterator();
while (i.hasNext())
{
var key = i.next();
if (spMap.containsKey(key))
{
spMap.remove(key);
}
}
// ..................logger...............................
logger.addInfo("Size of SP map after removing unwanted SPs : " + spMap.size());
j = 1;
i = spMap.keySet().iterator();
while (i.hasNext())
logger.addInfo(j++ + " " + i.next());
// ..................logger...............................
// collect sp vnics
var arr = spMap.values().toArray();
for (var m = 0; m < arr.length; m++) {
var sp = arr[m];
// initCount = uptCount = normalVnicCount = 0;
if (sp.getSpVNIC() == null)
{
continue;
}
for (var k = 0; k < sp.getSpVNIC().size(); k++) {
var spVnic = sp.getSpVNIC().get(k);
if ((spVnic.getSwitchId() != null) && (spVnic.getSwitchId().startsWith(switchId) || switchId.equals("dual"))) {
// cannot add vlan to dynamic vnics
if ((spVnic.getInstType() != null) && !spVnic.getInstType().equals("dynamic"))
{
spVnicMap.put(spVnic.getDn(), spVnic); // add sp vnic to map
logger.addInfo("SP VNIC : " + spVnic.getDn());
if ((spVnic.getNwTemplName() != null) && (spVnic.getSrcTemplDn() != null)
&& (spVnic.getNwTemplName().length() > 0) && (spVnic.getSrcTemplDn().length() > 0))
{
var assocVNICTempl = getVnicFromList(vnicTemplListForAcc,
spVnic.getSrcTemplDn());
if (assocVNICTempl != null)
{
logger.addInfo("assocVNICTempl.getTemplType()");
if (assocVNICTempl.getTemplType().equals(
UcsConstants.SERVICE_PROFILE_TYPE_INITIAL_TEMPLATE))
{
// unbind this vnic from template before adding vlan
unBindVnicSPMap.put(spVnic.getDn(), spVnic);
logger.addInfo("Template DN : " + assocVNICTempl.getDn() + " Type : "
+ assocVNICTempl.getTemplType());
logger.addInfo("Unbind Template");
} else if (assocVNICTempl.getTemplType().equals(
UcsConstants.SERVICE_PROFILE_TYPE_UPDATING_TEMPLATE))
{
logger.addInfo("Template DN : " + assocVNICTempl.getDn() + " Type : "
+ assocVNICTempl.getTemplType());
if (vnicTemplMap.containsKey(assocVNICTempl.getDn()))
{
logger.addInfo("Remove SP vnic from MAP");
unwantedSpVnicMap.put(spVnic.getDn(), spVnic);
} else
{
logger.addInfo("Unbind Template");
unBindVnicSPMap.put(spVnic.getDn(), spVnic);
}
}
}
}
}
}
}
} // end of //collect all the sps which have associated vnic templates
// ..................logger...............................
logger.addInfo("Size of unwantedSpVnicMap : " + unwantedSpVnicMap.size());
j = 1;
i = unwantedSpVnicMap.keySet().iterator();
while (i.hasNext())
logger.addInfo(j++ + " " + i.next());
logger.addInfo("Size of SP VNIC MAP : " + spVnicMap.size());
j = 1;
i = spVnicMap.keySet().iterator();
while (i.hasNext())
logger.addInfo(j++ + " " + i.next());
logger.addInfo("Size of SPs that need to be unbound : " + unBindVnicSPMap.size());
j = 1;
i = unBindVnicSPMap.keySet().iterator();
while (i.hasNext())
{
var key = i.next();
logger.addInfo(j++ + "Src Templ Dn : " + key + " vnic templ Dn : " + unBindVnicSPMap.get(key).getDn());
;
}
// remove these sp vnics from the total sp vnic list as it is enough to modify the updating
// vnic templ
i = unwantedSpVnicMap.keySet().iterator();
while (i.hasNext())
{
var key = i.next();
if (spVnicMap.containsKey(key))
{
spVnicMap.remove(key);
}
}
// ..................logger...............................
logger.addInfo("Size of SP VNIC MAP after removing unwanted sp vnics: " + spVnicMap.size());
j = 1;
i = spVnicMap.keySet().iterator();
while (i.hasNext())
logger.addInfo(j++ + " " + i.next());
logger.addInfo("End of collectObjectsToAddVLAN()");
// ..................logger...............................
}
function collectVNICTemplatesToAddVLAN(accountName, orgList, switchId, templMap) {
var vnicTemplListForAcc = new ArrayList();
var initTemplMap = new HashMap();
var updTemplMap = new HashMap();
if ((switchId == null) || (switchId.length() == 0))
{
throw "Failed to get Switch ID.";
}
// account level vnic templates and SPs list
vnicTemplListForAcc = UcsDataPersistenceUtil.getVNICTemplatesForAcc(accountName);
if (vnicTemplListForAcc == null)
{
throw "Failed to retrieve VNIC Templates and Service Profiles.";
}
if (vnicTemplListForAcc.size() == 0)
{
return;
}
logger.addInfo("vnicTemplListForAcc list size : " + vnicTemplListForAcc.size());
var orgArr = orgList.split(",");
logger.addInfo("org list size : " + orgArr.length);
for (var i = 0; i < orgArr.length; i++) {
var orgDn = orgArr[i];
// collect all vnic templates for org
for (var n = 0; n < vnicTemplListForAcc.size(); n++) {
var templ = vnicTemplListForAcc.get(n);
if (templ.getDn() != null)
{
if ((templ.getSwitchId() != null)
&& (templ.getSwitchId().startsWith(switchId) || switchId.equals("dual")))
{
if ((templ.getOrg() != null) && templ.getOrg().equals(orgDn))
{
logger.addInfo("templ.getTemplType()");
if ((templ.getTemplType() != null)
&& templ.getTemplType().equals(UcsConstants.SERVICE_PROFILE_TYPE_INITIAL_TEMPLATE))
{
initTemplMap.put(templ.getDn(), templ);
} else if (templ.getTemplType().equals(UcsConstants.SERVICE_PROFILE_TYPE_UPDATING_TEMPLATE))
{
updTemplMap.put(templ.getDn(), templ);
}
}
}
}
}
}
// ..................logger...............................
logger.addInfo("Size of Initial template map for orglist : " + initTemplMap.size());
var j = 1;
var i = initTemplMap.keySet().iterator();
while (i.hasNext())
logger.addInfo(j++ + " " + i.next());
logger.addInfo("Size of Updating template map for orglist : " + updTemplMap.size());
j = 1;
i = updTemplMap.keySet().iterator();
while (i.hasNext())
logger.addInfo(j++ + " " + i.next());
// combine into single template map
templMap.putAll(initTemplMap);
templMap.putAll(updTemplMap);
// ..................logger...............................
logger.addInfo("Final vnic templ size : " + templMap.size());
j = 1;
i = templMap.keySet().iterator();
while (i.hasNext())
logger.addInfo(j++ + " " + i.next());
logger.addInfo("End of collectObjectsToAddVLAN()");
// ..................logger...............................
}
function collectSPTemplsToAddVLAN(accountName, orgList, switchId,
spVnicMap, unBindVnicSPMap,vnicTemplMap, spTemplMap) {
var vnicTemplListForAcc = new ArrayList();
var spListForAcc = new ArrayList();
var unwantedSpVnicMap = new HashMap();
if ((switchId == null) || (switchId.length() == 0))
{
throw "Failed to get Switch ID.";
}
// account level vnic templates and SPs list
vnicTemplListForAcc = UcsDataPersistenceUtil.getVNICTemplatesForAcc(accountName);
spListForAcc = UcsDataPersistenceUtil.getServiceProfileForAcc(accountName);
if ((spListForAcc == null) || (vnicTemplListForAcc == null))
{
throw "Failed to retrieve VNIC Templates and Service Profiles.";
}
if ((spListForAcc.size() == 0) && (vnicTemplListForAcc.size() == 0))
{
return;
}
logger.addInfo("vnicTemplListForAcc list size : " + vnicTemplListForAcc.size());
logger.addInfo("spListForAcc list size : " + spListForAcc.size());
var orgArr = orgList.split(",");
logger.addInfo("org list size : " + orgArr.length);
for (var k = 0; k < orgArr.length; k++) {
var orgDn = orgArr[k];
logger.addInfo("orgDn : " + orgDn);
// collect all org level SP Templates
for (var i = 0; i < spListForAcc.size(); i++) {
var sp = spListForAcc.get(i);
if ((sp.getOrgName() != null) && sp.getOrgName().equals(orgDn))
{
if (!sp.getType().equals("instance"))
{
spTemplMap.put(sp.getDn(), sp);
}
}
}
} // end of orgArr
// ..................logger...............................
logger.addInfo("Size of SP Map for orglist : " + spTemplMap.size());
var j = 1;
var i = spTemplMap.keySet().iterator();
while (i.hasNext())
logger.addInfo(j++ + " " + i.next());
// ..................logger...............................
// collect sp vnics
var arr = spTemplMap.values().toArray();
for (var i = 0; i < arr.length; i++) {
var sp = arr[i];
// initCount = uptCount = normalVnicCount = 0;
if (sp.getSpVNIC() == null)
{
continue;
}
for (var k = 0; k < sp.getSpVNIC().size(); k++) {
var spVnic = sp.getSpVNIC().get(k);
if ((spVnic.getSwitchId() != null)
&& (spVnic.getSwitchId().startsWith(switchId) || switchId.equals("dual")))
{
// cannot add vlan to dynamic vnics
if ((spVnic.getInstType() != null) && !spVnic.getInstType().equals("dynamic"))
{
spVnicMap.put(spVnic.getDn(), spVnic); // add sp vnic to map
logger.addInfo("SP VNIC : " + spVnic.getDn());
if ((spVnic.getNwTemplName() != null) && (spVnic.getSrcTemplDn() != null)
&& (spVnic.getNwTemplName().length() > 0) && (spVnic.getSrcTemplDn().length() > 0))
{
var assocVNICTempl = getVnicFromList(vnicTemplListForAcc,
spVnic.getSrcTemplDn());
if (assocVNICTempl != null)
{
logger.addInfo("assocVNICTempl.getTemplType()");
if (assocVNICTempl.getTemplType().equals(
UcsConstants.SERVICE_PROFILE_TYPE_INITIAL_TEMPLATE))
{
// unbind this vnic from template before adding vlan
unBindVnicSPMap.put(spVnic.getDn(), spVnic);
logger.addInfo("Template DN : " + assocVNICTempl.getDn() + " Type : "
+ assocVNICTempl.getTemplType());
logger.addInfo("Unbind Template");
} else if (assocVNICTempl.getTemplType().equals(
UcsConstants.SERVICE_PROFILE_TYPE_UPDATING_TEMPLATE))
{
logger.addInfo("Template DN : " + assocVNICTempl.getDn() + " Type : "
+ assocVNICTempl.getTemplType());
if (vnicTemplMap.containsKey(assocVNICTempl.getDn()))
{
logger.addInfo("Remove SP vnic from MAP");
unwantedSpVnicMap.put(spVnic.getDn(), spVnic);
} else
{
logger.addInfo("Unbind Template");
unBindVnicSPMap.put(spVnic.getDn(), spVnic);
}
}
}
}
}
}
}
} // end of //collect all the sps which have associated vnic templates
// ..................logger...............................
logger.addInfo("Size of unwantedSpVnicMap : " + unwantedSpVnicMap.size());
j = 1;
i = unwantedSpVnicMap.keySet().iterator();
while (i.hasNext())
logger.addInfo(j++ + " " + i.next());
logger.addInfo("Size of SP VNIC MAP : " + spVnicMap.size());
j = 1;
i = spVnicMap.keySet().iterator();
while (i.hasNext())
logger.addInfo(j++ + " " + i.next());
logger.addInfo("Size of SPs that need to be unbound : " + unBindVnicSPMap.size());
j = 1;
i = unBindVnicSPMap.keySet().iterator();
while (i.hasNext())
{
var key = i.next();
logger.addInfo(j++ + "Src Templ Dn : " + key + " vnic templ Dn : " + unBindVnicSPMap.get(key).getDn());
;
}
// remove these sp vnics from the total sp vnic list as it is enough to modify the updating
// vnic templ
i = unwantedSpVnicMap.keySet().iterator();
while (i.hasNext())
{
var key = i.next();
if (spVnicMap.containsKey(key))
{
spVnicMap.remove(key);
}
}
// ..................logger...............................
logger.addInfo("Size of SP VNIC MAP after removing unwanted sp vnics: " + spVnicMap.size());
j = 1;
i = spVnicMap.keySet().iterator();
while (i.hasNext())
logger.addInfo(j++ + " " + i.next());
logger.addInfo("End of collectObjectsToAddVLAN()");
// ..................logger...............................
}
function getVnicFromList(vnicTemplListForAcc, srcTemplDn)
{
for (var i = 0; i < vnicTemplListForAcc.size(); i++) {
var t = vnicTemplListForAcc.get(i);
if (t.getDn().equals(srcTemplDn))
{
return t;
}
}
return null;
}
function collectObjectsToAddVLAN(accountName, orgList, switchId,
spVnicMap, unBindVnicSPMap, templMap, unbindSpMap, vnicTemplListForAcc, spListForAcc) {
var initTemplMap = new HashMap();
var updTemplMap = new HashMap();
var spMap = new HashMap();
var unwantedSpMap = new HashMap();
var unwantedSpVnicMap = new HashMap();
logger.addInfo("Switch Id "+switchId);
if ((switchId == null) || (switchId.length() == 0))
{
throw "Failed to get Switch ID.";
}
logger.addInfo("spListForAcc "+spListForAcc);
logger.addInfo("vnicTemplListForAcc "+vnicTemplListForAcc);
if ((spListForAcc == null) || (vnicTemplListForAcc == null))
{
throw "Failed to retrieve VNIC Templates and Service Profiles.";
}
if ((spListForAcc.size() == 0) && (vnicTemplListForAcc.size() == 0))
{
return;
}
logger.addInfo("vnicTemplListForAcc list size : " + vnicTemplListForAcc.size());
logger.addInfo("spListForAcc list size : " + spListForAcc.size());
var orgArr = orgList.split(",");
logger.addInfo("org list size : " + orgArr.length);
for (var k = 0; k < orgArr.length; k++) {
var orgDn = orgArr[k];
logger.addInfo("orgDn : " + orgDn);
// collect all vnic templates for org
for (var i = 0; i < vnicTemplListForAcc.size(); i++) {
var templ = vnicTemplListForAcc.get(i);
if (templ.getDn() != null) {
if ((templ.getSwitchId() != null)
&& (templ.getSwitchId().startsWith(switchId) || switchId.equals("dual")))
{
logger.addInfo("template switch ID : " + templ.getSwitchId());
logger.addInfo("vlan switch ID : " + switchId);
if ((templ.getOrg() != null) && templ.getOrg().equals(orgDn))
{
if ((templ.getTemplType() != null)
&& templ.getTemplType().equals(UcsConstants.SERVICE_PROFILE_TYPE_INITIAL_TEMPLATE))
{
logger.addInfo("Template : " + templ.getDn() + " Type : " + templ.getTemplType());
initTemplMap.put(templ.getDn(), templ);
} else if (templ.getTemplType().equals(UcsConstants.SERVICE_PROFILE_TYPE_UPDATING_TEMPLATE))
{
logger.addInfo("Template : " + templ.getDn() + " Type : " + templ.getTemplType());
updTemplMap.put(templ.getDn(), templ);
}
}
}
}
}
// collect all org level SPs
for (var i = 0; i < spListForAcc.size(); i++) {
var sp = spListForAcc.get(i);
if ((sp.getOrgName() != null) && sp.getOrgName().equals(orgDn)){
logger.addInfo("SP : " + sp.getDn());
spMap.put(sp.getDn(), sp);
}
}
} // end of orgArr
// ..................logger...............................
logger.addInfo("Size of Initial template map for orglist : " + initTemplMap.size());
var j = 1;
var i = initTemplMap.keySet().iterator();
while (i.hasNext())
logger.addInfo(j++ + " " + i.next());
logger.addInfo("Size of Updating template map for orglist : " + updTemplMap.size());
j = 1;
i = updTemplMap.keySet().iterator();
while (i.hasNext())
logger.addInfo(j++ + " " + i.next());
logger.addInfo("Size of SP Map for orglist : " + spMap.size());
j = 1;
i = spMap.keySet().iterator();
while (i.hasNext())
logger.addInfo(j++ + " " + i.next());
var arr = spMap.values().toArray();
for (var m = 0; m < arr.length; m++) {
var sp = arr[m];
if (sp.getDn() != null) {
if ((sp.getSrcTemplName() != null) && (sp.getSrcTemplName().length() > 0))
{
var assocSPTempl = getAssocSPTempl(accountName, sp);
if (assocSPTempl != null)
{
if (assocSPTempl.getType().equals(UcsConstants.SERVICE_PROFILE_TYPE_UPDATING_TEMPLATE))
{
if (spMap.containsKey(assocSPTempl.getDn()))
{
unwantedSpMap.put(sp.getDn(), sp);
} else
{
unbindSpMap.put(sp.getDn(), sp);
}
}
}
}
}
}
// ..................logger...............................
logger.addInfo("Size of unwantedSpMap : " + unwantedSpMap.size());
j = 1;
i = unwantedSpMap.keySet().iterator();
while (i.hasNext())
logger.addInfo(j++ + " " + i.next());
logger.addInfo("Size of unbindSpMap : " + unbindSpMap.size());
j = 1;
i = unbindSpMap.keySet().iterator();
while (i.hasNext())
logger.addInfo(j++ + " " + i.next());
// ..................logger...............................
// remove SPs which are bound to updating SP Templ and the template is part of org selection
i = unwantedSpMap.keySet().iterator();
while (i.hasNext())
{
var key = i.next();
if (spMap.containsKey(key))
{
spMap.remove(key);
}
}
// ..................logger...............................
logger.addInfo("Size of SP map after removing unwanted SPs : " + spMap.size());
j = 1;
i = spMap.keySet().iterator();
while (i.hasNext())
logger.addInfo(j++ + " " + i.next());
// ..................logger...............................
// collect sp vnics
var arr = spMap.values().toArray();
for (var m = 0; m < arr.length; m++) {
var sp = arr[m];
// initCount = uptCount = normalVnicCount = 0;
if (sp.getSpVNIC() == null) {
continue;
}
for (var k = 0; k < sp.getSpVNIC().size(); k++) {
var spVnic = sp.getSpVNIC().get(k);
if ((spVnic.getSwitchId() != null)
&& (spVnic.getSwitchId().startsWith(switchId) || switchId.equals("dual"))) {
// cannot add vlan to dynamic vnics
if ((spVnic.getInstType() != null) && !spVnic.getInstType().equals("dynamic")) {
spVnicMap.put(spVnic.getDn(), spVnic); // add sp vnic to map
logger.addInfo("SP VNIC : " + spVnic.getDn());
if ((spVnic.getNwTemplName() != null) && (spVnic.getSrcTemplDn() != null)
&& (spVnic.getSrcTemplDn().length() > 0) && (spVnic.getNwTemplName().length() > 0))
{
var assocVNICTempl = getVnicFromList(vnicTemplListForAcc,spVnic.getSrcTemplDn());
;
if (assocVNICTempl != null)
{
if (assocVNICTempl.getTemplType().equals(
UcsConstants.SERVICE_PROFILE_TYPE_INITIAL_TEMPLATE))
{
// unbind this vnic from template before adding vlan
unBindVnicSPMap.put(spVnic.getDn(), spVnic);
logger.addInfo("Template DN : " + assocVNICTempl.getDn() + " Type : "
+ assocVNICTempl.getTemplType());
logger.addInfo("Unbind Template");
} else if (assocVNICTempl.getTemplType().equals(
UcsConstants.SERVICE_PROFILE_TYPE_UPDATING_TEMPLATE))
{
logger.addInfo("Template DN : " + assocVNICTempl.getDn() + " Type : "
+ assocVNICTempl.getTemplType());
if (updTemplMap.containsKey(assocVNICTempl.getDn()))
{
logger.addInfo("Remove SP vnic from MAP");
unwantedSpVnicMap.put(spVnic.getDn(), spVnic);
} else
{
logger.addInfo("Unbind Template");
unBindVnicSPMap.put(spVnic.getDn(), spVnic);
}
}
}
}
}
}
}
} // end of //collect all the sps which have associated vnic templates
// ..................logger...............................
logger.addInfo("Size of unwantedSpVnicMap : " + unwantedSpVnicMap.size());
j = 1;
i = unwantedSpVnicMap.keySet().iterator();
while (i.hasNext())
logger.addInfo(j++ + " " + i.next());
logger.addInfo("Size of SP VNIC MAP : " + spVnicMap.size());
j = 1;
i = spVnicMap.keySet().iterator();
while (i.hasNext())
logger.addInfo(j++ + " " + i.next());
logger.addInfo("Size of SPs that need to be unbound : " + unBindVnicSPMap.size());
j = 1;
i = unBindVnicSPMap.keySet().iterator();
while (i.hasNext())
{
var key = i.next();
logger.addInfo(j++ + "Src Templ Dn : " + key + " vnic templ Dn : " + unBindVnicSPMap.get(key).getDn());
;
}
// remove these sp vnics from the total sp vnic list as it is enough to modify the updating
// vnic templ
i = unwantedSpVnicMap.keySet().iterator();
while (i.hasNext())
{
var key = i.next();
if (spVnicMap.containsKey(key))
{
spVnicMap.remove(key);
}
}
// ..................logger...............................
logger.addInfo("Size of SP VNIC MAP after removing unwanted sp vnics: " + spVnicMap.size());
j = 1;
i = spVnicMap.keySet().iterator();
while (i.hasNext())
logger.addInfo(j++ + " " + i.next());
// combine into single template map
templMap.putAll(initTemplMap);
templMap.putAll(updTemplMap);
// ..................logger...............................
logger.addInfo("Final vnic templ size : " + templMap.size());
j = 1;
i = templMap.keySet().iterator();
while (i.hasNext())
logger.addInfo(j++ + " " + i.next());
logger.addInfo("End of collectObjectsToAddVLAN()");
// ..................logger...............................
}
function getAssocSPTempl(accountName, sp) {
var spTemplList = UcsDataPersistenceUtil.getSPTemplByNameAndHier(accountName,sp.getOrgName(), sp.getSrcTemplName());
var assocSPTempl = null;
if ((spTemplList != null) && (spTemplList.size() > 0))
{
logger.addInfo("Assoc TemplList size : " + spTemplList.size());
if (spTemplList.size() == 1)
{
assocSPTempl = spTemplList.get(0);
} else if (spTemplList.size() > 1)
{
var orgLevel = 0;
for (var i = 0; i < spTemplList.size(); i++) {
var spTempl = spTemplList.get(i);
var arr = spTempl.getOrgName().split("/");
if (arr.length > orgLevel)
{
assocSPTempl = spTempl;
orgLevel = arr.length;
logger.addInfo("Assoc Templ Dn : " + assocSPTempl.getDn());
}
}
}
}
// logger.addInfo("templ type:" + assocSPTempl.getName() + ";;;;;" + assocSPTempl.getType());
return assocSPTempl;
}
function createRequestToUnbindSPFromTemplate(unbindSpMap,
uniqueId, logList, context,
entryList, chList) {
var lsServerList = new ArrayList();
var i = unbindSpMap.keySet().iterator();
while (i.hasNext())
{
var spDn = i.next();
var sp = unbindSpMap.get(spDn);
var ls = new LsServer();
ls.setDn(sp.getDn());
ls.setSrcTemplName(""); // unbound vnic templ from sp vnic
lsServerList.add(ls);
var log = new UCSAddVLANToSPLog();
log.setType(UCSAddVLANToSPLog.BIND_SP);
log.setTarget(sp.getSrcTemplName());
log.setDn(sp.getDn());
log.setAccountName(sp.getAccountName());
// log.setConfigEntryId(configEntryID);
log.setUniqueId(uniqueId);
logList.add(log);
try
{
logger.addInfo("in createRequestToUnbindSPFromTemplate : " + logList);
if (!context.isRESTContext())
{
entryList.add(resourceChange(UcsAssetTypeConstants.UCS_SERVICE_PROFILE, sp.getIdentityKey(), sp
.getDn(), "Service Profile is unbound from Service Profile Template : "
+ sp.getSrcTemplName(), context));
}
chList.add(createCMDBRecord1(
"Service Profile is unbound from Service Profile Template : " + sp.getSrcTemplName(),
context.getUserId(), sp));
} catch (e)
{
logger.addError("Error in resource tracking and CMDB"+ e.message);
}
}
return lsServerList;
}
function resourceChange(assetType, assetId, assetLabel,
assetDesc, context) {
var e = context.getChangeTracker().createChangeEntry();
e.setChangeType(ServiceRequestAssetChangeEntry.CHANGE_TYPE_MODIFY);
e.setChangeDescription(assetDesc);
e.setAssetType(assetType);
e.setAssetId(assetId);
e.setAssetLabel(assetLabel);
return e;
// assetList.add(e);
}
function addChangeRecord(userId, vlan, changeType, accountName) {
try
{
var lan = UcsDataPersistenceUtil.getVLAN(accountName, vlan.getDn());
UcsCMDBUtil.getInstance().change(userId, changeType, null, lan);
} catch (e)
{
logger.addError("Error while creating change record"+ e.message);
}
}
function createCMDBRecord1(descrption, user, sp)
{
var ai = new CMDB.AdditionalInfo();
var rec = new ChangeRecord();
rec.setTime(System.currentTimeMillis());
if (sp.getType().equals(GlobalConstants.FIELD_CONSTANTS.SERVICE_PROFILE_TYPE_INTANCE))
{
rec.setResourceType(ChangeRecord.RES_TYPE_UCS_SERVICE_PROFILE);
} else
{
rec.setResourceType(ChangeRecord.RES_TYPE_UCS_SERVICE_PROFILE_TEMPLATE);
}
rec.setDescription(descrption);
rec.setChangeType(ChangeRecord.CHANGE_TYPE_MODIFY);
rec.setChangeByUser(user);
rec.setChangedResourceName(sp.getDn());
ai.add("Account Name", sp.getAccountName());
ai.add("Organization", UcsDataPersistenceUtil.getOrgFromDn(sp.getDn()));
ai.add("Associate Status", sp.getAssocState());
ai.add("Operational Status", sp.getOperState());
ai.add("Number of vHBAs", (sp.getSpVHBA() != null) ? (sp.getSpVHBA().size() + "") : "0");
ai.add("Number of vNICs", (sp.getSpVNIC() != null) ? (sp.getSpVNIC().size() + "") : "0");
rec.setAdditionalInfo(ai.toString());
return rec;
}
function createCMDBRecord(descrption, user, obj) {
var ai = new CMDB.AdditionalInfo();
var rec = new ChangeRecord();
rec.setTime(System.currentTimeMillis());
rec.setResourceType(ChangeRecord.RES_TYPE_UCS_VNIC_TEMPLATE);
rec.setDescription(descrption);
rec.setChangeType(ChangeRecord.CHANGE_TYPE_MODIFY);
rec.setChangeByUser(user);
rec.setChangedResourceName(obj.getDn());
ai.add("Account Name", obj.getAccountName());
ai.add("Template Type", obj.getTemplType());
ai.add("Switch ID", obj.getSwitchId());
rec.setAdditionalInfo(ai.toString());
return rec;
}
function modifyVLANOrgList(orgList, vlanName, accountName,context) {
var finalVlanList = new ArrayList();
var chList = new ArrayList();
if (orgList != null) {
var finalList = new ArrayList();
var configList = orgList.split(",");
if (configList != null && configList.length > 0)
for (var i = 0; i < configList.length; i++) {
var c = configList[i];
finalList.add(c);
}
logger.addInfo("Final List size:" + finalList.size());
for (var i = 0; i < finalList.size(); i++) {
var name = finalList.get(i);
var finalVlan = new UcsVlanGroupMappings();
finalVlan.setName(vlanName);
finalVlan.setAccountName(accountName);
// org-root/org-Finance/vlan-req-vlanA
var rn = "/vlan-req-";
finalVlan.setObjType("vlan");
finalVlan.setDn(name + rn + vlanName);
finalVlan.setStatus(UcsAPIConstants.MANAGED_OBJECT_STATUS_CREATED_MODIFIED);
finalVlan.setType("lan");
finalVlanList.add(finalVlan);
chList.add(createCMDBRecords("Created VLAN on " + finalVlan.getDn(), context.getUserId(), finalVlan, ChangeRecord.CHANGE_TYPE_DELETE));
}
logger.addInfo("finalVlanList : " + finalVlanList.size());
UcsAPIActions.performVlanGroupingOrgMappingsAction(finalVlanList, accountName, "admin", chList);
}
}
function createCMDBRecords(text, userId, finalVlan, changeTypeDelete) {
var ai = new CMDB.AdditionalInfo();
var rec = new ChangeRecord();
rec.setTime(System.currentTimeMillis());
rec.setResourceType(ChangeRecord.RES_TYPE_UCS_FAULT_SUPPRESSION_TASK);
rec.setDescription(text);
rec.setChangeType(changeTypeDelete);//ChangeRecord.CHANGE_TYPE_MODIFY);
rec.setChangeByUser(userId);
rec.setChangedResourceName(finalVlan.getDn());
ai.add("Account Name", finalVlan.getAccountName());
ai.add("DN", finalVlan.getDn());
ai.add("Status", finalVlan.getStatus());
ai.add("Organization", finalVlan.getOrgDn());
rec.setAdditionalInfo(ai.toString());
return rec;
}
function setVLANSharing(vlan, sharing, pubNwName) {
if(sharing != null && !(new java.lang.String(sharing)).isEmpty())
{
if(sharing.equals("None"))
vlan.setSharing("none");
else if(sharing.equals("Primary"))
{
vlan.setSharing("primary");
}
else if(sharing.equals("Isolated"))
{
vlan.setSharing("isolated");
if(sharing != null)
vlan.setPubNwName(pubNwName);
}
else
vlan.setSharing("none");
}
}
function getOrgList(orgList) {
var orgListBuf = new StringBuffer();
if(orgList == null || orgList.trim().equals("")){
return orgList;
}
if (orgList.indexOf(",") != -1) {
var arr = orgList.split(",");
for (var i = 0; i < arr.length; i++) {
var arr1 = arr[i];
if (arr1.indexOf(";") != -1) {
orgListBuf.append(arr1.split(";")[1]);
} else {
orgListBuf.append(arr1);
}
orgListBuf.append(",");
}
orgListBuf.deleteCharAt(orgListBuf.toString().lastIndexOf(","));
} else {
if (orgList.indexOf(";") != -1) {
orgListBuf.append(orgList.split(";")[1]);
} else {
orgListBuf.append(orgList);
}
}
orgList = orgListBuf.toString();
return orgList;
}
function getServiceProfileList(list){
var srListBuf = new StringBuffer();
if(list == null || list.trim().equals("")){
//return orgList;
return list;
}
if(list.indexOf(",") != -1){
var listArr = list.split(",");
for (var i = 0; i < listArr.length; i++) {
var bufString = listArr[i].substring(listArr[i].lastIndexOf(";")+1);
srListBuf.append(bufString);
srListBuf.append(",");
}
srListBuf.deleteCharAt(srListBuf.toString().lastIndexOf(","));
} else {
var bufString = list.substring(list.lastIndexOf(";")+1);
srListBuf.append(bufString);
}
return srListBuf.toString();
}
executeCustomAction();
Additional Links: