lorj_cloud 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 18667a9e2559cedc572e479ea365835bc026849e
4
- data.tar.gz: 823ba90cf29360f228c5ee561fec98f5d58e8f37
3
+ metadata.gz: 9a6728ac07fa2967a77fccc30673346724180474
4
+ data.tar.gz: 0eda6415e42c3438d42ddd65a7e7225cd2c6254a
5
5
  SHA512:
6
- metadata.gz: 4c591e614887169d6badb2e8b434df750ed54f140900993b66c971499f556c3c432f9458c41ef978274e06d3eb0810fbafb9f3f9142ce7924347609a476b971a
7
- data.tar.gz: 67dbe332d5b8719393a0c2f3af55f9a130a2e05d98da194d29b79be01ded3a3d9683c247df873940a679ff36ebc453999fd61782a6bbcc9995c2d6fe0cb82c39
6
+ metadata.gz: dd1430bfbc8595a5b8d1300b73e29ddec98ee2ecde43a41863d167efeeaa96a7bcc8afc6b752ff4911b8f147052738dbad10db0a823972ccb064fc68ec8d304e
7
+ data.tar.gz: 9a7910cfb451762e16e04977b6e0e63c11d7500768eac414ef22f5aa03096a1a3d00fa9574145f0492f2025842fc42e0865a6b3394389324946bac2cf4d7c545
@@ -1,5 +1,5 @@
1
1
  # LorjCloud module
2
2
  module LorjCloud
3
- VERSION = '0.1.2'
4
- DATE = '2015-06-15'
3
+ VERSION = '0.1.3'
4
+ DATE = '2015-06-22'
5
5
  end
@@ -26,6 +26,8 @@ class CloudProcess
26
26
  def forj_get_or_create_server(sCloudObj, hParams)
27
27
  server_name = hParams[:server_name]
28
28
  PrcLib.state("Searching for server '%s'", server_name)
29
+
30
+ config[:search_for] = server_name
29
31
  servers = forj_query_server(sCloudObj, { :name => server_name }, hParams)
30
32
  if servers.length > 0
31
33
  # Get server details
@@ -103,6 +105,7 @@ class Lorj::BaseDefinition
103
105
 
104
106
  def_attribute :image_id
105
107
  def_attribute :key_name
108
+ def_attribute :meta_data
106
109
  end
107
110
 
108
111
  # Internal Process function
@@ -100,6 +100,7 @@ class Hpcloud
100
100
  # ************************************ SERVER Object
101
101
  define_obj :server
102
102
  def_attr_mapping :private_ip_addresses, [:addresses, '{key}', [:addr]]
103
+ def_attr_mapping :meta_data, :metadata
103
104
  def_attr_mapping :status, :state
104
105
  attr_value_mapping :create, 'BUILD'
105
106
  attr_value_mapping :boot, :boot
@@ -394,12 +395,30 @@ class HpcloudController # rubocop: disable Metrics/ClassLength
394
395
  "Valid one are : '%s'",
395
396
  key[0], oControlerObject.class,
396
397
  def_attributes unless def_attributes.include?(key[0])
397
- attributes.rh_get(key)
398
+ return attributes.rh_get(key) if attributes.rh_exist?(key)
399
+ _get_instance_attr(oControlerObject, key)
398
400
  end
399
401
  rescue => e
400
402
  controller_error "Unable to map '%s'. %s", key, e.message
401
403
  end
402
404
 
405
+ def _server_metadata_get(oControlerObject)
406
+ ret = {}
407
+ oControlerObject.metadata.each do |m|
408
+ k = m.attributes[:key]
409
+ v = m.attributes[:value]
410
+ ret[k] = v
411
+ end
412
+ ret
413
+ end
414
+
415
+ def _get_instance_attr(oControlerObject, key)
416
+ return _server_metadata_get(oControlerObject) if key[0] == :metadata
417
+ return nil if oControlerObject.send(key[0]).nil?
418
+ return oControlerObject.send(key[0]) if key.length == 1
419
+ oControlerObject.send(key[0]).rh_get(key[1..-1])
420
+ end
421
+
403
422
  def set_attr(oControlerObject, key, value)
404
423
  controller_class = oControlerObject.class
405
424
 
@@ -222,6 +222,7 @@ class Openstack
222
222
  [:addresses, '{/.*/}',
223
223
  '<%= data["OS-EXT-IPS:type"] == "floating" %>|addr']
224
224
  def_attr_mapping :image_id, [:image, 'id']
225
+ def_attr_mapping :meta_data, :metadata
225
226
 
226
227
  define_obj :router
227
228
  obj_needs_optional
@@ -355,7 +356,21 @@ class OpenstackController
355
356
  controller_error "==>Unable to map '%s'. %s", key, e.message
356
357
  end
357
358
 
359
+ def _server_metadata_get(oControlerObject)
360
+ ret = {}
361
+ oControlerObject.metadata.each do |m|
362
+ k = m.attributes[:key]
363
+ v = m.attributes[:value]
364
+ ret[k] = v
365
+ end
366
+ ret
367
+ end
368
+
358
369
  def _get_instance_attr(oControlerObject, key)
370
+ if key[0] == :metadata &&
371
+ oControlerObject.class == Fog::Compute::OpenStack::Server
372
+ return _server_metadata_get(oControlerObject)
373
+ end
359
374
  return nil if oControlerObject.send(key[0]).nil?
360
375
  return oControlerObject.send(key[0]) if key.length == 1
361
376
  oControlerObject.send(key[0]).rh_get(key[1..-1])
@@ -16,81 +16,61 @@
16
16
 
17
17
  # Defined Openstack object query.
18
18
  class OpenstackController
19
- def self.def_basic_query(connection, name, property_name = nil)
20
- property_name = property_name.nil? ? name.to_s + 's' : property_name.to_s
21
-
22
- define_method("query_#{name}") do |hParams, _query|
23
- required?(hParams, connection)
24
- hParams[connection].send(property_name).all
25
- end
26
- end
27
-
28
- # Implementation of API supporting query Hash
29
- def self.def_simple_query(connection, name, property_name = nil)
30
- property_name = property_name.nil? ? name.to_s + 's' : property_name.to_s
31
-
32
- define_method("query_#{name}") do |hParams, query|
33
- required?(hParams, connection)
34
- hParams[connection].send(property_name).all query
35
- end
36
- end
37
-
38
19
  # Implementation of API NOT supporting query Hash
39
20
  # The function will filter itself.
40
- def self.def_complex_query(connection, name, property_name = nil)
21
+ # It must support
22
+ # - Regexp
23
+ # - simple value equality
24
+ def self.def_query(requires, name, property_name = nil)
41
25
  property_name = property_name.nil? ? name.to_s + 's' : property_name.to_s
42
26
 
43
27
  define_method("query_#{name}") do |hParams, query|
44
- required?(hParams, connection)
45
-
46
- key_pairs = hParams[connection].send(property_name).all
47
- results = []
48
- key_pairs.each do |sElem|
49
- selected = true
50
- attributes = sElem.instance_variable_get(:@attributes)
51
- query.each do |key, value|
52
- if attributes[key] != value
53
- selected = false
54
- break
55
- end
56
- end
57
- results.push sElem if selected
28
+ requires = [requires] unless requires.is_a?(Array)
29
+ requires.each { |r| required?(hParams, r) }
30
+
31
+ connection = requires[0]
32
+
33
+ yield hParams, query if block_given?
34
+
35
+ func = hParams[connection].send(property_name).method(:all)
36
+ if func.parameters.length > 0
37
+ Lorj.debug(4, "'%s' uses Openstack API filter feature.", __method__)
38
+ objects = func.call ctrl_query_select(query, String)
39
+ else
40
+ objects = func.call
58
41
  end
59
- results
42
+ # Uses :[] or :<key> to match object and query attr.
43
+ Lorj.debug(4, "'%s' gets %d records", __method__, objects.length)
44
+ ctrl_query_each objects, query # Return the select objects.
60
45
  end
61
46
  end
62
47
 
63
- def_simple_query :compute_connection, :tenant
64
-
65
- def_simple_query :compute_connection, :image
48
+ def_query :compute_connection, :tenant
66
49
 
67
- def_simple_query :compute_connection, :flavor
50
+ def_query :compute_connection, :image
68
51
 
69
- def_simple_query :compute_connection, :server
52
+ def_query :compute_connection, :flavor
70
53
 
71
- def_simple_query :network_connection, :network
54
+ def_query :compute_connection, :server
72
55
 
73
- def_simple_query :network_connection, :subnetwork, :subnets
56
+ def_query :network_connection, :network
74
57
 
75
- def_simple_query :network_connection, :router
58
+ def_query :network_connection, :subnetwork, :subnets
76
59
 
77
- def_simple_query :network_connection, :port
60
+ def_query :network_connection, :router
78
61
 
79
- # def_simple_query :network_connection, :security_groups, :security_groups
62
+ def_query :network_connection, :port
80
63
 
81
- def_simple_query :network_connection, :rule, :security_group_rules
82
-
83
- def_complex_query :compute_connection, :keypairs, :key_pairs
64
+ def_query([:network_connection, :tenants],
65
+ :security_groups, :security_groups) do |hParams, query|
66
+ query[:tenant_id] = hParams[:tenants].id
67
+ end
84
68
 
85
- def_complex_query :compute_connection, :public_ip, :addresses
69
+ def_query :network_connection, :rule, :security_group_rules
86
70
 
87
- def_complex_query :compute_connection, :tenants, :tenants
71
+ def_query :compute_connection, :keypairs, :key_pairs
88
72
 
89
- def query_security_groups(hParams, query)
90
- required?(hParams, :network_connection)
91
- required?(hParams, :tenants)
73
+ def_query :compute_connection, :public_ip, :addresses
92
74
 
93
- query[:tenant_id] = hParams[:tenants].id
94
- hParams[:network_connection].send(:security_groups).all query
95
- end
75
+ def_query :compute_connection, :tenants, :tenants
96
76
  end
data/lorj_cloud.gemspec CHANGED
@@ -19,15 +19,18 @@ Gem::Specification.new do |spec|
19
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
20
  spec.require_paths = ["lib"]
21
21
 
22
- # if spec.respond_to?(:metadata)
23
- # spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com' to prevent pushes to rubygems.org, or delete to allow pushes to any server."
24
- # end
25
-
26
22
  spec.add_development_dependency "bundler", "~> 1.9"
27
23
  spec.add_development_dependency "rake", "~> 10.0"
28
-
29
- spec.add_runtime_dependency "lorj", ">= 1.0.12"
24
+ spec.add_development_dependency "rspec", "~> 3.1.0"
25
+
26
+ spec.add_runtime_dependency "lorj", ">= 1.0.13"
30
27
  spec.add_runtime_dependency 'subhash', '>= 0.1.3'
31
28
  spec.add_runtime_dependency "fog", "~> 1.30.0"
32
- spec.add_development_dependency "rspec", "~> 3.1.0"
29
+
30
+ # Ruby 1.8 restrictions - BEGIN - To be removed at next major release.
31
+ # NOTE that gemspec is used at build time. Do not use RUBY_VERSION check
32
+ # for runtime dependency. It will influence the content of the package.
33
+ spec.add_runtime_dependency "mime-types", '< 2.0'
34
+ spec.add_runtime_dependency "nokogiri", '< 1.6'
35
+ # Ruby 1.8 restrictions - END
33
36
  end
metadata CHANGED
@@ -1,99 +1,127 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lorj_cloud
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christophe Larsonneur
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-06-15 00:00:00.000000000 Z
11
+ date: 2015-06-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.9'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.9'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '10.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 3.1.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 3.1.0
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: lorj
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
- - - '>='
59
+ - - ">="
46
60
  - !ruby/object:Gem::Version
47
- version: 1.0.12
61
+ version: 1.0.13
48
62
  type: :runtime
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
- - - '>='
66
+ - - ">="
53
67
  - !ruby/object:Gem::Version
54
- version: 1.0.12
68
+ version: 1.0.13
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: subhash
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
- - - '>='
73
+ - - ">="
60
74
  - !ruby/object:Gem::Version
61
75
  version: 0.1.3
62
76
  type: :runtime
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
- - - '>='
80
+ - - ">="
67
81
  - !ruby/object:Gem::Version
68
82
  version: 0.1.3
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: fog
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
- - - ~>
87
+ - - "~>"
74
88
  - !ruby/object:Gem::Version
75
89
  version: 1.30.0
76
90
  type: :runtime
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
- - - ~>
94
+ - - "~>"
81
95
  - !ruby/object:Gem::Version
82
96
  version: 1.30.0
83
97
  - !ruby/object:Gem::Dependency
84
- name: rspec
98
+ name: mime-types
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
- - - ~>
101
+ - - "<"
88
102
  - !ruby/object:Gem::Version
89
- version: 3.1.0
90
- type: :development
103
+ version: '2.0'
104
+ type: :runtime
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
- - - ~>
108
+ - - "<"
95
109
  - !ruby/object:Gem::Version
96
- version: 3.1.0
110
+ version: '2.0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: nokogiri
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "<"
116
+ - !ruby/object:Gem::Version
117
+ version: '1.6'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "<"
123
+ - !ruby/object:Gem::Version
124
+ version: '1.6'
97
125
  description: 'simplify cloud management, thanks to predefined process to manage cloud
98
126
  obj and make it work. '
99
127
  email:
@@ -102,10 +130,10 @@ executables: []
102
130
  extensions: []
103
131
  extra_rdoc_files: []
104
132
  files:
105
- - .gitignore
106
- - .gitreview
107
- - .rspec
108
- - .rubocop.yml
133
+ - ".gitignore"
134
+ - ".gitreview"
135
+ - ".rspec"
136
+ - ".rubocop.yml"
109
137
  - Gemfile
110
138
  - README.md
111
139
  - Rakefile
@@ -158,17 +186,17 @@ require_paths:
158
186
  - lib
159
187
  required_ruby_version: !ruby/object:Gem::Requirement
160
188
  requirements:
161
- - - '>='
189
+ - - ">="
162
190
  - !ruby/object:Gem::Version
163
191
  version: '0'
164
192
  required_rubygems_version: !ruby/object:Gem::Requirement
165
193
  requirements:
166
- - - '>='
194
+ - - ">="
167
195
  - !ruby/object:Gem::Version
168
196
  version: '0'
169
197
  requirements: []
170
198
  rubyforge_project:
171
- rubygems_version: 2.1.11
199
+ rubygems_version: 2.2.3
172
200
  signing_key:
173
201
  specification_version: 4
174
202
  summary: Lorj cloud process.