All files new-task-registered.ts

0% Statements 0/15
100% Branches 0/0
0% Functions 0/6
0% Lines 0/15

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57                                                                                                                 
import {Observable} from 'rxjs'
import ECS from 'aws-sdk/clients/ecs'
 
import {DOCKERLESS_EVENT} from '@utils/constants'
import {toId} from '@utils/string-utils'
import {GlobalDockerlessState} from '@src/dockerless-state'
import {ContainerValue} from '@utils/types/dockerless-config'
 
const newTaskRegistered = (ecsClient: ECS, container: ContainerValue): Observable<DOCKERLESS_EVENT> =>
	new Observable(subscriber => {
		const registerNewTaskDefinition = async () => {
			const currentTask = (
				await ecsClient
					.describeTaskDefinition({
						taskDefinition: `${toId(GlobalDockerlessState.config.serviceName)}-${toId(
							container.containerName
						)}-${GlobalDockerlessState.stage}`
					})
					.promise()
			).taskDefinition
 
			await ecsClient
				.registerTaskDefinition({
					containerDefinitions: currentTask.containerDefinitions,
					family: currentTask.family,
					taskRoleArn: currentTask.taskRoleArn,
					executionRoleArn: currentTask.executionRoleArn,
					cpu: currentTask.cpu,
					memory: currentTask.memory,
					networkMode: currentTask.networkMode,
					volumes: currentTask.volumes,
					requiresCompatibilities: currentTask.requiresCompatibilities
				})
				.promise()
 
			await ecsClient
				.updateService({
					cluster: `${toId(GlobalDockerlessState.config.serviceName)}-${GlobalDockerlessState.stage}`,
					service: `${toId(GlobalDockerlessState.config.serviceName)}-${toId(container.containerName)}-${
						GlobalDockerlessState.stage
					}`,
					taskDefinition: `${toId(GlobalDockerlessState.config.serviceName)}-${toId(
						container.containerName
					)}-${GlobalDockerlessState.stage}`,
					desiredCount: container.desiredInstances
				})
				.promise()
		}
 
		registerNewTaskDefinition()
			.then(() => subscriber.next(DOCKERLESS_EVENT.newTaskRevisionRegisterSuccess))
			.catch(err => subscriber.error(err))
			.finally(() => subscriber.complete())
	})
 
export default newTaskRegistered