def execute(self, context: 'Context'): eks_hook = EksHook( aws_conn_id=self.aws_conn_id, region_name=self.region, ) eks_hook.create_cluster( name=self.cluster_name, roleArn=self.cluster_role_arn, resourcesVpcConfig=self.resources_vpc_config, **self.create_cluster_kwargs, ) if not self.compute: return None self.log.info( "Waiting for EKS Cluster to provision. This will take some time.") countdown = TIMEOUT_SECONDS while eks_hook.get_cluster_state( clusterName=self.cluster_name) != ClusterStates.ACTIVE: if countdown >= CHECK_INTERVAL_SECONDS: countdown -= CHECK_INTERVAL_SECONDS self.log.info( "Waiting for cluster to start. Checking again in %d seconds", CHECK_INTERVAL_SECONDS) sleep(CHECK_INTERVAL_SECONDS) else: message = ( "Cluster is still inactive after the allocated time limit. " "Failed cluster will be torn down.") self.log.error(message) # If there is something preventing the cluster for activating, tear it down and abort. eks_hook.delete_cluster(name=self.cluster_name) raise RuntimeError(message) if self.compute == 'nodegroup': eks_hook.create_nodegroup( clusterName=self.cluster_name, nodegroupName=self.nodegroup_name, subnets=cast(List[str], self.resources_vpc_config.get('subnetIds')), nodeRole=self.nodegroup_role_arn, **self.create_nodegroup_kwargs, ) elif self.compute == 'fargate': eks_hook.create_fargate_profile( clusterName=self.cluster_name, fargateProfileName=self.fargate_profile_name, podExecutionRoleArn=self.fargate_pod_execution_role_arn, selectors=self.fargate_selectors, **self.create_fargate_profile_kwargs, )
def execute(self, context): eks_hook = EksHook( aws_conn_id=self.aws_conn_id, region_name=self.region, ) eks_hook.create_fargate_profile( clusterName=self.cluster_name, fargateProfileName=self.fargate_profile_name, podExecutionRoleArn=self.pod_execution_role_arn, selectors=self.selectors, )