Name

sn_capi.CAPIUtils

Description

No description available

Script

var CAPIUtils = Class.create();

CAPIUtils.createResponseObject = function(status, data, error) {

  var response = {};
  response.result = {};

  response.result.status = status;

  if (!gs.nil(data))
  	response.data = data;

  if (!gs.nil(error)) {
  	if (CAPIErrorHelper.isCAPIError(error)) {
  		response.result.error = error.generateJSON();
  	}
  	else { // should be string or java.lang.String
  		// TODO: remove this when the time is up. for backward compatibility.

  		// If the error is java string object
  		if (typeof error == 'object')
  			error += '';

  		response.result.error_message = error;
  		var errObj = new CAPIError(error, 'Unexpected runtime error');
  		response.result.error = errObj.generateJSON();
  	}
  }
  return response;
};

CAPIUtils.executeMethod = function(params, actionName) {

  if(actionName == "GetAllCloudApi")
  	return CAPIUtils.getAllCloudApi(params);
  else if(actionName == "GetAllCapiInterface")
  	return CAPIUtils.getAllCapiInterface(params);
  else if(actionName == "GetAllConnector")
  	return CAPIUtils.getAllConnector(params);
  else if(actionName == "GetAllProviders")
  	return CAPIUtils.getAllProviders(params);
  else if(actionName == "DeleteCloudApi")
  	return CAPIUtils.deleteCloudApi(params);
  else if(actionName == "DeleteCAPIInterface")
  	return CAPIUtils.deleteCAPIInterface(params);
  else if(actionName == "DeleteConnector")
  	return CAPIUtils.deleteConnector(params);
  else if(actionName == "DeleteProvider")
  	return CAPIUtils.deleteProvider(params);
  else if(actionName == "CreateCloudApi")
  	return CAPIUtils.createCloudApi(params);
  else if(actionName == "CreateCAPIInterface")
  	return CAPIUtils.createCAPIInterface(params);
  else if(actionName == "CreateConnector")
  	return CAPIUtils.createConnector(params);
  else if(actionName == "CreateProvider")
  	return CAPIUtils.createProvider(params);
  else if(actionName == "ExportCloudApi")
  	return CAPIUtils.exportCloudApi(params);
  else if(actionName == "ExportCloudInterface")
  	return CAPIUtils.exportCloudInterface(params);
  else if(actionName == "ExportCloudConnector")
  	return CAPIUtils.exportCloudConnector(params);
  else if(actionName == "ExportCloudProvider")
  	return CAPIUtils.exportCloudProvider(params);
  else if(actionName == "getAllDatacenterClass")
  	return CAPIUtils.getAllDatacenterClass(params);
  else if(actionName == "GetCloudAPIScripts")
  	return CAPIUtils.getCloudAPIScripts(params);
  else if(actionName == "ExportCloudApiUpdateSet")
  	return CAPIUtils.exportCloudAPIUpdateSet(params);
};

CAPIUtils.getAllCloudApi = function(params) {
  var data = [];
  var name = params.name;
  var currentPageIndex = parseInt(params.currentPage, 10);
  var limitIndex = parseInt(params.limit, 10);
  var gr = new GlideRecord('sn_capi_cloud_api');
  if (name != "")
  	gr.addQuery("cloud_api_name",  "CONTAINS", name);
  gr.chooseWindow(--currentPageIndex, currentPageIndex + limitIndex, false);
  gr.orderBy("cloud_api_name");
  gr.query();

  while (gr.next()) {
  	data.push({
  		id: gr.getValue('sys_id'),
  		name: gr.getDisplayValue('cloud_api_name'),
  		description: gr.getDisplayValue('description'),
  		cloudApiInterface: gr.getDisplayValue('cloud_api_interface'),
  		category: gr.getDisplayValue('category'),
  		createdBy: gr.getDisplayValue('sys_created_by')
  	});
  }
  var responseObj = {
  	cloudapiList : data,
  	totalRecords : gr.getRowCount()
  };
  return responseObj;

};

CAPIUtils.getAllCapiInterface = function(params) {
  var data = [];
  var name = params.name;
  var currentPageIndex = parseInt(params.currentPage, 10);
  var limitIndex = parseInt(params.limit, 10);
  var gr = new GlideRecord('sn_capi_interface');
  if (name != "")
  	gr.addQuery("interface_name",  "CONTAINS", name);
  gr.chooseWindow(--currentPageIndex, currentPageIndex + limitIndex, false);
  gr.orderBy("interface_name");
  gr.query();

  while (gr.next()) {
  	data.push({
  		id: gr.getValue('sys_id'),
  		name: gr.getDisplayValue('interface_name')
  	});
  }
  var responseObj = {
  	cloudapiList : data,
  	totalRecords : gr.getRowCount()
  };
  return responseObj;

};

CAPIUtils.getAllConnector = function(params) {
  var data = [];
  var name = params.name;
  var currentPageIndex = parseInt(params.currentPage, 10);
  var limitIndex = parseInt(params.limit, 10);
  var gr = new GlideRecord('sn_capi_connector');
  if (name != "")
  	gr.addQuery("connector_name",  "CONTAINS", name);
  gr.chooseWindow(--currentPageIndex, currentPageIndex + limitIndex, false);
  gr.orderBy("connector_name");
  gr.query();

  while (gr.next()) {
  	data.push({
  		id: gr.getValue('sys_id'),
  		name: gr.getDisplayValue('connector_name')
  	});
  }
  var responseObj = {
  	cloudapiList : data,
  	totalRecords : gr.getRowCount()
  };
  return responseObj;

};

CAPIUtils.getAllProviders = function(params) {
  var data = [];
  var name = params.name;
  var currentPageIndex = parseInt(params.currentPage, 10);
  var limitIndex = parseInt(params.limit, 10);
  var gr = new GlideRecord('sn_capi_provider');
  if (name != "")
  	gr.addQuery("name",  "CONTAINS", name);

  var activeFieldQuery = gr.addNullQuery("active");
  activeFieldQuery.addOrCondition("active", true);

  gr.chooseWindow(--currentPageIndex, currentPageIndex + limitIndex, false);
  gr.orderBy("name");
  gr.query();

  while (gr.next()) {
  	data.push({
  		id: gr.getValue('sys_id'),
  		name: gr.getDisplayValue('name')
  	});
  }
  var responseObj = {
  	cloudapiList : data,
  	totalRecords : gr.getRowCount()
  };
  return responseObj;

};
CAPIUtils.getAllDatacenterClass = function(params) {
  var data = [];
  var glr = new GlideRecord('sys_db_object');
  glr.addQuery("label",  "Logical Datacenter");
  glr.addQuery("name",  "cmdb_ci_logical_datacenter");
  glr.query();
  if (glr.next()) {
  	var gr = new GlideRecord('sys_db_object');
  	gr.addQuery("super_class",  glr.getValue('sys_id'));
  	gr.query();

  	while (gr.next()) {
  		data.push({
  			value: gr.getValue('name'),
  			label: gr.getValue('label')
  		});
  	}
  }

  return data;

};

CAPIUtils.deleteCloudApi = function(params) {

  if (!params.id)
  	return null;

  var capiLibraryServiceScript=new sn_cloud_api.CAPILibraryServiceScript();
  var isDelete=capiLibraryServiceScript.deleteCloudApi(params.id);
  return isDelete;

};

CAPIUtils.deleteCAPIInterface = function(params) {

  if (!params.id)
  	return null;

  var capiLibraryServiceScript=new sn_cloud_api.CAPILibraryServiceScript();
  var isDelete=capiLibraryServiceScript.deleteCAPIInterface(params.id);
  return isDelete;

};

CAPIUtils.deleteConnector = function(params) {

  if (!params.id)
  	return null;

  var capiLibraryServiceScript=new sn_cloud_api.CAPILibraryServiceScript();
  var isDelete=capiLibraryServiceScript.deleteConnector(params.id);
  return isDelete;

};

CAPIUtils.deleteProvider = function(params) {

  if (!params.id)
  	return null;

  var capiLibraryServiceScript=new sn_cloud_api.CAPILibraryServiceScript();
  var isDelete=capiLibraryServiceScript.deleteProvider(params.id);
  return isDelete;

};


CAPIUtils.createCloudApi = function(params) {

  var capiLibraryServiceScript=new sn_cloud_api.CAPILibraryServiceScript();
  var cloudapi=capiLibraryServiceScript.createCloudApi(params.name, params.category, params.description, params.version, params.scripted, params.capiinterface, params.connector, params.provider, params.isScriptInstance, params.scriptType);
  return cloudapi;
};

CAPIUtils.createCAPIInterface = function(params) {
  var capiLibraryServiceScript=new sn_cloud_api.CAPILibraryServiceScript();
  var cloudinterface=capiLibraryServiceScript.createCloudInterface(params.name, params.category, params.description);
  return cloudinterface;
};

CAPIUtils.createConnector = function(params) {
  var capiLibraryServiceScript=new sn_cloud_api.CAPILibraryServiceScript();
  var cloudconnector=capiLibraryServiceScript.createCloudConnector(params.name, params.description, params.vendor, params.version, params.releaseDate, params.category, params.connectorType);
  return cloudconnector;
};

CAPIUtils.createProvider = function(params) {
  var grProvider = new GlideRecord('sn_capi_provider');
  grProvider.addQuery("name",  params.name);
  grProvider.query();
  if (grProvider.hasNext()) {
  	return "0";
  }  else {
  	var capiLibraryServiceScript=new sn_cloud_api.CAPILibraryServiceScript();
  	var cloudprovider=capiLibraryServiceScript.createCloudProvider(params.name, params.description, params.datacenterclass);
  	return cloudprovider;
  }

};

CAPIUtils.exportCloudApi = function(params) {
  if (!params.id)
  	return null;
  var capiLibraryServiceScript=new sn_cloud_api.CAPILibraryServiceScript();
  var capi = capiLibraryServiceScript.exportCloudApi(params.id);
  var resObj = new global.JSON().decode(capi);
  return resObj.objectJSON;
};

CAPIUtils.exportCloudInterface = function(params) {
  if (!params.id)
  	return null;
  var capiLibraryServiceScript=new sn_cloud_api.CAPILibraryServiceScript();
  var capiinterface = capiLibraryServiceScript.exportCloudInterface(params.id);
  return capiinterface;
};

CAPIUtils.exportCloudConnector = function(params) {
  if (!params.id)
  	return null;
  var capiLibraryServiceScript=new sn_cloud_api.CAPILibraryServiceScript();
  var connector= capiLibraryServiceScript.exportCloudConnector(params.id);
  return connector;
};

CAPIUtils.exportCloudProvider = function(params) {
  if (!params.id)
  	return null;
  //var capiLibraryServiceScript=new sn_cloud_api.CAPILibraryServiceScript();
  //var providerJSON = capiLibraryServiceScript.exportCloudProvider(params.id);
  //var dto = new global.JSON().decode(providerJSON);
  return null;
};

CAPIUtils.getCloudAPIScripts = function(params){
  var publishedEntities=[];

  var scriptIncludeGR = new GlideRecord('ecc_agent_script_include');
  scriptIncludeGR.query();
  while (scriptIncludeGR.next()) {
  	var scriptIncludeObj = {};

  	scriptIncludeObj['name'] = scriptIncludeGR.getValue('name');
  	scriptIncludeObj['sys_id'] = scriptIncludeGR.getValue('sys_id');
  	scriptIncludeObj['table'] = scriptIncludeGR.getValue('sys_class_name');
  	scriptIncludeObj['created_by'] = scriptIncludeGR.getValue('sys_created_by');
  	scriptIncludeObj['created_on'] = scriptIncludeGR.getValue('sys_created_on');
  	scriptIncludeObj['updated_by'] = scriptIncludeGR.getValue('sys_updated_by');
  	scriptIncludeObj['updated_on'] = scriptIncludeGR.getValue('sys_updated_on');
  	publishedEntities.push(scriptIncludeObj);
  }


  var scriptFileGR = new GlideRecord('ecc_agent_script_file');
  scriptFileGR.query();
  while (scriptFileGR.next()) {
  	var scriptFileObj = {};

  	scriptFileObj['name'] = scriptFileGR.getValue('name');
  	scriptFileObj['sys_id'] = scriptFileGR.getValue('sys_id');
  	scriptFileObj['table'] = scriptFileGR.getValue('sys_class_name');
  	scriptFileObj['created_by'] = scriptFileGR.getValue('sys_created_by');
  	scriptFileObj['created_on'] = scriptFileGR.getValue('sys_created_on');
  	scriptFileObj['updated_by'] = scriptFileGR.getValue('sys_updated_by');
  	scriptFileObj['updated_on'] = scriptFileGR.getValue('sys_updated_on');
  	publishedEntities.push(scriptFileObj);
  }

  gs.info(JSON.stringify(publishedEntities));
  return publishedEntities;

};

CAPIUtils.exportCloudAPIUpdateSet = function(params){
  try{
  	var capiUpdateSetExporter = new sn_capi.CloudAPIUpdateSetExporter();
  	var createdUpdateSetObject = capiUpdateSetExporter.createUpdateSet(params);
  	var output = {
  		"sysIdList": createdUpdateSetObject.updateSetXMLIdList,
  		"log": createdUpdateSetObject.log,
  		"localUpdateSetList":createdUpdateSetObject.localUpdateSetList,
  		"fileName":createdUpdateSetObject.fileName,
  		"metadata":createdUpdateSetObject.metadata
  	};
  	return output;
  }catch(error){
  	var e = error;
  	var failedMessage = gs.getMessage("Failed to export CloudAPI");
  	var errorMsg = e && e.message ? e.message : failedMessage;
  	throw sn_smd.SMErrorHelper.createScriptAPIError(
  		errorMsg,
  		"CAPIUtils.exportCloudAPIUpdateSet(): Failed to export CloudAPI",
  		error
  	);
  }
};

CAPIUtils.deleteUpdateSet = function(params){
  var capiUpdateSetExporter = new global.CloudAPIUpdateSetExporter();
  capiUpdateSetExporter.deleteUpdateSet(params.updateSetId);
};


CAPIUtils.queryMappingTable = function(tableName, actionName, required) {
  gs.info('CAPIUtils: tableName-->' + tableName);
  gs.info('CAPIUtils: actionName-->' + actionName);
  gs.info('CAPIUtils: required-->' + required);
  var gr = new GlideRecord(tableName);
  gr.addActiveQuery();
  gr.addQuery('name', actionName);
  gr.query();
  if(required && !gr.hasNext()) {
  	throw 'Action mapping record not found';
  }
  //defensive check... should aleady be prevented by a business rule
  gs.info('CAPIUtils: RowCount-->' + gr.getRowCount());
  if(gr.getRowCount() > 1) {
  	throw 'An active mapping record name should be unique';
  }
  return gr;
};

Sys ID

6cfc9e4f0b943200a91f6707b6673ada

Offical Documentation

Official Docs: