mirror of
https://github.com/ansible/awx.git
synced 2026-03-05 10:41:05 -03:30
Merge pull request #8487 from epfl-si/feature/I-want-my-own-metadata
[feature] Keep pod_spec_override-provided pod labels
Reviewed-by: Ryan Petrello
https://github.com/ryanpetrello
This commit is contained in:
@@ -12,6 +12,24 @@ from awx.main.utils.common import parse_yaml_or_json
|
|||||||
logger = logging.getLogger('awx.main.scheduler')
|
logger = logging.getLogger('awx.main.scheduler')
|
||||||
|
|
||||||
|
|
||||||
|
def deepmerge(a, b):
|
||||||
|
"""
|
||||||
|
Merge dict structures and return the result.
|
||||||
|
|
||||||
|
>>> a = {'first': {'all_rows': {'pass': 'dog', 'number': '1'}}}
|
||||||
|
>>> b = {'first': {'all_rows': {'fail': 'cat', 'number': '5'}}}
|
||||||
|
>>> import pprint; pprint.pprint(deepmerge(a, b))
|
||||||
|
{'first': {'all_rows': {'fail': 'cat', 'number': '5', 'pass': 'dog'}}}
|
||||||
|
"""
|
||||||
|
if isinstance(a, dict) and isinstance(b, dict):
|
||||||
|
return dict([(k, deepmerge(a.get(k), b.get(k)))
|
||||||
|
for k in set(a.keys()).union(b.keys())])
|
||||||
|
elif b is None:
|
||||||
|
return a
|
||||||
|
else:
|
||||||
|
return b
|
||||||
|
|
||||||
|
|
||||||
class PodManager(object):
|
class PodManager(object):
|
||||||
|
|
||||||
def __init__(self, task=None):
|
def __init__(self, task=None):
|
||||||
@@ -128,11 +146,13 @@ class PodManager(object):
|
|||||||
pod_spec = {**default_pod_spec, **pod_spec_override}
|
pod_spec = {**default_pod_spec, **pod_spec_override}
|
||||||
|
|
||||||
if self.task:
|
if self.task:
|
||||||
pod_spec['metadata']['name'] = self.pod_name
|
pod_spec['metadata'] = deepmerge(
|
||||||
pod_spec['metadata']['labels'] = {
|
pod_spec.get('metadata', {}),
|
||||||
'ansible-awx': settings.INSTALL_UUID,
|
dict(name=self.pod_name,
|
||||||
'ansible-awx-job-id': str(self.task.id)
|
labels={
|
||||||
}
|
'ansible-awx': settings.INSTALL_UUID,
|
||||||
|
'ansible-awx-job-id': str(self.task.id)
|
||||||
|
}))
|
||||||
pod_spec['spec']['containers'][0]['name'] = self.pod_name
|
pod_spec['spec']['containers'][0]['name'] = self.pod_name
|
||||||
|
|
||||||
return pod_spec
|
return pod_spec
|
||||||
|
|||||||
Reference in New Issue
Block a user