in src/clusterSizeCheck.ts [8:41]
export async function handler(event: AddNodeResponse): Promise<TargetAndNewNodeResponse> {
const asg = await getASG(event.asgName)
const instanceIds = asg.Instances.map(i => i.InstanceId)
const newestInstance = await getSpecificInstance(instanceIds, findNewestInstance)
const elasticsearchClient = new Elasticsearch(event.targetElasticSearchNode.ec2Instance.id)
const newestNode = elasticsearchClient.getElasticsearchNode(newestInstance)
return new Promise<TargetAndNewNodeResponse>((resolve, reject) => {
elasticsearchClient.getClusterHealth()
.then((clusterStatus: ElasticsearchClusterStatus) => {
const nodesInCluster = clusterStatus.number_of_nodes;
if (nodesInCluster === event.expectedClusterSize) {
return newestNode;
} else {
const error = `Found ${nodesInCluster} nodes but expected to find ${event.expectedClusterSize}`;
console.log(error);
reject(error)
}
})
.then( (newestElasticsearchNode: ElasticsearchNode) => {
const response: TargetAndNewNodeResponse = {
"asgName": event.asgName,
"targetElasticSearchNode": event.targetElasticSearchNode,
"newestElasticsearchNode": newestElasticsearchNode
};
resolve(response);
})
.catch( error => {
console.log(`Failed to get cluster status due to: ${error}`);
reject(error)
})
})
}