feature/tt/initial-implementation #1

Merged
lerentis merged 14 commits from feature/tt/initial-implementation into main 2025-10-06 09:21:58 +00:00
4 changed files with 15 additions and 18 deletions
Showing only changes of commit d22a53fbb7 - Show all commits

View File

@@ -1,7 +1,6 @@
package internal package internal
import ( import (
"errors"
"fmt" "fmt"
"time" "time"
@@ -24,7 +23,7 @@ func GenConfig() (cfg *Config, err error) {
Silent: true, Silent: true,
AutoReloadInterval: time.Minute}).Load(cfg, "config.json") AutoReloadInterval: time.Minute}).Load(cfg, "config.json")
if err != nil { if err != nil {
return nil, errors.New(fmt.Sprintf("Error generating Config: %s", err.Error())) return nil, fmt.Errorf("error generating Config: %s", err.Error())
} }
return cfg, nil return cfg, nil

View File

@@ -2,7 +2,6 @@ package internal
import ( import (
"context" "context"
"errors"
"fmt" "fmt"
"github.com/hetznercloud/hcloud-go/hcloud" "github.com/hetznercloud/hcloud-go/hcloud"
@@ -16,11 +15,11 @@ func GetAllNodes(cfg *Config) ([]*hcloud.Server, error) {
LabelSelector: cfg.LabelSelector, LabelSelector: cfg.LabelSelector,
}}) }})
if err != nil { if err != nil {
return nil, errors.New(fmt.Sprintf("Error listing Hetzner Nodes: %s", err.Error())) return nil, fmt.Errorf("error listing Hetzner Nodes: %s", err.Error())
} }
if servers == nil { if servers == nil {
return nil, errors.New(fmt.Sprintf("No Nodes found with label selector: %s", cfg.LabelSelector)) return nil, fmt.Errorf("no Nodes found with label selector: %s", cfg.LabelSelector)
} }
return servers, nil return servers, nil
@@ -29,13 +28,13 @@ func GetAllNodes(cfg *Config) ([]*hcloud.Server, error) {
func GetAllIps(servers []*hcloud.Server) ([]string, error) { func GetAllIps(servers []*hcloud.Server) ([]string, error) {
ips := make([]string, len(servers)) ips := make([]string, len(servers))
for i, instance := range servers { for i, instance := range servers {
if len(instance.PrivateNet) == 0 || instance.PrivateNet[0].IP == nil { if instance.PublicNet.IPv4.IP == nil {
return []string{""}, errors.New(fmt.Sprintf("Instance %s has no attached IP", instance.Name)) return []string{""}, fmt.Errorf("instance %s has no public Addresses", instance.Name)
} }
log.WithFields(log.Fields{ log.WithFields(log.Fields{
"Caller": "GetAllIps", "Caller": "GetAllIps",
}).Info(fmt.Sprintf("Found IP: %s", instance.PrivateNet[0].IP.String())) }).Info(fmt.Sprintf("Found IP: %s", instance.PrivateNet[0].IP.String()))
ips[i] = instance.PrivateNet[0].IP.String() ips[i] = instance.PublicNet.IPv4.IP.String()
} }
return ips, nil return ips, nil
} }

View File

@@ -18,7 +18,7 @@ func TestGetAllIps(t *testing.T) {
Name: "Test2", Name: "Test2",
}) })
expectedError := "Instance Test has no attached IP" expectedError := "instance Test has no public Addresses"
_, err := GetAllIps(servers) _, err := GetAllIps(servers)
if err == nil { if err == nil {
t.Error("GetAllIps did not error with missing data") t.Error("GetAllIps did not error with missing data")

View File

@@ -3,7 +3,6 @@ package internal
import ( import (
"bytes" "bytes"
"context" "context"
"errors"
"fmt" "fmt"
"html/template" "html/template"
@@ -45,20 +44,20 @@ func RecreateIPPoolCrd(cfg *Config, name string, ips []string) error {
routeclient, err := createRestClient() routeclient, err := createRestClient()
if err != nil { if err != nil {
return errors.New(fmt.Sprintf("Error creating REST Client: %v", err.Error())) return fmt.Errorf("error creating REST Client: %v", err.Error())
} }
body, err := generateIpPool(name, ips) body, err := generateIpPool(name, ips)
if err != nil { if err != nil {
return errors.New(fmt.Sprintf("Error generating CRD: %v", err.Error())) return fmt.Errorf("error generating CRD: %v", err.Error())
} }
decode := scheme.Codecs.UniversalDeserializer().Decode decode := scheme.Codecs.UniversalDeserializer().Decode
obj, _, err := decode([]byte(body), nil, nil) obj, _, err := decode([]byte(body), nil, nil)
if err != nil { if err != nil {
return errors.New(fmt.Sprintf("Could not deserialize CRD: %v", err.Error())) return fmt.Errorf("could not deserialize CRD: %v", err.Error())
} }
res := routeclient.Post(). res := routeclient.Post().
@@ -70,7 +69,7 @@ func RecreateIPPoolCrd(cfg *Config, name string, ips []string) error {
res.StatusCode(&status) res.StatusCode(&status)
if status >= 200 && status <= 400 { if status >= 200 && status <= 400 {
return errors.New(fmt.Sprintf("Failed to post CRD to kube api: %v", res.Error().Error())) return fmt.Errorf("failed to post CRD to kube api: %v", res.Error().Error())
} }
return nil return nil
@@ -79,7 +78,7 @@ func RecreateIPPoolCrd(cfg *Config, name string, ips []string) error {
func createRestClient() (*rest.RESTClient, error) { func createRestClient() (*rest.RESTClient, error) {
k8s_config, err := rest.InClusterConfig() k8s_config, err := rest.InClusterConfig()
if err != nil { if err != nil {
return nil, errors.New(fmt.Sprintf("Could not create in cluster k8s config: %v", err)) return nil, fmt.Errorf("could not create in cluster k8s config: %v", err)
} }
k8s_config.APIPath = "/apis" k8s_config.APIPath = "/apis"
@@ -88,7 +87,7 @@ func createRestClient() (*rest.RESTClient, error) {
routeclient, err := rest.RESTClientFor(k8s_config) routeclient, err := rest.RESTClientFor(k8s_config)
if err != nil { if err != nil {
return nil, errors.New(fmt.Sprintf("Could not create k8s client: %v", err)) return nil, fmt.Errorf("could not create k8s client: %v", err)
} }
return routeclient, nil return routeclient, nil
@@ -101,12 +100,12 @@ func generateIpPool(name string, ips []string) (string, error) {
} }
tmpl, err := template.New("ippool").Parse(IP_POOL_TEMPLATE) tmpl, err := template.New("ippool").Parse(IP_POOL_TEMPLATE)
if err != nil { if err != nil {
return "", errors.New(fmt.Sprintf("Errors in ippool template: %s", err.Error())) return "", fmt.Errorf("errors in ippool template: %s", err.Error())
} }
var buf bytes.Buffer var buf bytes.Buffer
err = tmpl.Execute(&buf, &config) err = tmpl.Execute(&buf, &config)
if err != nil { if err != nil {
return "", errors.New(fmt.Sprintf("Could not render ippool template: %s", err.Error())) return "", fmt.Errorf("could not render ippool template: %s", err.Error())
} }
return buf.String(), nil return buf.String(), nil
} }