class Seira::Helpers

Public Class Methods

extract_ip_if_present(ip_address) click to toggle source
# File lib/helpers.rb, line 68
def extract_ip_if_present(ip_address)
  return nil if ip_address.nil?

  ip_address['ipAddress']
end
fetch_pod(name, context:) click to toggle source
# File lib/helpers.rb, line 24
def fetch_pod(name, context:)
  output = Seira::Commands.kubectl("get pod #{name} -o json", context: context, return_output: true)
  JSON.parse(output) unless output.empty?
end
fetch_pods(filters:, context:) click to toggle source
# File lib/helpers.rb, line 18
def fetch_pods(filters:, context:)
  filter_string = { app: context[:app] }.merge(filters).map { |k, v| "#{k}=#{v}" }.join(',')
  output = Seira::Commands.kubectl("get pods -o json --selector=#{filter_string}", context: context, return_output: true)
  JSON.parse(output)['items']
end
get_current_replicas(deployment:, context:) click to toggle source
# File lib/helpers.rb, line 49
def get_current_replicas(deployment:, context:)
  output = Seira::Commands.kubectl("get deployment #{deployment} -o json", context: context, return_output: true)
  JSON.parse(output)['spec']['replicas']
end
get_secret(key:, context:) click to toggle source
# File lib/helpers.rb, line 38
def get_secret(key:, context:)
  Secrets.new(app: context[:app], action: 'get', args: [], context: context).get(key)
end
get_seira_app_config(context:) click to toggle source
# File lib/helpers.rb, line 42
def get_seira_app_config(context:)
  yaml_file_path = "kubernetes/#{context[:cluster]}/#{context[:app]}/.seira.app.yaml"
  YAML.load_file(yaml_file_path)
rescue
  fail "Failed to load the configuration file at #{yaml_file_path}. Please add configuration file and retry."
end
rails_env(context:) click to toggle source
# File lib/helpers.rb, line 8
def rails_env(context:)
  parsed_env = context[:settings].settings['seira']['clusters'][context[:cluster]]['environment']
  parsed_env = context[:cluster] if parsed_env.nil?
  if parsed_env == 'internal'
    'production'
  else
    parsed_env
  end
end
shell_username() click to toggle source
# File lib/helpers.rb, line 54
def shell_username
  `whoami`
rescue
  'unknown'
end
sql_ips(name, context:) click to toggle source
# File lib/helpers.rb, line 60
def sql_ips(name, context:)
  describe_command = "sql instances describe #{name}"
  json = JSON.parse(Seira::Commands.gcloud(describe_command, context: context, format: :json))
  private_ip = extract_ip_if_present(json['ipAddresses'].find { |address| address['type'] == 'PRIVATE' })
  public_ip = extract_ip_if_present(json['ipAddresses'].find { |address| address['type'] == 'PRIMARY' })
  { private: private_ip, public: public_ip }
end