fog-aliyun 0.3.3 → 0.3.4

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
- SHA1:
3
- metadata.gz: e8112e65fc18f3f89cf72ff352d04598767cd95e
4
- data.tar.gz: b066bbda00dd2dca8ce98df46390a96d7cc84796
2
+ SHA256:
3
+ metadata.gz: 3342904065d07911da7b06506be0f5d40755d48c07c6a37ebd2cc297dcc25955
4
+ data.tar.gz: 9e7de3b2b690382a19d8934bfb4d45393db51446fd7e9317c9499e4cfeb0ad6d
5
5
  SHA512:
6
- metadata.gz: fe59bca5c4b8831600e06588444637efd12426a88535d742b140b44cdb05dde0049bf1af41cd06fd307137327c50c3d6ad2265cc7ba8e8d8c1ecbb6e6b5722b5
7
- data.tar.gz: 96e3d984bba498615c0939a75182ff8d0d0f290642307e646bcb3c4d4c965f5c60483b01003d195ae8d6034027092192cfda40ef860777bdf1b17e4b77967e00
6
+ metadata.gz: 12161c7f4a12f82d37d495362ae4477e21535b87d40ab45519522816a99f89f51d5c4404c63ecc7d83128cf7dd80c550e435654ae75f3e6119fe0bf1a135f2c7
7
+ data.tar.gz: 6a4493f00253ed7ba9076fc66422ea70555cb416bda50e7895cada83739c12657219a2904f87482206624da729371e57dd5aeab34bbd7b544c7da3d0c7c0b985
@@ -351,6 +351,20 @@ module Fog
351
351
  '?Format=JSON&AccessKeyId=' + @aliyun_accesskey_id + '&Action=' + action + '&SignatureMethod=HMAC-SHA1&RegionId=' + @aliyun_region_id + '&SignatureNonce=' + sigNonce + '&SignatureVersion=1.0&Version=2014-05-26&Timestamp=' + urlTimeFormat
352
352
  end
353
353
 
354
+ def defaultAliyunQueryParameters(action, sigNonce, time)
355
+ {
356
+ Format: 'JSON',
357
+ AccessKeyId: @aliyun_accesskey_id,
358
+ Action: action,
359
+ SignatureMethod: 'HMAC-SHA1',
360
+ RegionId: @aliyun_region_id,
361
+ SignatureNonce: sigNonce,
362
+ SignatureVersion: '1.0',
363
+ Version: '2014-05-26',
364
+ Timestamp: time.strftime('%Y-%m-%dT%H:%M:%SZ')
365
+ }
366
+ end
367
+
354
368
  def defaultAliyunVPCUri(action, sigNonce, time)
355
369
  parTimeFormat = time.strftime('%Y-%m-%dT%H:%M:%SZ')
356
370
  urlTimeFormat = URI.encode(parTimeFormat, ':')
@@ -399,7 +413,14 @@ module Fog
399
413
  end
400
414
 
401
415
  # compute signature
416
+ # This method should be considered deprecated and replaced with sign_without_encoding, which is better for using querystring hashes and not
417
+ # building querystrings with string concatination.
402
418
  def sign(accessKeySecret, parameters)
419
+ signature = sign_without_encoding(accessKeySecret, parameters)
420
+ URI.encode(signature, '/[^!*\'()\;?:@#&%=+$,{}[]<>`" ')
421
+ end
422
+
423
+ def sign_without_encoding(accessKeySecret, parameters)
403
424
  sortedParameters = parameters.sort
404
425
  canonicalizedQueryString = ''
405
426
  sortedParameters.each do |k, v|
@@ -414,9 +435,7 @@ module Fog
414
435
  digest = OpenSSL::HMAC.digest(digVer, key, stringToSign)
415
436
  signature = Base64.encode64(digest)
416
437
  signature[-1] = ''
417
- encodedSig = URI.encode(signature, '/[^!*\'()\;?:@#&%=+$,{}[]<>`" ')
418
-
419
- encodedSig
438
+ signature
420
439
  end
421
440
  end
422
441
  end
@@ -29,7 +29,9 @@ module Fog
29
29
  attribute :snapshot_id, aliases: 'SnapshotId'
30
30
 
31
31
  def initialize(attributes)
32
- self.snapshot_id = attributes['DiskDeviceMappings']['DiskDeviceMapping'][0]['SnapshotId']
32
+ unless attributes['DiskDeviceMappings']['DiskDeviceMapping'].empty?
33
+ self.snapshot_id = attributes['DiskDeviceMappings']['DiskDeviceMapping'][0]['SnapshotId']
34
+ end
33
35
  super
34
36
  end
35
37
 
@@ -36,7 +36,7 @@ module Fog
36
36
  attribute :expired_at, aliases: 'ExpiredTime'
37
37
 
38
38
  def image
39
- requires image_id
39
+ requires :image_id
40
40
  Fog::Compute::Aliyun::Image.new(service: service).all(imageId: image_id)[0]
41
41
  end
42
42
 
@@ -10,7 +10,8 @@ module Fog
10
10
  model Fog::Compute::Aliyun::Server
11
11
 
12
12
  def all(options = {})
13
- Fog::JSON.decode(service.list_servers(options).body)['Instances']['Instance']
13
+ data = Fog::JSON.decode(service.list_servers(options).body)['Instances']['Instance']
14
+ load(data)
14
15
  end
15
16
 
16
17
  # Creates a new server and populates ssh keys
@@ -156,6 +156,7 @@ module Fog
156
156
  directory.key + '/' + key
157
157
  end
158
158
  data = service.head_object(object).data
159
+ return nil if data[:status] == 404
159
160
  lastModified = data[:headers]['Last-Modified']
160
161
  last_modified = (Time.parse(lastModified).localtime if !lastModified.nil? && lastModified != '')
161
162
 
@@ -41,7 +41,7 @@ module Fog
41
41
  )
42
42
 
43
43
  _InstanceTypeId = nil
44
- _InstanceTypeList = Fog::JSON.decode(response.body)['InstanceTypes']['InstanceType']
44
+ _InstanceTypeList = response.body['InstanceTypes']['InstanceType']
45
45
  _InstanceTypeList.each do |instance_type|
46
46
  next unless (instance_type['CpuCoreCount'] == cpuCount) && (instance_type['MemorySize'] == memorySize)
47
47
  _InstanceTypeId = instance_type['InstanceTypeId']
@@ -11,7 +11,7 @@ module Fog
11
11
  _time = Time.new.utc
12
12
 
13
13
  _parameters = defalutParameters(_action, _sigNonce, _time)
14
- _pathURL = defaultAliyunUri(_action, _sigNonce, _time)
14
+ _query_parameters = defaultAliyunQueryParameters(_action, _sigNonce, _time)
15
15
 
16
16
  _InstanceId = options[:instanceId]
17
17
  _VpcId = options[:vpcId]
@@ -22,35 +22,35 @@ module Fog
22
22
  unless _InstanceId.nil?
23
23
  _InstanceStr = "[\"#{_InstanceId}\"]"
24
24
  _parameters['InstanceIds'] = _InstanceStr
25
- _pathURL += '&InstanceIds=' + _InstanceStr
25
+ _query_parameters[:InstanceIds] = _InstanceStr
26
26
  end
27
27
 
28
28
  unless _VpcId.nil?
29
29
  _parameters['VpcId'] = _VpcId
30
- _pathURL += '&VpcId=' + _VpcId
30
+ _query_parameters[:VpcId] = _VpcId
31
31
  end
32
32
 
33
33
  unless _SecurityGroupId.nil?
34
34
  _parameters['SecurityGroupId'] = _SecurityGroupId
35
- _pathURL += '&SecurityGroupId=' + _SecurityGroupId
35
+ _query_parameters[:SecurityGroupId] = _SecurityGroupId
36
36
  end
37
37
 
38
38
  unless _PageNumber.nil?
39
39
  _parameters['PageNumber'] = _PageNumber
40
- _pathURL += '&PageNumber=' + _PageNumber
40
+ _query_parameters[:PageNumber] = _PageNumber
41
41
  end
42
42
 
43
43
  _PageSize ||= '50'
44
44
  _parameters['PageSize'] = _PageSize
45
- _pathURL += '&PageSize=' + _PageSize
45
+ _query_parameters[:PageSize] = _PageSize
46
46
 
47
- _signature = sign(@aliyun_accesskey_secret, _parameters)
48
- _pathURL += '&Signature=' + _signature
47
+ _signature = sign_without_encoding(@aliyun_accesskey_secret, _parameters)
48
+ _query_parameters[:Signature] = _signature
49
49
 
50
50
  request(
51
51
  expects: [200, 203],
52
52
  method: 'GET',
53
- path: _pathURL
53
+ query: _query_parameters
54
54
  )
55
55
  end
56
56
  end
@@ -22,7 +22,7 @@ module Fog
22
22
  location = get_bucket_location(bucket)
23
23
 
24
24
  if acl == 'private'
25
- expires_time = (Time.now.to_i + expires).to_s
25
+ expires_time = (Time.now.to_i + (expires.nil? ? 0 : expires.to_i)).to_s
26
26
  resource = bucket + '/' + object
27
27
  signature = sign('GET', expires_time, nil, resource)
28
28
  'http://' + bucket + '.' + location + '.aliyuncs.com/' + object +
@@ -22,7 +22,7 @@ module Fog
22
22
  location = get_bucket_location(bucket)
23
23
 
24
24
  if acl == 'private'
25
- expires_time = (Time.now.to_i + expires).to_s
25
+ expires_time = (Time.now.to_i + (expires.nil? ? 0 : expires.to_i)).to_s
26
26
  resource = bucket + '/' + object
27
27
  signature = sign('GET', expires_time, nil, resource)
28
28
  'https://' + bucket + '.' + location + '.aliyuncs.com/' + object +
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Fog
4
4
  module Aliyun
5
- VERSION = '0.3.3'
5
+ VERSION = '0.3.4'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,159 +1,159 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fog-aliyun
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Qinsi Deng, Jianxun Li, Jane Han
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-01-28 00:00:00.000000000 Z
11
+ date: 2019-07-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: mime-types
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '2.6'
34
- - - '>='
34
+ - - ">="
35
35
  - !ruby/object:Gem::Version
36
36
  version: 2.6.2
37
37
  type: :development
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
- - - ~>
41
+ - - "~>"
42
42
  - !ruby/object:Gem::Version
43
43
  version: '2.6'
44
- - - '>='
44
+ - - ">="
45
45
  - !ruby/object:Gem::Version
46
46
  version: 2.6.2
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: pry-nav
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
- - - '>='
51
+ - - ">="
52
52
  - !ruby/object:Gem::Version
53
53
  version: '0'
54
54
  type: :development
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
- - - '>='
58
+ - - ">="
59
59
  - !ruby/object:Gem::Version
60
60
  version: '0'
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: rake
63
63
  requirement: !ruby/object:Gem::Requirement
64
64
  requirements:
65
- - - '>='
65
+ - - ">="
66
66
  - !ruby/object:Gem::Version
67
67
  version: '0'
68
68
  type: :development
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - '>='
72
+ - - ">="
73
73
  - !ruby/object:Gem::Version
74
74
  version: '0'
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: rspec
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
- - - '>='
79
+ - - ">="
80
80
  - !ruby/object:Gem::Version
81
81
  version: '0'
82
82
  type: :development
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
- - - '>='
86
+ - - ">="
87
87
  - !ruby/object:Gem::Version
88
88
  version: '0'
89
89
  - !ruby/object:Gem::Dependency
90
90
  name: rubocop
91
91
  requirement: !ruby/object:Gem::Requirement
92
92
  requirements:
93
- - - '>='
93
+ - - ">="
94
94
  - !ruby/object:Gem::Version
95
95
  version: '0'
96
96
  type: :development
97
97
  prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
- - - '>='
100
+ - - ">="
101
101
  - !ruby/object:Gem::Version
102
102
  version: '0'
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: fog-core
105
105
  requirement: !ruby/object:Gem::Requirement
106
106
  requirements:
107
- - - '>='
107
+ - - ">="
108
108
  - !ruby/object:Gem::Version
109
109
  version: '0'
110
110
  type: :runtime
111
111
  prerelease: false
112
112
  version_requirements: !ruby/object:Gem::Requirement
113
113
  requirements:
114
- - - '>='
114
+ - - ">="
115
115
  - !ruby/object:Gem::Version
116
116
  version: '0'
117
117
  - !ruby/object:Gem::Dependency
118
118
  name: fog-json
119
119
  requirement: !ruby/object:Gem::Requirement
120
120
  requirements:
121
- - - '>='
121
+ - - ">="
122
122
  - !ruby/object:Gem::Version
123
123
  version: '0'
124
124
  type: :runtime
125
125
  prerelease: false
126
126
  version_requirements: !ruby/object:Gem::Requirement
127
127
  requirements:
128
- - - '>='
128
+ - - ">="
129
129
  - !ruby/object:Gem::Version
130
130
  version: '0'
131
131
  - !ruby/object:Gem::Dependency
132
132
  name: ipaddress
133
133
  requirement: !ruby/object:Gem::Requirement
134
134
  requirements:
135
- - - ~>
135
+ - - "~>"
136
136
  - !ruby/object:Gem::Version
137
137
  version: '0.8'
138
138
  type: :runtime
139
139
  prerelease: false
140
140
  version_requirements: !ruby/object:Gem::Requirement
141
141
  requirements:
142
- - - ~>
142
+ - - "~>"
143
143
  - !ruby/object:Gem::Version
144
144
  version: '0.8'
145
145
  - !ruby/object:Gem::Dependency
146
146
  name: xml-simple
147
147
  requirement: !ruby/object:Gem::Requirement
148
148
  requirements:
149
- - - ~>
149
+ - - "~>"
150
150
  - !ruby/object:Gem::Version
151
151
  version: '1.1'
152
152
  type: :runtime
153
153
  prerelease: false
154
154
  version_requirements: !ruby/object:Gem::Requirement
155
155
  requirements:
156
- - - ~>
156
+ - - "~>"
157
157
  - !ruby/object:Gem::Version
158
158
  version: '1.1'
159
159
  description: As a FOG provider, fog-aliyun support aliyun OSS/ECS. It will support
@@ -164,13 +164,13 @@ executables: []
164
164
  extensions: []
165
165
  extra_rdoc_files: []
166
166
  files:
167
- - .gitignore
168
- - .rspec
169
- - .rubocop.yml
170
- - .rubocop_todo.yml
171
- - .ruby-gemset
172
- - .ruby-version
173
- - .travis.yml
167
+ - ".gitignore"
168
+ - ".rspec"
169
+ - ".rubocop.yml"
170
+ - ".rubocop_todo.yml"
171
+ - ".ruby-gemset"
172
+ - ".ruby-version"
173
+ - ".travis.yml"
174
174
  - CODE_OF_CONDUCT.md
175
175
  - Gemfile
176
176
  - LICENSE.txt
@@ -294,17 +294,16 @@ require_paths:
294
294
  - lib
295
295
  required_ruby_version: !ruby/object:Gem::Requirement
296
296
  requirements:
297
- - - '>='
297
+ - - ">="
298
298
  - !ruby/object:Gem::Version
299
299
  version: '0'
300
300
  required_rubygems_version: !ruby/object:Gem::Requirement
301
301
  requirements:
302
- - - '>='
302
+ - - ">="
303
303
  - !ruby/object:Gem::Version
304
304
  version: '0'
305
305
  requirements: []
306
- rubyforge_project:
307
- rubygems_version: 2.0.14.1
306
+ rubygems_version: 3.0.2
308
307
  signing_key:
309
308
  specification_version: 4
310
309
  summary: Fog provider for Aliyun Web Services.