From e0facac8ebdcadcec9fbc089128920d204cc31d0 Mon Sep 17 00:00:00 2001 From: Curtis Castrapel Date: Thu, 11 May 2023 15:42:24 -0700 Subject: [PATCH 1/2] Add IAMbic converter - To ease conversion between IAM and IAMbic policy syntax --- .vscode/launch.json | 12 ++++ .../2-convert-aws-json-to-iambic-yaml.mdx | 3 + docs/web/docs/2-how_to_guides/1-AWS/index.mdx | 8 +++ docs/web/static/img/generic/iambic_iamops.png | Bin 0 -> 39695 bytes .../generic/iambic_template_repository.png | Bin 0 -> 62815 bytes iambic/core/utils.py | 54 ++++++++++++++++++ iambic/main.py | 12 ++++ poetry.lock | 15 ++++- pyproject.toml | 1 + test/core/test_utils.py | 30 ++++++++++ 10 files changed, 133 insertions(+), 2 deletions(-) create mode 100644 docs/web/docs/2-how_to_guides/1-AWS/2-convert-aws-json-to-iambic-yaml.mdx create mode 100644 docs/web/docs/2-how_to_guides/1-AWS/index.mdx create mode 100644 docs/web/static/img/generic/iambic_iamops.png create mode 100644 docs/web/static/img/generic/iambic_template_repository.png diff --git a/.vscode/launch.json b/.vscode/launch.json index d52012137..b4bcce84a 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -182,6 +182,18 @@ ], "justMyCode": true }, + { + "name": "Iambic: Convert", + "type": "python", + "request": "launch", + "module": "iambic.main", + "console": "integratedTerminal", + "envFile": "${workspaceFolder}/.env", + "args": [ + "convert", + ], + "justMyCode": true + }, { "name": "Iambic: Lambda App Import", "type": "python", diff --git a/docs/web/docs/2-how_to_guides/1-AWS/2-convert-aws-json-to-iambic-yaml.mdx b/docs/web/docs/2-how_to_guides/1-AWS/2-convert-aws-json-to-iambic-yaml.mdx new file mode 100644 index 000000000..ec7523acf --- /dev/null +++ b/docs/web/docs/2-how_to_guides/1-AWS/2-convert-aws-json-to-iambic-yaml.mdx @@ -0,0 +1,3 @@ +--- +title: Converting IAM Policy Syntax to IAMbic YAML +--- \ No newline at end of file diff --git a/docs/web/docs/2-how_to_guides/1-AWS/index.mdx b/docs/web/docs/2-how_to_guides/1-AWS/index.mdx new file mode 100644 index 000000000..ec84d0918 --- /dev/null +++ b/docs/web/docs/2-how_to_guides/1-AWS/index.mdx @@ -0,0 +1,8 @@ +--- +title: AWS +toc_min_heading_level: 2 +toc_max_heading_level: 5 +--- + +This material contains guidance for specific AWS scenarios. For information on setting up +and running IAMbic for AWS, please refer to the [AWS Getting Started guide](/getting_started/aws). diff --git a/docs/web/static/img/generic/iambic_iamops.png b/docs/web/static/img/generic/iambic_iamops.png new file mode 100644 index 0000000000000000000000000000000000000000..592b5ee2b639ce871bba83dd6560eeea2e3caa12 GIT binary patch literal 39695 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 Union[dict, list, str]: + """ + Recursively traverse a dictionary or list, converting all dictionary keys using the provided conversion function. + + :param obj: The dictionary or list to convert. + :param convert_function: A function that takes a string and returns a string. + :return: The converted dictionary or list. + """ + if isinstance(obj, list): + return [recursively_convert_dict_keys(i, convert_function) for i in obj] + elif isinstance(obj, dict): + new_dict = {} + for k, v in obj.items(): + new_key = convert_function(k) + new_dict[new_key] = recursively_convert_dict_keys(v, convert_function) + return new_dict + return obj + + +def convert_between_json_and_yaml(input_string: str) -> str: + """ + Convert a string from AWS PascalCase JSON to IAMbic compatible YAML, or visa-versa. + When converting from JSON to YAML, dictionary keys are converted from PascalCase to snake_case. + When converting from YAML to JSON, dictionary keys are converted from snake_case to PascalCase. + + :param input_string: The input string, which should be valid JSON or YAML. + :return: The converted string. + """ + from json import JSONDecodeError + + from stringcase import pascalcase, snakecase + + from iambic.core.utils import yaml + + try: + # Try parsing the input as JSON + data = json.loads(input_string) + # Convert keys from PascalCase/camelCase to snake_case + converted_data = recursively_convert_dict_keys(data, snakecase) + # Convert to YAML + output = yaml.dump(converted_data) + except JSONDecodeError: + # If the input is not JSON, try parsing it as YAML + data = yaml.load(input_string) + # Convert keys from snake_case to PascalCase + converted_data = recursively_convert_dict_keys(data, pascalcase) + # Convert to JSON + output = json.dumps(converted_data, indent=2) + + return output diff --git a/iambic/main.py b/iambic/main.py index 95c39b9f0..12ec1f6f7 100644 --- a/iambic/main.py +++ b/iambic/main.py @@ -24,6 +24,7 @@ from iambic.core.models import ExecutionMessage, TemplateChangeDetails from iambic.core.parser import load_templates from iambic.core.utils import ( + convert_between_json_and_yaml, exceptions_in_proposed_changes, gather_templates, init_writable_directory, @@ -474,6 +475,17 @@ def setup(repo_dir: str, is_more_options: bool): ConfigurationWizard(repo_dir, is_more_options=is_more_options).run() +@cli.command() +def convert(): + """ + Convert a string from AWS PascalCase JSON to IAMbic compatible YAML, or visa-versa. + """ + user_input = click.edit() + if user_input is not None: + output = convert_between_json_and_yaml(user_input) + click.echo(output) + + if __name__ == "__main__": init_writable_directory() cli() diff --git a/poetry.lock b/poetry.lock index 541c9b70d..b7c57ec2a 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.4.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.4.0 and should not be changed by hand. [[package]] name = "aenum" @@ -3100,6 +3100,17 @@ ecdsa = ">=0.13" [package.extras] dev = ["twine", "wheel", "yapf"] +[[package]] +name = "stringcase" +version = "1.2.0" +description = "String case converter." +category = "main" +optional = false +python-versions = "*" +files = [ + {file = "stringcase-1.2.0.tar.gz", hash = "sha256:48a06980661908efe8d9d34eab2b6c13aefa2163b3ced26972902e3bdfd87008"}, +] + [[package]] name = "structlog" version = "22.3.0" @@ -3728,4 +3739,4 @@ multidict = ">=4.0" [metadata] lock-version = "2.0" python-versions = "^3.9" -content-hash = "385354529883cfd0bbfb6b8e046f83b2008f1d8f59d1a95bedd1a2f9d81d7649" +content-hash = "60de1f0428b2cc975905ee6d51c53a5f91232d7108ff734c27d905e2c5e6e493" diff --git a/pyproject.toml b/pyproject.toml index 839e11e8b..6b477f8cc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -62,6 +62,7 @@ dictdiffer = "^0.9.0" msal = "^1.21.0" aiohttp = "^3.8.4" pyopenssl = "^23.0.0" +stringcase = "^1.2.0" [tool.poetry.scripts] iambic = "iambic.main:cli" diff --git a/test/core/test_utils.py b/test/core/test_utils.py index 86e8eb0fe..5488c9429 100644 --- a/test/core/test_utils.py +++ b/test/core/test_utils.py @@ -8,11 +8,14 @@ import pytest from mock import AsyncMock +from stringcase import pascalcase, snakecase from iambic.core.models import BaseModel from iambic.core.utils import ( GlobalRetryController, + convert_between_json_and_yaml, create_commented_map, + recursively_convert_dict_keys, simplify_dt, sort_dict, transform_comments, @@ -261,3 +264,30 @@ async def test_gather_templates(tmpdir): # despite the function signature returns a list, we expect all # elements to be unique. assert len(result) == len(set(result)) + + +def test_recursively_convert_dict_keys(): + # Test converting dictionary keys to snake_case + data = {"MyKey": {"InnerKey": "value"}} + expected_result = {"my_key": {"inner_key": "value"}} + result = recursively_convert_dict_keys(data, snakecase) + assert result == expected_result + + # Test converting dictionary keys to PascalCase + data = {"my_key": {"inner_key": "value"}} + expected_result = {"MyKey": {"InnerKey": "value"}} + result = recursively_convert_dict_keys(data, pascalcase) + assert result == expected_result + + +def test_convert_between_json_and_yaml(): + # Test converting JSON to YAML + json_input = '{"MyKey": {"InnerKey": "value"}}' + yaml_output = convert_between_json_and_yaml(json_input) + assert "my_key:\n inner_key: value\n" in yaml_output + + # Test converting YAML to JSON + yaml_input = "my_key:\n inner_key: value\n" + json_output = convert_between_json_and_yaml(yaml_input) + expected_json_output = '{\n "MyKey": {\n "InnerKey": "value"\n }\n}' + assert json_output == expected_json_output From 3a6478bda76cc9af1c1da0c6e70f11ff42ec6d82 Mon Sep 17 00:00:00 2001 From: Curtis Castrapel Date: Fri, 12 May 2023 07:09:52 -0700 Subject: [PATCH 2/2] Re-use normalize_dict_keys --- iambic/core/utils.py | 25 ++----------------------- test/core/test_utils.py | 8 ++++---- 2 files changed, 6 insertions(+), 27 deletions(-) diff --git a/iambic/core/utils.py b/iambic/core/utils.py index 2b9e7ef65..d6720fee6 100644 --- a/iambic/core/utils.py +++ b/iambic/core/utils.py @@ -733,27 +733,6 @@ async def remove_expired_resources( return resource -def recursively_convert_dict_keys( - obj: Union[dict, list], convert_function: callable[[str], str] -) -> Union[dict, list, str]: - """ - Recursively traverse a dictionary or list, converting all dictionary keys using the provided conversion function. - - :param obj: The dictionary or list to convert. - :param convert_function: A function that takes a string and returns a string. - :return: The converted dictionary or list. - """ - if isinstance(obj, list): - return [recursively_convert_dict_keys(i, convert_function) for i in obj] - elif isinstance(obj, dict): - new_dict = {} - for k, v in obj.items(): - new_key = convert_function(k) - new_dict[new_key] = recursively_convert_dict_keys(v, convert_function) - return new_dict - return obj - - def convert_between_json_and_yaml(input_string: str) -> str: """ Convert a string from AWS PascalCase JSON to IAMbic compatible YAML, or visa-versa. @@ -773,14 +752,14 @@ def convert_between_json_and_yaml(input_string: str) -> str: # Try parsing the input as JSON data = json.loads(input_string) # Convert keys from PascalCase/camelCase to snake_case - converted_data = recursively_convert_dict_keys(data, snakecase) + converted_data = normalize_dict_keys(data, snakecase) # Convert to YAML output = yaml.dump(converted_data) except JSONDecodeError: # If the input is not JSON, try parsing it as YAML data = yaml.load(input_string) # Convert keys from snake_case to PascalCase - converted_data = recursively_convert_dict_keys(data, pascalcase) + converted_data = normalize_dict_keys(data, pascalcase) # Convert to JSON output = json.dumps(converted_data, indent=2) diff --git a/test/core/test_utils.py b/test/core/test_utils.py index 5488c9429..1cda89018 100644 --- a/test/core/test_utils.py +++ b/test/core/test_utils.py @@ -15,7 +15,7 @@ GlobalRetryController, convert_between_json_and_yaml, create_commented_map, - recursively_convert_dict_keys, + normalize_dict_keys, simplify_dt, sort_dict, transform_comments, @@ -266,17 +266,17 @@ async def test_gather_templates(tmpdir): assert len(result) == len(set(result)) -def test_recursively_convert_dict_keys(): +def test_normalize_dict_keys(): # Test converting dictionary keys to snake_case data = {"MyKey": {"InnerKey": "value"}} expected_result = {"my_key": {"inner_key": "value"}} - result = recursively_convert_dict_keys(data, snakecase) + result = normalize_dict_keys(data, snakecase) assert result == expected_result # Test converting dictionary keys to PascalCase data = {"my_key": {"inner_key": "value"}} expected_result = {"MyKey": {"InnerKey": "value"}} - result = recursively_convert_dict_keys(data, pascalcase) + result = normalize_dict_keys(data, pascalcase) assert result == expected_result