Merge pull request #15124 from justinsb/integration_hetzner

hetzner: support toolbox dump of instances
This commit is contained in:
Kubernetes Prow Robot 2023-02-11 11:07:29 -08:00 committed by GitHub
commit fce388e3a2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 49 additions and 2 deletions

View File

@ -51,7 +51,7 @@ func BuildDump(ctx context.Context, cloud fi.Cloud, resources map[string]*Resour
for k, r := range resources {
if r.Dumper == nil {
klog.V(8).Infof("skipping dump of %q (does not implement Dumpable)", k)
klog.V(8).Infof("skipping dump of %q (does not have Dumper)", k)
continue
}

View File

@ -23,6 +23,7 @@ import (
"github.com/hetznercloud/hcloud-go/hcloud"
"k8s.io/klog/v2"
"k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/pkg/resources"
"k8s.io/kops/upup/pkg/fi"
"k8s.io/kops/upup/pkg/fi/cloudup/hetzner"
@ -177,6 +178,7 @@ func listServers(cloud fi.Cloud, clusterName string) ([]*resources.Resource, err
ID: strconv.Itoa(server.ID),
Type: resourceTypeServer,
Deleter: deleteServer,
Dumper: dumpServer,
Obj: server,
}
@ -293,3 +295,48 @@ func deleteVolume(cloud fi.Cloud, r *resources.Resource) error {
return nil
}
func dumpServer(op *resources.DumpOperation, r *resources.Resource) error {
server := r.Obj.(*hcloud.Server)
data := make(map[string]interface{})
data["id"] = r.ID
data["type"] = r.Type
data["raw"] = r.Obj
op.Dump.Resources = append(op.Dump.Resources, data)
i := &resources.Instance{
Name: r.ID,
}
if ip := server.PublicNet.IPv4.IP; ip != nil {
i.PublicAddresses = append(i.PublicAddresses, ip.String())
}
if ip := server.PublicNet.IPv6.IP; ip != nil {
i.PublicAddresses = append(i.PublicAddresses, ip.String())
}
for _, network := range server.PrivateNet {
if ip := network.IP; ip != nil {
i.PrivateAddresses = append(i.PrivateAddresses, ip.String())
}
}
for key, value := range server.Labels {
if key == hetzner.TagKubernetesInstanceRole {
role := kops.InstanceGroupRole(value)
switch role {
case kops.InstanceGroupRoleControlPlane:
i.Roles = append(i.Roles, string(role))
case kops.InstanceGroupRoleNode:
i.Roles = append(i.Roles, string(role))
case kops.InstanceGroupRoleAPIServer:
i.Roles = append(i.Roles, string(role))
default:
klog.Warningf("Unknown node role %q for server %s(%d)", value, server.Name, server.ID)
}
}
}
op.Dump.Instances = append(op.Dump.Instances, i)
return nil
}

View File

@ -34,7 +34,7 @@ func FindRegion(cluster *kops.Cluster) (string, error) {
case "ash":
zoneRegion = "us-east"
default:
return "", fmt.Errorf("unknown zone: %q", subnet.Zone)
return "", fmt.Errorf("unknown zone %q for hetzner cloud, known zones are fsn1, nbg1, hel1, ash", subnet.Zone)
}
if region != "" && zoneRegion != region {