fog 0.0.77 → 0.0.78

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 (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