Skip to content

Commit c32a640

Browse files
authored
Merge pull request #121 from ApplauseOSS/feat/k8s-service-account
feat: support for k8s ServiceAccount
2 parents 940e334 + be42e35 commit c32a640

File tree

5 files changed

+83
-1
lines changed

5 files changed

+83
-1
lines changed
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import copy
2+
3+
from deploy_config_generator.utils import yaml_dump, underscore_to_camelcase
4+
from deploy_config_generator.output import kube_common
5+
6+
7+
class OutputPlugin(kube_common.OutputPlugin):
8+
9+
NAME = 'kube_serviceaccount'
10+
DESCR = 'Kubernetes service account output plugin'
11+
FILE_EXT = '.yaml'
12+
13+
DEFAULT_CONFIG = {
14+
'fields': {
15+
'kube_serviceaccounts': dict(
16+
metadata=dict(
17+
type='dict',
18+
required=True,
19+
fields=copy.deepcopy(kube_common.METADATA_FIELD_SPEC),
20+
),
21+
automount_service_account_token=dict(
22+
type='bool',
23+
),
24+
secrets=dict(
25+
type='list',
26+
subtype='dict',
27+
fields=dict(
28+
name=dict(
29+
type='str',
30+
),
31+
),
32+
),
33+
image_pull_secrets=dict(
34+
type='list',
35+
subtype='dict',
36+
fields=dict(
37+
name=dict(
38+
type='str',
39+
),
40+
),
41+
),
42+
),
43+
}
44+
}
45+
46+
def generate_output(self, app_vars):
47+
# Basic structure
48+
data = {
49+
'apiVersion': 'v1',
50+
'kind': 'ServiceAccount',
51+
}
52+
data['metadata'] = self.build_metadata(app_vars['APP']['metadata'])
53+
for field in ('automount_service_account_token', 'secrets', 'image_pull_secrets'):
54+
if app_vars['APP'].get(field, None) is not None and app_vars['APP'][field]:
55+
data[underscore_to_camelcase(field)] = app_vars['APP'][field]
56+
57+
data = self._template.render_template(data, app_vars)
58+
output = yaml_dump(data)
59+
return (output, self.get_output_filename_suffix(data))

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ def run(self):
5353

5454
setup(
5555
name='deploy-config-generator',
56-
version='2.26.0',
56+
version='2.27.0',
5757
url='https://github.com/ApplauseOSS/deploy-config-generator',
5858
license='MIT',
5959
description='Utility to generate service deploy configurations',

tests/integration/kube_basic/deploy/config.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,3 +180,14 @@ kube_configmaps:
180180
test1
181181
test2
182182
test3
183+
184+
kube_serviceaccounts:
185+
- metadata:
186+
name: test-serviceaccount1
187+
- metadata:
188+
name: test-serviceaccount2
189+
automount_service_account_token: false
190+
secrets:
191+
- name: foo-bar
192+
image_pull_secrets:
193+
- name: bar-baz
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
apiVersion: v1
2+
kind: ServiceAccount
3+
metadata:
4+
name: test-serviceaccount1
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
apiVersion: v1
2+
imagePullSecrets:
3+
- name: bar-baz
4+
kind: ServiceAccount
5+
metadata:
6+
name: test-serviceaccount2
7+
secrets:
8+
- name: foo-bar

0 commit comments

Comments
 (0)