Exemplo n.º 1
0
class InternalBrainClient(object):

    def __init__(self, conf_file, account='AUTH_test'):
        self.swift = InternalClient(conf_file, 'probe-test', 3)
        self.account = account

    @translate_client_exception
    def put_container(self, container_name, headers):
        return self.swift.create_container(self.account, container_name,
                                           headers=headers)

    @translate_client_exception
    def post_container(self, container_name, headers):
        return self.swift.set_container_metadata(self.account, container_name,
                                                 headers)

    @translate_client_exception
    def delete_container(self, container_name):
        return self.swift.delete_container(self.account, container_name)

    def parse_qs(self, query_string):
        if query_string is not None:
            return {k: v[-1] for k, v in parse_qs(query_string).items()}

    @translate_client_exception
    def put_object(self, container_name, object_name, headers, contents,
                   query_string=None):
        return self.swift.upload_object(StringIO(contents), self.account,
                                        container_name, object_name,
                                        headers=headers,
                                        params=self.parse_qs(query_string))

    @translate_client_exception
    def delete_object(self, container_name, object_name):
        return self.swift.delete_object(
            self.account, container_name, object_name)

    @translate_client_exception
    def head_object(self, container_name, object_name):
        return self.swift.get_object_metadata(
            self.account, container_name, object_name)

    @translate_client_exception
    def get_object(self, container_name, object_name, query_string=None):
        status, headers, resp_iter = self.swift.get_object(
            self.account, container_name, object_name,
            params=self.parse_qs(query_string))
        return headers, ''.join(resp_iter)
Exemplo n.º 2
0
account = sys.argv[1]
container = sys.argv[2]
obj = sys.argv[3]
post_container = False

if len(sys.argv) == 5:
    if sys.argv[4] in ['y', 'Y', 'yes', 'YES']:
        post_container = True

client = InternalClient('/etc/swift/internal-client.conf', 'check-cont', 3)

for p in POLICIES:
    print('Checking policy name: %s (%d)' % (p.name, p.idx))

    headers = { 'X-Backend-Storage-Policy-Index': p.idx}
    meta  = client.get_object_metadata(account, container, obj,
                                       headers=headers,
                                       acceptable_statuses=(2, 4))

    if 'x-timestamp' in meta:
        print('  >> Find object %s in policy %s' % (obj, p.name) )
        if post_container:
            print('create container in policy %s' % p.name )
            headers = { 'X-Storage-Policy': p.name}
            client.create_container(account, container, headers)
            break
    else:
        print('  >> Can not find %s in policy %s' % (obj, p.name))