Azure expects the tags format to use a pointer to the string for the map value.
The configuration from the builder is not a pointer so when storing in the state bag for
reference in later execution we convert it when creating the StateBag.
Fixes#10012 and #10013.
* Use the MapToAzureTags helper and error check in resource group creation
* Added test case for tag values not using a pointer
* test/azure/arm: Add test to verify tags stored in state
* test/azure/arm: Add azure_tags to existing acceptance test for Linux
Test Before Fix
```
--- FAIL: TestBuilderAcc_ManagedDisk_Linux (1.81s)
panic: interface conversion: interface {} is map[string]string, not map[string]*string [recovered]
panic: interface conversion: interface {} is map[string]string, not map[string]*string
FAIL github.com/hashicorp/packer/builder/azure/arm 1.822s
```
Test After Fix
```
2020/09/29 17:23:03 ui: ==> test: Resource group has been deleted.
--- PASS: TestBuilderAcc_ManagedDisk_Linux (517.41s)
PASS
ok github.com/hashicorp/packer/builder/azure/arm 517.426s
```
Co-authored-by: Wilken Rivera <dev@wilkenrivera.com>
Run now takes a context as well as a statebag. We'll assign the context
to the blank identifier to prevent namespace collisions. We'll let the
step authors opt-in to using the context.
`find . -iname "step_*.go" -exec gsed -i'' 's/func \(.*\)Run(/func \1Run(_ context.Context, /' {} \;`
* Created a new parameter for using existing resource groups
* Implemented logic to ensure temp_ and build_ can't both be used
* Implemented logic to ensure they can only be used in correct context
* Implemented tests for this logic
* Updated where required to ensure the process works
This changeset will detect if the defined temporary resource group
already exists. If it does, it will not destroy it, but clean up
every resource required for building that is created by Packer
individually, both on success and failure.
Unit tests have been fixed, but more tests should be added for the new
functionalities.
The OAuth code was moved to the adal package.
Authorizers now ues an interface instead of a simple token.
Long running operations return a channel for the operation, and the
error.
This is last merge that will happen from the github.com/Azure/packer-Azure
repository. All development is being over to this repository.
The biggest change in this merge is support for Windows. There are a few other
fixes as well.
* If the user cancels the build, clean up any resources.
* Output a reasonable build artifact.
* Log requests and responses with Azure.
* Support for US Government and the China clouds.
* Support interrupting long running tasks.
* Allow the user to set the image version.
* Device login support.