Sha256: 2782d9c0fb034f443fbc9890ffacecc86ae0bcb7c2de42bdfdaed048d8b9b10c
Contents?: true
Size: 1.68 KB
Versions: 1
Compression:
Stored size: 1.68 KB
Contents
# frozen_string_literal: true module Hetzner class Network def initialize(hetzner_client:, cluster_name:, existing_network:) @hetzner_client = hetzner_client @cluster_name = cluster_name @existing_network = existing_network end def create(location:) @location = location 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 def delete if (network = find_network) if network["name"] == existing_network puts "Network existed before cluster, skipping." else puts 'Deleting network...' hetzner_client.delete('/networks', network['id']) puts '...network deleted.' end else puts 'Network no longer exists, skipping.' end puts end def find_network network_name = existing_network || cluster_name hetzner_client.get('/networks')['networks'].detect { |network| network['name'] == network_name } end def get find_network end private attr_reader :hetzner_client, :cluster_name, :location, :existing_network def network_config { name: cluster_name, ip_range: '10.0.0.0/16', subnets: [ { ip_range: '10.0.0.0/16', network_zone: (location == 'ash' ? 'us-east' : 'eu-central'), type: 'cloud' } ] } end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
hetzner-k3s-0.5.9 | lib/hetzner/infra/network.rb |