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
log_link(context:, query:)
click to toggle source
# File lib/helpers.rb, line 29 def log_link(context:, query:) link = context[:settings].log_link_format return nil if link.nil? link.gsub! 'APP', context[:app] link.gsub! 'CLUSTER', context[:cluster] link.gsub! 'QUERY', query link 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