Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-08-19 06:09:59 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-08-19 06:09:59 +0300
commit7fdacd20dec0db3507643c7e89e9f3d35892adef (patch)
tree524b5d61aa7804096d33d555181480802f12eea7 /lib/gitlab
parent57a4861dd1841a53cb966b566b1eee4adb254675 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib/gitlab')
-rw-r--r--lib/gitlab/kubernetes/cilium_network_policy.rb89
-rw-r--r--lib/gitlab/kubernetes/network_policy.rb7
-rw-r--r--lib/gitlab/kubernetes/network_policy_common.rb8
3 files changed, 97 insertions, 7 deletions
diff --git a/lib/gitlab/kubernetes/cilium_network_policy.rb b/lib/gitlab/kubernetes/cilium_network_policy.rb
new file mode 100644
index 00000000000..55afd2b586e
--- /dev/null
+++ b/lib/gitlab/kubernetes/cilium_network_policy.rb
@@ -0,0 +1,89 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Kubernetes
+ class CiliumNetworkPolicy
+ include NetworkPolicyCommon
+ extend ::Gitlab::Utils::Override
+
+ API_VERSION = "cilium.io/v2"
+ KIND = 'CiliumNetworkPolicy'
+
+ def initialize(name:, namespace:, selector:, ingress:, resource_version:, labels: nil, creation_timestamp: nil, egress: nil)
+ @name = name
+ @namespace = namespace
+ @labels = labels
+ @creation_timestamp = creation_timestamp
+ @selector = selector
+ @resource_version = resource_version
+ @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
+
+ def self.from_yaml(manifest)
+ return unless manifest
+
+ policy = YAML.safe_load(manifest, symbolize_names: true)
+ return if !policy[:metadata] || !policy[:spec]
+
+ metadata = policy[:metadata]
+ spec = policy[:spec]
+ self.new(
+ name: metadata[:name],
+ namespace: metadata[:namespace],
+ resource_version: metadata[:resourceVersion],
+ labels: metadata[:labels],
+ selector: spec[:endpointSelector],
+ ingress: spec[:ingress],
+ egress: spec[:egress]
+ )
+ rescue Psych::SyntaxError, Psych::DisallowedClass
+ nil
+ end
+
+ def self.from_resource(resource)
+ return unless resource
+ return if !resource[:metadata] || !resource[:spec]
+
+ metadata = resource[:metadata]
+ spec = resource[:spec].to_h
+ self.new(
+ name: metadata[:name],
+ namespace: metadata[:namespace],
+ resource_version: metadata[:resourceVersion],
+ labels: metadata[:labels]&.to_h,
+ creation_timestamp: metadata[:creationTimestamp],
+ selector: spec[:endpointSelector],
+ ingress: spec[:ingress],
+ egress: spec[:egress]
+ )
+ end
+
+ private
+
+ attr_reader :name, :namespace, :labels, :creation_timestamp, :resource_version, :ingress, :egress
+
+ def selector
+ @selector ||= {}
+ end
+
+ override :spec
+ def spec
+ {
+ endpointSelector: selector,
+ ingress: ingress,
+ egress: egress
+ }
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/kubernetes/network_policy.rb b/lib/gitlab/kubernetes/network_policy.rb
index 53498e45242..28810dc4453 100644
--- a/lib/gitlab/kubernetes/network_policy.rb
+++ b/lib/gitlab/kubernetes/network_policy.rb
@@ -17,6 +17,13 @@ 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
diff --git a/lib/gitlab/kubernetes/network_policy_common.rb b/lib/gitlab/kubernetes/network_policy_common.rb
index 0c408140121..3b6e46d21ef 100644
--- a/lib/gitlab/kubernetes/network_policy_common.rb
+++ b/lib/gitlab/kubernetes/network_policy_common.rb
@@ -5,13 +5,6 @@ module Gitlab
module NetworkPolicyCommon
DISABLED_BY_LABEL = :'network-policy.gitlab.com/disabled_by'
- def generate
- ::Kubeclient::Resource.new.tap do |resource|
- resource.metadata = metadata
- resource.spec = spec
- end
- end
-
def as_json(opts = nil)
{
name: name,
@@ -56,6 +49,7 @@ module Gitlab
def metadata
meta = { name: name, namespace: namespace }
meta[:labels] = labels if labels
+ meta[:resourceVersion] = resource_version if defined?(resource_version)
meta
end