lorj 0.1.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.
- checksums.yaml +7 -0
- data/.gitignore +14 -0
- data/.gitreview +4 -0
- data/Gemfile +25 -0
- data/Gemfile.lock +34 -0
- data/LICENSE.txt +14 -0
- data/README.md +652 -0
- data/Rakefile +24 -0
- data/bin/cloud_test.rb +81 -0
- data/example/students_1/process/Students.rb +20 -0
- data/example/students_1/students.rb +16 -0
- data/example/students_2/process/Students.rb +27 -0
- data/example/students_2/students.rb +36 -0
- data/example/students_3/controller/yaml_students.rb +94 -0
- data/example/students_3/controller/yaml_students_controller.rb +123 -0
- data/example/students_3/process/students.rb +118 -0
- data/example/students_3/students.rb +93 -0
- data/example/students_4/controller/yaml_students.rb +82 -0
- data/example/students_4/controller/yaml_students_controller.rb +141 -0
- data/example/students_4/process/students.rb +112 -0
- data/example/students_4/students.rb +103 -0
- data/example/yaml_students/students.rb +78 -0
- data/example/yaml_students/yaml_students.rb +115 -0
- data/lib/concept.md +111 -0
- data/lib/core/core.rb +723 -0
- data/lib/core/definition.rb +505 -0
- data/lib/core/definition_internal.rb +338 -0
- data/lib/core/lorj-basecontroller.rb +90 -0
- data/lib/core/lorj-basedefinition.rb +1079 -0
- data/lib/core/lorj-baseprocess.rb +231 -0
- data/lib/core/lorj-data.rb +567 -0
- data/lib/core/lorj-keypath.rb +115 -0
- data/lib/core_process/CloudProcess.rb +334 -0
- data/lib/core_process/global_process.rb +406 -0
- data/lib/core_process/network_process.rb +603 -0
- data/lib/img/.directory +4 -0
- data/lib/img/account_data_access.png +0 -0
- data/lib/img/config_data_access.png +0 -0
- data/lib/img/forj-lib-concept.png +0 -0
- data/lib/lorj/version.rb +3 -0
- data/lib/lorj.rb +51 -0
- data/lib/prc-account.rb +339 -0
- data/lib/prc-config.rb +1023 -0
- data/lib/prc-logging.rb +183 -0
- data/lib/prc.rb +108 -0
- data/lib/providers/hpcloud/Hpcloud.rb +419 -0
- data/lib/providers/hpcloud/compute.rb +108 -0
- data/lib/providers/hpcloud/network.rb +117 -0
- data/lib/providers/hpcloud/security_groups.rb +67 -0
- data/lib/providers/mock/Mock.rb +141 -0
- data/lib/providers/openstack/Openstack.rb +47 -0
- data/lib/providers/templates/compute.rb +42 -0
- data/lib/providers/templates/core.rb +61 -0
- data/lib/providers/templates/network.rb +33 -0
- data/lorj-spec/defaults.yaml +26 -0
- data/lorj.gemspec +39 -0
- data/spec/forj-account_spec.rb +75 -0
- data/spec/forj-config_spec.rb +196 -0
- metadata +164 -0
@@ -0,0 +1,231 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: UTF-8
|
3
|
+
|
4
|
+
# (c) Copyright 2014 Hewlett-Packard Development Company, L.P.
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
|
18
|
+
# Module Lorj which contains several classes.
|
19
|
+
#
|
20
|
+
# Those classes describes :
|
21
|
+
# - processes (BaseProcess) : How to create/delete/edit/query object.
|
22
|
+
# - controler (BaseControler) : If a provider is defined, define how will do object creation/etc...
|
23
|
+
# - definition(BaseDefinition): Functions to declare objects, query/data mapping and setup
|
24
|
+
# this task to make it to work.
|
25
|
+
|
26
|
+
module Lorj
|
27
|
+
# class describing generic Object Process
|
28
|
+
# Ex: How to get a Network Object (ie: get a network or create it if missing)
|
29
|
+
class BaseProcess
|
30
|
+
def initialize()
|
31
|
+
@oDefinition = nil
|
32
|
+
end
|
33
|
+
|
34
|
+
def set_BaseObject(oDefinition)
|
35
|
+
@oDefinition = oDefinition
|
36
|
+
end
|
37
|
+
|
38
|
+
def controller_create(sObjectType, hParams = {})
|
39
|
+
raise Lorj::PrcError.new(), "No Controler object loaded." if not @oDefinition
|
40
|
+
@oDefinition.create(sObjectType)
|
41
|
+
end
|
42
|
+
|
43
|
+
def controller_query(sObjectType, sQuery, hParams = {})
|
44
|
+
raise Lorj::PrcError.new(), "No Controler object loaded." if not @oDefinition
|
45
|
+
@oDefinition.query(sObjectType, sQuery)
|
46
|
+
end
|
47
|
+
|
48
|
+
def controller_update(sObjectType, hParams = {})
|
49
|
+
raise Lorj::PrcError.new(), "No Controler object loaded." if not @oDefinition
|
50
|
+
@oDefinition.update(sObjectType)
|
51
|
+
end
|
52
|
+
|
53
|
+
def controller_delete(sObjectType, hParams = {})
|
54
|
+
raise Lorj::PrcError.new(), "No Controler object loaded." if not @oDefinition
|
55
|
+
@oDefinition.delete(sObjectType)
|
56
|
+
end
|
57
|
+
|
58
|
+
def controller_get(sObjectType, sId, hParams = {})
|
59
|
+
raise Lorj::PrcError.new(), "No Controler object loaded." if not @oDefinition
|
60
|
+
@oDefinition.get(sObjectType, sId)
|
61
|
+
end
|
62
|
+
|
63
|
+
def Create(sObjectType)
|
64
|
+
raise Lorj::PrcError.new(), "No Base object loaded." if not @oDefinition
|
65
|
+
@oDefinition.Create(sObjectType)
|
66
|
+
end
|
67
|
+
|
68
|
+
def Query(sObjectType, sQuery)
|
69
|
+
raise Lorj::PrcError.new(), "No Base object loaded." if not @oDefinition
|
70
|
+
@oDefinition.Query(sObjectType, sQuery)
|
71
|
+
end
|
72
|
+
|
73
|
+
def Update(sObjectType)
|
74
|
+
raise Lorj::PrcError.new(), "No Base object loaded." if not @oDefinition
|
75
|
+
@oDefinition.Update(sObjectType)
|
76
|
+
end
|
77
|
+
|
78
|
+
def Get(sObjectType, sId)
|
79
|
+
raise Lorj::PrcError.new(), "No Base object loaded." if not @oDefinition
|
80
|
+
@oDefinition.Get(sObjectType, sId)
|
81
|
+
end
|
82
|
+
|
83
|
+
def Delete(sObjectType)
|
84
|
+
raise Lorj::PrcError.new(), "No Base object loaded." if not @oDefinition
|
85
|
+
@oDefinition.Delete(sObjectType)
|
86
|
+
end
|
87
|
+
|
88
|
+
private
|
89
|
+
|
90
|
+
def query_cache_cleanup(sObjectType)
|
91
|
+
raise Lorj::PrcError.new(), "No Base object loaded." if not @oDefinition
|
92
|
+
@oDefinition.query_cleanup(sObjectType)
|
93
|
+
end
|
94
|
+
|
95
|
+
def object_cache_cleanup(sObjectType)
|
96
|
+
raise Lorj::PrcError.new(), "No Base object loaded." if not @oDefinition
|
97
|
+
@oDefinition.object_cleanup(sObjectType)
|
98
|
+
end
|
99
|
+
|
100
|
+
|
101
|
+
|
102
|
+
def controler
|
103
|
+
PrcLib::warning("controler object call is obsolete. Please update your code. Use controller_<action> instead.\n%s" % caller)
|
104
|
+
raise Lorj::PrcError.new(), "No Controler object loaded." if not @oDefinition
|
105
|
+
@oDefinition
|
106
|
+
end
|
107
|
+
|
108
|
+
def object
|
109
|
+
PrcLib::warning("object call is obsolete. Please update your code. Use <Action> instead.\n%s" % caller)
|
110
|
+
raise Lorj::PrcError.new(), "No Base object loaded." if not @oDefinition
|
111
|
+
@oDefinition
|
112
|
+
end
|
113
|
+
|
114
|
+
def format_object(sObjectType, oMiscObj)
|
115
|
+
|
116
|
+
raise Lorj::PrcError.new(), "No Base object loaded." if not @oDefinition
|
117
|
+
@oDefinition.format_object(sObjectType, oMiscObj)
|
118
|
+
end
|
119
|
+
|
120
|
+
def format_query(sObjectType, oMiscObj, hQuery)
|
121
|
+
|
122
|
+
raise Lorj::PrcError.new(), "No Base object loaded." if not @oDefinition
|
123
|
+
@oDefinition.format_list(sObjectType, oMiscObj, hQuery)
|
124
|
+
end
|
125
|
+
|
126
|
+
def DataObjects(sObjectType, *key)
|
127
|
+
raise Lorj::PrcError.new(), "No Base object loaded." if not @oDefinition
|
128
|
+
@oDefinition.DataObjects(sObjectType, *key)
|
129
|
+
end
|
130
|
+
|
131
|
+
def get_data(oObj, *key)
|
132
|
+
PrcLib::warning("get_data call is obsolete. Please update your code. Use [] instead.\n%s" % caller)
|
133
|
+
raise Lorj::PrcError.new(), "No Base object loaded." if not @oDefinition
|
134
|
+
@oDefinition.get_data(oObj, :attrs, key)
|
135
|
+
end
|
136
|
+
|
137
|
+
def register(oObject, sObjectType = nil)
|
138
|
+
|
139
|
+
raise Lorj::PrcError.new(), "No Base object loaded." if not @oDefinition
|
140
|
+
@oDefinition.register(oObject, sObjectType)
|
141
|
+
end
|
142
|
+
|
143
|
+
def config
|
144
|
+
raise Lorj::PrcError.new(), "No Base object loaded." if not @oDefinition
|
145
|
+
@oDefinition.config
|
146
|
+
end
|
147
|
+
|
148
|
+
def query_single(sCloudObj, oList, sQuery, name, sInfoMsg = {})
|
149
|
+
oList = controler.query(sCloudObj, sQuery)
|
150
|
+
sInfo = {
|
151
|
+
:notfound => "No %s '%s' found",
|
152
|
+
:checkmatch => "Found 1 %s. checking exact match for '%s'.",
|
153
|
+
:nomatch => "No %s '%s' match",
|
154
|
+
:found => "Found %s '%s'.",
|
155
|
+
:more => "Found several %s. Searching for '%s'.",
|
156
|
+
:items_form => "%s",
|
157
|
+
:items => [:name]
|
158
|
+
}
|
159
|
+
sInfo[:notfound] = sInfoMsg[:notfound] if sInfoMsg.key?(:notfound)
|
160
|
+
sInfo[:checkmatch] = sInfoMsg[:checkmatch] if sInfoMsg.key?(:checkmatch)
|
161
|
+
sInfo[:nomatch] = sInfoMsg[:nomatch] if sInfoMsg.key?(:nomatch)
|
162
|
+
sInfo[:found] = sInfoMsg[:found] if sInfoMsg.key?(:found)
|
163
|
+
sInfo[:more] = sInfoMsg[:more] if sInfoMsg.key?(:more)
|
164
|
+
sInfo[:items] = sInfoMsg[:items] if sInfoMsg.key?(:items)
|
165
|
+
sInfo[:items_form] = sInfoMsg[:items_form] if sInfoMsg.key?(:items_form)
|
166
|
+
case oList.length()
|
167
|
+
when 0
|
168
|
+
PrcLib.info( sInfo[:notfound] % [sCloudObj, name] )
|
169
|
+
oList
|
170
|
+
when 1
|
171
|
+
Lorj.debug(2, sInfo[:checkmatch] % [sCloudObj, name])
|
172
|
+
element = nil
|
173
|
+
oList.each { | oElem |
|
174
|
+
bFound = true
|
175
|
+
sQuery.each { | key, value |
|
176
|
+
if oElem[key] != value
|
177
|
+
bFound = false
|
178
|
+
break
|
179
|
+
end
|
180
|
+
}
|
181
|
+
:remove if not bFound
|
182
|
+
}
|
183
|
+
if oList.length == 0
|
184
|
+
PrcLib.info(sInfo[:nomatch] % [sCloudObj, name])
|
185
|
+
else
|
186
|
+
sItems = []
|
187
|
+
if sInfo[:items].is_a?(Array)
|
188
|
+
sInfo[:items].each { | key |
|
189
|
+
sItems << oList[0, key]
|
190
|
+
}
|
191
|
+
else
|
192
|
+
sItems << oList[0, sInfo[:items]]
|
193
|
+
end
|
194
|
+
sItem = sInfo[:items_form] % sItems
|
195
|
+
PrcLib.info(sInfo[:found] % [sCloudObj, sItem])
|
196
|
+
end
|
197
|
+
oList
|
198
|
+
else
|
199
|
+
Lorj.debug(2, sInfo[:more] % [sCloudObj, name])
|
200
|
+
# Looping to find the one corresponding
|
201
|
+
element = nil
|
202
|
+
oList.each { | oElem |
|
203
|
+
bFound = true
|
204
|
+
sQuery.each { | key, value |
|
205
|
+
if oElem[key] != value
|
206
|
+
bFound = false
|
207
|
+
break
|
208
|
+
end
|
209
|
+
}
|
210
|
+
:remove if not bFound
|
211
|
+
}
|
212
|
+
if oList.length == 0
|
213
|
+
PrcLib.info(sInfo[:notfound] % [sCloudObj, name])
|
214
|
+
else
|
215
|
+
sItems = []
|
216
|
+
if sInfo[:items].is_a?(Array)
|
217
|
+
sInfo[:items].each { | key |
|
218
|
+
sItems << oList[0, key]
|
219
|
+
}
|
220
|
+
else
|
221
|
+
sItems << oList[0, sInfo[:items]]
|
222
|
+
end
|
223
|
+
sItem = sInfo[:items_form] % sItems
|
224
|
+
PrcLib.info(sInfo[:found] % [sCloudObj, sItem])
|
225
|
+
end
|
226
|
+
oList
|
227
|
+
end
|
228
|
+
end
|
229
|
+
|
230
|
+
end
|
231
|
+
end
|