Class: Pfab::Templates::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/pfab/templates/base.rb

Direct Known Subclasses

Cron, Daemon, Job, Web

Instance Method Summary collapse

Constructor Details

#initialize(data) ⇒ Base

Returns a new instance of Base.



4
5
6
# File 'lib/pfab/templates/base.rb', line 4

def initialize(data)
  @data = data
end

Instance Method Details

#app_varsObject



12
13
14
# File 'lib/pfab/templates/base.rb', line 12

def app_vars
  @data["application_yaml"]["deployables"][@data["props"][:deployable]]
end

#cpu(req_type) ⇒ Object



21
22
23
24
25
# File 'lib/pfab/templates/base.rb', line 21

def cpu(req_type)
  default_cpu_string = @data["config"]["default_cpu_string"] || "50m/250m"
  (request, limit) = (get("cpu") || default_cpu_string).split("/")
  req_type == :limit ? limit : request
end

#env_varsObject



46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/pfab/templates/base.rb', line 46

def env_vars

  env_vars = [
    { name: "DEPLOYED_NAME", value: @data['deployed_name'] },
  ]

  load_env_vars(env_vars, @data["application_yaml"][:environment])
  load_env_vars(env_vars, @data["application_yaml"][@data["env"]][:environment])

  load_secrets(env_vars, @data["application_yaml"][:env_secrets])
  load_secrets(env_vars, @data["application_yaml"][@data["env"]][:env_secrets])

  env_vars
end

#get(key) ⇒ Object



16
17
18
# File 'lib/pfab/templates/base.rb', line 16

def get(key)
  app_vars.dig(@data["env"], key) || app_vars[key]
end

#image_nameObject



8
9
10
# File 'lib/pfab/templates/base.rb', line 8

def image_name
  "#{@data['container_repository']}/#{@data['image_name']}:#{@data['sha']}"
end

#load_env_vars(env_vars, hash) ⇒ Object



61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/pfab/templates/base.rb', line 61

def load_env_vars(env_vars, hash)
  (hash || {}).each do |env_var_name, v|
    if v.start_with? "field/"
      (_, field_name) = v.split("/")
      env_vars << { name: env_var_name, valueFrom: {
        fieldRef: { fieldPath: field_name }
      } }
    else
      env_vars << { name: env_var_name, value: v }
    end

  end
end

#load_secrets(env_vars, hash) ⇒ Object



75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/pfab/templates/base.rb', line 75

def load_secrets(env_vars, hash)
  (hash || {}).each do |env_var_name, v|
    (ref, key) = v.split("/")
    env_vars << { name: env_var_name,
                  valueFrom: {
                    secretKeyRef: {
                      name: ref,
                      key: key
                    }
                  } }
  end
end

#memory(req_type) ⇒ Object



27
28
29
30
31
# File 'lib/pfab/templates/base.rb', line 27

def memory(req_type)
  default_memory_string = @data["config"]["default_memory_string"] || "256Mi/500Mi"
  (request, limit) = (get("memory") || default_memory_string).split("/")
  req_type == :limit ? limit : request
end

#resourcesObject



33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/pfab/templates/base.rb', line 33

def resources
  {
    requests: {
      cpu: cpu(:request),
      memory: memory(:request),
    },
    limits: {
      cpu: cpu(:limit),
      memory: memory(:limit),
    }
  }
end