swiftsync/sync/accounts.py
Chmouel Boudjnah 63de1098d1 sync account.
2013-03-20 18:19:34 +01:00

72 lines
2.6 KiB
Python

# -*- encoding: utf-8 -*-
import os
import sys
import swiftclient
from keystoneclient.v2_0 import client as ksclient
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
from common.utils import get_config, get_auth
from sync.containers import sync_container
def get_ks_auth_orig():
orig_auth_url = get_config('auth', 'keystone_origin')
tenant_name, username, password = \
get_config('auth', 'keystone_origin_admin_credentials').split(':')
return ksclient.Client(auth_url=orig_auth_url,
username=username,
password=password,
tenant_name=tenant_name)
def list_accounts(cnx):
for x in cnx.tenants.list():
yield x
def sync_an_account(orig_storage_url,
orig_token,
dest_storage_url,
dest_token):
orig_storage_cnx = swiftclient.http_connection(orig_storage_url)
dest_storage_cnx = swiftclient.http_connection(dest_storage_url)
orig_account_stats, orig_containers = swiftclient.get_account(
None, orig_token, http_conn=orig_storage_cnx, full_listing=True)
for container in orig_containers:
print "Synching %s.." % (container)
sync_container(orig_storage_cnx, orig_storage_url, orig_token,
dest_storage_cnx, dest_storage_url, dest_token,
container['name'])
def sync_accounts():
orig_auth_url = get_config('auth', 'keystone_origin')
orig_admin_tenant, orig_admin_user, orig_admin_password = (
get_config('auth', 'keystone_origin_admin_credentials').split(':'))
oa_st_url, orig_admin_token = (get_auth(orig_auth_url, orig_admin_tenant,
orig_admin_user,
orig_admin_password))
dest_auth_url = get_config('auth', 'keystone_dest')
# we assume orig and dest passwd are the same obv synchronized.
dst_st_url, dest_admin_token = (get_auth(dest_auth_url, orig_admin_tenant,
orig_admin_user,
orig_admin_password))
bare_oa_st_url = oa_st_url[:oa_st_url.find('AUTH_')] + "AUTH_"
bare_dst_st_url = dst_st_url[:dst_st_url.find('AUTH_')] + "AUTH_"
for x in list_accounts(get_ks_auth_orig()):
user_orig_st_url = bare_oa_st_url + x.id
user_dst_st_url = bare_dst_st_url + x.id
sync_an_account(user_orig_st_url,
orig_admin_token,
user_dst_st_url,
dest_admin_token)