Skip to content

Commit f9508a3

Browse files
keshav-chandakKeshav Chandak
andauthored
Fixed pagination failing while listing collections (#5020)
Co-authored-by: Keshav Chandak <[email protected]>
1 parent 20bc464 commit f9508a3

File tree

2 files changed

+150
-138
lines changed

2 files changed

+150
-138
lines changed

src/sagemaker/session.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5286,7 +5286,7 @@ def get_tagging_resources(self, tag_filters, resource_type_filters):
52865286
resource_tag_response = self.resource_group_tagging_client.get_resources(
52875287
TagFilters=tag_filters,
52885288
ResourceTypeFilters=resource_type_filters,
5289-
NextToken=next_token,
5289+
PaginationToken=next_token,
52905290
)
52915291
resource_list = resource_list + resource_tag_response["ResourceTagMappingList"]
52925292
next_token = resource_tag_response.get("PaginationToken")

tests/integ/test_collection.py

Lines changed: 149 additions & 137 deletions
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,22 @@
1919
def test_create_collection_root_success(sagemaker_session):
2020
collection = Collection(sagemaker_session)
2121
collection_name = unique_name_from_base("test-collection")
22-
collection.create(collection_name)
23-
collection_filter = [
24-
{
25-
"Name": "resource-type",
26-
"Values": ["AWS::ResourceGroups::Group", "AWS::SageMaker::ModelPackageGroup"],
27-
},
28-
]
29-
collection_details = sagemaker_session.list_group_resources(
30-
group=collection_name, filters=collection_filter
31-
)
32-
assert collection_details["ResponseMetadata"]["HTTPStatusCode"] == 200
33-
delete_response = collection.delete([collection_name])
34-
assert len(delete_response["deleted_collections"]) == 1
35-
assert len(delete_response["delete_collection_failures"]) == 0
22+
try:
23+
collection.create(collection_name)
24+
collection_filter = [
25+
{
26+
"Name": "resource-type",
27+
"Values": ["AWS::ResourceGroups::Group", "AWS::SageMaker::ModelPackageGroup"],
28+
},
29+
]
30+
collection_details = sagemaker_session.list_group_resources(
31+
group=collection_name, filters=collection_filter
32+
)
33+
assert collection_details["ResponseMetadata"]["HTTPStatusCode"] == 200
34+
finally:
35+
delete_response = collection.delete([collection_name])
36+
assert len(delete_response["deleted_collections"]) == 1
37+
assert len(delete_response["delete_collection_failures"]) == 0
3638

3739

3840
def test_create_collection_nested_success(sagemaker_session):
@@ -41,25 +43,27 @@ def test_create_collection_nested_success(sagemaker_session):
4143
child_collection_name = unique_name_from_base("test-collection-2")
4244
collection.create(collection_name)
4345
collection.create(collection_name=child_collection_name, parent_collection_name=collection_name)
44-
collection_filter = [
45-
{
46-
"Name": "resource-type",
47-
"Values": ["AWS::ResourceGroups::Group", "AWS::SageMaker::ModelPackageGroup"],
48-
},
49-
]
50-
collection_details = sagemaker_session.list_group_resources(
51-
group=collection_name, filters=collection_filter
52-
)
53-
# has one child i.e child collection
54-
assert len(collection_details["Resources"]) == 1
55-
56-
collection_details = sagemaker_session.list_group_resources(
57-
group=child_collection_name, filters=collection_filter
58-
)
59-
collection_details["ResponseMetadata"]["HTTPStatusCode"]
60-
delete_response = collection.delete([child_collection_name, collection_name])
61-
assert len(delete_response["deleted_collections"]) == 2
62-
assert len(delete_response["delete_collection_failures"]) == 0
46+
try:
47+
collection_filter = [
48+
{
49+
"Name": "resource-type",
50+
"Values": ["AWS::ResourceGroups::Group", "AWS::SageMaker::ModelPackageGroup"],
51+
},
52+
]
53+
collection_details = sagemaker_session.list_group_resources(
54+
group=collection_name, filters=collection_filter
55+
)
56+
# has one child i.e child collection
57+
assert len(collection_details["Resources"]) == 1
58+
59+
collection_details = sagemaker_session.list_group_resources(
60+
group=child_collection_name, filters=collection_filter
61+
)
62+
collection_details["ResponseMetadata"]["HTTPStatusCode"]
63+
finally:
64+
delete_response = collection.delete([child_collection_name, collection_name])
65+
assert len(delete_response["deleted_collections"]) == 2
66+
assert len(delete_response["delete_collection_failures"]) == 0
6367

6468

6569
def test_add_remove_model_groups_in_collection_success(sagemaker_session):
@@ -70,40 +74,42 @@ def test_add_remove_model_groups_in_collection_success(sagemaker_session):
7074
collection = Collection(sagemaker_session)
7175
collection_name = unique_name_from_base("test-collection")
7276
collection.create(collection_name)
73-
model_groups = []
74-
model_groups.append(model_group_name)
75-
add_response = collection.add_model_groups(
76-
collection_name=collection_name, model_groups=model_groups
77-
)
78-
collection_filter = [
79-
{
80-
"Name": "resource-type",
81-
"Values": ["AWS::ResourceGroups::Group", "AWS::SageMaker::ModelPackageGroup"],
82-
},
83-
]
84-
collection_details = sagemaker_session.list_group_resources(
85-
group=collection_name, filters=collection_filter
86-
)
87-
88-
assert len(add_response["failure"]) == 0
89-
assert len(add_response["added_groups"]) == 1
90-
assert len(collection_details["Resources"]) == 1
91-
92-
remove_response = collection.remove_model_groups(
93-
collection_name=collection_name, model_groups=model_groups
94-
)
95-
collection_details = sagemaker_session.list_group_resources(
96-
group=collection_name, filters=collection_filter
97-
)
98-
assert len(remove_response["failure"]) == 0
99-
assert len(remove_response["removed_groups"]) == 1
100-
assert len(collection_details["Resources"]) == 0
101-
102-
delete_response = collection.delete([collection_name])
103-
assert len(delete_response["deleted_collections"]) == 1
104-
sagemaker_session.sagemaker_client.delete_model_package_group(
105-
ModelPackageGroupName=model_group_name
106-
)
77+
try:
78+
model_groups = []
79+
model_groups.append(model_group_name)
80+
add_response = collection.add_model_groups(
81+
collection_name=collection_name, model_groups=model_groups
82+
)
83+
collection_filter = [
84+
{
85+
"Name": "resource-type",
86+
"Values": ["AWS::ResourceGroups::Group", "AWS::SageMaker::ModelPackageGroup"],
87+
},
88+
]
89+
collection_details = sagemaker_session.list_group_resources(
90+
group=collection_name, filters=collection_filter
91+
)
92+
93+
assert len(add_response["failure"]) == 0
94+
assert len(add_response["added_groups"]) == 1
95+
assert len(collection_details["Resources"]) == 1
96+
97+
remove_response = collection.remove_model_groups(
98+
collection_name=collection_name, model_groups=model_groups
99+
)
100+
collection_details = sagemaker_session.list_group_resources(
101+
group=collection_name, filters=collection_filter
102+
)
103+
assert len(remove_response["failure"]) == 0
104+
assert len(remove_response["removed_groups"]) == 1
105+
assert len(collection_details["Resources"]) == 0
106+
107+
finally:
108+
delete_response = collection.delete([collection_name])
109+
assert len(delete_response["deleted_collections"]) == 1
110+
sagemaker_session.sagemaker_client.delete_model_package_group(
111+
ModelPackageGroupName=model_group_name
112+
)
107113

108114

109115
def test_move_model_groups_in_collection_success(sagemaker_session):
@@ -116,56 +122,58 @@ def test_move_model_groups_in_collection_success(sagemaker_session):
116122
destination_collection_name = unique_name_from_base("test-collection-destination")
117123
collection.create(source_collection_name)
118124
collection.create(destination_collection_name)
119-
model_groups = []
120-
model_groups.append(model_group_name)
121-
add_response = collection.add_model_groups(
122-
collection_name=source_collection_name, model_groups=model_groups
123-
)
124-
collection_filter = [
125-
{
126-
"Name": "resource-type",
127-
"Values": ["AWS::ResourceGroups::Group", "AWS::SageMaker::ModelPackageGroup"],
128-
},
129-
]
130-
collection_details = sagemaker_session.list_group_resources(
131-
group=source_collection_name, filters=collection_filter
132-
)
133-
134-
assert len(add_response["failure"]) == 0
135-
assert len(add_response["added_groups"]) == 1
136-
assert len(collection_details["Resources"]) == 1
137-
138-
move_response = collection.move_model_group(
139-
source_collection_name=source_collection_name,
140-
model_group=model_group_name,
141-
destination_collection_name=destination_collection_name,
142-
)
143-
144-
assert move_response["moved_success"] == model_group_name
145-
146-
collection_details = sagemaker_session.list_group_resources(
147-
group=destination_collection_name, filters=collection_filter
148-
)
149-
150-
assert len(collection_details["Resources"]) == 1
151-
152-
collection_details = sagemaker_session.list_group_resources(
153-
group=source_collection_name, filters=collection_filter
154-
)
155-
assert len(collection_details["Resources"]) == 0
156-
157-
remove_response = collection.remove_model_groups(
158-
collection_name=destination_collection_name, model_groups=model_groups
159-
)
160-
161-
assert len(remove_response["failure"]) == 0
162-
assert len(remove_response["removed_groups"]) == 1
163-
164-
delete_response = collection.delete([source_collection_name, destination_collection_name])
165-
assert len(delete_response["deleted_collections"]) == 2
166-
sagemaker_session.sagemaker_client.delete_model_package_group(
167-
ModelPackageGroupName=model_group_name
168-
)
125+
try:
126+
model_groups = []
127+
model_groups.append(model_group_name)
128+
add_response = collection.add_model_groups(
129+
collection_name=source_collection_name, model_groups=model_groups
130+
)
131+
collection_filter = [
132+
{
133+
"Name": "resource-type",
134+
"Values": ["AWS::ResourceGroups::Group", "AWS::SageMaker::ModelPackageGroup"],
135+
},
136+
]
137+
collection_details = sagemaker_session.list_group_resources(
138+
group=source_collection_name, filters=collection_filter
139+
)
140+
141+
assert len(add_response["failure"]) == 0
142+
assert len(add_response["added_groups"]) == 1
143+
assert len(collection_details["Resources"]) == 1
144+
145+
move_response = collection.move_model_group(
146+
source_collection_name=source_collection_name,
147+
model_group=model_group_name,
148+
destination_collection_name=destination_collection_name,
149+
)
150+
151+
assert move_response["moved_success"] == model_group_name
152+
153+
collection_details = sagemaker_session.list_group_resources(
154+
group=destination_collection_name, filters=collection_filter
155+
)
156+
157+
assert len(collection_details["Resources"]) == 1
158+
159+
collection_details = sagemaker_session.list_group_resources(
160+
group=source_collection_name, filters=collection_filter
161+
)
162+
assert len(collection_details["Resources"]) == 0
163+
164+
remove_response = collection.remove_model_groups(
165+
collection_name=destination_collection_name, model_groups=model_groups
166+
)
167+
168+
assert len(remove_response["failure"]) == 0
169+
assert len(remove_response["removed_groups"]) == 1
170+
171+
finally:
172+
delete_response = collection.delete([source_collection_name, destination_collection_name])
173+
assert len(delete_response["deleted_collections"]) == 2
174+
sagemaker_session.sagemaker_client.delete_model_package_group(
175+
ModelPackageGroupName=model_group_name
176+
)
169177

170178

171179
def test_list_collection_success(sagemaker_session):
@@ -176,23 +184,27 @@ def test_list_collection_success(sagemaker_session):
176184
collection = Collection(sagemaker_session)
177185
collection_name = unique_name_from_base("test-collection")
178186
collection.create(collection_name)
179-
model_groups = []
180-
model_groups.append(model_group_name)
181-
collection.add_model_groups(collection_name=collection_name, model_groups=model_groups)
182-
child_collection_name = unique_name_from_base("test-collection")
183-
collection.create(parent_collection_name=collection_name, collection_name=child_collection_name)
184-
root_collections = collection.list_collection()
185-
is_collection_found = False
186-
for root_collection in root_collections:
187-
if root_collection["Name"] == collection_name:
188-
is_collection_found = True
189-
assert is_collection_found
190-
191-
collection_content = collection.list_collection(collection_name)
192-
assert len(collection_content) == 2
193-
194-
collection.remove_model_groups(collection_name=collection_name, model_groups=model_groups)
195-
collection.delete([child_collection_name, collection_name])
196-
sagemaker_session.sagemaker_client.delete_model_package_group(
197-
ModelPackageGroupName=model_group_name
198-
)
187+
try:
188+
model_groups = []
189+
model_groups.append(model_group_name)
190+
collection.add_model_groups(collection_name=collection_name, model_groups=model_groups)
191+
child_collection_name = unique_name_from_base("test-collection")
192+
collection.create(
193+
parent_collection_name=collection_name, collection_name=child_collection_name
194+
)
195+
root_collections = collection.list_collection()
196+
is_collection_found = False
197+
for root_collection in root_collections:
198+
if root_collection["Name"] == collection_name:
199+
is_collection_found = True
200+
assert is_collection_found
201+
202+
collection_content = collection.list_collection(collection_name)
203+
assert len(collection_content) == 2
204+
205+
collection.remove_model_groups(collection_name=collection_name, model_groups=model_groups)
206+
finally:
207+
collection.delete([child_collection_name, collection_name])
208+
sagemaker_session.sagemaker_client.delete_model_package_group(
209+
ModelPackageGroupName=model_group_name
210+
)

0 commit comments

Comments
 (0)