fb9e6dcecc
The policy of giving projects vanity domains stopped about 5 years ago. swift.openstack.org is a redirect to the canonical location - docs.openstack.org/developer/swift. While we are not aiming to remove the redirect any time in the forseeable future due to existing published links pointing to it, we should at the very least stop adding more of those links to the world. Change-Id: Ia56ce22c65c1fac29a2d8fb367797a4d7929a9b4
119 lines
3.8 KiB
Ruby
119 lines
3.8 KiB
Ruby
#!/usr/bin/env ruby
|
|
#
|
|
# This is a script that uses
|
|
# instructions here: http://docs.openstack.org/developer/swift/howto_installmultinode.html
|
|
# Even though I expect this script will work with a wide range
|
|
# of swift versions, it is currently only tested with: 1.4.6
|
|
require 'open3'
|
|
require 'fileutils'
|
|
|
|
# connection variables
|
|
proxy_local_net_ip='127.0.0.1'
|
|
user='test:tester'
|
|
password='testing'
|
|
|
|
# headers for curl requests
|
|
user_header="-H 'X-Storage-User: #{user}'"
|
|
password_header="-H 'X-Storage-Pass: #{password}'"
|
|
get_cred_command="curl -k -v #{user_header} #{password_header} http://#{proxy_local_net_ip}:8080/auth/v1.0"
|
|
|
|
# verify that we can retrieve credentials from our user
|
|
result_hash = {}
|
|
puts "getting credentials: #{get_cred_command}"
|
|
Open3.popen3(get_cred_command) do |stdin, stdout, stderr|
|
|
result_hash[:stderr] = stderr.read
|
|
result_hash[:stderr].split("\n").each do |line|
|
|
if line =~ /^< HTTP\/\d\.\d (\d\d\d)/
|
|
result_hash[:status_code]=$1
|
|
end
|
|
if line =~ /< X-Storage-Url: (http\S+)/
|
|
result_hash[:auth_url]=$1
|
|
end
|
|
if line =~ /< X-Storage-Token: (AUTH_\S+)/
|
|
result_hash[:auth_token]=$1
|
|
end
|
|
end
|
|
end
|
|
raise(Exception, "Call to get auth tokens failed:\n#{result_hash[:stderr]}") unless result_hash[:status_code] == '200'
|
|
|
|
# verify that the credentials are valid
|
|
auth_token_header="-H 'X-Auth-Token: #{result_hash[:auth_token]}'"
|
|
get_account_head="curl -k -v #{auth_token_header} #{result_hash[:auth_url]}"
|
|
# what is the expected code?
|
|
puts "verifying connection auth: #{get_account_head}"
|
|
Open3.popen3(get_account_head) do |stdin, stdout, stderr|
|
|
#puts stdout.read
|
|
#puts stderr.read
|
|
end
|
|
|
|
|
|
proxy_local_net_ip='127.0.0.1'
|
|
user='test:tester'
|
|
password='testing'
|
|
swift_command_prefix="swift -A http://#{proxy_local_net_ip}:8080/auth/v1.0 -U #{user} -K #{password}"
|
|
|
|
swift_test_command="#{swift_command_prefix} stat"
|
|
|
|
puts "Testing swift: #{swift_test_command}"
|
|
status_hash={}
|
|
Open3.popen3(swift_test_command) do |stdin, stdout, stderr|
|
|
status_hash[:stdout] = stdout.read
|
|
status_hash[:stderr] = stderr.read
|
|
status_hash[:stdout].split("\n").each do |line|
|
|
if line =~ /\s*Containers:\s+(\d+)/
|
|
status_hash[:containers] = $1
|
|
end
|
|
if line =~ /\s*Objects:\s+(\d+)/
|
|
status_hash[:objects] = $1
|
|
end
|
|
end
|
|
end
|
|
|
|
unless(status_hash[:containers] =~ /\d+/ and status_hash[:objects] =~ /\d+/)
|
|
raise(Exception, "Expected to find the number of containers/objects:\n#{status_hash[:stdout]}\n#{status_hash[:stderr]}")
|
|
else
|
|
puts "found containers/objects: #{status_hash[:containers]}/#{status_hash[:objects]}"
|
|
end
|
|
|
|
# test that we can upload something
|
|
File.open('/tmp/foo1', 'w') do |fh|
|
|
fh.write('test1')
|
|
end
|
|
|
|
container = 'my_container'
|
|
|
|
swift_upload_command="#{swift_command_prefix} upload #{container} /tmp/foo1"
|
|
puts "Uploading file to swift with command: #{swift_upload_command}"
|
|
|
|
Open3.popen3(swift_upload_command) do |stdin, stdout, stderr|
|
|
puts stdout.read
|
|
puts stderr.read
|
|
end
|
|
|
|
# test that we can download the thing that we uploaded
|
|
download_test_dir = '/tmp/test/downloadtest/'
|
|
FileUtils.rm_rf download_test_dir
|
|
FileUtils.mkdir_p download_test_dir
|
|
|
|
swift_download_command="#{swift_command_prefix} download #{container}"
|
|
puts "Downloading file with command: #{swift_download_command}"
|
|
Dir.chdir(download_test_dir) do
|
|
Open3.popen3(swift_download_command) do |stdin, stdout, stderr|
|
|
puts stdout.read
|
|
puts stderr.read
|
|
end
|
|
end
|
|
|
|
expected_file = File.join(download_test_dir, 'tmp', 'foo1')
|
|
|
|
if File.exists?(expected_file)
|
|
if File.read(expected_file) == 'test1'
|
|
puts "Dude!!!! It actually seems to work, we can upload and download files!!!!"
|
|
else
|
|
raise(Exception, "So close, but the contents of the downloaded file are not what I expected: Got: #{File.read(expected_file)}, expected: test1")
|
|
end
|
|
else
|
|
raise(Exception, "file #{expected_file} did not exist somehow, probably b/c swift is not installed correctly")
|
|
end
|
|
|