lib/fog/azurerm/models/storage/directories.rb
module Fog
module Storage
class AzureRM
# This class is giving implementation of listing containers.
class Directories < Fog::Collection
model Fog::Storage::AzureRM::Directory
# List all directories(containers) in the storage account.
#
# @return [Fog::Storage::AzureRM::Directories]
#
def all
containers = service.list_containers
data = []
containers.each do |container|
c = parse_storage_object(container)
c[:acl] = 'unknown'
data << c
end
load(data)
end
# Get a directory with files(blobs) under this directory.
# You can set max_keys to 1 if you do not want to return all files under this directory.
#
# @param identity [String] Name of directory
# @param options [Hash]
# @option options [String] max_keys or
# max_results Sets the maximum number of files to return.
# @option options [String] delimiter Sets to cause that the operation returns a BlobPrefix element in the response body that acts
# as a placeholder for all files whose names begin with the same substring up to the appearance
# of the delimiter character. The delimiter may be a single character or a string.
# @option options [String] marker Sets the identifier that specifies the portion of the list to be returned.
# @option options [String] prefix Sets filters the results to return only files whose name begins with the specified prefix.
#
# @return [Fog::Storage::AzureRM::Directory] A directory. Return nil if the directory does not exist.
#
def get(identity, options = {})
remap_attributes(options, max_keys: :max_results)
container = service.get_container_properties(identity)
data = parse_storage_object(container)
data[:acl] = 'unknown'
directory = new(key: identity, is_persisted: true)
directory.merge_attributes(data)
data = service.list_blobs(identity, options)
new_options = options.merge(next_marker: data[:next_marker])
directory.files.merge_attributes(new_options)
blobs = []
data[:blobs].each do |blob|
blobs << parse_storage_object(blob)
end
directory.files.load(blobs)
directory
rescue Exception => error
return nil if error.message == 'NotFound'
raise error
end
def delete_temporary_container(storage_account_name, access_key, container_name)
storage_data = Fog::Storage::AzureRM.new(azure_storage_account_name: storage_account_name, azure_storage_access_key: access_key)
storage_data.delete_container(container_name)
end
def check_container_exists(name)
service.check_container_exists(name)
end
end
end
end
end