Stop all Azure Data Factory triggers through CLI

2.8k Views Asked by At

I am trying to deploy ARM template through Azure CLI as follows:

az deployment group create --name APP-ADF-Template --resource-group <my-resource-group> --template-file ./pipelines/app_arm.json --parameters ./pipelines/app_stage_arm_params.json

But getting the error, when any trigger in Start state.

ERROR: Deployment failed. Correlation ID: 10c0ee19-1452-41ce-8edd-4ecf33499f25. {
  "error": {
    "code": "TriggerEnabledCannotUpdate",
    "message": "Cannot update enabled Trigger; the trigger needs to be disabled first. ",
    "target": null,
    "details": null
  }
}

We can stop one by one trigger with the below command.

az datafactory trigger stop --factory-name <my-data-factory> --resource-group <my-resource-group> --trigger-name <my-trigger-1>

Like this we have more than 10 triggers, it will be difficult to stop one by one. Is there any way to stop all of them at once and start all of them post deployment successful?

1

There are 1 best solutions below

2
On BEST ANSWER

There is no such way to stop all the triggers at one time, in this case, your option is to use a loop.

Stop all the triggers:

For Windows:

$names = az datafactory trigger list --factory-name "xxx" --resource-group "xxx" --query "[?properties.runtimeState=='Started'].name" -o tsv --only-show-errors
foreach($name in $names){
    az datafactory trigger stop --factory-name "xxx" --resource-group "xxx" --name $name --only-show-errors
}

For Unix

names=`az datafactory trigger list --factory-name "xxx" --resource-group "xxx" --query "[?properties.runtimeState == 'Started'].name" -o tsv --only-show-errors`
                    
for name in ${names[@]}; 
do
    echo "Stopping the trigger : ${name}"
    az datafactory trigger stop --factory-name "xxx" --resource-group "xxx" --name ${name} --only-show-errors
done

After deployment, start all the triggers:

For Windows:

$names = az datafactory trigger list --factory-name "xxx" --resource-group "xxx" --query "[?properties.runtimeState=='Stopped'].name" -o tsv --only-show-errors
foreach($name in $names){
    az datafactory trigger start --factory-name "xxx" --resource-group "xxx" --name $name --only-show-errors
}

For Unix

names=`az datafactory trigger list --factory-name "xxx" --resource-group "xxx" --query "[?properties.runtimeState == 'Stopped'].name" -o tsv --only-show-errors`
                    
for name in ${names[@]}; 
do
    echo "Starting the trigger : ${name}"
    az datafactory trigger start --factory-name "xxx" --resource-group "xxx" --name ${name} --only-show-errors
done