lorj_cloud 0.1.2 → 0.1.3

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