rewrite to ippool patcher
This commit is contained in:
@@ -9,10 +9,9 @@ import (
|
||||
)
|
||||
|
||||
type Config = struct {
|
||||
LogLevel string `default:"Info" env:"MAIL_DNS_SERVICE_LOGLEVEL"`
|
||||
LabelSelector string `default:"kops.k8s.io/instance-role=Node" env:"MAIL_DNS_SERVICE_LABELSELECTOR"`
|
||||
HcloudToken string `default:"" env:"MAIL_DNS_SERVICE_HCLOUD_TOKEN"`
|
||||
Namespace string `default:"mailu" env:"MAIL_DNS_SERVICE_NAMESPACE"`
|
||||
LogLevel string `default:"Info" env:"CANADA_KAKTUS_LOGLEVEL"`
|
||||
LabelSelector string `default:"kops.k8s.io/instance-role=Node" env:"CANADA_KAKTUS_LABELSELECTOR"`
|
||||
HcloudToken string `default:"" env:"CANADA_KAKTUS_HCLOUD_TOKEN"`
|
||||
}
|
||||
|
||||
func GenConfig() (cfg *Config, err error) {
|
||||
@@ -20,7 +19,7 @@ func GenConfig() (cfg *Config, err error) {
|
||||
cfg = &Config{}
|
||||
|
||||
err = configor.New(&configor.Config{
|
||||
ENVPrefix: "METALLB_IP_FLOATER",
|
||||
ENVPrefix: "CANADA_KAKTUS",
|
||||
AutoReload: true,
|
||||
Silent: true,
|
||||
AutoReloadInterval: time.Minute}).Load(cfg, "config.json")
|
||||
|
@@ -9,7 +9,6 @@ var defaultConfig = Config{
|
||||
LogLevel: "Info",
|
||||
LabelSelector: "kops.k8s.io/instance-role=Node",
|
||||
HcloudToken: "",
|
||||
Namespace: "mailu",
|
||||
}
|
||||
|
||||
func TestConfigDefaults(t *testing.T) {
|
||||
|
@@ -11,29 +11,26 @@ import (
|
||||
"k8s.io/client-go/rest"
|
||||
)
|
||||
|
||||
var CRD_TEMPLATE = `
|
||||
var IP_POOL_TEMPLATE = `
|
||||
{
|
||||
"apiVersion": "externaldns.k8s.io/v1alpha1",
|
||||
"kind": "DNSEndpoint",
|
||||
"apiVersion": "cilium.io/v2alpha1",
|
||||
"kind": "CiliumLoadBalancerIPPool",
|
||||
"metadata": {
|
||||
"name": "{{ .Name }}",
|
||||
"annotations": {
|
||||
"external.dns/provider": "cf"
|
||||
"argocd.argoproj.io/tracking-id": "cilium-lb:cilium.io/CiliumLoadBalancerIPPool:kube-system/covidnetes-pool"
|
||||
}
|
||||
},
|
||||
"spec": {
|
||||
"endpoints": [
|
||||
"blocks": [
|
||||
{{- range $i, $ip := .IPs }}
|
||||
{{- if $i}},{{ end }}
|
||||
{
|
||||
"dnsName": "mail",
|
||||
"recordTTL": 180,
|
||||
"recordType": "A",
|
||||
"targets": [
|
||||
{{ range .IPs -}}
|
||||
"{{ . }}",
|
||||
{{ end -}}
|
||||
]
|
||||
"cidr": "{{ $ip }}"
|
||||
}
|
||||
]
|
||||
{{- end }}
|
||||
],
|
||||
"disabled": false
|
||||
}
|
||||
}
|
||||
`
|
||||
@@ -43,7 +40,7 @@ type CrdConfig struct {
|
||||
IPs []string
|
||||
}
|
||||
|
||||
func RecreateDnsCrd(cfg *Config, name string, ips []string) error {
|
||||
func RecreateIPPoolCrd(cfg *Config, name string, ips []string) error {
|
||||
|
||||
routeclient, err := createRestClient()
|
||||
|
||||
@@ -51,7 +48,7 @@ func RecreateDnsCrd(cfg *Config, name string, ips []string) error {
|
||||
return errors.New(fmt.Sprintf("Error creating REST Client: %v", err.Error()))
|
||||
}
|
||||
|
||||
body, err := generateCrd(name, ips)
|
||||
body, err := generateIpPool(name, ips)
|
||||
|
||||
if err != nil {
|
||||
return errors.New(fmt.Sprintf("Error generating CRD: %v", err.Error()))
|
||||
@@ -65,7 +62,6 @@ func RecreateDnsCrd(cfg *Config, name string, ips []string) error {
|
||||
}
|
||||
|
||||
res := routeclient.Post().
|
||||
Namespace(cfg.Namespace).
|
||||
Resource("routes").
|
||||
Body(&obj).
|
||||
Do(context.TODO())
|
||||
@@ -98,19 +94,19 @@ func createRestClient() (*rest.RESTClient, error) {
|
||||
|
||||
}
|
||||
|
||||
func generateCrd(name string, ips []string) (string, error) {
|
||||
func generateIpPool(name string, ips []string) (string, error) {
|
||||
config := CrdConfig{
|
||||
Name: name,
|
||||
IPs: ips,
|
||||
}
|
||||
tmpl, err := template.New("crd").Parse(CRD_TEMPLATE)
|
||||
tmpl, err := template.New("ippool").Parse(IP_POOL_TEMPLATE)
|
||||
if err != nil {
|
||||
return "", errors.New(fmt.Sprintf("Errors in crd template: %s", err.Error()))
|
||||
return "", errors.New(fmt.Sprintf("Errors in ippool template: %s", err.Error()))
|
||||
}
|
||||
var buf bytes.Buffer
|
||||
err = tmpl.Execute(&buf, &config)
|
||||
if err != nil {
|
||||
return "", errors.New(fmt.Sprintf("Could not render crd template: %s", err.Error()))
|
||||
return "", errors.New(fmt.Sprintf("Could not render ippool template: %s", err.Error()))
|
||||
}
|
||||
return buf.String(), nil
|
||||
}
|
||||
|
@@ -4,37 +4,35 @@ import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestGenerateCRD(t *testing.T) {
|
||||
expected := `
|
||||
func TestGenerateIpPoolCRD(t *testing.T) {
|
||||
expected_ip_pool := `
|
||||
{
|
||||
"apiVersion": "externaldns.k8s.io/v1alpha1",
|
||||
"kind": "DNSEndpoint",
|
||||
"apiVersion": "cilium.io/v2alpha1",
|
||||
"kind": "CiliumLoadBalancerIPPool",
|
||||
"metadata": {
|
||||
"name": "test",
|
||||
"name": "covidnetes-pool",
|
||||
"annotations": {
|
||||
"external.dns/provider": "cf"
|
||||
"argocd.argoproj.io/tracking-id": "cilium-lb:cilium.io/CiliumLoadBalancerIPPool:kube-system/covidnetes-pool"
|
||||
}
|
||||
},
|
||||
"spec": {
|
||||
"endpoints": [
|
||||
"blocks": [
|
||||
{
|
||||
"dnsName": "mail",
|
||||
"recordTTL": 180,
|
||||
"recordType": "A",
|
||||
"targets": [
|
||||
"192.168.0.1",
|
||||
"192.168.0.2",
|
||||
]
|
||||
"cidr": "49.13.48.9/32"
|
||||
},
|
||||
{
|
||||
"cidr": "91.107.211.117/32"
|
||||
}
|
||||
]
|
||||
],
|
||||
"disabled": false
|
||||
}
|
||||
}
|
||||
`
|
||||
got, err := generateCrd("test", []string{"192.168.0.1", "192.168.0.2"})
|
||||
got, err := generateIpPool("covidnetes-pool", []string{"49.13.48.9/32", "91.107.211.117/32"})
|
||||
if err != nil {
|
||||
t.Errorf("%s", err.Error())
|
||||
}
|
||||
if expected != got {
|
||||
t.Errorf("got %+v, want %+v", got, expected)
|
||||
if expected_ip_pool != got {
|
||||
t.Errorf("got %+v, want %+v", got, expected_ip_pool)
|
||||
}
|
||||
}
|
||||
|
@@ -3,7 +3,7 @@ package utils
|
||||
import (
|
||||
"os"
|
||||
|
||||
"git.uploadfilter24.eu/covidnetes/mail-dns-service/internal"
|
||||
"git.uploadfilter24.eu/covidnetes/canada-kaktus/internal"
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
|
Reference in New Issue
Block a user