diff --git a/.drone.yml b/.drone.yml index 5459dc9aba58581fe61141eb85fa4b88695d24e9..14ab03777005e93c2ad3a4600ad7c34f5a35c388 100644 --- a/.drone.yml +++ b/.drone.yml @@ -88,77 +88,6 @@ volumes: host: path: /var/run/docker.sock ---- -kind: pipeline -name: s390x - -platform: - os: linux - arch: amd64 - -node: - arch: s390x - -steps: -- name: build - image: rancher/dapper:v0.6.0 - commands: - - dapper ci - volumes: - - name: docker - path: /var/run/docker.sock - -- name: upload-artifacts - image: rancher/drone-images:github-release-s390x - settings: - api_key: - from_secret: github_token - prerelease: true - checksum: - - sha256 - checksum_file: CHECKSUMsum-s390x.txt - checksum_flatten: true - files: - - "dist/artifacts/*" - when: - instance: - - drone-publish.rancher.io - ref: - - refs/head/master - - refs/tags/* - event: - - tag - -- name: push-controller - image: rancher/drone-images:docker-s390x - volumes: - - name: docker - path: /var/run/docker.sock - settings: - dockerfile: package/Dockerfile - build_args: - - ARCH=s390x - - TAG=${DRONE_TAG}-s390x - password: - from_secret: docker_password - repo: "rancher/system-upgrade-controller" - tag: "${DRONE_TAG}-s390x" - username: - from_secret: docker_username - when: - instance: - - drone-publish.rancher.io - ref: - - refs/head/master - - refs/tags/* - event: - - tag - -volumes: -- name: docker - host: - path: /var/run/docker.sock - --- kind: pipeline name: arm64 @@ -266,7 +195,6 @@ steps: platforms: - linux/amd64 - linux/arm64 - - linux/s390x target: "rancher/system-upgrade-controller:${DRONE_TAG}" template: "rancher/system-upgrade-controller:${DRONE_TAG}-ARCH" when: @@ -301,7 +229,6 @@ steps: depends_on: - amd64 -- s390x - arm64 --- diff --git a/pkg/upgrade/job/job.go b/pkg/upgrade/job/job.go index d8a6cfdb00bae3688fe22d16198572598e98743e..1e9ce44634c8508149187fc7658a1d44d0c9982a 100644 --- a/pkg/upgrade/job/job.go +++ b/pkg/upgrade/job/job.go @@ -124,35 +124,48 @@ func New(plan *upgradeapiv1.Plan, node *corev1.Node, controllerName string) *bat labelPlanName := upgradeapi.LabelPlanName(plan.Name) nodeHostname := upgradenode.Hostname(node) shortNodeName := strings.SplitN(node.Name, ".", 2)[0] + + jobAnnotations := labels.Set{ + upgradeapi.AnnotationTTLSecondsAfterFinished: strconv.FormatInt(int64(TTLSecondsAfterFinished), 10), + } + podAnnotations := labels.Set{} + + for key, value := range plan.Annotations { + if !strings.Contains(key, "cattle.io/") { + jobAnnotations[key] = value + podAnnotations[key] = value + } + } + + jobLabels := labels.Set{ + upgradeapi.LabelController: controllerName, + upgradeapi.LabelExclusive: exclusiveString, + upgradeapi.LabelNode: node.Name, + upgradeapi.LabelPlan: plan.Name, + upgradeapi.LabelVersion: plan.Status.LatestVersion, + labelPlanName: plan.Status.LatestHash, + } + + for key, value := range plan.Labels { + if !strings.Contains(key, "cattle.io/") { + jobLabels[key] = value + } + } + job := &batchv1.Job{ ObjectMeta: metav1.ObjectMeta{ - Name: name.SafeConcatName("apply", plan.Name, "on", shortNodeName, "with", plan.Status.LatestHash), - Namespace: plan.Namespace, - Annotations: labels.Set{ - upgradeapi.AnnotationTTLSecondsAfterFinished: strconv.FormatInt(int64(TTLSecondsAfterFinished), 10), - }, - Labels: labels.Set{ - upgradeapi.LabelController: controllerName, - upgradeapi.LabelExclusive: exclusiveString, - upgradeapi.LabelNode: node.Name, - upgradeapi.LabelPlan: plan.Name, - upgradeapi.LabelVersion: plan.Status.LatestVersion, - labelPlanName: plan.Status.LatestHash, - }, + Name: name.SafeConcatName("apply", plan.Name, "on", shortNodeName, "with", plan.Status.LatestHash), + Namespace: plan.Namespace, + Annotations: jobAnnotations, + Labels: jobLabels, }, Spec: batchv1.JobSpec{ BackoffLimit: &BackoffLimit, TTLSecondsAfterFinished: &TTLSecondsAfterFinished, Template: corev1.PodTemplateSpec{ ObjectMeta: metav1.ObjectMeta{ - Labels: labels.Set{ - upgradeapi.LabelController: controllerName, - upgradeapi.LabelExclusive: exclusiveString, - upgradeapi.LabelNode: node.Name, - upgradeapi.LabelPlan: plan.Name, - upgradeapi.LabelVersion: plan.Status.LatestVersion, - labelPlanName: plan.Status.LatestHash, - }, + Annotations: podAnnotations, + Labels: jobLabels, }, Spec: corev1.PodSpec{ HostIPC: true, diff --git a/pkg/upgrade/job/job_suite_test.go b/pkg/upgrade/job/job_suite_test.go index 183fc2c64e190aad5285073bbaf30a2f944ceff3..93427a3984a0e276342ec6edb4c0abbef5c68349 100644 --- a/pkg/upgrade/job/job_suite_test.go +++ b/pkg/upgrade/job/job_suite_test.go @@ -87,5 +87,33 @@ var _ = Describe("Jobs", func() { Expect(*job.Spec.ActiveDeadlineSeconds).To(Equal(int64(300))) }) }) + + Context("When the Plan has annotations and labels", func() { + It("Copies the non-cattle.io metadata to the Job and Pod", func() { + plan.Annotations = make(map[string]string) + plan.Annotations["cattle.io/some-annotation"] = "foo" + plan.Annotations["plan.cattle.io/some-annotation"] = "bar" + plan.Annotations["some.other/annotation"] = "baz" + plan.Labels = make(map[string]string) + plan.Labels["cattle.io/some-label"] = "biz" + plan.Labels["plan.cattle.io/some-label"] = "buz" + plan.Labels["some.other/label"] = "bla" + + job := sucjob.New(plan, node, "foobar") + Expect(job.Annotations).To(Not(HaveKey("cattle.io/some-annotation"))) + Expect(job.Annotations).To(Not(HaveKey("plan.cattle.io/some-annotation"))) + Expect(job.Annotations).To(HaveKeyWithValue("some.other/annotation", "baz")) + Expect(job.Labels).To(Not(HaveKey("cattle.io/some-label"))) + Expect(job.Labels).To(Not(HaveKey("plan.cattle.io/some-label"))) + Expect(job.Labels).To(HaveKeyWithValue("some.other/label", "bla")) + + Expect(job.Spec.Template.Annotations).To(Not(HaveKey("cattle.io/some-annotation"))) + Expect(job.Spec.Template.Annotations).To(Not(HaveKey("plan.cattle.io/some-annotation"))) + Expect(job.Spec.Template.Annotations).To(HaveKeyWithValue("some.other/annotation", "baz")) + Expect(job.Spec.Template.Labels).To(Not(HaveKey("cattle.io/some-label"))) + Expect(job.Spec.Template.Labels).To(Not(HaveKey("plan.cattle.io/some-label"))) + Expect(job.Spec.Template.Labels).To(HaveKeyWithValue("some.other/label", "bla")) + }) + }) }) })