misty 1.4.0 → 1.5.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.
- checksums.yaml +4 -4
- data/README.md +87 -88
- data/lib/misty.rb +115 -1
- data/lib/misty/auth/catalog.rb +38 -0
- data/lib/misty/auth/catalog/v2.rb +15 -0
- data/lib/misty/auth/catalog/v3.rb +15 -0
- data/lib/misty/auth/token.rb +70 -0
- data/lib/misty/auth/token/v2.rb +63 -0
- data/lib/misty/auth/token/v3.rb +90 -0
- data/lib/misty/cloud.rb +74 -15
- data/lib/misty/config.rb +37 -43
- data/lib/misty/errors.rb +25 -5
- data/lib/misty/helper.rb +26 -0
- data/lib/misty/http/header.rb +3 -6
- data/lib/misty/http/method_builder.rb +2 -2
- data/lib/misty/http/request.rb +3 -3
- data/lib/misty/microversion.rb +12 -1
- data/lib/misty/misty.rb +7 -62
- data/lib/misty/openstack.rb +39 -0
- data/lib/misty/openstack/{aodh → api/aodh}/aodh_v2.rb +1 -1
- data/lib/misty/openstack/api/aodh/v2.rb +19 -0
- data/lib/misty/openstack/api/barbican/barbican_v1.rb +42 -0
- data/lib/misty/openstack/api/barbican/v1.rb +19 -0
- data/lib/misty/openstack/api/blazar/blazar_v1.rb +16 -0
- data/lib/misty/openstack/api/blazar/v1.rb +19 -0
- data/lib/misty/openstack/{ceilometer → api/ceilometer}/ceilometer_v2.rb +1 -1
- data/lib/misty/openstack/api/ceilometer/v2.rb +19 -0
- data/lib/misty/openstack/{cinder → api/cinder}/cinder_v1.rb +1 -1
- data/lib/misty/openstack/{cinder → api/cinder}/cinder_v2.rb +3 -3
- data/lib/misty/openstack/{cinder → api/cinder}/cinder_v3.rb +7 -4
- data/lib/misty/openstack/api/cinder/v1.rb +23 -0
- data/lib/misty/openstack/api/cinder/v2.rb +24 -0
- data/lib/misty/openstack/api/cinder/v3.rb +29 -0
- data/lib/misty/openstack/{designate → api/designate}/designate_v2.rb +2 -2
- data/lib/misty/openstack/api/designate/v2.rb +19 -0
- data/lib/misty/openstack/{freezer → api/freezer}/freezer_v1.rb +2 -2
- data/lib/misty/openstack/api/freezer/v1.rb +19 -0
- data/lib/misty/openstack/{glance → api/glance}/glance_v1.rb +1 -1
- data/lib/misty/openstack/{glance → api/glance}/glance_v2.rb +1 -1
- data/lib/misty/openstack/api/glance/v1.rb +19 -0
- data/lib/misty/openstack/api/glance/v2.rb +24 -0
- data/lib/misty/openstack/api/gnocchi/gnocchi_v1.rb +39 -0
- data/lib/misty/openstack/api/gnocchi/v1.rb +19 -0
- data/lib/misty/openstack/{heat → api/heat}/heat_v1.rb +1 -1
- data/lib/misty/openstack/api/heat/v1.rb +23 -0
- data/lib/misty/openstack/{ironic → api/ironic}/ironic_v1.rb +8 -2
- data/lib/misty/openstack/api/ironic/v1.rb +25 -0
- data/lib/misty/openstack/{karbor → api/karbor}/karbor_v1.rb +2 -2
- data/lib/misty/openstack/api/karbor/v1.rb +19 -0
- data/lib/misty/openstack/{keystone → api/keystone}/keystone_v2_0.rb +1 -1
- data/lib/misty/openstack/api/keystone/keystone_v2_0_ext.rb +14 -0
- data/lib/misty/openstack/{keystone → api/keystone}/keystone_v3.rb +35 -3
- data/lib/misty/openstack/{keystone → api/keystone}/keystone_v3_ext.rb +7 -9
- data/lib/misty/openstack/api/keystone/v2_0.rb +23 -0
- data/lib/misty/openstack/api/keystone/v3.rb +23 -0
- data/lib/misty/openstack/{magnum → api/magnum}/magnum_v1.rb +2 -2
- data/lib/misty/openstack/api/magnum/v1.rb +21 -0
- data/lib/misty/openstack/{manila → api/manila}/manila_v2.rb +7 -3
- data/lib/misty/openstack/api/manila/v2.rb +25 -0
- data/lib/misty/openstack/api/masakari/masakari_v1_0.rb +22 -0
- data/lib/misty/openstack/api/masakari/v1_0.rb +19 -0
- data/lib/misty/openstack/api/mistral/mistral_v2.rb +44 -0
- data/lib/misty/openstack/api/mistral/v2.rb +19 -0
- data/lib/misty/openstack/api/monasca/monasca_v2_0.rb +28 -0
- data/lib/misty/openstack/api/monasca/v2_0.rb +19 -0
- data/lib/misty/openstack/{murano → api/murano}/murano_v1.rb +1 -1
- data/lib/misty/openstack/api/murano/v1.rb +19 -0
- data/lib/misty/openstack/{neutron → api/neutron}/neutron_v2_0.rb +11 -12
- data/lib/misty/openstack/api/neutron/v2_0.rb +19 -0
- data/lib/misty/openstack/{nova → api/nova}/nova_v2_1.rb +1 -2
- data/lib/misty/openstack/api/nova/v2_1.rb +33 -0
- data/lib/misty/openstack/{octavia → api/octavia}/octavia_v2_0.rb +4 -3
- data/lib/misty/openstack/api/octavia/v2_0.rb +19 -0
- data/lib/misty/openstack/api/panko/panko_v2.rb +14 -0
- data/lib/misty/openstack/api/panko/v2.rb +19 -0
- data/lib/misty/openstack/api/placement/placement_v2_1.rb +50 -0
- data/lib/misty/openstack/api/placement/v2_1.rb +21 -0
- data/lib/misty/openstack/{sahara → api/sahara}/sahara_v1_1.rb +2 -2
- data/lib/misty/openstack/api/sahara/v1_1.rb +19 -0
- data/lib/misty/openstack/{searchlight → api/searchlight}/searchlight_v1.rb +2 -2
- data/lib/misty/openstack/api/searchlight/v1.rb +19 -0
- data/lib/misty/openstack/{senlin → api/senlin}/senlin_v1.rb +2 -2
- data/lib/misty/openstack/api/senlin/v1.rb +19 -0
- data/lib/misty/openstack/{swift → api/swift}/swift_v1.rb +2 -2
- data/lib/misty/openstack/api/swift/v1.rb +34 -0
- data/lib/misty/openstack/{tacker → api/tacker}/tacker_v1_0.rb +2 -2
- data/lib/misty/openstack/api/tacker/v1_0.rb +19 -0
- data/lib/misty/openstack/{trove → api/trove}/trove_v1_0.rb +23 -8
- data/lib/misty/openstack/api/trove/v1_0.rb +19 -0
- data/lib/misty/openstack/api/watcher/v1.rb +19 -0
- data/lib/misty/openstack/api/watcher/watcher_v1.rb +38 -0
- data/lib/misty/openstack/api/zaqar/v2.rb +19 -0
- data/lib/misty/openstack/{zaqar → api/zaqar}/zaqar_v2.rb +2 -2
- data/lib/misty/openstack/api/zun/v1.rb +19 -0
- data/lib/misty/openstack/api/zun/zun_v1.rb +55 -0
- data/lib/misty/openstack/service.rb +18 -15
- data/lib/misty/openstack/service_pack.rb +18 -0
- data/lib/misty/service.rb +4 -6
- data/lib/misty/services.rb +11 -10
- data/lib/misty/version.rb +1 -1
- data/test/integration/compute_test.rb +2 -2
- data/test/integration/{networking_test.rb → network_test.rb} +10 -10
- data/test/integration/orchestration_test.rb +4 -4
- data/test/integration/vcr/{networking_using_neutron_v2_0.yml → network_using_neutron_v2_0.yml} +0 -0
- data/test/unit/auth/catalog_test.rb +99 -0
- data/test/unit/{auth_test.rb → auth/token_test.rb} +79 -45
- data/test/unit/cloud/config_test.rb +79 -41
- data/test/unit/cloud/requests_test.rb +6 -6
- data/test/unit/cloud/services_test.rb +23 -23
- data/test/unit/cloud_test.rb +10 -10
- data/test/unit/http/method_builder_test.rb +13 -23
- data/test/unit/http/request_test.rb +1 -1
- data/test/unit/microversion_test.rb +13 -16
- data/test/unit/misty_test.rb +51 -49
- data/test/unit/openstack/APIs_test.rb +5 -9
- data/test/unit/openstack/extension_test.rb +6 -6
- data/test/unit/openstack/service_test.rb +2 -10
- data/test/unit/service_helper.rb +3 -8
- data/test/unit/services_test.rb +5 -5
- metadata +91 -66
- data/lib/misty/auth.rb +0 -91
- data/lib/misty/auth/auth_v2.rb +0 -65
- data/lib/misty/auth/auth_v3.rb +0 -89
- data/lib/misty/autoload.rb +0 -99
- data/lib/misty/client_pack.rb +0 -16
- data/lib/misty/openstack/aodh/v2.rb +0 -17
- data/lib/misty/openstack/ceilometer/v2.rb +0 -17
- data/lib/misty/openstack/cinder/v1.rb +0 -21
- data/lib/misty/openstack/cinder/v2.rb +0 -22
- data/lib/misty/openstack/cinder/v3.rb +0 -31
- data/lib/misty/openstack/designate/v2.rb +0 -17
- data/lib/misty/openstack/freezer/v1.rb +0 -17
- data/lib/misty/openstack/glance/v1.rb +0 -17
- data/lib/misty/openstack/glance/v2.rb +0 -17
- data/lib/misty/openstack/heat/v1.rb +0 -21
- data/lib/misty/openstack/ironic/v1.rb +0 -27
- data/lib/misty/openstack/karbor/v1.rb +0 -17
- data/lib/misty/openstack/keystone/keystone_v2_0_ext.rb +0 -18
- data/lib/misty/openstack/keystone/v2_0.rb +0 -21
- data/lib/misty/openstack/keystone/v3.rb +0 -21
- data/lib/misty/openstack/magnum/v1.rb +0 -23
- data/lib/misty/openstack/manila/v2.rb +0 -27
- data/lib/misty/openstack/murano/v1.rb +0 -17
- data/lib/misty/openstack/neutron/v2_0.rb +0 -17
- data/lib/misty/openstack/nova/v2_1.rb +0 -42
- data/lib/misty/openstack/octavia/v2_0.rb +0 -17
- data/lib/misty/openstack/sahara/v1_1.rb +0 -17
- data/lib/misty/openstack/searchlight/v1.rb +0 -17
- data/lib/misty/openstack/senlin/v1.rb +0 -17
- data/lib/misty/openstack/swift/v1.rb +0 -32
- data/lib/misty/openstack/tacker/v1_0.rb +0 -17
- data/lib/misty/openstack/trove/v1_0.rb +0 -17
- data/lib/misty/openstack/zaqar/v2.rb +0 -17
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0c484478917eb09469e637f0b6c4f3ebe46c977b
|
|
4
|
+
data.tar.gz: c1200a007c58cc7cced9a07fb1e0b4e51e60cc5e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e56315c7dcc72fe5d17e616ce48f0363962344d55e0859fb950f3f0641bb3c8cc5a3673fbd6ced7f835fe51bdce76a9c9a3a43ff35e1ced8218147faae87d147
|
|
7
|
+
data.tar.gz: 34be9722e4a6d4993c749184e0fa7e923ab878ad34a7678612dccba3ca7dc66fd23f0435d658821dbfd47b43292de20f33808bfb299d3dd7a69b7c167ea32058
|
data/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Introduction
|
|
2
2
|
Misty is a HTTP client for OpenStack APIs, aiming to be slick and dynamic.
|
|
3
3
|
|
|
4
|
-
Misty handles OpenStack APIs requests as
|
|
4
|
+
Misty handles OpenStack APIs requests as transparently as possible by:
|
|
5
5
|
* Directly submitting request to Openstack Service endpoints
|
|
6
6
|
* Or by using APIs Schema defined functions which are dynamically extracted from OpenStackAPI reference.
|
|
7
7
|
|
|
@@ -13,18 +13,44 @@ Misty handles OpenStack APIs requests as Transparently as possible by:
|
|
|
13
13
|
* Custom HTTP Methods for special needs
|
|
14
14
|
* And also: Lazy service loading, Low gem dependency (use only Net/HTTP and JSON), Persistent HTTP connections (default since HTTP 1.1 anyway)
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
* Cinder
|
|
18
|
-
v3.44
|
|
19
|
-
* Ironic
|
|
20
|
-
v1.32
|
|
21
|
-
* Magnum
|
|
22
|
-
v1.4
|
|
23
|
-
* Manilla
|
|
24
|
-
v2.40
|
|
25
|
-
* Nova
|
|
26
|
-
v2.60
|
|
16
|
+
## OpenStack Services
|
|
27
17
|
|
|
18
|
+
The current list of Openstack services supported, can be obtained from `Misty.services` is:
|
|
19
|
+
```ruby
|
|
20
|
+
application_catalog: murano, versions: ["v1"]
|
|
21
|
+
alarming: aodh, versions: ["v2"]
|
|
22
|
+
backup: freezer, versions: ["v1"]
|
|
23
|
+
baremetal: ironic, versions: ["v1"], microversion: 1.32
|
|
24
|
+
block_storage: cinder, versions: ["v3", "v2", "v1"], microversion: 3.44
|
|
25
|
+
clustering: senlin, versions: ["v1"]
|
|
26
|
+
compute: nova, versions: ["v2.1"], microversion: 2.60
|
|
27
|
+
container_infrastructure_management: magnum, versions: ["v1"], microversion: 1.4
|
|
28
|
+
container_service: zun, versions: ["v1"]
|
|
29
|
+
data_processing: sahara, versions: ["v1.1"]
|
|
30
|
+
data_protection_orchestration: karbor, versions: ["v1"]
|
|
31
|
+
database: trove, versions: ["v1.0"]
|
|
32
|
+
dns: designate, versions: ["v2"]
|
|
33
|
+
event: panko, versions: ["v2"]
|
|
34
|
+
identity: keystone, versions: ["v3", "v2.0"]
|
|
35
|
+
image: glance, versions: ["v2", "v1"]
|
|
36
|
+
instance_ha: masakari, versions: ["v1.0"]
|
|
37
|
+
key_manager: barbican, versions: ["v1"]
|
|
38
|
+
load_balancer: octavia, versions: ["v2.0"]
|
|
39
|
+
metric: gnocchi, versions: ["v1"]
|
|
40
|
+
messaging: zaqar, versions: ["v2"]
|
|
41
|
+
metering: ceilometer, versions: ["v2"]
|
|
42
|
+
monitoring: monasca, versions: ["v2.0"]
|
|
43
|
+
network: neutron, versions: ["v2.0"]
|
|
44
|
+
nfv_orchestration: tacker, versions: ["v1.0"]
|
|
45
|
+
object_storage: swift, versions: ["v1"]
|
|
46
|
+
orchestration: heat, versions: ["v1"]
|
|
47
|
+
placement: placement, versions: ["v2.1"], microversion: 2.60
|
|
48
|
+
reservation: blazar, versions: ["v1"]
|
|
49
|
+
resource_optimization: watcher, versions: ["v1"]
|
|
50
|
+
search: searchlight, versions: ["v1"]
|
|
51
|
+
shared_file_systems: manila, versions: ["v2"], microversion: 2.40
|
|
52
|
+
workflow: mistral, versions: ["v2"]
|
|
53
|
+
```
|
|
28
54
|
|
|
29
55
|
# How To
|
|
30
56
|
Fetch and install
|
|
@@ -51,10 +77,10 @@ cloud = Misty::Cloud.new(
|
|
|
51
77
|
|
|
52
78
|
```
|
|
53
79
|
servers = cloud.compute.list_servers.body
|
|
54
|
-
networks = cloud.
|
|
80
|
+
networks = cloud.network.list_networks
|
|
55
81
|
first_network_id = networks.body['networks'][0]['id']
|
|
56
|
-
first_network = cloud.
|
|
57
|
-
network = Misty.to_json(:network => {:name => 'misty-example'})
|
|
82
|
+
first_network = cloud.network.show_network_details(first_network_id)
|
|
83
|
+
network = Misty::Helper.to_json(:network => {:name => 'misty-example'})
|
|
58
84
|
cloud.network.create_network(network)
|
|
59
85
|
v1 = cloud.baremetal.show_v1_api
|
|
60
86
|
```
|
|
@@ -93,7 +119,10 @@ cloud.compute.list_servers
|
|
|
93
119
|
```
|
|
94
120
|
|
|
95
121
|
### Authentication
|
|
96
|
-
Openstack Identity service Keystone version 3 is the default, version 2.0, although deprecated, is available.
|
|
122
|
+
Openstack Identity service Keystone version 3 is the default, version 2.0, although deprecated, is also available.
|
|
123
|
+
Keystone v3 can handle v2.0 and v3 for authentications and services.
|
|
124
|
+
V3 relies on the concept of domains and projects while V2 credentials use tenant. Authentication are assumed against v3
|
|
125
|
+
unless a tenant is used in the credentials.
|
|
97
126
|
|
|
98
127
|
#### Parameters
|
|
99
128
|
The following parameters can be used:
|
|
@@ -117,11 +146,6 @@ To authenticate with credentials details:
|
|
|
117
146
|
* `:user_domain` - User domain name
|
|
118
147
|
|
|
119
148
|
##### Keystone v3
|
|
120
|
-
Version 3 relies on the concept of domain name or id to authenticates
|
|
121
|
-
|
|
122
|
-
`Misty::AuthV3` is used by default unless authentication credentials contains a tenant name or id in wich case it
|
|
123
|
-
will use on `Misty::AuthV2`.
|
|
124
|
-
|
|
125
149
|
The credentials are a combination of "id" and "name" used to uniquely identify projects, users and their domains.
|
|
126
150
|
When using only the name, a domain must be specified to guarantee a unique record from the Identity service.
|
|
127
151
|
|
|
@@ -183,98 +207,73 @@ cloud.identity(:api_version => 'v2.0')
|
|
|
183
207
|
|
|
184
208
|
### Global configuration options
|
|
185
209
|
The configuration parameters used to initialize `Misty::Cloud` are global. They are optionals and Misty::Config
|
|
186
|
-
defaults are applied if
|
|
210
|
+
defaults are applied if not specified.
|
|
187
211
|
|
|
188
212
|
* `:auth` - Authentication credentials hash containing 'auth_url' and user context. See `Misty::Auth`.
|
|
189
|
-
* `:content_type` - HTTP responses body format. :json or :hash structures. Default is `Misty::Config::CONTENT_TYPE
|
|
213
|
+
* `:content_type` - HTTP responses body format. :json or :hash structures. Default is `Misty::Config::CONTENT_TYPE` (`:hash`).
|
|
190
214
|
* `:headers` - Hash of extra HTTP headers to be applied to all services
|
|
191
215
|
* `:interface` - Endpoint interface, allowed values are: "public", "internal", "admin".
|
|
192
216
|
* `:log_file` - Log destination, Value is either file path (./misty.log) or IO object (SDOUT). Default is '/dev/null'
|
|
193
217
|
* `:log_level` - Value is Fixnum - Default is 1 (Logger::INFO) - See Logger from Ruby standard Library
|
|
194
|
-
* `:
|
|
195
|
-
Default is `Misty::Config::INTERFACE`
|
|
196
|
-
* `:ssl_verify_mode` - Boolean flag for SSL client verification.
|
|
197
|
-
Default is `Misty::Config::SSL_VERIFY_MODE`
|
|
218
|
+
* `:region` - Alternative Region name. Default is `Misty::Config::REGION` (`'regionOne'`)
|
|
219
|
+
Default is `Misty::Config::INTERFACE` (`'public'`)
|
|
220
|
+
* `:ssl_verify_mode` - Boolean flag for SSL client verification. Applies when URI scheme is SSL ("https://").
|
|
221
|
+
Default is `Misty::Config::SSL_VERIFY_MODE` (`true`)
|
|
198
222
|
See `Misty::Config` for more details
|
|
199
223
|
|
|
224
|
+
### Service and Request levels configuration parameters
|
|
225
|
+
The following parameters which are global defined can also be changed at the service level.
|
|
226
|
+
* `:content_type` - Overridden
|
|
227
|
+
* `:headers` - Cumulative
|
|
228
|
+
* `:interface` - Overridden
|
|
229
|
+
* `:region` - Overridden
|
|
230
|
+
|
|
231
|
+
The following parameters are specific to the service level:
|
|
232
|
+
* `:api_version` - String for specifying Openstack API service version to use. Default is latest supported version.
|
|
233
|
+
* `:base_path` - Allows to force the base path for every URL requests. Default is endpoint's path.
|
|
234
|
+
* `:endpoint` - Overrides service endpoint discovery by providing url.
|
|
235
|
+
* `:service_name` - Provides alternative service name for endpoint discovery.
|
|
236
|
+
Allowed values: `'latest'`, or a version number such as '2.10'
|
|
237
|
+
|
|
238
|
+
The following parameters can be changed at a service's request level.
|
|
239
|
+
* `:content_type` - Overridden
|
|
240
|
+
* `:headers` - Cumulative
|
|
241
|
+
* `:version` - Version to be used when microversion is supported by the service. Default: none
|
|
242
|
+
|
|
200
243
|
### Headers
|
|
201
|
-
Headers are cumulative
|
|
244
|
+
Headers are cumulative when applied at any level, Cloud level, Service level and/or finally at service's request
|
|
245
|
+
level.
|
|
202
246
|
|
|
203
247
|
HTTP headers can effectively be optionally added to any request.
|
|
204
248
|
An Header object must be created and passed as the last parameter of a request.
|
|
205
249
|
|
|
206
|
-
For example for an already initialized cloud:
|
|
207
250
|
```ruby
|
|
208
|
-
|
|
251
|
+
container_header = {
|
|
209
252
|
'x-container-meta-web-listings' => false,
|
|
210
253
|
'x-container-meta-quota-count' => "",
|
|
211
254
|
'x-container-meta-quota-bytes' => nil,
|
|
212
255
|
'x-versions-location' => "",
|
|
213
256
|
'x-container-meta-web-index' => ""
|
|
214
|
-
|
|
215
|
-
openstack.object_storage.create_update_or_delete_container_metadata(container_name, header)
|
|
216
|
-
```
|
|
217
|
-
|
|
218
|
-
### Service and Request levels configuration parameters
|
|
219
|
-
The same parameters used at the global configuration variables can be applied at Service level or at a Request level.
|
|
220
|
-
The global values passed from `Misty::Cloud` level are then overridden at the Service level.
|
|
221
|
-
|
|
222
|
-
The following parameters can be also used:
|
|
223
|
-
* `:api_version` - String for specifying Openstack API service version to use. Default is latest supported version.
|
|
224
|
-
Applies only at service level as it's needed for service creation.
|
|
225
|
-
* `:base_path` - Allows to force the base path for every URL requests Default nil.
|
|
226
|
-
* `:base_url` - Allows to force the base URL for every requests. Default nil.
|
|
227
|
-
* `:version` - Version to be used when microversion is supported by the service. Default: `nil`
|
|
228
|
-
Allowed values: `'latest'`, or a version number such as '2.10'
|
|
257
|
+
}
|
|
229
258
|
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
```ruby
|
|
233
|
-
cloud = Misty::Cloud.new(:auth => { ... }, region_id => 'regionOne', :log_level => 0)
|
|
259
|
+
cloud = Misty::Cloud.new{:auth { ... }}
|
|
260
|
+
cloud.object_storage.create_update_or_delete_container_metadata(container_name, container_header)
|
|
234
261
|
```
|
|
235
262
|
|
|
236
|
-
|
|
237
|
-
|
|
263
|
+
### Examples
|
|
264
|
+
Initialize cloud with different options, and for the identify service, override respective global values
|
|
238
265
|
```ruby
|
|
239
|
-
|
|
240
|
-
Provide service specific option
|
|
241
|
-
cloud.compute => {:version => '2.27'})
|
|
242
|
-
```
|
|
243
|
-
|
|
244
|
-
## Services
|
|
245
|
-
The latest list of supported service can be obtain from `Misty.services`:
|
|
246
|
-
```
|
|
247
|
-
require 'misty'
|
|
248
|
-
puts Misty.services
|
|
249
|
-
=>
|
|
250
|
-
application_catalog: murano, versions: ["v1"]
|
|
251
|
-
alarming: aodh, versions: ["v2"]
|
|
252
|
-
backup: freezer, versions: ["v1"]
|
|
253
|
-
baremetal: ironic, versions: ["v1"], microversion: v1
|
|
254
|
-
block_storage: cinder, versions: ["v3", "v2", "v1"], microversion: v3
|
|
255
|
-
clustering: senlin, versions: ["v1"]
|
|
256
|
-
compute: nova, versions: ["v2.1"], microversion: v2.1
|
|
257
|
-
container_infrastructure_management: magnum, versions: ["v1"], microversion: v1
|
|
258
|
-
data_processing: sahara, versions: ["v1.1"]
|
|
259
|
-
data_protection_orchestration: karbor, versions: ["v1"]
|
|
260
|
-
database: trove, versions: ["v1.0"]
|
|
261
|
-
dns: designate, versions: ["v2"]
|
|
262
|
-
identity: keystone, versions: ["v3", "v2.0"]
|
|
263
|
-
image: glance, versions: ["v2", "v1"]
|
|
264
|
-
load_balancer: octavia, versions: ["v2.0"]
|
|
265
|
-
messaging: zaqar, versions: ["v2"]
|
|
266
|
-
metering: ceilometer, versions: ["v2"]
|
|
267
|
-
networking: neutron, versions: ["v2.0"]
|
|
268
|
-
nfv_orchestration: tacker, versions: ["v1.0"]
|
|
269
|
-
object_storage: swift, versions: ["v1"]
|
|
270
|
-
orchestration: heat, versions: ["v1"]
|
|
271
|
-
search: searchlight, versions: ["v1"]
|
|
272
|
-
shared_file_systems: manila, versions: ["v2"], microversion: v2
|
|
266
|
+
cloud = Misty::Cloud.new(:auth => { ... }, region_id => 'regionOne', :log_level => 0, {identity => {region_id => 'regionTwo', :interface => 'admin'})
|
|
273
267
|
```
|
|
268
|
+
|
|
269
|
+
At Request level, provide specific options like the microversion
|
|
270
|
+
```ruby
|
|
271
|
+
cloud.compute(:version => '2.27', :content_type => :json).list_servers
|
|
272
|
+
```
|
|
274
273
|
|
|
275
274
|
### Service Prefix
|
|
276
275
|
A shorter name can be used to call a service only if it's unique among all services.
|
|
277
|
-
For instance `net` or `network` can be used instead of `
|
|
276
|
+
For instance `net` or `network` can be used instead of `network` because it's not ambiguous.
|
|
278
277
|
Meanwhile `data` doesn't work because it's ambiguous between `data_processing` and `data_protection_orchestration`
|
|
279
278
|
|
|
280
279
|
### Aliases
|
|
@@ -354,7 +353,7 @@ heat_template = {
|
|
|
354
353
|
require 'misty'
|
|
355
354
|
require 'pp'
|
|
356
355
|
cloud = Misty::Cloud.new(:auth => { ... })
|
|
357
|
-
data_heat_template = Misty.to_json(heat_template)
|
|
356
|
+
data_heat_template = Misty::Helper.to_json(heat_template)
|
|
358
357
|
response = cloud.orchestration.create_stack(data_heat_template)
|
|
359
358
|
id = response.body['stack']['id']
|
|
360
359
|
stack = cloud.orchestration.show_stack_details('test_stack', id)
|
|
@@ -381,7 +380,7 @@ pp cloud.compute.versions
|
|
|
381
380
|
|
|
382
381
|
```ruby
|
|
383
382
|
cloud.compute(:version => '2.25')
|
|
384
|
-
data_keypair = Misty.to_json('keypair': {'name': 'admin-keypair'})
|
|
383
|
+
data_keypair = Misty::Helper.to_json('keypair': {'name': 'admin-keypair'})
|
|
385
384
|
admin_keypair = cloud.compute.create_or_import_keypair(data_keypair)
|
|
386
385
|
user_id = admin_keypair.body['keypair']['user_id']
|
|
387
386
|
keypairs = cloud.compute.list_keypairs
|
data/lib/misty.rb
CHANGED
|
@@ -3,6 +3,120 @@ require 'net/http'
|
|
|
3
3
|
require 'time'
|
|
4
4
|
require 'uri'
|
|
5
5
|
require 'misty/misty'
|
|
6
|
-
|
|
6
|
+
|
|
7
|
+
module Misty
|
|
8
|
+
module Auth
|
|
9
|
+
module Token
|
|
10
|
+
autoload :V2, 'misty/auth/token/v2'
|
|
11
|
+
autoload :V3, 'misty/auth/token/v3'
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
module Catalog
|
|
15
|
+
autoload :V2, 'misty/auth/catalog/v2'
|
|
16
|
+
autoload :V3, 'misty/auth/catalog/v3'
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
module Openstack
|
|
21
|
+
module API
|
|
22
|
+
module Aodh
|
|
23
|
+
autoload :V2, 'misty/openstack/api/aodh/v2'
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
module Ceilometer
|
|
27
|
+
autoload :V2, 'misty/openstack/api/ceilometer/v2'
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
module Cinder
|
|
31
|
+
autoload :V1, 'misty/openstack/api/cinder/v1'
|
|
32
|
+
autoload :V2, 'misty/openstack/api/cinder/v2'
|
|
33
|
+
autoload :V3, 'misty/openstack/api/cinder/v3'
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
module Designate
|
|
37
|
+
autoload :V2, 'misty/openstack/api/designate/v2'
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
module Freezer
|
|
41
|
+
autoload :V1, 'misty/openstack/api/freezer/v1'
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
module Glance
|
|
45
|
+
autoload :V1, 'misty/openstack/api/glance/v1'
|
|
46
|
+
autoload :V2, 'misty/openstack/api/glance/v2'
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
module Heat
|
|
50
|
+
autoload :V1, 'misty/openstack/api/heat/v1'
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
module Ironic
|
|
54
|
+
autoload :V1, 'misty/openstack/api/ironic/v1'
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
module Karbor
|
|
58
|
+
autoload :V1, 'misty/openstack/api/karbor/v1'
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
module Keystone
|
|
62
|
+
autoload :V3, 'misty/openstack/api/keystone/v3'
|
|
63
|
+
autoload :V2_0, 'misty/openstack/api/keystone/v2_0'
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
module Magnum
|
|
67
|
+
autoload :V1, 'misty/openstack/api/magnum/v1'
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
module Manila
|
|
71
|
+
autoload :V2, 'misty/openstack/api/manila/v2'
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
module Murano
|
|
75
|
+
autoload :V1, 'misty/openstack/api/murano/v1'
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
module Neutron
|
|
79
|
+
autoload :V2_0, 'misty/openstack/api/neutron/v2_0'
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
module Nova
|
|
83
|
+
autoload :V2_1, 'misty/openstack/api/nova/v2_1'
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
module Octavia
|
|
87
|
+
autoload :V2_0, 'misty/openstack/api/octavia/v2_0'
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
module Sahara
|
|
91
|
+
autoload :V1_1, 'misty/openstack/api/sahara/v1_1'
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
module Searchlight
|
|
95
|
+
autoload :V1, 'misty/openstack/api/searchlight/v1'
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
module Senlin
|
|
99
|
+
autoload :V1, 'misty/openstack/api/senlin/v1'
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
module Swift
|
|
103
|
+
autoload :V1, 'misty/openstack/api/swift/v1'
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
module Tacker
|
|
107
|
+
autoload :V1_0, 'misty/openstack/api/tacker/v1_0'
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
module Trove
|
|
111
|
+
autoload :V1_0, 'misty/openstack/api/trove/v1_0'
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
module Zaqar
|
|
115
|
+
autoload :V2, 'misty/openstack/api/zaqar/v2'
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
|
|
7
121
|
require 'misty/cloud'
|
|
8
122
|
require 'misty/errors'
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
module Misty
|
|
2
|
+
module Auth
|
|
3
|
+
module Catalog
|
|
4
|
+
attr_reader :payload
|
|
5
|
+
|
|
6
|
+
def initialize(payload)
|
|
7
|
+
@payload = payload
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def get_endpoint_url(names, region, interface)
|
|
11
|
+
entry = get_service(names)
|
|
12
|
+
raise ServiceTypeError, 'Endpoint discovery: No service type match' unless entry
|
|
13
|
+
find_url(entry, region, interface)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
private
|
|
17
|
+
|
|
18
|
+
def get_service(names)
|
|
19
|
+
@payload.each do |entry|
|
|
20
|
+
return entry if names.include?(entry['type'])
|
|
21
|
+
end
|
|
22
|
+
nil
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def find_url(service, region, interface)
|
|
26
|
+
if service['endpoints']
|
|
27
|
+
service['endpoints'].each do |endpoint|
|
|
28
|
+
if (url = endpoint_url(endpoint, region, interface))
|
|
29
|
+
return url
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
raise EndpointError, "No endpoint found: service '#{service['type']}', region '#{region}',
|
|
34
|
+
interface '#{interface}'"
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require 'misty/auth/catalog'
|
|
2
|
+
|
|
3
|
+
module Misty
|
|
4
|
+
module Auth
|
|
5
|
+
module Catalog
|
|
6
|
+
class V2
|
|
7
|
+
include Misty::Auth::Catalog
|
|
8
|
+
|
|
9
|
+
def endpoint_url(endpoint, region, interface)
|
|
10
|
+
endpoint["#{interface}URL"] if endpoint['region'] == region && endpoint["#{interface}URL"]
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require 'misty/auth/catalog'
|
|
2
|
+
|
|
3
|
+
module Misty
|
|
4
|
+
module Auth
|
|
5
|
+
module Catalog
|
|
6
|
+
class V3
|
|
7
|
+
include Misty::Auth::Catalog
|
|
8
|
+
|
|
9
|
+
def endpoint_url(endpoint, region, interface)
|
|
10
|
+
endpoint['url'] if endpoint['region'] == region && endpoint['interface'] == interface
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|