project-fifo-ruby 0.1.0 → 0.2.0
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.
- data/lib/project-fifo.rb +3 -1
- data/lib/project-fifo/resource.rb +9 -1
- data/lib/project-fifo/vm.rb +20 -1
- data/project-fifo-ruby.gemspec +4 -1
- data/test.rb +7 -5
- metadata +50 -2
data/lib/project-fifo.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'rest_client'
|
2
2
|
require 'json'
|
3
|
+
require 'hashie'
|
3
4
|
require 'project-fifo/resource'
|
4
5
|
require 'project-fifo/vm'
|
5
6
|
require 'project-fifo/dataset'
|
@@ -77,6 +78,7 @@ class ProjectFifo
|
|
77
78
|
end
|
78
79
|
e.response
|
79
80
|
end
|
80
|
-
JSON.parse(response_body)
|
81
|
+
result = JSON.parse(response_body)
|
82
|
+
return result.is_a?(Hash) ? Hashie::Mash.new(result) : result
|
81
83
|
end
|
82
84
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'hash_validator'
|
2
|
+
|
1
3
|
class ProjectFifo
|
2
4
|
class Resource
|
3
5
|
|
@@ -26,6 +28,8 @@ class ProjectFifo
|
|
26
28
|
end
|
27
29
|
|
28
30
|
def create(data)
|
31
|
+
validator = HashValidator.validate(data, validations)
|
32
|
+
raise(ArgumentError, validator.errors) unless validator.valid?
|
29
33
|
fifo.post(namespace, data)
|
30
34
|
end
|
31
35
|
|
@@ -39,7 +43,11 @@ class ProjectFifo
|
|
39
43
|
|
40
44
|
def put(uuid, payload)
|
41
45
|
fifo.put(namespace + '/' + uuid, payload)
|
46
|
+
end
|
47
|
+
|
48
|
+
protected
|
49
|
+
def validations()
|
50
|
+
return {}
|
42
51
|
end
|
43
|
-
|
44
52
|
end
|
45
53
|
end
|
data/lib/project-fifo/vm.rb
CHANGED
@@ -1,6 +1,9 @@
|
|
1
|
+
|
2
|
+
|
1
3
|
class ProjectFifo
|
4
|
+
|
2
5
|
class VM < ProjectFifo::Resource
|
3
|
-
|
6
|
+
|
4
7
|
def initialize(fifo)
|
5
8
|
super(fifo, 'vms')
|
6
9
|
end
|
@@ -9,6 +12,22 @@ class ProjectFifo
|
|
9
12
|
define_method(act) { |uuid, force| action(uuid, act, force) }
|
10
13
|
end
|
11
14
|
|
15
|
+
VALIDATIONS = {
|
16
|
+
package: 'string',
|
17
|
+
dataset: 'string',
|
18
|
+
config: {
|
19
|
+
alias: 'string',
|
20
|
+
networks: {
|
21
|
+
net0: 'string'
|
22
|
+
}
|
23
|
+
}
|
24
|
+
}
|
25
|
+
|
26
|
+
protected
|
27
|
+
def validations()
|
28
|
+
return VALIDATIONS
|
29
|
+
end
|
30
|
+
|
12
31
|
private
|
13
32
|
|
14
33
|
def action(uuid, act, force = false)
|
data/project-fifo-ruby.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |spec|
|
4
4
|
spec.name = "project-fifo-ruby"
|
5
|
-
spec.version = '0.
|
5
|
+
spec.version = '0.2.0'
|
6
6
|
spec.authors = [ "Brian Akins" ]
|
7
7
|
spec.email = [ "brian@akins.org" ]
|
8
8
|
spec.description = %q{A simple incomplete project-fifo client API}
|
@@ -16,4 +16,7 @@ Gem::Specification.new do |spec|
|
|
16
16
|
spec.require_paths = ["lib"]
|
17
17
|
spec.required_ruby_version = ">= 1.9.1"
|
18
18
|
spec.add_dependency("rest-client", "~> 1.6")
|
19
|
+
spec.add_dependency("hashie", "~> 2.0")
|
20
|
+
spec.add_dependency("json")
|
21
|
+
spec.add_dependency("hash_validator")
|
19
22
|
end
|
data/test.rb
CHANGED
@@ -6,9 +6,10 @@ fifo = ProjectFifo.new("http://192.168.1.100/api/0.1.0/", "admin", "admin")
|
|
6
6
|
|
7
7
|
fifo.connect
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
fifo.vms.list.each do |id|
|
10
|
+
vm = fifo.vms[id]
|
11
|
+
pp vm.config.dataset
|
12
|
+
end
|
12
13
|
|
13
14
|
package = fifo.packages.list.first
|
14
15
|
dataset = fifo.datasets.list.first
|
@@ -29,12 +30,13 @@ data = {
|
|
29
30
|
|
30
31
|
|
31
32
|
vm = fifo.vms.create(data)
|
32
|
-
|
33
|
-
pp vm
|
33
|
+
exit
|
34
|
+
#pp vm
|
34
35
|
|
35
36
|
id = vm['uuid']
|
36
37
|
sleep 10
|
37
38
|
|
39
|
+
exit
|
38
40
|
fifo.vms.stop(id, true)
|
39
41
|
|
40
42
|
sleep 10
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: project-fifo-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-05-
|
12
|
+
date: 2013-05-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rest-client
|
@@ -27,6 +27,54 @@ dependencies:
|
|
27
27
|
- - ~>
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '1.6'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: hashie
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '2.0'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '2.0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: json
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: hash_validator
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
30
78
|
description: A simple incomplete project-fifo client API
|
31
79
|
email:
|
32
80
|
- brian@akins.org
|