fog-aliyun 0.0.7 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (111) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +0 -0
  3. data/.rspec +0 -0
  4. data/.travis.yml +0 -0
  5. data/CODE_OF_CONDUCT.md +0 -0
  6. data/Gemfile +0 -0
  7. data/LICENSE.txt +0 -0
  8. data/README.md +0 -0
  9. data/Rakefile +0 -0
  10. data/bin/console +0 -0
  11. data/bin/setup +0 -0
  12. data/fog-aliyun.gemspec +1 -1
  13. data/lib/fog/aliyun.rb +0 -0
  14. data/lib/fog/aliyun/compute.rb +31 -0
  15. data/lib/fog/aliyun/models/compute/eip_address.rb +63 -0
  16. data/lib/fog/aliyun/models/compute/eip_addresses.rb +30 -0
  17. data/lib/fog/aliyun/models/compute/image.rb +68 -0
  18. data/lib/fog/aliyun/models/compute/images.rb +29 -0
  19. data/lib/fog/aliyun/models/compute/route_entry.rb +28 -0
  20. data/lib/fog/aliyun/models/compute/route_entrys.rb +41 -0
  21. data/lib/fog/aliyun/models/compute/route_table.rb +31 -0
  22. data/lib/fog/aliyun/models/compute/route_tables.rb +27 -0
  23. data/lib/fog/aliyun/models/compute/security_group.rb +81 -0
  24. data/lib/fog/aliyun/models/compute/security_group_rule.rb +47 -0
  25. data/lib/fog/aliyun/models/compute/security_group_rules.rb +23 -0
  26. data/lib/fog/aliyun/models/compute/security_groups.rb +33 -0
  27. data/lib/fog/aliyun/models/compute/server.rb +71 -0
  28. data/lib/fog/aliyun/models/compute/servers.rb +44 -0
  29. data/lib/fog/aliyun/models/compute/snapshot.rb +52 -0
  30. data/lib/fog/aliyun/models/compute/snapshots.rb +42 -0
  31. data/lib/fog/aliyun/models/compute/volume.rb +105 -0
  32. data/lib/fog/aliyun/models/compute/volumes.rb +139 -0
  33. data/lib/fog/aliyun/models/compute/vpc.rb +20 -11
  34. data/lib/fog/aliyun/models/compute/vpcs.rb +2 -10
  35. data/lib/fog/aliyun/models/compute/vrouter.rb +35 -0
  36. data/lib/fog/aliyun/models/compute/vrouters.rb +62 -0
  37. data/lib/fog/aliyun/models/compute/vswitch.rb +3 -1
  38. data/lib/fog/aliyun/models/compute/vswitches.rb +1 -8
  39. data/lib/fog/aliyun/models/storage/directories.rb +0 -0
  40. data/lib/fog/aliyun/models/storage/directory.rb +0 -0
  41. data/lib/fog/aliyun/models/storage/file.rb +11 -10
  42. data/lib/fog/aliyun/models/storage/files.rb +50 -24
  43. data/lib/fog/aliyun/requests/compute/allocate_eip_address.rb +6 -5
  44. data/lib/fog/aliyun/requests/compute/allocate_public_ip_address.rb +0 -0
  45. data/lib/fog/aliyun/requests/compute/associate_eip_address.rb +9 -2
  46. data/lib/fog/aliyun/requests/compute/attach_disk.rb +0 -0
  47. data/lib/fog/aliyun/requests/compute/create_disk.rb +40 -8
  48. data/lib/fog/aliyun/requests/compute/create_image.rb +0 -0
  49. data/lib/fog/aliyun/requests/compute/create_security_group.rb +2 -2
  50. data/lib/fog/aliyun/requests/compute/create_security_group_egress_ip_rule.rb +104 -0
  51. data/lib/fog/aliyun/requests/compute/create_security_group_egress_sg_rule.rb +109 -0
  52. data/lib/fog/aliyun/requests/compute/create_security_group_ip_rule.rb +19 -1
  53. data/lib/fog/aliyun/requests/compute/create_security_group_sg_rule.rb +26 -3
  54. data/lib/fog/aliyun/requests/compute/create_server.rb +0 -0
  55. data/lib/fog/aliyun/requests/compute/create_snapshot.rb +1 -1
  56. data/lib/fog/aliyun/requests/compute/create_vpc.rb +12 -12
  57. data/lib/fog/aliyun/requests/compute/create_vswitch.rb +14 -14
  58. data/lib/fog/aliyun/requests/compute/delete_disk.rb +12 -2
  59. data/lib/fog/aliyun/requests/compute/delete_image.rb +0 -0
  60. data/lib/fog/aliyun/requests/compute/delete_security_group.rb +13 -13
  61. data/lib/fog/aliyun/requests/compute/delete_security_group_egress_ip_rule.rb +104 -0
  62. data/lib/fog/aliyun/requests/compute/delete_security_group_egress_sg_rule.rb +109 -0
  63. data/lib/fog/aliyun/requests/compute/delete_security_group_ip_rule.rb +22 -4
  64. data/lib/fog/aliyun/requests/compute/delete_security_group_sg_rule.rb +26 -3
  65. data/lib/fog/aliyun/requests/compute/delete_server.rb +0 -0
  66. data/lib/fog/aliyun/requests/compute/delete_snapshot.rb +1 -1
  67. data/lib/fog/aliyun/requests/compute/delete_vpc.rb +13 -13
  68. data/lib/fog/aliyun/requests/compute/delete_vswitch.rb +13 -13
  69. data/lib/fog/aliyun/requests/compute/detach_disk.rb +6 -1
  70. data/lib/fog/aliyun/requests/compute/join_security_group.rb +0 -0
  71. data/lib/fog/aliyun/requests/compute/leave_security_group.rb +0 -0
  72. data/lib/fog/aliyun/requests/compute/list_disks.rb +95 -1
  73. data/lib/fog/aliyun/requests/compute/list_eip_addresses.rb +6 -6
  74. data/lib/fog/aliyun/requests/compute/list_images.rb +1 -1
  75. data/lib/fog/aliyun/requests/compute/list_route_tables.rb +67 -0
  76. data/lib/fog/aliyun/requests/compute/list_security_group_rules.rb +0 -0
  77. data/lib/fog/aliyun/requests/compute/list_security_groups.rb +1 -1
  78. data/lib/fog/aliyun/requests/compute/list_server_types.rb +0 -0
  79. data/lib/fog/aliyun/requests/compute/list_servers.rb +5 -5
  80. data/lib/fog/aliyun/requests/compute/list_snapshots.rb +30 -2
  81. data/lib/fog/aliyun/requests/compute/list_vpcs.rb +0 -0
  82. data/lib/fog/aliyun/requests/compute/list_vrouters.rb +64 -0
  83. data/lib/fog/aliyun/requests/compute/list_vswitchs.rb +0 -0
  84. data/lib/fog/aliyun/requests/compute/list_zones.rb +0 -0
  85. data/lib/fog/aliyun/requests/compute/modify_vpc.rb +12 -12
  86. data/lib/fog/aliyun/requests/compute/modify_vswitch.rb +12 -12
  87. data/lib/fog/aliyun/requests/compute/reboot_server.rb +0 -0
  88. data/lib/fog/aliyun/requests/compute/release_eip_address.rb +1 -1
  89. data/lib/fog/aliyun/requests/compute/start_server.rb +1 -1
  90. data/lib/fog/aliyun/requests/compute/stop_server.rb +1 -1
  91. data/lib/fog/aliyun/requests/compute/unassociate_eip_address.rb +20 -2
  92. data/lib/fog/aliyun/requests/storage/copy_object.rb +0 -0
  93. data/lib/fog/aliyun/requests/storage/delete_bucket.rb +0 -0
  94. data/lib/fog/aliyun/requests/storage/delete_container.rb +0 -0
  95. data/lib/fog/aliyun/requests/storage/delete_object.rb +0 -0
  96. data/lib/fog/aliyun/requests/storage/get_bucket.rb +2 -2
  97. data/lib/fog/aliyun/requests/storage/get_container.rb +0 -0
  98. data/lib/fog/aliyun/requests/storage/get_containers.rb +0 -0
  99. data/lib/fog/aliyun/requests/storage/get_object.rb +0 -0
  100. data/lib/fog/aliyun/requests/storage/get_object_http_url.rb +0 -0
  101. data/lib/fog/aliyun/requests/storage/get_object_https_url.rb +0 -0
  102. data/lib/fog/aliyun/requests/storage/head_object.rb +0 -0
  103. data/lib/fog/aliyun/requests/storage/list_buckets.rb +0 -0
  104. data/lib/fog/aliyun/requests/storage/list_objects.rb +0 -0
  105. data/lib/fog/aliyun/requests/storage/put_bucket.rb +0 -0
  106. data/lib/fog/aliyun/requests/storage/put_container.rb +0 -0
  107. data/lib/fog/aliyun/requests/storage/put_object.rb +1 -1
  108. data/lib/fog/aliyun/storage.rb +0 -0
  109. data/lib/fog/aliyun/version.rb +1 -1
  110. data/lib/fog/bin/aliyun.rb +0 -0
  111. metadata +29 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3832cc5a22287a780d5db5052856762bdeb92015
4
- data.tar.gz: f203d9aee9f037683ada71ade9bd94d660c12d81
3
+ metadata.gz: 8f039d826c1b8f347bd39065fca8d8c8d1a3a513
4
+ data.tar.gz: 883c955e643d7d333571a41ce98f30ce16706a40
5
5
  SHA512:
6
- metadata.gz: c0a398c13920fd1a2cc963c5e932795a15a7e291018c9926081e5f6359a1b4c3fc4c9345bd6b5876e0038cfe4993d2987378930fed213792993671fa1ecda918
7
- data.tar.gz: 15555676894ee0653f605f6aed1f3d0a35fa48e0fe266427ef873240dd3d89165ade2204800079903faf5abe37ef780412c67295db8bb8838c2d5b8448b316bd
6
+ metadata.gz: a315a64cbbd5ae803e0064ac3b063dcab53b7970cf4e6aa0c0ee70abddf0273cc7e9cfde587f627f6bcf5ddc931a9153b883e2f4b6e5ae86f78d0170181cc362
7
+ data.tar.gz: e700199fed03abeeec6cd02f7c313ce6fee29c7f72ac6d5aca366ea83621c474f286ce313c4ba3a32ba0b5a75b7170ee798057e3ee0d120ba63fdc3a1d746480
data/.gitignore CHANGED
File without changes
data/.rspec CHANGED
File without changes
File without changes
File without changes
data/Gemfile CHANGED
File without changes
File without changes
data/README.md CHANGED
File without changes
data/Rakefile CHANGED
File without changes
File without changes
data/bin/setup CHANGED
File without changes
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
11
11
 
12
12
  spec.summary = %q{Fog provider for Aliyun Web Services.}
13
13
  spec.description = %q{As a FOG provider, fog-aliyun support aliyun OSS/ECS. It will support more aliyun services later.}
14
- spec.homepage = "https://github.com/dtdream/fog-aliyun.git"
14
+ spec.homepage = "https://github.com/fog/fog-aliyun"
15
15
  spec.license = "MIT"
16
16
 
17
17
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
File without changes
@@ -10,10 +10,30 @@ module Fog
10
10
  ## MODELS
11
11
  #
12
12
  model_path 'fog/aliyun/models/compute'
13
+ model :server
14
+ collection :servers
15
+ model :image
16
+ collection :images
17
+ model :eip_address
18
+ collection :eip_addresses
19
+ model :security_group
20
+ collection :security_groups
21
+ model :security_group_rule
22
+ collection :security_group_rules
23
+ model :volume
24
+ collection :volumes
25
+ model :snapshot
26
+ collection :snapshots
13
27
  model :vpc
14
28
  collection :vpcs
15
29
  model :vswitch
16
30
  collection :vswitches
31
+ model :vrouter
32
+ collection :vrouters
33
+ model :route_table
34
+ collection :route_tables
35
+ model :route_entry
36
+ collection :route_entrys
17
37
 
18
38
  ## REQUESTS
19
39
  #
@@ -59,9 +79,13 @@ module Fog
59
79
  request :create_security_group
60
80
  request :create_security_group_ip_rule
61
81
  request :create_security_group_sg_rule
82
+ request :create_security_group_egress_ip_rule
83
+ request :create_security_group_egress_sg_rule
62
84
  request :delete_security_group
63
85
  request :delete_security_group_ip_rule
64
86
  request :delete_security_group_sg_rule
87
+ request :delete_security_group_egress_ip_rule
88
+ request :delete_security_group_egress_sg_rule
65
89
  request :join_security_group
66
90
  request :leave_security_group
67
91
 
@@ -78,6 +102,13 @@ module Fog
78
102
  request :delete_vswitch
79
103
  request :list_vswitchs
80
104
  request :modify_vpc
105
+ request :modify_vswitch
106
+
107
+ #VRouter
108
+ request :list_vrouters
109
+
110
+ #RouteTable
111
+ request :list_route_tables
81
112
 
82
113
 
83
114
  #clouddisk
@@ -0,0 +1,63 @@
1
+ require 'fog/core/model'
2
+ module Fog
3
+ module Compute
4
+ class Aliyun
5
+ class EipAddress < Fog::Model
6
+
7
+ identity :id, :aliases => 'AllocationId'
8
+
9
+ attribute :allocated_at, :aliases => 'AllocationTime'
10
+ attribute :bandwidth, :aliases => 'Bandwidth'
11
+ attribute :server_id, :aliases => 'InstanceId'
12
+ attribute :charge_type, :aliases => 'InternetChargeType'
13
+ attribute :ip_address, :aliases => ['IpAddress','EipAddress']
14
+ attribute :opertion_locks,:aliases => 'OperationLocks'
15
+ attribute :region_id, :aliases => 'RegionId'
16
+ attribute :state, :aliases => 'Status'
17
+
18
+ def destroy
19
+ requires :id
20
+ service.release_eip_address(id)
21
+ true
22
+ end
23
+
24
+ def ready?
25
+ requires :state
26
+ state == 'Available'
27
+ end
28
+
29
+ def save(options={})
30
+ # raise Fog::Errors::Error.new('Resaving an existing object may create a duplicate') if persisted?
31
+ # requires :availability_zone
32
+ options[:bandwidth] = bandwidth if bandwidth
33
+ options[:internet_charge_type]=charge_type if charge_type
34
+
35
+ data = Fog::JSON.decode(service.allocate_eip_address(options).body)
36
+ merge_attributes(data)
37
+ true
38
+ end
39
+
40
+
41
+ def associate(new_server,options={})
42
+ unless persisted?
43
+ @server = new_server
44
+ else
45
+ @server = nil
46
+ self.server_id = new_server.id
47
+ service.associate_eip_address(server_id,id,options)
48
+ end
49
+ end
50
+
51
+ def disassociate(new_server,options={})
52
+ @server = nil
53
+ self.server_id = new_server.id
54
+ if persisted?
55
+ service.unassociate_eip_address(server_id,id,options)
56
+ end
57
+
58
+ end
59
+
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,30 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/aliyun/models/compute/eip_address'
3
+
4
+ module Fog
5
+ module Compute
6
+ class Aliyun
7
+ class EipAddresses < Fog::Collection
8
+
9
+ model Fog::Compute::Aliyun::EipAddress
10
+
11
+ def all(filters_arg = {})
12
+ data = Fog::JSON.decode(service.list_eip_addresses(filters_arg).body)['EipAddresses']['EipAddress']
13
+ load(data)
14
+ # load(data['volumeSet'])
15
+ # if server
16
+ # self.replace(self.select {|volume| volume.server_id == server.id})
17
+ # end
18
+ # self
19
+ end
20
+
21
+ def get(allocation_id)
22
+ if allocation_id
23
+ self.class.new(:service => service).all(:allocation_id => allocation_id)[0]
24
+ end
25
+ end
26
+
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,68 @@
1
+ require 'fog/core/model'
2
+ module Fog
3
+ module Compute
4
+ class Aliyun
5
+ class Image < Fog::Model
6
+
7
+ identity :id, :aliases => 'ImageId'
8
+
9
+ attribute :description, :aliases => 'Description'
10
+ attribute :product_code, :aliases => 'ProductCode'
11
+ attribute :os_type, :aliases => 'OSType'
12
+ attribute :architecture, :aliases => 'Architecture'
13
+ attribute :os_name, :aliases => 'OSName'
14
+ attribute :disk_device_mappings, :aliases => 'DiskDeviceMappings'
15
+ attribute :owner_alias, :aliases => 'ImageOwnerAlias'
16
+ attribute :progress, :aliases => 'Progress'
17
+ attribute :usage, :aliases => 'Usage'
18
+ attribute :created_at, :aliases => 'CreationTime'
19
+ attribute :tags, :aliases => 'Tags'
20
+ attribute :version, :aliases => 'ImageVersion'
21
+ attribute :state, :aliases => 'Status'
22
+ attribute :name, :aliases => 'ImageName'
23
+ attribute :is_self_shared, :aliases => 'IsSelfShared'
24
+ attribute :is_copied, :aliases => 'IsCopied'
25
+ attribute :is_subscribed, :aliases => 'IsSubscribed'
26
+ attribute :platform, :aliases => 'Platform'
27
+ attribute :size, :aliases => 'Size'
28
+ attribute :snapshot_id, :aliases => 'SnapshotId'
29
+
30
+ def initialize(attributes)
31
+ self.snapshot_id=attributes["DiskDeviceMappings"]["DiskDeviceMapping"][0]["SnapshotId"]
32
+ super
33
+ end
34
+
35
+ def save (options={})
36
+ requires :snapshot_id
37
+ options[:name] = name if name
38
+ options[:description]=description if description
39
+ data=Fog::JSON.decode(service.create_image(snapshot_id,options).body)
40
+ merge_attributes(data)
41
+ true
42
+ end
43
+
44
+ def destroy
45
+ requires :id
46
+ service.delete_image(id)
47
+ true
48
+ end
49
+
50
+ def ready?
51
+ state == 'Available'
52
+ end
53
+
54
+ def snapshot
55
+ requires :snapshot_id
56
+ Fog::Compute::Aliyun::Snapshots.new(:service=>service).all(:snapshotIds=>[snapshot_id])[0]
57
+ end
58
+
59
+ private
60
+
61
+ def snapshot=(new_snapshot)
62
+ self.snapshot_id = new_snapshot.id
63
+ end
64
+
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,29 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/aliyun/models/compute/image'
3
+
4
+ module Fog
5
+ module Compute
6
+ class Aliyun
7
+ class Images < Fog::Collection
8
+
9
+ model Fog::Compute::Aliyun::Image
10
+
11
+
12
+ def all(filters_arg = {})
13
+ unless filters_arg.is_a?(Hash)
14
+ Fog::Logger.deprecation("all with #{filters_arg.class} param is deprecated, use all('diskIds' => []) instead [light_black](#{caller.first})[/]")
15
+ filters_arg = {:imageId => filters_arg}
16
+ end
17
+ data = Fog::JSON.decode(service.list_images(filters_arg).body)['Images']['Image']
18
+ load(data)
19
+ end
20
+
21
+ def get(image_id)
22
+ if image_id
23
+ self.class.new(:service => service).all(:imageId => image_id)[0]
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,28 @@
1
+ require 'fog/core/model'
2
+ module Fog
3
+ module Compute
4
+ class Aliyun
5
+ class RouteEntry < Fog::Model
6
+
7
+ # "RouteTables"=>{"RouteTable"=>[
8
+ # {"CreationTime"=>"2015-08-03T11:23:35Z", "RouteEntrys"=>{"RouteEntry"=>[
9
+ # {"Status"=>"Available", "Type"=>"System", "InstanceId"=>"", "RouteTableId"=>"vtb-2504onoxh", "DestinationCidrBlock"=>"172.16.0.0/24"},
10
+ # {"Status"=>"Available", "Type"=>"System", "InstanceId"=>"", "RouteTableId"=>"vtb-2504onoxh", "DestinationCidrBlock"=>"172.16.1.0/24"},
11
+ # {"Status"=>"Available", "Type"=>"System", "InstanceId"=>"", "RouteTableId"=>"vtb-2504onoxh", "DestinationCidrBlock"=>"172.16.2.0/24"},
12
+ # {"Status"=>"Available", "Type"=>"System", "InstanceId"=>"", "RouteTableId"=>"vtb-2504onoxh", "DestinationCidrBlock"=>"100.64.0.0/10"},
13
+ # {"Status"=>"Available", "Type"=>"System", "InstanceId"=>"", "RouteTableId"=>"vtb-2504onoxh", "DestinationCidrBlock"=>"10.0.0.0/8"}]},
14
+ # "RouteTableId"=>"vtb-2504onoxh", "RouteTableType"=>"System", "VRouterId"=>"vrt-25azmd2wm"}]}
15
+ identity :cidr_block, :aliases => 'DestinationCidrBlock'
16
+ attribute :state, :aliases => 'Status'
17
+ attribute :server_id, :aliases => 'InstanceId'
18
+ attribute :type, :aliases => 'Type'
19
+ attribute :route_table_id, :aliases => 'RouteTableId'
20
+
21
+ # def save
22
+ # requires :cidr_block,:route_table_id
23
+ # if(cidr_block)
24
+
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,41 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/aliyun/models/compute/route_entry'
3
+
4
+ module Fog
5
+ module Compute
6
+ class Aliyun
7
+ class RouteEntrys < Fog::Collection
8
+ attribute :route_table
9
+
10
+ model Fog::Compute::Aliyun::RouteEntry
11
+
12
+ def all(options={})
13
+ requires :route_table
14
+ options[:routeTableId]=route_table.id
15
+ data = Fog::JSON.decode(service.list_route_tables(route_table.v_router_id, options).body)['RouteTables']['RouteTable'][0]["RouteEntrys"]["RouteEntry"]
16
+ load(data)
17
+ end
18
+
19
+ def get(cidr_block)
20
+ requires :route_table
21
+ data=self.class.new(:service=>service,:route_table=>route_table).all()
22
+ result=nil
23
+ data.each do |i|
24
+ if i.cidr_block==cidr_block
25
+ result=i
26
+ break
27
+ end
28
+ end
29
+ result
30
+ end
31
+
32
+ # def get(routeTableId)
33
+ # requires :v_router
34
+ # if routeTableId
35
+ # self.class.new(:service => service,:v_router=>v_router).all(:routeTableId=>routeTableId)[0]
36
+ # end
37
+ # end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,31 @@
1
+ require 'fog/core/model'
2
+ module Fog
3
+ module Compute
4
+ class Aliyun
5
+ class RouteTable < Fog::Model
6
+
7
+ # "RouteTables"=>{"RouteTable"=>[
8
+ # {"CreationTime"=>"2015-08-03T11:23:35Z", "RouteEntrys"=>{"RouteEntry"=>[
9
+ # {"Status"=>"Available", "Type"=>"System", "InstanceId"=>"", "RouteTableId"=>"vtb-2504onoxh", "DestinationCidrBlock"=>"172.16.0.0/24"},
10
+ # {"Status"=>"Available", "Type"=>"System", "InstanceId"=>"", "RouteTableId"=>"vtb-2504onoxh", "DestinationCidrBlock"=>"172.16.1.0/24"},
11
+ # {"Status"=>"Available", "Type"=>"System", "InstanceId"=>"", "RouteTableId"=>"vtb-2504onoxh", "DestinationCidrBlock"=>"172.16.2.0/24"},
12
+ # {"Status"=>"Available", "Type"=>"System", "InstanceId"=>"", "RouteTableId"=>"vtb-2504onoxh", "DestinationCidrBlock"=>"100.64.0.0/10"},
13
+ # {"Status"=>"Available", "Type"=>"System", "InstanceId"=>"", "RouteTableId"=>"vtb-2504onoxh", "DestinationCidrBlock"=>"10.0.0.0/8"}]},
14
+ # "RouteTableId"=>"vtb-2504onoxh", "RouteTableType"=>"System", "VRouterId"=>"vrt-25azmd2wm"}]}
15
+ identity :id, :aliases => 'RouteTableId'
16
+ attribute :created_at, :aliases => 'CreationTime'
17
+ attribute :type, :aliases => 'RouteTableType'
18
+ attribute :v_router_id, :aliases => 'VRouterId'
19
+ # collection Fog::Compute::Aliyun::RouteEntrys
20
+ def route_entrys
21
+ @route_entrys ||= begin
22
+ Fog::Compute::Aliyun::RouteEntrys.new(
23
+ :route_table => self,
24
+ :service => service
25
+ )
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,27 @@
1
+ require 'fog/core/collection'
2
+ require 'fog/aliyun/models/compute/route_table'
3
+
4
+ module Fog
5
+ module Compute
6
+ class Aliyun
7
+ class RouteTables < Fog::Collection
8
+ attribute :v_router
9
+
10
+ model Fog::Compute::Aliyun::RouteTable
11
+
12
+ def all(options={})
13
+ requires :v_router
14
+ data = Fog::JSON.decode(service.list_route_tables(v_router.id, options).body)['RouteTables']['RouteTable']
15
+ load(data)
16
+ end
17
+
18
+ def get(routeTableId)
19
+ requires :v_router
20
+ if routeTableId
21
+ self.class.new(:service => service,:v_router=>v_router).all(:routeTableId=>routeTableId)[0]
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,81 @@
1
+ require 'fog/core/model'
2
+
3
+ module Fog
4
+ module Compute
5
+ class Aliyun
6
+ class SecurityGroup < Fog::Model
7
+ identity :id, :aliases =>"SecurityGroupId"
8
+ attribute :name, :aliases => "SecurityGroupName"
9
+ attribute :description, :aliases => "Description"
10
+ attribute :created_at, :aliases => "CreationTime"
11
+ attribute :vpc_id, :aliases => "VpcId"
12
+
13
+ def vpc
14
+ requires :vpc_id
15
+ service.vpcs.get(vpc_id)
16
+ end
17
+
18
+ def security_group_rules
19
+ requires :id
20
+ service.security_group_rules.get(id)
21
+ end
22
+
23
+ def save(options={})
24
+ options[:vpcId] = vpc_id if vpc_id
25
+ options[:name] = name if name
26
+ options[:description] = description if description
27
+ Fog::JSON.decode(service.create_security_group(options).body)
28
+ true
29
+ end
30
+
31
+ def destroy
32
+ requires :id
33
+ service.delete_security_group(id)
34
+ true
35
+ end
36
+
37
+ def authorize_security_group_sg_rule(group_id,direction="ingress",options={})
38
+ requires :id
39
+ if direction=="egress"
40
+ service.create_security_group_egress_sg_rule(id,group_id,options)
41
+ else
42
+ service.create_security_group_sg_rule(id,group_id,options)
43
+ end
44
+ true
45
+ end
46
+
47
+ def authorize_security_group_ip_rule(cidr_ip,direction="ingress",options={})
48
+ requires :id
49
+ nic_type = options.fetch(:nic_type, "internet")
50
+ if direction=="egress"
51
+ service.create_security_group_egress_ip_rule(id,cidr_ip,nic_type,options)
52
+ else
53
+ service.create_security_group_ip_rule(id,cidr_ip,nic_type,options)
54
+ end
55
+ true
56
+ end
57
+
58
+ def revoke_seurity_group_sg_rule(group_id,direction="ingress",options={})
59
+ requires :id
60
+ if direction=="egress"
61
+ service.delete_security_group_egress_sg_rule(id,group_id,options)
62
+ else
63
+ service.delete_security_group_sg_rule(id,group_id,options)
64
+ end
65
+ true
66
+ end
67
+
68
+ def revoke_security_group_ip_rule(cidr_ip,direction="ingress",options={})
69
+ requires :id
70
+ nic_type = options.fetch(:nic_type, "internet")
71
+ if direction=="egress"
72
+ service.delete_security_group_egress_ip_rule(id,cidr_ip,nic_type,options)
73
+ else
74
+ service.delete_security_group_ip_rule(id,cidr_ip,nic_type,options)
75
+ end
76
+ true
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end