class Rollo::Model::ServiceCluster

Public Class Methods

new(ecs_cluster_name, region, ecs_resource = nil) click to toggle source
# File lib/rollo/model/service_cluster.rb, line 9
def initialize(ecs_cluster_name, region, ecs_resource = nil)
  @region = region
  @ecs_cluster_name = ecs_cluster_name
  @ecs_resource = ecs_resource || Aws::ECS::Resource.new(region: region)
  @ecs_cluster = get_ecs_cluster
end

Public Instance Methods

name() click to toggle source
# File lib/rollo/model/service_cluster.rb, line 16
def name
  @ecs_cluster_name
end
replica_services() click to toggle source
# File lib/rollo/model/service_cluster.rb, line 20
def replica_services
  get_ecs_service_arns
      .collect {|arn| Service.new(@ecs_cluster_name, arn, @region)}
      .select(&:is_replica?)
end
with_replica_services(&block) click to toggle source
# File lib/rollo/model/service_cluster.rb, line 26
def with_replica_services(&block)
  all_replica_services = replica_services

  callbacks = Hollerback::Callbacks.new(block)
  callbacks.try_respond_with(
      :start, all_replica_services)

  all_replica_services.each do |service|
    callbacks.try_respond_with(:each_service, service)
  end
end

Private Instance Methods

get_ecs_cluster() click to toggle source
# File lib/rollo/model/service_cluster.rb, line 40
def get_ecs_cluster
  @ecs_resource.client
      .describe_clusters(clusters: [@ecs_cluster_name])
      .clusters[0]
end
get_ecs_service_arns() click to toggle source
# File lib/rollo/model/service_cluster.rb, line 46
def get_ecs_service_arns
  @ecs_resource.client
      .list_services(cluster: @ecs_cluster.cluster_name)
      .inject([]) {|arns, response| arns + response.service_arns}
end