Name

global.ServiceMappingUtils

Description

Utils for Service Mapping to Service Modeling synchronization

Script

var ServiceMappingUtils = Class.create();
ServiceMappingUtils.prototype = {
  initialize: function() {
  },

  resetModel: function(bsGr) {
  	// If flag is off, services will only be removed and will not be created
  	if (GlideProperties.getBoolean('sa.service_modeling.use', true))
  		reset(bsGr);
  },

  removeFromModel: function(bsGr) {
  	remove(bsGr);
  },

  type: 'ServiceMappingUtils'
};

var manager = new SNC.ServiceModelingIntegrationManager();

function reset(bsGr) {
  remove(bsGr);
  create(bsGr);
}

function remove(bsGr) {
  var layerId = bsGr.getValue('layer');
  if (layerId != null) {
  	// Here we force removal, i.e. we ignore the sa.service_modeling.use flag
  	manager.forceRemoveBusinessService(bsGr);
  }
}

function create(bsGr) {
  var layerId = manager.createBusinessService(bsGr);
  if (!layerId) {
  	gs.error("ServiceMappingUtils.resetModel() aborted: failed to retrieve the service layer.");
  	return;
  }

  var bsId = bsGr.getValue('sys_id');
  addEntryPoints(bsId, layerId);
  addBoundaries(bsId, layerId);
}

function addEntryPoints(bsId, layerId) {
  var m2mgr = new GlideRecord('sa_m2m_service_entry_point');
  m2mgr.addQuery('cmdb_ci_service',bsId);
  m2mgr.query();
  while (m2mgr.next()) {
  	manager.addEntryPoint(bsId,m2mgr.getValue('cmdb_ci_endpoint'));
  }

  recompute(layerId);
}

function addBoundaries(bsId, layerId) {
  if (!pm.isActive("com.snc.service-mapping")) {
  	//debug message will appear on UI page after Session Debug > Enable All
  	gs.debug("Skipping ServiceMappingUtils.addBoundaries: plugin com.snc.service-mapping is not active.");
  	return;
  }

  var epList = new GlideStringList();
  var m2mgr = new GlideRecord('sa_m2m_boundary_ep_service');
  m2mgr.addQuery('service',bsId);
  m2mgr.query();
  while (m2mgr.next()) {
  	epList.add(m2mgr.getValue('endpoint'));
  }

  if (!epList.isEmpty()) {
  	manager.markBoundaryEndpoints(epList, bsId, null, null);
  	recompute(layerId);
  }
}


function recompute(layerId) {
  var grLayer = new GlideRecord('svc_layer');
  if (grLayer.get(layerId)) {
  	SNC.ServiceMappingFactory.recomputeLayer(grLayer);
  }
}

Sys ID

f7b11d00ff020200ab8fffffffffff29

Offical Documentation

Official Docs: