Skip to content

Commit

Permalink
Restore changes from 62871 lost in rebase
Browse files Browse the repository at this point in the history
  • Loading branch information
jillr committed Dec 18, 2019
1 parent 7b7e641 commit d391e61
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 7 deletions.
39 changes: 33 additions & 6 deletions lib/ansible/modules/cloud/amazon/ecs_ecr.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,12 +66,14 @@
- JSON or dict that represents the new lifecycle policy
required: false
version_added: '2.10'
type: json
purge_lifecycle_policy:
description:
- if yes, remove the lifecycle policy from the repository
required: false
default: false
version_added: '2.10'
type: bool
state:
description:
- Create or destroy the repository.
Expand Down Expand Up @@ -123,6 +125,11 @@
name: needs-no-policy
purge_policy: yes
- name: create immutable ecr-repo
ecs_ecr:
name: super/cool
image_tag_mutability: immutable
- name: set-lifecycle-policy
ecs_ecr:
name: needs-lifecycle-policy
Expand All @@ -138,10 +145,10 @@
action:
type: expire
- name: delete-lifecycle-policy
- name: purge-lifecycle-policy
ecs_ecr:
name: needs-no-lifecycle-policy
delete_lifecycle_policy: yes
purge_lifecycle_policy: true
'''

RETURN = '''
Expand Down Expand Up @@ -298,6 +305,23 @@ def delete_repository_policy(self, registry_id, name):
return policy
return None

def put_image_tag_mutability(self, registry_id, name, new_mutability_configuration):
repo = self.get_repository(registry_id, name)
current_mutability_configuration = repo.get('imageTagMutability')

if current_mutability_configuration != new_mutability_configuration:
if not self.check_mode:
self.ecr.put_image_tag_mutability(
repositoryName=name,
imageTagMutability=new_mutability_configuration,
**build_kwargs(registry_id))
else:
self.skipped = True
self.changed = True

repo['imageTagMutability'] = new_mutability_configuration
return repo

def get_lifecycle_policy(self, registry_id, name):
try:
res = self.ecr.get_lifecycle_policy(
Expand Down Expand Up @@ -328,7 +352,7 @@ def put_lifecycle_policy(self, registry_id, name, policy_text):
'could not find repository {0}'.format(printable))
return

def delete_lifecycle_policy(self, registry_id, name):
def purge_lifecycle_policy(self, registry_id, name):
if not self.check_mode:
policy = self.ecr.delete_lifecycle_policy(
repositoryName=name, **build_kwargs(registry_id))
Expand Down Expand Up @@ -361,8 +385,9 @@ def run(ecr, params):
purge_policy = params['purge_policy']
registry_id = params['registry_id']
force_set_policy = params['force_set_policy']
image_tag_mutability = params['image_tag_mutability'].upper()
lifecycle_policy_text = params['lifecycle_policy']
delete_lifecycle_policy = params['delete_lifecycle_policy']
purge_lifecycle_policy = params['purge_lifecycle_policy']

# Parse policies, if they are given
try:
Expand Down Expand Up @@ -403,7 +428,7 @@ def run(ecr, params):
result['lifecycle_policy'] = None

if original_lifecycle_policy:
ecr.delete_lifecycle_policy(registry_id, name)
ecr.purge_lifecycle_policy(registry_id, name)
result['changed'] = True

elif lifecycle_policy_text is not None:
Expand Down Expand Up @@ -491,14 +516,16 @@ def main():
default='present'),
force_set_policy=dict(required=False, type='bool', default=False),
policy=dict(required=False, type='json'),
image_tag_mutability=dict(required=False, choices=['mutable', 'immutable'],
default='mutable'),
purge_policy=dict(required=False, type='bool', aliases=['delete_policy']),
lifecycle_policy=dict(required=False, type='json'),
purge_lifecycle_policy=dict(required=False, type='bool')))

module = AnsibleModule(argument_spec=argument_spec,
supports_check_mode=True,
mutually_exclusive=[
['policy', 'delete_policy', 'purge_policy'],
['policy', 'purge_policy'],
['lifecycle_policy', 'purge_lifecycle_policy']])
if module.params.get('delete_policy'):
module.deprecate(
Expand Down
2 changes: 1 addition & 1 deletion test/integration/targets/ecs_ecr/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -290,7 +290,7 @@
- result is changed
- not result.created
- result.lifecycle_policy is defined
- result.lifecycle_policy|from_json|selectattr("rules")|length == 1
- result.lifecycle_policy.rules|length == 1


- name: When in check mode, and purging a lifecyle policy that exists
Expand Down

0 comments on commit d391e61

Please sign in to comment.