k8s - allow resource definition using generateName (#238)

k8s - allow resource definition using generateName

SUMMARY

#35

ISSUE TYPE


Feature Pull Request

COMPONENT NAME

k8s
ADDITIONAL INFORMATION



- name: create pod using generateName
  k8s:
    namespace: test
    generate_name: pod-
    definition:
       kind: Pod
       spec:
          containers:
          - name: py
            image: python:3.7-alpine

- name: create pod using generateName
  k8s:
    namespace: test
    definition:
       kind: Pod
       metadata:
          generateName: pod-
       spec:
          containers:
          - name: py
            image: python:3.7-alpine

Reviewed-by: Mike Graves <mgraves@redhat.com>
Reviewed-by: None <None>
Reviewed-by: None <None>
This commit is contained in:
abikouo
2021-09-30 16:58:50 +02:00
committed by GitHub
parent 8e46f92703
commit c65512357d
6 changed files with 261 additions and 11 deletions

View File

@@ -44,14 +44,21 @@ def sorted_dict(unsorted_dict):
def generate_hash(resource):
# Get name from metadata
resource['name'] = resource.get('metadata', {}).get('name', '')
if resource['kind'] == 'ConfigMap':
marshalled = marshal(sorted_dict(resource), ['data', 'kind', 'name'])
metada = resource.get('metadata', {})
key = 'name'
resource['name'] = metada.get('name', '')
generate_name = metada.get('generateName', '')
if resource['name'] == '' and generate_name:
del(resource['name'])
key = 'generateName'
resource['generateName'] = generate_name
if resource['kind'] == 'ConfigMap':
marshalled = marshal(sorted_dict(resource), ['data', 'kind', key])
del(resource[key])
return encode(marshalled)
if resource['kind'] == 'Secret':
marshalled = marshal(sorted_dict(resource), ['data', 'kind', 'name', 'type'])
del(resource['name'])
marshalled = marshal(sorted_dict(resource), ['data', 'kind', key, 'type'])
del(resource[key])
return encode(marshalled)
raise NotImplementedError