diff options
author | Kamil Trzciński <ayufan@ayufan.eu> | 2018-10-23 10:36:28 +0000 |
---|---|---|
committer | Kamil Trzciński <ayufan@ayufan.eu> | 2018-10-23 10:36:28 +0000 |
commit | f8f447b83ef04c36d3362de46db19d19b3ac1578 (patch) | |
tree | 07ac712d8975273b965c2e464a6983dfd2777ed1 /lib/gitlab/kubernetes/role_binding.rb | |
parent | 76dadad6e51d49dd946d526cab5b8bf0133052bc (diff) | |
parent | 1e4d61500039ad84e2ab95b58910f592994f56e5 (diff) | |
download | gitlab-ce-f8f447b83ef04c36d3362de46db19d19b3ac1578.tar.gz |
Merge branch 'add-role-binding-to-kubeclient' into 'master'
Add RoleBinding method and class
See merge request gitlab-org/gitlab-ce!22524
Diffstat (limited to 'lib/gitlab/kubernetes/role_binding.rb')
-rw-r--r-- | lib/gitlab/kubernetes/role_binding.rb | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/lib/gitlab/kubernetes/role_binding.rb b/lib/gitlab/kubernetes/role_binding.rb new file mode 100644 index 00000000000..4f3ee040bf2 --- /dev/null +++ b/lib/gitlab/kubernetes/role_binding.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +module Gitlab + module Kubernetes + class RoleBinding + attr_reader :role_name, :namespace, :service_account_name + + def initialize(role_name:, namespace:, service_account_name:) + @role_name = role_name + @namespace = namespace + @service_account_name = service_account_name + end + + def generate + ::Kubeclient::Resource.new.tap do |resource| + resource.metadata = metadata + resource.roleRef = role_ref + resource.subjects = subjects + end + end + + private + + def metadata + { name: "gitlab-#{namespace}", namespace: namespace } + end + + def role_ref + { + apiGroup: 'rbac.authorization.k8s.io', + kind: 'Role', + name: role_name + } + end + + def subjects + [ + { + kind: 'ServiceAccount', + name: service_account_name, + namespace: namespace + } + ] + end + end + end +end |