Azure / Azure/azure-devops-cli-extension
Az Devops Invoke throws unexpected error when invoking pipelinePermissions/pipelinePermissions route
- Dominant language
- Python
- Stars
- 682
- Forks
- 278
- Avg merge
- 3d 23h
- Merged PRs (30d)
- 3
Description
## Describe the bug
When trying to authorize my pipeline to use an Azure Resource Manager Service Connection, using the following powershell command:
```
"{`"pipelines`":[{`"id`":$($pipeline.id),`"authorized`":true}]}" | Out-File "patch-auhorize-testpipeline.json"
az devops invoke --api-version "5.1" --area "pipelinePermissions" --resource "pipelinePermissions" --http-method PATCH --in-file (Resolve-Path "patch-auhorize-testpipeline.json") --route-parameters project=$project.id resource="pipelinePermissions" resourceType="endpoint" resourceId=$resourceManager.id
```
I get the following error
```
The command failed with an unexpected error. Here is the traceback:
'abbreviation=; capabilities=; defaultTeam=; defaultTeamImageUrl=; description=; id=66a9e3c4-1d5e-4fc4-93c2-5b2a5aa7b7a6; lastUpdateTime=06/26/2020 06'
Traceback (most recent call last):
File "C:\Users\VSSADM~1\AppData\Local\Temp\pip-install-_kvuguic\knack\knack\cli.py", line 215, in invoke
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure\cli\core\commands\__init__.py", line 654, in execute
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure\cli\core\commands\__init__.py", line 718, in _run_jobs_serially
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure\cli\core\commands\__init__.py", line 709, in _run_job
File "C:\Users\MOAN\.azure\cliextensions\azure-devops\azext_devops\dev\common\exception_handler.py", line 31, in azure_devops_exception_handler
reraise(*sys.exc_info())
File "C:\Users\VSSADM~1\AppData\Local\Temp\pip-install-_kvuguic\six\six.py", line 703, in reraise
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure\cli\core\commands\__init__.py", line 688, in _run_job
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure\cli\core\commands\__init__.py", line 325, in __call__
File "D:\a\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure\cli\core\__init__.py", line 545, in default_command_handler
File "C:\Users\MOAN\.azure\cliextensions\azure-devops\azext_devops\dev\team\invoke.py", line 108, in invoke
content=request_body)
File "C:\Users\MOAN\.azure\cliextensions\azure-devops\azext_devops\devops_sdk\client.py", line 63, in _send
query_parameters=query_parameters)
File "C:\Users\MOAN\.azure\cliextensions\azure-devops\azext_devops\devops_sdk\client.py", line 117, in _create_request_message
request = ClientRequest(method=http_method, url=self._client.format_url(url))
File "C:\Users\VSSADM~1\AppData\Local\Temp\pip-install-_kvuguic\msrest\msrest\service_client.py", line 151, in format_url
KeyError: 'abbreviation=; capabilities=; defaultTeam=; defaultTeamImageUrl=; description=; id=66a9e3c4-1d5e-4fc4-93c2-5b2a5aa7b7a6; lastUpdateTime=06/26/2020 06'
```
I am trying to reproduce the following HTTP Request, captured from Azure Devops UI
```
Invoke-WebRequest -Uri "https://.visualstudio.com//_apis/pipelines/pipelinePermissions/endpoint/" `
-Method "PATCH" `
-Headers **Omitted**
-ContentType "application/json" `
-Body "{`"pipelines`":[{`"id`":,`"authorized`":true}]}
```
According to the list of available operations this should be perfectly fine, and i have verified that $pipeline.id, $project.id, $resourceManager.id contains values
```
{
"area": "pipelinePermissions",
"id": "b5b9a4a4-e6cd-4096-853c-ab7d8b0c4eb2",
"maxVersion": 6.0,
"minVersion": 5.1,
"releasedVersion": "0.0",
"resourceName": "pipelinePermissions",
"resourceVersion": 1,
"routeTemplate": "{project}/_apis/pipelines/{resource}/{resourceType}/{resourceId}"
}
```
**Command Name**
`az devops invoke
Extension Name: azure-devops. Version: 0.18.0.`
**Errors:**
```
'abbreviation=; capabilities=; defaultTeam=; defaultTeamImageUrl=; description=; id=b70adde1-6b1d-4706-aa20-b12795da4509; lastUpdateTime=06/26/2020 06'
Traceback (most recent call last):
pip-install-_kvuguic\knack\knack\cli.py, ln 215, in invoke
cli\core\commands\__init__.py, ln 654, in execute
cli\core\commands\__init__.py, ln 718, in _run_jobs_serially
cli\core\commands\__init__.py, ln 709, in _run_job
...
pip-install-_kvuguic\msrest\msrest\service_client.py, ln 151, in format_url
KeyError: 'abbreviation=; capabilities=; defaultTeam=; defaultTeamImageUrl=; description=; id=b70adde1-6b1d-4706-aa20-b12795da4509; lastUpdateTime=06/26/2020 06'
```
## To Reproduce:
Steps to reproduce the behavior. Note that argument values have been redacted, as they may contain sensitive information.
1. Create a pipeline
```
$testpipeline = (ConvertFrom-Json -InputObject ([string](az pipelines create --name $testpipelinename --project $projectname --org $organisationuri --repository $projectname --repository-type "tfsgit" --branch "master" --yaml-path "apim-validate-prod-pipeline.yml")))
```
2. Create a Azure Resource Manager Connection
```
$resourceManager = (ConvertFrom-Json -InputObject ([string](az devops service-endpoint azurerm create --azure-rm-service-principal-id $azureserviceprincipalid --azure-rm-subscription-id $subscriptionid --azure-rm-subscription-name "Visual Studio Professional with MSDN" --azure-rm-tenant-id $tenantid --name $azureResourceManagerConnection --project $projectname --azure-rm-service-principal-certificate-path "file.pem")))
```
3. Authorize the pipeline to use the Azure Resource Manager Connection
```
"{`"pipelines`":[{`"id`":$($testpipeline.id),`"authorized`":true}]}" | Out-File "patch-auhorize-testpipeline.json"
az devops invoke --api-version "5.1" --area "pipelinePermissions" --resource "pipelinePermissions" --http-method PATCH --in-file (Resolve-Path "patch-auhorize-testpipeline.json") --route-parameters project=$project.id resource="pipelinePermissions" resourceType="endpoint" resourceId=$resourceManager.id
```
## Expected Behavior
The pipeline is authorized to use the resource manager connection
## Environment Summary
```
Windows-10-10.0.17763-SP0
Python 3.6.6
Installer: MSI
azure-cli 2.7.0 *
Extensions:
azure-devops 0.18.0
```
## Additional Context
Contributor guide
Assessment
This issue has not been assessed yet.