Class: Nvoi::Utils::Namer

Inherits:
Object
  • Object
show all
Defined in:
lib/nvoi/utils/namer.rb

Overview

Namer handles resource naming and inference

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ Namer

Returns a new instance of Namer.



9
10
11
# File 'lib/nvoi/utils/namer.rb', line 9

def initialize(config)
  @config = config
end

Class Method Details

.build_hostname(subdomain, domain) ⇒ Object

Class method for building hostname without instance



180
181
182
183
184
185
186
# File 'lib/nvoi/utils/namer.rb', line 180

def self.build_hostname(subdomain, domain)
  if subdomain.blank? || subdomain == "@"
    domain
  else
    "#{subdomain}.#{domain}"
  end
end

.build_hostnames(subdomain, domain) ⇒ Object

Returns array of hostnames - apex returns [domain, *.domain], subdomain returns [sub.domain]



189
190
191
192
193
194
195
# File 'lib/nvoi/utils/namer.rb', line 189

def self.build_hostnames(subdomain, domain)
  if subdomain.blank? || subdomain == "@"
    [domain, "*.#{domain}"]
  else
    ["#{subdomain}.#{domain}"]
  end
end

Instance Method Details

#app_deployment_name(service_name) ⇒ Object

KUBERNETES APP RESOURCES



83
84
85
# File 'lib/nvoi/utils/namer.rb', line 83

def app_deployment_name(service_name)
  "#{@config.deploy.application.name}-#{service_name}"
end

#app_ingress_name(service_name) ⇒ Object



99
100
101
# File 'lib/nvoi/utils/namer.rb', line 99

def app_ingress_name(service_name)
  "#{@config.deploy.application.name}-#{service_name}"
end

#app_pod_label(service_name) ⇒ Object



103
104
105
106
# File 'lib/nvoi/utils/namer.rb', line 103

def app_pod_label(service_name)
  deployment_name = app_deployment_name(service_name)
  "app=#{deployment_name}"
end

#app_pvc_name(volume_name) ⇒ Object



95
96
97
# File 'lib/nvoi/utils/namer.rb', line 95

def app_pvc_name(volume_name)
  "#{@config.deploy.application.name}-#{volume_name}"
end

#app_secret_nameObject



91
92
93
# File 'lib/nvoi/utils/namer.rb', line 91

def app_secret_name
  "app-secret-#{@config.deploy.application.name}"
end

#app_service_name(service_name) ⇒ Object



87
88
89
# File 'lib/nvoi/utils/namer.rb', line 87

def app_service_name(service_name)
  "#{@config.deploy.application.name}-#{service_name}"
end

#cloudflared_deployment_name(service_name) ⇒ Object



120
121
122
# File 'lib/nvoi/utils/namer.rb', line 120

def cloudflared_deployment_name(service_name)
  "cloudflared-#{service_name}"
end

#database_pod_labelObject



71
72
73
# File 'lib/nvoi/utils/namer.rb', line 71

def database_pod_label
  "app=db-#{@config.deploy.application.name}"
end

#database_pod_nameObject



75
76
77
# File 'lib/nvoi/utils/namer.rb', line 75

def database_pod_name
  "db-#{@config.deploy.application.name}-0"
end

#database_pvc_nameObject



63
64
65
# File 'lib/nvoi/utils/namer.rb', line 63

def database_pvc_name
  "data-db-#{@config.deploy.application.name}-0"
end

#database_secret_nameObject



67
68
69
# File 'lib/nvoi/utils/namer.rb', line 67

def database_secret_name
  "db-secret-#{@config.deploy.application.name}"
end

#database_service_nameObject

DATABASE RESOURCES



55
56
57
# File 'lib/nvoi/utils/namer.rb', line 55

def database_service_name
  "db-#{@config.deploy.application.name}"
end

#database_stateful_set_nameObject



59
60
61
# File 'lib/nvoi/utils/namer.rb', line 59

def database_stateful_set_name
  "db-#{@config.deploy.application.name}"
end

#deployment_lock_file_pathObject

DEPLOYMENT RESOURCES



140
141
142
# File 'lib/nvoi/utils/namer.rb', line 140

def deployment_lock_file_path
  "/tmp/nvoi-deploy-#{@config.container_prefix}.lock"
end

#docker_network_nameObject



47
48
49
# File 'lib/nvoi/utils/namer.rb', line 47

def docker_network_name
  "#{@config.container_prefix}-docker-network"
end

#firewall_nameObject



39
40
41
# File 'lib/nvoi/utils/namer.rb', line 39

def firewall_name
  "#{@config.container_prefix}-firewall"
end

#hostname(subdomain, domain) ⇒ Object

Build full hostname from subdomain and domain



175
176
177
# File 'lib/nvoi/utils/namer.rb', line 175

def hostname(subdomain, domain)
  self.class.build_hostname(subdomain, domain)
end

#image_tag(timestamp) ⇒ Object

DOCKER IMAGE RESOURCES



148
149
150
# File 'lib/nvoi/utils/namer.rb', line 148

def image_tag(timestamp)
  "#{@config.container_prefix}:#{timestamp}"
end

#infer_container_prefixObject

Generate a container name prefix



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/nvoi/utils/namer.rb', line 14

def infer_container_prefix
  base = infer_base_prefix
  name = @config.deploy.application.name

  prefix = name ? "#{base}-#{name}" : base

  # Truncate to 63 chars (DNS limit) with hash for uniqueness
  if prefix.length > 63
    hash = hash_string(prefix)[0, 8]
    max_len = 63 - hash.length - 1
    prefix = "#{prefix[0, max_len]}-#{hash}"
  end

  prefix
end

#latest_image_tagObject



152
153
154
# File 'lib/nvoi/utils/namer.rb', line 152

def latest_image_tag
  "#{@config.container_prefix}:latest"
end

#network_nameObject



43
44
45
# File 'lib/nvoi/utils/namer.rb', line 43

def network_name
  "#{@config.container_prefix}-network"
end

#registry_deployment_nameObject

REGISTRY RESOURCES



128
129
130
# File 'lib/nvoi/utils/namer.rb', line 128

def registry_deployment_name
  "nvoi-registry"
end

#registry_service_nameObject



132
133
134
# File 'lib/nvoi/utils/namer.rb', line 132

def registry_service_name
  "nvoi-registry"
end

#server_name(group, index) ⇒ Object

ServerName returns the server name for a given group and index



35
36
37
# File 'lib/nvoi/utils/namer.rb', line 35

def server_name(group, index)
  "#{sanitize_name(@config.deploy.application.name)}-#{group}-#{index}"
end

#server_volume_host_path(server_name, volume_name) ⇒ Object

Host mount path for a server volume



166
167
168
# File 'lib/nvoi/utils/namer.rb', line 166

def server_volume_host_path(server_name, volume_name)
  "/opt/nvoi/volumes/#{server_volume_name(server_name, volume_name)}"
end

#server_volume_name(server_name, volume_name) ⇒ Object

Server-level volume naming: app-server-volume



161
162
163
# File 'lib/nvoi/utils/namer.rb', line 161

def server_volume_name(server_name, volume_name)
  "#{@config.deploy.application.name}-#{server_name}-#{volume_name}"
end

#service_container_prefix(service_name) ⇒ Object



108
109
110
# File 'lib/nvoi/utils/namer.rb', line 108

def service_container_prefix(service_name)
  "#{@config.container_prefix}-#{service_name}-"
end

#tunnel_name(service_name) ⇒ Object

CLOUDFLARE RESOURCES



116
117
118
# File 'lib/nvoi/utils/namer.rb', line 116

def tunnel_name(service_name)
  "#{@config.container_prefix}-#{service_name}"
end