reverse-diagrams 0.2.5__tar.gz → 0.2.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. reverse_diagrams-0.2.6/.github/workflows/publish-to-test-pypi.yml +117 -0
  2. {reverse_diagrams-0.2.5 → reverse_diagrams-0.2.6}/PKG-INFO +2 -3
  3. {reverse_diagrams-0.2.5 → reverse_diagrams-0.2.6}/pyproject.toml +5 -2
  4. {reverse_diagrams-0.2.5 → reverse_diagrams-0.2.6}/src/aws/describe_identity_store.py +59 -1
  5. {reverse_diagrams-0.2.5 → reverse_diagrams-0.2.6}/src/dgms/graph_mapper.py +2 -2
  6. {reverse_diagrams-0.2.5 → reverse_diagrams-0.2.6}/src/reverse_diagrams.py +1 -1
  7. {reverse_diagrams-0.2.5 → reverse_diagrams-0.2.6}/.gitignore +0 -0
  8. {reverse_diagrams-0.2.5 → reverse_diagrams-0.2.6}/LICENSE +0 -0
  9. {reverse_diagrams-0.2.5 → reverse_diagrams-0.2.6}/README.md +0 -0
  10. {reverse_diagrams-0.2.5 → reverse_diagrams-0.2.6}/__init__.py +0 -0
  11. {reverse_diagrams-0.2.5 → reverse_diagrams-0.2.6}/docs/graph_org.py +0 -0
  12. {reverse_diagrams-0.2.5 → reverse_diagrams-0.2.6}/docs/graph_sso.py +0 -0
  13. {reverse_diagrams-0.2.5 → reverse_diagrams-0.2.6}/docs/graph_sso_complete.py +0 -0
  14. {reverse_diagrams-0.2.5 → reverse_diagrams-0.2.6}/docs/images/organizations-state-copy.png +0 -0
  15. {reverse_diagrams-0.2.5 → reverse_diagrams-0.2.6}/iam_identity_center.png +0 -0
  16. {reverse_diagrams-0.2.5 → reverse_diagrams-0.2.6}/src/__init__.py +0 -0
  17. {reverse_diagrams-0.2.5 → reverse_diagrams-0.2.6}/src/aws/__init__.py +0 -0
  18. {reverse_diagrams-0.2.5 → reverse_diagrams-0.2.6}/src/aws/describe_organization.py +0 -0
  19. {reverse_diagrams-0.2.5 → reverse_diagrams-0.2.6}/src/aws/describe_sso.py +0 -0
  20. {reverse_diagrams-0.2.5 → reverse_diagrams-0.2.6}/src/banner/__init__.py +0 -0
  21. {reverse_diagrams-0.2.5 → reverse_diagrams-0.2.6}/src/banner/banner.py +0 -0
  22. {reverse_diagrams-0.2.5 → reverse_diagrams-0.2.6}/src/dgms/__init__.py +0 -0
  23. {reverse_diagrams-0.2.5 → reverse_diagrams-0.2.6}/src/dgms/graph_template.py +0 -0
  24. {reverse_diagrams-0.2.5 → reverse_diagrams-0.2.6}/src/export_report/export_csv.py +0 -0
  25. {reverse_diagrams-0.2.5 → reverse_diagrams-0.2.6}/test.py +0 -0
  26. {reverse_diagrams-0.2.5 → reverse_diagrams-0.2.6}/test2.py +0 -0
  27. {reverse_diagrams-0.2.5 → reverse_diagrams-0.2.6}/testdata.txt +0 -0
@@ -0,0 +1,117 @@
1
+ name: Publish Python 🐍 distribution 📦 to PyPI and TestPyPI
2
+
3
+ on: push
4
+
5
+ jobs:
6
+ build:
7
+ name: Build distribution 📦
8
+ runs-on: ubuntu-latest
9
+
10
+ steps:
11
+ - uses: actions/checkout@v4
12
+ - name: Set up Python
13
+ uses: actions/setup-python@v4
14
+ with:
15
+ python-version: "3.x"
16
+ - name: Install pypa/build
17
+ run: >-
18
+ python3 -m
19
+ pip install
20
+ build
21
+ --user
22
+ - name: Build a binary wheel and a source tarball
23
+ run: python3 -m build
24
+ - name: Store the distribution packages
25
+ uses: actions/upload-artifact@v3
26
+ with:
27
+ name: python-package-distributions
28
+ path: dist/
29
+
30
+ publish-to-pypi:
31
+ name: >-
32
+ Publish Python 🐍 distribution 📦 to PyPI
33
+ if: startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes
34
+ needs:
35
+ - build
36
+ runs-on: ubuntu-latest
37
+ environment:
38
+ name: pypi
39
+ url: https://pypi.org/p/reverse-diagrams # Replace reverse-diagrams with your PyPI project name
40
+ permissions:
41
+ id-token: write # IMPORTANT: mandatory for trusted publishing
42
+
43
+ steps:
44
+ - name: Download all the dists
45
+ uses: actions/download-artifact@v3
46
+ with:
47
+ name: python-package-distributions
48
+ path: dist/
49
+ - name: Publish distribution 📦 to PyPI
50
+ uses: pypa/gh-action-pypi-publish@release/v1
51
+
52
+ github-release:
53
+ name: >-
54
+ Sign the Python 🐍 distribution 📦 with Sigstore
55
+ and upload them to GitHub Release
56
+ needs:
57
+ - publish-to-pypi
58
+ runs-on: ubuntu-latest
59
+
60
+ permissions:
61
+ contents: write # IMPORTANT: mandatory for making GitHub Releases
62
+ id-token: write # IMPORTANT: mandatory for sigstore
63
+
64
+ steps:
65
+ - name: Download all the dists
66
+ uses: actions/download-artifact@v3
67
+ with:
68
+ name: python-package-distributions
69
+ path: dist/
70
+ - name: Sign the dists with Sigstore
71
+ uses: sigstore/gh-action-sigstore-python@v1.2.3
72
+ with:
73
+ inputs: >-
74
+ ./dist/*.tar.gz
75
+ ./dist/*.whl
76
+ - name: Create GitHub Release
77
+ env:
78
+ GITHUB_TOKEN: ${{ github.token }}
79
+ run: >-
80
+ gh release create
81
+ '${{ github.ref_name }}'
82
+ --repo '${{ github.repository }}'
83
+ --notes ""
84
+ - name: Upload artifact signatures to GitHub Release
85
+ env:
86
+ GITHUB_TOKEN: ${{ github.token }}
87
+ # Upload to GitHub Release using the `gh` CLI.
88
+ # `dist/` contains the built packages, and the
89
+ # sigstore-produced signatures and certificates.
90
+ run: >-
91
+ gh release upload
92
+ '${{ github.ref_name }}' dist/**
93
+ --repo '${{ github.repository }}'
94
+
95
+ publish-to-testpypi:
96
+ name: Publish Python 🐍 distribution 📦 to TestPyPI
97
+ needs:
98
+ - build
99
+ runs-on: ubuntu-latest
100
+
101
+ environment:
102
+ name: testpypi
103
+ url: https://test.pypi.org/p/reverse-diagrams
104
+
105
+ permissions:
106
+ id-token: write # IMPORTANT: mandatory for trusted publishing
107
+
108
+ steps:
109
+ - name: Download all the dists
110
+ uses: actions/download-artifact@v3
111
+ with:
112
+ name: python-package-distributions
113
+ path: dist/
114
+ - name: Publish distribution 📦 to TestPyPI
115
+ uses: pypa/gh-action-pypi-publish@release/v1
116
+ with:
117
+ repository-url: https://test.pypi.org/legacy/
@@ -1,8 +1,7 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: reverse_diagrams
3
- Version: 0.2.5
4
- Summary: Continuous Documentation Tool - Documentation as Code Tool -
5
- This package create reverse diagrams based on your current state in your cloud environment
3
+ Version: 0.2.6
4
+ Summary: Continuous Documentation Tool - Documentation as Code Tool - This package create reverse diagrams based on your current state in your cloud environment
6
5
  Project-URL: Homepage, https://github.com/velez94/reverse_diagrams
7
6
  Project-URL: Bug Tracker, https://github.com/velez94/reverse_diagrams/issues
8
7
  Author-email: Alejandro Velez <avelez@labvel.io>
@@ -7,7 +7,7 @@ build-backend = "hatchling.build"
7
7
 
8
8
  [project]
9
9
  name = "reverse_diagrams"
10
- version = "0.2.5"
10
+ version = "0.2.6"
11
11
  authors = [
12
12
  { name = "Alejandro Velez", email = "avelez@labvel.io" },
13
13
  ]
@@ -36,4 +36,7 @@ classifiers = [
36
36
  "Bug Tracker" = "https://github.com/velez94/reverse_diagrams/issues"
37
37
 
38
38
  [project.scripts]
39
- reverse_diagrams = "src.reverse_diagrams:main"
39
+ reverse_diagrams = "src.reverse_diagrams:main"
40
+
41
+ [tool.hatch.build.targets.wheel]
42
+ packages = ["src"]
@@ -49,24 +49,82 @@ def list_users(identity_store_id, client=boto3.client('identitystore', region_na
49
49
  return response["Users"]
50
50
 
51
51
 
52
+ def get_members_pag(identity_store_id, client=boto3.client('identitystore', region_name="us-east-2"),
53
+ next_token: str = None):
54
+ paginator = client.get_paginator('list_group_memberships')
55
+ response_iterator = paginator.paginate(
56
+ IdentityStoreId=identity_store_id,
57
+ PaginationConfig={
58
+ 'MaxItems': 1000,
59
+ 'PageSize': 4,
60
+ 'StartingToken': next_token
61
+ }
62
+ )
63
+ response = response_iterator.build_full_result()
64
+ logging.info(response_iterator.build_full_result())
65
+ return response["GroupMemberships"]
66
+
67
+
52
68
  def get_members(identity_store_id, groups, client=boto3.client('identitystore', region_name="us-east-2")):
53
69
  group_members = []
54
70
  for g in groups:
55
71
  response = client.list_group_memberships(
56
72
  IdentityStoreId=identity_store_id,
57
73
  GroupId=g["GroupId"],
74
+ MaxResults=20,
58
75
 
59
76
  )
77
+ members = response["GroupMemberships"]
78
+ logging.info(members)
79
+
80
+ logging.info(len(members))
81
+
82
+ if len(members) >= 20:
83
+ logging.info("Paginating ...")
84
+ ad_members = get_members_pag(identity_store_id=identity_store_id, client=client,
85
+ next_token=response["NextToken"])
86
+ for ad in ad_members:
87
+ members.append(ad)
88
+ logging.info(f"You have {len(ad_members)} Members")
89
+ print(f"You have {len(ad_members)} Members")
90
+
60
91
  group_members.append(
61
92
  {"group_id": g["GroupId"],
62
93
  "group_name": g["DisplayName"],
63
- "members": response["GroupMemberships"]
94
+ "members": members
64
95
  }
65
96
  )
66
97
 
67
98
  return group_members
68
99
 
69
100
 
101
+ def list_group_memberships(identitystore_client, group_name, pagination=True):
102
+ """
103
+ Lists memberships for a group in an AWS SSO identity store.
104
+
105
+ Args:
106
+ identitystore_client (boto3.client): Boto3 SSO identity store client
107
+ group_name (str): Name of the group to list memberships for
108
+ pagination (bool): Whether to enable result pagination (default: True)
109
+
110
+ Returns:
111
+ list: List of member objects
112
+ """
113
+
114
+ params = {'GroupName': group_name}
115
+ members = []
116
+
117
+ if pagination:
118
+ paginator = identitystore_client.get_paginator('list_group_memberships')
119
+ for page in paginator.paginate(**params):
120
+ members.extend(page['Members'])
121
+ else:
122
+ response = identitystore_client.list_group_memberships(**params)
123
+ members.extend(response['Members'])
124
+
125
+ return members
126
+
127
+
70
128
  def complete_group_members(group_members, users_list):
71
129
  for m in group_members:
72
130
  for u in m["members"]:
@@ -26,9 +26,9 @@ def create_sso_mapper_complete(template_file, acc_assignments, d_groups):
26
26
  ident = " "
27
27
 
28
28
  for key, value in acc_assignments.items():
29
- print(f"\n with Cluster('Account: {key}'):", file=f)
30
- if len(value) > 0:
31
29
 
30
+ if len(value) > 0:
31
+ print(f"\n with Cluster('Account: {key}'):", file=f)
32
32
  for m in value:
33
33
  logging.debug(m)
34
34
 
@@ -15,7 +15,7 @@ from .dgms.graph_mapper import create_mapper, create_sso_mapper_complete, create
15
15
  from .dgms.graph_template import graph_template, graph_template_sso, graph_template_sso_complete
16
16
  from .banner.banner import get_version
17
17
 
18
- __version__ = "0.2.5"
18
+ __version__ = "0.2.4"
19
19
 
20
20
 
21
21
  def main() -> int: