in azext_iot/digitaltwins/providers/model.py [0:0]
def delete_all(self):
# Get all models
incoming_pager = self.list(get_definition=True)
incoming_result = []
try:
while True:
incoming_result.extend(incoming_pager.advance_page())
except StopIteration:
pass
except ErrorResponseException as e:
handle_service_exception(e)
# Build dict of model_id : set of parent_ids
parsed_models = {model.id: set() for model in incoming_result}
for model in incoming_result:
# Parse dependents, add current model as parent of dependents
dependencies = get_model_dependencies(model.model)
for d_id in dependencies:
parsed_models[d_id].add(model.id)
def delete_parents(model_id, model_dict):
# Check if current model has been deleted already
if model_id not in model_dict:
return
# Delete parents first
for parent_id in model_dict[model_id]:
if parent_id in model_dict:
delete_parents(parent_id, model_dict)
# Delete current model and remove references
del model_dict[model_id]
try:
self.delete(model_id)
except Exception as e:
logger.warning(f"Could not delete model {model_id}; error is {e}")
while len(parsed_models) > 0:
model_id = next(iter(parsed_models))
delete_parents(model_id, parsed_models)