mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
[rackspace|storage] initial cloud file examples checkin
This commit is contained in:
parent
bef59ff2f9
commit
25360e5b19
7 changed files with 371 additions and 0 deletions
45
lib/fog/rackspace/examples/storage/create_directory.rb
Normal file
45
lib/fog/rackspace/examples/storage/create_directory.rb
Normal file
|
@ -0,0 +1,45 @@
|
|||
#!/usr/bin/env ruby
|
||||
|
||||
# This example demonstrates creating a container with the Rackpace Open Cloud
|
||||
|
||||
require 'rubygems' #required for Ruby 1.8.x
|
||||
require 'fog'
|
||||
|
||||
def get_user_input(prompt)
|
||||
print "#{prompt}: "
|
||||
gets.chomp
|
||||
end
|
||||
|
||||
# Use username defined in ~/.fog file, if absent prompt for username.
|
||||
# For more details on ~/.fog refer to http://fog.io/about/getting_started.html
|
||||
def rackspace_username
|
||||
Fog.credentials[:rackspace_username] || get_user_input("Enter Rackspace Username")
|
||||
end
|
||||
|
||||
# Use api key defined in ~/.fog file, if absent prompt for api key
|
||||
# For more details on ~/.fog refer to http://fog.io/about/getting_started.html
|
||||
def rackspace_api_key
|
||||
Fog.credentials[:rackspace_api_key] || get_user_input("Enter Rackspace API key")
|
||||
end
|
||||
|
||||
# create Cloud Files service
|
||||
service = Fog::Storage.new({
|
||||
:provider => 'Rackspace',
|
||||
:rackspace_username => rackspace_username,
|
||||
:rackspace_api_key => rackspace_api_key
|
||||
})
|
||||
|
||||
|
||||
# prompt for directory name
|
||||
directory_name = get_user_input "\nEnter name of directory to create"
|
||||
|
||||
# create directory
|
||||
directory = service.directories.create :key => directory_name
|
||||
|
||||
# reload directory to refresh information
|
||||
directory.reload
|
||||
|
||||
puts "\n Directory #{directory.key} was created."
|
||||
puts "To delete the container please execute the delete_directory.rb script\n\n"
|
||||
|
||||
|
44
lib/fog/rackspace/examples/storage/create_file.rb
Normal file
44
lib/fog/rackspace/examples/storage/create_file.rb
Normal file
|
@ -0,0 +1,44 @@
|
|||
#!/usr/bin/env ruby
|
||||
|
||||
# This example demonstrates creating a file on the CDN network with the Rackpace Open Cloud
|
||||
|
||||
require 'rubygems' #required for Ruby 1.8.x
|
||||
require 'fog'
|
||||
|
||||
def get_user_input(prompt)
|
||||
print "#{prompt}: "
|
||||
gets.chomp
|
||||
end
|
||||
|
||||
# Use username defined in ~/.fog file, if absent prompt for username.
|
||||
# For more details on ~/.fog refer to http://fog.io/about/getting_started.html
|
||||
def rackspace_username
|
||||
Fog.credentials[:rackspace_username] || get_user_input("Enter Rackspace Username")
|
||||
end
|
||||
|
||||
# Use api key defined in ~/.fog file, if absent prompt for api key
|
||||
# For more details on ~/.fog refer to http://fog.io/about/getting_started.html
|
||||
def rackspace_api_key
|
||||
Fog.credentials[:rackspace_api_key] || get_user_input("Enter Rackspace API key")
|
||||
end
|
||||
|
||||
# create Cloud Files service
|
||||
service = Fog::Storage.new({
|
||||
:provider => 'Rackspace',
|
||||
:rackspace_username => rackspace_username,
|
||||
:rackspace_api_key => rackspace_api_key
|
||||
})
|
||||
|
||||
# prompt for directory name
|
||||
directory_name = get_user_input "\nEnter name of directory to create"
|
||||
|
||||
# create directory with CDN service
|
||||
directory = service.directories.create :key => directory_name, :public => true
|
||||
|
||||
# upload file
|
||||
upload_file = File.join(File.dirname(__FILE__), "lorem.txt")
|
||||
file = directory.files.create :key => 'sample.txt', :body => File.open(upload_file, "r")
|
||||
|
||||
puts "You should not be able to view this file via CDN at #{file.public_url}"
|
||||
puts "To delete the container and associated file please execute the delete_directory.rb script\n\n"
|
||||
|
61
lib/fog/rackspace/examples/storage/delete_directory.rb
Normal file
61
lib/fog/rackspace/examples/storage/delete_directory.rb
Normal file
|
@ -0,0 +1,61 @@
|
|||
#!/usr/bin/env ruby
|
||||
|
||||
# This example demonstrates deleting a container with the Rackpace Open Cloud
|
||||
|
||||
require 'rubygems' #required for Ruby 1.8.x
|
||||
require 'fog'
|
||||
|
||||
def get_user_input(prompt)
|
||||
print "#{prompt}: "
|
||||
gets.chomp
|
||||
end
|
||||
|
||||
def select_directory(directories)
|
||||
abort "\nThere are not any directories to delete. Try running create_directory.rb\n\n" if directories.empty?
|
||||
|
||||
puts "\nSelect Directory To Delete:\n\n"
|
||||
directories.each_with_index do |dir, i|
|
||||
puts "\t #{i}. #{dir.key} [#{dir.count} objects]"
|
||||
end
|
||||
|
||||
delete_str = get_user_input "\nEnter Directory Number"
|
||||
directories[delete_str.to_i]
|
||||
end
|
||||
|
||||
# Use username defined in ~/.fog file, if absent prompt for username.
|
||||
# For more details on ~/.fog refer to http://fog.io/about/getting_started.html
|
||||
def rackspace_username
|
||||
Fog.credentials[:rackspace_username] || get_user_input("Enter Rackspace Username")
|
||||
end
|
||||
|
||||
# Use api key defined in ~/.fog file, if absent prompt for api key
|
||||
# For more details on ~/.fog refer to http://fog.io/about/getting_started.html
|
||||
def rackspace_api_key
|
||||
Fog.credentials[:rackspace_api_key] || get_user_input("Enter Rackspace API key")
|
||||
end
|
||||
|
||||
# create Cloud Files service
|
||||
service = Fog::Storage.new({
|
||||
:provider => 'Rackspace',
|
||||
:rackspace_username => rackspace_username,
|
||||
:rackspace_api_key => rackspace_api_key
|
||||
})
|
||||
|
||||
# retrieve directories
|
||||
directories = service.directories
|
||||
|
||||
# prompt for directory
|
||||
directory = select_directory(directories)
|
||||
|
||||
puts "\nNow deleting #{directory.key}"
|
||||
|
||||
# delete files if necessary
|
||||
directory.files.each do |f|
|
||||
puts "\tDeleting file #{f.key}"
|
||||
f.destroy
|
||||
end
|
||||
|
||||
# delete directory
|
||||
directory.destroy
|
||||
|
||||
puts "\tDone\n\n"
|
69
lib/fog/rackspace/examples/storage/delete_file.rb
Normal file
69
lib/fog/rackspace/examples/storage/delete_file.rb
Normal file
|
@ -0,0 +1,69 @@
|
|||
#!/usr/bin/env ruby
|
||||
|
||||
# This example demonstrates deleting a file from a container with the Rackpace Open Cloud
|
||||
|
||||
require 'rubygems' #required for Ruby 1.8.x
|
||||
require 'fog'
|
||||
|
||||
def get_user_input(prompt)
|
||||
print "#{prompt}: "
|
||||
gets.chomp
|
||||
end
|
||||
|
||||
def select_directory(directories)
|
||||
abort "\nThere are not any directories with files to delete. Try running create_file.rb\n\n" if directories.empty?
|
||||
|
||||
puts "\nSelect Directory:\n\n"
|
||||
directories.each_with_index do |dir, i|
|
||||
puts "\t #{i}. #{dir.key} [#{dir.count} objects]"
|
||||
end
|
||||
|
||||
delete_str = get_user_input "\nEnter Directory Number"
|
||||
directories[delete_str.to_i]
|
||||
end
|
||||
|
||||
def select_file(files)
|
||||
puts "\nSelect File:\n\n"
|
||||
files.each_with_index do |file, i|
|
||||
puts "\t #{i}. #{file.key}"
|
||||
end
|
||||
|
||||
delete_str = get_user_input "\nEnter File Number"
|
||||
files[delete_str.to_i]
|
||||
end
|
||||
|
||||
# Use username defined in ~/.fog file, if absent prompt for username.
|
||||
# For more details on ~/.fog refer to http://fog.io/about/getting_started.html
|
||||
def rackspace_username
|
||||
Fog.credentials[:rackspace_username] || get_user_input("Enter Rackspace Username")
|
||||
end
|
||||
|
||||
# Use api key defined in ~/.fog file, if absent prompt for api key
|
||||
# For more details on ~/.fog refer to http://fog.io/about/getting_started.html
|
||||
def rackspace_api_key
|
||||
Fog.credentials[:rackspace_api_key] || get_user_input("Enter Rackspace API key")
|
||||
end
|
||||
|
||||
# create Cloud Files service
|
||||
service = Fog::Storage.new({
|
||||
:provider => 'Rackspace',
|
||||
:rackspace_username => rackspace_username,
|
||||
:rackspace_api_key => rackspace_api_key
|
||||
})
|
||||
|
||||
# retrieve directories with files
|
||||
directories = service.directories.select {|s| s.count > 0}
|
||||
|
||||
# prompt for directory
|
||||
directory = select_directory(directories)
|
||||
|
||||
# list of files for directory
|
||||
files = directory.files
|
||||
|
||||
# prompt for file to delete
|
||||
file = select_file(files)
|
||||
|
||||
# delete file
|
||||
file.destroy
|
||||
|
||||
puts "\nFile #{file.key} was successfully deleted"
|
70
lib/fog/rackspace/examples/storage/download_file.rb
Normal file
70
lib/fog/rackspace/examples/storage/download_file.rb
Normal file
|
@ -0,0 +1,70 @@
|
|||
#!/usr/bin/env ruby
|
||||
|
||||
# This example demonstrates downloading a file with the Rackpace Open Cloud
|
||||
|
||||
require 'rubygems' #required for Ruby 1.8.x
|
||||
require 'fog'
|
||||
|
||||
def get_user_input(prompt)
|
||||
print "#{prompt}: "
|
||||
gets.chomp
|
||||
end
|
||||
|
||||
def select_directory(directories)
|
||||
abort "\nThere are not any directories with files. Try running create_file.rb\n\n" if directories.empty?
|
||||
|
||||
puts "\nSelect Directory:\n\n"
|
||||
directories.each_with_index do |dir, i|
|
||||
puts "\t #{i}. #{dir.key} [#{dir.count} objects]"
|
||||
end
|
||||
|
||||
delete_str = get_user_input "\nEnter Directory Number"
|
||||
directories[delete_str.to_i]
|
||||
end
|
||||
|
||||
def select_file(files)
|
||||
puts "\nSelect File:\n\n"
|
||||
files.each_with_index do |file, i|
|
||||
puts "\t #{i}. #{file.key}"
|
||||
end
|
||||
|
||||
delete_str = get_user_input "\nEnter File Number"
|
||||
files[delete_str.to_i]
|
||||
end
|
||||
|
||||
# Use username defined in ~/.fog file, if absent prompt for username.
|
||||
# For more details on ~/.fog refer to http://fog.io/about/getting_started.html
|
||||
def rackspace_username
|
||||
Fog.credentials[:rackspace_username] || get_user_input("Enter Rackspace Username")
|
||||
end
|
||||
|
||||
# Use api key defined in ~/.fog file, if absent prompt for api key
|
||||
# For more details on ~/.fog refer to http://fog.io/about/getting_started.html
|
||||
def rackspace_api_key
|
||||
Fog.credentials[:rackspace_api_key] || get_user_input("Enter Rackspace API key")
|
||||
end
|
||||
|
||||
# create Cloud Files service
|
||||
service = Fog::Storage.new({
|
||||
:provider => 'Rackspace',
|
||||
:rackspace_username => rackspace_username,
|
||||
:rackspace_api_key => rackspace_api_key
|
||||
})
|
||||
|
||||
# retrieve directories with files
|
||||
directories = service.directories.select {|s| s.count > 0}
|
||||
|
||||
# prompt for directory
|
||||
directory = select_directory(directories)
|
||||
|
||||
# list of files for directory
|
||||
files = directory.files
|
||||
|
||||
# prompt for file to download
|
||||
file = select_file(files)
|
||||
|
||||
# download file
|
||||
filename = File.join(File.dirname(__FILE__), "downloaded-#{file.key}")
|
||||
File.open(filename, 'w') {|f| f.write(file.body) }
|
||||
|
||||
puts "\nFile #{file.key} was successfully downloaded to #{filename}"
|
1
lib/fog/rackspace/examples/storage/lorem.txt
Normal file
1
lib/fog/rackspace/examples/storage/lorem.txt
Normal file
|
@ -0,0 +1 @@
|
|||
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
81
lib/fog/rackspace/examples/storage/storage_metadata.rb
Normal file
81
lib/fog/rackspace/examples/storage/storage_metadata.rb
Normal file
|
@ -0,0 +1,81 @@
|
|||
#!/usr/bin/env ruby
|
||||
|
||||
# This example demonstrates creating a file on the CDN network with the Rackpace Open Cloud
|
||||
|
||||
require 'rubygems' #required for Ruby 1.8.x
|
||||
require 'fog'
|
||||
|
||||
# Use username defined in ~/.fog file, if absent prompt for username.
|
||||
# For more details on ~/.fog refer to http://fog.io/about/getting_started.html
|
||||
def rackspace_username
|
||||
Fog.credentials[:rackspace_username] || get_user_input("Enter Rackspace Username")
|
||||
end
|
||||
|
||||
# Use api key defined in ~/.fog file, if absent prompt for api key
|
||||
# For more details on ~/.fog refer to http://fog.io/about/getting_started.html
|
||||
def rackspace_api_key
|
||||
Fog.credentials[:rackspace_api_key] || get_user_input("Enter Rackspace API key")
|
||||
end
|
||||
|
||||
def print_metadata(object)
|
||||
object.metadata.each_pair do |key, value|
|
||||
puts "\t#{key}: #{value}"
|
||||
end
|
||||
puts "\n"
|
||||
end
|
||||
|
||||
# create Cloud Files service
|
||||
service = Fog::Storage.new({
|
||||
:provider => 'Rackspace',
|
||||
:rackspace_username => rackspace_username,
|
||||
:rackspace_api_key => rackspace_api_key
|
||||
})
|
||||
|
||||
|
||||
# create directory
|
||||
puts "Creating directory 'metadata-tester'"
|
||||
directory = service.directories.create :key => "metadata-tester"
|
||||
|
||||
# # initial metadata
|
||||
# puts "Initial Container Metadata\n"
|
||||
# print_metadata directory
|
||||
#
|
||||
# # adding metadata
|
||||
# puts "Adding Container Metadata"
|
||||
# directory.metaadata["environment"] = "demo"
|
||||
# directory.save
|
||||
# print_metadata directory
|
||||
#
|
||||
# # update metadata
|
||||
# puts "Updating Container Metadata"
|
||||
# directory.metaadata["environment"] = "test"
|
||||
# directory.save
|
||||
# print_metadata directory
|
||||
|
||||
# upload file
|
||||
puts "Uploading file"
|
||||
upload_file = File.join(File.dirname(__FILE__), "lorem.txt")
|
||||
file = directory.files.create :key => 'sample.txt', :body => File.open(upload_file, "r")
|
||||
|
||||
# initial metadata
|
||||
puts "Initial File Metadata\n"
|
||||
print_metadata file
|
||||
|
||||
# adding metadata
|
||||
puts "Adding File Metadata"
|
||||
file.metadata["preview"] = "true"
|
||||
file.save
|
||||
print_metadata file
|
||||
|
||||
# update metadata
|
||||
puts "Updating File Metadata"
|
||||
file.metadata["preview"] = "false"
|
||||
file.save
|
||||
print_metadata file
|
||||
|
||||
puts "To delete the directory and file please execute the delete_directory.rb script\n\n"
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
Add table
Reference in a new issue