fog-aliyun 0.0.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.
Files changed (85) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +4 -0
  5. data/CODE_OF_CONDUCT.md +13 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +309 -0
  9. data/Rakefile +6 -0
  10. data/bin/console +14 -0
  11. data/bin/setup +7 -0
  12. data/fog-aliyun.gemspec +30 -0
  13. data/lib/fog/aliyun.rb +19 -0
  14. data/lib/fog/aliyun/compute.rb +346 -0
  15. data/lib/fog/aliyun/models/compute/vpc.rb +69 -0
  16. data/lib/fog/aliyun/models/compute/vpcs.rb +89 -0
  17. data/lib/fog/aliyun/models/compute/vswitch.rb +70 -0
  18. data/lib/fog/aliyun/models/compute/vswitches.rb +87 -0
  19. data/lib/fog/aliyun/models/storage/directories.rb +45 -0
  20. data/lib/fog/aliyun/models/storage/directory.rb +48 -0
  21. data/lib/fog/aliyun/models/storage/file.rb +197 -0
  22. data/lib/fog/aliyun/models/storage/files.rb +178 -0
  23. data/lib/fog/aliyun/requests/compute/allocate_eip_address.rb +79 -0
  24. data/lib/fog/aliyun/requests/compute/allocate_public_ip_address.rb +63 -0
  25. data/lib/fog/aliyun/requests/compute/associate_eip_address.rb +66 -0
  26. data/lib/fog/aliyun/requests/compute/attach_disk.rb +82 -0
  27. data/lib/fog/aliyun/requests/compute/create_disk.rb +135 -0
  28. data/lib/fog/aliyun/requests/compute/create_image.rb +79 -0
  29. data/lib/fog/aliyun/requests/compute/create_security_group.rb +77 -0
  30. data/lib/fog/aliyun/requests/compute/create_security_group_ip_rule.rb +86 -0
  31. data/lib/fog/aliyun/requests/compute/create_security_group_sg_rule.rb +86 -0
  32. data/lib/fog/aliyun/requests/compute/create_server.rb +188 -0
  33. data/lib/fog/aliyun/requests/compute/create_snapshot.rb +60 -0
  34. data/lib/fog/aliyun/requests/compute/create_vpc.rb +73 -0
  35. data/lib/fog/aliyun/requests/compute/create_vswitch.rb +81 -0
  36. data/lib/fog/aliyun/requests/compute/delete_disk.rb +58 -0
  37. data/lib/fog/aliyun/requests/compute/delete_image.rb +58 -0
  38. data/lib/fog/aliyun/requests/compute/delete_security_group.rb +51 -0
  39. data/lib/fog/aliyun/requests/compute/delete_security_group_ip_rule.rb +85 -0
  40. data/lib/fog/aliyun/requests/compute/delete_security_group_sg_rule.rb +86 -0
  41. data/lib/fog/aliyun/requests/compute/delete_server.rb +48 -0
  42. data/lib/fog/aliyun/requests/compute/delete_snapshot.rb +45 -0
  43. data/lib/fog/aliyun/requests/compute/delete_vpc.rb +52 -0
  44. data/lib/fog/aliyun/requests/compute/delete_vswitch.rb +51 -0
  45. data/lib/fog/aliyun/requests/compute/detach_disk.rb +51 -0
  46. data/lib/fog/aliyun/requests/compute/join_security_group.rb +41 -0
  47. data/lib/fog/aliyun/requests/compute/leave_security_group.rb +41 -0
  48. data/lib/fog/aliyun/requests/compute/list_disks.rb +75 -0
  49. data/lib/fog/aliyun/requests/compute/list_eip_addresses.rb +81 -0
  50. data/lib/fog/aliyun/requests/compute/list_images.rb +85 -0
  51. data/lib/fog/aliyun/requests/compute/list_security_group_rules.rb +74 -0
  52. data/lib/fog/aliyun/requests/compute/list_security_groups.rb +81 -0
  53. data/lib/fog/aliyun/requests/compute/list_server_types.rb +77 -0
  54. data/lib/fog/aliyun/requests/compute/list_servers.rb +74 -0
  55. data/lib/fog/aliyun/requests/compute/list_snapshots.rb +86 -0
  56. data/lib/fog/aliyun/requests/compute/list_vpcs.rb +64 -0
  57. data/lib/fog/aliyun/requests/compute/list_vswitchs.rb +67 -0
  58. data/lib/fog/aliyun/requests/compute/list_zones.rb +44 -0
  59. data/lib/fog/aliyun/requests/compute/modify_vpc.rb +73 -0
  60. data/lib/fog/aliyun/requests/compute/modify_vswitch.rb +73 -0
  61. data/lib/fog/aliyun/requests/compute/reboot_server.rb +44 -0
  62. data/lib/fog/aliyun/requests/compute/release_eip_address.rb +53 -0
  63. data/lib/fog/aliyun/requests/compute/start_server.rb +42 -0
  64. data/lib/fog/aliyun/requests/compute/stop_server.rb +42 -0
  65. data/lib/fog/aliyun/requests/compute/unassociate_eip_address.rb +56 -0
  66. data/lib/fog/aliyun/requests/storage/copy_object.rb +42 -0
  67. data/lib/fog/aliyun/requests/storage/delete_bucket.rb +30 -0
  68. data/lib/fog/aliyun/requests/storage/delete_container.rb +38 -0
  69. data/lib/fog/aliyun/requests/storage/delete_object.rb +53 -0
  70. data/lib/fog/aliyun/requests/storage/get_bucket.rb +148 -0
  71. data/lib/fog/aliyun/requests/storage/get_container.rb +72 -0
  72. data/lib/fog/aliyun/requests/storage/get_containers.rb +76 -0
  73. data/lib/fog/aliyun/requests/storage/get_object.rb +45 -0
  74. data/lib/fog/aliyun/requests/storage/get_object_http_url.rb +43 -0
  75. data/lib/fog/aliyun/requests/storage/get_object_https_url.rb +43 -0
  76. data/lib/fog/aliyun/requests/storage/head_object.rb +34 -0
  77. data/lib/fog/aliyun/requests/storage/list_buckets.rb +47 -0
  78. data/lib/fog/aliyun/requests/storage/list_objects.rb +104 -0
  79. data/lib/fog/aliyun/requests/storage/put_bucket.rb +23 -0
  80. data/lib/fog/aliyun/requests/storage/put_container.rb +35 -0
  81. data/lib/fog/aliyun/requests/storage/put_object.rb +199 -0
  82. data/lib/fog/aliyun/storage.rb +214 -0
  83. data/lib/fog/aliyun/version.rb +5 -0
  84. data/lib/fog/bin/aliyun.rb +31 -0
  85. metadata +227 -0
@@ -0,0 +1,44 @@
1
+ module Fog
2
+ module Compute
3
+ class Aliyun
4
+ class Real
5
+ # {Aliyun API Reference}[https://docs.aliyun.com/?spm=5176.100054.3.1.DGkmH7#/pub/ecs/open-api/region&describezones]
6
+ def list_zones()
7
+ action = 'DescribeZones'
8
+ sigNonce = randonStr()
9
+ time = Time.new.utc
10
+
11
+ parameters = defalutParameters(action, sigNonce, time)
12
+ pathUrl = defaultAliyunUri(action, sigNonce, time)
13
+
14
+ signature = sign(@aliyun_accesskey_secret, parameters)
15
+ pathUrl += '&Signature='
16
+ pathUrl += signature
17
+
18
+ request(
19
+ :expects => [200, 203],
20
+ :method => 'GET',
21
+ :path => pathUrl
22
+ )
23
+ end
24
+ end
25
+
26
+ class Mock
27
+ def list_zones(*args)
28
+ Excon::Response.new(
29
+ :body => { "availabilityZoneInfo" => [
30
+ {
31
+ "zoneState" => {
32
+ "available" => true
33
+ },
34
+ "hosts" => nil,
35
+ "zoneName" => "nova"
36
+ }
37
+ ] },
38
+ :status => 200
39
+ )
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,73 @@
1
+ module Fog
2
+ module Compute
3
+ class Aliyun
4
+ class Real
5
+ # {Aliyun API Reference}[https://docs.aliyun.com/?spm=5176.100054.3.1.DGkmH7#/pub/ecs/open-api/vpc&modifyvpcattribute]
6
+ def modify_vpc(vpcId,options={})
7
+
8
+ action = 'ModifyVpcAttribute'
9
+ sigNonce = randonStr()
10
+ time = Time.new.utc
11
+
12
+ parameters = defalutParameters(action, sigNonce, time)
13
+ pathUrl = defaultAliyunUri(action, sigNonce, time)
14
+
15
+ parameters["VpcId"] = vpcId
16
+ pathUrl += '&VpcId='
17
+ pathUrl += URI.encode(vpcId,'/[^!*\'()\;?:@#&%=+$,{}[]<>`" ')
18
+ name = options[:name]
19
+ desc = options[:description]
20
+
21
+ if name
22
+ parameters["VpcName"] = name
23
+ pathUrl += '&VpcName='
24
+ pathUrl += name
25
+ end
26
+
27
+ if desc
28
+ parameters["Description"] = desc
29
+ pathUrl += '&Description='
30
+ pathUrl += desc
31
+ end
32
+
33
+ signature = sign(@aliyun_accesskey_secret, parameters)
34
+ pathUrl += '&Signature='
35
+ pathUrl += signature
36
+
37
+ request(
38
+ :expects => [200, 203],
39
+ :method => 'GET',
40
+ :path => pathUrl
41
+ )
42
+ end
43
+ end
44
+
45
+ class Mock
46
+ def modify_vpc(vpcId, options={})
47
+ Fog::Identity::OpenStack.new(:openstack_auth_url => credentials[:openstack_auth_url])
48
+ tenant_id = Fog::Identity::OpenStack::V2::Mock.data[current_tenant][:tenants].keys.first
49
+ security_group_id = Fog::Mock.random_numbers(2).to_i + 1
50
+ self.data[:security_groups][security_group_id.to_s] = {
51
+ 'tenant_id' => tenant_id,
52
+ 'rules' => [],
53
+ 'id' => security_group_id,
54
+ 'name' => name,
55
+ 'description' => description
56
+ }
57
+
58
+ response = Excon::Response.new
59
+ response.status = 200
60
+ response.headers = {
61
+ 'X-Compute-Request-Id' => "req-#{Fog::Mock.random_hex(32)}",
62
+ 'Content-Type' => 'application/json',
63
+ 'Content-Length' => Fog::Mock.random_numbers(3).to_s,
64
+ 'Date' => Date.new}
65
+ response.body = {
66
+ 'security_group' => self.data[:security_groups][security_group_id.to_s]
67
+ }
68
+ response
69
+ end
70
+ end # mock
71
+ end # Aliyun
72
+ end # compute
73
+ end # fog
@@ -0,0 +1,73 @@
1
+ module Fog
2
+ module Compute
3
+ class Aliyun
4
+ class Real
5
+ # {Aliyun API Reference}[https://docs.aliyun.com/?spm=5176.100054.3.1.DGkmH7#/pub/ecs/open-api/vswitch&modifyvswitchattribute]
6
+ def modify_vpc(vSwitchId,options={})
7
+
8
+ action = 'ModifyVSwitchAttribute'
9
+ sigNonce = randonStr()
10
+ time = Time.new.utc
11
+
12
+ parameters = defalutParameters(action, sigNonce, time)
13
+ pathUrl = defaultAliyunUri(action, sigNonce, time)
14
+
15
+ parameters["VSwitchId"] = vSwitchId
16
+ pathUrl += '&VSwitchId='
17
+ pathUrl += URI.encode(vpcId,'/[^!*\'()\;?:@#&%=+$,{}[]<>`" ')
18
+ name = options[:name]
19
+ desc = options[:description]
20
+
21
+ if name
22
+ parameters["VSwitchName"] = name
23
+ pathUrl += '&VSwitchName='
24
+ pathUrl += name
25
+ end
26
+
27
+ if desc
28
+ parameters["Description"] = desc
29
+ pathUrl += '&Description='
30
+ pathUrl += desc
31
+ end
32
+
33
+ signature = sign(@aliyun_accesskey_secret, parameters)
34
+ pathUrl += '&Signature='
35
+ pathUrl += signature
36
+
37
+ request(
38
+ :expects => [200, 203],
39
+ :method => 'GET',
40
+ :path => pathUrl
41
+ )
42
+ end
43
+ end
44
+
45
+ class Mock
46
+ def modify_vpc(vpcId, options={})
47
+ Fog::Identity::OpenStack.new(:openstack_auth_url => credentials[:openstack_auth_url])
48
+ tenant_id = Fog::Identity::OpenStack::V2::Mock.data[current_tenant][:tenants].keys.first
49
+ security_group_id = Fog::Mock.random_numbers(2).to_i + 1
50
+ self.data[:security_groups][security_group_id.to_s] = {
51
+ 'tenant_id' => tenant_id,
52
+ 'rules' => [],
53
+ 'id' => security_group_id,
54
+ 'name' => name,
55
+ 'description' => description
56
+ }
57
+
58
+ response = Excon::Response.new
59
+ response.status = 200
60
+ response.headers = {
61
+ 'X-Compute-Request-Id' => "req-#{Fog::Mock.random_hex(32)}",
62
+ 'Content-Type' => 'application/json',
63
+ 'Content-Length' => Fog::Mock.random_numbers(3).to_s,
64
+ 'Date' => Date.new}
65
+ response.body = {
66
+ 'security_group' => self.data[:security_groups][security_group_id.to_s]
67
+ }
68
+ response
69
+ end
70
+ end # mock
71
+ end # Aliyun
72
+ end # compute
73
+ end # fog
@@ -0,0 +1,44 @@
1
+ module Fog
2
+ module Compute
3
+ class Aliyun
4
+ class Real
5
+ # {Aliyun API Reference}[https://docs.aliyun.com/?spm=5176.100054.3.1.DGkmH7#/pub/ecs/open-api/instance&rebootinstance]
6
+ def reboot_server(server_id, options = {})
7
+
8
+ _action = 'RebootInstance'
9
+ _sigNonce = randonStr()
10
+ _time = Time.new.utc
11
+
12
+ _parameters = defalutParameters(_action, _sigNonce, _time)
13
+ _pathURL = defaultAliyunUri(_action, _sigNonce, _time)
14
+
15
+ _parameters['InstanceId']=server_id
16
+ _pathURL += '&InstanceId='+server_id
17
+
18
+ _ForceStop = options[:aliyun_ForceStop]
19
+ if _ForceStop
20
+ _parameters['ForceStop']=_ForceStop
21
+ _pathURL += '&ForceStop='+_ForceStop
22
+ end
23
+
24
+ _signature = sign(@aliyun_accesskey_secret, _parameters)
25
+ _pathURL += '&Signature='+_signature
26
+
27
+ request(
28
+ :expects => [200, 204],
29
+ :method => 'GET',
30
+ :path => _pathURL
31
+ )
32
+ end
33
+ end
34
+
35
+ class Mock
36
+ def reboot_server(server_id, type = 'SOFT')
37
+ response = Excon::Response.new
38
+ response.status = 202
39
+ response
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,53 @@
1
+ module Fog
2
+ module Compute
3
+ class Aliyun
4
+ class Real
5
+ # {Aliyun API Reference}[https://docs.aliyun.com/?spm=5176.100054.3.1.DGkmH7#/pub/ecs/open-api/network&releaseeipaddress]
6
+ def release_eip_address(allocationId)
7
+
8
+ _action = 'ReleaseEipAddress'
9
+ _sigNonce = randonStr()
10
+ _time = Time.new.utc
11
+
12
+ _parameters = defalutParameters(_action, _sigNonce, _time)
13
+ _pathURL = defaultAliyunUri(_action, _sigNonce, _time)
14
+
15
+ _parameters['AllocationId'] = allocationId
16
+ _pathURL += '&AllocationId='+allocationId
17
+
18
+ _signature = sign(@aliyun_accesskey_secret, _parameters)
19
+ _pathURL += '&Signature='+_signature
20
+
21
+ request(
22
+ :expects => [200, 204],
23
+ :method => 'GET',
24
+ :path => _pathURL
25
+ )
26
+ end
27
+ end
28
+
29
+ class Mock
30
+ def allocate_address(pool = nil)
31
+ response = Excon::Response.new
32
+ response.status = 200
33
+ response.headers = {
34
+ "X-Compute-Request-Id" => "req-d4a21158-a86c-44a6-983a-e25645907f26",
35
+ "Content-Type" => "application/json",
36
+ "Content-Length" => "105",
37
+ "Date"=> Date.new
38
+ }
39
+ response.body = {
40
+ "floating_ip" => {
41
+ "instance_id" => nil,
42
+ "ip" => "192.168.27.132",
43
+ "fixed_ip" => nil,
44
+ "id" => 4,
45
+ "pool"=>"nova"
46
+ }
47
+ }
48
+ response
49
+ end
50
+ end # mock
51
+ end # Aliyun
52
+ end #compute
53
+ end
@@ -0,0 +1,42 @@
1
+ module Fog
2
+ module Compute
3
+ class Aliyun
4
+ class Real
5
+ # Start the server.
6
+ #
7
+ # === Parameters
8
+ # * server_id <~String> - The ID of the server to be started.
9
+ # === Returns
10
+ # * success <~Boolean>
11
+ # {Aliyun API Reference}[https://docs.aliyun.com/?spm=5176.100054.3.1.DGkmH7#/pub/ecs/open-api/instance&staetinstance]
12
+ def start_server(server_id)
13
+
14
+ _action = 'StartInstance'
15
+ _sigNonce = randonStr()
16
+ _time = Time.new.utc
17
+
18
+ _parameters = defalutParameters(_action, _sigNonce, _time)
19
+ _pathURL = defaultAliyunUri(_action, _sigNonce, _time)
20
+
21
+ _parameters['InstanceId']=server_id
22
+ _pathURL += '&InstanceId='+server_id
23
+
24
+ _signature = sign(@aliyun_accesskey_secret, _parameters)
25
+ _pathURL += '&Signature='+_signature
26
+
27
+ request(
28
+ :expects => [200, 204],
29
+ :method => 'GET',
30
+ :path => _pathURL
31
+ )
32
+ end # def start_server
33
+ end # class Real
34
+
35
+ class Mock
36
+ def start_server(server_id)
37
+ true
38
+ end # def start_server
39
+ end # class Mock
40
+ end # class Aliyun
41
+ end # module Compute
42
+ end # module Fog
@@ -0,0 +1,42 @@
1
+ module Fog
2
+ module Compute
3
+ class Aliyun
4
+ class Real
5
+ # Stop the server.
6
+ #
7
+ # === Parameters
8
+ # * server_id <~String> - The ID of the server to be stopped.
9
+ # === Returns
10
+ # * success <~Boolean>
11
+ # {Aliyun API Reference}[https://docs.aliyun.com/?spm=5176.100054.3.1.DGkmH7#/pub/ecs/open-api/instance&stopinstance]
12
+ def stop_server(server_id)
13
+
14
+ _action = 'StopInstance'
15
+ _sigNonce = randonStr()
16
+ _time = Time.new.utc
17
+
18
+ _parameters = defalutParameters(_action, _sigNonce, _time)
19
+ _pathURL = defaultAliyunUri(_action, _sigNonce, _time)
20
+
21
+ _parameters['InstanceId']=server_id
22
+ _pathURL += '&InstanceId='+server_id
23
+
24
+ _signature = sign(@aliyun_accesskey_secret, _parameters)
25
+ _pathURL += '&Signature='+_signature
26
+
27
+ request(
28
+ :expects => [200, 204],
29
+ :method => 'GET',
30
+ :path => _pathURL
31
+ )
32
+ end # def stop_server
33
+ end # class Real
34
+
35
+ class Mock
36
+ def stop_server(server_id)
37
+ true
38
+ end # def stop_server
39
+ end # class Mock
40
+ end # class Aliyun
41
+ end # module Compute
42
+ end # module Fog
@@ -0,0 +1,56 @@
1
+ module Fog
2
+ module Compute
3
+ class Aliyun
4
+ class Real
5
+ # {Aliyun API Reference}[https://docs.aliyun.com/?spm=5176.100054.3.1.DGkmH7#/pub/ecs/open-api/network&unassociateeipaddress]
6
+ def unassociate_eip_address(server_id, allocationId)
7
+
8
+ _action = 'UnassociateEipAddress'
9
+ _sigNonce = randonStr()
10
+ _time = Time.new.utc
11
+
12
+ _parameters = defalutParameters(_action, _sigNonce, _time)
13
+ _pathURL = defaultAliyunUri(_action, _sigNonce, _time)
14
+
15
+ _parameters['InstanceId'] = server_id
16
+ _pathURL += '&InstanceId='+server_id
17
+
18
+ _parameters['AllocationId'] = allocationId
19
+ _pathURL += '&AllocationId='+allocationId
20
+
21
+ _signature = sign(@aliyun_accesskey_secret, _parameters)
22
+ _pathURL += '&Signature='+_signature
23
+
24
+ request(
25
+ :expects => [200, 204],
26
+ :method => 'GET',
27
+ :path => _pathURL
28
+ )
29
+ end
30
+ end
31
+
32
+ class Mock
33
+ def allocate_address(pool = nil)
34
+ response = Excon::Response.new
35
+ response.status = 200
36
+ response.headers = {
37
+ "X-Compute-Request-Id" => "req-d4a21158-a86c-44a6-983a-e25645907f26",
38
+ "Content-Type" => "application/json",
39
+ "Content-Length" => "105",
40
+ "Date"=> Date.new
41
+ }
42
+ response.body = {
43
+ "floating_ip" => {
44
+ "instance_id" => nil,
45
+ "ip" => "192.168.27.132",
46
+ "fixed_ip" => nil,
47
+ "id" => 4,
48
+ "pool"=>"nova"
49
+ }
50
+ }
51
+ response
52
+ end
53
+ end # mock
54
+ end # aliyun
55
+ end #compute
56
+ end
@@ -0,0 +1,42 @@
1
+ module Fog
2
+ module Storage
3
+ class Aliyun
4
+ class Real
5
+ # Copy object
6
+ #
7
+ # ==== Parameters
8
+ # * source_bucket<~String> - Name of source bucket
9
+ # * source_object<~String> - Name of source object
10
+ # * target_bucket<~String> - Name of bucket to create copy in
11
+ # * target_object<~String> - Name for new copy of object
12
+ # * options<~Hash> - Additional headers options={}
13
+ def copy_object(source_bucket, source_object, target_bucket, target_object, options = {})
14
+ options = options.reject {|key, value| value.nil?}
15
+ bucket = options[:bucket]
16
+ bucket ||= @aliyun_oss_bucket
17
+ source_bucket ||= bucket
18
+ target_bucket ||= bucket
19
+ headers = { 'x-oss-copy-source' => "/#{source_bucket}/#{source_object}" }
20
+ location = get_bucket_location(target_bucket)
21
+ endpoint = "http://"+location+".aliyuncs.com"
22
+ resource = target_bucket+'/'+target_object
23
+ request({
24
+ :expects => [200, 203],
25
+ :headers => headers,
26
+ :method => 'PUT',
27
+ :path => target_object,
28
+ :bucket => target_bucket,
29
+ :resource => resource,
30
+ :endpoint => endpoint
31
+ })
32
+ end
33
+ end
34
+
35
+ class Mock
36
+ def copy_object(source_bucket, source_object, target_bucket, target_object)
37
+
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end