From: Dies Koper <[email protected]>
---
server/lib/deltacloud/drivers/fgcp/fgcp_client.rb | 2 +-
server/lib/deltacloud/drivers/fgcp/fgcp_driver.rb | 20 ++++++++++++++++----
tests/config.yaml | 4 ++--
tests/deltacloud/common_tests_collections.rb | 4 ++--
tests/deltacloud/instances_test.rb | 8 ++++----
tests/deltacloud/test_setup.rb | 2 +-
6 files changed, 26 insertions(+), 14 deletions(-)
diff --git a/server/lib/deltacloud/drivers/fgcp/fgcp_client.rb
b/server/lib/deltacloud/drivers/fgcp/fgcp_client.rb
index 489e8c4..4d569da 100644
--- a/server/lib/deltacloud/drivers/fgcp/fgcp_client.rb
+++ b/server/lib/deltacloud/drivers/fgcp/fgcp_client.rb
@@ -167,7 +167,7 @@ class FgcpClient
<description>#{description}</description>
</locale>
<locale>
- <lcid>jp</lcid>
+ <lcid>ja</lcid>
<name>#{name}</name>
<description>#{description}</description>
</locale>
diff --git a/server/lib/deltacloud/drivers/fgcp/fgcp_driver.rb
b/server/lib/deltacloud/drivers/fgcp/fgcp_driver.rb
index 716ac85..cbb670c 100644
--- a/server/lib/deltacloud/drivers/fgcp/fgcp_driver.rb
+++ b/server/lib/deltacloud/drivers/fgcp/fgcp_driver.rb
@@ -109,6 +109,13 @@ class FgcpDriver < Deltacloud::BaseDriver
if xml['diskimages'] # not likely to not be so, but just in case
xml['diskimages'][0]['diskimage'].each do |img|
+ # 32bit CentOS/RHEL images are refused on hwps > 16GB (i.e. w_high,
quad_high)
+ os_arch = img['osName'][0].to_s =~ /.*32.?bit.*/ ? 'i386' : 'x86_64'
+ os_centos_rhel = img['osName'][0] =~ /(CentOS|Red Hat).*/
+ allowed_hwps = hwps.select do |hwp|
+ hwp.memory.default.to_i < 16000 or os_arch == 'x86_64' or not
os_centos_rhel
+ end
+
images << Image.new(
:id => img['diskimageId'][0],
:name => img['diskimageName'][0].to_s,
@@ -118,8 +125,8 @@ class FgcpDriver < Deltacloud::BaseDriver
# This will determine image architecture using OS name.
# Usually the OS name includes '64bit' or '32bit'. If not,
# it will fall back to 64 bit.
- :architecture => img['osName'][0].to_s =~ /.*32.?bit.*/ ? 'i386' :
'x86_64',
- :hardware_profiles => hwps
+ :architecture => os_arch,
+ :hardware_profiles => allowed_hwps
) if opts[:id].nil? or opts[:id] == img['diskimageId'][0]
end
end
@@ -139,7 +146,7 @@ class FgcpDriver < Deltacloud::BaseDriver
if opts[:name].nil?
# default to instance name
instance = client.get_vserver_attributes(opts[:id])
- opts[:name] ||= instance['vserver'][0]['vserverName']
+ opts[:name] = instance['vserver'][0]['vserverName']
opts[:description] ||= opts[:name]
end
@@ -1444,6 +1451,11 @@ eofwopxml
status 404 # Not Found
end
+ # trying to create an image that has never been booted
+ on /NEVER_BOOTED/ do
+ status 405 # Method Not Allowed
+ end
+
# reached maximum number of attempts while polling for an update
on /Server did not include public IP address in FW NAT rules/ do
status 504 # Gateway Timeout
@@ -1630,7 +1642,7 @@ eofwopxml
:firewalls => server != 'FW' ?
[client.extract_vsys_id(vserver['vserverId'][0]) + '-S-0001'] : nil,
:owner_id => vserver['creator'][0]
}
- instance.merge!( {'create_image' => false}) if not server == 'vserver'
+ instance.merge!( {'create_image' => false}) if server != 'vserver' or
state_data[:state] != 'STOPPED'
instance.merge! state_data
Instance::new(instance)
diff --git a/tests/config.yaml b/tests/config.yaml
index 2f18caa..078f6fa 100644
--- a/tests/config.yaml
+++ b/tests/config.yaml
@@ -39,9 +39,9 @@ fgcp:
#used for instances tests:
preferred:
provider: "au"
- image: "IMG_3c9820_D30U8UNY6I9S"
+ image: "IMG_3c9820_S24FWXU0Q9VH0JK"
hardware_profile: "economy"
- realm: "UZXC0GRT-ZG8ZJCJ07"
+ realm: "UZXC0GRT-ZG8ZJCJ07-N-DMZ"
# CIMI testing
diff --git a/tests/deltacloud/common_tests_collections.rb
b/tests/deltacloud/common_tests_collections.rb
index 5745296..717e3a7 100644
--- a/tests/deltacloud/common_tests_collections.rb
+++ b/tests/deltacloud/common_tests_collections.rb
@@ -39,7 +39,7 @@ module CommonCollectionsTest
end
it "must require authentication to access the #{test_collection}
collection" do
- skip "Skipping for #{test_collection} as no auth required here" if
["hardware_profiles", "instance_states"].include?(test_collection)
+ skip "Skipping for #{test_collection} as auth may not be required
here" if ["hardware_profiles", "instance_states"].include?(test_collection)
proc { get(test_collection, :noauth => true) }.must_raise
RestClient::Request::Unauthorized
end
@@ -59,7 +59,7 @@ module CommonCollectionsTest
end
end
- #run tests for both the top-level collection and it's members
+ #run tests for both the top-level collection and its members
def self.run_collection_and_member_tests_for(test_collection)
#first run only 'top-level' collection tests (e.g. for 'images')
run_collection_tests_for(test_collection)
diff --git a/tests/deltacloud/instances_test.rb
b/tests/deltacloud/instances_test.rb
index 73b5ed2..1522914 100644
--- a/tests/deltacloud/instances_test.rb
+++ b/tests/deltacloud/instances_test.rb
@@ -84,11 +84,11 @@ puts "CLEANUP attempt finished... resources looks like:
#{@@created_resources.in
#Now run the instances-specific tests:
- it 'must have the "state" element defined for each instance in collection' do
+ it 'must have a legal "state" element defined for each instance in
collection, or no "state" at all' do
res = get(INSTANCES)
(res.xml/'instances/instance').each do |r|
- (r/'state').wont_be_empty
- (r/'state').first.must_match /(RUNNING|STOPPED|PENDING)/
+ # provider may not return state for each instance in collection because
of performance reasons
+ (r/'state').first.must_match /(RUNNING|STOPPED|PENDING)/ unless
(r/'state').empty?
end
end
@@ -242,7 +242,7 @@ puts "CLEANUP attempt finished... resources looks like:
#{@@created_resources.in
instance_actions = (res.xml/'actions/link').to_a.inject([]){|actions,
current| actions << current[:rel]; actions}
skip "no create image support for instance #{@@my_instance_id}" unless
instance_actions.include?("create_image")
#create image
- res = post("/images", :instance_id => @@my_instance_id, :name=>random_name)
+ res = post("/images", :instance_id => @@my_instance_id, :name =>
random_name)
res.code.must_equal 201
my_image_id = (res.xml/'image')[0][:id]
#mark for deletion later:
diff --git a/tests/deltacloud/test_setup.rb b/tests/deltacloud/test_setup.rb
index b28e456..4d1943c 100644
--- a/tests/deltacloud/test_setup.rb
+++ b/tests/deltacloud/test_setup.rb
@@ -172,7 +172,7 @@ module Deltacloud::Test::Methods
def random_name
name = rand(36**10).to_s(36)
- name.insert(0, "apitest")
+ name.insert(0, "dcapitest")
end
def get_a(item)
--
1.8.0.msysgit.0