Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Do not use log.Fatal() #116

Merged
merged 4 commits into from
Apr 8, 2024
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 15 additions & 8 deletions plugins/ipam/k8s.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,33 +39,40 @@ type K8sClient struct {
EventRecorder record.EventRecorder
}

func NewK8sClient(namespace string, subnetNames []string) K8sClient {
func NewK8sClient(namespace string, subnetNames []string) (K8sClient, error) {
dummyClient := K8sClient{}
damyan marked this conversation as resolved.
Show resolved Hide resolved

if err := ipamv1alpha1.AddToScheme(scheme.Scheme); err != nil {
log.Fatal("Unable to add registered types ipam to client scheme: ", err)
err = errors.Wrapf(err, "Unable to add registered types ipam to client scheme")
return dummyClient, err
damyan marked this conversation as resolved.
Show resolved Hide resolved
}

cfg := config.GetConfigOrDie()
cl, err := client.New(cfg, client.Options{})
if err != nil {
log.Fatal("Failed to create controller runtime client: ", err)
err = errors.Wrapf(err, "Failed to create controller runtime client")
return dummyClient, err
}

clientset, err := ipam.NewForConfig(cfg)
if err != nil {
log.Fatal("Failed to create IPAM clientset: ", err)
err = errors.Wrapf(err, "Failed to create IPAM clientset")
damyan marked this conversation as resolved.
Show resolved Hide resolved
return dummyClient, err
}

corev1Client, err := corev1client.NewForConfig(cfg)
if err != nil {
log.Fatal("Failed to create core client: ", err)
err = errors.Wrapf(err, "Failed to create core client")
return dummyClient, err
}

broadcaster := record.NewBroadcaster()

// Leader id, needs to be unique
id, err := os.Hostname()
if err != nil {
log.Fatal("Failed to get hostname: ", err)
err = errors.Wrapf(err, "Failed to get hostname")
return dummyClient, err
}
recorder := broadcaster.NewRecorder(scheme.Scheme, corev1.EventSource{Component: id})
broadcaster.StartRecordingToSink(&corev1client.EventSinkImpl{Interface: corev1Client.Events("")})
Expand All @@ -77,7 +84,7 @@ func NewK8sClient(namespace string, subnetNames []string) K8sClient {
SubnetNames: subnetNames,
Ctx: context.Background(),
EventRecorder: recorder,
}
}, nil
}

func (k K8sClient) createIpamIP(ipaddr net.IP, mac net.HardwareAddr) error {
Expand Down Expand Up @@ -223,7 +230,7 @@ func (k K8sClient) waitForDeletion(ipamIP *ipamv1alpha1.IP) error {
TimeoutSeconds: &timeout,
})
if err != nil {
log.Fatalf("Error watching for IP: %v", err)
log.Errorf("Error watching for IP: %v", err)
}

log.Debugf("Watching for changes to IP %s/%s...", namespace, resourceName)
Expand Down
9 changes: 7 additions & 2 deletions plugins/ipam/plugin.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,13 @@ func setup6(args ...string) (handler.Handler6, error) {
if err != nil {
return nil, err
}
k8sClient = NewK8sClient(namespace, subnetNames)
log.Printf("loaded ipam plugin for DHCPv6.")

k8sClient, err = NewK8sClient(namespace, subnetNames)
if err != nil {
return nil, err
damyan marked this conversation as resolved.
Show resolved Hide resolved
}

log.Printf("Loaded ipam plugin for DHCPv6.")
return handler6, nil
}

Expand Down
Loading