Exemplo n.º 1
0
 instance:function(callback){
     instancesDao.getInstanceByProviderId(providerId,function(err,instances){
         if(err){
             callback(err,null);
         }else if(instances.length > 0){
             var instanceCount = 0;
             for(var j = 0;j < instances.length;j++){
                 (function(instance){
                    if(ec2InstanceIds.indexOf(instance.platformId) !== -1){
                        instanceCount++;
                        if(instanceCount === instances.length){
                            callback(null,instances);
                            return;
                        }
                    }else{
                        instancesDao.removeTerminatedInstanceById(instance._id,function(err,data){
                            if(err){
                                instanceCount++;
                                logger.error(err);
                                return;
                            }
                            instanceCount++;
                            var timestampStarted = new Date().getTime();
                            var user = instance.catUser ? instance.catUser : '******';
                            var actionLog = instancesDao.insertInstanceStatusActionLog(instance._id, user,'terminated', timestampStarted);
                            logsDao.insertLog({
                                instanceId:instance._id,
                                instanceRefId:actionLog._id,
                                err: false,
                                log: "Instance : terminated",
                                timestamp: timestampStarted
                            });
                            var instanceLog = {
                                actionId: actionLog._id,
                                instanceId: instance._id,
                                orgName: instance.orgName,
                                bgName: instance.bgName,
                                projectName: instance.projectName,
                                envName: instance.environmentName,
                                status: 'terminated',
                                actionStatus: "success",
                                platformId: instance.platformId,
                                blueprintName: instance.blueprintData.blueprintName,
                                data: instance.runlist,
                                platform: instance.hardware.platform,
                                os: instance.hardware.os,
                                size: instance.instanceType,
                                user: user,
                                createdOn: new Date().getTime(),
                                startedOn: new Date().getTime(),
                                providerType: instance.providerType,
                                action: 'Terminated',
                                logs: []
                            };
                            instanceLogModel.createOrUpdate(actionLog._id, instance._id, instanceLog, function(err, logData) {
                                if (err) {
                                    logger.error("Failed to create or update instanceLog: ", err);
                                }
                            });
                            noticeService.notice("system", {
                                title: "AWS Instance : terminated",
                                body: "AWS Instance "+instance.platformId+" is Terminated."
                            }, "success",function(err,data){
                                if(err){
                                    logger.error("Error in Notification Service, ",err);
                                }
                            });
                            if(instanceCount === instances.length){
                                callback(null,instances);
                                return;
                            }
                        })
                    }
                     
                 })(instances[j]);
             }
         }else{
             callback(null,instances);
         }
     });
 },
Exemplo n.º 2
0
 instance:function(callback){
     instancesDao.getInstanceByProviderId(providerId,function(err,instances){
         if(err){
             callback(err,null);
         }else if(instances.length > 0){
             var instanceCount = 0;
             for(var j = 0;j < instances.length;j++){
                 (function(instance){
                    if(ec2InstanceIds.indexOf(instance.platformId) !== -1){
                        instanceCount++;
                        if(instanceCount === instances.length){
                            callback(null,instances);
                            return;
                        }
                    }else{
                        instancesDao.removeTerminatedInstanceById(instance._id,function(err,data){
                            if(err){
                                instanceCount++;
                                logger.error(err);
                                return;
                            }
                            instanceCount++;
                            var timestampStarted = new Date().getTime();
                            var user = instance.catUser ? instance.catUser : '******';
                            var actionLog = instancesDao.insertInstanceStatusActionLog(instance._id, user,'terminated', timestampStarted);
                            var logReferenceIds = [instance._id, actionLog._id];
                            logsDao.insertLog({
                                referenceId: logReferenceIds,
                                err: false,
                                log: "Instance : terminated",
                                timestamp: timestampStarted
                            });
                            var instanceLog = {
                                actionId: actionLog._id,
                                instanceId: instance._id,
                                orgName: instance.orgName,
                                bgName: instance.bgName,
                                projectName: instance.projectName,
                                envName: instance.environmentName,
                                status: 'terminated',
                                actionStatus: "success",
                                platformId: instance.platformId,
                                blueprintName: instance.blueprintData.blueprintName,
                                data: instance.runlist,
                                platform: instance.hardware.platform,
                                os: instance.hardware.os,
                                size: instance.instanceType,
                                user: user,
                                createdOn: new Date().getTime(),
                                startedOn: new Date().getTime(),
                                providerType: instance.providerType,
                                action: 'Terminated',
                                logs: []
                            };
                            instanceLogModel.createOrUpdate(actionLog._id, instance._id, instanceLog, function(err, logData) {
                                if (err) {
                                    logger.error("Failed to create or update instanceLog: ", err);
                                }
                            });
                            var domainName = instance.domainName?instance.domainName:null;
                            if(domainName !== null) {
                                var resourceObj = {
                                    stackStatus:"DELETED"
                                }
                                var resourceMapService = require('_pr/services/resourceMapService.js');
                                resourceMapService.updateResourceMap(domainName, resourceObj, function (err, resourceMap) {
                                    if (err) {
                                        logger.error("Error in updating Resource Map.", err);
                                    }
                                });
                            }
                            if(instanceCount === instances.length){
                                callback(null,instances);
                                return;
                            }
                        })
                    }
                     
                 })(instances[j]);
             }
         }else{
             callback(null,instances);
         }
     });
 },