azure-armrest 0.3.9 → 0.3.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 354b862215f326a7caf9baee4c8adf8e522e11e8
4
- data.tar.gz: 51709b7ab4402f95fa434a7ec09c3db705f72bde
3
+ metadata.gz: b9777098a3e4838e748f6da116a2537864c42002
4
+ data.tar.gz: 3ec9b411092bfb9d6cd5fc24c0aadecd2a0ccbc6
5
5
  SHA512:
6
- metadata.gz: 1c8a8bc99dd581528d3de37d60cf8dd15465f26a0e5cf3ce466c02c0597f286343bb85087daefe6c02b5c33a08d966569ec143c51ba4f087220189035b1c440f
7
- data.tar.gz: 603b2c4b5a88c68e54d87c4bf630a83a6af55727c260615505c00d5b68078f64ac1a3825f461edabcb48dde363200aea89374c13a35edb62924af00c5279ed0b
6
+ metadata.gz: d67953ce9e556be3f25a410b64899cde8d6294089eca9bc0b3e320ce1e452e2277783a48459ff7250422c487e39898fb1ab9ac471df482ae382fe4d81539156f
7
+ data.tar.gz: 4b7966bd30284bd34bd16eacb0960bb49ba23ea767db1a9275159c0c1f459dde5ae34d69151c679ec8a83b2df3d8b2b0bfb3a192c23b844ff984b7ab3b4aef7c
data/CHANGES CHANGED
@@ -1,7 +1,11 @@
1
+ = 0.3.10 - 28-Oct-2016
2
+ * Added the ResourceGroupBasedService#get_associated_resource method. This
3
+ method will retrieve a service or subservice resource based on an ID string.
4
+
1
5
  = 0.3.9 - 19-Oct-2016
2
6
  * The StorageAccount#delete_blob method now returns a ResponseHeaders object
3
7
  instead of true.
4
- # The Configuration.clear_caches method now additionally clears the
8
+ * The Configuration.clear_caches method now additionally clears the
5
9
  CacheMethod config store.
6
10
 
7
11
  = 0.3.8 - 7-Oct-2-16
@@ -2,6 +2,22 @@ module Azure
2
2
  module Armrest
3
3
  # Base class for services that need to run in a resource group
4
4
  class ResourceGroupBasedService < ArmrestService
5
+ # Used to map service name strings to internal classes
6
+ SERVICE_NAME_MAP = {
7
+ 'availabilitysets' => Azure::Armrest::AvailabilitySet,
8
+ 'loadbalancers' => Azure::Armrest::Network::LoadBalancer,
9
+ 'networkinterfaces' => Azure::Armrest::Network::NetworkInterface,
10
+ 'networksecuritygroups' => Azure::Armrest::Network::NetworkSecurityGroup,
11
+ 'publicipaddresses' => Azure::Armrest::Network::IpAddress,
12
+ 'storageaccounts' => Azure::Armrest::StorageAccount,
13
+ 'virtualnetworks' => Azure::Armrest::Network::VirtualNetwork,
14
+ 'subnets' => Azure::Armrest::Network::Subnet,
15
+ 'inboundnatrules' => Azure::Armrest::Network::InboundNat,
16
+ 'securityrules' => Azure::Armrest::Network::NetworkSecurityRule,
17
+ 'routes' => Azure::Armrest::Network::Route,
18
+ 'databases' => Azure::Armrest::Sql::SqlDatabase,
19
+ }.freeze
20
+
5
21
  # Create a resource +name+ within the resource group +rgroup+, or the
6
22
  # resource group that was specified in the configuration, along with
7
23
  # a hash of appropriate +options+.
@@ -73,6 +89,41 @@ module Azure
73
89
  filter.empty? ? results : results.select { |obj| filter.all? { |k, v| obj.public_send(k) == v } }
74
90
  end
75
91
 
92
+ # This method returns a model object based on an ID string for a Service.
93
+ #
94
+ # Example:
95
+ #
96
+ # vms = Azure::Armrest::VirtualMachineService.new(conf)
97
+ #
98
+ # vm = vms.get('your_vm', 'your_group')
99
+ # nic_id = vm.properties.network_profile.network_interfaces[0].id
100
+ # nic = vm.get_associated_resource(nic_id)
101
+ #
102
+ def get_associated_resource(id_string)
103
+ info = parse_id_string(id_string)
104
+
105
+ if info['subservice_name']
106
+ full_service_name = info['service_name'] + '/' + info['subservice_name']
107
+ api_version = configuration.provider_default_api_version(info['provider'], full_service_name)
108
+ api_version ||= configuration.provider_default_api_version(info['provider'], info['service_name'])
109
+ else
110
+ api_version = configuration.provider_default_api_version(info['provider'], info['service_name'])
111
+ end
112
+
113
+ api_version ||= configuration.api_version
114
+ service_name = info['subservice_name'] || info['service_name']
115
+
116
+ url = File.join(Azure::Armrest::RESOURCE, id_string) + "?api-version=#{api_version}"
117
+
118
+ model_class = SERVICE_NAME_MAP.fetch(service_name.downcase) do
119
+ raise ArgumentError, "unable to map service name #{service_name} to model"
120
+ end
121
+
122
+ model_class.new(rest_get(url))
123
+ end
124
+
125
+ alias get_by_id get_associated_resource
126
+
76
127
  # Get information about a single resource +name+ within resource group
77
128
  # +rgroup+, or the resource group that was set in the configuration.
78
129
  #
@@ -120,6 +171,25 @@ module Azure
120
171
 
121
172
  private
122
173
 
174
+ # Parse the provider and service name out of an ID string.
175
+ def parse_id_string(id_string)
176
+ regex = %r{
177
+ subscriptions/
178
+ (?<subscription_id>[\w\-]+)?/
179
+ resourceGroups/
180
+ (?<resource_group>\w+)?/
181
+ providers/
182
+ (?<provider>[\w\.]+)?/
183
+ (?<service_name>\w+)?/
184
+ (?<resource_name>\w+)
185
+ (/(?<subservice_name>\w+)?/(?<subservice_resource_name>\w+))*
186
+ \z
187
+ }x
188
+
189
+ match = regex.match(id_string)
190
+ Hash[match.names.zip(match.captures)]
191
+ end
192
+
123
193
  # Make additional calls and concatenate the results if a continuation URL is found.
124
194
  def get_all_results(response)
125
195
  results = Azure::Armrest::ArmrestCollection.create_from_response(response, model_class)
@@ -1,5 +1,5 @@
1
1
  module Azure
2
2
  module Armrest
3
- VERSION = '0.3.9'.freeze
3
+ VERSION = '0.3.10'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: azure-armrest
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.9
4
+ version: 0.3.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel J. Berger
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2016-10-19 00:00:00.000000000 Z
14
+ date: 2016-10-28 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: json
@@ -275,7 +275,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
275
275
  version: '0'
276
276
  requirements: []
277
277
  rubyforge_project:
278
- rubygems_version: 2.6.4
278
+ rubygems_version: 2.6.7
279
279
  signing_key:
280
280
  specification_version: 4
281
281
  summary: An interface for ARM/JSON Azure REST API