Class: Nvoi::Utils::Namer
- Inherits:
-
Object
- Object
- Nvoi::Utils::Namer
- Defined in:
- lib/nvoi/utils/namer.rb
Overview
Namer handles resource naming and inference
Class Method Summary collapse
-
.build_hostname(subdomain, domain) ⇒ Object
Class method for building hostname without instance.
-
.build_hostnames(subdomain, domain) ⇒ Object
Returns array of hostnames - apex returns [domain, *.domain], subdomain returns [sub.domain].
Instance Method Summary collapse
-
#app_deployment_name(service_name) ⇒ Object
KUBERNETES APP RESOURCES ============================================================================.
- #app_ingress_name(service_name) ⇒ Object
- #app_pod_label(service_name) ⇒ Object
- #app_pvc_name(volume_name) ⇒ Object
- #app_secret_name ⇒ Object
- #app_service_name(service_name) ⇒ Object
- #cloudflared_deployment_name(service_name) ⇒ Object
- #database_pod_label ⇒ Object
- #database_pod_name ⇒ Object
- #database_pvc_name ⇒ Object
- #database_secret_name ⇒ Object
-
#database_service_name ⇒ Object
DATABASE RESOURCES ============================================================================.
- #database_stateful_set_name ⇒ Object
-
#deployment_lock_file_path ⇒ Object
DEPLOYMENT RESOURCES ============================================================================.
- #docker_network_name ⇒ Object
- #firewall_name ⇒ Object
-
#hostname(subdomain, domain) ⇒ Object
Build full hostname from subdomain and domain.
-
#image_tag(timestamp) ⇒ Object
DOCKER IMAGE RESOURCES ============================================================================.
-
#infer_container_prefix ⇒ Object
Generate a container name prefix.
-
#initialize(config) ⇒ Namer
constructor
A new instance of Namer.
- #latest_image_tag ⇒ Object
- #network_name ⇒ Object
-
#registry_deployment_name ⇒ Object
REGISTRY RESOURCES ============================================================================.
- #registry_service_name ⇒ Object
-
#server_name(group, index) ⇒ Object
ServerName returns the server name for a given group and index.
-
#server_volume_host_path(server_name, volume_name) ⇒ Object
Host mount path for a server volume.
-
#server_volume_name(server_name, volume_name) ⇒ Object
Server-level volume naming: app-server-volume.
- #service_container_prefix(service_name) ⇒ Object
-
#tunnel_name(service_name) ⇒ Object
CLOUDFLARE RESOURCES ============================================================================.
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_name ⇒ Object
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_label ⇒ Object
71 72 73 |
# File 'lib/nvoi/utils/namer.rb', line 71 def database_pod_label "app=db-#{@config.deploy.application.name}" end |
#database_pod_name ⇒ Object
75 76 77 |
# File 'lib/nvoi/utils/namer.rb', line 75 def database_pod_name "db-#{@config.deploy.application.name}-0" end |
#database_pvc_name ⇒ Object
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_name ⇒ Object
67 68 69 |
# File 'lib/nvoi/utils/namer.rb', line 67 def database_secret_name "db-secret-#{@config.deploy.application.name}" end |
#database_service_name ⇒ Object
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_name ⇒ Object
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_path ⇒ Object
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_name ⇒ Object
47 48 49 |
# File 'lib/nvoi/utils/namer.rb', line 47 def docker_network_name "#{@config.container_prefix}-docker-network" end |
#firewall_name ⇒ Object
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() "#{@config.container_prefix}:#{}" end |
#infer_container_prefix ⇒ Object
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_tag ⇒ Object
152 153 154 |
# File 'lib/nvoi/utils/namer.rb', line 152 def latest_image_tag "#{@config.container_prefix}:latest" end |
#network_name ⇒ Object
43 44 45 |
# File 'lib/nvoi/utils/namer.rb', line 43 def network_name "#{@config.container_prefix}-network" end |
#registry_deployment_name ⇒ Object
REGISTRY RESOURCES
128 129 130 |
# File 'lib/nvoi/utils/namer.rb', line 128 def registry_deployment_name "nvoi-registry" end |
#registry_service_name ⇒ Object
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 |