mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-04-24 19:31:26 -07:00
docker_* modules: improve diff (#48546)
* Add difference tracking tool * Improve --diff mode for docker_container. * Improve diffs of sets by ordering the sets. * Rewrite imports, get rid of HAS_DOCKER_PY_x variables and use docker_version instead. * Rename container -> active (more generic). * Add --diff for docker_volume. Change old diff output. * Add --diff for docker_network. Change old diff output. * Add --diff for docker_swarm_service. * Add changelog. * Add entry for porting guide on docker_network and docker_volume.
This commit is contained in:
parent
a67e9f89e7
commit
891687284f
13 changed files with 356 additions and 114 deletions
|
@ -20,7 +20,7 @@ import os
|
|||
import re
|
||||
from distutils.version import LooseVersion
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule, env_fallback
|
||||
from ansible.module_utils.basic import AnsibleModule, env_fallback, jsonify
|
||||
from ansible.module_utils.six.moves.urllib.parse import urlparse
|
||||
from ansible.module_utils.parsing.convert_bool import BOOLEANS_TRUE, BOOLEANS_FALSE
|
||||
|
||||
|
@ -651,3 +651,57 @@ def compare_generic(a, b, method, type):
|
|||
if not found:
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
class DifferenceTracker(object):
|
||||
def __init__(self):
|
||||
self._diff = []
|
||||
|
||||
def add(self, name, parameter=None, active=None):
|
||||
self._diff.append(dict(
|
||||
name=name,
|
||||
parameter=parameter,
|
||||
active=active,
|
||||
))
|
||||
|
||||
def merge(self, other_tracker):
|
||||
self._diff.extend(other_tracker._diff)
|
||||
|
||||
@property
|
||||
def empty(self):
|
||||
return len(self._diff) == 0
|
||||
|
||||
def get_before_after(self):
|
||||
'''
|
||||
Return texts ``before`` and ``after``.
|
||||
'''
|
||||
before = dict()
|
||||
after = dict()
|
||||
for item in self._diff:
|
||||
before[item['name']] = item['active']
|
||||
after[item['name']] = item['parameter']
|
||||
return (
|
||||
jsonify(before, sort_keys=True, indent=2),
|
||||
jsonify(after, sort_keys=True, indent=2),
|
||||
)
|
||||
|
||||
def get_legacy_docker_container_diffs(self):
|
||||
'''
|
||||
Return differences in the docker_container legacy format.
|
||||
'''
|
||||
result = []
|
||||
for entry in self._diff:
|
||||
item = dict()
|
||||
item[entry['name']] = dict(
|
||||
parameter=entry['parameter'],
|
||||
container=entry['active'],
|
||||
)
|
||||
result.append(item)
|
||||
return result
|
||||
|
||||
def get_legacy_docker_diffs(self):
|
||||
'''
|
||||
Return differences in the docker_container legacy format.
|
||||
'''
|
||||
result = [entry['name'] for entry in self._diff]
|
||||
return result
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue