abiquo-api 0.1.0 → 0.1.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 +18 -18
- data/lib/abiquo-api.rb +22 -18
- data/lib/abiquo-api/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: de18c834f09d7c9d5de6d66bf6bdeab3cf6411d2
|
4
|
+
data.tar.gz: 3452aabc8d21f916d95d433d4f8a7e13832b007e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3f058fd0c5fa53fb3eb7b18b86dff51c28f36086e5044cceeaf62bfbfa9203119b188ed176af5c797b2b722c4bdc254ac9339e50dc0d60fc1069a565148f1369
|
7
|
+
data.tar.gz: 8dcd5f3d1ff42318a24aec23fac631a665b9f0ebcc0f290abb59f9c072f448dc2087ed09a23d56bfe96003509bc4ab91fc21e1d16aa193593612f64ddbf84b27
|
data/README.md
CHANGED
@@ -68,24 +68,23 @@ abq = AbiquoAPI.new(:abiquo_api_url => 'https://10.60.13.40/api',
|
|
68
68
|
Then you can start browsing the API:
|
69
69
|
|
70
70
|
```ruby
|
71
|
-
l = AbiquoAPI::Link.new(:href => '
|
72
|
-
|
73
|
-
|
71
|
+
l = AbiquoAPI::Link.new(:href => 'cloud/virtualdatacenters',
|
72
|
+
:type => 'application/vnd.abiquo.virtualdatacenters+json',
|
73
|
+
:client => abq)
|
74
74
|
|
75
75
|
l.get
|
76
76
|
```
|
77
77
|
|
78
78
|
## Client object
|
79
79
|
|
80
|
-
The client object contains
|
80
|
+
The client object contains 2 methods that allow API browsing.
|
81
81
|
|
82
|
-
- **
|
83
|
-
- **
|
84
|
-
- **properties.** A hash containing all the system properties in the system. Useful to get default values for some objects (ie. VLAN parameters in VDC creation).
|
82
|
+
- **login** Makes the `login` API call, returning the current user information. From there you can navigate to related objects.
|
83
|
+
- **properties** Makes the `config/properties` call and returns a hash containing all the system properties in the system. Useful to get default values for some objects (ie. VLAN parameters in VDC creation).
|
85
84
|
|
86
85
|
## Link object
|
87
86
|
|
88
|
-
Represents an Abiquo API Link. Issuing
|
87
|
+
Represents an Abiquo API Link. Issuing `get` on them will retrieve link destination. This allows for things like:
|
89
88
|
|
90
89
|
```ruby
|
91
90
|
vapp = vdc.link(:virtualappliances).get.first
|
@@ -107,19 +106,19 @@ This is used to iterate over paginated lists.
|
|
107
106
|
|
108
107
|
```ruby
|
109
108
|
a = AbiquoAPI.new(:abiquo_api_url => 'https://10.60.13.40/api',
|
110
|
-
|
111
|
-
|
109
|
+
:abiquo_username => "admin",
|
110
|
+
:abiquo_password => "xabiquo")
|
112
111
|
```
|
113
112
|
|
114
113
|
|
115
|
-
####
|
114
|
+
#### Login call
|
116
115
|
|
117
116
|
Is the User object returned by the API at login. You can browse the links provided like:
|
118
117
|
|
119
118
|
```ruby
|
120
|
-
a.
|
119
|
+
user = a.login
|
121
120
|
|
122
|
-
vm =
|
121
|
+
vm = user.link(:virtualmachines).get.first
|
123
122
|
|
124
123
|
vm.name
|
125
124
|
=> "ABQ_6b6d9856-c05f-425e-8916-1ff7de1683e3"
|
@@ -134,21 +133,22 @@ vm.id
|
|
134
133
|
|
135
134
|
```ruby
|
136
135
|
a = AbiquoAPI.new(:abiquo_api_url => 'https://10.60.13.40/api',
|
137
|
-
|
138
|
-
|
136
|
+
:abiquo_username => "admin",
|
137
|
+
:abiquo_password => "xabiquo")
|
139
138
|
```
|
140
139
|
|
141
140
|
#### Create a Link object to issue a request
|
142
141
|
|
143
142
|
```ruby
|
144
143
|
l = AbiquoAPI::Link.new(:href => '/api/cloud/virtualdatacenters',
|
145
|
-
|
144
|
+
:type => 'application/vnd.abiquo.virtualdatacenters+json',
|
145
|
+
:client => a)
|
146
146
|
```
|
147
147
|
|
148
148
|
#### Get on the link
|
149
149
|
|
150
150
|
```ruby
|
151
|
-
v =
|
151
|
+
v = l.get.first
|
152
152
|
```
|
153
153
|
|
154
154
|
#### Create a new object
|
@@ -167,7 +167,7 @@ v1.vlan.delete("tag")
|
|
167
167
|
|
168
168
|
```ruby
|
169
169
|
l1 = AbiquoAPI::Link.new(:href => '/api/cloud/virtualdatacenters',
|
170
|
-
|
170
|
+
:type => 'application/vnd.abiquo.virtualdatacenter+json')
|
171
171
|
```
|
172
172
|
|
173
173
|
#### Post data
|
data/lib/abiquo-api.rb
CHANGED
@@ -82,24 +82,13 @@ class AbiquoAPI
|
|
82
82
|
credentials,
|
83
83
|
connection_options)
|
84
84
|
|
85
|
-
api_path = URI.parse(api_url).path
|
86
|
-
|
87
|
-
loginresp = @http_client.request(
|
88
|
-
:expects => [200],
|
89
|
-
:method => 'GET',
|
90
|
-
:path => "#{api_path}/login",
|
91
|
-
:accept => 'application/vnd.abiquo.user+json'
|
92
|
-
)
|
93
|
-
@enterprise = AbiquoAPIClient::Link.new(loginresp['links'].select {|l| l['rel'] == 'enterprise'}.first)
|
94
|
-
@user = AbiquoAPIClient::LinkModel.new(loginresp.merge({:client => self}))
|
95
|
-
|
96
85
|
if options.has_key? :version
|
97
86
|
@version = options[:version][0..2]
|
98
87
|
else
|
99
88
|
@version = @http_client.request(
|
100
89
|
:expects => [200],
|
101
90
|
:method => 'GET',
|
102
|
-
:path => "
|
91
|
+
:path => "version",
|
103
92
|
:accept => 'text/plain'
|
104
93
|
).delete("\n")[0..2]
|
105
94
|
end
|
@@ -107,6 +96,21 @@ class AbiquoAPI
|
|
107
96
|
self
|
108
97
|
end
|
109
98
|
|
99
|
+
##
|
100
|
+
# Performs a `login` call to Abiquo to retrieve
|
101
|
+
# user related info
|
102
|
+
#
|
103
|
+
def login
|
104
|
+
loginresp = @http_client.request(
|
105
|
+
:expects => [200],
|
106
|
+
:method => 'GET',
|
107
|
+
:path => "login",
|
108
|
+
:accept => 'application/vnd.abiquo.user+json'
|
109
|
+
)
|
110
|
+
@enterprise = AbiquoAPIClient::Link.new(loginresp['links'].select {|l| l['rel'] == 'enterprise'}.first)
|
111
|
+
@user = AbiquoAPIClient::LinkModel.new(loginresp.merge({:client => self}))
|
112
|
+
end
|
113
|
+
|
110
114
|
##
|
111
115
|
# Loads System properties
|
112
116
|
#
|
@@ -114,7 +118,7 @@ class AbiquoAPI
|
|
114
118
|
@http_client.request(
|
115
119
|
:expects => [200],
|
116
120
|
:method => 'GET',
|
117
|
-
:path => "
|
121
|
+
:path => "config/properties",
|
118
122
|
:accept => 'application/vnd.abiquo.systemproperties+json'
|
119
123
|
)
|
120
124
|
end
|
@@ -212,7 +216,7 @@ class AbiquoAPI
|
|
212
216
|
req_hash[:content] = "#{ctype}; version=#{@version};" unless ctype.eql? ""
|
213
217
|
|
214
218
|
resp = @http_client.request(req_hash)
|
215
|
-
resp.nil? ? nil : AbiquoAPIClient::LinkModel.new({
|
219
|
+
resp.nil? ? nil : AbiquoAPIClient::LinkModel.new({:client => self}.merge(resp))
|
216
220
|
end
|
217
221
|
|
218
222
|
##
|
@@ -249,7 +253,7 @@ class AbiquoAPI
|
|
249
253
|
req_hash[:content] = "#{ctype}; version=#{@version};" unless ctype.eql? ""
|
250
254
|
|
251
255
|
resp = @http_client.request(req_hash)
|
252
|
-
resp.nil? ? nil : AbiquoAPIClient::LinkModel.new({
|
256
|
+
resp.nil? ? nil : AbiquoAPIClient::LinkModel.new({:client => self}.merge(resp))
|
253
257
|
end
|
254
258
|
|
255
259
|
##
|
@@ -264,12 +268,12 @@ class AbiquoAPI
|
|
264
268
|
# Returns nil
|
265
269
|
#
|
266
270
|
def delete(link, options = {})
|
267
|
-
@http_client.request(
|
268
|
-
:expects => [204],
|
271
|
+
resp = @http_client.request(
|
272
|
+
:expects => [204,202],
|
269
273
|
:method => 'DELETE',
|
270
274
|
:path => link.href,
|
271
275
|
:query => options
|
272
276
|
)
|
273
|
-
nil
|
277
|
+
resp.nil? ? nil : AbiquoAPIClient::LinkModel.new({:client => self}.merge(resp))
|
274
278
|
end
|
275
279
|
end
|
data/lib/abiquo-api/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: abiquo-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marc Cirauqui
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-02-
|
11
|
+
date: 2017-02-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: excon
|