project-fifo-ruby 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
@@ -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)
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "project-fifo-ruby"
5
- spec.version = '0.1.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
- #fifo.vms.list.each do |vm|
10
- # pp fifo.vms[vm]
11
- #end
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.1.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-01 00:00:00.000000000 Z
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