Class: EcsDeployer::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/ecs_deployer/client.rb

Constant Summary collapse

PAULING_INTERVAL =
20

Instance Method Summary collapse

Constructor Details

#initialize(cluster_name, options = {}) ⇒ EcsDeployer::Client

Parameters:

  • cluster_name (String)
  • options (Hash) (defaults to: {})

Options Hash (options):

  • :profile (String)
  • :region (String)


14
15
16
17
18
19
20
# File 'lib/ecs_deployer/client.rb', line 14

def initialize(cluster_name, options = {})
  @cluster_name = cluster_name
  @ecs_command = Commander.new(cluster_name, options)
  @family_name = ''
  @revision = ''
  @new_task_definition_arn = ''
end

Instance Method Details

#register_clone_task(service_name) ⇒ String

Parameters:

  • service_name (String)

Returns:

  • (String)

Raises:



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/ecs_deployer/client.rb', line 31

def register_clone_task(service_name)
  detected_service = false

  result = @ecs_command.describe_services(service_name)
  result['services'].each do |service|
    if service['serviceName'] == service_name
      result = @ecs_command.describe_task_definition(service['taskDefinition'])
      @new_task_definition_arn = register_task_process(result['taskDefinition'])
      detected_service = true
      break
    end
  end

  raise ServiceNotFoundError.new("'#{service_name}' service is not found.") unless detected_service

  @new_task_definition_arn
end

#register_task(task_path) ⇒ String

Parameters:

  • task_path (String)

Returns:

  • (String)

Raises:

  • (IOError)


24
25
26
27
# File 'lib/ecs_deployer/client.rb', line 24

def register_task(task_path)
  raise IOError.new("File does not exist. [#{task_path}]") if !File.exist?(task_path)
  register_task_process(YAML.load(File.read(task_path)))
end

#update_service(service_name, wait = true, timeout = 300) ⇒ Object

Parameters:

  • service_name (String)
  • timeout (Fixnum) (defaults to: 300)


51
52
53
54
55
# File 'lib/ecs_deployer/client.rb', line 51

def update_service(service_name, wait = true, timeout = 300)
  register_clone_task(service_name) if @new_task_definition_arn.empty?
  @ecs_command.update_service(service_name, @family_name, @revision)
  wait_for_deploy if wait
end