CaptureConfig: Update config if it already exists.
Change-Id: I0ecd09a65f0d74806d0329772e04ffa57e9a40ee
diff --git a/apps/capture-config/Makefile b/apps/capture-config/Makefile
index a5e3014..1a65580 100644
--- a/apps/capture-config/Makefile
+++ b/apps/capture-config/Makefile
@@ -1,3 +1,9 @@
+repo_name ?= giolekva
+podman ?= docker
+ifeq ($(podman), podman)
+manifest_dest=docker://docker.io/$(repo_name)/capture-config:latest
+endif
+
clean:
rm -f capture-config_*
@@ -16,14 +22,14 @@
go build -o capture-config_amd64 *.go
push_arm64: clean build_arm64
- podman build --platform linux/arm64 --tag=giolekva/capture-config:arm64 .
- podman push giolekva/capture-config:arm64
+ $(podman) build --platform linux/arm64 --tag=$(repo_name)/capture-config:arm64 .
+ $(podman) push $(repo_name)/capture-config:arm64
push_amd64: clean build_amd64
- podman build --platform linux/amd64 --tag=giolekva/capture-config:amd64 .
- podman push giolekva/capture-config:amd64
+ $(podman) build --platform linux/amd64 --tag=$(repo_name)/capture-config:amd64 .
+ $(podman) push $(repo_name)/capture-config:amd64
push: push_arm64 push_amd64
- podman manifest create giolekva/capture-config:latest giolekva/capture-config:arm64 giolekva/capture-config:amd64
- podman manifest push giolekva/capture-config:latest docker://docker.io/giolekva/capture-config:latest
- podman manifest rm giolekva/capture-config:latest
+ $(podman) manifest create $(repo_name)/capture-config:latest $(repo_name)/capture-config:arm64 $(repo_name)/capture-config:amd64
+ $(podman) manifest push $(repo_name)/capture-config:latest $(manifest_dest)
+ $(podman) manifest rm $(repo_name)/capture-config:latest
diff --git a/apps/capture-config/main.go b/apps/capture-config/main.go
index 73b94d6..86ac22c 100644
--- a/apps/capture-config/main.go
+++ b/apps/capture-config/main.go
@@ -8,6 +8,7 @@
"path"
v1 "k8s.io/api/core/v1"
+ "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
@@ -73,7 +74,15 @@
}
fmt.Printf("--- MERGED:\n%s\n", string(merged))
config := newConig(merged)
- if _, err := client.Create(context.TODO(), config, metav1.CreateOptions{}); err != nil {
+ _, err = client.Create(context.TODO(), config, metav1.CreateOptions{})
+ if err == nil {
+ return
+ }
+ if !errors.IsAlreadyExists(err) {
+ panic(err)
+ }
+ _, err = client.Update(context.TODO(), config, metav1.UpdateOptions{})
+ if err != nil {
panic(err)
}
}