fog-azure-rm 0.4.6 → 0.4.7

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: 4b9efeefac7a938ff930c43843ac651fb93a38af3555b3241ec970f8aca0e412
4
- data.tar.gz: 3dcbbb882dd381a9b52f174f2c62d48ea6247888033820a7b4084eeb05758cb5
3
+ metadata.gz: 8f2643da5f5306d3ff7cc3d7f64ffd012fe8dd62bd3cf751d3b39efb984fab56
4
+ data.tar.gz: 2698137885445fde6a1378e0e51d988ce735dca45bb78b5cbdc578c17a686831
5
5
  SHA512:
6
- metadata.gz: fba09be6a12ab9eb51298ed1ca9ac9a136004c0d1dec6606b4db9ca6125d1eb659c2471f7dc714178f5931f5ca70432d7dfdf2a1f17317ea877296d6f4fcb2f6
7
- data.tar.gz: 1f6acc0b6182e755ad8d823bd7a9ff9ea91cc9cf92ad595d91df4258df6feb95518e83982cd5d7034547bab2dc81079b4539829d604e40a259ae5f74513d6b9a
6
+ metadata.gz: e5dfd85ae82dab94a2ead2195c06776a80c74de916c480c46b88cb07dc5ff8e9ed4fba07f682c281106b59b5704b17bbf0baccc3d485791a1e5249dbc289669a
7
+ data.tar.gz: 6e4de4154352a2fa6592ae9fdfa8a88ce5f322d4c6d8ef39c6f7cf942df3f85aedccbe00748af26346d0b9cc27f56cf12f25424870f4449c03653b34b42ce1ba
@@ -1,3 +1,9 @@
1
+ ## 0.4.7
2
+
3
+ **Added:**
4
+ - Support added to list resources in a resource group
5
+ - Added OS disk id attribute to the 'Compute' model
6
+
1
7
  ## 0.4.6
2
8
 
3
9
  **Added:**
@@ -11,6 +11,7 @@ module Fog
11
11
  attribute :vm_size
12
12
  attribute :storage_account_name
13
13
  attribute :os_disk_name
14
+ attribute :os_disk_id
14
15
  attribute :os_disk_vhd_uri
15
16
  attribute :os_disk_caching
16
17
  attribute :publisher
@@ -46,6 +47,10 @@ module Fog
46
47
  hash['vm_size'] = vm.hardware_profile.vm_size unless vm.hardware_profile.vm_size.nil?
47
48
  unless vm.storage_profile.nil?
48
49
  hash['os_disk_name'] = vm.storage_profile.os_disk.name
50
+
51
+ subscription_id = get_subscription_id(vm.id)
52
+ hash['os_disk_id'] = "/subscriptions/#{subscription_id}/resourceGroups/#{hash['resource_group']}/providers/Microsoft.Compute/disks/#{hash['os_disk_name']}"
53
+
49
54
  hash['os_disk_size'] = vm.storage_profile.os_disk.disk_size_gb
50
55
  if vm.storage_profile.os_disk.vhd.nil?
51
56
  hash['managed_disk_storage_type'] = vm.storage_profile.os_disk.managed_disk.storage_account_type
@@ -26,6 +26,14 @@ module Fog
26
26
  def check_azure_resource_exists(resource_id, api_version)
27
27
  service.check_azure_resource_exists(resource_id, api_version)
28
28
  end
29
+
30
+ def list_resources_in_resource_group(resource_group_name)
31
+ resources = []
32
+ service.list_resources_in_resource_group(resource_group_name).each do |resource|
33
+ resources.push(Fog::Resources::AzureRM::AzureResource.parse(resource))
34
+ end
35
+ load(resources)
36
+ end
29
37
  end
30
38
  end
31
39
  end
@@ -0,0 +1,42 @@
1
+ module Fog
2
+ module Resources
3
+ class AzureRM
4
+ # This class provides the actual implementation for service calls.
5
+ class Real
6
+ def list_resources_in_resource_group(resource_group_name)
7
+ msg = "Listing Resources in #{resource_group_name}"
8
+ Fog::Logger.debug msg
9
+ begin
10
+ resources = @rmc.resource_groups.list_resources(resource_group_name)
11
+ rescue MsRestAzure::AzureOperationError => e
12
+ raise_azure_exception(e, msg)
13
+ end
14
+ Fog::Logger.debug "Resources in #{resource_group_name} listed successfully"
15
+ resources
16
+ end
17
+ end
18
+
19
+ # This class provides the mock implementation for unit tests.
20
+ class Mock
21
+ def list_resources_in_resource_group(*)
22
+ resources = {
23
+ 'id' => '/subscriptions/########-####-####-####-############/fog-rg',
24
+ 'name' => 'your-resource-name',
25
+ 'type' => 'providernamespace/resourcetype',
26
+ 'location' => 'westus',
27
+ 'tags' =>
28
+ {
29
+ tag_name => tag_value
30
+ },
31
+ 'plan' =>
32
+ {
33
+ 'name' => 'free'
34
+ }
35
+ }
36
+ result_mapper = Azure::ARM::Resources::Models::GenericResource.mapper
37
+ @rmc.deserialize(result_mapper, resources, 'result.body').value
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -23,6 +23,7 @@ module Fog
23
23
  request :list_tagged_resources
24
24
  request :tag_resource
25
25
  request :check_azure_resource_exists
26
+ request :list_resources_in_resource_group
26
27
 
27
28
  model_path 'fog/azurerm/models/resources'
28
29
  model :resource_group
@@ -177,3 +177,7 @@ end
177
177
  def get_image_name(id)
178
178
  id.split('/').last
179
179
  end
180
+
181
+ def get_subscription_id(id)
182
+ id.split('/')[2]
183
+ end
@@ -1,5 +1,5 @@
1
1
  module Fog
2
2
  module AzureRM
3
- VERSION = '0.4.6'.freeze
3
+ VERSION = '0.4.7'.freeze
4
4
  end
5
5
  end
@@ -21,6 +21,7 @@ module ApiStub
21
21
  },
22
22
  'osDisk' => {
23
23
  'name' => 'fog-test-server_os_disk',
24
+ 'id' => '/subscriptions/########-####-####-####-############/resourceGroups/fog-test-rg/providers/Microsoft.Compute/disks/fog-test-server_os_disk',
24
25
  'vhd' => {
25
26
  'uri' => 'http://storageAccount.blob.core.windows.net/vhds/fog-test-server_os_disk.vhd'
26
27
  }
@@ -37,6 +37,23 @@ module ApiStub
37
37
  result_mapper = Azure::ARM::Resources::Models::ResourceListResult.mapper
38
38
  client.deserialize(result_mapper, Fog::JSON.decode(resources), 'result.body').value
39
39
  end
40
+
41
+ def self.list_resources_in_resource_group_response(client)
42
+ resources = '{
43
+ "id": "/subscriptions/########-####-####-####-############/resourceGroups/{RESOURCE-GROUP}/providers/Microsoft.Network/{PROVIDER-NAME}/{RESOURCE-NAME}",
44
+ "name": "your-resource-name",
45
+ "type": "providernamespace/resourcetype",
46
+ "location": "westus",
47
+ "tags": {
48
+ "tag_name": "tag_value"
49
+ },
50
+ "plan": {
51
+ "name": "free"
52
+ }
53
+ }'
54
+ result_mapper = Azure::ARM::Resources::Models::GenericResource.mapper
55
+ client.deserialize(result_mapper, Fog::JSON.decode(resources), 'result.body')
56
+ end
40
57
  end
41
58
  end
42
59
  end
@@ -243,6 +243,7 @@ module ApiStub
243
243
  },
244
244
  "osDisk": {
245
245
  "name":"myosdisk1",
246
+ "id":"/subscriptions/{subscription-id}/resourceGroups/fog-test-rg/providers/Microsoft.Compute/disks/myosdisk1",
246
247
  "vhd": {
247
248
  "uri":"http://mystorage1.blob.core.windows.net/vhds/myosdisk1.vhd"
248
249
  },
@@ -320,6 +321,7 @@ module ApiStub
320
321
  },
321
322
  "osDisk": {
322
323
  "name":"myosdisk1",
324
+ "id":"/subscriptions/{subscription-id}/resourceGroups/fog-test-rg/providers/Microsoft.Compute/disks/myosdisk1",
323
325
  "vhd": {
324
326
  "uri":"http://mystorage1.blob.core.windows.net/vhds/myosdisk1.vhd"
325
327
  },
@@ -397,6 +399,7 @@ module ApiStub
397
399
  },
398
400
  "osDisk": {
399
401
  "name":"myosdisk1",
402
+ "id":"/subscriptions/{subscription-id}/resourceGroups/fog-test-rg/providers/Microsoft.Compute/disks/myosdisk1",
400
403
  "vhd": {
401
404
  "uri":"https://custimagestorage.blob.core.windows.net/customimage/trusty-server-cloudimg-amd64-disk1.vhd"
402
405
  },
@@ -474,6 +477,7 @@ module ApiStub
474
477
  },
475
478
  "osDisk": {
476
479
  "name":"myosdisk1",
480
+ "id":"/subscriptions/{subscription-id}/resourceGroups/fog-test-rg/providers/Microsoft.Compute/disks/myosdisk1",
477
481
  "vhd": {
478
482
  "uri":"http://mystorage1.blob.core.windows.net/vhds/myosdisk1.vhd"
479
483
  },
@@ -546,6 +550,7 @@ module ApiStub
546
550
  'osDisk' =>
547
551
  {
548
552
  'name' => 'myosdisk1',
553
+ 'id' => '/subscriptions/{subscription-id}/resourceGroups/fog-test-rg/providers/Microsoft.Compute/disks/myosdisk1',
549
554
  'vhd' =>
550
555
  {
551
556
  'uri' => 'http://mystorage1.blob.core.windows.net/vhds/myosdisk1.vhd'
@@ -651,6 +656,7 @@ module ApiStub
651
656
  },
652
657
  "osDisk": {
653
658
  "name":"myosdisk1",
659
+ "id":"/subscriptions/{subscription-id}/resourceGroups/fog-test-rg/providers/Microsoft.Compute/disks/myosdisk1",
654
660
  "vhd": {
655
661
  "uri":"http://mystorage1.blob.core.windows.net/vhds/myosdisk1.vhd"
656
662
  },
@@ -809,6 +815,7 @@ module ApiStub
809
815
  },
810
816
  "osDisk": {
811
817
  "name":"myosdisk1",
818
+ "id":"/subscriptions/{subscription-id}/resourceGroups/fog-test-rg/providers/Microsoft.Compute/disks/myosdisk1",
812
819
  "vhd": {
813
820
  "uri":"http://mystorage1.blob.core.windows.net/vhds/myosdisk1.vhd"
814
821
  },
@@ -896,6 +903,7 @@ module ApiStub
896
903
  },
897
904
  "osDisk": {
898
905
  "name":"myosdisk1",
906
+ "id":"/subscriptions/{subscription-id}/resourceGroups/fog-test-rg/providers/Microsoft.Compute/disks/myosdisk1",
899
907
  "vhd": {
900
908
  "uri":"http://mystorage1.blob.core.windows.net/vhds/myosdisk1.vhd"
901
909
  },
@@ -39,6 +39,23 @@ module ApiStub
39
39
  result_mapper = Azure::ARM::Resources::Models::ResourceListResult.mapper
40
40
  client.deserialize(result_mapper, Fog::JSON.decode(body), 'result.body')
41
41
  end
42
+
43
+ def self.list_resources_in_resource_group(client)
44
+ body = '{
45
+ "id": "/subscriptions/########-####-####-####-############/resourceGroups/{RESOURCE-GROUP}/providers/Microsoft.Network/{PROVIDER-NAME}/{RESOURCE-NAME}",
46
+ "name": "your-resource-name",
47
+ "type": "providernamespace/resourcetype",
48
+ "location": "westus",
49
+ "tags": {
50
+ "tag_name": "tag_value"
51
+ },
52
+ "plan": {
53
+ "name": "free"
54
+ }
55
+ }'
56
+ result_mapper = Azure::ARM::Resources::Models::GenericResource.mapper
57
+ client.deserialize(result_mapper, Fog::JSON.decode(body), 'result.body')
58
+ end
42
59
  end
43
60
  end
44
61
  end
@@ -17,7 +17,6 @@ resource = Fog::Resources::AzureRM.new(
17
17
  resource_group_name = "RG-#{current_time}"
18
18
 
19
19
  begin
20
-
21
20
  ########################################################################################################################
22
21
  ###################### Check Resource Group Exists? ######################
23
22
  ########################################################################################################################
@@ -51,6 +50,16 @@ begin
51
50
  resource_group = resource_groups.get(resource_group_name)
52
51
  puts "Get resource group: #{resource_group.name}"
53
52
 
53
+ ########################################################################################################################
54
+ ###################### Get All Resources in a Resource Group ######################
55
+ ########################################################################################################################
56
+
57
+ resources = resource.azure_resources.list_resources_in_resource_group(resource_group_name)
58
+ puts 'List resources in resource groups:'
59
+ resources.each do |a_resource|
60
+ puts a_resource.name
61
+ end
62
+
54
63
  ########################################################################################################################
55
64
  ###################### Destroy Resource Group ######################
56
65
  ########################################################################################################################
@@ -38,6 +38,7 @@ class TestServer < Minitest::Test
38
38
  :vm_size,
39
39
  :storage_account_name,
40
40
  :os_disk_name,
41
+ :os_disk_id,
41
42
  :os_disk_vhd_uri,
42
43
  :os_disk_caching,
43
44
  :publisher,
@@ -14,7 +14,8 @@ class TestResources < Minitest::Test
14
14
  methods = [
15
15
  :all,
16
16
  :get,
17
- :check_azure_resource_exists
17
+ :check_azure_resource_exists,
18
+ :list_resources_in_resource_group
18
19
  ]
19
20
  methods.each do |method|
20
21
  assert_respond_to @resources, method
@@ -49,4 +50,16 @@ class TestResources < Minitest::Test
49
50
  assert !@resources.check_azure_resource_exists(@resource_id, '2016-09-01')
50
51
  end
51
52
  end
53
+
54
+ def test_list_resources_in_resource_group_method_response
55
+ client = @service.instance_variable_get(:@rmc)
56
+ response = [ApiStub::Models::Resources::Resource.list_resources_in_resource_group_response(client)]
57
+ @service.stub :list_resources_in_resource_group, response do
58
+ assert_instance_of Fog::Resources::AzureRM::AzureResources, @resources.list_resources_in_resource_group('fog-test-rg')
59
+ assert @resources.list_resources_in_resource_group('fog-test-rg').size >= 1
60
+ @resources.list_resources_in_resource_group('fog-test-rg').each do |s|
61
+ assert_instance_of Fog::Resources::AzureRM::AzureResource, s
62
+ end
63
+ end
64
+ end
52
65
  end
@@ -0,0 +1,24 @@
1
+ require File.expand_path '../../test_helper', __dir__
2
+
3
+ # Test class for List Resource Groups Request
4
+ class TestListResources < Minitest::Test
5
+ def setup
6
+ @service = Fog::Resources::AzureRM.new(credentials)
7
+ @client = @service.instance_variable_get(:@rmc)
8
+ @resources = @client.resource_groups
9
+ end
10
+
11
+ def test_list_resources_in_resource_group_success
12
+ mocked_response = ApiStub::Requests::Resources::AzureResource.list_resources_in_resource_group(@client)
13
+ @resources.stub :list_resources, mocked_response do
14
+ assert_equal @service.list_resources_in_resource_group('fog-test-rg'), mocked_response
15
+ end
16
+ end
17
+
18
+ def test_list_resources_in_resource_group_failure
19
+ response = proc { raise MsRestAzure::AzureOperationError.new(nil, nil, 'error' => { 'message' => 'mocked exception' }) }
20
+ @resources.stub :list_resources, response do
21
+ assert_raises(MsRestAzure::AzureOperationError) { @service.list_resources_in_resource_group('fog-test-rg') }
22
+ end
23
+ end
24
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fog-azure-rm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.6
4
+ version: 0.4.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shaffan Chaudhry
@@ -18,7 +18,7 @@ authors:
18
18
  autorequire:
19
19
  bindir: bin
20
20
  cert_chain: []
21
- date: 2018-03-14 00:00:00.000000000 Z
21
+ date: 2018-05-03 00:00:00.000000000 Z
22
22
  dependencies:
23
23
  - !ruby/object:Gem::Dependency
24
24
  name: rake
@@ -564,6 +564,7 @@ files:
564
564
  - lib/fog/azurerm/requests/resources/get_resource_group.rb
565
565
  - lib/fog/azurerm/requests/resources/list_deployments.rb
566
566
  - lib/fog/azurerm/requests/resources/list_resource_groups.rb
567
+ - lib/fog/azurerm/requests/resources/list_resources_in_resource_group.rb
567
568
  - lib/fog/azurerm/requests/resources/list_tagged_resources.rb
568
569
  - lib/fog/azurerm/requests/resources/tag_resource.rb
569
570
  - lib/fog/azurerm/requests/sql/check_database_exists.rb
@@ -965,6 +966,7 @@ files:
965
966
  - test/requests/resources/test_get_resource_group.rb
966
967
  - test/requests/resources/test_list_deployments.rb
967
968
  - test/requests/resources/test_list_resource_groups.rb
969
+ - test/requests/resources/test_list_resources_in_resource_group.rb
968
970
  - test/requests/resources/test_list_tagged_resources.rb
969
971
  - test/requests/resources/test_tag_resource.rb
970
972
  - test/requests/sql/test_create_or_update_database.rb