in src/sagemaker/session.py [0:0]
def submit(request):
if model_package_group_name is not None and not model_package_group_name.startswith(
"arn:"
):
is_model_package_group_present = False
try:
model_package_groups_response = self.search(
resource="ModelPackageGroup",
search_expression={
"Filters": [
{
"Name": "ModelPackageGroupName",
"Value": request["ModelPackageGroupName"],
"Operator": "Equals",
}
],
},
)
if len(model_package_groups_response.get("Results")) > 0:
is_model_package_group_present = True
except Exception: # pylint: disable=W0703
model_package_groups = []
model_package_groups_response = self.sagemaker_client.list_model_package_groups(
NameContains=request["ModelPackageGroupName"],
)
model_package_groups = (
model_package_groups
+ model_package_groups_response["ModelPackageGroupSummaryList"]
)
next_token = model_package_groups_response.get("NextToken")
while next_token is not None and next_token != "":
model_package_groups_response = (
self.sagemaker_client.list_model_package_groups(
NameContains=request["ModelPackageGroupName"], NextToken=next_token
)
)
model_package_groups = (
model_package_groups
+ model_package_groups_response["ModelPackageGroupSummaryList"]
)
next_token = model_package_groups_response.get("NextToken")
filtered_model_package_group = list(
filter(
lambda mpg: mpg.get("ModelPackageGroupName")
== request["ModelPackageGroupName"],
model_package_groups,
)
)
is_model_package_group_present = len(filtered_model_package_group) > 0
if not is_model_package_group_present:
_create_resource(
lambda: self.sagemaker_client.create_model_package_group(
ModelPackageGroupName=request["ModelPackageGroupName"]
)
)
if "SourceUri" in request and request["SourceUri"] is not None:
# Remove inference spec from request if the
# given source uri can lead to auto-population of it
if can_model_package_source_uri_autopopulate(request["SourceUri"]):
if "InferenceSpecification" in request:
del request["InferenceSpecification"]
return self.sagemaker_client.create_model_package(**request)
# If source uri can't autopopulate,
# first create model package with just the inference spec
# and then update model package with the source uri.
# Done this way because passing source uri and inference spec together
# in create/update model package is not allowed in the base sdk.
request_source_uri = request["SourceUri"]
del request["SourceUri"]
model_package = self.sagemaker_client.create_model_package(**request)
update_source_uri_args = {
"ModelPackageArn": model_package.get("ModelPackageArn"),
"SourceUri": request_source_uri,
}
return self.sagemaker_client.update_model_package(**update_source_uri_args)
return self.sagemaker_client.create_model_package(**request)