terraspace_plugin_azurerm 0.2.2 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b3ff4bc13ad8e73d40b985420c107ef791d652bde858092271a239715ec6b824
4
- data.tar.gz: cdbc5ddac31c0c4fad5676ea802810fd9982f02a59f3347bf72d4e407f7abec7
3
+ metadata.gz: 3164712306e20fe0da2192f6e8168e7d19dc773f840f351f351bd3cd0c56fd76
4
+ data.tar.gz: 4e3a39f1aacad41a0806f5e9c81013119b58f11dc42b2d0ac791f9e0c4e44814
5
5
  SHA512:
6
- metadata.gz: 878dc0469567622cd0bf3ef0c378ae5ba9962035511110fdb057892873d0d4e67cf0e00c2173cc52904ea9d2a58d7c2062b1bac8673a8dd45c03bb946e220149
7
- data.tar.gz: f9f776fc7ad11500b9f29c57a141012b883295f59e25c67d7393d07a6dde2aadaf71f7e2322848bdf67ba5feaebce3553c49a4004632e83f9fc5026b965278bf
6
+ metadata.gz: 005df536cf5d7b6ed59435e2560bce4924ecc8a0cf4be3a6c2ae294b711c160e435797a62758d476978d3be3914f10336d23c74a681f1b381bc6d820c68dbcae
7
+ data.tar.gz: 6c3169184cb1b3de048689ab79c9e860c6f9892c5c6ff74eca63db07010d2c6883e8a24d802d6d0d29d4b69d427243631fb66bc990c1e922fdbe9132cd4095cd
@@ -3,6 +3,9 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  This project *loosely tries* to adhere to [Semantic Versioning](http://semver.org/).
5
5
 
6
+ ## [0.2.3]
7
+ - #4 validate env vars and use older storage client
8
+
6
9
  ## [0.2.2]
7
10
  - #3 fix test template
8
11
 
data/README.md CHANGED
@@ -27,7 +27,7 @@ end
27
27
 
28
28
  By default, this plugin will automatically create the:
29
29
 
30
- * [resource group](Pluginazurerm)
30
+ * [resource group](https://docs.microsoft.com/en-us/azure/azure-resource-manager/management/manage-resource-groups-portal)
31
31
  * [storage account](https://docs.microsoft.com/en-us/azure/storage/common/storage-account-create?tabs=azure-portal)
32
32
  * [storage container](https://docs.microsoft.com/en-us/cli/azure/storage/container?view=azure-cli-latest#az-storage-container-create)
33
33
 
@@ -35,15 +35,17 @@ The settings generally only apply if the resource does not yet exist yet and is
35
35
 
36
36
  ## Environment Variables
37
37
 
38
- To create the Azure resources like [resource group](Pluginazurerm), [storage account](https://docs.microsoft.com/en-us/azure/storage/common/storage-account-create?tabs=azure-portal), and [storage container](https://docs.microsoft.com/en-us/cli/azure/storage/container?view=azure-cli-latest#az-storage-container-create) these environment variables are required:
38
+ To create the Azure resources like [resource group](https://docs.microsoft.com/en-us/azure/azure-resource-manager/management/manage-resource-groups-portal), [storage account](https://docs.microsoft.com/en-us/azure/storage/common/storage-account-create?tabs=azure-portal), and [storage container](https://docs.microsoft.com/en-us/cli/azure/storage/container?view=azure-cli-latest#az-storage-container-create) these environment variables are required:
39
39
 
40
- AZURE_CLIENT_ID
41
- AZURE_CLIENT_SECRET
40
+ ARM_CLIENT_ID
41
+ ARM_CLIENT_SECRET
42
42
 
43
- There's other env variables can also be set, but are generally inferred.
43
+ Other env variables can be optionally set:
44
44
 
45
- AZURE_TENANT_ID
46
- AZURE_SUBSCRIPTION_ID
45
+ ARM_TENANT_ID
46
+ ARM_SUBSCRIPTION_ID
47
+
48
+ When not set, their values are inferred from the [az cli](https://docs.microsoft.com/en-us/cli/azure/) settings. For those interested, this is done with the [boltops-tools/azure_info](https://github.com/boltops-tools/azure_info) library.
47
49
 
48
50
  ## Contributing
49
51
 
@@ -3,21 +3,49 @@ module TerraspacePluginAzurerm::Clients
3
3
  extend Memoist
4
4
 
5
5
  def client_options
6
- client_id = ENV['AZURE_CLIENT_ID']
7
- client_secret = ENV['AZURE_CLIENT_SECRET']
8
- subscription_id = ENV['AZURE_SUBSCRIPTION_ID'] || AzureInfo.subscription_id
9
- tenant_id = ENV['AZURE_TENANT_ID'] || AzureInfo.tenant_id
6
+ o = base_client_options
7
+ o[:credentials] = credentials
8
+ o
9
+ end
10
+
11
+ def credentials
12
+ o = base_client_options
13
+ provider = MsRestAzure::ApplicationTokenProvider.new(o[:tenant_id], o[:client_id], o[:client_secret])
14
+ MsRest::TokenCredentials.new(provider)
15
+ end
10
16
 
11
- provider = MsRestAzure::ApplicationTokenProvider.new(tenant_id, client_id, client_secret)
12
- credentials = MsRest::TokenCredentials.new(provider)
17
+ def base_client_options
18
+ # AZURE_* is used by ruby generally.
19
+ # ARM_* is used by Terraform azurerm provider: https://www.terraform.io/docs/providers/azurerm/index.html
20
+ # Favor ARM_ because this plugin is designed for Terraspace.
21
+ client_id = ENV['ARM_CLIENT_ID'] || ENV['AZURE_CLIENT_ID']
22
+ client_secret = ENV['ARM_CLIENT_SECRET'] || ENV['AZURE_CLIENT_SECRET']
23
+ subscription_id = ENV['ARM_SUBSCRIPTION_ID'] || ENV['AZURE_SUBSCRIPTION_ID'] || AzureInfo.subscription_id
24
+ tenant_id = ENV['ARM_TENANT_ID'] || ENV['AZURE_TENANT_ID'] || AzureInfo.tenant_id
13
25
 
14
- {
26
+ o = {
15
27
  tenant_id: tenant_id,
16
28
  client_id: client_id,
17
29
  client_secret: client_secret,
18
30
  subscription_id: subscription_id,
19
- credentials: credentials
20
31
  }
32
+ validate_base_options!(o)
33
+ o
34
+ end
35
+ memoize :base_client_options
36
+
37
+ def validate_base_options!(options)
38
+ vars = []
39
+ options.each do |k,v|
40
+ vars << "ARM_#{k}".upcase if v.nil?
41
+ end
42
+ return if vars.empty?
43
+
44
+ logger.error "ERROR: Required Azure env variables missing. Please set these env variables:".color(:red)
45
+ vars.each do |var|
46
+ logger.error " #{var}"
47
+ end
48
+ exit 1
21
49
  end
22
50
  end
23
51
  end
@@ -6,8 +6,8 @@ module TerraspacePluginAzurerm::Clients
6
6
  extend Memoist
7
7
 
8
8
  # Include SDK modules to ease access to Storage classes.
9
- include Azure::Storage::Profiles::Latest::Mgmt
10
- include Azure::Storage::Profiles::Latest::Mgmt::Models
9
+ include Azure::Storage::Mgmt::V2019_06_01
10
+ include Azure::Storage::Mgmt::V2019_06_01::Models
11
11
 
12
12
  def storage_accounts
13
13
  mgmt.storage_accounts
@@ -19,7 +19,9 @@ module TerraspacePluginAzurerm::Clients
19
19
  memoize :blob_containers
20
20
 
21
21
  def mgmt
22
- Client.new(client_options)
22
+ client = StorageManagementClient.new(credentials)
23
+ client.subscription_id = client_options[:subscription_id]
24
+ client
23
25
  end
24
26
  memoize :mgmt
25
27
  end
@@ -1,3 +1,3 @@
1
1
  module TerraspacePluginAzurerm
2
- VERSION = "0.2.2"
2
+ VERSION = "0.2.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: terraspace_plugin_azurerm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tung Nguyen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-09-20 00:00:00.000000000 Z
11
+ date: 2020-10-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: azure-storage-blob