def create_service(params={})
response = Excon::Response.new
response.status = 200
e = Fog::AWS::ECS::Error
msg = 'ClientException => desiredCount cannot be empty.'
raise e, msg unless desired_count = params['desiredCount']
msg = 'ClientException => serviceName cannot be empty.'
raise e unless service_name = params['serviceName']
msg = 'ClientException => taskDefinition cannot be empty.'
raise e unless task_definition = params['taskDefinition']
owner_id = Fog::AWS::Mock.owner_id
service_path = "service/#{service_name}"
service_arn = Fog::AWS::Mock.arn('ecs', owner_id, service_path, region)
cluster = params['cluster'] || 'default'
if !cluster.match(/^arn:aws:ecs:.+:.+:cluster\/(.+)$/)
cluster_path = "cluster/#{cluster}"
cluster_arn = Fog::AWS::Mock.arn('ecs', owner_id, cluster_path, region)
else
cluster_arn = cluster
end
if params['role']
role = params['role'] if params['role']
if !role.match(/^arn:aws:iam:.*:.*:role\/(.+)$/)
role_path = "role/#{role}"
role_arn = Fog::AWS::Mock.arn('iam', owner_id, role_path, region)
else
role_arn = role
end
end
if !task_definition.match(/^arn:aws:ecs:.+:.+:task-definition\/.+$/)
task_def_path = "task-definition\/#{task_definition}"
task_def_arn = Fog::AWS::Mock.arn('ecs', owner_id, task_def_path, region)
else
task_def_arn = task_definition
end
load_balancers = params['loadBalancers'] || []
service = {
'events' => [],
'serviceName' => service_name,
'serviceArn' => service_arn,
'taskDefinition' => task_def_arn,
'clusterArn' => cluster_arn,
'status' => 'ACTIVE',
'roleArn' => role_arn,
'loadBalancers' => [*load_balancers],
'deployments' => [],
'desiredCount' => desired_count,
'pendingCount' => 0,
'runningCount' => 0
}
service['deployments'] << {
'updatedAt' => Time.now.utc,
'id' => "ecs-svc/#{Fog::Mock.random_numbers(19)}",
'taskDefinition' => task_def_arn,
'status' => 'PRIMARY',
'desiredCount' => desired_count,
'createdAt' => Time.now.utc,
'pendingCount' => 0,
'runningCount' => 0
}
self.data[:services] << service
response.body = {
'CreateServiceResult' => {
'service' => service,
},
'ResponseMetadata' => {
'RequestId' => Fog::AWS::Mock.request_id
}
}
response
end