Skip to content

Commit 48cb13b

Browse files
resolve conflict (#165)
Co-authored-by: John Doe <hugosum.dev@protonmail.com>
1 parent d3ab14c commit 48cb13b

File tree

7 files changed

+218
-99
lines changed

7 files changed

+218
-99
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
name: golangci-lint
2+
on:
3+
push:
4+
branches:
5+
- main
6+
pull_request:
7+
8+
permissions:
9+
contents: read
10+
# pull-requests: read
11+
checks: write
12+
13+
jobs:
14+
golangci:
15+
name: lint
16+
runs-on: ubuntu-latest
17+
steps:
18+
- uses: actions/checkout@v4
19+
- uses: actions/setup-go@v5
20+
with:
21+
go-version: "1.22"
22+
- name: golangci-lint
23+
uses: golangci/golangci-lint-action@v6
24+
with:
25+
version: latest
26+
# only-new-issues: true
27+
args: --timeout=5m

internal/it/suite_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ func waitForDeploymentTobeReady(name string, namespace string) {
6060
}
6161

6262
deployment := &v12.Deployment{}
63-
k8sClient.Get(context.Background(), deploymentKey, deployment)
63+
Expect(k8sClient.Get(context.Background(), deploymentKey, deployment)).Should(Succeed())
6464
return int(deployment.Status.ReadyReplicas)
6565
}, Timeout, Interval).Should(Equal(1))
6666

@@ -73,7 +73,7 @@ func WaitForWireguardToBeReady(name string, namespace string) {
7373
Name: name,
7474
}
7575
wg := &v1alpha1.Wireguard{}
76-
k8sClient.Get(context.Background(), wgKey, wg)
76+
Expect(k8sClient.Get(context.Background(), wgKey, wg)).Should(Succeed())
7777
return wg.Status.Status
7878
}, Timeout, Interval).Should(Equal(v1alpha1.Ready))
7979

@@ -86,7 +86,7 @@ func WaitForPeerToBeReady(name string, namespace string) {
8686
Name: name,
8787
}
8888
wg := &v1alpha1.WireguardPeer{}
89-
k8sClient.Get(context.Background(), wgKey, wg)
89+
Expect(k8sClient.Get(context.Background(), wgKey, wg)).Should(Succeed())
9090
return wg.Status.Status
9191
}, Timeout, Interval).Should(Equal(v1alpha1.Ready))
9292

@@ -228,7 +228,7 @@ var _ = BeforeSuite(func() {
228228
}
229229

230230
deployment := &v12.Deployment{}
231-
k8sClient.Get(context.Background(), deploymentKey, deployment)
231+
Expect(k8sClient.Get(context.Background(), deploymentKey, deployment)).Should(Succeed())
232232
return int(deployment.Status.ReadyReplicas)
233233
}, Timeout, Interval).Should(Equal(1))
234234

pkg/agent/agent.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ import (
55
"encoding/hex"
66
"encoding/json"
77
"fmt"
8-
"github.com/go-logr/logr"
98
"os"
109
"path/filepath"
1110

1211
"github.com/fsnotify/fsnotify"
12+
"github.com/go-logr/logr"
1313
"github.com/jodevsa/wireguard-operator/pkg/api/v1alpha1"
1414
)
1515

pkg/controllers/wireguard_controller.go

Lines changed: 106 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -58,18 +58,18 @@ func labelsForWireguard(name string) map[string]string {
5858
return map[string]string{"app": "wireguard", "instance": name}
5959
}
6060

61-
func (r *WireguardReconciler) ConfigmapForWireguard(m *v1alpha1.Wireguard, hostname string) *corev1.ConfigMap {
62-
ls := labelsForWireguard(m.Name)
61+
func (r *WireguardReconciler) ConfigmapForWireguard(m *v1alpha1.Wireguard, hostname string) (*corev1.ConfigMap, error) {
6362
dep := &corev1.ConfigMap{
6463
ObjectMeta: metav1.ObjectMeta{
6564
Name: m.Name + "-config",
6665
Namespace: m.Namespace,
67-
Labels: ls,
66+
Labels: labelsForWireguard(m.Name),
6867
},
6968
}
70-
71-
ctrl.SetControllerReference(m, dep, r.Scheme)
72-
return dep
69+
if err := ctrl.SetControllerReference(m, dep, r.Scheme); err != nil {
70+
return nil, fmt.Errorf("set controller reference: %w", err)
71+
}
72+
return dep, nil
7373
}
7474

7575
func (r *WireguardReconciler) getWireguardPeers(ctx context.Context, req ctrl.Request) (*v1alpha1.WireguardPeerList, error) {
@@ -311,7 +311,11 @@ func (r *WireguardReconciler) Reconcile(ctx context.Context, req ctrl.Request) (
311311
err = r.Get(ctx, types.NamespacedName{Name: wireguard.Name + "-metrics-svc", Namespace: wireguard.Namespace}, svcFound)
312312
if err != nil && errors.IsNotFound(err) {
313313

314-
svc := r.serviceForWireguardMetrics(wireguard)
314+
svc, err := r.serviceForWireguardMetrics(wireguard)
315+
if err != nil {
316+
return ctrl.Result{}, fmt.Errorf("service for wireguard metrics: %w", err)
317+
}
318+
315319
log.Info("Creating a new service", "service.Namespace", svc.Namespace, "service.Name", svc.Name)
316320
err = r.Create(ctx, svc)
317321
if err != nil {
@@ -357,7 +361,11 @@ func (r *WireguardReconciler) Reconcile(ctx context.Context, req ctrl.Request) (
357361

358362
err = r.Get(ctx, types.NamespacedName{Name: wireguard.Name + "-svc", Namespace: wireguard.Namespace}, svcFound)
359363
if err != nil && errors.IsNotFound(err) {
360-
svc := r.serviceForWireguard(wireguard, serviceType)
364+
svc, err := r.serviceForWireguard(wireguard, serviceType)
365+
if err != nil {
366+
return ctrl.Result{}, fmt.Errorf("service for wireguard: %w", err)
367+
}
368+
361369
log.Info("Creating a new service", "service.Namespace", svc.Namespace, "service.Name", svc.Name)
362370
err = r.Create(ctx, svc)
363371
if err != nil {
@@ -468,10 +476,15 @@ func (r *WireguardReconciler) Reconcile(ctx context.Context, req ctrl.Request) (
468476

469477
if !bytes.Equal(b, secret.Data["state.json"]) {
470478
log.Info("Updating secret with new config")
479+
471480
publicKey := string(secret.Data["publicKey"])
472481

473-
err := r.Update(ctx, r.secretForWireguard(wireguard, b, privateKey, publicKey))
482+
secret, err := r.secretForWireguard(wireguard, b, privateKey, publicKey)
474483
if err != nil {
484+
return ctrl.Result{}, fmt.Errorf("secret for wireguard: %w", err)
485+
}
486+
487+
if err := r.Update(ctx, secret); err != nil {
475488
log.Error(err, "Failed to update secret with new config")
476489
return ctrl.Result{}, err
477490
}
@@ -523,14 +536,39 @@ func (r *WireguardReconciler) Reconcile(ctx context.Context, req ctrl.Request) (
523536
return ctrl.Result{}, err
524537
}
525538

526-
secret := r.secretForWireguard(wireguard, b, privateKey, publicKey)
539+
bytes.Equal(b, secret.Data["state"])
540+
541+
secret, err := r.secretForWireguard(wireguard, b, privateKey, publicKey)
542+
if err != nil {
543+
return ctrl.Result{}, fmt.Errorf("secret for wireguard: %w", err)
544+
}
527545

528546
log.Info("Creating a new secret", "secret.Namespace", secret.Namespace, "secret.Name", secret.Name)
529547

530548
if err := r.Create(ctx, secret); err != nil {
531549
log.Error(err, "Failed to create new secret", "secret.Namespace", secret.Namespace, "secret.Name", secret.Name)
532550
return ctrl.Result{}, err
533551
}
552+
553+
clientKey, err := wgtypes.GeneratePrivateKey()
554+
555+
if err != nil {
556+
log.Error(err, "Failed to generate private key")
557+
return ctrl.Result{}, err
558+
}
559+
560+
clientSecret, err := r.secretForClient(wireguard, clientKey.String(), clientKey.PublicKey().String())
561+
if err != nil {
562+
return ctrl.Result{}, fmt.Errorf("secret for client: %w", err)
563+
}
564+
565+
log.Info("Creating a new secret", "secret.Namespace", clientSecret.Namespace, "secret.Name", clientSecret.Name)
566+
err = r.Create(ctx, clientSecret)
567+
if err != nil {
568+
log.Error(err, "Failed to create new secret", "secret.Namespace", clientSecret.Namespace, "secret.Name", clientSecret.Name)
569+
return ctrl.Result{}, err
570+
}
571+
534572
return ctrl.Result{}, err
535573
} else if err != nil {
536574
log.Error(err, "Failed to get secret")
@@ -542,10 +580,14 @@ func (r *WireguardReconciler) Reconcile(ctx context.Context, req ctrl.Request) (
542580
configFound := &corev1.ConfigMap{}
543581
err = r.Get(ctx, types.NamespacedName{Name: wireguard.Name + "-config", Namespace: wireguard.Namespace}, configFound)
544582
if err != nil && errors.IsNotFound(err) {
545-
config := r.ConfigmapForWireguard(wireguard, address)
546-
log.Info("Creating a new config", "config.Namespace", config.Namespace, "config.Name", config.Name)
547-
err = r.Create(ctx, config)
583+
config, err := r.ConfigmapForWireguard(wireguard, address)
548584
if err != nil {
585+
return ctrl.Result{}, fmt.Errorf("config map for wireguard: %w", err)
586+
}
587+
588+
log.Info("Creating a new config", "config.Namespace", config.Namespace, "config.Name", config.Name)
589+
590+
if err := r.Create(ctx, config); err != nil {
549591
log.Error(err, "Failed to create new dep", "dep.Namespace", config.Namespace, "dep.Name", config.Name)
550592
return ctrl.Result{}, err
551593
}
@@ -563,7 +605,11 @@ func (r *WireguardReconciler) Reconcile(ctx context.Context, req ctrl.Request) (
563605
deploymentFound := &appsv1.Deployment{}
564606
err = r.Get(ctx, types.NamespacedName{Name: wireguard.Name + "-dep", Namespace: wireguard.Namespace}, deploymentFound)
565607
if err != nil && errors.IsNotFound(err) {
566-
dep := r.deploymentForWireguard(wireguard)
608+
dep, err := r.deploymentForWireguard(wireguard)
609+
if err != nil {
610+
return ctrl.Result{}, fmt.Errorf("deployment for wireguard: %w", err)
611+
}
612+
567613
log.Info("Creating a new dep", "dep.Namespace", dep.Namespace, "dep.Name", dep.Name)
568614
err = r.Create(ctx, dep)
569615
if err != nil {
@@ -578,9 +624,12 @@ func (r *WireguardReconciler) Reconcile(ctx context.Context, req ctrl.Request) (
578624
}
579625

580626
if deploymentFound.Spec.Template.Spec.Containers[0].Image != r.AgentImage {
581-
dep := r.deploymentForWireguard(wireguard)
582-
err = r.Update(ctx, dep)
627+
dep, err := r.deploymentForWireguard(wireguard)
583628
if err != nil {
629+
return ctrl.Result{}, fmt.Errorf("deployment for wireguard: %w", err)
630+
}
631+
632+
if err := r.Update(ctx, dep); err != nil {
584633
log.Error(err, "unable to update deployment image", "dep.Namespace", dep.Namespace, "dep.Name", dep.Name)
585634
return ctrl.Result{}, err
586635
}
@@ -613,10 +662,10 @@ func (r *WireguardReconciler) SetupWithManager(mgr ctrl.Manager) error {
613662
Complete(r)
614663
}
615664

616-
func (r *WireguardReconciler) serviceForWireguard(m *v1alpha1.Wireguard, serviceType corev1.ServiceType) *corev1.Service {
665+
func (r *WireguardReconciler) serviceForWireguard(m *v1alpha1.Wireguard, serviceType corev1.ServiceType) (*corev1.Service, error) {
617666
labels := labelsForWireguard(m.Name)
618667

619-
dep := &corev1.Service{
668+
svc := &corev1.Service{
620669
ObjectMeta: metav1.ObjectMeta{
621670
Name: m.Name + "-svc",
622671
Namespace: m.Namespace,
@@ -636,14 +685,16 @@ func (r *WireguardReconciler) serviceForWireguard(m *v1alpha1.Wireguard, service
636685
},
637686
}
638687

639-
ctrl.SetControllerReference(m, dep, r.Scheme)
640-
return dep
688+
if err := ctrl.SetControllerReference(m, svc, r.Scheme); err != nil {
689+
return nil, fmt.Errorf("set controller reference: %w", err)
690+
}
691+
return svc, nil
641692
}
642693

643-
func (r *WireguardReconciler) serviceForWireguardMetrics(m *v1alpha1.Wireguard) *corev1.Service {
694+
func (r *WireguardReconciler) serviceForWireguardMetrics(m *v1alpha1.Wireguard) (*corev1.Service, error) {
644695
labels := labelsForWireguard(m.Name)
645696

646-
dep := &corev1.Service{
697+
svc := &corev1.Service{
647698
ObjectMeta: metav1.ObjectMeta{
648699
Name: m.Name + "-metrics-svc",
649700
Namespace: m.Namespace,
@@ -661,29 +712,48 @@ func (r *WireguardReconciler) serviceForWireguardMetrics(m *v1alpha1.Wireguard)
661712
},
662713
}
663714

664-
ctrl.SetControllerReference(m, dep, r.Scheme)
665-
return dep
715+
if err := ctrl.SetControllerReference(m, svc, r.Scheme); err != nil {
716+
return nil, fmt.Errorf("set controller reference: %w", err)
717+
}
718+
return svc, nil
666719
}
667720

668-
func (r *WireguardReconciler) secretForWireguard(m *v1alpha1.Wireguard, state []byte, privateKey string, publicKey string) *corev1.Secret {
669-
670-
ls := labelsForWireguard(m.Name)
671-
dep := &corev1.Secret{
721+
func (r *WireguardReconciler) secretForWireguard(m *v1alpha1.Wireguard, state []byte, privateKey string, publicKey string) (*corev1.Secret, error) {
722+
secret := &corev1.Secret{
672723
ObjectMeta: metav1.ObjectMeta{
673724
Name: m.Name,
674725
Namespace: m.Namespace,
675-
Labels: ls,
726+
Labels: labelsForWireguard(m.Name),
676727
},
677728
Data: map[string][]byte{"state.json": state, "privateKey": []byte(privateKey), "publicKey": []byte(publicKey)},
678729
}
679730

680-
ctrl.SetControllerReference(m, dep, r.Scheme)
731+
if err := ctrl.SetControllerReference(m, secret, r.Scheme); err != nil {
732+
return nil, fmt.Errorf("set controller reference: %w", err)
733+
}
734+
735+
return secret, nil
736+
737+
}
738+
739+
func (r *WireguardReconciler) secretForClient(m *v1alpha1.Wireguard, privateKey string, publicKey string) (*corev1.Secret, error) {
740+
secret := &corev1.Secret{
741+
ObjectMeta: metav1.ObjectMeta{
742+
Name: m.Name + "-client",
743+
Namespace: m.Namespace,
744+
Labels: labelsForWireguard(m.Name),
745+
},
746+
Data: map[string][]byte{"privateKey": []byte(privateKey), "publicKey": []byte(publicKey)},
747+
}
681748

682-
return dep
749+
if err := ctrl.SetControllerReference(m, secret, r.Scheme); err != nil {
750+
return nil, fmt.Errorf("set controller reference: %w", err)
751+
}
752+
return secret, nil
683753

684754
}
685755

686-
func (r *WireguardReconciler) deploymentForWireguard(m *v1alpha1.Wireguard) *appsv1.Deployment {
756+
func (r *WireguardReconciler) deploymentForWireguard(m *v1alpha1.Wireguard) (*appsv1.Deployment, error) {
687757
ls := labelsForWireguard(m.Name)
688758
replicas := int32(1)
689759

@@ -826,6 +896,8 @@ func (r *WireguardReconciler) deploymentForWireguard(m *v1alpha1.Wireguard) *app
826896
}
827897
}
828898

829-
ctrl.SetControllerReference(m, dep, r.Scheme)
830-
return dep
899+
if err := ctrl.SetControllerReference(m, dep, r.Scheme); err != nil {
900+
return dep, fmt.Errorf("set controller reference: %w", err)
901+
}
902+
return dep, nil
831903
}

0 commit comments

Comments
 (0)