bodhi-slam 0.3.0 → 0.3.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/lib/bodhi-slam.rb +2 -1
- data/lib/bodhi-slam/profiles.rb +110 -0
- data/lib/bodhi-slam/types.rb +6 -3
- data/lib/bodhi-slam/users.rb +4 -4
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d83b1c6ce8f644e9108c2c8fc4c3b0996851d572
|
|
4
|
+
data.tar.gz: 75a57b10b96e572fad43651f55d2d037950f16e6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8ce0f4f00314d5d366450444f39d2883314352a679a08876580252417df685f680a105e4525f6d9a7707d43f4652552357d538d2e0bd3cf5175cb0e6d0591d50
|
|
7
|
+
data.tar.gz: 0a5b7e3955f4b3a331e2aba1741d6439cccd81c9ed353b3f00351b110eaef575d4ca60ddc10a919e8a0a8a48c80e0d360c056672cb595e636b6174817249cc72
|
data/lib/bodhi-slam.rb
CHANGED
|
@@ -6,14 +6,15 @@ require "SecureRandom"
|
|
|
6
6
|
|
|
7
7
|
require 'bodhi-slam/validations'
|
|
8
8
|
require 'bodhi-slam/errors'
|
|
9
|
+
require 'bodhi-slam/context'
|
|
9
10
|
|
|
10
11
|
require 'bodhi-slam/batches'
|
|
11
|
-
require 'bodhi-slam/context'
|
|
12
12
|
require 'bodhi-slam/enumerations'
|
|
13
13
|
require 'bodhi-slam/factory'
|
|
14
14
|
require 'bodhi-slam/resource'
|
|
15
15
|
require 'bodhi-slam/types'
|
|
16
16
|
require 'bodhi-slam/users'
|
|
17
|
+
require 'bodhi-slam/profiles'
|
|
17
18
|
|
|
18
19
|
class BodhiSlam
|
|
19
20
|
# Defines a context to interact with the Bodhi API
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
module Bodhi
|
|
2
|
+
class Profile
|
|
3
|
+
include Bodhi::Validations
|
|
4
|
+
|
|
5
|
+
ATTRIBUTES = [:name, :namespace, :dml, :subspace, :parent, :invoke]
|
|
6
|
+
attr_accessor *ATTRIBUTES
|
|
7
|
+
attr_accessor :bodhi_context
|
|
8
|
+
|
|
9
|
+
validates :name, type: "String", required: true, is_not_blank: true
|
|
10
|
+
validates :namespace, type: "String", required: true
|
|
11
|
+
validates :dml, type: "Object", required: true
|
|
12
|
+
|
|
13
|
+
def initialize(params={})
|
|
14
|
+
# same as symbolize_keys!
|
|
15
|
+
params = params.reduce({}) do |memo, (k, v)|
|
|
16
|
+
memo.merge({ k.to_sym => v})
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# set attributes
|
|
20
|
+
ATTRIBUTES.each do |attribute|
|
|
21
|
+
send("#{attribute}=", params[attribute])
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Returns a Hash of the Objects form attributes
|
|
26
|
+
#
|
|
27
|
+
# s = SomeResource.factory.build({foo:"test", bar:12345})
|
|
28
|
+
# s.attributes # => { foo: "test", bar: 12345 }
|
|
29
|
+
def attributes
|
|
30
|
+
result = Hash.new
|
|
31
|
+
ATTRIBUTES.each do |attribute|
|
|
32
|
+
result[attribute] = send(attribute)
|
|
33
|
+
end
|
|
34
|
+
result
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Returns all the Objects attributes as JSON.
|
|
38
|
+
# It converts any nested Objects to JSON if they respond to +to_json+
|
|
39
|
+
#
|
|
40
|
+
# s = SomeResource.factory.build({foo:"test", bar:12345})
|
|
41
|
+
# s.to_json # => "{ 'foo':'test', 'bar':12345 }"
|
|
42
|
+
def to_json(base=nil)
|
|
43
|
+
super if base
|
|
44
|
+
attributes.to_json
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Saves the resource to the Bodhi Cloud. Raises ArgumentError if record could not be saved.
|
|
48
|
+
#
|
|
49
|
+
# obj = Resouce.new
|
|
50
|
+
# obj.save!
|
|
51
|
+
# obj.persisted? # => true
|
|
52
|
+
def save!
|
|
53
|
+
result = bodhi_context.connection.post do |request|
|
|
54
|
+
request.url "/#{bodhi_context.namespace}/profiles"
|
|
55
|
+
request.headers['Content-Type'] = 'application/json'
|
|
56
|
+
request.headers[bodhi_context.credentials_header] = bodhi_context.credentials
|
|
57
|
+
request.body = attributes.to_json
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
if result.status != 201
|
|
61
|
+
raise Bodhi::ApiErrors.new(body: result.body, status: result.status), "status: #{result.status}, body: #{result.body}"
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def delete!
|
|
66
|
+
result = bodhi_context.connection.delete do |request|
|
|
67
|
+
request.url "/#{bodhi_context.namespace}/profiles/#{name}"
|
|
68
|
+
request.headers[bodhi_context.credentials_header] = bodhi_context.credentials
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
if result.status != 204
|
|
72
|
+
raise Bodhi::ApiErrors.new(body: result.body, status: result.status), "status: #{result.status}, body: #{result.body}"
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# Returns a factory for the Bodhi::User class
|
|
77
|
+
def self.factory
|
|
78
|
+
@factory ||= Bodhi::Factory.new(Bodhi::Profile).tap do |factory|
|
|
79
|
+
factory.add_generator(:name, type: "String", required: true, is_not_blank: true)
|
|
80
|
+
factory.add_generator(:namespace, type: "String", required: true)
|
|
81
|
+
factory.add_generator(:dml, type: "Object", required: true)
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
# Queries the Bodhi API for the given +user_name+ and
|
|
86
|
+
# returns a Bodhi::Profile
|
|
87
|
+
#
|
|
88
|
+
# context = BodhiContext.new(valid_params)
|
|
89
|
+
# profile = Bodhi::Profile.find(context, "Profile1")
|
|
90
|
+
# profile # => #<Bodhi::Profile:0x007fbff403e808 @name="Profile1">
|
|
91
|
+
def self.find(context, profile_name)
|
|
92
|
+
if context.invalid?
|
|
93
|
+
raise Bodhi::ContextErrors.new(context.errors.messages), context.errors.to_a.to_s
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
result = context.connection.get do |request|
|
|
97
|
+
request.url "/#{context.namespace}/profiles/#{profile_name}"
|
|
98
|
+
request.headers[context.credentials_header] = context.credentials
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
if result.status != 200
|
|
102
|
+
raise Bodhi::ApiErrors.new(body: result.body, status: result.status), "status: #{result.status}, body: #{result.body}"
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
profile = Bodhi::Profile.new(JSON.parse(result.body))
|
|
106
|
+
profile.bodhi_context = context
|
|
107
|
+
profile
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|
data/lib/bodhi-slam/types.rb
CHANGED
|
@@ -124,7 +124,7 @@ module Bodhi
|
|
|
124
124
|
# type # => #<Bodhi::Type:0x007fbff403e808 @name="MyTypeName">
|
|
125
125
|
def self.find(context, type_name)
|
|
126
126
|
if context.invalid?
|
|
127
|
-
raise context.errors, context.errors.to_a.to_s
|
|
127
|
+
raise Bodhi::ContextErrors.new(context.errors.messages), context.errors.to_a.to_s
|
|
128
128
|
end
|
|
129
129
|
|
|
130
130
|
result = context.connection.get do |request|
|
|
@@ -136,7 +136,7 @@ module Bodhi
|
|
|
136
136
|
raise Bodhi::ApiErrors.new(body: result.body, status: result.status), "status: #{result.status}, body: #{result.body}"
|
|
137
137
|
end
|
|
138
138
|
|
|
139
|
-
type = Bodhi::Type.new(result)
|
|
139
|
+
type = Bodhi::Type.new(JSON.parse(result.body))
|
|
140
140
|
type.bodhi_context = context
|
|
141
141
|
type
|
|
142
142
|
end
|
|
@@ -148,7 +148,10 @@ module Bodhi
|
|
|
148
148
|
# types = Bodhi::Type.find_all(context)
|
|
149
149
|
# types # => [#<Bodhi::Type:0x007fbff403e808 @name="MyType">, #<Bodhi::Type:0x007fbff403e808 @name="MyType2">, ...]
|
|
150
150
|
def self.find_all(context)
|
|
151
|
-
|
|
151
|
+
if context.invalid?
|
|
152
|
+
raise Bodhi::ContextErrors.new(context.errors.messages), context.errors.to_a.to_s
|
|
153
|
+
end
|
|
154
|
+
|
|
152
155
|
page = 1
|
|
153
156
|
all_records = []
|
|
154
157
|
|
data/lib/bodhi-slam/users.rb
CHANGED
|
@@ -98,7 +98,7 @@ module Bodhi
|
|
|
98
98
|
# user # => #<Bodhi::User:0x007fbff403e808 @username="User1">
|
|
99
99
|
def self.find(context, user_name)
|
|
100
100
|
if context.invalid?
|
|
101
|
-
raise context.errors, context.errors.to_a.to_s
|
|
101
|
+
raise Bodhi::ContextErrors.new(context.errors.messages), context.errors.to_a.to_s
|
|
102
102
|
end
|
|
103
103
|
|
|
104
104
|
result = context.connection.get do |request|
|
|
@@ -110,7 +110,7 @@ module Bodhi
|
|
|
110
110
|
raise Bodhi::ApiErrors.new(body: result.body, status: result.status), "status: #{result.status}, body: #{result.body}"
|
|
111
111
|
end
|
|
112
112
|
|
|
113
|
-
user = Bodhi::User.new(result)
|
|
113
|
+
user = Bodhi::User.new(JSON.parse(result.body))
|
|
114
114
|
user.bodhi_context = context
|
|
115
115
|
user
|
|
116
116
|
end
|
|
@@ -121,7 +121,7 @@ module Bodhi
|
|
|
121
121
|
# user_properties = Bodhi::User.find_me(context)
|
|
122
122
|
def self.find_me(context)
|
|
123
123
|
if context.invalid?
|
|
124
|
-
raise context.errors, context.errors.to_a.to_s
|
|
124
|
+
raise Bodhi::ContextErrors.new(context.errors.messages), context.errors.to_a.to_s
|
|
125
125
|
end
|
|
126
126
|
|
|
127
127
|
result = context.connection.get do |request|
|
|
@@ -133,7 +133,7 @@ module Bodhi
|
|
|
133
133
|
raise Bodhi::ApiErrors.new(body: result.body, status: result.status), "status: #{result.status}, body: #{result.body}"
|
|
134
134
|
end
|
|
135
135
|
|
|
136
|
-
result
|
|
136
|
+
JSON.parse(result.body)
|
|
137
137
|
end
|
|
138
138
|
end
|
|
139
139
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: bodhi-slam
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.3.
|
|
4
|
+
version: 0.3.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- willdavis
|
|
@@ -109,6 +109,7 @@ files:
|
|
|
109
109
|
- lib/bodhi-slam/errors/api.rb
|
|
110
110
|
- lib/bodhi-slam/errors/context.rb
|
|
111
111
|
- lib/bodhi-slam/factory.rb
|
|
112
|
+
- lib/bodhi-slam/profiles.rb
|
|
112
113
|
- lib/bodhi-slam/resource.rb
|
|
113
114
|
- lib/bodhi-slam/types.rb
|
|
114
115
|
- lib/bodhi-slam/users.rb
|