torpedo 1.0.19 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,12 @@
1
+ * Wed Oct 2 2013 Dan Prince <dprince@redhat.com> - 2.0.0
2
+ -Switch from openstack-compute to fog.
3
+ -Add 'network_namespace' option which can be used when testing
4
+ Neutron namespaces.
5
+ -Add support for volumes.
6
+ -Add support for keypairs.
7
+ -Add support for metering.
8
+ -Add support for orchestration.
9
+
1
10
  * Thu Feb 14 2013 Dan Prince <dprince@redhat.com> - 1.0.19
2
11
  -Added NETWORK_LABEL option. (defaults to 'public')
3
12
 
@@ -1,4 +1,5 @@
1
- Copyright (c) 2011 Dan Prince
1
+ Copyright (c) 2011-2012 Dan Prince
2
+ Copyright (c) 2012-2013 Red Hat Inc.
2
3
 
3
4
  Permission is hereby granted, free of charge, to any person obtaining
4
5
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -11,7 +11,7 @@ Installation
11
11
 
12
12
  1. Install the Gem.
13
13
  2. Create the torpedo.conf file in your HOME directory.
14
- 3. Source novarc for your OpenStack Compute account.
14
+ 3. Source the rc file for your OpenStack account (keystone credentials, etc).
15
15
 
16
16
  ```bash
17
17
  gem install torpedo
@@ -54,7 +54,7 @@ Installation
54
54
  #keyname: test
55
55
  EOF_CAT
56
56
 
57
- source $PATH_TO_YOUR/novarc
57
+ source $PATH_TO_YOUR/openstackrc
58
58
  ```
59
59
 
60
60
  Examples
@@ -108,4 +108,4 @@ Payload
108
108
 
109
109
  License
110
110
  -------
111
- Copyright (c) 2011-2012 Dan Prince. See LICENSE.txt for further details.
111
+ Copyright (c) 2011-2013 Dan Prince. See LICENSE.txt for further details.
data/Rakefile CHANGED
@@ -19,13 +19,14 @@ Jeweler::Tasks.new do |gem|
19
19
  gem.homepage = "http://github.com/dprince/torpedo"
20
20
  gem.license = "MIT"
21
21
  gem.summary = %Q{Fire when ready. Fast Ruby integration tests for OpenStack.}
22
- gem.description = %Q{Fast integration tests OpenStack Compute.}
23
- gem.email = "dan.prince@rackspace.com"
22
+ gem.description = %Q{Fast integration tests for OpenStack.}
23
+ gem.email = "dprince@redhat.com"
24
24
  gem.authors = ["Dan Prince"]
25
25
  # dependencies defined in Gemfile
26
- gem.add_dependency 'thor', '~>0.14.6'
27
- gem.add_dependency 'openstack-compute', '~>1.1.5'
28
- gem.add_dependency('net-ssh', '~>2.2.1')
26
+ gem.add_dependency 'thor'
27
+ gem.add_dependency 'test-unit'
28
+ gem.add_dependency 'fog'
29
+ gem.add_dependency 'net-ssh'
29
30
  end
30
31
  Jeweler::RubygemsDotOrgTasks.new
31
32
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.19
1
+ 2.1.0
@@ -3,7 +3,6 @@
3
3
  require "rubygems"
4
4
  require "thor"
5
5
 
6
- # uncomment this for local testing
7
6
  #$:.unshift File.dirname(__FILE__) + "/../lib"
8
7
  STDOUT.sync = true
9
8
 
@@ -1,6 +1,12 @@
1
1
  require 'rubygems'
2
2
  require 'torpedo/config'
3
3
 
4
+ if RUBY_VERSION =~ /^1.9.*/ then
5
+ gem 'test-unit'
6
+ end
7
+ require 'test/unit'
8
+ require 'test/unit/ui/console/testrunner'
9
+
4
10
  configs = Torpedo::Config.load_configs
5
11
 
6
12
  SSH_TIMEOUT=(configs['ssh_timeout'] || 30).to_i
@@ -9,6 +15,7 @@ PING_TIMEOUT=(configs['ping_timeout'] || 60).to_i
9
15
  TEST_PING=configs.fetch('test_ping', true)
10
16
  SERVER_BUILD_TIMEOUT=(configs['server_build_timeout'] || 60).to_i
11
17
  NETWORK_LABEL=(configs['network_label'] || 'public')
18
+ NETWORK_NAMESPACE=configs['network_namespace']
12
19
  SLEEP_AFTER_IMAGE_CREATE=(configs['sleep_after_image_create'] || 0).to_i
13
20
  SSH_PRIVATE_KEY=configs['ssh_private_key'] || ENV['HOME'] + "/.ssh/id_rsa"
14
21
  SSH_PUBLIC_KEY=configs['ssh_public_key'] || ENV['HOME'] + "/.ssh/id_rsa.pub"
@@ -24,8 +31,8 @@ TEST_IP_TYPE=configs['test_ip_type'] || 4
24
31
  TEST_LIMITS=configs.fetch('test_limits', true)
25
32
  CLEAN_UP_SERVERS=configs.fetch('clean_up_servers', true)
26
33
  CLEAN_UP_IMAGES=configs.fetch('clean_up_images', true)
27
- KEYPAIR=configs['keypair']
28
- KEYNAME=configs['keyname']
34
+ CLEAN_UP_KEYPAIRS=configs.fetch('clean_up_keypairs', true)
35
+ KEYPAIR_ENABLED = configs.fetch('keypairs', false)
29
36
 
30
37
  IMAGE_REF=configs['image_ref']
31
38
  IMAGE_NAME=configs['image_name']
@@ -36,58 +43,160 @@ FLAVOR_NAME=configs['flavor_name']
36
43
  FLAVOR_REF_RESIZE=configs['flavor_ref_resize']
37
44
  FLAVOR_NAME_RESIZE=configs['flavor_name_resize']
38
45
 
39
- OPENSTACK_COMPUTE_VERSION=configs['openstack_compute_version']
46
+ #volume opts
47
+ volume_opts=configs['volumes'] || {}
48
+ VOLUME_ENABLED = volume_opts.fetch('enabled', false)
49
+ VOLUME_BUILD_TIMEOUT = (volume_opts['build_timeout'] || 120).to_i
50
+ TEST_VOLUME_SNAPSHOTS = volume_opts.fetch('test_snapshots', false)
51
+ CLEAN_UP_VOLUMES = volume_opts.fetch('cleanup', true)
52
+
53
+ #metering opts
54
+ metering_opts=configs['metering'] || {}
55
+ METERING_ENABLED = metering_opts.fetch('enabled', false)
56
+ METERING_SAMPLE_TIMEOUT = (metering_opts['sample_timeout'] || 360).to_i
57
+
58
+ #orchestration opts
59
+ orchestration_opts=configs['orchestration'] || {}
60
+ ORCHESTRATION_ENABLED = orchestration_opts.fetch('enabled', false)
61
+ STACK_CREATE_TIMEOUT = (orchestration_opts['stack_create_timeout'] || 120).to_i
62
+ CLEAN_UP_STACKS = orchestration_opts.fetch('cleanup', true)
40
63
 
41
- require 'torpedo/compute/helper'
64
+ FOG_VERSION=configs['fog_version']
42
65
 
66
+ TORPEDO_TEST_SUITE = Test::Unit::TestSuite.new("Torpedo")
43
67
  module Torpedo
44
- class Tasks < Thor
68
+
69
+ class TorpedoTests
70
+ def self.suite
71
+ return TORPEDO_TEST_SUITE
72
+ end
73
+ end
74
+
75
+ class Tasks < Thor
45
76
 
46
77
  desc "flavors", "Run flavors tests for the OSAPI."
47
78
  def flavors
48
79
  require 'torpedo/compute/flavors'
80
+ TORPEDO_TEST_SUITE << Torpedo::Compute::Flavors.suite
81
+ exit Test::Unit::UI::Console::TestRunner.run(TorpedoTests).passed?
49
82
  end
50
83
 
51
84
  desc "limits", "Run limits tests for the OSAPI."
52
85
  def limits
53
86
  require 'torpedo/compute/limits'
87
+ TORPEDO_TEST_SUITE << Torpedo::Compute::Limits.suite
88
+ exit Test::Unit::UI::Console::TestRunner.run(TorpedoTests).passed?
54
89
  end
55
90
 
56
91
  desc "images", "Run images tests for the OSAPI."
57
92
  def images
58
93
  require 'torpedo/compute/images'
94
+ TORPEDO_TEST_SUITE << Torpedo::Compute::Images.suite
95
+ exit Test::Unit::UI::Console::TestRunner.run(TorpedoTests).passed?
59
96
  end
60
97
 
61
98
  desc "servers", "Run servers tests for the OSAPI."
62
99
  def servers
100
+ require 'torpedo/volume/volumes'
101
+ require 'torpedo/compute/keypairs'
63
102
  require 'torpedo/compute/servers'
103
+ require 'torpedo/metering/meters'
104
+ require 'torpedo/cleanup'
105
+ if VOLUME_ENABLED
106
+ TORPEDO_TEST_SUITE << Torpedo::Volume::Volumes.suite
107
+ end
108
+ if KEYPAIR_ENABLED
109
+ TORPEDO_TEST_SUITE << Torpedo::Compute::Keypairs.suite
110
+ end
111
+ TORPEDO_TEST_SUITE << Torpedo::Compute::Servers.suite
112
+ if METERING_ENABLED
113
+ TORPEDO_TEST_SUITE << Torpedo::Metering::Meters.suite
114
+ end
115
+ TORPEDO_TEST_SUITE << Torpedo::Cleanup.suite
116
+ exit Test::Unit::UI::Console::TestRunner.run(TorpedoTests).passed?
64
117
  end
65
118
 
66
- desc "cleanup", "Clean up servers and images (not necessary normally)."
67
- def cleanup
68
- conn = Torpedo::Compute::Helper::get_connection
69
- conn.servers.each do |server|
70
- server = conn.server(server[:id])
71
- if server.name == 'torpedo'
72
- puts 'Deleting torpedo server'
73
- server.delete!
74
- end
75
- end
76
- conn.images.each do |image|
77
- image = conn.image(image[:id])
78
- if image.server and conn.server(image.server['id']).name == 'torpedo'
79
- puts 'Deleting torpedo image'
80
- image.delete!
81
- end
119
+ desc "keypairs", "Run keypair tests for the OSAPI."
120
+ def keypairs
121
+ require 'torpedo/compute/keypairs'
122
+ require 'torpedo/cleanup'
123
+ TORPEDO_TEST_SUITE << Torpedo::Compute::Keypairs.suite
124
+ TORPEDO_TEST_SUITE << Torpedo::Cleanup.suite
125
+ exit Test::Unit::UI::Console::TestRunner.run(TorpedoTests).passed?
126
+ end
127
+
128
+ desc "volumes", "Run volume tests for the OSAPI."
129
+ def volumes
130
+ require 'torpedo/volume/volumes'
131
+ require 'torpedo/cleanup'
132
+ TORPEDO_TEST_SUITE << Torpedo::Volume::Volumes.suite
133
+ TORPEDO_TEST_SUITE << Torpedo::Cleanup.suite
134
+ exit Test::Unit::UI::Console::TestRunner.run(TorpedoTests).passed?
135
+ end
136
+
137
+ desc "orchestration", "Run orchestration tests for the OSAPI."
138
+ def orchestration
139
+ require 'torpedo/compute/keypairs'
140
+ require 'torpedo/orchestration/stacks'
141
+ require 'torpedo/cleanup'
142
+ if KEYPAIR_ENABLED
143
+ TORPEDO_TEST_SUITE << Torpedo::Compute::Keypairs.suite
82
144
  end
145
+ TORPEDO_TEST_SUITE << Torpedo::Orchestration::Stacks.suite
146
+ TORPEDO_TEST_SUITE << Torpedo::Cleanup.suite
147
+ exit Test::Unit::UI::Console::TestRunner.run(TorpedoTests).passed?
148
+ end
149
+
150
+ desc "cleanup", "Clean up servers, images, volumes, etc."
151
+ def cleanup
152
+ require 'torpedo/cleanup'
153
+ TORPEDO_TEST_SUITE << Torpedo::Cleanup.suite
154
+ exit Test::Unit::UI::Console::TestRunner.run(TorpedoTests).passed?
83
155
  end
84
156
 
85
157
  desc "all", "Run all tests."
86
158
  def all
159
+ require 'torpedo/compute/keypairs'
160
+ require 'torpedo/orchestration/stacks'
87
161
  require 'torpedo/compute/flavors'
88
162
  require 'torpedo/compute/limits'
89
163
  require 'torpedo/compute/images'
164
+ require 'torpedo/volume/volumes'
90
165
  require 'torpedo/compute/servers'
166
+ require 'torpedo/metering/meters'
167
+ require 'torpedo/cleanup'
168
+ if KEYPAIR_ENABLED
169
+ TORPEDO_TEST_SUITE << Torpedo::Compute::Keypairs.suite
170
+ end
171
+ if ORCHESTRATION_ENABLED
172
+ TORPEDO_TEST_SUITE << Torpedo::Orchestration::Stacks.suite
173
+ end
174
+ TORPEDO_TEST_SUITE << Torpedo::Compute::Flavors.suite
175
+ TORPEDO_TEST_SUITE << Torpedo::Compute::Limits.suite
176
+ TORPEDO_TEST_SUITE << Torpedo::Compute::Images.suite
177
+ if VOLUME_ENABLED
178
+ TORPEDO_TEST_SUITE << Torpedo::Volume::Volumes.suite
179
+ end
180
+ TORPEDO_TEST_SUITE << Torpedo::Compute::Servers.suite
181
+ if METERING_ENABLED
182
+ TORPEDO_TEST_SUITE << Torpedo::Metering::Meters.suite
183
+ end
184
+ TORPEDO_TEST_SUITE << Torpedo::Cleanup.suite
185
+ exit Test::Unit::UI::Console::TestRunner.run(TorpedoTests).passed?
186
+ end
187
+
188
+ desc "ssh", "Test ssh connectivity on a server."
189
+ method_options :ip_address => :string
190
+ method_options :test_command => :string
191
+ method_options :test_output => :string
192
+ method_options :admin_password => :string
193
+ def ssh(options=(options or {}))
194
+ require 'torpedo/net_util'
195
+ if Torpedo::NetUtil.ssh_test(options[:ip_address], nil, options[:test_command], options[:test_output], options[:admin_password]) then
196
+ exit 0
197
+ else
198
+ exit 1
199
+ end
91
200
  end
92
201
 
93
202
  desc "fire", "Fire away! (alias for all)"
@@ -95,5 +204,5 @@ class Tasks < Thor
95
204
  invoke :all
96
205
  end
97
206
 
98
- end
207
+ end
99
208
  end
@@ -0,0 +1,74 @@
1
+ require 'torpedo'
2
+ require 'torpedo/compute/helper'
3
+ require 'torpedo/volume/helper'
4
+
5
+
6
+ module Torpedo
7
+
8
+ class Cleanup < Test::Unit::TestCase
9
+
10
+ def test_999_cleanup
11
+ if ORCHESTRATION_ENABLED and CLEAN_UP_STACKS then
12
+ orchestration_conn = Torpedo::Orchestration::Helper::get_connection
13
+ orchestration_conn.stacks.each do |stack|
14
+ stack = orchestration_conn.stacks.get(stack.id)
15
+ if stack.stack_name == 'torpedo'
16
+ #puts 'Deleting torpedo stack'
17
+ assert(stack.destroy)
18
+ # We wait for the stack to be deleted here to avoid pulling
19
+ # the rug on heat (and causing a potential log ERROR)
20
+ begin
21
+ timeout(STACK_CREATE_TIMEOUT) do
22
+ until orchestration_conn.stacks.get(stack.id).nil? do
23
+ sleep(1)
24
+ end
25
+ end
26
+ rescue Timeout::Error => te
27
+ fail('Timeout deleting stack.')
28
+ end
29
+
30
+ end
31
+ end
32
+ end
33
+ compute_conn = Torpedo::Compute::Helper::get_connection
34
+ if CLEAN_UP_SERVERS
35
+ compute_conn.servers.each do |server|
36
+ server = compute_conn.servers.get(server.id)
37
+ if server.name == 'torpedo'
38
+ #puts 'Deleting torpedo server'
39
+ assert(server.destroy)
40
+ end
41
+ end
42
+ end
43
+ if CLEAN_UP_IMAGES
44
+ compute_conn.images.each do |image|
45
+ image = compute_conn.images.get(image.id)
46
+ if image.name == 'torpedo'
47
+ #puts 'Deleting torpedo image'
48
+ assert(image.destroy)
49
+ end
50
+ end
51
+ end
52
+ if KEYPAIR_ENABLED and CLEAN_UP_KEYPAIRS then
53
+ compute_conn.key_pairs.each do |key_pair|
54
+ key_pair = compute_conn.key_pairs.get(key_pair.name)
55
+ if key_pair.name == 'torpedo'
56
+ #puts 'Deleting torpedo key_pair'
57
+ assert(key_pair.destroy)
58
+ end
59
+ end
60
+ end
61
+ if VOLUME_ENABLED and CLEAN_UP_VOLUMES then
62
+ volume_conn = Torpedo::Volume::Helper::get_connection
63
+ volume_conn.volumes.each do |volume|
64
+ volume = volume_conn.volumes.get(volume.id)
65
+ if volume.display_name == 'torpedo'
66
+ #puts 'Deleting torpedo volume'
67
+ assert(volume.destroy)
68
+ end
69
+ end
70
+ end
71
+ end
72
+
73
+ end
74
+ end
@@ -1,34 +1,34 @@
1
1
  require File.dirname(__FILE__) + '/helper'
2
2
 
3
3
  module Torpedo
4
- module Compute
5
- class Flavors < Test::Unit::TestCase
4
+ module Compute
5
+ class Flavors < Test::Unit::TestCase
6
6
 
7
- def setup
8
- @conn=Helper::get_connection
9
- end
7
+ def setup
8
+ @conn=Helper::get_connection
9
+ end
10
10
 
11
- def test_list
11
+ def test_list
12
12
 
13
- @conn.flavors.each do |flavor|
14
- assert_not_nil(flavor[:id])
15
- assert_not_nil(flavor[:name])
16
- assert_not_nil(flavor[:ram])
17
- assert_not_nil(flavor[:disk])
18
- end
13
+ @conn.flavors.each do |flavor|
14
+ assert_not_nil(flavor.id)
15
+ assert_not_nil(flavor.name)
16
+ assert_not_nil(flavor.ram)
17
+ assert_not_nil(flavor.disk)
18
+ end
19
19
 
20
- end
20
+ end
21
21
 
22
- def test_get
22
+ def test_get
23
23
 
24
- flavor = @conn.flavor(1)
25
- assert_not_nil(flavor.id)
26
- assert_not_nil(flavor.name)
27
- assert_not_nil(flavor.ram)
28
- assert_not_nil(flavor.disk)
24
+ flavor = @conn.flavors.get(1)
25
+ assert_not_nil(flavor.id)
26
+ assert_not_nil(flavor.name)
27
+ assert_not_nil(flavor.ram)
28
+ assert_not_nil(flavor.disk)
29
29
 
30
- end
30
+ end
31
31
 
32
- end
33
- end
32
+ end
33
+ end
34
34
  end
@@ -2,112 +2,106 @@ if RUBY_VERSION =~ /^1.9.*/ then
2
2
  gem 'test-unit'
3
3
  end
4
4
  require 'test/unit'
5
- if OPENSTACK_COMPUTE_VERSION
6
- gem 'openstack-compute', OPENSTACK_COMPUTE_VERSION
5
+ if FOG_VERSION
6
+ gem 'fog', FOG_VERSION
7
7
  end
8
- require 'openstack/compute'
8
+ require 'fog'
9
9
 
10
10
  module Torpedo
11
- module Compute
12
- module Helper
11
+ module Compute
12
+ module Helper
13
13
 
14
- def self.get_connection
15
- debug = false
16
- if ENV['DEBUG'] and ENV['DEBUG'] == 'true' then
17
- debug = true
18
- end
19
-
20
- auth_method = 'password'
21
- if ENV['NOVA_RAX_AUTH'] and ENV['NOVA_RAX_AUTH'] == '1' then
22
- auth_method = 'rax-kskey'
23
- end
14
+ def self.get_connection
24
15
 
25
- auth_url = ENV['NOVA_URL'] || ENV['OS_AUTH_URL']
26
- api_key = ENV['NOVA_API_KEY'] || ENV['OS_PASSWORD']
27
- username = ENV['NOVA_USERNAME'] || ENV['OS_USERNAME']
28
- authtenant = ENV['NOVA_PROJECT_ID'] || ENV['OS_TENANT_NAME']
29
- region = ENV['NOVA_REGION_NAME'] || ENV['OS_AUTH_REGION']
30
- service_type = ENV['NOVA_SERVICE_TYPE'] || "compute"
31
- service_name = ENV['NOVA_SERVICE_NAME'] #nil by default
32
-
33
- OpenStack::Compute::Connection.new(
34
- :username => username,
35
- :api_key => api_key,
36
- :auth_url => auth_url,
37
- :region => region,
38
- :authtenant => authtenant,
39
- :is_debug => debug,
40
- :auth_method => auth_method,
41
- :service_name => service_name,
42
- :service_type => service_type
43
- )
44
-
45
- end
16
+ if ENV['DEBUG'] and ENV['DEBUG'] == 'true' then
17
+ ENV['EXCON_DEBUG'] = 'true'
18
+ end
46
19
 
47
- def self.get_image_ref(conn)
20
+ auth_url = ENV['NOVA_URL'] || ENV['OS_AUTH_URL']
21
+ api_key = ENV['NOVA_API_KEY'] || ENV['OS_PASSWORD']
22
+ username = ENV['NOVA_USERNAME'] || ENV['OS_USERNAME']
23
+ authtenant = ENV['NOVA_PROJECT_ID'] || ENV['OS_TENANT_NAME']
24
+ region = ENV['NOVA_REGION_NAME'] || ENV['OS_AUTH_REGION']
25
+ service_type = ENV['NOVA_SERVICE_TYPE'] || "compute"
26
+ service_name = ENV['NOVA_SERVICE_NAME'] #nil by default
27
+
28
+ Fog::Compute.new(
29
+ :provider => :openstack,
30
+ :openstack_auth_url => auth_url+'/tokens',
31
+ :openstack_username => username,
32
+ :openstack_tenant => authtenant,
33
+ :openstack_api_key => api_key,
34
+ :openstack_region => region,
35
+ :openstack_service_type => service_type,
36
+ :openstack_service_name => service_name
37
+ )
48
38
 
49
- image_ref = IMAGE_REF
50
- image_name = IMAGE_NAME
39
+ end
51
40
 
52
- if image_name and not image_name.empty? then
53
- images = conn.images.each do |image|
54
- if image[:name] == image_name then
55
- image_ref = image[:id]
41
+ def self.get_image_ref(conn)
42
+
43
+ image_ref = IMAGE_REF
44
+ image_name = IMAGE_NAME
45
+
46
+ if image_name and not image_name.empty? then
47
+ images = conn.images.each do |image|
48
+ if image.name == image_name then
49
+ image_ref = image.id
50
+ end
51
+ end
52
+ elsif image_ref.nil? or image_ref.empty? then
53
+ #take the last image if IMAGE_REF and or IMAGE_NAME aren't set
54
+ images = conn.images
55
+ raise "Image list is empty." if images.empty?
56
+ image_ref = images.last.id.to_s
56
57
  end
57
- end
58
- elsif image_ref.nil? or image_ref.empty? then
59
- #take the last image if IMAGE_REF and or IMAGE_NAME aren't set
60
- images = conn.images
61
- raise "Image list is empty." if images.empty?
62
- image_ref = images.last[:id].to_s
63
- end
64
58
 
65
- image_ref
59
+ image_ref
66
60
 
67
- end
61
+ end
68
62
 
69
- def self.get_flavor_ref(conn)
63
+ def self.get_flavor_ref(conn)
70
64
 
71
- flavor_ref = FLAVOR_REF
72
- flavor_name = FLAVOR_NAME
65
+ flavor_ref = FLAVOR_REF
66
+ flavor_name = FLAVOR_NAME
73
67
 
74
- if flavor_name and not flavor_name.empty? then
75
- flavors = conn.flavors.each do |flavor|
76
- if flavor[:name] == flavor_name then
77
- flavor_ref = flavor[:id]
68
+ if flavor_name and not flavor_name.empty? then
69
+ flavors = conn.flavors.each do |flavor|
70
+ if flavor.name == flavor_name then
71
+ flavor_ref = flavor.id
72
+ end
73
+ end
74
+ elsif not flavor_ref or flavor_ref.to_s.empty? then
75
+ # default to 2 (m1.small) if FLAVOR_REF and or FLAVOR_NAME aren't set
76
+ flavor_ref = 2
78
77
  end
79
- end
80
- elsif not flavor_ref or flavor_ref.to_s.empty? then
81
- # default to 2 (m1.small) if FLAVOR_REF and or FLAVOR_NAME aren't set
82
- flavor_ref = 2
83
- end
84
78
 
85
- flavor_ref.to_s
79
+ flavor_ref.to_s
86
80
 
87
- end
81
+ end
88
82
 
89
- #flavor ref used for resize
90
- def self.get_flavor_ref_resize(conn)
83
+ #flavor ref used for resize
84
+ def self.get_flavor_ref_resize(conn)
85
+
86
+ flavor_ref_resize = FLAVOR_REF_RESIZE
87
+ flavor_name_resize = FLAVOR_NAME_RESIZE
88
+
89
+ if flavor_name_resize and not flavor_name_resize.empty? then
90
+ flavors = conn.flavors.each do |flavor|
91
+ if flavor.name == flavor_name_resize then
92
+ flavor_ref_resize = flavor.id
93
+ end
94
+ end
95
+ elsif not flavor_ref_resize or flavor_ref_resize.to_s.empty? then
96
+ # if no flavor ref is specified for resize add one to it
97
+ flavor_ref = Helper.get_flavor_ref(conn)
98
+ flavor_ref_resize = flavor_ref.to_i + 1
99
+ end
91
100
 
92
- flavor_ref_resize = FLAVOR_REF_RESIZE
93
- flavor_name_resize = FLAVOR_NAME_RESIZE
101
+ flavor_ref_resize.to_s
94
102
 
95
- if flavor_name_resize and not flavor_name_resize.empty? then
96
- flavors = conn.flavors.each do |flavor|
97
- if flavor[:name] == flavor_name_resize then
98
- flavor_ref_resize = flavor[:id]
99
- end
100
103
  end
101
- elsif not flavor_ref_resize or flavor_ref_resize.to_s.empty? then
102
- # if no flavor ref is specified for resize add one to it
103
- flavor_ref = Helper.get_flavor_ref(conn)
104
- flavor_ref_resize = flavor_ref.to_i + 1
105
- end
106
-
107
- flavor_ref_resize.to_s
108
104
 
105
+ end
109
106
  end
110
-
111
- end
112
- end
113
107
  end