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