class Rhea::Kubernetes::Commands::Scale
Attributes
command[RW]
Public Class Methods
new(command_attributes)
click to toggle source
# File lib/rhea/kubernetes/commands/scale.rb, line 7 def initialize(command_attributes) self.command = Command.new(command_attributes) end
Public Instance Methods
perform()
click to toggle source
# File lib/rhea/kubernetes/commands/scale.rb, line 11 def perform if is_replication_controller_running? scale_replication_controller else start_replication_controller end end
Private Instance Methods
format_env_vars(env_vars)
click to toggle source
# File lib/rhea/kubernetes/commands/scale.rb, line 96 def format_env_vars(env_vars) hash = env_vars.merge(Rhea.configuration.env_vars) hash.map do |name, value| { 'name' => name, 'value' => value } end end
is_replication_controller_running?()
click to toggle source
# File lib/rhea/kubernetes/commands/scale.rb, line 21 def is_replication_controller_running? api.get_replication_controllers(label_selector: "name=#{command.key}").length > 0 end
parse_command_expression()
click to toggle source
# File lib/rhea/kubernetes/commands/scale.rb, line 78 def parse_command_expression match = command.expression.match(/((?:[A-Z]+=[^\s]+\s+)+)?(.*)/) env_vars_string = match[1] raw_command_expression = match[2] env_vars = {} if env_vars_string.present? env_vars_strings = env_vars_string.strip.split(/\s+/) env_vars_strings.each do |string| name, value = string.split('=') env_vars[name] = value end end { raw_command_expression: raw_command_expression, env_vars: env_vars } end
scale_replication_controller()
click to toggle source
# File lib/rhea/kubernetes/commands/scale.rb, line 72 def scale_replication_controller controller = api.get_replication_controllers(label_selector: "name=#{command.key}").first controller.spec.replicas = command.process_count api.update_replication_controller(controller) end
start_replication_controller()
click to toggle source
# File lib/rhea/kubernetes/commands/scale.rb, line 25 def start_replication_controller parsed_command_expression = parse_command_expression raw_command_expression = parsed_command_expression[:raw_command_expression] env_vars = parsed_command_expression[:env_vars] formatted_env_vars = format_env_vars(env_vars) container_config = { 'name' => command.key, 'image' => command.image, 'env' => formatted_env_vars, 'command' => raw_command_expression.split(/\s+/) }.merge(Rhea.configuration.container_options) controller = Kubeclient::ReplicationController.new controller.metadata = { 'name' => command.key, 'namespace' => NAMESPACE, 'labels' => { 'name' => command.key }, 'annotations' => { 'rhea_command' => command.expression } } controller.spec = { 'replicas' => command.process_count, 'selector' => { 'name' => command.key }, 'template' => { 'metadata' => { 'labels' => { 'name' => command.key }, 'annotations' => { 'rhea_command' => command.expression } }, 'spec' => { 'containers' => [container_config] } } } api.create_replication_controller(controller) end