@@ -381,58 +381,82 @@ function getCostForServices(provider,callback) {
381381 /*This the Dimension that is required to passed for different services*/
382382 var ec2Dim = [ { Name : 'ServiceName' , Value : 'AmazonEC2' } , { Name : 'Currency' , Value : 'USD' } ] ;
383383 var rdsDim = [ { Name : 'ServiceName' , Value : 'AmazonRDS' } , { Name : 'Currency' , Value : 'USD' } ] ;
384- var ec2Cost = 0 , rdsCost = 0 ;
385384 /*Getting the cost of EC2 & RDS for the current day*/
386- cw . getTotalCost ( startDate , endDate , 'Maximum' , ec2Dim , function ( err , presentCost )
387- {
388- if ( err ) {
389- callback ( err , null ) ;
390- }
391- cw . getTotalCost ( startDateOne , endDate , 'Minimum' , ec2Dim , function ( err , yesterdayCost )
392- {
393- if ( err ) {
394- callback ( err , null ) ;
395- }
396- ec2Cost = presentCost [ 'Maximum' ] - yesterdayCost [ 'Minimum' ] ;
397- } ) ;
398- cw . getTotalCost ( startDate , endDate , 'Maximum' , rdsDim , function ( err , presentRdsCost )
399- {
400- if ( err ) {
401- callback ( err , null ) ;
402- }
403- cw . getTotalCost ( startDateOne , endDate , 'Minimum' , rdsDim , function ( err , yesterdayRdsCost )
404- {
405- if ( err ) {
406- callback ( err , null ) ;
385+ async . parallel ( {
386+ ec2Cost :function ( callback ) {
387+ var ec2Cost = 0 ;
388+ cw . getTotalCost ( startDate , endDate , 'Maximum' , ec2Dim , function ( err , presentEC2Cost ) {
389+ if ( err ) {
390+ callback ( err , null ) ;
407391 }
408- rdsCost = presentRdsCost [ 'Maximum' ] - yesterdayRdsCost [ 'Minimum' ] ;
409- var awsResourceCostObject = {
410- organisationId : provider . orgId ,
411- providerId : provider . _id ,
412- providerType : provider . providerType ,
413- providerName : provider . providerName ,
414- resourceType : "serviceCost" ,
415- resourceId : "serviceCost" ,
416- aggregateResourceCost :ec2Cost + rdsCost ,
417- costMetrics : {
418- ec2Cost :ec2Cost ,
419- rdsCost :rdsCost ,
420- currency :'USD' ,
421- symbol :"$"
422- } ,
423- updatedTime : Date . parse ( endDate ) ,
424- startTime : Date . parse ( endDate ) ,
425- endTime : Date . parse ( startDateOne )
426- } ;
427- resourceCost . saveResourceCost ( awsResourceCostObject , function ( err , resourceCostData ) {
428- if ( err ) {
429- callback ( err , null ) ;
430- } else {
431- callback ( null , resourceCostData ) ;
392+ cw . getTotalCost ( startDateOne , endDate , 'Minimum' , ec2Dim , function ( err , yesterdayEC2Cost ) {
393+ if ( err ) {
394+ callback ( err , null ) ;
395+ } else if ( typeof presentEC2Cost === "undefined" && typeof yesterdayEC2Cost === "undefined" ) {
396+ callback ( null , ec2Cost ) ;
397+ } else if ( presentEC2Cost . Maximum && yesterdayEC2Cost . Minimum ) {
398+ ec2Cost = presentEC2Cost [ 'Maximum' ] - yesterdayEC2Cost [ 'Minimum' ] ;
399+ callback ( null , ec2Cost ) ;
400+ } else {
401+ callback ( null , ec2Cost ) ;
432402 }
433- } )
403+ } ) ;
434404 } ) ;
435- } ) ;
405+ } ,
406+ rdsCost :function ( callback ) {
407+ var rdsCost = 0 ;
408+ cw . getTotalCost ( startDate , endDate , 'Maximum' , rdsDim , function ( err , presentRDSCost ) {
409+ if ( err ) {
410+ callback ( err , null ) ;
411+ }
412+ cw . getTotalCost ( startDateOne , endDate , 'Minimum' , rdsDim , function ( err , yesterdayRDSCost ) {
413+ if ( err ) {
414+ callback ( err , null ) ;
415+ } else if ( typeof presentRDSCost === "undefined" && typeof yesterdayRDSCost === "undefined" ) {
416+ callback ( null , rdsCost ) ;
417+ } else if ( presentRDSCost . Maximum && yesterdayRDSCost . Minimum ) {
418+ rdsCost = presentRDSCost [ 'Maximum' ] - yesterdayRDSCost [ 'Minimum' ] ;
419+ callback ( null , rdsCost ) ;
420+ } else {
421+ callback ( null , rdsCost ) ;
422+ }
423+ } ) ;
424+ } ) ;
425+ }
426+
427+ } , function ( err , results ) {
428+ if ( err ) {
429+ callback ( err , null ) ;
430+ return ;
431+ } else {
432+ var awsResourceCostObject = {
433+ organisationId : provider . orgId ,
434+ providerId : provider . _id ,
435+ providerType : provider . providerType ,
436+ providerName : provider . providerName ,
437+ resourceType : "serviceCost" ,
438+ resourceId : "serviceCost" ,
439+ aggregateResourceCost : results . ec2Cost + results . rdsCost ,
440+ costMetrics : {
441+ ec2Cost : results . ec2Cost ,
442+ rdsCost : results . rdsCost ,
443+ currency : 'USD' ,
444+ symbol : "$"
445+ } ,
446+ updatedTime : Date . parse ( endDate ) ,
447+ startTime : Date . parse ( endDate ) ,
448+ endTime : Date . parse ( startDateOne )
449+ } ;
450+ resourceCost . saveResourceCost ( awsResourceCostObject , function ( err , resourceCostData ) {
451+ if ( err ) {
452+ callback ( err , null ) ;
453+ return ;
454+ } else {
455+ callback ( null , resourceCostData ) ;
456+ return ;
457+ }
458+ } )
459+ }
436460 } ) ;
437461}
438462
0 commit comments