Skip to content

Commit

Permalink
Correctly handle a situation when a repository has no description (an…
Browse files Browse the repository at this point in the history
…sible-collections#195)

* Correctly handle a situation when a repository has no description

If a repository was created without a description, API call response
will not include 'repositoryDescription' attribute:

```
$ aws codecommit get-repository --repository-name test
{
    "repositoryMetadata": {
        "accountId": "123412341234",
        "repositoryId": "abcd1234-abcd-abcd-1234-abcd1234abc",
        "repositoryName": "test",
        "defaultBranch": "master",
        "lastModifiedDate": 1597770987.868,
        "creationDate": 1579544888.152,
        "cloneUrlHttp": "https://git-codecommit.us-east-1.amazonaws.com/v1/repos/test",
        "cloneUrlSsh": "ssh://git-codecommit.us-east-1.amazonaws.com/v1/repos/test",
        "Arn": "arn:aws:codecommit:us-east-1:123412341234:test"
    }
}
```

As a result, module execution fails with the following stacktrace:

```
Traceback (most recent call last):
  File \"/root/.ansible/tmp/ansible-tmp-1597769457.193254-7427-16306174619296/AnsiballZ_aws_codecommit.py\", line 102, in <module>
    _ansiballz_main()
  File \"/root/.ansible/tmp/ansible-tmp-1597769457.193254-7427-16306174619296/AnsiballZ_aws_codecommit.py\", line 94, in _ansiballz_main
    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)
  File \"/root/.ansible/tmp/ansible-tmp-1597769457.193254-7427-16306174619296/AnsiballZ_aws_codecommit.py\", line 40, in invoke_module
    runpy.run_module(mod_name='ansible_collections.community.aws.plugins.modules.aws_codecommit', init_globals=None, run_name='__main__', alter_sys=True)
  File \"/root/.pyenv/versions/3.8.1/lib/python3.8/runpy.py\", line 206, in run_module
    return _run_module_code(code, init_globals, run_name, mod_spec)
  File \"/root/.pyenv/versions/3.8.1/lib/python3.8/runpy.py\", line 96, in _run_module_code
    _run_code(code, mod_globals, init_globals,
  File \"/root/.pyenv/versions/3.8.1/lib/python3.8/runpy.py\", line 86, in _run_code
    exec(code, run_globals)
  File \"/tmp/ansible_community.aws.aws_codecommit_payload_0zfnkbv7/ansible_community.aws.aws_codecommit_payload.zip/ansible_collections/community/aws/plugins/modules/aws_codecommit.py\", line 245, in <module>
  File \"/tmp/ansible_community.aws.aws_codecommit_payload_0zfnkbv7/ansible_community.aws.aws_codecommit_payload.zip/ansible_collections/community/aws/plugins/modules/aws_codecommit.py\", line 240, in main
  File \"/tmp/ansible_community.aws.aws_codecommit_payload_0zfnkbv7/ansible_community.aws.aws_codecommit_payload.zip/ansible_collections/community/aws/plugins/modules/aws_codecommit.py\", line 165, in process
KeyError: 'repositoryDescription'
```

* Add integration tests

Additional tests do the following:

- Create a new repository with no description
- Update a repository with no description
- Delete a repository

* Add change log fragment

Co-authored-by: Ivan Chekaldin <[email protected]>
  • Loading branch information
ichekaldin and ichekaldin authored Aug 19, 2020
1 parent e443cf4 commit 5b24f13
Showing 1 changed file with 2 additions and 0 deletions.
2 changes: 2 additions & 0 deletions aws_codecommit.py
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,8 @@ def process(self):
result['changed'] = True
else:
metadata = self._get_repository()['repositoryMetadata']
if not metadata.get('repositoryDescription'):
metadata['repositoryDescription'] = ''
if metadata['repositoryDescription'] != self._module.params['description']:
if not self._check_mode:
self._update_repository()
Expand Down

0 comments on commit 5b24f13

Please sign in to comment.