azure-armrest 0.0.8 → 0.0.9
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 +4 -4
- data/CHANGES +5 -0
- data/README.md +10 -13
- data/lib/azure/armrest.rb +3 -0
- data/lib/azure/armrest/insights/alert_service.rb +23 -0
- data/lib/azure/armrest/insights/event_service.rb +76 -0
- data/lib/azure/armrest/model/base_model.rb +6 -0
- data/lib/azure/armrest/model/storage_account.rb +70 -6
- data/lib/azure/armrest/network/network_security_rule_service.rb +47 -0
- data/lib/azure/armrest/version.rb +1 -1
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f8b26339221636eee239e6934d67cf0c4ee3bbb9
|
4
|
+
data.tar.gz: 1a6c35bd8f5a4af7ec2bd68d3734978add667981
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1a130d2af6d31ca1b55b40dbe528103b359022ac7a9b685d4954ea3144f1ec6bbc5be7247aaa9f2e23963819d308d322159f46d3390b74c81caf3ee8c3dec7fc
|
7
|
+
data.tar.gz: fe7a7347b7bd16877848d8125ff496504d2e96822487ba0a70f62fc157798373767b9852ba5b89d3a0314e797803493745c77697b2b373eea86716e6b4086e52
|
data/CHANGES
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
= 0.0.9 - 17-Dec-2015
|
2
|
+
* Added AlertService and EventService classes.
|
3
|
+
* Added tables, table_info and table_data methods to the StorageAccount model.
|
4
|
+
* Updates to the README.
|
5
|
+
|
1
6
|
= 0.0.8 - 10-Nov-2015
|
2
7
|
* Added the list_private_images method to the StorageAccountService class.
|
3
8
|
* Added the list_all method to the ResourceGroupService class.
|
data/README.md
CHANGED
@@ -15,6 +15,7 @@ require 'azure/armrest'
|
|
15
15
|
|
16
16
|
# Create a configuration object. All service objects will then use the
|
17
17
|
# information you set here.
|
18
|
+
#
|
18
19
|
# A token will be retrieved based on the information you provided
|
19
20
|
|
20
21
|
conf = Azure::Armrest::ArmrestService.configure(
|
@@ -28,23 +29,19 @@ conf = Azure::Armrest::ArmrestService.configure(
|
|
28
29
|
# You can add other options specific to the service to be created
|
29
30
|
vms = Azure::Armrest::VirtualMachineService.new(conf, options)
|
30
31
|
|
31
|
-
#
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
:admin_password => 'adminxxxxxx',
|
39
|
-
:os_disk => {:name => 'disk_name1', :os_type => 'Linux', :caching => 'read'},
|
40
|
-
:data_disks => {:name => 'data_disk1', :lun => 0, :caching => 'read'}
|
41
|
-
)
|
32
|
+
# List all virtual machines for a given resource group:
|
33
|
+
vms.list(some_group).each do |vm|
|
34
|
+
puts vm.name
|
35
|
+
puts vm.resource_group
|
36
|
+
puts vm.location
|
37
|
+
puts vm.properties.hardware_profile.vm_size
|
38
|
+
end
|
42
39
|
```
|
43
40
|
|
44
41
|
## Subscriptions
|
45
42
|
|
46
|
-
If you do not provide a subscription ID
|
47
|
-
subscription ID returned from a REST call will be used.
|
43
|
+
If you do not provide a subscription ID in your configuration object, then the
|
44
|
+
first subscription ID returned from a REST call will be used.
|
48
45
|
|
49
46
|
## Notes
|
50
47
|
|
data/lib/azure/armrest.rb
CHANGED
@@ -33,9 +33,12 @@ require 'azure/armrest/template_deployment_service'
|
|
33
33
|
require 'azure/armrest/resource_service'
|
34
34
|
require 'azure/armrest/resource_group_service'
|
35
35
|
require 'azure/armrest/resource_provider_service'
|
36
|
+
require 'azure/armrest/insights/alert_service'
|
37
|
+
require 'azure/armrest/insights/event_service'
|
36
38
|
require 'azure/armrest/network/ip_address_service'
|
37
39
|
require 'azure/armrest/network/network_interface_service'
|
38
40
|
require 'azure/armrest/network/network_security_group_service'
|
41
|
+
require 'azure/armrest/network/network_security_rule_service'
|
39
42
|
require 'azure/armrest/network/virtual_network_service'
|
40
43
|
require 'azure/armrest/network/subnet_service'
|
41
44
|
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# Azure namespace
|
2
|
+
module Azure
|
3
|
+
# Armrest namespace
|
4
|
+
module Armrest
|
5
|
+
# Insights namesspace
|
6
|
+
module Insights
|
7
|
+
# Base class for managing alert rules.
|
8
|
+
class AlertService < ResourceGroupBasedService
|
9
|
+
# The provider used in requests when gathering Alert information.
|
10
|
+
attr_reader :provider
|
11
|
+
|
12
|
+
# Create and return a new AlertService instance.
|
13
|
+
#
|
14
|
+
def initialize(_armrest_configuration, options = {})
|
15
|
+
super
|
16
|
+
@provider = options[:provider] || 'Microsoft.Insights'
|
17
|
+
set_service_api_version(options, 'alertrules')
|
18
|
+
@service_name = 'alertRules'
|
19
|
+
end
|
20
|
+
end # AlertService
|
21
|
+
end # Insights
|
22
|
+
end # Armrest
|
23
|
+
end # Azure
|
@@ -0,0 +1,76 @@
|
|
1
|
+
# Azure namespace
|
2
|
+
module Azure
|
3
|
+
# Armrest namespace
|
4
|
+
module Armrest
|
5
|
+
# Insights namespace
|
6
|
+
module Insights
|
7
|
+
|
8
|
+
# Base class for managing events.
|
9
|
+
class EventService < ArmrestService
|
10
|
+
# The provider used in requests when gathering Event information.
|
11
|
+
attr_reader :provider
|
12
|
+
|
13
|
+
# Create and return a new EventService instance.
|
14
|
+
#
|
15
|
+
def initialize(_armrest_configuration, options = {})
|
16
|
+
super
|
17
|
+
@provider = options[:provider] || 'Microsoft.Insights'
|
18
|
+
set_service_api_version(options, 'eventtypes')
|
19
|
+
@service_name = 'eventTypes'
|
20
|
+
end
|
21
|
+
|
22
|
+
# Returns a list of management events for the current subscription.
|
23
|
+
# The +filter+ option can be used to filter the result set. Additionally,
|
24
|
+
# you may restrict the results to only return certain fields using
|
25
|
+
# the +select+ option. The possible fields for both filtering and selection
|
26
|
+
# are:
|
27
|
+
#
|
28
|
+
# authorization, channels, claims, correlationId, description, eventDataId,
|
29
|
+
# eventName, eventSource, eventTimestamp, httpRequest, level, operationId,
|
30
|
+
# operationName, properties, resourceGroupName, resourceProviderName,
|
31
|
+
# resourceUri, status, submissionTimestamp, subStatus and subscriptionId.
|
32
|
+
#
|
33
|
+
# Example:
|
34
|
+
#
|
35
|
+
# ies = Azure::Armrest::Insights::EventService.new(conf)
|
36
|
+
#
|
37
|
+
# date = (Time.now - 86400).httpdate
|
38
|
+
# filter = "eventTimestamp ge #{date} and eventChannels eq 'Admin, Operation'"
|
39
|
+
# select = "resourceGroupName, operationName"
|
40
|
+
#
|
41
|
+
# ies.list(filter, select).each{ |event|
|
42
|
+
# p event
|
43
|
+
# }
|
44
|
+
#
|
45
|
+
def list(filter = nil, select = nil)
|
46
|
+
url = build_url(filter, select)
|
47
|
+
response = rest_get(url)
|
48
|
+
JSON.parse(response.body)['value'].map{ |e| Azure::Armrest::Insights::Event.new(e) }
|
49
|
+
end
|
50
|
+
|
51
|
+
private
|
52
|
+
|
53
|
+
def build_url(filter = nil, select = nil)
|
54
|
+
sub_id = armrest_configuration.subscription_id
|
55
|
+
|
56
|
+
url = File.join(
|
57
|
+
Azure::Armrest::COMMON_URI,
|
58
|
+
sub_id,
|
59
|
+
'providers',
|
60
|
+
@provider,
|
61
|
+
'eventtypes',
|
62
|
+
'management',
|
63
|
+
'values'
|
64
|
+
)
|
65
|
+
|
66
|
+
url << "?api-version=#{@api_version}"
|
67
|
+
url << "&$filter=#{filter}" if filter
|
68
|
+
url << "&$select=#{select}" if select
|
69
|
+
|
70
|
+
url
|
71
|
+
end
|
72
|
+
end # EventService
|
73
|
+
|
74
|
+
end # Insights
|
75
|
+
end # Armrest
|
76
|
+
end # Azure
|
@@ -182,10 +182,16 @@ module Azure
|
|
182
182
|
class VirtualMachineImage < BaseModel; end
|
183
183
|
class VirtualMachineSize < BaseModel; end
|
184
184
|
|
185
|
+
module Insights
|
186
|
+
class Alert < BaseModel; end
|
187
|
+
class Event < BaseModel; end
|
188
|
+
end
|
189
|
+
|
185
190
|
module Network
|
186
191
|
class IpAddress < BaseModel; end
|
187
192
|
class NetworkInterface < BaseModel; end
|
188
193
|
class NetworkSecurityGroup < BaseModel; end
|
194
|
+
class NetworkSecurityRule < NetworkSecurityGroup; end
|
189
195
|
class VirtualNetwork < BaseModel; end
|
190
196
|
class Subnet < VirtualNetwork; end
|
191
197
|
end
|
@@ -15,6 +15,10 @@ module Azure
|
|
15
15
|
class BlobServiceStat < BaseModel; end
|
16
16
|
class BlobMetadata < BaseModel; end
|
17
17
|
|
18
|
+
# Classes used to wrap table information
|
19
|
+
class Table < BaseModel; end
|
20
|
+
class TableData < BaseModel; end
|
21
|
+
|
18
22
|
# The version string used in headers sent as part any internal http
|
19
23
|
# request. The default is 2015-02-21.
|
20
24
|
attr_accessor :storage_api_version
|
@@ -24,6 +28,52 @@ module Azure
|
|
24
28
|
@storage_api_version = '2015-02-21'
|
25
29
|
end
|
26
30
|
|
31
|
+
# Returns a list of tables for the given storage account +key+. Note
|
32
|
+
# that full metadata is returned.
|
33
|
+
#
|
34
|
+
def tables(key = nil)
|
35
|
+
key ||= properties.key1
|
36
|
+
response = table_response(key, nil, "Tables")
|
37
|
+
JSON.parse(response.body)['value'].map{ |t| Table.new(t) }
|
38
|
+
end
|
39
|
+
|
40
|
+
# Return information about a single table for the given storage
|
41
|
+
# account +key+. If you are looking for the entities within the
|
42
|
+
# table, use the table_data method instead.
|
43
|
+
#
|
44
|
+
def table_info(table, key = nil)
|
45
|
+
key ||= properties.key1
|
46
|
+
response = table_response(key, nil, "Tables('#{table}')")
|
47
|
+
Table.new(response.body)
|
48
|
+
end
|
49
|
+
|
50
|
+
# Returns a list of TableData objects for the given table +name+ using
|
51
|
+
# account +key+. The exact nature of the TableData object depends on the
|
52
|
+
# type of table that it is.
|
53
|
+
#
|
54
|
+
def table_data(name, key = nil, options = {})
|
55
|
+
key ||= properties.key1
|
56
|
+
|
57
|
+
query = ""
|
58
|
+
|
59
|
+
hash = {
|
60
|
+
"$filter=" => options[:filter],
|
61
|
+
"$select=" => options[:select],
|
62
|
+
"$top=" => options[:top]
|
63
|
+
}
|
64
|
+
|
65
|
+
hash.each do |key, value|
|
66
|
+
if query.include?("$")
|
67
|
+
query << "&#{key}#{value}" if value
|
68
|
+
else
|
69
|
+
query << "#{key}#{value}" if value
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
response = table_response(key, query, name)
|
74
|
+
JSON.parse(response.body)['value'].map{ |t| TableData.new(t) }
|
75
|
+
end
|
76
|
+
|
27
77
|
# Return a list of container names for the given storage account +key+.
|
28
78
|
# If no key is provided, it is assumed that the StorageAccount object
|
29
79
|
# includes the key1 property.
|
@@ -76,7 +126,7 @@ module Azure
|
|
76
126
|
url = File.join(properties.primary_endpoints.blob, container, blob)
|
77
127
|
url += "?snapshot=" + options[:date] if options[:date]
|
78
128
|
|
79
|
-
headers = build_headers(url, key, :verb => 'HEAD')
|
129
|
+
headers = build_headers(url, key, :blob, :verb => 'HEAD')
|
80
130
|
response = RestClient.head(url, headers)
|
81
131
|
|
82
132
|
BlobProperty.new(response.headers)
|
@@ -174,7 +224,7 @@ module Azure
|
|
174
224
|
|
175
225
|
options = {'x-ms-copy-source' => src_url, 'If-None-Match' => '*', :verb => 'PUT'}
|
176
226
|
|
177
|
-
headers = build_headers(dst_url, key, options)
|
227
|
+
headers = build_headers(dst_url, key, :blob, options)
|
178
228
|
|
179
229
|
# RestClient will set the Content-Type to application/x-www-form-urlencoded.
|
180
230
|
# We must override this setting or the request will fail.
|
@@ -193,7 +243,7 @@ module Azure
|
|
193
243
|
url = File.join(properties.primary_endpoints.blob, container, blob)
|
194
244
|
url += "?snapshot=" + options[:date] if options[:date]
|
195
245
|
|
196
|
-
headers = build_headers(url, key, :verb => 'DELETE')
|
246
|
+
headers = build_headers(url, key, :blob, :verb => 'DELETE')
|
197
247
|
response = RestClient.delete(url, headers)
|
198
248
|
|
199
249
|
true
|
@@ -206,14 +256,28 @@ module Azure
|
|
206
256
|
#
|
207
257
|
def blob_response(key, query, *args)
|
208
258
|
url = File.join(properties.primary_endpoints.blob, *args) + "?#{query}"
|
209
|
-
headers = build_headers(url, key)
|
259
|
+
headers = build_headers(url, key, 'blob')
|
260
|
+
RestClient.get(url, headers)
|
261
|
+
end
|
262
|
+
|
263
|
+
# Using the blob primary endpoint as a base, join any arguments to the
|
264
|
+
# the url and submit an http request.
|
265
|
+
def table_response(key, query = nil, *args)
|
266
|
+
url = File.join(properties.primary_endpoints.table, *args)
|
267
|
+
|
268
|
+
headers = build_headers(url, key, 'table')
|
269
|
+
headers['Accept'] = 'application/json;odata=fullmetadata'
|
270
|
+
|
271
|
+
url << "?#{query}" if query # Must happen after headers are built
|
272
|
+
|
210
273
|
RestClient.get(url, headers)
|
211
274
|
end
|
212
275
|
|
213
276
|
# Set the headers needed, including the Authorization header.
|
214
277
|
#
|
215
|
-
def build_headers(url, key, additional_headers = {})
|
278
|
+
def build_headers(url, key, sig_type = nil, additional_headers = {})
|
216
279
|
sig = Signature.new(url, key)
|
280
|
+
sig_type ||= 'blob'
|
217
281
|
|
218
282
|
headers = {
|
219
283
|
'x-ms-date' => Time.now.httpdate,
|
@@ -222,7 +286,7 @@ module Azure
|
|
222
286
|
}
|
223
287
|
|
224
288
|
headers.merge!(additional_headers)
|
225
|
-
headers['Authorization'] = sig.
|
289
|
+
headers['Authorization'] = sig.signature(sig_type, headers)
|
226
290
|
|
227
291
|
headers
|
228
292
|
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Azure
|
2
|
+
module Armrest
|
3
|
+
module Network
|
4
|
+
# Base class for managing securityRules
|
5
|
+
class NetworkSecurityRuleService < NetworkSecurityGroupService
|
6
|
+
# Creates a new +rule_name+ on +security_group+ using the given +options+.
|
7
|
+
def create(rule_name, security_group, resource_group = armrest_configuration.resource_group, options = {})
|
8
|
+
super(combine(security_group, rule_name), resource_group, options)
|
9
|
+
end
|
10
|
+
|
11
|
+
alias update create
|
12
|
+
|
13
|
+
# Deletes the given +rule_name+ in +security_group+.
|
14
|
+
#
|
15
|
+
def delete(rule_name, security_group, resource_group = armrest_configuration.resource_group)
|
16
|
+
super(combine(security_group, rule_name), resource_group)
|
17
|
+
end
|
18
|
+
|
19
|
+
# Retrieves information for the provided +rule_name+ in +security_group+ for
|
20
|
+
# the current subscription.
|
21
|
+
#
|
22
|
+
def get(rule_name, security_group, resource_group = armrest_configuration.resource_group)
|
23
|
+
super(combine(security_group, rule_name), resource_group)
|
24
|
+
end
|
25
|
+
|
26
|
+
# List available security rules on +security_group+ for the given +resource_group+.
|
27
|
+
#
|
28
|
+
def list(security_group, resource_group = armrest_configuration.resource_group)
|
29
|
+
raise ArgumentError, "must specify resource group" unless resource_group
|
30
|
+
raise ArgumentError, "must specify name of the resource" unless security_group
|
31
|
+
|
32
|
+
url = build_url(resource_group, security_group, 'securityRules')
|
33
|
+
response = rest_get(url)
|
34
|
+
JSON.parse(response)['value'].map{ |hash| model_class.new(hash) }
|
35
|
+
end
|
36
|
+
|
37
|
+
alias list_all list
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
def combine(virtual_network, subnet)
|
42
|
+
File.join(virtual_network, 'securityRules', subnet)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end # Network
|
46
|
+
end # Armrest
|
47
|
+
end # Azure
|
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.0.
|
4
|
+
version: 0.0.9
|
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: 2015-
|
14
|
+
date: 2015-12-17 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: json
|
@@ -194,11 +194,14 @@ files:
|
|
194
194
|
- lib/azure/armrest/armrest_service.rb
|
195
195
|
- lib/azure/armrest/availability_set_service.rb
|
196
196
|
- lib/azure/armrest/exception.rb
|
197
|
+
- lib/azure/armrest/insights/alert_service.rb
|
198
|
+
- lib/azure/armrest/insights/event_service.rb
|
197
199
|
- lib/azure/armrest/model/base_model.rb
|
198
200
|
- lib/azure/armrest/model/storage_account.rb
|
199
201
|
- lib/azure/armrest/network/ip_address_service.rb
|
200
202
|
- lib/azure/armrest/network/network_interface_service.rb
|
201
203
|
- lib/azure/armrest/network/network_security_group_service.rb
|
204
|
+
- lib/azure/armrest/network/network_security_rule_service.rb
|
202
205
|
- lib/azure/armrest/network/subnet_service.rb
|
203
206
|
- lib/azure/armrest/network/virtual_network_service.rb
|
204
207
|
- lib/azure/armrest/resource_group_based_service.rb
|
@@ -231,7 +234,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
231
234
|
version: '0'
|
232
235
|
requirements: []
|
233
236
|
rubyforge_project:
|
234
|
-
rubygems_version: 2.5.
|
237
|
+
rubygems_version: 2.5.1
|
235
238
|
signing_key:
|
236
239
|
specification_version: 4
|
237
240
|
summary: An interface for ARM/JSON Azure REST API
|