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.
@@ -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