Name

sn_cmp.PriceDiscoveryUtil

Description

No description available

Script

var PriceDiscoveryUtil = Class.create();
  PriceDiscoveryUtil.prototype = {
    initialize: function(provider) {
        this.provider = provider;
    },

    getDatacentersByProvider : function () {
        var datacenters = {};
        var resource;

        var providerGR = new GlideRecord ('sn_capi_provider');
        providerGR.addQuery('sys_id', this.provider);
        providerGR.query();
        
  	  if (providerGR.next()) {
  		  var resourceRefCI = providerGR.getValue('datacenter_class');

  		  var resourceBlockGR = new GlideRecord('sn_cmp_rb_resourceblock');
  		  resourceBlockGR.addQuery('refcitype', resourceRefCI);
  		  resourceBlockGR.query();
  		  
  		  if (resourceBlockGR.next()) {
  			  resource = resourceBlockGR.getValue('name');
  			  if (resource == 'AWS Datacenter')
  				  datacenters = this.getAWSDatacentersAssociatedWithCloudAccounts();
  			  else if (resource == 'Azure Datacenter')
  				  datacenters = ['West US']; 
  		  }	  
        }
  	  
        return {'resource' : resource, 'locations' : datacenters};
    },

    getDiscoveryPropertiesByProvider : function () {
        var discoveryProperties = {};
        var discoverPropertyGR = new GlideRecord('sn_cmp_price_discovery_property');
        discoverPropertyGR.addQuery('provider', this.provider);
        discoverPropertyGR.query();
        while (discoverPropertyGR.next()){
            discoveryProperties[discoverPropertyGR.getDisplayValue('offer')+''] =  discoverPropertyGR.getValue('url')+'';
        }
        return discoveryProperties;
    },
  	
    /*
     * Returns a distinct list of datacenters across service accounts
     * which the user has selected
    */
    getAWSDatacentersAssociatedWithCloudAccounts: function() {
  	  var awsDatacenters = [];
  	  var ga = new GlideAggregate('sn_cmp_ca_assc_datacenter');
  	  ga.groupBy('ldc_id');
  	  ga.addQuery('ldc_id.sys_class_name', 'cmdb_ci_aws_datacenter');

  	  ga.query();

  	  while (ga.next())
  		  awsDatacenters.push(ga.getDisplayValue('ldc_id'));
  	  
  	  return awsDatacenters;
    },

    createOrder : function (order) {
        var orderScript = new sn_cmp_api.OrderServiceScript();
        orderScript.submitOrder(order);
    },
  type: 'PriceDiscoveryUtil'
};

Sys ID

bbd628ae0bd00300a682aac125673acc

Offical Documentation

Official Docs: