diff options
Diffstat (limited to 'lib/gitlab/kubernetes')
-rw-r--r-- | lib/gitlab/kubernetes/cilium_network_policy.rb | 8 | ||||
-rw-r--r-- | lib/gitlab/kubernetes/kubectl_cmd.rb | 2 | ||||
-rw-r--r-- | lib/gitlab/kubernetes/pod_cmd.rb | 15 |
3 files changed, 22 insertions, 3 deletions
diff --git a/lib/gitlab/kubernetes/cilium_network_policy.rb b/lib/gitlab/kubernetes/cilium_network_policy.rb index 9043932bbe5..f77b3e8de99 100644 --- a/lib/gitlab/kubernetes/cilium_network_policy.rb +++ b/lib/gitlab/kubernetes/cilium_network_policy.rb @@ -12,7 +12,7 @@ module Gitlab # We are modeling existing kubernetes resource and don't have # control over amount of parameters. # rubocop:disable Metrics/ParameterLists - def initialize(name:, namespace:, selector:, ingress:, resource_version: nil, description: nil, labels: nil, creation_timestamp: nil, egress: nil) + def initialize(name:, namespace:, selector:, ingress:, resource_version: nil, description: nil, labels: nil, creation_timestamp: nil, egress: nil, annotations: nil) @name = name @description = description @namespace = namespace @@ -22,6 +22,7 @@ module Gitlab @resource_version = resource_version @ingress = ingress @egress = egress + @annotations = annotations end # rubocop:enable Metrics/ParameterLists @@ -37,6 +38,7 @@ module Gitlab name: metadata[:name], description: policy[:description], namespace: metadata[:namespace], + annotations: metadata[:annotations], resource_version: metadata[:resourceVersion], labels: metadata[:labels], selector: spec[:endpointSelector], @@ -57,6 +59,7 @@ module Gitlab name: metadata[:name], description: resource[:description], namespace: metadata[:namespace], + annotations: metadata[:annotations]&.to_h, resource_version: metadata[:resourceVersion], labels: metadata[:labels]&.to_h, creation_timestamp: metadata[:creationTimestamp], @@ -80,7 +83,7 @@ module Gitlab private - attr_reader :name, :description, :namespace, :labels, :creation_timestamp, :resource_version, :ingress, :egress + attr_reader :name, :description, :namespace, :labels, :creation_timestamp, :resource_version, :ingress, :egress, :annotations def selector @selector ||= {} @@ -90,6 +93,7 @@ module Gitlab meta = { name: name, namespace: namespace } meta[:labels] = labels if labels meta[:resourceVersion] = resource_version if resource_version + meta[:annotations] = annotations if annotations meta end diff --git a/lib/gitlab/kubernetes/kubectl_cmd.rb b/lib/gitlab/kubernetes/kubectl_cmd.rb index e8fde28b44d..f3ac19e210a 100644 --- a/lib/gitlab/kubernetes/kubectl_cmd.rb +++ b/lib/gitlab/kubernetes/kubectl_cmd.rb @@ -17,7 +17,7 @@ module Gitlab def delete_crds_from_group(group) api_resources_args = %w(-o name --api-group).push(group) - api_resources(*api_resources_args) + " | xargs " + delete('--ignore-not-found', 'crd') + PodCmd.retry_command(api_resources(*api_resources_args) + " | xargs -r " + delete('--ignore-not-found', 'crd')) end def api_resources(*args) diff --git a/lib/gitlab/kubernetes/pod_cmd.rb b/lib/gitlab/kubernetes/pod_cmd.rb new file mode 100644 index 00000000000..e4c25424e69 --- /dev/null +++ b/lib/gitlab/kubernetes/pod_cmd.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module Gitlab + module Kubernetes + # Miscellaneous commands that run in the helm-install-image pod, tuned to + # the idiosynchrasies of the default shell of helm-install-image + module PodCmd + class << self + def retry_command(command, times: 3) + "for i in $(seq 1 #{times.to_i}); do #{command} && s=0 && break || s=$?; sleep 1s; echo \"Retrying ($i)...\"; done; (exit $s)" + end + end + end + end +end |