Add Pagination for Organizations:ListOrganizationalUnitsForParent
This commit is contained in:
parent
f65d3970aa
commit
f389d507e8
@ -434,15 +434,14 @@ class OrganizationsBackend(BaseBackend):
|
|||||||
ou = self.get_organizational_unit_by_id(kwargs["OrganizationalUnitId"])
|
ou = self.get_organizational_unit_by_id(kwargs["OrganizationalUnitId"])
|
||||||
return ou.describe()
|
return ou.describe()
|
||||||
|
|
||||||
|
@paginate(pagination_model=PAGINATION_MODEL)
|
||||||
def list_organizational_units_for_parent(self, **kwargs):
|
def list_organizational_units_for_parent(self, **kwargs):
|
||||||
parent_id = self.validate_parent_id(kwargs["ParentId"])
|
parent_id = self.validate_parent_id(kwargs["parent_id"])
|
||||||
return dict(
|
return [
|
||||||
OrganizationalUnits=[
|
{"Id": ou.id, "Arn": ou.arn, "Name": ou.name}
|
||||||
{"Id": ou.id, "Arn": ou.arn, "Name": ou.name}
|
for ou in self.ou
|
||||||
for ou in self.ou
|
if ou.parent_id == parent_id
|
||||||
if ou.parent_id == parent_id
|
]
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
def create_account(self, **kwargs):
|
def create_account(self, **kwargs):
|
||||||
new_account = FakeAccount(self.org, **kwargs)
|
new_account = FakeAccount(self.org, **kwargs)
|
||||||
|
@ -51,11 +51,19 @@ class OrganizationsResponse(BaseResponse):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def list_organizational_units_for_parent(self):
|
def list_organizational_units_for_parent(self):
|
||||||
return json.dumps(
|
max_results = self._get_int_param("MaxResults")
|
||||||
self.organizations_backend.list_organizational_units_for_parent(
|
next_token = self._get_param("NextToken")
|
||||||
**self.request_params
|
parent_id = self._get_param("ParentId")
|
||||||
)
|
(
|
||||||
|
ous,
|
||||||
|
next_token,
|
||||||
|
) = self.organizations_backend.list_organizational_units_for_parent(
|
||||||
|
max_results=max_results, next_token=next_token, parent_id=parent_id
|
||||||
)
|
)
|
||||||
|
response = {"OrganizationalUnits": ous}
|
||||||
|
if next_token:
|
||||||
|
response["NextToken"] = next_token
|
||||||
|
return json.dumps(response)
|
||||||
|
|
||||||
def list_parents(self):
|
def list_parents(self):
|
||||||
return json.dumps(
|
return json.dumps(
|
||||||
|
@ -41,6 +41,13 @@ PAGINATION_MODEL = {
|
|||||||
"result_key": "Accounts",
|
"result_key": "Accounts",
|
||||||
"unique_attribute": "JoinedTimestamp",
|
"unique_attribute": "JoinedTimestamp",
|
||||||
},
|
},
|
||||||
|
"list_organizational_units_for_parent": {
|
||||||
|
"input_token": "next_token",
|
||||||
|
"limit_key": "max_results",
|
||||||
|
"limit_default": 20,
|
||||||
|
"result_key": "OrganizationalUnits",
|
||||||
|
"unique_attribute": "Id",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -143,6 +143,25 @@ def test_list_organizational_units_for_parent():
|
|||||||
validate_organizational_unit(org, dict(OrganizationalUnit=ou))
|
validate_organizational_unit(org, dict(OrganizationalUnit=ou))
|
||||||
|
|
||||||
|
|
||||||
|
@mock_organizations
|
||||||
|
def test_list_organizational_units_pagination():
|
||||||
|
client = boto3.client("organizations", region_name="us-east-1")
|
||||||
|
client.create_organization(FeatureSet="ALL")
|
||||||
|
root_id = client.list_roots()["Roots"][0]["Id"]
|
||||||
|
for i in range(20):
|
||||||
|
name = "ou" + str(i)
|
||||||
|
client.create_organizational_unit(ParentId=root_id, Name=name)
|
||||||
|
response = client.list_organizational_units_for_parent(ParentId=root_id)
|
||||||
|
response.should_not.have.key("NextToken")
|
||||||
|
len(response["OrganizationalUnits"]).should.be.greater_than_or_equal_to(i)
|
||||||
|
|
||||||
|
paginator = client.get_paginator("list_organizational_units_for_parent")
|
||||||
|
page_iterator = paginator.paginate(MaxResults=5, ParentId=root_id)
|
||||||
|
for page in page_iterator:
|
||||||
|
len(page["OrganizationalUnits"]).should.be.lower_than_or_equal_to(5)
|
||||||
|
page["OrganizationalUnits"][-1]["Name"].should.contain("19")
|
||||||
|
|
||||||
|
|
||||||
@mock_organizations
|
@mock_organizations
|
||||||
def test_list_organizational_units_for_parent_exception():
|
def test_list_organizational_units_for_parent_exception():
|
||||||
client = boto3.client("organizations", region_name="us-east-1")
|
client = boto3.client("organizations", region_name="us-east-1")
|
||||||
|
Loading…
Reference in New Issue
Block a user