Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 15 additions & 8 deletions server/app/model/resource-costs/resource-costs.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,17 @@
limitations under the License.
*/

var mongoose = require('mongoose');
var logger = require('_pr/logger')(module);
var Schema = mongoose.Schema;
var mongoose = require('mongoose')
require('mongoose-double')(mongoose)
var logger = require('_pr/logger')(module)

var SchemaTypes = mongoose.Schema.Types
var Schema = mongoose.Schema

// @TODO Date field types to be revised
var ResourceCostsSchema = new Schema({
cost: {
type: Number,
type: SchemaTypes.Double,
required: true
},
currency: {
Expand Down Expand Up @@ -67,7 +70,7 @@ var ResourceCostsSchema = new Schema({
required: false,
trim: true
},
billLineRecordId: {
billLineItemId: {
type: String,
required: true,
trim: true
Expand All @@ -84,6 +87,11 @@ var ResourceCostsSchema = new Schema({
default: 'Other',
trim: true
},
billRecordId: {
type: String,
required: false,
trim: true
},
serviceName: {
type: String,
required: true,
Expand Down Expand Up @@ -123,7 +131,7 @@ var ResourceCostsSchema = new Schema({
}
})

ResourceCostsSchema.index({'organizationId': 1, 'resourceId': 1, 'billLineRecordId': 1,
ResourceCostsSchema.index({'organizationId': 1, 'billLineItemId': 1,
'startTime': 1, 'interval': 1}, {'unique': true})

ResourceCostsSchema.statics.saveResourceCost = function saveResourceCost(resourceCostData, callback) {
Expand All @@ -140,8 +148,7 @@ ResourceCostsSchema.statics.saveResourceCost = function saveResourceCost(resourc
ResourceCostsSchema.statics.upsertResourceCost = function upsertResourceCost(resourceCostData, callback) {
var query = {
organizationId: resourceCostData.organizationId,
resourceId: resourceCostData.resourceId,
billLineRecordId: resourceCostData.billLineRecordId,
billLineItemId: resourceCostData.billLineItemId,
startTime: resourceCostData.startTime,
interval: resourceCostData.interval
}
Expand Down
5 changes: 3 additions & 2 deletions server/app/services/analyticsService.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ analyticsService.aggregateEntityCosts
return appConfig.aws.services[key]
})

var offset = (new Date()).getTimezoneOffset()*60000
var startTime
var interval
switch (period) {
Expand All @@ -49,8 +50,8 @@ analyticsService.aggregateEntityCosts

async.forEach(catalystEntityHierarchy[parentEntity].children, function (childEntity, next0) {
var query = parentEntityQuery
query.startTime = {$gte: Date.parse(startTime)}
query.endTime = {$lte: Date.parse(endTime)}
query.startTime = {$gte: Date.parse(startTime) + offset}
query.endTime = {$lte: Date.parse(endTime) + offset}

async.waterfall([
function(next1) {
Expand Down
7 changes: 4 additions & 3 deletions server/app/services/resourceService.js
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ function updateAWSResourceCostsFromCSV(provider, resources, downlaodedCSVPath, u
var awsBillIndexes = appConfig.aws.billIndexes
var awsServices = appConfig.aws.services
var awsZones = appConfig.aws.zones
var lineNumber = 0

var stream = fs.createReadStream(downlaodedCSVPath)
csv.fromStream(stream, {headers: false}).on('data', function(data) {
Expand All @@ -104,7 +105,8 @@ function updateAWSResourceCostsFromCSV(provider, resources, downlaodedCSVPath, u
resourceCostEntry.lastUpdateTime = Date.parse(updateTime)
resourceCostEntry.interval = 3600
resourceCostEntry.platformDetails.serviceName = data[awsBillIndexes.prod]
resourceCostEntry.billLineRecordId = data[awsBillIndexes.recordId]
resourceCostEntry.billLineItemId = ++lineNumber
resourceCostEntry.platformDetails.billRecordId = data[awsBillIndexes.recordId]

if (data[awsBillIndexes.prod] in awsServices) {
resourceCostEntry.platformDetails.serviceId = awsServices[data[awsBillIndexes.prod]]
Expand Down Expand Up @@ -1132,5 +1134,4 @@ function updateDomainNameForInstance(domainName,publicIP,instanceId,awsSettings,
callback(null,results);
return;
})
}

}
3 changes: 2 additions & 1 deletion server/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,8 @@
"events": "1.1.1",
"moment": "2.14.1",
"json2csv": "3.6.3",
"gridfs-stream":"1.1.1"
"gridfs-stream":"1.1.1",
"mongoose-double": "0.0.1"
},
"devDependencies": {
"grunt": "0.4.5",
Expand Down