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)
 	}
 }