class Hetzner::Network

Attributes

cluster_name[R]
hetzner_client[R]

Public Class Methods

new(hetzner_client:, cluster_name:) click to toggle source
# File lib/hetzner/infra/network.rb, line 3
def initialize(hetzner_client:, cluster_name:)
  @hetzner_client = hetzner_client
  @cluster_name = cluster_name
end

Public Instance Methods

create() click to toggle source
# File lib/hetzner/infra/network.rb, line 8
def create
  puts

  if network = find_network
    puts "Private network already exists, skipping."
    puts
    return network["id"]
  end

  puts "Creating private network..."

  response = hetzner_client.post("/networks", network_config).body

  puts "...private network created."
  puts

  JSON.parse(response)["network"]["id"]
end
delete() click to toggle source
# File lib/hetzner/infra/network.rb, line 27
def delete
  if network = find_network
    puts "Deleting network..."
    hetzner_client.delete("/networks", network["id"])
    puts "...network deleted."
  else
    puts "Network no longer exists, skipping."
  end

  puts
end

Private Instance Methods

find_network() click to toggle source
# File lib/hetzner/infra/network.rb, line 57
def find_network
  hetzner_client.get("/networks")["networks"].detect{ |network| network["name"] == cluster_name }
end
network_config() click to toggle source
# File lib/hetzner/infra/network.rb, line 43
def network_config
  {
    name: cluster_name,
    ip_range: "10.0.0.0/16",
    subnets: [
      {
        ip_range: "10.0.0.0/16",
        network_zone: "eu-central",
        type: "cloud"
      }
    ]
  }
end