diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-09-19 04:45:44 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-09-19 04:45:44 +0300 |
commit | 85dc423f7090da0a52c73eb66faf22ddb20efff9 (patch) | |
tree | 9160f299afd8c80c038f08e1545be119f5e3f1e1 /lib/gitlab/kubernetes | |
parent | 15c2c8c66dbe422588e5411eee7e68f1fa440bb8 (diff) |
Add latest changes from gitlab-org/gitlab@13-4-stable-ee
Diffstat (limited to 'lib/gitlab/kubernetes')
-rw-r--r-- | lib/gitlab/kubernetes/cilium_network_policy.rb | 42 | ||||
-rw-r--r-- | lib/gitlab/kubernetes/kube_client.rb | 2 | ||||
-rw-r--r-- | lib/gitlab/kubernetes/network_policy.rb | 25 | ||||
-rw-r--r-- | lib/gitlab/kubernetes/network_policy_common.rb | 15 |
4 files changed, 54 insertions, 30 deletions
diff --git a/lib/gitlab/kubernetes/cilium_network_policy.rb b/lib/gitlab/kubernetes/cilium_network_policy.rb index 55afd2b586e..9043932bbe5 100644 --- a/lib/gitlab/kubernetes/cilium_network_policy.rb +++ b/lib/gitlab/kubernetes/cilium_network_policy.rb @@ -9,8 +9,12 @@ module Gitlab API_VERSION = "cilium.io/v2" KIND = 'CiliumNetworkPolicy' - def initialize(name:, namespace:, selector:, ingress:, resource_version:, labels: nil, creation_timestamp: nil, egress: nil) + # 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) @name = name + @description = description @namespace = namespace @labels = labels @creation_timestamp = creation_timestamp @@ -19,15 +23,7 @@ module Gitlab @ingress = ingress @egress = egress end - - def generate - ::Kubeclient::Resource.new.tap do |resource| - resource.kind = KIND - resource.apiVersion = API_VERSION - resource.metadata = metadata - resource.spec = spec - end - end + # rubocop:enable Metrics/ParameterLists def self.from_yaml(manifest) return unless manifest @@ -39,6 +35,7 @@ module Gitlab spec = policy[:spec] self.new( name: metadata[:name], + description: policy[:description], namespace: metadata[:namespace], resource_version: metadata[:resourceVersion], labels: metadata[:labels], @@ -58,6 +55,7 @@ module Gitlab spec = resource[:spec].to_h self.new( name: metadata[:name], + description: resource[:description], namespace: metadata[:namespace], resource_version: metadata[:resourceVersion], labels: metadata[:labels]&.to_h, @@ -68,21 +66,39 @@ module Gitlab ) end + override :resource + def resource + resource = { + apiVersion: API_VERSION, + kind: KIND, + metadata: metadata, + spec: spec + } + resource[:description] = description if description + resource + end + private - attr_reader :name, :namespace, :labels, :creation_timestamp, :resource_version, :ingress, :egress + attr_reader :name, :description, :namespace, :labels, :creation_timestamp, :resource_version, :ingress, :egress def selector @selector ||= {} end - override :spec + def metadata + meta = { name: name, namespace: namespace } + meta[:labels] = labels if labels + meta[:resourceVersion] = resource_version if resource_version + meta + end + def spec { endpointSelector: selector, ingress: ingress, egress: egress - } + }.compact end end end diff --git a/lib/gitlab/kubernetes/kube_client.rb b/lib/gitlab/kubernetes/kube_client.rb index 9e3cf58bb1e..fa68afd39f5 100644 --- a/lib/gitlab/kubernetes/kube_client.rb +++ b/lib/gitlab/kubernetes/kube_client.rb @@ -92,6 +92,7 @@ module Gitlab # group client delegate :create_network_policy, :get_network_policies, + :get_network_policy, :update_network_policy, :delete_network_policy, to: :networking_client @@ -100,6 +101,7 @@ module Gitlab # group client delegate :create_cilium_network_policy, :get_cilium_network_policies, + :get_cilium_network_policy, :update_cilium_network_policy, :delete_cilium_network_policy, to: :cilium_networking_client diff --git a/lib/gitlab/kubernetes/network_policy.rb b/lib/gitlab/kubernetes/network_policy.rb index 28810dc4453..c8e9b987443 100644 --- a/lib/gitlab/kubernetes/network_policy.rb +++ b/lib/gitlab/kubernetes/network_policy.rb @@ -6,6 +6,8 @@ module Gitlab include NetworkPolicyCommon extend ::Gitlab::Utils::Override + KIND = 'NetworkPolicy' + def initialize(name:, namespace:, selector:, ingress:, labels: nil, creation_timestamp: nil, policy_types: ["Ingress"], egress: nil) @name = name @namespace = namespace @@ -17,13 +19,6 @@ module Gitlab @egress = egress end - def generate - ::Kubeclient::Resource.new.tap do |resource| - resource.metadata = metadata - resource.spec = spec - end - end - def self.from_yaml(manifest) return unless manifest @@ -63,6 +58,15 @@ module Gitlab ) end + override :resource + def resource + { + kind: KIND, + metadata: metadata, + spec: spec + } + end + private attr_reader :name, :namespace, :labels, :creation_timestamp, :policy_types, :ingress, :egress @@ -71,7 +75,12 @@ module Gitlab @selector ||= {} end - override :spec + def metadata + meta = { name: name, namespace: namespace } + meta[:labels] = labels if labels + meta + end + def spec { podSelector: selector, diff --git a/lib/gitlab/kubernetes/network_policy_common.rb b/lib/gitlab/kubernetes/network_policy_common.rb index 3b6e46d21ef..99517454508 100644 --- a/lib/gitlab/kubernetes/network_policy_common.rb +++ b/lib/gitlab/kubernetes/network_policy_common.rb @@ -5,6 +5,10 @@ module Gitlab module NetworkPolicyCommon DISABLED_BY_LABEL = :'network-policy.gitlab.com/disabled_by' + def generate + ::Kubeclient::Resource.new(resource) + end + def as_json(opts = nil) { name: name, @@ -46,19 +50,12 @@ module Gitlab private - def metadata - meta = { name: name, namespace: namespace } - meta[:labels] = labels if labels - meta[:resourceVersion] = resource_version if defined?(resource_version) - meta - end - - def spec + def resource raise NotImplementedError end def manifest - YAML.dump({ metadata: metadata, spec: spec }.deep_stringify_keys) + YAML.dump(resource.deep_stringify_keys) end end end |