in servicecatalog_factory/commands/portfolios.py [0:0]
def update_provisioned_product(region, name, product_id, description, template_url):
with betterboto_client.ClientContextManager(
"servicecatalog", region_name=region
) as servicecatalog:
response = servicecatalog.create_provisioning_artifact(
ProductId=product_id,
Parameters={
"Name": name,
"Description": description,
"Info": {"LoadTemplateFromURL": template_url},
"Type": "CLOUD_FORMATION_TEMPLATE",
"DisableTemplateValidation": False,
},
)
new_provisioning_artifact_id = response.get("ProvisioningArtifactDetail").get(
"Id"
)
status = "CREATING"
while status == "CREATING":
time.sleep(3)
status = servicecatalog.describe_provisioning_artifact(
ProductId=product_id,
ProvisioningArtifactId=new_provisioning_artifact_id,
).get("Status")
if status == "FAILED":
raise Exception("Creating the provisioning artifact failed")
response = servicecatalog.list_provisioning_artifacts_single_page(
ProductId=product_id
)
provisioning_artifact_details = response.get("ProvisioningArtifactDetails", [])
for provisioning_artifact_detail in provisioning_artifact_details:
if (
provisioning_artifact_detail.get("Name") == name
and provisioning_artifact_detail.get("Id")
!= new_provisioning_artifact_id
):
servicecatalog.delete_provisioning_artifact(
ProductId=product_id,
ProvisioningArtifactId=provisioning_artifact_detail.get("Id"),
)