occi-api 4.0.0.alpha.1

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 (105) hide show
  1. data/.gitignore +15 -0
  2. data/.rspec +1 -0
  3. data/.travis.yml +43 -0
  4. data/.yardopts +1 -0
  5. data/AUTHORS +9 -0
  6. data/Gemfile +16 -0
  7. data/LICENSE +13 -0
  8. data/README.md +344 -0
  9. data/Rakefile +37 -0
  10. data/examples/dsl_example.rb +167 -0
  11. data/examples/x509auth_example.rb +161 -0
  12. data/ext/mkrf_conf.rb +34 -0
  13. data/features/cassettes/Create_an_OCCI_Resource/_http_http___141_5_99_69__text_plain_201_.yml +288 -0
  14. data/features/cassettes/Delete_an_OCCI_Resource/_http_http___141_5_99_69__text_plain_201_.yml +288 -0
  15. data/features/cassettes/Discovery_Interface/Retrieving_all_OCCI_Categories_supported_by_the_OCCI_Server/_http_http___141_5_99_69__application_json_200_.yml +333 -0
  16. data/features/cassettes/Discovery_Interface/Retrieving_all_OCCI_Categories_supported_by_the_OCCI_Server/_http_http___141_5_99_69__text_plain_200_.yml +529 -0
  17. data/features/cassettes/Discovery_Interface/Retrieving_all_OCCI_Categories_supported_by_the_OCCI_Server/_http_http___141_5_99_69__text_plain_200_action_.yml +288 -0
  18. data/features/cassettes/Miscellaneous_operation_on_an_OCCI_Resource/_http_http___141_5_99_69__text_plain_201_.yml +288 -0
  19. data/features/cassettes/Read_an_OCCI_Resource/_http_http___141_5_99_69__text_plain_201_.yml +288 -0
  20. data/features/cassettes/Update_an_OCCI_Resource/_http_http___141_5_99_69__text_plain_201_.yml +288 -0
  21. data/features/common/step_definitions/common_steps.rb +32 -0
  22. data/features/occi/core/create/create.feature +18 -0
  23. data/features/occi/core/create/step_definitions/create_steps.rb +0 -0
  24. data/features/occi/core/delete/delete.feature +18 -0
  25. data/features/occi/core/delete/step_definitions/delete_steps.rb +0 -0
  26. data/features/occi/core/discovery_interface/discovery_interface.feature +37 -0
  27. data/features/occi/core/discovery_interface/step_definitions/discovery_interface_steps.rb +19 -0
  28. data/features/occi/core/miscellaneous/miscellaneous.feature +18 -0
  29. data/features/occi/core/miscellaneous/step_definitions/miscellaneous_steps.rb +0 -0
  30. data/features/occi/core/read/read.feature +18 -0
  31. data/features/occi/core/read/step_definitions/read_steps.rb +0 -0
  32. data/features/occi/core/update/step_definitions/update_steps.rb +0 -0
  33. data/features/occi/core/update/update.feature +18 -0
  34. data/features/occi/infrastructure/create/create.feature +18 -0
  35. data/features/occi/infrastructure/create/step_definitions/create_steps.rb +0 -0
  36. data/features/support/env.rb +16 -0
  37. data/lib/occi/api/client/client_amqp.rb +766 -0
  38. data/lib/occi/api/client/client_base.rb +689 -0
  39. data/lib/occi/api/client/client_http.rb +541 -0
  40. data/lib/occi/api/client/errors/authn_error.rb +7 -0
  41. data/lib/occi/api/client/errors.rb +1 -0
  42. data/lib/occi/api/client/http/authn_plugins/base.rb +27 -0
  43. data/lib/occi/api/client/http/authn_plugins/basic.rb +22 -0
  44. data/lib/occi/api/client/http/authn_plugins/digest.rb +22 -0
  45. data/lib/occi/api/client/http/authn_plugins/dummy.rb +13 -0
  46. data/lib/occi/api/client/http/authn_plugins/keystone.rb +61 -0
  47. data/lib/occi/api/client/http/authn_plugins/x509.rb +46 -0
  48. data/lib/occi/api/client/http/authn_plugins.rb +6 -0
  49. data/lib/occi/api/client/http/authn_utils.rb +87 -0
  50. data/lib/occi/api/client/http/httparty_fix.rb +53 -0
  51. data/lib/occi/api/client/http/net_http_fix.rb +21 -0
  52. data/lib/occi/api/dsl.rb +146 -0
  53. data/lib/occi/api/version.rb +5 -0
  54. data/lib/occi-api.rb +14 -0
  55. data/occi-api.gemspec +38 -0
  56. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/creates_a_new_compute_resource.yml +266 -0
  57. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/creates_a_new_network_resource.yml +266 -0
  58. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/creates_a_new_storage_resource.yml +266 -0
  59. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/deletes_a_compute_resource.yml +266 -0
  60. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/deletes_a_network_resource.yml +266 -0
  61. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/deletes_a_storage_resource.yml +266 -0
  62. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/deploys_an_instance_based_on_OVF_OVA_file.yml +266 -0
  63. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/describes_compute_resources.yml +368 -0
  64. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/describes_network_resources.yml +370 -0
  65. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/describes_storage_resources.yml +430 -0
  66. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/establishes_connection.yml +266 -0
  67. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/finds_and_describes_scoped_os_tpl_mixin.yml +266 -0
  68. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/finds_and_describes_scoped_resource_tpl_mixin.yml +266 -0
  69. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/finds_and_describes_unscoped_mixin.yml +266 -0
  70. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/instantiates_a_compute_resource_using_type_identifier.yml +266 -0
  71. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/instantiates_a_compute_resource_using_type_name.yml +266 -0
  72. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/instantiates_a_network_resource_using_type_identifier.yml +266 -0
  73. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/instantiates_a_network_resource_using_type_name.yml +266 -0
  74. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/instantiates_a_storage_resource_using_type_identifier.yml +266 -0
  75. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/instantiates_a_storage_resource_using_type_name.yml +266 -0
  76. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/lists_all_available_entity_type_identifiers.yml +266 -0
  77. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/lists_all_available_entity_types.yml +266 -0
  78. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/lists_all_available_link_type_identifiers.yml +266 -0
  79. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/lists_all_available_link_types.yml +266 -0
  80. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/lists_all_available_mixin_type_identifiers.yml +266 -0
  81. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/lists_all_available_mixin_types.yml +266 -0
  82. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/lists_all_available_mixins.yml +266 -0
  83. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/lists_all_available_resource_type_identifiers.yml +266 -0
  84. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/lists_all_available_resource_types.yml +266 -0
  85. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/lists_compute_resources.yml +308 -0
  86. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/lists_network_resources.yml +308 -0
  87. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/lists_os_tpl_mixins.yml +266 -0
  88. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/lists_resource_tpl_mixins.yml +266 -0
  89. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/lists_storage_resources.yml +310 -0
  90. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/refreshes_its_model.yml +485 -0
  91. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/triggers_an_action_on_a_compute_resource.yml +266 -0
  92. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/triggers_an_action_on_a_network_resource.yml +266 -0
  93. data/spec/cassettes/Occi_Api_Client_ClientHttp/using_media_type_text_plain/triggers_an_action_on_a_storage_resource.yml +266 -0
  94. data/spec/occi/api/client/client_amqp_spec.rb +158 -0
  95. data/spec/occi/api/client/client_http_spec.rb +292 -0
  96. data/spec/occi/api/client/http/authn_utils_spec.rb +55 -0
  97. data/spec/occi/api/client/http/httparty_fix_spec.rb +0 -0
  98. data/spec/occi/api/client/http/net_http_fix_spec.rb +0 -0
  99. data/spec/occi/api/client/http/rocci-cred-cert.pem +3 -0
  100. data/spec/occi/api/client/http/rocci-cred-key-jruby.pem +3 -0
  101. data/spec/occi/api/client/http/rocci-cred-key.pem +3 -0
  102. data/spec/occi/api/client/http/rocci-cred.p12 +0 -0
  103. data/spec/occi/api/dsl_spec.rb +21 -0
  104. data/spec/spec_helper.rb +38 -0
  105. metadata +379 -0
@@ -0,0 +1,266 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: head
5
+ uri: https://localhost:3300/
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - text/plain,text/occi;q=0.2
12
+ response:
13
+ status:
14
+ code: 200
15
+ message: OK
16
+ headers:
17
+ Date:
18
+ - Thu, 10 Jan 2013 17:44:39 GMT
19
+ Server:
20
+ - Apache/2.2.20 (Ubuntu)
21
+ X-Powered-By:
22
+ - Phusion Passenger (mod_rails/mod_rack) 3.0.12
23
+ X-Frame-Options:
24
+ - sameorigin
25
+ X-Xss-Protection:
26
+ - 1; mode=block
27
+ Accept:
28
+ - application/occi+json,application/json,text/plain,text/uri-list,application/xml,text/xml,application/occi+xml,text/occi
29
+ Set-Cookie:
30
+ - GRIDHTTP_PASSCODE=ec9b4b21351052e5aPTUJs; domain=localhost; path=/;
31
+ secure
32
+ - rack.session=BAh7B0kiD3Nlc3Npb25faWQGOgZFRiJFZTIyZmM5ZmI2OTliY2JiZWQyMjYz%0AN2IyNTQ3NjMyMDkxYTFkNWVhOGIwYjVkYTNhYTllMTYyYjdkZTZiMzhkY0ki%0ADXRyYWNraW5nBjsARnsISSIUSFRUUF9VU0VSX0FHRU5UBjsARiItZGEzOWEz%0AZWU1ZTZiNGIwZDMyNTViZmVmOTU2MDE4OTBhZmQ4MDcwOUkiGUhUVFBfQUND%0ARVBUX0VOQ09ESU5HBjsARiItZGEzOWEzZWU1ZTZiNGIwZDMyNTViZmVmOTU2%0AMDE4OTBhZmQ4MDcwOUkiGUhUVFBfQUNDRVBUX0xBTkdVQUdFBjsARiItZGEz%0AOWEzZWU1ZTZiNGIwZDMyNTViZmVmOTU2MDE4OTBhZmQ4MDcwOQ%3D%3D%0A--24c9906d0e0c02c6976b065151f161a7e299022a;
33
+ path=/; HttpOnly
34
+ Content-Length:
35
+ - '294'
36
+ Status:
37
+ - '200'
38
+ Vary:
39
+ - Accept-Encoding
40
+ Content-Type:
41
+ - text/plain;charset=utf-8
42
+ body:
43
+ encoding: US-ASCII
44
+ string: ''
45
+ http_version:
46
+ recorded_at: Thu, 10 Jan 2013 17:44:39 GMT
47
+ - request:
48
+ method: head
49
+ uri: https://localhost:3300/
50
+ body:
51
+ encoding: US-ASCII
52
+ string: ''
53
+ headers:
54
+ Accept:
55
+ - text/plain,text/occi
56
+ response:
57
+ status:
58
+ code: 200
59
+ message: OK
60
+ headers:
61
+ Date:
62
+ - Thu, 10 Jan 2013 17:45:40 GMT
63
+ Server:
64
+ - Apache/2.2.20 (Ubuntu)
65
+ X-Powered-By:
66
+ - Phusion Passenger (mod_rails/mod_rack) 3.0.12
67
+ X-Frame-Options:
68
+ - sameorigin
69
+ X-Xss-Protection:
70
+ - 1; mode=block
71
+ Accept:
72
+ - application/occi+json,application/json,text/plain,text/uri-list,application/xml,text/xml,application/occi+xml,text/occi
73
+ Set-Cookie:
74
+ - GRIDHTTP_PASSCODE=e9fb827653199d90pFSa8y; domain=localhost; path=/;
75
+ secure
76
+ - rack.session=BAh7B0kiD3Nlc3Npb25faWQGOgZFRiJFODk1MzRhYjkzM2ZiNWE4MDRlMjY4%0ANzJkMWJjMTFmM2QwNTczZjQ0YjcwMDBhNzA4NDNhOGFmMjMzNmQzODI3YUki%0ADXRyYWNraW5nBjsARnsISSIUSFRUUF9VU0VSX0FHRU5UBjsARiItZGEzOWEz%0AZWU1ZTZiNGIwZDMyNTViZmVmOTU2MDE4OTBhZmQ4MDcwOUkiGUhUVFBfQUND%0ARVBUX0VOQ09ESU5HBjsARiItZGEzOWEzZWU1ZTZiNGIwZDMyNTViZmVmOTU2%0AMDE4OTBhZmQ4MDcwOUkiGUhUVFBfQUNDRVBUX0xBTkdVQUdFBjsARiItZGEz%0AOWEzZWU1ZTZiNGIwZDMyNTViZmVmOTU2MDE4OTBhZmQ4MDcwOQ%3D%3D%0A--6f2afe0e2de13a87352442f5d21698d604c885da;
77
+ path=/; HttpOnly
78
+ Content-Length:
79
+ - '294'
80
+ Status:
81
+ - '200'
82
+ Vary:
83
+ - Accept-Encoding
84
+ Content-Type:
85
+ - text/plain;charset=utf-8
86
+ body:
87
+ encoding: US-ASCII
88
+ string: ''
89
+ http_version:
90
+ recorded_at: Thu, 10 Jan 2013 17:45:40 GMT
91
+ - request:
92
+ method: get
93
+ uri: https://localhost:3300/-/
94
+ body:
95
+ encoding: US-ASCII
96
+ string: ''
97
+ headers:
98
+ Accept:
99
+ - text/plain,text/occi
100
+ response:
101
+ status:
102
+ code: 200
103
+ message: OK
104
+ headers:
105
+ Date:
106
+ - Thu, 10 Jan 2013 17:45:40 GMT
107
+ Server:
108
+ - Apache/2.2.20 (Ubuntu)
109
+ X-Powered-By:
110
+ - Phusion Passenger (mod_rails/mod_rack) 3.0.12
111
+ X-Frame-Options:
112
+ - sameorigin
113
+ X-Xss-Protection:
114
+ - 1; mode=block
115
+ Accept:
116
+ - application/occi+json,application/json,text/plain,text/uri-list,application/xml,text/xml,application/occi+xml,text/occi
117
+ Set-Cookie:
118
+ - GRIDHTTP_PASSCODE=4f7da7d7759c4390vaC0ht; domain=localhost; path=/;
119
+ secure
120
+ - rack.session=BAh7B0kiD3Nlc3Npb25faWQGOgZFRiJFMzliYTUwNjE5NDI0OGFkZTMzYzk2%0AOGU0NzdiZGMzNGRkNzdjZjgyYjY0OTlkNzg4ZWRlMjllMmNmMmFlMjIwM0ki%0ADXRyYWNraW5nBjsARnsISSIUSFRUUF9VU0VSX0FHRU5UBjsARiItZGEzOWEz%0AZWU1ZTZiNGIwZDMyNTViZmVmOTU2MDE4OTBhZmQ4MDcwOUkiGUhUVFBfQUND%0ARVBUX0VOQ09ESU5HBjsARiItZGEzOWEzZWU1ZTZiNGIwZDMyNTViZmVmOTU2%0AMDE4OTBhZmQ4MDcwOUkiGUhUVFBfQUNDRVBUX0xBTkdVQUdFBjsARiItZGEz%0AOWEzZWU1ZTZiNGIwZDMyNTViZmVmOTU2MDE4OTBhZmQ4MDcwOQ%3D%3D%0A--43381684d3f6e45af84c568e7cbb1ce79649e1a3;
121
+ path=/; HttpOnly
122
+ Content-Length:
123
+ - '8975'
124
+ Status:
125
+ - '200'
126
+ Vary:
127
+ - Accept-Encoding
128
+ Content-Type:
129
+ - text/plain;charset=utf-8
130
+ body:
131
+ encoding: US-ASCII
132
+ string: ! 'Category: entity;scheme="http://schemas.ogf.org/occi/core#";class="kind";title="Entity";location="/entity/";attributes="occi.core.id
133
+ occi.core.title"
134
+
135
+ Category: resource;scheme="http://schemas.ogf.org/occi/core#";class="kind";title="Resource";rel="http://schemas.ogf.org/occi/core#entity";location="/resource/";attributes="occi.core.summary"
136
+
137
+ Category: link;scheme="http://schemas.ogf.org/occi/core#";class="kind";title="Link";rel="http://schemas.ogf.org/occi/core#entity";location="/link/";attributes="occi.core.target
138
+ occi.core.source"
139
+
140
+ Category: compute;scheme="http://schemas.ogf.org/occi/infrastructure#";class="kind";title="Compute
141
+ Resource";rel="http://schemas.ogf.org/occi/core#resource";location="/compute/";attributes="occi.compute.architecture
142
+ occi.compute.cores occi.compute.hostname occi.compute.speed occi.compute.memory
143
+ occi.compute.state";actions="http://schemas.ogf.org/occi/infrastructure/compute/action#start
144
+ http://schemas.ogf.org/occi/infrastructure/compute/action#stop http://schemas.ogf.org/occi/infrastructure/compute/action#restart
145
+ http://schemas.ogf.org/occi/infrastructure/compute/action#suspend"
146
+
147
+ Category: storagelink;scheme="http://schemas.ogf.org/occi/infrastructure#";class="kind";title="Storage
148
+ Link";rel="http://schemas.ogf.org/occi/core#link";location="/storagelink/";attributes="occi.storagelink.deviceid
149
+ occi.storagelink.mountpoint occi.storagelink.state"
150
+
151
+ Category: network;scheme="http://schemas.ogf.org/occi/infrastructure#";class="kind";title="Network
152
+ Resource";rel="http://schemas.ogf.org/occi/core#resource";location="/network/";attributes="occi.network.vlan
153
+ occi.network.label occi.network.state org.opennebula.network.id org.opennebula.network.bridge
154
+ org.opennebula.network.vlan org.opennebula.network.phydev org.opennebula.network.ip_start
155
+ org.opennebula.network.ip_end";actions="http://schemas.ogf.org/occi/infrastructure/network/action#up
156
+ http://schemas.ogf.org/occi/infrastructure/network/action#down"
157
+
158
+ Category: storage;scheme="http://schemas.ogf.org/occi/infrastructure#";class="kind";title="Storage
159
+ Resource";rel="http://schemas.ogf.org/occi/core#resource";location="/storage/";attributes="occi.storage.size
160
+ occi.storage.state org.opennebula.storage.id org.opennebula.storage.type org.opennebula.storage.persistent
161
+ org.opennebula.storage.dev_prefix org.opennebula.storage.bus org.opennebula.storage.driver
162
+ org.opennebula.storage.fstype";actions="http://schemas.ogf.org/occi/infrastructure/storage/action#online
163
+ http://schemas.ogf.org/occi/infrastructure/storage/action#offline http://schemas.ogf.org/occi/infrastructure/storage/action#backup
164
+ http://schemas.ogf.org/occi/infrastructure/storage/action#snapshot http://schemas.ogf.org/occi/infrastructure/storage/action#resize"
165
+
166
+ Category: networkinterface;scheme="http://schemas.ogf.org/occi/infrastructure#";class="kind";title="Networkinterface";rel="http://schemas.ogf.org/occi/core#link";location="/networkinterface/";attributes="occi.networkinterface.interface
167
+ occi.networkinterface.mac occi.networkinterface.state"
168
+
169
+ Category: console;scheme="http://schemas.ogf.org/occi/infrastructure/compute#";class="kind";title="Link
170
+ to the VM''s console";rel="http://schemas.ogf.org/occi/core#link";location="/console/"
171
+
172
+ Category: os_tpl;scheme="http://schemas.ogf.org/occi/infrastructure#";class="mixin";title="Operating
173
+ System Template";location="/mixins/os_tpl/"
174
+
175
+ Category: ipnetwork;scheme="http://schemas.ogf.org/occi/infrastructure/network#";class="mixin";title="IP
176
+ Network Mixin";location="/mixins/ipnetwork/";attributes="occi.network.address
177
+ occi.network.gateway occi.network.allocation occi.network.state"
178
+
179
+ Category: ipnetworkinterface;scheme="http://schemas.ogf.org/occi/infrastructure/networkinterface#";class="mixin";title="IP
180
+ Networkinterface Mixin";location="/mixins/ipnetworkinterface/";attributes="occi.networkinterface.address
181
+ occi.networkinterface.gateway occi.networkinterface.allocation occi.networkinterface.state"
182
+
183
+ Category: resource_tpl;scheme="http://schemas.ogf.org/occi/infrastructure#";class="mixin";title="Resource
184
+ Template";location="/mixins/resource_tpl/"
185
+
186
+ Category: compute;scheme="http://opennebula.org/occi/infrastructure#";class="mixin";title="OpenNebula
187
+ specific Compute attributes";location="/mixins/compute/";attributes="org.opennebula.compute.cpu
188
+ org.opennebula.compute.kernel org.opennebula.compute.initrd org.opennebula.compute.root
189
+ org.opennebula.compute.kernel_cmd org.opennebula.compute.bootloader org.opennebula.compute.boot"
190
+
191
+ Category: storagelink;scheme="http://opennebula.org/occi/infrastructure#";class="mixin";title="OpenNebula
192
+ specific Storagelink attributes";location="/mixins/storagelink/";attributes="org.opennebula.storagelink.bus
193
+ org.opennebula.storagelink.driver"
194
+
195
+ Category: network;scheme="http://opennebula.org/occi/infrastructure#";class="mixin";title="OpenNebula
196
+ specific Network attributes";location="/mixins/network/";attributes="org.opennebula.network.id
197
+ org.opennebula.network.bridge org.opennebula.network.vlan org.opennebula.network.phydev
198
+ org.opennebula.network.ip_start org.opennebula.network.ip_end"
199
+
200
+ Category: storage;scheme="http://opennebula.org/occi/infrastructure#";class="mixin";title="OpenNebula
201
+ specific Storage attributes";location="/mixins/storage/";attributes="org.opennebula.storage.id
202
+ org.opennebula.storage.type org.opennebula.storage.persistent org.opennebula.storage.dev_prefix
203
+ org.opennebula.storage.bus org.opennebula.storage.driver org.opennebula.storage.fstype"
204
+
205
+ Category: networkinterface;scheme="http://opennebula.org/occi/infrastructure#";class="mixin";title="OpenNebula
206
+ specific Networkinterface attributes";location="/mixins/networkinterface/";attributes="org.opennebula.networkinterface.bridge
207
+ org.opennebula.networkinterface.script org.opennebula.networkinterface.model
208
+ org.opennebula.networkinterface.white_ports_tcp org.opennebula.networkinterface.black_ports_tcp
209
+ org.opennebula.networkinterface.white_ports_udp org.opennebula.networkinterface.black_ports_udp
210
+ org.opennebula.networkinterface.icmp"
211
+
212
+ Category: large;scheme="http://occi.localhost:3300/occi/infrastructure/resource_tpl#";class="mixin";title="Large
213
+ Instance";rel="http://schemas.ogf.org/occi/infrastructure#resource_tpl";location="/mixins/large/";attributes="occi.compute.architecture
214
+ occi.compute.cores occi.compute.speed occi.compute.memory"
215
+
216
+ Category: extra_large;scheme="http://occi.localhost:3300/occi/infrastructure/resource_tpl#";class="mixin";title="Extra
217
+ Large Instance";rel="http://schemas.ogf.org/occi/infrastructure#resource_tpl";location="/mixins/extra_large/";attributes="occi.compute.architecture
218
+ occi.compute.cores occi.compute.speed occi.compute.memory"
219
+
220
+ Category: medium;scheme="http://occi.localhost:3300/occi/infrastructure/resource_tpl#";class="mixin";title="Medium
221
+ Instance";rel="http://schemas.ogf.org/occi/infrastructure#resource_tpl";location="/mixins/medium/";attributes="occi.compute.architecture
222
+ occi.compute.cores occi.compute.speed occi.compute.memory"
223
+
224
+ Category: small;scheme="http://occi.localhost:3300/occi/infrastructure/resource_tpl#";class="mixin";title="Small
225
+ Instance";rel="http://schemas.ogf.org/occi/infrastructure#resource_tpl";location="/mixins/small/";attributes="occi.compute.architecture
226
+ occi.compute.cores occi.compute.speed occi.compute.memory"
227
+
228
+ Category: mytesttemplate;scheme="http://occi.localhost:3300/occi/infrastructure/os_tpl#";class="mixin";title="MyTestTemplate";rel="http://schemas.ogf.org/occi/infrastructure#os_tpl";location="/mixins/mytesttemplate/"
229
+
230
+ Category: start;scheme="http://schemas.ogf.org/occi/infrastructure/compute/action#";class="action";title="Start
231
+ Compute instance"
232
+
233
+ Category: stop;scheme="http://schemas.ogf.org/occi/infrastructure/compute/action#";class="action";title="Stop
234
+ Compute instance";attributes="method"
235
+
236
+ Category: restart;scheme="http://schemas.ogf.org/occi/infrastructure/compute/action#";class="action";title="Restart
237
+ Compute instance";attributes="method"
238
+
239
+ Category: suspend;scheme="http://schemas.ogf.org/occi/infrastructure/compute/action#";class="action";title="Suspend
240
+ Compute instance";attributes="method"
241
+
242
+ Category: up;scheme="http://schemas.ogf.org/occi/infrastructure/network/action#";class="action";title="Activate
243
+ network"
244
+
245
+ Category: down;scheme="http://schemas.ogf.org/occi/infrastructure/network/action#";class="action";title="Activate
246
+ network"
247
+
248
+ Category: online;scheme="http://schemas.ogf.org/occi/infrastructure/storage/action#";class="action";title="Activate
249
+ Storage"
250
+
251
+ Category: offline;scheme="http://schemas.ogf.org/occi/infrastructure/storage/action#";class="action";title="Deactivate
252
+ Storage"
253
+
254
+ Category: backup;scheme="http://schemas.ogf.org/occi/infrastructure/storage/action#";class="action";title="Backup
255
+ Storage"
256
+
257
+ Category: snapshot;scheme="http://schemas.ogf.org/occi/infrastructure/storage/action#";class="action";title="Snapshot
258
+ Storage"
259
+
260
+ Category: resize;scheme="http://schemas.ogf.org/occi/infrastructure/storage/action#";class="action";title="Resize
261
+ Storage";attributes="size"
262
+
263
+ '
264
+ http_version:
265
+ recorded_at: Thu, 10 Jan 2013 17:45:41 GMT
266
+ recorded_with: VCR 2.4.0
@@ -0,0 +1,158 @@
1
+ require "rspec"
2
+
3
+ #Todo mock the amqp messages
4
+
5
+ module Occi
6
+ module Api
7
+ module Client
8
+
9
+ describe ClientAmqp do
10
+
11
+ context "using media type application/occi+json" do
12
+
13
+ it "does something"
14
+
15
+ end
16
+
17
+ context "using media type text/plain" do
18
+
19
+ it "does something"
20
+
21
+ end
22
+
23
+ =begin
24
+ before(:all) do
25
+ @client = Occi::Api::Client::ClientAmqp.new({
26
+ :endpoint => "http://localhost:9292/",
27
+ :auth => { :type => "none" },
28
+ :log => { :out => STDERR, :level => Occi::Log::WARN, :logger => nil },
29
+ :media_type => "application/occi+json"
30
+ })
31
+ end
32
+
33
+ it "initialize and connect client" do
34
+ @client.connected.should be_true
35
+
36
+ @client.model.actions .should have_at_least(1).actions
37
+ @client.model.kinds .should have_at_least(3).kinds
38
+ @client.model.mixins .should have_at_least(1).mixins
39
+ @client.model.links .should be_empty
40
+ @client.model.resources.should be_empty
41
+
42
+ end
43
+
44
+ it "create compute" do
45
+ res = Occi::Infrastructure::Compute.new
46
+ res.title = "MyComputeResource1"
47
+ res.mixins << @client.find_mixin('small', "resource_tpl")
48
+ res.mixins << @client.find_mixin('my_os', "os_tpl")
49
+ #
50
+ uri_new = @client.create res
51
+ uri_new.should include('/compute/')
52
+ @client.last_response_status.should == 201
53
+
54
+ res.title = "MyComputeResource2"
55
+ uri_new = @client.create res
56
+ uri_new.should include('/compute/')
57
+ @client.last_response_status.should == 201
58
+
59
+ end
60
+
61
+ it "list /" do
62
+ list = @client.list
63
+ list.should have_at_least(1).list
64
+ end
65
+
66
+ it "list compute" do
67
+ list = @client.list "compute"
68
+ list.should have_at_least(1).list
69
+ end
70
+
71
+ it "describe /" do
72
+ description = @client.describe
73
+
74
+ description[0].resources.should have_at_least(1).resources
75
+ end
76
+
77
+ it "describe compute" do
78
+ description = @client.describe "compute"
79
+
80
+ description[0].resources.should have_at_least(1).resources
81
+ end
82
+
83
+ it "describe compute/uuid" do
84
+ list = @client.list "compute"
85
+ list.should have_at_least(1).list
86
+
87
+ compute = list.first
88
+
89
+ description = @client.describe compute
90
+
91
+ description[0].resources.should have_at_least(1).resources
92
+ resource = description[0].resources.first
93
+
94
+ resource_type_identifier = @client.endpoint.chomp('/') + resource.kind.location + resource.id
95
+ resource_type_identifier.should == compute.to_s
96
+ end
97
+
98
+ it "trigger compute stop" do
99
+ list = @client.list "compute"
100
+ list.should have_at_least(1).list
101
+
102
+ list.each do |key, value|
103
+ description = @client.describe key
104
+ @compute = key
105
+ @resource = description[0].resources.first
106
+
107
+ if @resource.attributes.occi.compute.state == "active"
108
+ break
109
+ end
110
+ end
111
+
112
+ @resource.actions.each do |key , value|
113
+ if key.term == "stop"
114
+ @action = key
115
+ break
116
+ end
117
+ end
118
+
119
+ @action.should_not be_nil, "action is nil"
120
+ @action.term.should == "stop"
121
+
122
+ @client.trigger(@compute, @action.to_s)
123
+
124
+ description = @client.describe @compute
125
+ @resource = description[0].resources.first
126
+
127
+ @resource.attributes.occi.compute.state.should == "inactive"
128
+ end
129
+
130
+ it "delete compute/uuid" do
131
+ list = @client.list "compute"
132
+ list_count = list.count
133
+ list_count.should >= 1
134
+
135
+ compute = list.first
136
+
137
+ response = @client.delete compute
138
+ response.should == true
139
+ @client.last_response_status.should == 200
140
+
141
+ list = @client.list "compute"
142
+ list.count.should < list_count
143
+ end
144
+
145
+ it "delete /" do
146
+ response = @client.delete "/"
147
+ response.should == true
148
+ @client.last_response_status.should == 200
149
+
150
+ list = @client.list "compute"
151
+ list.count.should == 0
152
+ end
153
+ =end
154
+ end
155
+
156
+ end
157
+ end
158
+ end