stuartpreston-azure-sdk-for-ruby 0.6.7 → 0.6.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/ChangeLog.txt +6 -0
- data/README.md +11 -9
- data/lib/azure/base_management/base_management_service.rb +93 -38
- data/lib/azure/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 74ffefba6eece817b30916acf39b2bf18cc2170e
|
4
|
+
data.tar.gz: cdebe9e5766d715c901f05b26e611a219e365182
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 52e659246d3574a55b42fa5e221530578f2f03ffb6ace5dd3760fabf1609a7fedac5c92f3b436d7ae0eb0835ef4d5aee03fb503ce2d9133b1703d0c436e1eade
|
7
|
+
data.tar.gz: de1968be02983c26defdfd3341765b4155d09282a6e6352a24133e26d640d0423e538aeb1d0ee3acf7eb80d9314b21b669f3316d478de96cd9549dfdfed558b2
|
data/ChangeLog.txt
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
2014.03.30 - version 0.6.9 (stuartpreston-azure-sdk-for-ruby)
|
2
|
+
* Implement fixes for regression issues with filename handling
|
3
|
+
|
4
|
+
2014.03.29 - version 0.6.8 (stuartpreston-azure-sdk-for-ruby)
|
5
|
+
* Support for accepting certificates in memory (@jkeiser)
|
6
|
+
|
1
7
|
2014.03.12 - version 0.6.7 (stuartpreston-azure-sdk-for-ruby)
|
2
8
|
* Support for .pfx and .publishsettings as certificate sources
|
3
9
|
|
data/README.md
CHANGED
@@ -1,10 +1,15 @@
|
|
1
|
-
# Microsoft Azure SDK for Ruby
|
2
|
-
|
1
|
+
# Microsoft Azure SDK for Ruby (gem: stuartpreston-azure-sdk-for-ruby)
|
2
|
+
This is a fork of the 'official' Azure SDK for Ruby which was taken in February 2015 due to there being no official releases since May 2014.
|
3
|
+
|
3
4
|
[](https://travis-ci.org/stuartpreston/azure-sdk-for-ruby)
|
4
5
|
|
6
|
+
Please view the [changelog](changelog.txt) for an up to date list of what is supported.
|
5
7
|
|
8
|
+
###
|
6
9
|
This project provides a Ruby package that makes it easy to access and manage Microsoft Azure Services like Storage, Service Bus and Virtual Machines.
|
7
10
|
|
11
|
+
This package accesses the Microsoft Azure Service Management API, and ***not*** the Microsoft Azure Resource Management API.
|
12
|
+
|
8
13
|
# Library Features
|
9
14
|
* Storage
|
10
15
|
* Blobs
|
@@ -51,11 +56,8 @@ This project provides a Ruby package that makes it easy to access and manage Mic
|
|
51
56
|
|
52
57
|
# Supported Ruby Versions
|
53
58
|
|
54
|
-
* Ruby 1.9.3
|
55
59
|
* Ruby 2.0
|
56
60
|
|
57
|
-
**Notice** that Ruby 2.0 x64 on Windows is not supported due to the [lack of nokogiri](https://github.com/sparklemotion/nokogiri/issues/864).
|
58
|
-
|
59
61
|
# Getting Started
|
60
62
|
|
61
63
|
## Install the rubygem package
|
@@ -71,7 +73,7 @@ gem install azure
|
|
71
73
|
To get the source code of the SDK via **git** just type:
|
72
74
|
|
73
75
|
```bash
|
74
|
-
git clone https://github.com/
|
76
|
+
git clone https://github.com/stuartpreston/azure-sdk-for-ruby.git
|
75
77
|
cd ./azure-sdk-for-ruby
|
76
78
|
```
|
77
79
|
Then, run bundler to install all the gem dependencies:
|
@@ -519,7 +521,7 @@ base_management_service.get_affinity_group('affinity-group-name')
|
|
519
521
|
require 'azure'
|
520
522
|
|
521
523
|
Azure.configure do |config|
|
522
|
-
config.management_certificate = "path to
|
524
|
+
config.management_certificate = "path to .pem, .pfx or .publishsettings file"
|
523
525
|
config.subscription_id = "your subscription id"
|
524
526
|
config.management_endpoint = "https://management.database.windows.net:8443/"
|
525
527
|
#To access other service management apis use "https://management.core.windows.net".
|
@@ -589,7 +591,7 @@ vnet.set_network_configuration(vnetxml)
|
|
589
591
|
|
590
592
|
# Useful commands for certificate operations
|
591
593
|
|
592
|
-
Currently the sdk supports
|
594
|
+
Currently the sdk supports .pem, .pfx or .publishsettings for service management operations. Following are the steps discussed on various cert operations.
|
593
595
|
|
594
596
|
* To create pfx, simply download the publishsettings file for your subscription, copy the contents of Management Certificate from the publishsettings and save it in a file and name the file as your cert.pfx. This pfx will be a passwordless pfx which can be supplied as a cert parameter for Service Management Commands
|
595
597
|
* Using the following openssl commands to extract the pem file and pass the pem file as management cert parameter.
|
@@ -607,7 +609,7 @@ Be sure to check out the Microsoft Azure [Developer Forums on Stack Overflow and
|
|
607
609
|
# Contribute Code or Provide Feedback
|
608
610
|
|
609
611
|
If you would like to become an active contributor to this project please follow the instructions provided in [Microsoft Azure Projects Contribution Guidelines](http://windowsazure.github.com/guidelines.html).
|
610
|
-
If you encounter any bugs with the library please file an issue in the [Issues](https://github.com/
|
612
|
+
If you encounter any bugs with the library please file an issue in the [Issues](https://github.com/stuartpreston/azure-sdk-for-ruby/issues) section of the project.
|
611
613
|
|
612
614
|
# Learn More
|
613
615
|
|
@@ -31,38 +31,7 @@ module Azure
|
|
31
31
|
class BaseManagementService
|
32
32
|
def initialize
|
33
33
|
validate_configuration
|
34
|
-
|
35
|
-
begin
|
36
|
-
if Azure.config.management_certificate =~ /(pem)$/
|
37
|
-
cert_file = File.read(Azure.config.management_certificate)
|
38
|
-
certificate_key = OpenSSL::X509::Certificate.new(cert_file)
|
39
|
-
private_key = OpenSSL::PKey::RSA.new(cert_file)
|
40
|
-
elsif Azure.config.management_certificate =~ /(pfx)$/
|
41
|
-
# Parse pfx content
|
42
|
-
File.open(Azure.config.management_certificate, "rb") do |f|
|
43
|
-
cert_file = f.read
|
44
|
-
end
|
45
|
-
cert_content = OpenSSL::PKCS12.new(Base64.decode64(cert_file))
|
46
|
-
certificate_key = OpenSSL::X509::Certificate.new(
|
47
|
-
cert_content.certificate.to_pem
|
48
|
-
)
|
49
|
-
private_key = OpenSSL::PKey::RSA.new(cert_content.key.to_pem)
|
50
|
-
elsif Azure.config.management_certificate =~ /(publishsettings)$/
|
51
|
-
# Parse publishsettings content
|
52
|
-
publish_settings = Nokogiri::XML(File.open(Azure.config.management_certificate, "r"))
|
53
|
-
subscription_id = Azure.config.subscription_id
|
54
|
-
xpath = "//PublishData/PublishProfile/Subscription[@Id='#{subscription_id}']/@ManagementCertificate"
|
55
|
-
cert_file = publish_settings.xpath(xpath).text
|
56
|
-
cert_content = OpenSSL::PKCS12.new(Base64.decode64(cert_file))
|
57
|
-
certificate_key = OpenSSL::X509::Certificate.new(
|
58
|
-
cert_content.certificate.to_pem
|
59
|
-
)
|
60
|
-
private_key = OpenSSL::PKey::RSA.new(cert_content.key.to_pem)
|
61
|
-
end
|
62
|
-
rescue Exception => e
|
63
|
-
raise "Management certificate not valid. Error: #{e.message}"
|
64
|
-
end
|
65
|
-
|
34
|
+
certificate_key, private_key = read_management_certificate(Azure.config.management_certificate)
|
66
35
|
Azure.configure do |config|
|
67
36
|
config.http_certificate_key = certificate_key
|
68
37
|
config.http_private_key = private_key
|
@@ -79,12 +48,43 @@ module Azure
|
|
79
48
|
raise error_message if m_ep.nil? || m_ep.empty?
|
80
49
|
|
81
50
|
m_cert = Azure.config.management_certificate
|
82
|
-
|
83
|
-
|
51
|
+
if m_cert.is_a?(Hash)
|
52
|
+
error_message = "Management certificate hash #{m_cert} does not have key :type! If specifying a hash, you must specify :type => <:pem, :pfx or :publishsettings>!"
|
53
|
+
raise error_message unless m_cert.has_key?(:type) && %w(pem pfx publishsettings).include?(m_cert[:type].to_s)
|
54
|
+
|
55
|
+
error_message = "Management certificate hash #{m_cert} does not have the certificate data! If specifying a hash, you must specify either :data => String, :io => <IO object> or :path => <path>!"
|
56
|
+
raise error_message unless [ :data, :io, :path ].any? { |k| m_cert.has_key?(k) }
|
57
|
+
|
58
|
+
unexpected_keys = m_cert.keys - [ :type, :data, :io, :path ]
|
59
|
+
error_message = "Management certificate hash #{m_cert} has unexpected keys #{unexpected_keys.join(", ")}! Only :type, :data, :io and :path are accepted values when specifying a hash."
|
60
|
+
raise error_message unless unexpected_keys.empty?
|
61
|
+
|
62
|
+
if m_cert[:data]
|
63
|
+
error_message= "Management certificate :data in #{m_cert} is not a String! Must be a String."
|
64
|
+
raise error_message unless m_cert[:data].is_a?(String)
|
65
|
+
end
|
66
|
+
if m_cert[:io]
|
67
|
+
error_message= "Management certificate :io in #{m_cert} is not an IO object! Must be an IO object."
|
68
|
+
raise error_message unless m_cert[:io].is_a?(IO)
|
69
|
+
end
|
70
|
+
if m_cert[:path]
|
71
|
+
error_message= "Management certificate :path in #{m_cert} is not a String! Must be a String."
|
72
|
+
raise error_message unless m_cert[:path].is_a?(String)
|
73
|
+
unless m_cert[:data] || m_cert[:io] # :path is only used to print information out if data or IO is there
|
74
|
+
error_message = "Could not read from file '#{m_cert[:path]}'."
|
75
|
+
raise error_message unless test('r', m_cert[:data])
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
else
|
80
|
+
m_cert_ext = File.extname(m_cert)
|
81
|
+
error_message = "Management certificate path '#{m_cert}' must have extension .pem, .pfx or .publishsettings"
|
82
|
+
raise error_message unless %w(.pem .pfx .publishsettings).include?(m_cert_ext)
|
83
|
+
|
84
|
+
error_message = "Could not read from file '#{m_cert}'."
|
85
|
+
raise error_message unless test('r', m_cert)
|
86
|
+
end
|
84
87
|
|
85
|
-
m_cert = Azure.config.management_certificate
|
86
|
-
error_message = 'Management certificate expects a .pem, .pfx or .publishsettings file.'
|
87
|
-
raise error_message unless m_cert =~ /(pem|pfx|publishsettings)$/
|
88
88
|
end
|
89
89
|
|
90
90
|
# Public: Gets a list of regional data center locations from the server
|
@@ -244,6 +244,61 @@ module Azure
|
|
244
244
|
raise error
|
245
245
|
end
|
246
246
|
end
|
247
|
+
|
248
|
+
def read_management_certificate(cert)
|
249
|
+
cert_file = nil
|
250
|
+
begin
|
251
|
+
# If it's a String, the type is the extension (.pem, .pfx, .publishsettings)
|
252
|
+
if cert.is_a?(String)
|
253
|
+
cert = {
|
254
|
+
type: File.extname(cert).split('.').last,
|
255
|
+
path: cert
|
256
|
+
}
|
257
|
+
end
|
258
|
+
|
259
|
+
case cert[:type].to_sym
|
260
|
+
when :pem
|
261
|
+
read_pem(cert)
|
262
|
+
when :pfx
|
263
|
+
read_pfx(cert)
|
264
|
+
when :publishsettings
|
265
|
+
read_publishsettings(cert)
|
266
|
+
else
|
267
|
+
raise ArgumentError, "Unknown type #{type} on Azure.config.management_certificate #{cert}"
|
268
|
+
end
|
269
|
+
end
|
270
|
+
end
|
271
|
+
|
272
|
+
def read_pem(cert)
|
273
|
+
cert[:data] ||= cert[:io] ? cert[:io].read : File.open(cert[:path], "r") { |f| f.read }
|
274
|
+
|
275
|
+
certificate_key = OpenSSL::X509::Certificate.new(cert[:data])
|
276
|
+
private_key = OpenSSL::PKey::RSA.new(cert[:data])
|
277
|
+
[ certificate_key, private_key ]
|
278
|
+
end
|
279
|
+
|
280
|
+
def read_pfx(cert)
|
281
|
+
cert[:data] ||= cert[:io] ? cert[:io].read : File.open(cert[:path], "rb") { |f| f.read }
|
282
|
+
|
283
|
+
cert_content = OpenSSL::PKCS12.new(Base64.decode64(cert[:data]))
|
284
|
+
certificate_key = OpenSSL::X509::Certificate.new(
|
285
|
+
cert_content.certificate.to_pem
|
286
|
+
)
|
287
|
+
private_key = OpenSSL::PKey::RSA.new(cert_content.key.to_pem)
|
288
|
+
[ certificate_key, private_key ]
|
289
|
+
end
|
290
|
+
|
291
|
+
def read_publishsettings(cert)
|
292
|
+
cert[:io] ||= cert[:data] ? StringIO.new(cert[:data]) : File.open(cert[:path], "r")
|
293
|
+
|
294
|
+
# Parse publishsettings content
|
295
|
+
publish_settings = Nokogiri::XML(cert[:io])
|
296
|
+
subscription_id = Azure.config.subscription_id
|
297
|
+
xpath = "//PublishData/PublishProfile/Subscription[@Id='#{subscription_id}']/@ManagementCertificate"
|
298
|
+
cert_file = publish_settings.xpath(xpath).text
|
299
|
+
|
300
|
+
read_pfx(data: cert_file, path: cert[:path])
|
301
|
+
end
|
247
302
|
end
|
248
303
|
end
|
249
|
-
end
|
304
|
+
end
|
data/lib/azure/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stuartpreston-azure-sdk-for-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Microsoft Corporation
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2015-03-
|
13
|
+
date: 2015-03-30 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: nokogiri
|