1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
|
require 'fog/azurerm'
require 'yaml'
########################################################################################################################
###################### Services object required by all actions ######################
###################### Keep it Uncommented! ######################
########################################################################################################################
azure_credentials = YAML.load_file(File.expand_path('credentials/azure.yml', __dir__))
########################################################################################################################
###################### Resource names #####################
########################################################################################################################
time = Time.now.to_i
container_name = "con#{time}"
test_container_name = "tcon#{time}"
########################################################################################################################
###################### Prerequisites ######################
########################################################################################################################
begin
storage_data = Fog::AzureRM::Storage.new(
azure_storage_account_name: azure_credentials['azure_storage_account_name'],
azure_storage_access_key: azure_credentials['azure_storage_access_key'],
azure_storage_endpoint: azure_credentials['azure_storage_endpoint'],
environment: azure_credentials['environment']
)
########################################################################################################################
###################### Check Container Exists ######################
########################################################################################################################
flag = storage_data.directories.check_container_exists(container_name)
puts "Container doesn't exist." unless flag
########################################################################################################################
###################### Create Container ######################
########################################################################################################################
container = storage_data.directories.create(
key: container_name
)
puts "Created container: #{container.key}"
container2 = storage_data.directories.create(
key: test_container_name,
public: true
)
puts "Created second container: #{container.key}"
########################################################################################################################
###################### List containers ######################
########################################################################################################################
containers = storage_data.directories.all
puts 'List containers:'
containers.each do |a_container|
puts a_container.key
end
########################################################################################################################
###################### Get container acl ######################
########################################################################################################################
container = storage_data.directories.get(container_name, max_results: 1)
puts "Get container: #{container.key}"
puts "Get container access control list: #{container.acl}"
########################################################################################################################
###################### Update Container ######################
########################################################################################################################
container.acl = 'container'
container.metadata = { 'owner' => 'azure' }
container.save(is_create: false)
puts 'Updated container'
########################################################################################################################
###################### Get container acl ######################
########################################################################################################################
puts "Get updated container access control list: #{container.acl}"
########################################################################################################################
###################### Get container metadata ######################
########################################################################################################################
puts "Get container metadata: #{container.metadata}"
########################################################################################################################
###################### Get container public https url ######################
########################################################################################################################
puts "Get container public url: #{container.public_url}"
########################################################################################################################
###################### Get container public http url ######################
########################################################################################################################
puts "Get container public url having scheme http: #{container.public_url(scheme: 'http')}"
########################################################################################################################
###################### Lease Container ######################
########################################################################################################################
lease_id_container = storage_data.acquire_container_lease(container_name)
Fog::Logger.debug lease_id_container
puts 'Leased Container'
########################################################################################################################
###################### Release Leased Container ######################
########################################################################################################################
storage_data.release_container_lease(container_name, lease_id_container)
puts 'Release Leased Container'
########################################################################################################################
###################### Deleted Container ######################
########################################################################################################################
puts "Deleted container: #{container.destroy}"
rescue => ex
puts "Integration Test for container is failing: #{ex.inspect}\n#{ex.backtrace.join("\n")}"
raise
ensure
container2&.destroy
end
|