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
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ <h4 class="modal-title" ng-show="showARMInputs"> Enter ARM Deployment Name</h4>
<button type="button" class="btn cat-btn-cancel" ng-click="cancel()">
Cancel
</button>
<input type="submit" class="btn cat-btn-update" ng-disabled="cftForm.stackInpt.$dirty && cftForm.stackInpt.$invalid" ng-click="launchBP()" value="Ok" />
<input type="submit" class="btn cat-btn-update" ng-disabled="cftForm.stackInpt.$dirty && cftForm.stackInpt.$invalid" ng-click="cftSubmitHandler()" value="Ok" />
</div>
<div ng-show="showBlueprintInputs ">
<button type="button" class="btn cat-btn-cancel" ng-click="cancel()">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,9 @@
launchHelper.launch();
}
};
$scope.confirmCFTLaunch = function(){
$scope.cftSubmitHandler = function(){
launchHelper.launch();
};
$scope.cftSubmitHandler = function(valid){
if(valid){
$scope.confirmCFTLaunch();
}
};
$scope.launchBPWithDomainName = function(){
launchHelper.launch();
};
Expand Down
2 changes: 1 addition & 1 deletion client/htmls/private/js/blueprintLaunch.js
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ function blueprintLaunchDesign(data) {
} else {
var blueprintId = $('#modalSelectEnvironment').find('#selectedVersion').val();
launchBP(blueprintId, stackName,domainName);
$('#cftContainer').modal('hide');
$('#domainNameContainer').modal('hide');
e.preventDefault();
return false;
}
Expand Down
6 changes: 3 additions & 3 deletions server/app/cronjobs/provider-sync/AWSProviderSync.js
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ function awsProviderSyncForProvider(provider,orgName) {
resourceService.getEC2InstancesInfo(provider,orgName, next);
},
function (instances, next) {
saveEC2Data(instances, next);
saveEC2Data(instances,provider, next);
},
function(instances,next){
async.parallel({
Expand Down Expand Up @@ -105,7 +105,7 @@ function awsProviderSyncForProvider(provider,orgName) {
});
};

function saveEC2Data(ec2Info, callback){
function saveEC2Data(ec2Info,provider, callback){
var count = 0;
if(ec2Info.length === 0) {
return callback(null, ec2Info);
Expand All @@ -118,7 +118,7 @@ function saveEC2Data(ec2Info, callback){
count++;
return;
}else if (managedInstances.length > 0) {
instanceService.instanceSyncWithAWS(managedInstances[0]._id,ec2, function(err, updateInstanceData) {
instanceService.instanceSyncWithAWS(managedInstances[0]._id,ec2,provider, function(err, updateInstanceData) {
if (err) {
logger.error(err);
count++;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -560,7 +560,7 @@ AWSInstanceBlueprintSchema.methods.launch = function(launchParams, callback) {
timestamp: timestampEnded
});
if(typeof domainName !== 'undefined' && domainName !== '' && domainName !== null && domainName !== 'null') {
resourceService.updateDomainNameForInstance(domainName, instance.instanceIP, awsSettings, function (err, updateDomainName) {
resourceService.updateDomainNameForInstance(domainName, instance.instanceIP,instance.id, awsSettings, function (err, updateDomainName) {
if (err) {
logger.error("resourceService.updateDomainNameForInstance Failed ==>", err);
return;
Expand Down
18 changes: 18 additions & 0 deletions server/app/model/classes/instance/instance.js
Original file line number Diff line number Diff line change
Expand Up @@ -331,6 +331,7 @@ var InstanceSchema = new Schema({
required: false,
trim: true
},
route53HostedParams: [Schema.Types.Mixed],
isDeleted: {
type: Boolean,
required: false,
Expand Down Expand Up @@ -2176,6 +2177,23 @@ var InstancesDao = function() {
}
});
};

this.updatedRoute53HostedZoneParam = function(instanceId,route53HostedZoneParams,callback){
Instances.update({
"_id": ObjectId(instanceId)
}, {
$set: {
route53HostedParams:route53HostedZoneParams
}
}, function(err, data) {
if (err) {
logger.error("Failed to update managed Instance status data", err);
callback(err, null);
return;
}
callback(null, data);
});
};
};

module.exports = new InstancesDao();
70 changes: 60 additions & 10 deletions server/app/services/instanceService.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ var Cryptography = require('../lib/utils/cryptography');
var tagsModel = require('_pr/model/tags/tags.js');
var resourceCost = require('_pr/model/resource-costs-deprecated/resource-costs-deprecated.js');
var resourceUsage = require('_pr/model/resource-metrics/resource-metrics.js');
var Route53 = require('_pr/lib/route53.js');

var async = require('async');
var logsDao = require('_pr/model/dao/logsdao.js');
Expand Down Expand Up @@ -1305,23 +1306,27 @@ function removeInstancesByProviderId(providerId, callback) {
})
}

function instanceSyncWithAWS(instanceId,instanceData,callback){
function instanceSyncWithAWS(instanceId,instanceData,providerDetails,callback){
async.waterfall([
function(next){
instancesModel.getInstanceById(instanceId,next);
},
function(instances,next){
var instance = instances[0];
var routeHostedZoneParamList = [];
if(instance.instanceState !== instanceData.state && instance.bootStrapStatus ==='success') {
var timestampStarted = new Date().getTime();
var user = instance.catUser ? instance.catUser : 'superadmin';
var action ='';
if(instanceData.state === 'stopped' || instanceData.state === 'stopping'){
action = 'Stop';
}else if(instanceData.state === 'terminated'){
action ='Terminated'
action ='Terminated';
if(instance.route53HostedParams){
routeHostedZoneParamList = instance.route53HostedParams;
}
}else if(instanceData.state === 'shutting-down'){
action ='Shutting-Down'
action ='Shutting-Down';
}else{
action ='Start';
};
Expand All @@ -1347,18 +1352,63 @@ function instanceSyncWithAWS(instanceId,instanceData,callback){
logger.error("Failed to create or update instanceLog: ", err);
next(err, null);
}
next(null, logData);
next(null, routeHostedZoneParamList);
});
})
}else {
createOrUpdateInstanceLogs(instance,instanceData.state,action,user,timestampStarted,next);
createOrUpdateInstanceLogs(instance,instanceData.state,action,user,timestampStarted,routeHostedZoneParamList,next);
}
}else{
next(null,instances);
next(null,routeHostedZoneParamList);
}
},
function(instanceLogData,next) {
instancesModel.updateInstanceStatus(instanceId,instanceData, next);
function(paramList,next) {
async.parallel({
instanceDataSync: function(callback){
instancesModel.updateInstanceStatus(instanceId,instanceData,callback);
},
route53Sync: function(callback){
if(paramList.length > 0){
var cryptoConfig = appConfig.cryptoSettings;
var cryptography = new Cryptography(cryptoConfig.algorithm, cryptoConfig.password);
var decryptedAccessKey = cryptography.decryptText(providerDetails.accessKey,
cryptoConfig.decryptionEncoding, cryptoConfig.encryptionEncoding);
var decryptedSecretKey = cryptography.decryptText(providerDetails.secretKey,
cryptoConfig.decryptionEncoding, cryptoConfig.encryptionEncoding);
var route53Config = {
access_key: decryptedAccessKey,
secret_key: decryptedSecretKey,
region:'us-west-1'
};
var route53 = new Route53(route53Config);
var count = 0;
for(var i = 0; i < paramList.length;i++){
(function(params){
params.ChangeBatch.Changes[0].Action = 'DELETE';
route53.changeResourceRecordSets(params,function(err,data){
count++;
if(err){
callback(err,null);
}
if(count === paramList.length){
callback(null,paramList);
}
});
})(paramList[i]);

}
}else{
callback(null,paramList);
}
}
},function(err,results){
if(err){
next(err);
}else{
next(null,results);
}
})

}
], function(err,results){
if (err) {
Expand All @@ -1369,7 +1419,7 @@ function instanceSyncWithAWS(instanceId,instanceData,callback){
})
}

function createOrUpdateInstanceLogs(instance,instanceState,action,user,timestampStarted,next){
function createOrUpdateInstanceLogs(instance,instanceState,action,user,timestampStarted,routeHostedZoneParamList,next){
var actionLog = instancesModel.insertInstanceStatusActionLog(instance._id, user, instanceState, timestampStarted);
var actionStatus = 'success';
var logReferenceIds = [instance._id, actionLog._id];
Expand Down Expand Up @@ -1409,6 +1459,6 @@ function createOrUpdateInstanceLogs(instance,instanceState,action,user,timestamp
logger.error("Failed to create or update instanceLog: ", err);
next(err, null);
}
next(null, logData);
next(null, routeHostedZoneParamList);
});
}
13 changes: 10 additions & 3 deletions server/app/services/resourceService.js
Original file line number Diff line number Diff line change
Expand Up @@ -839,12 +839,12 @@ function getRDSInstancesInfo(provider,orgName,callback) {
cryptoConfig.decryptionEncoding, cryptoConfig.encryptionEncoding);
var decryptedSecretKey = cryptography.decryptText(provider.secretKey,
cryptoConfig.decryptionEncoding, cryptoConfig.encryptionEncoding);
var s3Config = {
var rdsConfig = {
access_key: decryptedAccessKey,
secret_key: decryptedSecretKey,
region: "us-west-1"
};
var rds = new RDS(s3Config);
var rds = new RDS(rdsConfig);
rds.getRDSDBInstances(function(err,dbInstances){
if(err){
logger.error(err);
Expand Down Expand Up @@ -1103,7 +1103,7 @@ function getStartTime(endTime, period){
return dateUtil.getDateInUTC(subtractedDate);
}

function updateDomainNameForInstance(domainName,publicIP,awsSettings,callback){
function updateDomainNameForInstance(domainName,publicIP,instanceId,awsSettings,callback){
var route53 = new Route53(awsSettings);
async.waterfall([
function(next){
Expand Down Expand Up @@ -1206,6 +1206,13 @@ function updateDomainNameForInstance(domainName,publicIP,awsSettings,callback){
}else{
next(null,paramList);
}
},
function(hostedParamList,next){
if(hostedParamList.length > 0){
instancesModel.updatedRoute53HostedZoneParam(instanceId,hostedParamList,next);
}else{
next(null,hostedParamList);
}
}
],function(err,results){
if(err){
Expand Down