module AwsPocketknife::Ecs
Constants
- DELAY_SECONDS
- Logging
- MAX_ATTEMPTS
- STATE_AVAILABLE
- STATE_DEREGISTERED
- STATE_ERROR
- STATE_FAILED
- STATE_INVALID
- STATE_PENDING
Public Class Methods
clone_service(name: '', cluster: '')
click to toggle source
# File lib/aws_pocketknife/ecs.rb, line 122 def clone_service(name: '', cluster: '') d = DateTime.now date_fmt = d.strftime("%d%m%Y_%H%M%S") current_service = describe_services name: name, cluster: cluster new_name = "#{name}-clone-#{date_fmt}" payload = { cluster: cluster, service_name: new_name, task_definition: current_service.task_definition, load_balancers: current_service.load_balancers.to_a, desired_count: current_service.desired_count, role: current_service.role_arn, deployment_configuration: current_service.deployment_configuration.to_h, placement_constraints: current_service.placement_constraints.to_a, placement_strategy: current_service.placement_strategy.to_a, } puts "Cloned service payload:" AwsPocketknife::Ecs.nice_print(object: payload.to_h) create_service payload: payload end
create_service(payload: {})
click to toggle source
# File lib/aws_pocketknife/ecs.rb, line 118 def create_service(payload: {}) ecs_client.create_service(payload) end
describe_clusters(name: '')
click to toggle source
clusters
# File lib/aws_pocketknife/ecs.rb, line 81 def describe_clusters(name: '') ecs_client.describe_clusters({clusters: [name]}).clusters.first end
describe_container_instances(cluster: '', container: '')
click to toggle source
# File lib/aws_pocketknife/ecs.rb, line 38 def describe_container_instances(cluster: '', container: '') ecs_client.describe_container_instances({cluster: cluster, container_instances: [container]}).container_instances.first end
describe_services(name: '', cluster: '')
click to toggle source
services
# File lib/aws_pocketknife/ecs.rb, line 114 def describe_services(name: '', cluster: '') ecs_client.describe_services({cluster: cluster, services: [name]}).services.first end
describe_task_definition(task_definition: '')
click to toggle source
tasks-definitions
# File lib/aws_pocketknife/ecs.rb, line 173 def describe_task_definition(task_definition: '') resp = ecs_client.describe_task_definition({task_definition: task_definition}) return resp.task_definition.container_definitions.first end
describe_tasks(cluster: '', tasks: [])
click to toggle source
# File lib/aws_pocketknife/ecs.rb, line 185 def describe_tasks cluster: '', tasks: [] if tasks.empty? return [] else return ecs_client.describe_tasks({ cluster: cluster, tasks: tasks, }) end end
drain_instances(cluster: '', names: '')
click to toggle source
set a list of instances to draining. instances is a comma delimited string
# File lib/aws_pocketknife/ecs.rb, line 30 def drain_instances(cluster: '', names: '') ecs_client.update_container_instances_state({ cluster: cluster, container_instances: names.split(';'), # required status: "DRAINING", # required, accepts ACTIVE, DRAINING }) end
get_clusters(next_token: "", max_results: 100)
click to toggle source
# File lib/aws_pocketknife/ecs.rb, line 206 def get_clusters(next_token: "", max_results: 100) ecs_client.list_clusters({ max_results: max_results, next_token: next_token }) end
get_containers(cluster: "", next_token: "", max_results: 100)
click to toggle source
# File lib/aws_pocketknife/ecs.rb, line 213 def get_containers(cluster: "", next_token: "", max_results: 100) ecs_client.list_container_instances({ max_results: max_results, cluster: cluster, next_token: next_token }) end
get_services(next_token: "", max_results: 100, cluster: '')
click to toggle source
helpers
# File lib/aws_pocketknife/ecs.rb, line 198 def get_services(next_token: "", max_results: 100, cluster: '') ecs_client.list_services({ max_results: max_results, cluster: cluster, next_token: next_token, }) end
list_clusters(max_results: 50)
click to toggle source
# File lib/aws_pocketknife/ecs.rb, line 85 def list_clusters(max_results: 50) clusters_list = [] responses = [] clusters = get_clusters max_results: max_results responses << clusters.cluster_arns next_token = clusters.next_token while true break if next_token.nil? or next_token.empty? resp = get_clusters(next_token: next_token, max_results: max_results) responses << resp.cluster_arns next_token = resp.next_token end responses.flatten! responses.each do |cluster| cluster_map = {} cluster_map[:name] = cluster.split('/')[1] info = describe_clusters name: cluster cluster_map[:info] = info clusters_list << cluster_map end return clusters_list end
list_container_instances(cluster: '', max_results: 50)
click to toggle source
list container instances
# File lib/aws_pocketknife/ecs.rb, line 43 def list_container_instances(cluster: '', max_results: 50) containers_list = [] responses = [] containers = get_containers cluster: cluster, max_results: max_results responses << containers.container_instance_arns next_token = containers.next_token while true break if next_token.nil? or next_token.empty? resp = get_containers(cluster: cluster, next_token: next_token, max_results: max_results) responses << resp.container_instance_arns next_token = resp.next_token end responses.flatten! responses.each do |container| container_map = {} task_list = [] container_map[:name] = container.split('/')[1] info = describe_container_instances cluster: cluster, container: container container_map[:info] = info #container_map[:tasks] = list_container_tasks(cluster: cluster, container_name: container_map[:name]) containers_list << container_map end return containers_list end
list_container_tasks(cluster: '', container_name: '')
click to toggle source
list tasks in container instance
# File lib/aws_pocketknife/ecs.rb, line 73 def list_container_tasks(cluster: '', container_name: '') tasks_list = [] tasks = list_tasks cluster: cluster, container_instance: container_name describe_tasks(cluster: cluster, tasks: tasks) end
list_services(cluster: '', max_results: 50)
click to toggle source
# File lib/aws_pocketknife/ecs.rb, line 143 def list_services(cluster: '', max_results: 50) services_list = [] responses = [] services = get_services max_results: max_results, cluster: cluster responses << services.service_arns next_token = services.next_token while true break if next_token.nil? or next_token.empty? resp = get_services(next_token: next_token, max_results: max_results, cluster: cluster) responses << resp.service_arns next_token = resp.next_token end responses.flatten! responses.each do |service| service_map = {} service_map[:name] = service.split('/')[1] info = describe_services name: service, cluster: cluster service_map[:info] = info service_map[:task_definition] = describe_task_definition task_definition: info.task_definition services_list << service_map end return services_list end
list_tasks(cluster: '', container_instance: '')
click to toggle source
# File lib/aws_pocketknife/ecs.rb, line 178 def list_tasks cluster: '', container_instance: '' ecs_client.list_tasks({ cluster: cluster, container_instance: container_instance, }).task_arns end