deltacloud-core 0.5.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (294) hide show
  1. data/NOTICE +1 -1
  2. data/Rakefile +63 -21
  3. data/bin/deltacloudd +10 -6
  4. data/config.ru +62 -6
  5. data/config/drivers/ec2.yaml +8 -0
  6. data/config/drivers/fgcp.yaml +13 -0
  7. data/deltacloud-core.gemspec +10 -2
  8. data/lib/cimi/collections.rb +58 -0
  9. data/lib/cimi/collections/address_templates.rb +49 -0
  10. data/lib/cimi/collections/addresses.rb +74 -0
  11. data/lib/cimi/collections/cloud_entry_point.rb +37 -0
  12. data/lib/{deltacloud/helpers/conversion_helper.rb → cimi/collections/entity_metadata.rb} +24 -16
  13. data/lib/cimi/collections/machine_admins.rb +74 -0
  14. data/lib/cimi/collections/machine_configurations.rb +49 -0
  15. data/lib/cimi/collections/machine_images.rb +50 -0
  16. data/lib/cimi/collections/machines.rb +157 -0
  17. data/lib/cimi/collections/network_configurations.rb +47 -0
  18. data/lib/cimi/collections/network_templates.rb +48 -0
  19. data/lib/cimi/collections/networks.rb +125 -0
  20. data/lib/cimi/collections/routing_group_templates.rb +47 -0
  21. data/lib/cimi/collections/routing_groups.rb +48 -0
  22. data/lib/cimi/collections/volume_configurations.rb +48 -0
  23. data/lib/cimi/collections/volume_images.rb +50 -0
  24. data/lib/cimi/collections/volumes.rb +80 -0
  25. data/lib/cimi/collections/vsp_configurations.rb +48 -0
  26. data/lib/cimi/collections/vsp_templates.rb +50 -0
  27. data/lib/cimi/collections/vsps.rb +108 -0
  28. data/lib/cimi/dependencies.rb +1 -0
  29. data/lib/cimi/helpers.rb +116 -0
  30. data/lib/cimi/helpers/cimi_helper.rb +6 -2
  31. data/lib/cimi/models.rb +72 -0
  32. data/lib/cimi/{model → models}/action.rb +1 -1
  33. data/lib/cimi/models/address.rb +72 -0
  34. data/lib/cimi/models/address_collection.rb +34 -0
  35. data/lib/cimi/models/address_template.rb +54 -0
  36. data/lib/cimi/models/address_template_collection.rb +34 -0
  37. data/lib/cimi/{model → models}/base.rb +2 -2
  38. data/lib/cimi/{model → models}/cloud_entry_point.rb +3 -5
  39. data/lib/cimi/{model → models}/entity_metadata.rb +7 -6
  40. data/lib/cimi/{model → models}/entity_metadata_collection.rb +2 -2
  41. data/lib/cimi/{model → models}/errors.rb +8 -0
  42. data/lib/cimi/{model → models}/machine.rb +10 -10
  43. data/lib/cimi/{model → models}/machine_admin.rb +1 -1
  44. data/lib/cimi/{model → models}/machine_admin_collection.rb +2 -2
  45. data/lib/cimi/{model → models}/machine_collection.rb +2 -2
  46. data/lib/cimi/{model → models}/machine_configuration.rb +9 -6
  47. data/lib/cimi/{model → models}/machine_configuration_collection.rb +2 -2
  48. data/lib/cimi/{model → models}/machine_image.rb +1 -1
  49. data/lib/cimi/{model → models}/machine_image_collection.rb +2 -2
  50. data/lib/cimi/{model → models}/machine_template.rb +0 -0
  51. data/lib/cimi/{model → models}/machine_template_collection.rb +2 -2
  52. data/lib/cimi/models/network.rb +109 -0
  53. data/lib/cimi/{model → models}/network_collection.rb +2 -2
  54. data/lib/cimi/{model → models}/network_configuration.rb +3 -4
  55. data/lib/cimi/{model → models}/network_configuration_collection.rb +2 -2
  56. data/lib/cimi/models/network_template.rb +36 -0
  57. data/lib/cimi/models/network_template_collection.rb +35 -0
  58. data/lib/cimi/models/routing_group.rb +34 -0
  59. data/lib/cimi/models/routing_group_collection.rb +34 -0
  60. data/lib/cimi/models/routing_group_template.rb +34 -0
  61. data/lib/cimi/models/routing_group_template_collection.rb +35 -0
  62. data/lib/cimi/{model → models}/schema.rb +0 -0
  63. data/lib/cimi/{model → models}/volume.rb +4 -4
  64. data/lib/cimi/{model → models}/volume_collection.rb +2 -2
  65. data/lib/cimi/{model → models}/volume_configuration.rb +1 -1
  66. data/lib/cimi/{model → models}/volume_configuration_collection.rb +2 -2
  67. data/lib/cimi/{model → models}/volume_image.rb +1 -1
  68. data/lib/cimi/{model → models}/volume_image_collection.rb +2 -2
  69. data/lib/cimi/{model → models}/volume_template.rb +0 -0
  70. data/lib/cimi/{model → models}/volume_template_collection.rb +2 -2
  71. data/lib/cimi/models/vsp.rb +102 -0
  72. data/lib/cimi/models/vsp_collection.rb +34 -0
  73. data/lib/cimi/models/vsp_configuration.rb +40 -0
  74. data/lib/cimi/models/vsp_configuration_collection.rb +34 -0
  75. data/lib/cimi/models/vsp_template.rb +34 -0
  76. data/lib/cimi/models/vsp_template_collection.rb +34 -0
  77. data/lib/cimi/server.rb +27 -549
  78. data/lib/deltacloud/api.rb +79 -0
  79. data/lib/deltacloud/collections.rb +54 -0
  80. data/lib/deltacloud/collections/addresses.rb +91 -0
  81. data/lib/deltacloud/collections/buckets.rb +273 -0
  82. data/lib/deltacloud/collections/drivers.rb +51 -0
  83. data/lib/deltacloud/collections/firewalls.rb +116 -0
  84. data/lib/deltacloud/collections/hardware_profiles.rb +29 -0
  85. data/lib/deltacloud/collections/images.rb +73 -0
  86. data/lib/deltacloud/collections/instance_states.rb +59 -0
  87. data/lib/deltacloud/collections/instances.rb +113 -0
  88. data/lib/deltacloud/collections/keys.rb +61 -0
  89. data/lib/deltacloud/collections/load_balancers.rb +102 -0
  90. data/lib/deltacloud/collections/metrics.rb +28 -0
  91. data/lib/deltacloud/collections/realms.rb +28 -0
  92. data/lib/deltacloud/collections/storage_snapshots.rb +51 -0
  93. data/lib/deltacloud/collections/storage_volumes.rb +99 -0
  94. data/lib/deltacloud/core_ext.rb +14 -6
  95. data/lib/deltacloud/core_ext/string.rb +17 -5
  96. data/lib/deltacloud/drivers.rb +6 -42
  97. data/lib/deltacloud/drivers/azure/azure_driver.rb +0 -4
  98. data/lib/deltacloud/{base_driver → drivers}/base_driver.rb +56 -18
  99. data/lib/deltacloud/drivers/condor/condor_driver.rb +1 -8
  100. data/lib/deltacloud/drivers/ec2/ec2_driver.rb +142 -33
  101. data/lib/deltacloud/drivers/eucalyptus/eucalyptus_driver.rb +2 -6
  102. data/lib/deltacloud/{base_driver → drivers}/exceptions.rb +25 -2
  103. data/lib/deltacloud/drivers/features.rb +154 -0
  104. data/lib/deltacloud/drivers/fgcp/fgcp_client.rb +387 -0
  105. data/lib/deltacloud/drivers/fgcp/fgcp_driver.rb +1435 -0
  106. data/lib/deltacloud/drivers/gogrid/gogrid_driver.rb +8 -11
  107. data/lib/deltacloud/drivers/google/google_driver.rb +2 -5
  108. data/lib/deltacloud/drivers/mock/data/keys/test-key.yml +28 -0
  109. data/lib/deltacloud/drivers/mock/mock_client.rb +2 -2
  110. data/lib/deltacloud/drivers/mock/mock_driver.rb +58 -40
  111. data/lib/deltacloud/drivers/mock/mock_driver_cimi_methods.rb +145 -0
  112. data/lib/deltacloud/drivers/opennebula/cloud_client.rb +107 -73
  113. data/lib/deltacloud/drivers/opennebula/occi_client.rb +285 -145
  114. data/lib/deltacloud/drivers/opennebula/opennebula_driver.rb +189 -126
  115. data/lib/deltacloud/drivers/openstack/openstack_driver.rb +427 -8
  116. data/lib/deltacloud/drivers/rackspace/rackspace_driver.rb +7 -9
  117. data/lib/deltacloud/drivers/rhevm/rhevm_driver.rb +48 -66
  118. data/lib/deltacloud/drivers/rimuhosting/rimuhosting_client.rb +44 -51
  119. data/lib/deltacloud/drivers/rimuhosting/rimuhosting_driver.rb +7 -8
  120. data/lib/deltacloud/drivers/sbc/sbc_client.rb +1 -1
  121. data/lib/deltacloud/drivers/sbc/sbc_driver.rb +3 -3
  122. data/lib/deltacloud/drivers/terremark/terremark_driver.rb +8 -8
  123. data/lib/deltacloud/drivers/vsphere/vsphere_driver.rb +39 -13
  124. data/lib/deltacloud/drivers/vsphere/vsphere_filemanager.rb +1 -0
  125. data/lib/deltacloud/helpers.rb +79 -7
  126. data/lib/{sinatra/lazy_auth.rb → deltacloud/helpers/auth_helper.rb} +5 -9
  127. data/lib/deltacloud/helpers/{blob_stream.rb → blob_stream_helper.rb} +7 -7
  128. data/lib/deltacloud/helpers/deltacloud_helper.rb +286 -0
  129. data/lib/deltacloud/helpers/driver_helper.rb +58 -0
  130. data/lib/deltacloud/helpers/rabbit_helper.rb +34 -0
  131. data/lib/{sinatra/url_for.rb → deltacloud/helpers/url_helper.rb} +31 -9
  132. data/lib/deltacloud/models.rb +19 -17
  133. data/lib/deltacloud/models/bucket.rb +4 -0
  134. data/lib/deltacloud/{hardware_profile.rb → models/hardware_profile.rb} +4 -2
  135. data/lib/deltacloud/models/image.rb +1 -0
  136. data/lib/deltacloud/models/instance.rb +4 -2
  137. data/lib/deltacloud/models/instance_address.rb +4 -0
  138. data/lib/deltacloud/models/key.rb +4 -0
  139. data/lib/deltacloud/models/metric.rb +40 -0
  140. data/lib/deltacloud/{state_machine.rb → models/state_machine.rb} +18 -1
  141. data/lib/deltacloud/server.rb +41 -1222
  142. data/lib/deltacloud_rack.rb +79 -0
  143. data/lib/{cimi/model/network_template.rb → ec2/helpers.rb} +7 -10
  144. data/lib/{deltacloud/backend_capability.rb → ec2/helpers/errors.rb} +24 -29
  145. data/lib/ec2/helpers/result.rb +31 -0
  146. data/lib/ec2/query_parser.rb +152 -0
  147. data/lib/ec2/server.rb +70 -0
  148. data/lib/{deltacloud.rb → sinatra.rb} +7 -12
  149. data/lib/sinatra/rack_accept.rb +13 -7
  150. data/lib/sinatra/rack_driver_select.rb +1 -1
  151. data/lib/sinatra/rack_matrix_params.rb +1 -3
  152. data/public/images/metric.png +0 -0
  153. data/public/javascripts/jquery.mobile-1.0.1.min.js +177 -0
  154. data/public/stylesheets/jquery.mobile-1.0.1.min.css +2 -0
  155. data/public/stylesheets/new.css +10 -0
  156. data/support/fedora/deltacloud-core.spec +1 -1
  157. data/tests/api/common.rb +1 -0
  158. data/tests/api/driver_test.rb +79 -0
  159. data/tests/api/library_test.rb +48 -0
  160. data/tests/cimi/features/step_definitions/common_steps.rb +2 -2
  161. data/tests/cimi/features/step_definitions/machines_steps.rb +5 -4
  162. data/tests/cimi/features/step_definitions/volumes_steps.rb +8 -8
  163. data/tests/cimi/features/support/env.rb +33 -11
  164. data/tests/common.rb +7 -8
  165. data/tests/drivers/ec2/api_test.rb +19 -0
  166. data/tests/drivers/ec2/common.rb +23 -0
  167. data/tests/drivers/ec2/drivers_test.rb +120 -0
  168. data/tests/drivers/ec2/hardware_profiles_test.rb +224 -0
  169. data/tests/drivers/ec2/images_test.rb +230 -0
  170. data/tests/drivers/ec2/instances_test.rb +356 -0
  171. data/tests/drivers/ec2/keys_test.rb +181 -0
  172. data/tests/drivers/ec2/realms_test.rb +146 -0
  173. data/tests/drivers/fgcp/api_test.rb +47 -0
  174. data/tests/drivers/fgcp/hardware_profiles_test.rb +54 -0
  175. data/tests/drivers/fgcp/realms_test.rb +42 -0
  176. data/tests/drivers/{rackspace → fgcp}/setup.rb +5 -6
  177. data/tests/drivers/google/api_test.rb +10 -26
  178. data/tests/drivers/google/buckets_test.rb +79 -95
  179. data/tests/drivers/google/common.rb +54 -0
  180. data/tests/drivers/mock/api_test.rb +4 -127
  181. data/tests/drivers/mock/buckets_test.rb +195 -0
  182. data/tests/drivers/mock/common.rb +7 -0
  183. data/tests/drivers/mock/drivers_test.rb +123 -0
  184. data/tests/drivers/mock/hardware_profiles_test.rb +190 -100
  185. data/tests/drivers/mock/images_test.rb +162 -103
  186. data/tests/drivers/mock/instances_test.rb +310 -220
  187. data/tests/drivers/mock/keys_test.rb +161 -0
  188. data/tests/drivers/mock/realms_test.rb +109 -70
  189. data/tests/drivers/mock/storage_snapshots_test.rb +114 -0
  190. data/tests/drivers/mock/storage_volumes_test.rb +122 -0
  191. data/tests/drivers/openstack/api_test.rb +8 -3
  192. data/tests/drivers/openstack/common.rb +21 -0
  193. data/tests/drivers/openstack/hardware_profiles_test.rb +20 -9
  194. data/tests/drivers/openstack/images_test.rb +11 -5
  195. data/tests/drivers/openstack/instances_test.rb +61 -16
  196. data/tests/drivers/openstack/realms_test.rb +11 -7
  197. data/tests/drivers/rackspace/api_test.rb +7 -2
  198. data/tests/drivers/rackspace/buckets_test.rb +7 -2
  199. data/tests/drivers/rackspace/common.rb +16 -0
  200. data/tests/drivers/rackspace/hardware_profiles_test.rb +7 -2
  201. data/tests/drivers/rackspace/images_test.rb +7 -2
  202. data/tests/drivers/rackspace/instances_test.rb +10 -5
  203. data/tests/drivers/rackspace/realms_test.rb +7 -2
  204. data/tests/drivers/rhevm/api_test.rb +12 -6
  205. data/tests/drivers/rhevm/{setup.rb → common.rb} +8 -1
  206. data/tests/drivers/rhevm/hardware_profiles_test.rb +7 -2
  207. data/tests/drivers/rhevm/images_test.rb +8 -2
  208. data/tests/drivers/rhevm/instances_test.rb +7 -2
  209. data/tests/drivers/rhevm/realms_test.rb +7 -2
  210. data/tests/minitest_common.rb +58 -0
  211. data/tests/minitest_common_api_test.rb +115 -0
  212. data/views/addresses/associate.html.haml +1 -1
  213. data/views/addresses/index.html.haml +1 -1
  214. data/views/addresses/show.html.haml +2 -3
  215. data/views/api/show.html.haml +22 -9
  216. data/views/api/show.xml.haml +8 -7
  217. data/views/blobs/show.xml.haml +7 -4
  218. data/views/buckets/new.html.haml +2 -2
  219. data/views/cimi/errors/401.xml.haml +1 -1
  220. data/views/error.html.haml +3 -3
  221. data/views/errors/400.html.haml +1 -1
  222. data/views/errors/400.xml.haml +1 -2
  223. data/views/errors/401.html.haml +8 -7
  224. data/views/errors/401.xml.haml +1 -1
  225. data/views/errors/404.xml.haml +1 -0
  226. data/views/errors/500.xml.haml +4 -2
  227. data/views/{cimi/errors/403.html.haml → errors/501.html.haml} +4 -2
  228. data/views/errors/501.xml.haml +1 -0
  229. data/views/errors/502.xml.haml +1 -7
  230. data/views/{cimi/errors/500.html.haml → errors/504.html.haml} +0 -0
  231. data/views/errors/504.xml.haml +1 -0
  232. data/views/firewalls/new.html.haml +2 -2
  233. data/views/firewalls/new_rule.html.haml +1 -1
  234. data/views/firewalls/show.html.haml +1 -1
  235. data/views/hardware_profiles/index.html.haml +3 -1
  236. data/views/hardware_profiles/index.xml.haml +2 -2
  237. data/views/hardware_profiles/show.html.haml +3 -3
  238. data/views/hardware_profiles/show.xml.haml +3 -3
  239. data/views/images/show.html.haml +5 -0
  240. data/views/images/show.xml.haml +6 -1
  241. data/views/instance_states/show.html.haml +1 -1
  242. data/views/instances/index.html.haml +1 -1
  243. data/views/instances/new.html.haml +54 -39
  244. data/views/instances/run_command.html.haml +24 -15
  245. data/views/instances/show.html.haml +7 -3
  246. data/views/instances/show.xml.haml +2 -2
  247. data/views/keys/show.xml.haml +1 -0
  248. data/views/layout.html.haml +5 -9
  249. data/views/load_balancers/show.html.haml +12 -6
  250. data/views/metrics/index.html.haml +13 -0
  251. data/views/metrics/index.xml.haml +5 -0
  252. data/views/metrics/show.html.haml +23 -0
  253. data/views/metrics/show.xml.haml +9 -0
  254. data/views/realms/show.xml.haml +2 -1
  255. data/views/root/index.html.haml +1 -1
  256. data/views/storage_snapshots/show.html.haml +1 -1
  257. data/views/storage_snapshots/show.xml.haml +1 -0
  258. data/views/storage_volumes/attach.html.haml +1 -2
  259. data/views/storage_volumes/index.html.haml +1 -1
  260. data/views/storage_volumes/new.html.haml +22 -16
  261. data/views/storage_volumes/show.html.haml +10 -4
  262. data/views/storage_volumes/show.xml.haml +3 -4
  263. metadata +547 -519
  264. data/DISCLAIMER +0 -8
  265. data/lib/cimi/model.rb +0 -52
  266. data/lib/cimi/model/network.rb +0 -69
  267. data/lib/deltacloud/base_driver.rb +0 -18
  268. data/lib/deltacloud/base_driver/features.rb +0 -262
  269. data/lib/deltacloud/base_driver/mock_driver.rb +0 -78
  270. data/lib/deltacloud/drivers/ec2/ec2_mock_driver.rb +0 -186
  271. data/lib/deltacloud/drivers/rhevm/rhevm_client.rb +0 -521
  272. data/lib/deltacloud/helpers/application_helper.rb +0 -267
  273. data/lib/deltacloud/helpers/hardware_profiles_helper.rb +0 -50
  274. data/lib/deltacloud/helpers/json_helper.rb +0 -31
  275. data/lib/deltacloud/method_serializer.rb +0 -83
  276. data/lib/deltacloud/validation.rb +0 -107
  277. data/lib/sinatra/rabbit.rb +0 -441
  278. data/lib/sinatra/rack_runtime.rb +0 -47
  279. data/lib/sinatra/rack_syslog.rb +0 -86
  280. data/lib/sinatra/sinatra_verbose.rb +0 -73
  281. data/lib/sinatra/static_assets.rb +0 -99
  282. data/public/javascripts/jquery.mobile-1.0rc1.min.js +0 -170
  283. data/public/stylesheets/jquery.mobile-1.0rc1.min.css +0 -12
  284. data/tests/drivers/google/setup.rb +0 -38
  285. data/tests/drivers/mock/instance_states_test.rb +0 -71
  286. data/tests/drivers/mock/setup.rb +0 -3
  287. data/tests/drivers/mock/url_for_test.rb +0 -67
  288. data/tests/drivers/openstack/setup.rb +0 -20
  289. data/views/cimi/errors/400.html.haml +0 -41
  290. data/views/cimi/errors/401.html.haml +0 -41
  291. data/views/cimi/errors/404.html.haml +0 -29
  292. data/views/cimi/errors/405.html.haml +0 -29
  293. data/views/cimi/errors/502.html.haml +0 -43
  294. data/views/cimi/errors/backend_capability_failure.html.haml +0 -29
data/DISCLAIMER DELETED
@@ -1,8 +0,0 @@
1
- Apache Deltacloud is an effort undergoing incubation at The Apache Software
2
- Foundation (ASF), sponsored by the Incubator PMC. Incubation is required of
3
- all newly accepted projects until a further review indicates that the
4
- infrastructure, communications, and decision making process have stabilized
5
- in a manner consistent with other successful ASF projects. While
6
- incubation status is not necessarily a reflection of the completeness or
7
- stability of the code, it does indicate that the project has yet to be
8
- fully endorsed by the ASF.
@@ -1,52 +0,0 @@
1
- # Licensed to the Apache Software Foundation (ASF) under one or more
2
- # contributor license agreements. See the NOTICE file distributed with
3
- # this work for additional information regarding copyright ownership. The
4
- # ASF licenses this file to you under the Apache License, Version 2.0 (the
5
- # "License"); you may not use this file except in compliance with the
6
- # License. You may obtain a copy of the License at
7
- #
8
- # http://www.apache.org/licenses/LICENSE-2.0
9
- #
10
- # Unless required by applicable law or agreed to in writing, software
11
- # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12
- # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13
- # License for the specific language governing permissions and limitations
14
- # under the License.
15
- #
16
-
17
- # Declare namespace for CIMI model
18
- #
19
- module CIMI
20
- module Model; end
21
- end
22
-
23
- require 'cimi/model/schema'
24
- require 'cimi/model/base'
25
- require 'cimi/model/errors'
26
- require 'cimi/model/cloud_entry_point'
27
- require 'cimi/model/machine_template'
28
- require 'cimi/model/machine_image'
29
- require 'cimi/model/machine_configuration'
30
- require 'cimi/model/action'
31
- require 'cimi/model/machine'
32
- require 'cimi/model/volume'
33
- require 'cimi/model/machine_admin'
34
- require 'cimi/model/volume_configuration'
35
- require 'cimi/model/volume_image'
36
- require 'cimi/model/volume_template'
37
- require 'cimi/model/machine_template_collection'
38
- require 'cimi/model/machine_image_collection'
39
- require 'cimi/model/machine_configuration_collection'
40
- require 'cimi/model/machine_collection'
41
- require 'cimi/model/volume_collection'
42
- require 'cimi/model/machine_admin_collection'
43
- require 'cimi/model/volume_configuration_collection'
44
- require 'cimi/model/volume_image_collection'
45
- require 'cimi/model/volume_template_collection'
46
- require 'cimi/model/entity_metadata'
47
- require 'cimi/model/entity_metadata_collection'
48
- require 'cimi/model/network'
49
- require 'cimi/model/network_collection'
50
- require 'cimi/model/network_configuration'
51
- require 'cimi/model/network_configuration_collection'
52
- require 'cimi/model/network_template'
@@ -1,69 +0,0 @@
1
- # Licensed to the Apache Software Foundation (ASF) under one or more
2
- # contributor license agreements. See the NOTICE file distributed with
3
- # this work for additional information regarding copyright ownership. The
4
- # ASF licenses this file to you under the Apache License, Version 2.0 (the
5
- # "License"); you may not use this file except in compliance with the
6
- # License. You may obtain a copy of the License at
7
- #
8
- # http://www.apache.org/licenses/LICENSE-2.0
9
- #
10
- # Unless required by applicable law or agreed to in writing, software
11
- # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12
- # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13
- # License for the specific language governing permissions and limitations
14
- # under the License.
15
-
16
- class CIMI::Model::Network < CIMI::Model::Base
17
-
18
- text :state
19
-
20
- text :access
21
-
22
- text :bandwidth_limit
23
-
24
- text :traffic_priority
25
-
26
- text :max_traffic_delay
27
-
28
- text :max_traffic_loss
29
-
30
- text :max_traffic_jitter
31
-
32
- href :routing_group
33
-
34
- href :event_log
35
-
36
- array :meters do
37
- scalar :href
38
- end
39
-
40
- array :operations do
41
- scalar :rel, :href
42
- end
43
-
44
- def self.find(id, context)
45
- networks=[]
46
- if id==:all
47
- networks = context.driver.networks(context.credentials, {:env=>context})
48
- else
49
- networks = context.driver.networks(context.credentials, {:id=>id, :env=>context})
50
- end
51
- networks
52
- end
53
-
54
- def self.create_from_xml(request_body, context)
55
- #FIXME
56
- end
57
-
58
- def self.create_from_json(request_body,context)
59
- #FIXME
60
- end
61
-
62
- def self.delete!(id, context)
63
- #FIXME
64
- end
65
-
66
- #FIXME
67
- #actions - needs method(s) to facilitate stop/start/suspend/delete
68
-
69
- end
@@ -1,18 +0,0 @@
1
- #
2
- # Licensed to the Apache Software Foundation (ASF) under one or more
3
- # contributor license agreements. See the NOTICE file distributed with
4
- # this work for additional information regarding copyright ownership. The
5
- # ASF licenses this file to you under the Apache License, Version 2.0 (the
6
- # "License"); you may not use this file except in compliance with the
7
- # License. You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13
- # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14
- # License for the specific language governing permissions and limitations
15
- # under the License.
16
-
17
- require 'deltacloud/base_driver/base_driver'
18
- require 'deltacloud/base_driver/features'
@@ -1,262 +0,0 @@
1
- #
2
- # Licensed to the Apache Software Foundation (ASF) under one or more
3
- # contributor license agreements. See the NOTICE file distributed with
4
- # this work for additional information regarding copyright ownership. The
5
- # ASF licenses this file to you under the Apache License, Version 2.0 (the
6
- # "License"); you may not use this file except in compliance with the
7
- # License. You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13
- # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14
- # License for the specific language governing permissions and limitations
15
- # under the License.
16
-
17
- require 'deltacloud/validation'
18
-
19
- # Add advertising of optional features to the base driver
20
- module Deltacloud
21
-
22
- class FeatureError < StandardError; end
23
- class DuplicateFeatureDeclError < FeatureError; end
24
- class UndeclaredFeatureError < FeatureError; end
25
-
26
- class BaseDriver
27
-
28
- # An operation on a collection like cretae or show. Features
29
- # can add parameters to operations
30
- class Operation
31
- attr_reader :name
32
-
33
- include Deltacloud::Validation
34
-
35
- def initialize(name, &block)
36
- @name = name
37
- @params = {}
38
- instance_eval &block
39
- end
40
- end
41
-
42
- # The declaration of a feature, defines what operations
43
- # are modified by it
44
- class FeatureDecl
45
- attr_reader :name, :operations
46
-
47
- def initialize(name, &block)
48
- @name = name
49
- @operations = []
50
- instance_eval &block
51
- end
52
-
53
- def description(text=nil)
54
- @description = text if text
55
- @description
56
- end
57
-
58
- # Add/modify an operation or look up an existing one. If +block+ is
59
- # provided, create a new operation if none exists with name
60
- # +name+. Evaluate the +block+ against this instance. If no +block+
61
- # is provided, look up the operation with name +name+
62
- def operation(name, &block)
63
- op = @operations.find { |op| op.name == name }
64
- if block_given?
65
- if op.nil?
66
- op = Operation.new(name, &block)
67
- @operations << op
68
- else
69
- op.instance_eval(&block)
70
- end
71
- end
72
- op
73
- end
74
- end
75
-
76
- # A specific feature enabled by a driver (see +feature+)
77
- class Feature
78
- attr_reader :decl, :constraints
79
-
80
- def initialize(decl, &block)
81
- @decl = decl
82
- @constraints = {}
83
- instance_eval &block if block_given?
84
- end
85
-
86
- def name
87
- decl.name
88
- end
89
-
90
- def operations
91
- decl.operations
92
- end
93
-
94
- def description
95
- decl.description
96
- end
97
-
98
- def constraint(name, value)
99
- @constraints[name] = value
100
- end
101
- end
102
-
103
- def self.feature_decls
104
- @@feature_decls ||= {}
105
- end
106
-
107
- def self.feature_decl_for(collection, name)
108
- decls = feature_decls[collection]
109
- if decls
110
- decls.find { |dcl| dcl.name == name }
111
- else
112
- nil
113
- end
114
- end
115
-
116
- # Declare a new feature
117
- def self.declare_feature(collection, name, &block)
118
- feature_decls[collection] ||= []
119
- raise DuplicateFeatureDeclError if feature_decl_for(collection, name)
120
- feature_decls[collection] << FeatureDecl.new(name, &block)
121
- end
122
-
123
- def self.features
124
- @features ||= {}
125
- end
126
-
127
- # Declare in a driver that it supports a specific feature
128
- #
129
- # The same feature can be declared multiple times in a driver, so that
130
- # it can be changed successively by passing in different blocks.
131
- def self.feature(collection, name, &block)
132
- features[collection] ||= []
133
- if f = features[collection].find { |f| f.name == name }
134
- f.instance_eval(&block) if block_given?
135
- return f
136
- end
137
- unless decl = feature_decl_for(collection, name)
138
- raise UndeclaredFeatureError, "No feature #{name} for #{collection}"
139
- end
140
- features[collection] << Feature.new(decl, &block)
141
- end
142
-
143
- def features(collection)
144
- self.class.features[collection] || []
145
- end
146
-
147
- def features_for_operation(collection, operation)
148
- features(collection).select do |f|
149
- f.operations.detect { |o| o.name == operation }
150
- end
151
- end
152
-
153
- #
154
- # Declaration of optional features
155
- #
156
- declare_feature :images, :owner_id do
157
- description "Filter images using owner id"
158
- operation :index do
159
- param :owner_id, :string, :optional, [], "Owner ID"
160
- end
161
- end
162
-
163
- declare_feature :instances, :user_name do
164
- description "Accept a user-defined name on instance creation"
165
- operation :create do
166
- param :name, :string, :optional, [], "The user-defined name"
167
- end
168
- end
169
-
170
- declare_feature :instances, :user_data do
171
- description "Make user-defined data available on a special webserver"
172
- operation :create do
173
- param :user_data, :string, :optional, [],
174
- "Base64 encoded user data will be published to internal webserver"
175
- end
176
- end
177
-
178
- declare_feature :instances, :user_iso do
179
- description "Make user-defined ISO available inside instance"
180
- operation :create do
181
- param :user_iso, :string, :optional, [],
182
- "Base64 encoded gzipped ISO file will be accessible as CD-ROM drive in instance"
183
- end
184
- end
185
-
186
- declare_feature :instances, :user_files do
187
- description "Accept up to 5 files to be placed into the instance before launch."
188
- operation :create do
189
- 1.upto(5) do |i|
190
- param :"path#{i}", :string, :optional, [],
191
- "Path where to place the #{i.ordinalize} file, up to 255 characters"
192
- param :"content#{i}", :string, :optional, nil,
193
- "Contents for the #{i.ordinalize} file, up to 10 kB, Base64 encoded"
194
- end
195
- end
196
- end
197
-
198
- declare_feature :instances, :firewalls do
199
- description "Put instance in one or more firewalls (security groups) on launch"
200
- operation :create do
201
- param :firewalls, :array, :optional, nil, "Array of firewall ID strings"
202
- "Array of firewall (security group) id"
203
- end
204
- end
205
-
206
- declare_feature :instances, :authentication_key do
207
- operation :create do
208
- param :keyname, :string, :optional, [], "Key authentification method"
209
- end
210
- operation :show do
211
- end
212
- end
213
-
214
- declare_feature :instances, :authentication_password do
215
- operation :create do
216
- param :password, :string, :optional
217
- end
218
- end
219
-
220
- declare_feature :instances, :hardware_profiles do
221
- description "Size instances according to changes to a hardware profile"
222
- # The parameters are filled in from the hardware profiles
223
- end
224
-
225
- declare_feature :buckets, :bucket_location do
226
- description "Take extra location parameter for Bucket creation (e.g. S3, 'eu' or 'us-west-1')"
227
- operation :create do
228
- param :location, :string, :optional
229
- end
230
- end
231
-
232
- declare_feature :instances, :register_to_load_balancer do
233
- description "Register instance to load balancer"
234
- operation :create do
235
- param :load_balancer_id, :string, :optional
236
- end
237
- end
238
-
239
- declare_feature :instances, :instance_count do
240
- description "Number of instances to be launch with at once"
241
- operation :create do
242
- param :instance_count, :string, :optional
243
- end
244
- end
245
-
246
- declare_feature :instances, :attach_snapshot do
247
- description "Attach an snapshot to instance on create"
248
- operation :create do
249
- param :snapshot_id, :string, :optional
250
- param :device_name, :string, :optional
251
- end
252
- end
253
-
254
- declare_feature :instances, :sandboxing do
255
- description "Allow lanuching sandbox images"
256
- operation :create do
257
- param :sandbox, :string, :optional
258
- end
259
- end
260
-
261
- end
262
- end
@@ -1,78 +0,0 @@
1
- # Licensed to the Apache Software Foundation (ASF) under one or more
2
- # contributor license agreements. See the NOTICE file distributed with
3
- # this work for additional information regarding copyright ownership. The
4
- # ASF licenses this file to you under the Apache License, Version 2.0 (the
5
- # "License"); you may not use this file except in compliance with the
6
- # License. You may obtain a copy of the License at
7
- #
8
- # http://www.apache.org/licenses/LICENSE-2.0
9
- #
10
- # Unless required by applicable law or agreed to in writing, software
11
- # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12
- # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13
- # License for the specific language governing permissions and limitations
14
- # under the License.
15
-
16
- require 'deltacloud/method_serializer'
17
-
18
- # Create 'mock' version of original driver client/gem:
19
-
20
- # Initialize driver and include Deltacloud
21
- include Deltacloud
22
- driver
23
-
24
- module Mock
25
-
26
- class Ec2 < Aws::Ec2
27
-
28
- include MethodSerializer::Cache
29
-
30
- def self.cached_methods
31
- [
32
- :describe_images,
33
- :describe_images_by_owner,
34
- :describe_availability_zones,
35
- :launch_instances,
36
- :describe_instances,
37
- :reboot_instances,
38
- :create_tag,
39
- :delete_tag,
40
- :describe_tags,
41
- :terminate_instances,
42
- :describe_key_pairs,
43
- :create_key_pair,
44
- :delete_key_pair,
45
- :create_volume,
46
- :get_console_output,
47
- :describe_volumes,
48
- :delete_volume,
49
- :attach_volume,
50
- :detach_volume,
51
- :describe_snapshots,
52
- :associate_address,
53
- :try_create_snapshot,
54
- ]
55
- end
56
-
57
- MethodSerializer::Cache::wrap_methods(self, :cache_dir => File.join(File.dirname(__FILE__), '..', '..', '..', '..', 'tests', 'ec2', 'support'))
58
- end
59
-
60
- end
61
-
62
-
63
- # Replace original client with mock client
64
- Deltacloud::Drivers::EC2::EC2Driver.class_eval do
65
- alias_method :original_new_client, :new_client
66
-
67
- def new_client(credentials, provider = :ec2)
68
- auth_credentials = { :access_key_id => credentials.user, :secret_access_key => credentials.password}
69
- if provider == :elb
70
- Mock::ELB.new(auth_credentials)
71
- elsif provider == :s3
72
- Mock::S3.new(auth_credentials)
73
- else
74
- Mock::Ec2.new(auth_credentials[:access_key_id], auth_credentials[:secret_access_key])
75
- end
76
- end
77
-
78
- end