|
40 | 40 | ) |
41 | 41 | tenancy_id = os.getenv("TENANCY_ID_OVERRIDE", config['tenancy']) |
42 | 42 |
|
| 43 | +def list_all_compartments_internal(only_one_page: bool , limit = 100 ): |
| 44 | + """Internal function to get List all compartments in a tenancy""" |
| 45 | + response = identity_client.list_compartments( |
| 46 | + compartment_id=tenancy_id, |
| 47 | + compartment_id_in_subtree=True, |
| 48 | + access_level="ACCESSIBLE", |
| 49 | + lifecycle_state="ACTIVE", |
| 50 | + limit = limit |
| 51 | + ) |
| 52 | + compartments = response.data |
| 53 | + compartments.append(identity_client.get_compartment(compartment_id=tenancy_id).data) |
| 54 | + if only_one_page : # limiting the number of items returned |
| 55 | + return compartments |
| 56 | + while response.has_next_page: |
| 57 | + response = identity_client.list_compartments( |
| 58 | + compartment_id=tenancy_id, |
| 59 | + compartment_id_in_subtree=True, |
| 60 | + access_level="ACCESSIBLE", |
| 61 | + lifecycle_state="ACTIVE", |
| 62 | + page=response.next_page, |
| 63 | + limit = limit |
| 64 | + ) |
| 65 | + compartments.extend(response.data) |
| 66 | + |
| 67 | + return compartments |
| 68 | + |
43 | 69 | @mcp.tool() |
44 | 70 | def list_all_compartments() -> str: |
45 | 71 | """List all compartments in a tenancy with clear formatting""" |
46 | | - compartments = identity_client.list_compartments(tenancy_id).data |
47 | | - compartments.append(identity_client.get_compartment(compartment_id=tenancy_id).data) |
48 | | - return str(compartments) |
| 72 | + return str(list_all_compartments_internal(True)) |
49 | 73 |
|
50 | 74 | def get_compartment_by_name(compartment_name: str): |
51 | 75 | """Internal function to get compartment by name with caching""" |
52 | | - compartments = identity_client.list_compartments( |
53 | | - compartment_id=tenancy_id, |
54 | | - compartment_id_in_subtree=True, |
55 | | - access_level="ACCESSIBLE", |
56 | | - lifecycle_state="ACTIVE" |
57 | | - ) |
58 | | - compartments.data.append(identity_client.get_compartment(compartment_id=tenancy_id).data) |
59 | | - |
| 76 | + compartments = list_all_compartments_internal(False) |
60 | 77 | # Search for the compartment by name |
61 | | - for compartment in compartments.data: |
| 78 | + for compartment in compartments: |
62 | 79 | if compartment.name.lower() == compartment_name.lower(): |
63 | 80 | return compartment |
64 | 81 |
|
|
0 commit comments