lorj_cloud 0.1.0 → 0.1.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.
Files changed (30) hide show
  1. checksums.yaml +4 -4
  2. data/bin/console +13 -0
  3. data/bin/lorj_cloud +67 -0
  4. data/bin/setup +15 -0
  5. data/lib/lorj_cloud/version.rb +2 -1
  6. data/lib/process/cloud/data.yaml +136 -0
  7. data/lib/process/cloud/defaults.yaml +17 -0
  8. data/lib/process/cloud/process/connection.rb +17 -20
  9. data/lib/process/cloud/process/flavor.rb +4 -4
  10. data/lib/process/cloud/process/images.rb +3 -3
  11. data/lib/process/cloud/process/keypairs.rb +9 -7
  12. data/lib/{providers → process/cloud/providers}/hpcloud/hpcloud.rb +26 -26
  13. data/lib/{providers → process/cloud/providers}/openstack/openstack.rb +165 -61
  14. data/lib/{providers → process/cloud/providers}/openstack/openstack_create.rb +7 -3
  15. data/lib/{providers → process/cloud/providers}/openstack/openstack_process.rb +6 -1
  16. data/lorj_cloud.gemspec +3 -3
  17. metadata +24 -38
  18. data/lib/data.yaml +0 -0
  19. data/lib/defaults.yaml +0 -0
  20. /data/lib/{providers → process/cloud/providers}/hpcloud/compute.rb +0 -0
  21. /data/lib/{providers → process/cloud/providers}/hpcloud/network.rb +0 -0
  22. /data/lib/{providers → process/cloud/providers}/hpcloud/security_groups.rb +0 -0
  23. /data/lib/{providers → process/cloud/providers}/mock/mock.rb +0 -0
  24. /data/lib/{providers → process/cloud/providers}/openstack/openstack_delete.rb +0 -0
  25. /data/lib/{providers → process/cloud/providers}/openstack/openstack_get.rb +0 -0
  26. /data/lib/{providers → process/cloud/providers}/openstack/openstack_query.rb +0 -0
  27. /data/lib/{providers → process/cloud/providers}/openstack/openstack_update.rb +0 -0
  28. /data/lib/{providers → process/cloud/providers}/templates/compute.rb +0 -0
  29. /data/lib/{providers → process/cloud/providers}/templates/mycloud.rb +0 -0
  30. /data/lib/{providers → process/cloud/providers}/templates/network.rb +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4233f4744a02510e08773415b97e9e2c1d22a573
4
- data.tar.gz: 65f7e65ab5b524739d081bfd6fac667a0b92e815
3
+ metadata.gz: c97d1a526cc33c76ce049d26943adab2c485c976
4
+ data.tar.gz: acfd3212f964e401b51dd8b03d6dabe631e6a1ac
5
5
  SHA512:
6
- metadata.gz: 6942511c15d7ca200f7994f3e78db471cc1d051aef996d68118694e2512e6decae0310f14b1b470aa725cc3079cdeaf5b037d5986f0db54d6e5afcd8a2c748f2
7
- data.tar.gz: b6e027ec8f848aec4be5ad2bd8a241c2f1e65699bcf5234b0c815b85f2979230336b0960503deb2dd442e8a114d21e4d7267a164ab50d84571ab99475c5400f5
6
+ metadata.gz: 7f84ffe8eb4fc5d91b8148e3d7779c3416d721f3021ca691b40ef97094ddb456368992f6dd1708d4d1ad42836bd9d848f96e90b5a3962b17decc2a2290c7e0b6
7
+ data.tar.gz: 9e0aecb2ca0c8c8a93b124d8ab4dbba4433b8bcc7b2647d2ffc24b1712f6b3fa2745cd2aae91c9ff884bccab832a4fbcd918d2158228fd68ca040ab7b39f9057
data/bin/console CHANGED
@@ -1,5 +1,18 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ # (c) Copyright 2014 Hewlett-Packard Development Company, L.P.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
3
16
  require 'bundler/setup'
4
17
  require 'lorj_cloud'
5
18
 
data/bin/lorj_cloud ADDED
@@ -0,0 +1,67 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # (c) Copyright 2014 Hewlett-Packard Development Company, L.P.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ # require 'byebug'
17
+
18
+ require 'bundler/setup'
19
+ require 'lorj_cloud'
20
+
21
+ process_module = 'cloud'
22
+
23
+ PrcLib.log_object = Logger.new(STDOUT)
24
+ PrcLib.level = Logger::DEBUG
25
+ PrcLib.core_level = 5
26
+
27
+ unless Lorj.processes.key?(process_module)
28
+ PrcLib.fatal(1, "Unable to found the process module '%s'. \n"\
29
+ 'Modules loaded:', process_module, Lorj.processes.keys)
30
+ end
31
+
32
+ if Lorj.processes[process_module].controllers.nil?
33
+ PrcLib.fatal(1, "no controllers found in module '%s'.\n", process_module)
34
+ end
35
+
36
+ PrcLib.high_level_msg('Welcome to lorj_cloud - Simple process to build a '\
37
+ "cloud box\n"\
38
+ 'This simple script uses lorj_cloud process to guide you'\
39
+ ' setup and create a server in your cloud.')
40
+
41
+ # say("Please choose your cloud provider:")
42
+ # provider = choose do |q|
43
+ # controllers = Lorj.processes[process_module].controllers.keys
44
+ # q.choices(*controllers)
45
+ # end
46
+
47
+ provider = 'openstack'
48
+
49
+ processes = [{ :process_module => process_module,
50
+ :controller_name => provider }]
51
+
52
+ core = Lorj::Core.new(nil, processes)
53
+
54
+ PrcLib.message('You are going to create a server')
55
+
56
+ # server = ask('Enter a server name:') do |q|
57
+ # q.validate = /\w+/
58
+ # end
59
+ server = 'test'
60
+
61
+ PrcLib.message('Now, we are going to ask you some data about your cloud and '\
62
+ 'information to create your server')
63
+ # byebug
64
+
65
+ core.setup(:server)
66
+
67
+ core.create(:server, :server_name => server)
data/bin/setup CHANGED
@@ -1,4 +1,19 @@
1
1
  #!/bin/bash
2
+
3
+ # (c) Copyright 2014 Hewlett-Packard Development Company, L.P.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
2
17
  set -euo pipefail
3
18
  IFS=$'\n\t'
4
19
 
@@ -1,4 +1,5 @@
1
1
  # LorjCloud module
2
2
  module LorjCloud
3
- VERSION = '0.1.0'
3
+ VERSION = '0.1.1'
4
+ DATE = '2015-05-20'
4
5
  end
@@ -0,0 +1,136 @@
1
+ # (c) Copyright 2014 Hewlett-Packard Development Company, L.P.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ # Following declares generic FORJ data to handle Fog object (compute/network/dns/...)
16
+ # It defines the account file structure. section/key=value
17
+ # All data can be predefined by default value (config.yaml/defaults.yaml) except
18
+ # those identified by :account_exclusive: true
19
+ :setup:
20
+ :steps:
21
+ :provider_config:
22
+ :desc: "Provider configuration:"
23
+ :cloud_config:
24
+ :desc: "Cloud configuration:"
25
+ :add:
26
+ - :keypair_path
27
+ - :keypair_base
28
+ :sections:
29
+ # This section define updatable data available from config.yaml. But will never be added in an account file.
30
+ # Used by forj set/get functions
31
+ :default:
32
+ :account_name:
33
+ :desc: "Default account name used by forj cli"
34
+ :provider_name:
35
+ :desc: "Default provider name while running forj setup. By default, hpcloud is selected."
36
+ # Defines account credentials data
37
+ :account:
38
+ :name:
39
+ :desc: "Account Name"
40
+ :readonly: true
41
+ :account_exclusive: true
42
+ :provider:
43
+ :desc: "Cloud provider name."
44
+ :readonly: true
45
+ :account_exclusive: true
46
+
47
+ # Defines services
48
+ :services:
49
+ :compute:
50
+ :desc: "Service identification for compute"
51
+ :account_exclusive: true
52
+ :account: true
53
+ :step: :provider_config
54
+ :network:
55
+ :desc: "Service identification for network"
56
+ :account_exclusive: true
57
+ :account: true
58
+ :step: :provider_config
59
+
60
+ # Defines ssh keys credentials
61
+ :credentials:
62
+ :keypair_path:
63
+ :desc: "Contains the full path to the :keypair_base."
64
+ :ask_step: :provider_config
65
+ :keypair_base:
66
+ :desc: "Contains the key file base name without .pem/.pub."
67
+ :ask_step: :provider_config
68
+ :keypair_name:
69
+ :desc: "keypair name defined in your cloud to access your server."
70
+ :ask_step: :provider_config
71
+ :auth_uri:
72
+ :desc: "Generic service auth url"
73
+ :ask_step: :provider_config
74
+ :account_exclusive: true
75
+ :account: true
76
+ :required: true
77
+ :user_domain:
78
+ :ask_step: :provider_config
79
+ :account_exclusive: true
80
+ :account: true
81
+ :required: false
82
+ :account_id:
83
+ :desc: "Generic Cloud Account name."
84
+ :ask_step: :provider_config
85
+ :account_exclusive: true
86
+ :account: true
87
+ :required: true
88
+ :account_key:
89
+ :desc: "Generic cloud account key"
90
+ :ask_step: :provider_config
91
+ :account_exclusive: true
92
+ :account: true
93
+ :required: true
94
+ :encrypted: true
95
+ :tenant:
96
+ :desc: "Tenant Name (Project name)"
97
+ :ask_step: :provider_config
98
+ :account_exclusive: true
99
+ :account: true
100
+ :required: true
101
+ :prj_domain:
102
+ :ask_step: :provider_config
103
+ :account_exclusive: true
104
+ :account: true
105
+ :required: false
106
+
107
+ :server:
108
+ :network_name:
109
+ :ask_step: :cloud_config
110
+ :desc: "Network name to attach to each forge boxes. By default we use 'forj'. If it doesn't exist, it will be created."
111
+ :security_group:
112
+ :desc: "Security group name to configure and attach to each forge boxes."
113
+ :ask_step: :cloud_config
114
+ :box_name:
115
+ :desc: "Box name"
116
+ :flavor_name:
117
+ :desc: "Server Flavor name"
118
+ :ask_step: :cloud_config
119
+ :account: true
120
+ :list_values:
121
+ :query_type: :query_call # Will execute a query on flavor, query_params is empty for all.
122
+ :object: :flavor
123
+ :value: :name
124
+ :validate: :list_strict
125
+ :image_name:
126
+ :desc: "Image name"
127
+ :ask_step: :cloud_config
128
+ :account: true
129
+ :list_values:
130
+ :query_type: :query_call # Will execute a query on flavor, query_params is empty for all. No filter currently working.
131
+ :object: :image
132
+ :value: :name
133
+ :validate: :list_strict
134
+ :ports:
135
+ :desc: "List of security group rules (1 port or range of ports) to open to the external network."
136
+ :ask_step: :cloud_config
@@ -0,0 +1,17 @@
1
+ # (c) Copyright 2014 Hewlett-Packard Development Company, L.P.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ :default:
16
+ # Users: Default user for ssh connection, if user doesn't exits, forj cli will try to get the user from the server image on it's name attribute
17
+ :users: ['ubuntu', 'fedora', 'cloud-user', 'cirros', 'centos', 'cloud', 'root']
@@ -23,9 +23,9 @@
23
23
  class CloudProcess
24
24
  def connect(sCloudObj, hParams)
25
25
  ssl_error_obj = SSLErrorMgt.new # Retry object
26
- PrcLib.debug("%s:%s Connecting to '%s' "\
27
- "- Project '%s'",
28
- self.class, sCloudObj, config[:provider], hParams[:tenant])
26
+ PrcLib.debug("%s:%s Connecting to '%s' - Project '%s'",
27
+ self.class, sCloudObj, config[:provider],
28
+ hParams['credentials#tenant'])
29
29
  begin
30
30
  controller_connect(sCloudObj)
31
31
  rescue => e
@@ -47,13 +47,12 @@ class Lorj::BaseDefinition
47
47
  # object to get list of services
48
48
  # Defines Process handler to call
49
49
  define_obj(:services,
50
-
51
50
  :create_e => :connect
52
51
  )
53
- obj_needs :data, :auth_uri
54
- obj_needs :data, :account_id
55
- obj_needs :data, :account_key
56
- obj_needs :data, :tenant
52
+ obj_needs :data, 'credentials#auth_uri'
53
+ obj_needs :data, 'credentials#account_id'
54
+ obj_needs :data, 'credentials#account_key'
55
+ obj_needs :data, 'credentials#tenant'
57
56
 
58
57
  undefine_attribute :id # Do not return any predefined ID
59
58
  undefine_attribute :name # Do not return any predefined NAME
@@ -62,14 +61,13 @@ end
62
61
  # compute_connection
63
62
  class Lorj::BaseDefinition
64
63
  define_obj(:compute_connection,
65
-
66
64
  :create_e => :connect # Will call ForjProcess connect
67
65
  )
68
- obj_needs :data, :account_id
69
- obj_needs :data, :account_key
70
- obj_needs :data, :auth_uri
71
- obj_needs :data, :tenant
72
- obj_needs :data, :compute
66
+ obj_needs :data, 'credentials#account_id'
67
+ obj_needs :data, 'credentials#account_key'
68
+ obj_needs :data, 'credentials#auth_uri'
69
+ obj_needs :data, 'credentials#tenant'
70
+ obj_needs :data, 'services#compute'
73
71
 
74
72
  undefine_attribute :id # Do not return any predefined ID
75
73
  undefine_attribute :name # Do not return any predefined NAME
@@ -78,14 +76,13 @@ end
78
76
  # network_connection
79
77
  class Lorj::BaseDefinition
80
78
  define_obj(:network_connection,
81
-
82
79
  :create_e => :connect
83
80
  )
84
- obj_needs :data, :account_id
85
- obj_needs :data, :account_key
86
- obj_needs :data, :auth_uri
87
- obj_needs :data, :tenant
88
- obj_needs :data, :network
81
+ obj_needs :data, 'credentials#account_id'
82
+ obj_needs :data, 'credentials#account_key'
83
+ obj_needs :data, 'credentials#auth_uri'
84
+ obj_needs :data, 'credentials#tenant'
85
+ obj_needs :data, 'services#network'
89
86
 
90
87
  undefine_attribute :id # Do not return any predefined ID
91
88
  undefine_attribute :name # Do not return any predefined NAME
@@ -24,7 +24,7 @@ class CloudProcess
24
24
  # Usually, flavor records already exists, and the controller may map them
25
25
  # CloudProcess predefines some values. Consult CloudProcess.rb for details
26
26
  def forj_get_or_create_flavor(sCloudObj, hParams)
27
- flavor_name = hParams[:flavor_name]
27
+ flavor_name = hParams['server#flavor_name']
28
28
  PrcLib.state("Searching for flavor '%s'", flavor_name)
29
29
 
30
30
  flavors = query_flavor(sCloudObj, { :name => flavor_name }, hParams)
@@ -43,7 +43,7 @@ class CloudProcess
43
43
 
44
44
  # Should return 1 or 0 flavor.
45
45
  def query_flavor(sCloudObj, sQuery, hParams)
46
- flavor_name = hParams[:flavor_name]
46
+ flavor_name = hParams['server#flavor_name']
47
47
  # list = forj_query_flavor(sCloudObj, sQuery, hParams)
48
48
  # query_single(sCloudObj, list, sQuery, flavor_name)
49
49
  query_single(sCloudObj, sQuery, flavor_name)
@@ -73,8 +73,8 @@ class Lorj::BaseDefinition # rubocop: disable ClassAndModuleChildren
73
73
  # :delete_e => :forj_delete_flavor
74
74
  )
75
75
 
76
- obj_needs :CloudObject, :compute_connection
77
- obj_needs :data, :flavor_name, :for => [:create_e]
76
+ obj_needs :CloudObject, :compute_connection
77
+ obj_needs :data, 'server#flavor_name', :for => [:create_e]
78
78
  # Cloud provider will need to map to one of those predefined flavors.
79
79
  # limitation values may match exactly or at least ensure those limitation
80
80
  # are under provider limitation
@@ -21,7 +21,7 @@
21
21
  # ---------------------------------------------------------------------------
22
22
  class CloudProcess
23
23
  def forj_get_or_create_image(sCloudObj, hParams)
24
- image_name = hParams[:image_name]
24
+ image_name = hParams['server#image_name']
25
25
  PrcLib.state("Searching for image '%s'", image_name)
26
26
 
27
27
  search_the_image(sCloudObj, { :name => image_name }, hParams)
@@ -29,7 +29,7 @@ class CloudProcess
29
29
  end
30
30
 
31
31
  def search_the_image(sCloudObj, sQuery, hParams)
32
- image_name = hParams[:image_name]
32
+ image_name = hParams['server#image_name']
33
33
  images = forj_query_image(sCloudObj, sQuery, hParams)
34
34
  case images.length
35
35
  when 0
@@ -95,5 +95,5 @@ class Lorj::BaseDefinition # rubocop: disable Style/ClassAndModuleChildren
95
95
  )
96
96
 
97
97
  obj_needs :CloudObject, :compute_connection
98
- obj_needs :data, :image_name, :for => [:create_e]
98
+ obj_needs :data, 'server#image_name', :for => [:create_e]
99
99
  end
@@ -39,7 +39,7 @@ class CloudProcess
39
39
  # also set - Used to import it)
40
40
  #
41
41
  def forj_get_or_create_keypair(sCloudObj, hParams)
42
- keypair_name = hParams[:keypair_name]
42
+ keypair_name = hParams['credentials#keypair_name']
43
43
  PrcLib.state("Searching for keypair '%s'", keypair_name)
44
44
 
45
45
  keypair = forj_get_keypair(sCloudObj, keypair_name, hParams)
@@ -102,7 +102,7 @@ class Lorj::BaseDefinition
102
102
  )
103
103
 
104
104
  obj_needs :CloudObject, :compute_connection
105
- obj_needs :data, :keypair_name, :for => [:create_e]
105
+ obj_needs :data, 'credentials#keypair_name', :for => [:create_e]
106
106
  obj_needs :data, :keypair_path
107
107
  obj_needs :data, :keypair_base
108
108
 
@@ -174,9 +174,11 @@ class CloudProcess
174
174
 
175
175
  def keypair_import(hParams, loc_kpair)
176
176
  PrcLib.fatal(1, "Unable to import keypair '%s'. "\
177
- 'Public key file is not found. '\
177
+ "Public key file '%s' is not found. "\
178
178
  "Please run 'forj setup %s'",
179
- hParams[:keypair_name],
179
+ hParams['credentials#keypair_name'],
180
+ File.join(loc_kpair[:keypair_path],
181
+ loc_kpair[:public_key_name]),
180
182
  config[:account_name]) unless loc_kpair[:public_key_exist?]
181
183
  public_key_file = File.join(loc_kpair[:keypair_path],
182
184
  loc_kpair[:public_key_name])
@@ -185,7 +187,7 @@ class CloudProcess
185
187
  public_key = File.read(public_key_file)
186
188
  rescue => e
187
189
  PrcLib.fatal(1, "Unable to import keypair '%s'. '%s' is "\
188
- "unreadable.\n%s", hParams[:keypair_name],
190
+ "unreadable.\n%s", hParams['credentials#keypair_name'],
189
191
  loc_kpair[:public_key_file],
190
192
  e.message)
191
193
  end
@@ -200,7 +202,7 @@ class CloudProcess
200
202
  end
201
203
 
202
204
  def create_keypair(sCloudObj, hParams)
203
- key_name = hParams[:keypair_name]
205
+ key_name = hParams['credentials#keypair_name']
204
206
  PrcLib.state("Importing keypair '%s'", key_name)
205
207
  ssl_error_obj = SSLErrorMgt.new
206
208
  begin
@@ -274,7 +276,7 @@ class CloudProcess
274
276
  end
275
277
 
276
278
  def get_keypairs_path(hParams, hKeys)
277
- keypair_name = hParams[:keypair_name]
279
+ keypair_name = hParams['credentials#keypair_name']
278
280
 
279
281
  if hKeys[:private_key_exist?]
280
282
  hParams[:private_key_file] = File.join(hKeys[:keypair_path],
@@ -28,10 +28,10 @@ load File.join(hpcloud_path, 'security_groups.rb')
28
28
  # Defines Meta HPCloud object
29
29
  class Hpcloud
30
30
  define_obj :services
31
- obj_needs :data, :account_id, :mapping => :hp_access_key
32
- obj_needs :data, :account_key, :mapping => :hp_secret_key
33
- obj_needs :data, :auth_uri, :mapping => :hp_auth_uri
34
- obj_needs :data, :tenant, :mapping => :hp_tenant_id
31
+ obj_needs :data, 'credentials#account_id', :mapping => :hp_access_key
32
+ obj_needs :data, 'credentials#account_key', :mapping => :hp_secret_key
33
+ obj_needs :data, 'credentials#auth_uri', :mapping => :hp_auth_uri
34
+ obj_needs :data, 'credentials#tenant', :mapping => :hp_tenant_id
35
35
  obj_needs :data, ':excon_opts/:connect_timeout', :default_value => 30
36
36
  obj_needs :data, ':excon_opts/:read_timeout', :default_value => 240
37
37
  obj_needs :data, ':excon_opts/:write_timeout', :default_value => 240
@@ -41,18 +41,18 @@ class Hpcloud
41
41
  define_obj :compute_connection
42
42
  # Defines Data used by compute.
43
43
 
44
- obj_needs :data, :account_id, :mapping => :hp_access_key
45
- obj_needs :data, :account_key, :mapping => :hp_secret_key
46
- obj_needs :data, :auth_uri, :mapping => :hp_auth_uri
47
- obj_needs :data, :tenant, :mapping => :hp_tenant_id
48
- obj_needs :data, :compute, :mapping => :hp_avl_zone
44
+ obj_needs :data, 'credentials#account_id', :mapping => :hp_access_key
45
+ obj_needs :data, 'credentials#account_key', :mapping => :hp_secret_key
46
+ obj_needs :data, 'credentials#auth_uri', :mapping => :hp_auth_uri
47
+ obj_needs :data, 'credentials#tenant', :mapping => :hp_tenant_id
48
+ obj_needs :data, 'services#compute', :mapping => :hp_avl_zone
49
49
 
50
50
  define_obj :network_connection
51
- obj_needs :data, :account_id, :mapping => :hp_access_key
52
- obj_needs :data, :account_key, :mapping => :hp_secret_key
53
- obj_needs :data, :auth_uri, :mapping => :hp_auth_uri
54
- obj_needs :data, :tenant, :mapping => :hp_tenant_id
55
- obj_needs :data, :network, :mapping => :hp_avl_zone
51
+ obj_needs :data, 'credentials#account_id', :mapping => :hp_access_key
52
+ obj_needs :data, 'credentials#account_key', :mapping => :hp_secret_key
53
+ obj_needs :data, 'credentials#auth_uri', :mapping => :hp_auth_uri
54
+ obj_needs :data, 'credentials#tenant', :mapping => :hp_tenant_id
55
+ obj_needs :data, 'services#network', :mapping => :hp_avl_zone
56
56
 
57
57
  # Forj predefine following query mapping, used by ForjProcess
58
58
  # id => id, name => name
@@ -117,20 +117,20 @@ class Hpcloud
117
117
  def_attr_mapping :public_ip, :ip
118
118
 
119
119
  # defines setup Cloud data (:account => true for setup)
120
- define_data(:account_id,
120
+ define_data('credentials#account_id',
121
121
  :account => true,
122
122
  :desc => 'HPCloud Access Key (From horizon, user drop down, '\
123
123
  'manage keys)',
124
124
  :validate => /^[A-Z0-9]*$/
125
125
  )
126
- define_data(:account_key,
126
+ define_data('credentials#account_key',
127
127
  :account => true,
128
128
  :desc => 'HPCloud secret Key (From horizon, user drop down, '\
129
129
  'manage keys)',
130
130
  :encrypted => false,
131
131
  :validate => /^.+/
132
132
  )
133
- define_data(:auth_uri,
133
+ define_data('credentials#auth_uri',
134
134
  :account => true,
135
135
  :desc => 'HPCloud Authentication service URL (default is HP '\
136
136
  'Public cloud)',
@@ -138,17 +138,16 @@ class Hpcloud
138
138
  :default_value => 'https://region-a.geo-1.identity.hpcloudsvc'\
139
139
  '.com:35357/v2.0/'
140
140
  )
141
- define_data(:tenant,
141
+ define_data('credentials#tenant',
142
142
  :account => true,
143
143
  :desc => 'HPCloud Tenant ID (from horizon, identity, projecs,'\
144
144
  ' Project ID)',
145
145
  :validate => /^[0-9]+$/
146
146
  )
147
147
 
148
- define_data(:compute,
148
+ define_data('services#compute',
149
149
  :account => true,
150
150
  :desc => 'HPCloud Compute service zone (Ex: region-a.geo-1)',
151
- :depends_on => [:account_id, :account_key, :auth_uri, :tenant],
152
151
  :list_values => {
153
152
  :query_type => :controller_call,
154
153
  :object => :services,
@@ -158,10 +157,9 @@ class Hpcloud
158
157
  }
159
158
  )
160
159
 
161
- define_data(:network,
160
+ define_data('services#network',
162
161
  :account => true,
163
162
  :desc => 'HPCloud Network service zone (Ex: region-a.geo-1)',
164
- :depends_on => [:account_id, :account_key, :auth_uri, :tenant],
165
163
  :list_values => {
166
164
  :query_type => :controller_call,
167
165
  :object => :services,
@@ -227,9 +225,10 @@ class HpcloudController # rubocop: disable Metrics/ClassLength
227
225
  hParams[:user_data], hParams[:meta_data])
228
226
  when :image
229
227
  required?(hParams, :compute_connection)
230
- required?(hParams, :image_name)
228
+ required?(hParams, 'server#image_name')
231
229
 
232
- HPCompute.get_image(hParams[:compute_connection], hParams[:image_name])
230
+ HPCompute.get_image(hParams[:compute_connection],
231
+ hParams['server#image_name'])
233
232
  when :network
234
233
  required?(hParams, :network_connection)
235
234
  required?(hParams, :network_name)
@@ -252,11 +251,12 @@ class HpcloudController # rubocop: disable Metrics/ClassLength
252
251
  hParams[:security_group], hParams[:sg_desc])
253
252
  when :keypairs
254
253
  required?(hParams, :compute_connection)
255
- required?(hParams, :keypair_name)
254
+ required?(hParams, 'credentials#keypair_name')
256
255
  required?(hParams, :public_key)
257
256
 
258
257
  HPKeyPairs.create_keypair(hParams[:compute_connection],
259
- hParams[:keypair_name], hParams[:public_key])
258
+ hParams['credentials#keypair_name'],
259
+ hParams[:public_key])
260
260
  when :router
261
261
  required?(hParams, :network_connection)
262
262
  required?(hParams, :router_name)
@@ -21,11 +21,11 @@ require 'uri'
21
21
 
22
22
  hpcloud_path = File.expand_path(File.dirname(__FILE__))
23
23
 
24
- require File.join(hpcloud_path, 'openstack_query.rb')
25
- require File.join(hpcloud_path, 'openstack_get.rb')
26
- require File.join(hpcloud_path, 'openstack_delete.rb')
27
- require File.join(hpcloud_path, 'openstack_create.rb')
28
- require File.join(hpcloud_path, 'openstack_update.rb')
24
+ load File.join(hpcloud_path, 'openstack_query.rb')
25
+ load File.join(hpcloud_path, 'openstack_get.rb')
26
+ load File.join(hpcloud_path, 'openstack_delete.rb')
27
+ load File.join(hpcloud_path, 'openstack_create.rb')
28
+ load File.join(hpcloud_path, 'openstack_update.rb')
29
29
 
30
30
  # Defines Meta Openstack object
31
31
  class Openstack
@@ -34,37 +34,49 @@ class Openstack
34
34
  define_obj :services
35
35
  # Define Data used by service
36
36
 
37
- obj_needs :data, :account_id, :mapping => :openstack_username
38
- obj_needs :data, :account_key, :mapping => :openstack_api_key,
39
- :decrypt => true
40
- obj_needs :data, :auth_uri, :mapping => :openstack_auth_uri
41
- obj_needs :data, :tenant, :mapping => :openstack_tenant
37
+ obj_needs :data, 'credentials#account_id', :mapping => :openstack_username
38
+ obj_needs :data, 'credentials#account_key', :mapping => :openstack_api_key,
39
+ :decrypt => true
40
+ obj_needs :data, 'credentials#auth_uri', :mapping => :openstack_auth_url
41
+ obj_needs :data, 'credentials#tenant', :mapping => :openstack_tenant
42
42
  obj_needs :data, ':excon_opts/:connect_timeout', :default_value => 30
43
43
  obj_needs :data, ':excon_opts/:read_timeout', :default_value => 240
44
44
  obj_needs :data, ':excon_opts/:write_timeout', :default_value => 240
45
45
 
46
+ obj_needs_optional # Data required if uri contains v3
47
+ obj_needs :data, :user_domain, :mapping => :openstack_user_domain
48
+ obj_needs :data, :prj_domain, :mapping => :openstack_project_domain
49
+
46
50
  define_obj :compute_connection
47
51
  # Defines Data used by compute.
48
52
 
49
- obj_needs :data, :account_id, :mapping => :openstack_username
50
- obj_needs :data, :account_key, :mapping => :openstack_api_key,
51
- :decrypt => true
52
- obj_needs :data, :auth_uri, :mapping => :openstack_auth_url
53
- obj_needs :data, :tenant, :mapping => :openstack_tenant
54
- obj_needs :data, :compute, :mapping => :openstack_region
53
+ obj_needs :data, 'credentials#account_id', :mapping => :openstack_username
54
+ obj_needs :data, 'credentials#account_key', :mapping => :openstack_api_key,
55
+ :decrypt => true
56
+ obj_needs :data, 'credentials#auth_uri', :mapping => :openstack_auth_url
57
+ obj_needs :data, 'credentials#tenant', :mapping => :openstack_tenant
58
+ obj_needs :data, 'services#compute', :mapping => :openstack_region
59
+
60
+ obj_needs_optional # Data required if uri contains v3
61
+ obj_needs :data, :user_domain, :mapping => :openstack_user_domain
62
+ obj_needs :data, :prj_domain, :mapping => :openstack_project_domain
55
63
 
56
64
  define_obj :network_connection
57
- obj_needs :data, :account_id, :mapping => :openstack_username
58
- obj_needs :data, :account_key, :mapping => :openstack_api_key,
59
- :decrypt => true
60
- obj_needs :data, :auth_uri, :mapping => :openstack_auth_url
61
- obj_needs :data, :tenant, :mapping => :openstack_tenant
62
- obj_needs :data, :network, :mapping => :openstack_region
65
+ obj_needs :data, 'credentials#account_id', :mapping => :openstack_username
66
+ obj_needs :data, 'credentials#account_key', :mapping => :openstack_api_key,
67
+ :decrypt => true
68
+ obj_needs :data, 'credentials#auth_uri', :mapping => :openstack_auth_url
69
+ obj_needs :data, 'credentials#tenant', :mapping => :openstack_tenant
70
+ obj_needs :data, 'services#network', :mapping => :openstack_region
71
+
72
+ obj_needs_optional # Data required if uri contains v3
73
+ obj_needs :data, :user_domain, :mapping => :openstack_user_domain
74
+ obj_needs :data, :prj_domain, :mapping => :openstack_project_domain
63
75
 
64
76
  # Openstack tenants object
65
77
  define_obj(:tenants, :create_e => :openstack_get_tenant)
66
78
  obj_needs :CloudObject, :compute_connection
67
- obj_needs :data, :tenant
79
+ obj_needs :data, 'credentials#tenant'
68
80
 
69
81
  # Openstack Network
70
82
  define_obj :network
@@ -101,28 +113,32 @@ class Openstack
101
113
  def_attr_mapping :port_max, :port_range_max
102
114
  def_attr_mapping :addr_map, :remote_ip_prefix
103
115
  def_attr_mapping :sg_id, :security_group_id
116
+ end
104
117
 
105
- define_data(:account_id,
118
+ # Defines Meta Openstack object
119
+ class Openstack
120
+ define_data('credentials#account_id',
106
121
  :account => true,
107
122
  :desc => 'Openstack Username',
108
123
  :validate => /^.+/
109
124
  )
110
125
 
111
- define_data(:account_key,
126
+ define_data('credentials#account_key',
112
127
  :account => true,
113
128
  :desc => 'Openstack Password',
114
129
  :validate => /^.+/
115
130
  )
116
- define_data(:auth_uri,
131
+ define_data('credentials#auth_uri',
117
132
  :account => true,
118
133
  :explanation => "The authentication service is identified as '"\
119
134
  "identity' under your horizon UI - Project/Compute then "\
120
135
  'Access & security.',
121
136
  :desc => 'Openstack Authentication service URL. '\
122
- 'Ex: https://mycloud:5000/v2.0/tokens',
137
+ 'Ex: https://mycloud:5000/v2.0/tokens, '\
138
+ 'https://mycloud:5000/v3/auth/tokens, ...',
123
139
  :validate => %r{^http(s)?:\/\/.*\/tokens$}
124
140
  )
125
- define_data(:tenant,
141
+ define_data('credentials#tenant',
126
142
  :account => true,
127
143
  :explanation => 'The Project name is shown from your horizon UI'\
128
144
  ', on top left, close to the logo',
@@ -130,9 +146,30 @@ class Openstack
130
146
  :validate => /^.+/
131
147
  )
132
148
 
133
- define_data(:compute,
149
+ define_data(:user_domain,
150
+ :account => true,
151
+ :explanation => 'Openstack authentication (v3) requires your '\
152
+ 'user domain.',
153
+ :desc => 'User domain name',
154
+ :validate => /^.+/,
155
+ :pre_step_function => :openstack_domain_required?,
156
+ :before => 'credentials#account_id',
157
+ :after => 'credentials#auth_uri'
158
+ )
159
+
160
+ define_data(:prj_domain,
161
+ :account => true,
162
+ :desc => 'Tenant domain name',
163
+ :default_value => 'Default',
164
+ :validate => /^.+/,
165
+ :pre_step_function => :openstack_domain_required?,
166
+ :before => 'credentials#tenant',
167
+ :after => 'credentials#auth_uri'
168
+ )
169
+
170
+ define_data('services#compute',
134
171
  :account => true,
135
- :default_value => '<%= config[:network] %>',
172
+ :default_value => "<%= config['services#network'] %>",
136
173
  :explanation => 'Depending on your installation, you may need to'\
137
174
  ' provide a Region name. This information is shown under your '\
138
175
  'horizon UI - close right to the project name (top left).'\
@@ -141,19 +178,18 @@ class Openstack
141
178
  'set as OS_REGION_NAME.'\
142
179
  "\nIf there is no region shown, you can ignore it.",
143
180
  :desc => 'Openstack Compute Region (Ex: RegionOne)',
144
- :depends_on => [:account_id, :account_key, :auth_uri, :tenant],
145
181
  :list_values => {
146
182
  :query_type => :controller_call,
147
183
  :object => :services,
148
- :query_call => :get_services,
184
+ :query_call => :list_services,
149
185
  :query_params => { :list_services => [:Compute, :compute] },
150
186
  :validate => :list_strict
151
187
  }
152
188
  )
153
189
 
154
- define_data(:network,
190
+ define_data('services#network',
155
191
  :account => true,
156
- :default_value => '<%= config[:compute] %>',
192
+ :default_value => "<%= config['services#compute'] %>",
157
193
  :desc => 'Openstack Network Region (Ex: RegionOne)',
158
194
  :explanation => 'Depending on your installation, you may need to'\
159
195
  ' provide a Region name. This information is shown under your '\
@@ -162,11 +198,10 @@ class Openstack
162
198
  'API, then download the Openstack RC file. The Region name is '\
163
199
  'set as OS_REGION_NAME.'\
164
200
  "\nIf there is no region shown, you can ignore it.",
165
- :depends_on => [:account_id, :account_key, :auth_uri, :tenant],
166
201
  :list_values => {
167
202
  :query_type => :controller_call,
168
203
  :object => :services,
169
- :query_call => :get_services,
204
+ :query_call => :list_services,
170
205
  :query_params => { :list_services => [:Networking, :network] },
171
206
  :validate => :list_strict
172
207
  }
@@ -177,7 +212,7 @@ class Openstack
177
212
  attr_value_mapping :create, 'BUILD'
178
213
  attr_value_mapping :boot, :boot
179
214
  attr_value_mapping :active, 'ACTIVE'
180
- attr_value_mapping :error, 'ERROR'
215
+ attr_value_mapping :error, 'ERROR'
181
216
 
182
217
  def_attr_mapping :private_ip_address, :accessIPv4
183
218
  def_attr_mapping :public_ip_address, :accessIPv4
@@ -266,15 +301,7 @@ class OpenstackController
266
301
  def connect(sObjectType, hParams)
267
302
  case sObjectType
268
303
  when :services
269
- # Fog use URI type for auth uri: URI.parse(:auth_uri)
270
- # Convert openstack_auth_uri to type URI
271
- hParams[:hdata][:openstack_auth_uri] =
272
- URI.parse(hParams[:hdata][:openstack_auth_uri])
273
- retrieve_result =
274
- Fog::OpenStack.retrieve_tokens_v2(hParams[:hdata],
275
- hParams[:excon_opts])
276
- creds = format_retrieve_result(retrieve_result)
277
- return creds
304
+ get_services(hParams)
278
305
  when :compute_connection
279
306
  Fog::Compute.new(
280
307
  hParams[:hdata].merge(:provider => :openstack)
@@ -333,7 +360,7 @@ end
333
360
  # Following class describe how FORJ should handle Openstack Cloud objects.
334
361
  class OpenstackController
335
362
  # This function requires to return an Array of values or nil.
336
- def get_services(sObjectType, oParams)
363
+ def list_services(sObjectType, oParams)
337
364
  case sObjectType
338
365
  when :services
339
366
  # oParams[sObjectType] will provide the controller object.
@@ -367,22 +394,88 @@ class OpenstackController
367
394
  end
368
395
  return result
369
396
  else
370
- controller_error "'%s' is not a valid object for 'get_services'",
397
+ controller_error "'%s' is not a valid object for 'list_services'",
371
398
  sObjectType
372
399
  end
373
400
  end
374
401
 
375
- def format_retrieve_result(retrieve_result)
376
- {
377
- :auth_token => retrieve_result['access']['token']['id'],
378
- :expires => retrieve_result['access']['token']['expires'],
379
- :service_catalog =>
380
- get_service_catalog(retrieve_result['access']['serviceCatalog']),
381
- :endpoint_url => nil,
382
- :cdn_endpoint_url => nil
383
- }
402
+ # function to return a well formatted data for list of services
403
+ def get_services(hParams)
404
+ # Fog use URI type for auth uri: URI.parse('credentials#auth_uri')
405
+ # Convert openstack_auth_uri to type URI
406
+ openstack_auth_url = hParams[:hdata][:openstack_auth_url]
407
+ hParams[:hdata][:openstack_auth_uri] = URI.parse(openstack_auth_url)
408
+
409
+ case openstack_auth_url
410
+ when /v1(\.\d+)?/
411
+ version = :v1
412
+ body = Fog::OpenStack.retrieve_tokens_v1(hParams[:hdata],
413
+ hParams[:excon_opts])
414
+ when /v2(\.\d+)?/
415
+ version = :v2
416
+ body = Fog::OpenStack.retrieve_tokens_v2(hParams[:hdata],
417
+ hParams[:excon_opts])
418
+ when /v3(\.\d+)?/
419
+ version = :v3
420
+ body = Fog::OpenStack.retrieve_tokens_v3(hParams[:hdata],
421
+ hParams[:excon_opts])
422
+ else
423
+ version = :v2
424
+ body = Fog::OpenStack.retrieve_tokens_v2(hParams[:hdata],
425
+ hParams[:excon_opts])
426
+ end
427
+ build_result(version, body)
428
+ end
429
+ # Function to provide a wel formatted standard data, usable by openstack
430
+ # provider
431
+ #
432
+ # * *args*:
433
+ # - version: :v1, :v2 or :v3. Based on openstack authentication version
434
+ # - body: result of Internal Fog::OpenStack.retrieve_tokens_v?
435
+ # * *returns*:
436
+ # - Hash: Requires at least:
437
+ # - :service_catalog : Hash of services available.
438
+ #
439
+ def build_result(version, body)
440
+ case version
441
+ when :v1 # Not supported
442
+ { :service_catalog => {} }
443
+ when :v2 #
444
+ {
445
+ :auth_token => body['access']['token']['id'],
446
+ :expires => body['access']['token']['expires'],
447
+ :service_catalog =>
448
+ get_service_catalog(body['access']['serviceCatalog']),
449
+ :endpoint_url => nil,
450
+ :cdn_endpoint_url => nil
451
+ }
452
+ when :v3 # body is an Array: 0 is the body, and 1 is the header
453
+ {
454
+ :auth_token => body[1]['X-Subject-Token'],
455
+ :expires => body[0]['token']['expires'],
456
+ :service_catalog =>
457
+ get_service_catalog(body[0]['token']['catalog']),
458
+ :endpoint_url => nil,
459
+ :cdn_endpoint_url => nil
460
+ }
461
+ end
384
462
  end
385
463
 
464
+ # Build service catalog at the following format:
465
+ #
466
+ # :<type>:
467
+ # 'name': <name>
468
+ # :<region> : <url>
469
+ #
470
+ # where:
471
+ # - type : Can be :identity, :orchestration, :volume, ...
472
+ # - name : Is the name of the service like 'swift', 'heat', 'cinder', ...
473
+ # - region: Is the region name. Can be any string like 'regionOne'
474
+ # - url : is the exposed url of that service
475
+ # like https://swift.company.com/v1/HOSP_...
476
+ #
477
+ # It supports V2/V3 service auth response.
478
+ #
386
479
  def get_service_catalog(body)
387
480
  fail 'Unable to parse service catalog.' unless body
388
481
  service_catalog = {}
@@ -392,19 +485,30 @@ class OpenstackController
392
485
  type = type.to_sym
393
486
  next if s['endpoints'].nil?
394
487
  service_catalog[type] = {}
488
+ # V2/V3 auth output
395
489
  service_catalog[type]['name'] = s['name']
396
- service_catalog = parse_service_catalog_endpoint(s, type, service_catalog)
490
+ parse_service_catalog_endpoint(s, type, service_catalog)
397
491
  end
398
492
  service_catalog
399
493
  end
400
494
 
495
+ # function which read a list of endpoints of a service to extract the url
496
+ #
497
+ # v2: Get 'endpoints'[]/'publicURL'
498
+ # v3: Get 'endpoints'[]/'url' if 'endpoints'[]/'interface' == 'public'
401
499
  def parse_service_catalog_endpoint(s, type, service_catalog)
402
500
  s['endpoints'].each do |ep|
403
501
  next if ep['region'].nil?
404
- next if ep['publicURL'].nil?
405
- next if ep['publicURL'].empty?
502
+
503
+ if ep['interface'] == 'public' # V3 auth output
504
+ service_catalog[type][ep['region'].to_sym] = ep['url']
505
+ break
506
+ end
507
+
508
+ next if ep['publicURL'].nil? || ep['publicURL'].empty?
509
+ # V2 auth output
406
510
  service_catalog[type][ep['region'].to_sym] = ep['publicURL']
511
+ break
407
512
  end
408
- service_catalog
409
513
  end
410
514
  end
@@ -78,13 +78,13 @@ class OpenstackController
78
78
 
79
79
  def create_keypairs(hParams)
80
80
  required?(hParams, :compute_connection)
81
- required?(hParams, :keypair_name)
81
+ required?(hParams, 'credentials#keypair_name')
82
82
  required?(hParams, :public_key)
83
83
 
84
84
  # API:
85
85
  # https://github.com/fog/fog/blob/master/lib/fog/openstack/docs/compute.md
86
86
  service = hParams[:compute_connection]
87
- service.key_pairs.create(:name => hParams[:keypair_name],
87
+ service.key_pairs.create(:name => hParams['credentials#keypair_name'],
88
88
  :public_key => hParams[:public_key])
89
89
  end
90
90
 
@@ -126,7 +126,11 @@ class OpenstackController
126
126
  while server.state != 'ACTIVE'
127
127
  sleep(5)
128
128
  server = compute_connect.servers.get(server.id)
129
- return if server.state == 'ERROR'
129
+
130
+ if server.state == 'Error'
131
+ controller_error('Unable to assign a Public IP to a server '\
132
+ "in error '%s'", server.name)
133
+ end
130
134
  end
131
135
 
132
136
  addresses = compute_connect.addresses.all
@@ -17,10 +17,15 @@
17
17
  # Specific openstack process added to the application process.
18
18
  class OpenstackProcess
19
19
  def openstack_get_tenant(sObjectType, hParams)
20
- tenant_name = hParams[:tenant]
20
+ tenant_name = hParams['credentials#tenant']
21
21
  query = { :name => tenant_name }
22
22
  PrcLib.state("searching for tenant '%s'", tenant_name)
23
23
  list = query_single(sObjectType, query, tenant_name)
24
24
  return list[0] if list.length > 0
25
25
  end
26
+
27
+ def openstack_domain_required?(_data)
28
+ return true if config[:auth_uri].match(%r{/v3/})
29
+ false
30
+ end
26
31
  end
data/lorj_cloud.gemspec CHANGED
@@ -8,6 +8,7 @@ Gem::Specification.new do |spec|
8
8
  spec.version = LorjCloud::VERSION
9
9
  spec.authors = ["Christophe Larsonneur"]
10
10
  spec.email = ["clarsonneur@gmail.com"]
11
+ spec.date = LorjCloud::DATE
11
12
 
12
13
  spec.summary = %q{Lorj cloud process.}
13
14
  spec.description = %q{simplify cloud management, thanks to predefined process to manage cloud obj and make it work. }
@@ -25,8 +26,7 @@ Gem::Specification.new do |spec|
25
26
  spec.add_development_dependency "bundler", "~> 1.9"
26
27
  spec.add_development_dependency "rake", "~> 10.0"
27
28
 
28
- spec.add_runtime_dependency "lorj", "~> 1.0.10"
29
- spec.add_runtime_dependency "fog", "~> 1.26.0"
29
+ spec.add_runtime_dependency "lorj", "~> 1.0.11"
30
+ spec.add_runtime_dependency "fog", "~> 1.30.0"
30
31
  spec.add_development_dependency "rspec", "~> 3.1.0"
31
- spec.add_development_dependency "rubocop", "~> 0.30.0"
32
32
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lorj_cloud
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
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-04-17 00:00:00.000000000 Z
11
+ date: 2015-05-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -44,28 +44,28 @@ dependencies:
44
44
  requirements:
45
45
  - - ~>
46
46
  - !ruby/object:Gem::Version
47
- version: 1.0.10
47
+ version: 1.0.11
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ~>
53
53
  - !ruby/object:Gem::Version
54
- version: 1.0.10
54
+ version: 1.0.11
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: fog
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: 1.26.0
61
+ version: 1.30.0
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - ~>
67
67
  - !ruby/object:Gem::Version
68
- version: 1.26.0
68
+ version: 1.30.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -80,20 +80,6 @@ dependencies:
80
80
  - - ~>
81
81
  - !ruby/object:Gem::Version
82
82
  version: 3.1.0
83
- - !ruby/object:Gem::Dependency
84
- name: rubocop
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ~>
88
- - !ruby/object:Gem::Version
89
- version: 0.30.0
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ~>
95
- - !ruby/object:Gem::Version
96
- version: 0.30.0
97
83
  description: 'simplify cloud management, thanks to predefined process to manage cloud
98
84
  obj and make it work. '
99
85
  email:
@@ -110,11 +96,12 @@ files:
110
96
  - README.md
111
97
  - Rakefile
112
98
  - bin/console
99
+ - bin/lorj_cloud
113
100
  - bin/setup
114
- - lib/data.yaml
115
- - lib/defaults.yaml
116
101
  - lib/lorj_cloud.rb
117
102
  - lib/lorj_cloud/version.rb
103
+ - lib/process/cloud/data.yaml
104
+ - lib/process/cloud/defaults.yaml
118
105
  - lib/process/cloud/process/common.rb
119
106
  - lib/process/cloud/process/connection.rb
120
107
  - lib/process/cloud/process/external_network.rb
@@ -131,22 +118,22 @@ files:
131
118
  - lib/process/cloud/process/server.rb
132
119
  - lib/process/cloud/process/server_log.rb
133
120
  - lib/process/cloud/process/subnetwork.rb
121
+ - lib/process/cloud/providers/hpcloud/compute.rb
122
+ - lib/process/cloud/providers/hpcloud/hpcloud.rb
123
+ - lib/process/cloud/providers/hpcloud/network.rb
124
+ - lib/process/cloud/providers/hpcloud/security_groups.rb
125
+ - lib/process/cloud/providers/mock/mock.rb
126
+ - lib/process/cloud/providers/openstack/openstack.rb
127
+ - lib/process/cloud/providers/openstack/openstack_create.rb
128
+ - lib/process/cloud/providers/openstack/openstack_delete.rb
129
+ - lib/process/cloud/providers/openstack/openstack_get.rb
130
+ - lib/process/cloud/providers/openstack/openstack_process.rb
131
+ - lib/process/cloud/providers/openstack/openstack_query.rb
132
+ - lib/process/cloud/providers/openstack/openstack_update.rb
133
+ - lib/process/cloud/providers/templates/compute.rb
134
+ - lib/process/cloud/providers/templates/mycloud.rb
135
+ - lib/process/cloud/providers/templates/network.rb
134
136
  - lib/process/cloud_process.rb
135
- - lib/providers/hpcloud/compute.rb
136
- - lib/providers/hpcloud/hpcloud.rb
137
- - lib/providers/hpcloud/network.rb
138
- - lib/providers/hpcloud/security_groups.rb
139
- - lib/providers/mock/mock.rb
140
- - lib/providers/openstack/openstack.rb
141
- - lib/providers/openstack/openstack_create.rb
142
- - lib/providers/openstack/openstack_delete.rb
143
- - lib/providers/openstack/openstack_get.rb
144
- - lib/providers/openstack/openstack_process.rb
145
- - lib/providers/openstack/openstack_query.rb
146
- - lib/providers/openstack/openstack_update.rb
147
- - lib/providers/templates/compute.rb
148
- - lib/providers/templates/mycloud.rb
149
- - lib/providers/templates/network.rb
150
137
  - lorj_cloud.gemspec
151
138
  homepage: https://github.com/forj-oss/lorj_cloud
152
139
  licenses: []
@@ -172,4 +159,3 @@ signing_key:
172
159
  specification_version: 4
173
160
  summary: Lorj cloud process.
174
161
  test_files: []
175
- has_rdoc:
data/lib/data.yaml DELETED
File without changes
data/lib/defaults.yaml DELETED
File without changes