fog 0.0.77 → 0.0.78

Sign up to get free protection for your applications and to get access to all the features.
Files changed (111) hide show
  1. data/Gemfile.lock +2 -2
  2. data/fog.gemspec +59 -48
  3. data/lib/fog.rb +2 -1
  4. data/lib/fog/aws/models/ec2/snapshot.rb +3 -1
  5. data/lib/fog/aws/models/ec2/volume.rb +4 -2
  6. data/lib/fog/aws/s3.rb +1 -1
  7. data/lib/fog/deprecation.rb +14 -0
  8. data/lib/fog/terremark.rb +7 -220
  9. data/lib/fog/terremark/bin.rb +24 -14
  10. data/lib/fog/terremark/ecloud.rb +51 -0
  11. data/lib/fog/terremark/models/shared/address.rb +29 -0
  12. data/lib/fog/terremark/models/shared/addresses.rb +49 -0
  13. data/lib/fog/terremark/models/shared/network.rb +30 -0
  14. data/lib/fog/terremark/models/shared/networks.rb +52 -0
  15. data/lib/fog/terremark/models/shared/server.rb +57 -0
  16. data/lib/fog/terremark/models/shared/servers.rb +55 -0
  17. data/lib/fog/terremark/models/shared/task.rb +43 -0
  18. data/lib/fog/terremark/models/shared/tasks.rb +58 -0
  19. data/lib/fog/terremark/parser.rb +18 -0
  20. data/lib/fog/terremark/parsers/shared/get_catalog.rb +46 -0
  21. data/lib/fog/terremark/parsers/shared/get_catalog_item.rb +46 -0
  22. data/lib/fog/terremark/parsers/shared/get_internet_services.rb +60 -0
  23. data/lib/fog/terremark/parsers/{get_node_services.rb → shared/get_node_services.rb} +10 -11
  24. data/lib/fog/terremark/parsers/shared/get_organization.rb +47 -0
  25. data/lib/fog/terremark/parsers/shared/get_organizations.rb +27 -0
  26. data/lib/fog/terremark/parsers/shared/get_public_ips.rb +30 -0
  27. data/lib/fog/terremark/parsers/shared/get_tasks_list.rb +52 -0
  28. data/lib/fog/terremark/parsers/shared/get_vapp_template.rb +46 -0
  29. data/lib/fog/terremark/parsers/shared/get_vdc.rb +108 -0
  30. data/lib/fog/terremark/parsers/shared/instantiate_vapp_template.rb +41 -0
  31. data/lib/fog/terremark/parsers/shared/internet_service.rb +65 -0
  32. data/lib/fog/terremark/parsers/shared/network.rb +51 -0
  33. data/lib/fog/terremark/parsers/shared/node_service.rb +32 -0
  34. data/lib/fog/terremark/parsers/shared/public_ip.rb +26 -0
  35. data/lib/fog/terremark/parsers/shared/task.rb +40 -0
  36. data/lib/fog/terremark/parsers/shared/vapp.rb +47 -0
  37. data/lib/fog/terremark/requests/shared/add_internet_service.rb +63 -0
  38. data/lib/fog/terremark/requests/shared/add_node_service.rb +63 -0
  39. data/lib/fog/terremark/requests/shared/create_internet_service.rb +63 -0
  40. data/lib/fog/terremark/requests/shared/delete_internet_service.rb +42 -0
  41. data/lib/fog/terremark/requests/shared/delete_node_service.rb +42 -0
  42. data/lib/fog/terremark/requests/shared/delete_public_ip.rb +30 -0
  43. data/lib/fog/terremark/requests/shared/delete_vapp.rb +42 -0
  44. data/lib/fog/terremark/requests/shared/deploy_vapp.rb +43 -0
  45. data/lib/fog/terremark/requests/shared/get_catalog.rb +40 -0
  46. data/lib/fog/terremark/requests/shared/get_catalog_item.rb +43 -0
  47. data/lib/fog/terremark/requests/shared/get_internet_services.rb +43 -0
  48. data/lib/fog/terremark/requests/shared/get_network.rb +37 -0
  49. data/lib/fog/terremark/requests/shared/get_node_services.rb +38 -0
  50. data/lib/fog/terremark/requests/shared/get_organization.rb +42 -0
  51. data/lib/fog/terremark/requests/shared/get_organizations.rb +39 -0
  52. data/lib/fog/terremark/requests/shared/get_public_ip.rb +41 -0
  53. data/lib/fog/terremark/requests/shared/get_public_ips.rb +41 -0
  54. data/lib/fog/terremark/requests/shared/get_task.rb +47 -0
  55. data/lib/fog/terremark/requests/shared/get_tasks_list.rb +40 -0
  56. data/lib/fog/terremark/requests/shared/get_vapp.rb +50 -0
  57. data/lib/fog/terremark/requests/shared/get_vapp_template.rb +43 -0
  58. data/lib/fog/terremark/requests/shared/get_vdc.rb +43 -0
  59. data/lib/fog/terremark/requests/shared/instantiate_vapp_template.rb +79 -0
  60. data/lib/fog/terremark/requests/shared/power_off.rb +43 -0
  61. data/lib/fog/terremark/requests/shared/power_on.rb +43 -0
  62. data/lib/fog/terremark/requests/shared/reset.rb +43 -0
  63. data/lib/fog/terremark/requests/shared/shutdown.rb +43 -0
  64. data/lib/fog/terremark/shared.rb +139 -0
  65. data/lib/fog/terremark/vcloud.rb +98 -0
  66. metadata +60 -49
  67. data/lib/fog/terremark/models/server.rb +0 -56
  68. data/lib/fog/terremark/models/servers.rb +0 -53
  69. data/lib/fog/terremark/models/task.rb +0 -41
  70. data/lib/fog/terremark/models/tasks.rb +0 -56
  71. data/lib/fog/terremark/parsers/get_catalog.rb +0 -44
  72. data/lib/fog/terremark/parsers/get_catalog_item.rb +0 -44
  73. data/lib/fog/terremark/parsers/get_internet_services.rb +0 -58
  74. data/lib/fog/terremark/parsers/get_organization.rb +0 -45
  75. data/lib/fog/terremark/parsers/get_organizations.rb +0 -26
  76. data/lib/fog/terremark/parsers/get_public_ips.rb +0 -28
  77. data/lib/fog/terremark/parsers/get_tasks_list.rb +0 -50
  78. data/lib/fog/terremark/parsers/get_vapp_template.rb +0 -44
  79. data/lib/fog/terremark/parsers/get_vdc.rb +0 -106
  80. data/lib/fog/terremark/parsers/instantiate_vapp_template.rb +0 -39
  81. data/lib/fog/terremark/parsers/internet_service.rb +0 -63
  82. data/lib/fog/terremark/parsers/node_service.rb +0 -30
  83. data/lib/fog/terremark/parsers/public_ip.rb +0 -24
  84. data/lib/fog/terremark/parsers/task.rb +0 -38
  85. data/lib/fog/terremark/parsers/vapp.rb +0 -45
  86. data/lib/fog/terremark/requests/add_internet_service.rb +0 -61
  87. data/lib/fog/terremark/requests/add_node_service.rb +0 -61
  88. data/lib/fog/terremark/requests/create_internet_service.rb +0 -61
  89. data/lib/fog/terremark/requests/delete_internet_service.rb +0 -40
  90. data/lib/fog/terremark/requests/delete_node_service.rb +0 -40
  91. data/lib/fog/terremark/requests/delete_public_ip.rb +0 -28
  92. data/lib/fog/terremark/requests/delete_vapp.rb +0 -40
  93. data/lib/fog/terremark/requests/deploy_vapp.rb +0 -41
  94. data/lib/fog/terremark/requests/get_catalog.rb +0 -38
  95. data/lib/fog/terremark/requests/get_catalog_item.rb +0 -41
  96. data/lib/fog/terremark/requests/get_internet_services.rb +0 -41
  97. data/lib/fog/terremark/requests/get_node_services.rb +0 -36
  98. data/lib/fog/terremark/requests/get_organization.rb +0 -40
  99. data/lib/fog/terremark/requests/get_organizations.rb +0 -37
  100. data/lib/fog/terremark/requests/get_public_ip.rb +0 -35
  101. data/lib/fog/terremark/requests/get_public_ips.rb +0 -35
  102. data/lib/fog/terremark/requests/get_task.rb +0 -45
  103. data/lib/fog/terremark/requests/get_tasks_list.rb +0 -38
  104. data/lib/fog/terremark/requests/get_vapp.rb +0 -48
  105. data/lib/fog/terremark/requests/get_vapp_template.rb +0 -41
  106. data/lib/fog/terremark/requests/get_vdc.rb +0 -41
  107. data/lib/fog/terremark/requests/instantiate_vapp_template.rb +0 -77
  108. data/lib/fog/terremark/requests/power_off.rb +0 -41
  109. data/lib/fog/terremark/requests/power_on.rb +0 -41
  110. data/lib/fog/terremark/requests/reset.rb +0 -41
  111. data/lib/fog/terremark/requests/shutdown.rb +0 -41
@@ -0,0 +1,41 @@
1
+ module Fog
2
+ module Parsers
3
+ module Terremark
4
+ module Shared
5
+
6
+ class InstantiateVappTemplate < Fog::Parsers::Base
7
+
8
+ def reset
9
+ @property_key
10
+ @response = { 'Links' => [] }
11
+ end
12
+
13
+ def start_element(name, attributes)
14
+ @value = ''
15
+ case name
16
+ when 'Link'
17
+ link = {}
18
+ until attributes.empty?
19
+ link[attributes.shift] = attributes.shift
20
+ end
21
+ @response['Links'] << link
22
+ when 'VApp'
23
+ vapp_template = {}
24
+ until attributes.empty?
25
+ if attributes.first.is_a?(Array)
26
+ attribute = attributes.shift
27
+ vapp_template[attribute.first] = attribute.last
28
+ else
29
+ vapp_template[attributes.shift] = attributes.shift
30
+ end
31
+ end
32
+ @response.merge!(vapp_template.reject {|key, value| !['href', 'name', 'size', 'status', 'type'].include?(key)})
33
+ end
34
+ end
35
+
36
+ end
37
+
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,65 @@
1
+ module Fog
2
+ module Parsers
3
+ module Terremark
4
+ module Shared
5
+
6
+ class InternetService < Fog::Parsers::Base
7
+
8
+ def reset
9
+ @in_public_ip_address = false
10
+ @response = { 'PublicIpAddress' => {} }
11
+ end
12
+
13
+ def start_element(name, attributes)
14
+ @value = ''
15
+ case name
16
+ when 'Href'
17
+ data = {}
18
+ until attributes.empty?
19
+ data[attributes.shift] = attributes.shift
20
+ end
21
+ if @in_public_ip_address
22
+ @response['PublicIpAddress'][name] = data
23
+ else
24
+ @response[name] = data
25
+ end
26
+ when 'PublicIpAddress'
27
+ @in_public_ip_address = true
28
+ end
29
+ end
30
+
31
+ def end_element(name)
32
+ case name
33
+ when 'Description', 'Protocol'
34
+ @response[name] = @value
35
+ when 'Enabled'
36
+ if @value == 'false'
37
+ @response[name] = false
38
+ else
39
+ @response[name] = true
40
+ end
41
+ when 'Id'
42
+ if @in_public_ip_address
43
+ @response['PublicIpAddress'][name] = @value.to_i
44
+ else
45
+ @response[name] = @value.to_i
46
+ end
47
+ when 'Name'
48
+ if @in_public_ip_address
49
+ @response['PublicIpAddress'][name] = @value
50
+ else
51
+ @response[name] = @value
52
+ end
53
+ when 'Port', 'Timeout'
54
+ @response[name] = @value.to_i
55
+ when 'PublicIpAddress'
56
+ @in_public_ip_address = false
57
+ end
58
+ end
59
+
60
+ end
61
+
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,51 @@
1
+ module Fog
2
+ module Parsers
3
+ module Terremark
4
+ module Shared
5
+
6
+ class Network < Fog::Parsers::Base
7
+
8
+ def reset
9
+ @response = {
10
+ "links" => []
11
+ }
12
+ end
13
+
14
+ def start_element(name,attributes=[])
15
+ @value = ''
16
+ case name
17
+ when "Network"
18
+ until attributes.empty?
19
+ val = attributes.shift
20
+ if val.is_a?(String)
21
+ @response[val] = attributes.shift
22
+ end
23
+ end
24
+ if @response.has_key?("name")
25
+ @response["subnet"] = @response["name"]
26
+ end
27
+ if @response.has_key?("href")
28
+ @response["id"] = @response["href"].split("/").last
29
+ end
30
+ when "Link"
31
+ link = {}
32
+ until attributes.empty?
33
+ link[attributes.shift] = attributes.shift
34
+ end
35
+ @response["links"] << link
36
+ end
37
+ end
38
+
39
+ def end_element(name)
40
+ case name
41
+ when "Gateway", "Netmask", "FenceMode"
42
+ @response[name.downcase] = @value
43
+ end
44
+ end
45
+
46
+ end
47
+
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,32 @@
1
+ module Fog
2
+ module Parsers
3
+ module Terremark
4
+ module Shared
5
+
6
+ class NodeService < Fog::Parsers::Base
7
+
8
+ def reset
9
+ @response = {}
10
+ end
11
+
12
+ def end_element(name)
13
+ case name
14
+ when 'Description', 'Href', 'IpAddress', 'Name', 'Protocol'
15
+ @response[name] = @value
16
+ when 'Enabled'
17
+ if @value == 'false'
18
+ @response[name] = false
19
+ else
20
+ @response[name] = true
21
+ end
22
+ when 'Id', 'Port'
23
+ @response[name] = @value.to_i
24
+ end
25
+ end
26
+
27
+ end
28
+
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,26 @@
1
+ module Fog
2
+ module Parsers
3
+ module Terremark
4
+ module Shared
5
+
6
+ class PublicIp < Fog::Parsers::Base
7
+
8
+ def reset
9
+ @response = {}
10
+ end
11
+
12
+ def end_element(name)
13
+ case name
14
+ when 'Href', 'Name'
15
+ @response[name.downcase] = @value
16
+ when 'Id'
17
+ @response['id'] = @value.to_i
18
+ end
19
+ end
20
+
21
+ end
22
+
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,40 @@
1
+ module Fog
2
+ module Parsers
3
+ module Terremark
4
+ module Shared
5
+
6
+ class Task < Fog::Parsers::Base
7
+
8
+ def reset
9
+ @response = {}
10
+ end
11
+
12
+ def start_element(name, attributes)
13
+ @value = ''
14
+ case name
15
+ when 'Owner', 'Result'
16
+ data = {}
17
+ until attributes.empty?
18
+ data[attributes.shift] = attributes.shift
19
+ end
20
+ @response[name] = data
21
+ when 'Task'
22
+ task = {}
23
+ until attributes.empty?
24
+ if attributes.first.is_a?(Array)
25
+ attribute = attributes.shift
26
+ task[attribute.first] = attribute.last
27
+ else
28
+ task[attributes.shift] = attributes.shift
29
+ end
30
+ end
31
+ @response.merge!(task.reject {|key,value| !['endTime', 'href', 'startTime', 'status', 'type'].include?(key)})
32
+ end
33
+ end
34
+
35
+ end
36
+
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,47 @@
1
+ module Fog
2
+ module Parsers
3
+ module Terremark
4
+ module Shared
5
+
6
+ class Vapp < Fog::Parsers::Base
7
+
8
+ def reset
9
+ @response = { 'Links' => [] }
10
+ end
11
+
12
+ def start_element(name, attributes)
13
+ @value = ''
14
+ case name
15
+ when 'Link'
16
+ link = {}
17
+ until attributes.empty?
18
+ link[attributes.shift] = attributes.shift
19
+ end
20
+ @response['Links'] << link
21
+ when 'Vapp'
22
+ vapp = {}
23
+ until attributes.empty?
24
+ if attributes.first.is_a?(Array)
25
+ attribute = attributes.shift
26
+ vapp[attribute.first] = attribute.last
27
+ else
28
+ vapp[attributes.shift] = attributes.shift
29
+ end
30
+ end
31
+ @response.merge!(vapp.reject {|key,value| !['href', 'name', 'size', 'status', 'type'].include?(key)})
32
+ end
33
+ end
34
+
35
+ def end_element(name)
36
+ case name
37
+ when 'IpAddress'
38
+ @response['IpAddress'] = @value
39
+ end
40
+ end
41
+
42
+ end
43
+
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,63 @@
1
+ module Fog
2
+ module Terremark
3
+ module Shared
4
+ module Real
5
+
6
+ # Reserve requested resources and deploy vApp
7
+ #
8
+ # ==== Parameters
9
+ # * ip_id<~Integer> - Id of ip to add service to
10
+ # * name<~String> - Name of service
11
+ # * protocol<~String> - Protocol of service
12
+ # * port<~Integer> - Port of service
13
+ # * options<~Hash>:
14
+ # * Enabled<~Boolean>: defaults to true
15
+ # * Description<~String>: optional description
16
+ #
17
+ # ==== Returns
18
+ # * response<~Excon::Response>:
19
+ # * body<~Hash>:
20
+ # * 'endTime'<~String> - endTime of task
21
+ # * 'href'<~String> - link to task
22
+ # * 'startTime'<~String> - startTime of task
23
+ # * 'status'<~String> - status of task
24
+ # * 'type'<~String> - type of task
25
+ # * 'Owner'<~String> -
26
+ # * 'href'<~String> - href of owner
27
+ # * 'name'<~String> - name of owner
28
+ # * 'type'<~String> - type of owner
29
+ def add_internet_service(ip_id, name, protocol, port, options = {})
30
+ unless options.has_key?('Enabled')
31
+ options['Enabled'] = true
32
+ end
33
+ data = <<-DATA
34
+ <InternetService xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:tmrk:vCloudExpress-1.0:request:createInternetService">
35
+ <Name>#{name}</Name>
36
+ <Protocol>#{protocol.upcase}</Protocol>
37
+ <Port>#{port}</Port>
38
+ <Enabled>#{options['Enabled']}</Enabled>
39
+ <Description>#{options['Description']}</Description>
40
+ </InternetService>
41
+ DATA
42
+ request(
43
+ :body => data,
44
+ :expects => 200,
45
+ :headers => {'Content-Type' => 'application/xml'},
46
+ :method => 'POST',
47
+ :parser => Fog::Parsers::Terremark::Shared::InternetService.new,
48
+ :path => "publicIps/#{ip_id}/internetServices"
49
+ )
50
+ end
51
+
52
+ end
53
+
54
+ module Mock
55
+
56
+ def add_internet_service(ip_id)
57
+ raise MockNotImplemented.new("Contributions welcome!")
58
+ end
59
+
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,63 @@
1
+ module Fog
2
+ module Terremark
3
+ module Shared
4
+ module Real
5
+
6
+ # Reserve requested resources and deploy vApp
7
+ #
8
+ # ==== Parameters
9
+ # * service_id<~String> - Id of service to add node to
10
+ # * ip<~String> - Private ip of server to add to node
11
+ # * name<~String> - Name of service
12
+ # * port<~Integer> - Port of service
13
+ # * options<~Hash>:
14
+ # * Enabled<~Boolean>: defaults to true
15
+ # * Description<~String>: optional description
16
+ #
17
+ # ==== Returns
18
+ # * response<~Excon::Response>:
19
+ # * body<~Hash>:
20
+ # * 'endTime'<~String> - endTime of task
21
+ # * 'href'<~String> - link to task
22
+ # * 'startTime'<~String> - startTime of task
23
+ # * 'status'<~String> - status of task
24
+ # * 'type'<~String> - type of task
25
+ # * 'Owner'<~String> -
26
+ # * 'href'<~String> - href of owner
27
+ # * 'name'<~String> - name of owner
28
+ # * 'type'<~String> - type of owner
29
+ def add_node_service(service_id, ip, name, port, options = {})
30
+ unless options.has_key?('Enabled')
31
+ options['Enabled'] = true
32
+ end
33
+ data = <<-DATA
34
+ <NodeService xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:tmrk:vCloudExpress-1.0:request:createNodeService">
35
+ <IpAddress>#{ip}</IpAddress>
36
+ <Name>#{name}</Name>
37
+ <Port>#{port}</Port>
38
+ <Enabled>#{options['Enabled']}</Enabled>
39
+ <Description>#{options['Description']}</Description>
40
+ </NodeService>
41
+ DATA
42
+ request(
43
+ :body => data,
44
+ :expects => 200,
45
+ :headers => {'Content-Type' => 'application/xml'},
46
+ :method => 'POST',
47
+ :parser => Fog::Parsers::Terremark::Shared::InternetService.new,
48
+ :path => "internetServices/#{service_id}/nodes"
49
+ )
50
+ end
51
+
52
+ end
53
+
54
+ module Mock
55
+
56
+ def add_node_service(ip)
57
+ raise MockNotImplemented.new("Contributions welcome!")
58
+ end
59
+
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,63 @@
1
+ module Fog
2
+ module Terremark
3
+ module Shared
4
+ module Real
5
+
6
+ # Reserve requested resources and deploy vApp
7
+ #
8
+ # ==== Parameters
9
+ # * vdc_id<~Integer> - Id of vDc to add internet service to
10
+ # * name<~String> - Name of service
11
+ # * protocol<~String> - Protocol of service
12
+ # * port<~Integer> - Port of service
13
+ # * options<~Hash>:
14
+ # * Enabled<~Boolean>: defaults to true
15
+ # * Description<~String>: optional description
16
+ #
17
+ # ==== Returns
18
+ # * response<~Excon::Response>:
19
+ # * body<~Hash>:
20
+ # * 'endTime'<~String> - endTime of task
21
+ # * 'href'<~String> - link to task
22
+ # * 'startTime'<~String> - startTime of task
23
+ # * 'status'<~String> - status of task
24
+ # * 'type'<~String> - type of task
25
+ # * 'Owner'<~String> -
26
+ # * 'href'<~String> - href of owner
27
+ # * 'name'<~String> - name of owner
28
+ # * 'type'<~String> - type of owner
29
+ def create_internet_service(vdc_id, name, protocol, port, options = {})
30
+ unless options.has_key?('Enabled')
31
+ options['Enabled'] = true
32
+ end
33
+ data = <<-DATA
34
+ <InternetService xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:tmrk:vCloudExpress-1.0:request:createInternetService">
35
+ <Name>#{name}</Name>
36
+ <Protocol>#{protocol.upcase}</Protocol>
37
+ <Port>#{port}</Port>
38
+ <Enabled>#{options['Enabled']}</Enabled>
39
+ <Description>#{options['Description']}</Description>
40
+ </InternetService>
41
+ DATA
42
+ request(
43
+ :body => data,
44
+ :expects => 200,
45
+ :headers => {'Content-Type' => 'application/xml'},
46
+ :method => 'POST',
47
+ :parser => Fog::Parsers::Terremark::Shared::InternetService.new,
48
+ :path => "vdc/#{vdc_id}/internetServices"
49
+ )
50
+ end
51
+
52
+ end
53
+
54
+ module Mock
55
+
56
+ def create_internet_service(vdc_id)
57
+ raise MockNotImplemented.new("Contributions welcome!")
58
+ end
59
+
60
+ end
61
+ end
62
+ end
63
+ end