azure_info 0.1.4 → 0.1.5

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: e4ae9c9490f68fe1f75f04f8c4ad05adb4c4c3ddbe4723563e33739723c13f64
4
- data.tar.gz: f463b07527a94b6851fefa659e568a9d4d59c1d0496dd136e62067a8bdf8d4f3
3
+ metadata.gz: 737b4ad017cbfce9e30a1d2eb1ca407c83b6c11197c676e9ec749b6d070ccea0
4
+ data.tar.gz: f698f4d4cd5a08eb51e16a64009289d3be5a49aa1712c3b480736ffc0c51bf83
5
5
  SHA512:
6
- metadata.gz: 5ea982a5564f29622a740324a6459ea316f4b174ef6723e4e1859ea6f8ed759909a930dda066d3680989972d2358a721e3d2ab57c28c62db6c554fce155c4b57
7
- data.tar.gz: a82b55909878ea8bf6a00db2829762fb6c0632c0ef9d59b336cd8c8bc6ffa087526a52aacca18a883ba416b742be8ebb8ed6c09ba754fde4997127e33cde865f
6
+ metadata.gz: 44d63cfc5298e5ddb81c1811231baa1c6285acfc23ee4f6a923166bac07e8c91c82c00a0ffedf63c21e26cffb9f2a89c5a4fa4713db63f6bc5acb88c2cdaf08a
7
+ data.tar.gz: 73c4d6bac182e50c17582d0446555a947889f4a12826959674d8c0fcb2d5d63b68da1e0d76e46bca80c94a500e606e9e03f0faf8e1a9e3f1d66f859439b4f715
data/CHANGELOG.md CHANGED
@@ -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/), even before v1.0.
5
5
 
6
+ ## [0.1.5] - 2021-12-27
7
+ - [#5](https://github.com/boltops-tools/azure_info/pull/5) improve error message when az cli not installed
8
+
6
9
  ## [0.1.4] - 2021-12-27
7
10
  - [#4](https://github.com/boltops-tools/azure_info/pull/4) improve error message when az cli not installed
8
11
 
@@ -1,5 +1,5 @@
1
1
  module AzureInfo
2
- class Account
2
+ class Account < Base
3
3
  def get(name)
4
4
  az_account_show[name]
5
5
  end
@@ -7,15 +7,22 @@ module AzureInfo
7
7
  # looks like az configure stores settings in ~/.azure/config
8
8
  def az_account_show
9
9
  return @az_account_show if @az_account_show
10
- check_az_installed!
11
10
 
12
- command = "az account show --output json"
13
- out = `#{command}`.strip
14
-
15
- raise_status_error(command) unless $?.success?
16
- raise_empty_error(command) if out.strip == ""
17
-
18
- @az_account_show = JSON.load(out)
11
+ if az_installed?
12
+ command = "az account show --output json"
13
+ out = `#{command}`.strip
14
+
15
+ raise_status_error(command) unless $?.success?
16
+ raise_empty_error(command) if out.strip == ""
17
+
18
+ @az_account_show = JSON.load(out)
19
+ else
20
+ if env_vars_set?
21
+ {}
22
+ else
23
+ error_message
24
+ end
25
+ end
19
26
  end
20
27
 
21
28
  def raise_status_error(command)
@@ -24,14 +31,11 @@ module AzureInfo
24
31
  Maybe you havent ran `az login` or configured ~/.azure manually.
25
32
  You can configure az login non-interactively with
26
33
 
27
- az login --service-principal \
28
- --username USERNAME \
29
- --password PASSWORD \
30
- --tenant TENANT
34
+ az login --service-principal --username USERNAME --password PASSWORD --tenant TENANT
31
35
 
32
36
  Per https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli?view=azure-cli-latest#sign-in-using-a-service-principal
33
37
  EOL
34
- raise Error.new(message)
38
+ error_message(message)
35
39
  end
36
40
 
37
41
  def raise_empty_error(command)
@@ -39,7 +43,7 @@ module AzureInfo
39
43
  The '#{command}' return a blank string.
40
44
  Something went wrong. Try running it manually and confirm it returns json.
41
45
  EOL
42
- raise Error.new(message)
46
+ error_message(message)
43
47
  end
44
48
  end
45
49
  end
@@ -0,0 +1,54 @@
1
+ module AzureInfo
2
+ class Base
3
+ def az_installed?
4
+ system("type az > /dev/null 2>&1")
5
+ end
6
+
7
+ def env_vars
8
+ %w[
9
+ ARM_CLIENT_ID
10
+ ARM_CLIENT_SECRET
11
+ ARM_LOCATION
12
+ ARM_SUBSCRIPTION_ID
13
+ ARM_TENANT_ID
14
+ ARM_ACCOUNT
15
+ ]
16
+ end
17
+
18
+ def env_vars_set?
19
+ env_vars.all? { |var| ENV[var] }
20
+ end
21
+
22
+ def error_message(message=nil)
23
+ all_vars = format_list(env_vars)
24
+ unset_vars = format_list(env_vars.reject { |var| ENV[var] })
25
+ message ||= <<~EOL
26
+ ERROR: az is not installed. Please install the az command and configure it.
27
+ AzureInfo uses it to detect azure resource group, location, subscription id, and tenant id.
28
+
29
+ You can also configure these environment variables instead of installing the az cli.
30
+
31
+ #{all_vars}
32
+
33
+ Currently, the unset vars are:
34
+
35
+ #{unset_vars}
36
+
37
+ EOL
38
+ show_error(message)
39
+ end
40
+
41
+ def show_error(message)
42
+ if ENV['AZ_INFO_RAISE_ERROR']
43
+ raise Error.new(message)
44
+ else
45
+ puts message
46
+ exit 1
47
+ end
48
+ end
49
+
50
+ def format_list(vars)
51
+ vars.map { |var| " #{var}" }.join("\n")
52
+ end
53
+ end
54
+ end
@@ -3,9 +3,9 @@
3
3
  # az configure --defaults location=westus2 group=MyResourceGroup
4
4
  #
5
5
  module AzureInfo
6
- class Configure
6
+ class Configure < Base
7
7
  def get(name)
8
- item = azure_configs.find do |i|
8
+ item = az_configure.find do |i|
9
9
  i["name"] == name
10
10
  end
11
11
  item["value"] if item
@@ -13,11 +13,11 @@ module AzureInfo
13
13
 
14
14
  private
15
15
  # looks like az configure stores settings in ~/.azure/config
16
- def azure_configs
16
+ def az_configure
17
17
  if az_installed?
18
- return @azure_configs if @azure_configs
18
+ return @az_configure if @az_configure
19
19
  out = `az configure --list-defaults --output json`.strip
20
- @azure_configs = JSON.load(out)
20
+ @az_configure = JSON.load(out)
21
21
  else
22
22
  if env_vars_set?
23
23
  []
@@ -26,51 +26,5 @@ module AzureInfo
26
26
  end
27
27
  end
28
28
  end
29
-
30
- def az_installed?
31
- system("type az > /dev/null 2>&1")
32
- end
33
-
34
- def env_vars
35
- %w[
36
- ARM_CLIENT_ID
37
- ARM_CLIENT_SECRET
38
- ARM_LOCATION
39
- ARM_SUBSCRIPTION_ID
40
- ARM_TENANT_ID
41
- ]
42
- end
43
-
44
- def env_vars_set?
45
- env_vars.all? { |var| ENV[var] }
46
- end
47
-
48
- def error_message
49
- all_vars = format_list(env_vars)
50
- unset_vars = format_list(env_vars.reject { |var| ENV[var] })
51
- message = <<~EOL
52
- ERROR: az is not installed. Please install the az command and configure it.
53
- AzureInfo uses it to detect azure resource group, location, subscription id, and tenant id.
54
-
55
- You can also configure these environment variables instead of installing the az cli.
56
-
57
- #{all_vars}
58
-
59
- Currently, the unset vars are:
60
-
61
- #{unset_vars}
62
-
63
- EOL
64
- if ENV['AZ_INFO_RAISE_ERROR']
65
- raise Error.new(message)
66
- else
67
- puts message
68
- exit 1
69
- end
70
- end
71
-
72
- def format_list(vars)
73
- vars.map { |var| " #{var}" }.join("\n")
74
- end
75
29
  end
76
30
  end
@@ -1,3 +1,3 @@
1
1
  module AzureInfo
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.5"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: azure_info
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tung Nguyen
@@ -29,6 +29,7 @@ files:
29
29
  - bin/setup
30
30
  - lib/azure_info.rb
31
31
  - lib/azure_info/account.rb
32
+ - lib/azure_info/base.rb
32
33
  - lib/azure_info/configure.rb
33
34
  - lib/azure_info/version.rb
34
35
  homepage: https://github.com/boltops-tools/azure_info