export async function handler()

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)
            })
    })
}