mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
[openstack|storage] Added storage example to set the account quota
See also #1632
This commit is contained in:
parent
12390f0813
commit
d96365c6fd
1 changed files with 66 additions and 0 deletions
66
lib/fog/openstack/examples/storage/set-account-quota.rb
Normal file
66
lib/fog/openstack/examples/storage/set-account-quota.rb
Normal file
|
@ -0,0 +1,66 @@
|
|||
require 'fog'
|
||||
require 'pp'
|
||||
|
||||
#
|
||||
# This example sets the account quota (in bytes) for the tenant demo@test.lan
|
||||
# using an admin account (admin has the reseller user role).
|
||||
#
|
||||
# Uses the account impersonation feature recently added to the
|
||||
# OpenStack Storage service in Fog (See https://github.com/fog/fog/pull/1632).
|
||||
#
|
||||
# Should be available in Fog 1.10.0+1.
|
||||
#
|
||||
# Setting account quotas is only supported in Swift 1.8.0+
|
||||
# using the brand new account_quota middleware introduced in
|
||||
# OpenStack Grizzly (currently unreleased as of 2013/04/03).
|
||||
#
|
||||
# https://github.com/openstack/swift/blob/master/swift/common/middleware/account_quotas.py
|
||||
#
|
||||
|
||||
auth_url = 'https://identity.test.lan/v2.0/tokens'
|
||||
user = 'admin@test.lan'
|
||||
password = 'secret'
|
||||
|
||||
Excon.defaults[:ssl_verify_peer] = false
|
||||
|
||||
#
|
||||
# We are going to use the Identity (Keystone) service
|
||||
# to retrieve the list of tenants available and find
|
||||
# the tenant we want to set the quotas for.
|
||||
#
|
||||
id = Fog::Identity.new :provider => 'OpenStack',
|
||||
:openstack_auth_url => auth_url,
|
||||
:openstack_username => user,
|
||||
:openstack_api_key => password
|
||||
|
||||
#
|
||||
# Storage service (Swift)
|
||||
#
|
||||
st = Fog::Storage.new :provider => 'OpenStack',
|
||||
:openstack_auth_url => auth_url,
|
||||
:openstack_username => user,
|
||||
:openstack_api_key => password
|
||||
|
||||
id.tenants.each do |t|
|
||||
# We want to set the account quota for tenant demo@test.lan
|
||||
next unless t.name == 'demo@test.lan'
|
||||
|
||||
# We've found the tenant, impersonate the account
|
||||
# (the account prefix AUTH_ may be different for you, double check it).
|
||||
puts "Changing account to #{t.name}"
|
||||
st.change_account "AUTH_#{t.id}"
|
||||
|
||||
# Now we're adding the required header to the demo@test.lan
|
||||
# tenant account, limiting the account bytes to 1048576 (1MB)
|
||||
#
|
||||
# Uploading more than 1MB will return 413: Request Entity Too Large
|
||||
st.request :method => 'POST',
|
||||
:headers => { 'X-Account-Meta-Quota-Bytes' => '1048576' }
|
||||
|
||||
# We can list the account details to verify the new
|
||||
# header has been added
|
||||
pp st.request :method => 'HEAD'
|
||||
end
|
||||
|
||||
# Restore the account we were using initially (admin@test.lan)
|
||||
st.reset_account_name
|
Loading…
Add table
Reference in a new issue