Example #1
0
def get_users_stat(s3_servers):
    users_stat = {}
    try:
        rgwAdmin = RGWAdmin(settings.S3_ACCESS,
                            settings.S3_SECRET,
                            s3_servers.pop(0),
                            secure=False)
        buckets_list = rgwAdmin.get_bucket()
        for bucket in buckets_list:
            try:
                bucket_stat = rgwAdmin.get_bucket(bucket)
                if bucket_stat["owner"] in users_stat:
                    if "rgw.main" in bucket_stat["usage"]:
                        users_stat[bucket_stat["owner"]][bucket] = bucket_stat[
                            "usage"]["rgw.main"]
                    else:
                        users_stat[bucket_stat["owner"]][bucket] = {}
                else:
                    if "rgw.main" in bucket_stat["usage"]:
                        users_stat[bucket_stat["owner"]] = {
                            bucket: bucket_stat["usage"]["rgw.main"]
                        }
                    else:
                        users_stat[bucket_stat["owner"]] = {bucket: {}}
            except:
                pass
        return users_stat
    except IndexError:
        return users_stat
    except TypeError:
        return get_users_stat(s3_servers)
    except exceptions.ServerDown:
        return get_users_stat(s3_servers)
Example #2
0
def get_users_stat(s3_server):
    users_stat = defaultdict(lambda: [0, defaultdict(lambda: defaultdict(dict))])
    try:
        rgwAdmin = RGWAdmin(settings.S3_CRED['access_key'],
                            settings.S3_CRED['secret_key'],
                            s3_server, secure=False) 
        buckets_list = rgwAdmin.get_bucket()
        for bucket in buckets_list:
            try:
                bucket_stat = rgwAdmin.get_bucket(bucket)
                username = rgwAdmin.get_user(
                    bucket_stat["owner"]
                )["display_name"]
                
                if ':' in username:
                    group_name = username.split(":")[0].upper()
                else:
                    group_name = "_"
                users_stat[group_name][1][bucket_stat["owner"]][bucket] = (
                    bucket_stat["usage"]["rgw.main"]
                )
                users_stat[group_name][0] += bucket_stat[
                    "usage"
                ]["rgw.main"]["size_kb"]

            except:
                pass
        for i in users_stat:
            users_stat[i][0] *= 1024
            for j in users_stat[i][1]:
                users_stat[i][1][j].default_factory = None
            users_stat[i][1].default_factory = None
        return dict(users_stat)
    except:
        return dict(users_stat)
Example #3
0
def get_users_stat(s3_servers):
    users_stat = {}
    try:
        rgwAdmin = RGWAdmin(settings.S3_ACCESS, settings.S3_SECRET,
                            s3_servers.pop(0), secure=False) 
        buckets_list = rgwAdmin.get_bucket()
        for bucket in buckets_list:
            try:
                bucket_stat = rgwAdmin.get_bucket(bucket)
                if bucket_stat["owner"] in users_stat:
                    if "rgw.main" in bucket_stat["usage"]:
                        users_stat[
                            bucket_stat["owner"]
                        ][bucket] = bucket_stat["usage"]["rgw.main"]
                    else:
                        users_stat[
                            bucket_stat["owner"]
                        ][bucket] = {}
                else:
                    if "rgw.main" in bucket_stat["usage"]:
                        users_stat[bucket_stat["owner"]] = {
                            bucket: bucket_stat["usage"]["rgw.main"]}
                    else:
                        users_stat[bucket_stat["owner"]] = {
                            bucket: {}}
            except:
                pass
        return users_stat
    except IndexError:
        return users_stat
    except TypeError:
        return get_users_stat(s3_servers)
    except exceptions.ServerDown:
        return get_users_stat(s3_servers)
Example #4
0
def get_rgw_stat(server):
    try:
        rgwAdmin = RGWAdmin(settings.S3_ACCESS, settings.S3_SECRET,
                            server, secure=False)
        if rgwAdmin.get_users():
            return 1
        else:
            return 0
    except:
        return 0
Example #5
0
def get_rgw_stat(server):
    try:
        rgwAdmin = RGWAdmin(settings.S3_CRED['access_key'],
                            settings.S3_CRED['secret_key'],
                            server, secure=False)
        if rgwAdmin.get_users():
            return server, 1
        else:
            return server, 0
    except:
        return server, 0
Example #6
0
def get_rgw_stat(server):
    try:
        rgwAdmin = RGWAdmin(settings.S3_ACCESS,
                            settings.S3_SECRET,
                            server,
                            secure=False)
        if rgwAdmin.get_users():
            return 1
        else:
            return 0
    except:
        return 0
Example #7
0
def updateBucketInfo():
    conn = pymysql.connect("localhost", "root", "PASSWORD", "rgw_info")
    cursor = conn.cursor()

    cursor.execute("CREATE TABLE IF NOT EXISTS user_info(user_id varchar(100) not null primary key ,"
                   "display_name varchar(100) ,max_buckets int ,bucketlist longtext not null,max_size_kb bigint ,"
                   "max_objects int ,user_quota_enable varchar(100) ,user_bucket_quota_enable varchar (100)) ")
    cursor.execute("CREATE TABLE IF NOT EXISTS bucket_info(bucket_id varchar(100) not null primary key ,"
                   " usaged varchar(100) ,usaged_gb int,"
                   "num_objects int ,bucket_max_size_gb int ,max_objects int ,bucket_quota_enable varchar(100) )")
    rgw = RGWAdmin(
        access_key='*******************',
        secret_key='*************************',
        server='**.**.**.**:7480',
        verify=False, secure=False)

    userlist = rgw.get_users()

    for i in range(len(userlist)):
        userinfo = rgw.get_user(uid=userlist[i])
        bucketlist = rgw.get_bucket(uid=userlist[i])
        userquota = rgw.get_user_quota(uid=userlist[i])
        userbucketquota = rgw.get_user_bucket_quota(uid=userlist[i])
        bucketlist_str = ",".join(bucketlist)
        print(bucketlist_str)
        user_sql = "replace into user_info values ('%s','%s','%s','%s','%s','%s','%s','%s') " \
                   % (userinfo['user_id'],
                      userinfo['display_name'],
                      userinfo['max_buckets'],
                      bucketlist_str,
                      userquota['max_size_kb'],
                      userquota['max_objects'],
                      userquota['enabled'],
                      userbucketquota['enabled'])
        cursor.execute(user_sql)
        conn.commit()
        print("userinfo:", userinfo)
        print("bucketlist:", bucketlist)
        for j in range(len(bucketlist)):
            bucketinfo = rgw.get_bucket(bucket=bucketlist[j])
            bucketquota = bucketinfo['bucket_quota']
            try:
                bucket_rgw = bucketinfo['usage']['rgw.main']
                print(bucket_rgw)
            except:
                bucket_rgw = {'size_kb_actual': 0, 'num_objects': 0}
            bucket_sql = "replace into bucket_info values ('%s','%s','%s','%s','%s','%s','%s') " \
                         % (bucketinfo['bucket'],
                            bucket_rgw['size_kb_actual'] / bucketquota['max_size_kb'],
                            bucket_rgw['size_kb_actual'] / 1024 / 1024,
                            bucket_rgw['num_objects'],
                            bucketquota['max_size_kb'] / 1024 / 1024,
                            bucketquota['max_objects'],
                            bucketquota['enabled'])
            cursor.execute(bucket_sql)
            conn.commit()

    conn.close()
Example #8
0
 def __init__(self):
     host = os.getenv("host")
     access_key = os.getenv("access_key")
     secret_key = os.getenv("secret_key")
     self.__rgwAdmin = RGWAdmin(server=host,
                                access_key=access_key,
                                secret_key=secret_key,
                                verify=False)
Example #9
0
def get_ceph_admin_client() -> RGWAdmin:
    """Return a configured RGWAdmin client"""
    server = urlparse(settings.CEPH_HOST).netloc
    rgw = RGWAdmin(
        access_key=settings.CEPH_ACCESS_KEY,
        secret_key=settings.CEPH_SECRET_KEY,
        server=server,
    )
    return rgw
Example #10
0
def getBucketInfo(uid, secrectkey):
    rgw = RGWAdmin(
        access_key='*******************************',
        secret_key='*******************************',
        server='**.**.**.**:7480',
        verify=False, secure=False)
    sub_secrect = rgw.get_user(uid=uid)['keys']['secret_key']
    if secrectkey == sub_secrect:
        conn = pymysql.connect("localhost", "root", "PASSWORD", "rgw_info")
        cursor = conn.cursor()
        search_sql = "select * from user_info  where bucket_id = '%(bucket_id)s'"
        cursor.execute(search_sql)
        search_result = cursor.fetchmany()
        print(search_result)
        conn.close()
        jsonData = []
        for row in search_result:
            result = {'bucket_id': row[0], 'usaged': row[1], 'usaged_gb': row[2], 'num_objects': row[3],
                      'bucket_max_size_gb': row[4], 'max_objects ': row[5], 'bucket_quota_enable': row[6]}
            jsonData.append(result)
    return result
Example #11
0
def rgw_client(region_id: int):
    """
    初始化rgw客户端

    使用区域中的管理员key生成rgw客户端
    """
    try:
        b = BucketRegion.objects.get(reg_id=region_id)
    except BucketRegion.DoesNotExist:
        return

    return RGWAdmin(
        access_key=b.access_key,
        secret_key=b.secret_key,
        server=b.server[7:]
        if b.server.startswith('http://') else b.server[8:],
        secure=False if b.server.startswith('http://') else True,
        verify=False,
        timeout=5,
    )
Example #12
0
import schedule
import time

logger = logging.getLogger('sync_log')
hdlr = logging.FileHandler('sync.log')
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr)
logger.setLevel(logging.DEBUG)

user = '******'

#Define the RGW Super User Connections

rgw_src = RGWAdmin(access_key='XXXXXXX',
                   secret_key='XXXXXXXXX',
                   server='XXXXX',
                   secure=False)  #Add keys here of rgwadmin admin account
rgw_dst = RGWAdmin(access_key='XXXXXXX',
                   secret_key='XXXXXXXXXX',
                   server='XXXXXXXx',
                   secure=False)  #Add keys here of rgwadmin admin account


def reconcile():

    bucket_src_dict = {}
    bucket_dst_dict = {}

    dBuckets = rgw_src.get_bucket(uid=user, stats=True)
    for bucket in dBuckets:
        #print bucket["usage"]["rgw.main"]["num_objects"]
Example #13
0
                    help="endpoint url for s3 object storage",
                    required=True)
parser.add_argument('-a',
                    '--access-key',
                    help='access key for s3 object storage',
                    required=True)
parser.add_argument('-s',
                    '--secret-key',
                    help='secret key for s3 object storage',
                    required=True)

args = parser.parse_args()

rgw = RGWAdmin(access_key=args.access_key,
               secret_key=args.secret_key,
               server=args.endpoint_url,
               secure=False,
               verify=False)


@app.route("/createuser", methods=['GET', 'POST'])
def createuser():
    if request.method == 'POST':
        result = request.form
        username = request.args.get('uid')
        displayname = request.args.get('displayname')
        u = rgw.create_user(uid=username, display_name=displayname)
        realm_dict[username] = 'realm1'
        return u

Example #14
0
from rgwadmin import RGWAdmin

ACCESS_KEY = 'AAT30ADPPNWA0FSLMAPJ'
SECRET_KEY = '7D3fgmOoCzix6qwe3KM2DmbSmaWGDZbCH4jBHqiO'

rgw = RGWAdmin(access_key=ACCESS_KEY,
               secret_key=SECRET_KEY,
               server='172.16.70.31:7480',
               secure=False)
rgw.get_users()
Example #15
0
 def get_rgw_conn(self, access_key, secret_key, ip_addr):
     return RGWAdmin(access_key=access_key,
                     secret_key=secret_key,
                     server=ip_addr,
                     secure=False)
Example #16
0
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

from django.http import JsonResponse
from django.conf import settings
from django.shortcuts import render
from django.shortcuts import redirect
from rgwadmin import RGWAdmin

s3_servers = list(settings.S3_SERVERS)
rgwAdmin = RGWAdmin(settings.S3_ACCESS,
                    settings.S3_SECRET,
                    s3_servers.pop(0),
                    secure=False)


def param(request, key):
    if key not in request.GET:
        raise Exception(key + "not found in request")
    return request.GET[key]


def get_user_info(username, public=False):
    userinfo = rgwAdmin.get_user(username)
    userinfo.update({
        "user_quota": rgwAdmin.get_quota(username, "user"),
        "bucket_quota": rgwAdmin.get_quota(username, "bucket")
    })
def test_exec(config):

    io_info_initialize = IOInfoInitialize()
    basic_io_structure = BasicIOInfoStructure()
    io_info_initialize.initialize(basic_io_structure.initial())

    umgmt = UserMgmt()

    host, ip = utils.get_hostname_ip()
    port = utils.get_radosgw_port_no()
    hostname = str(ip) + ":" + str(port)
    log.info(hostname)

    # preparing data
    admin_api_user = "******" + randomString()
    log.info(admin_api_user)
    user_info = umgmt.create_rest_admin_user(user_id=admin_api_user,
                                             displayname=admin_api_user)

    rgw = RGWAdmin(access_key=user_info['access_key'],
                   secret_key=user_info['secret_key'],
                   server=hostname,
                   secure=False,
                   verify=False)

    api_user = "******" + randomString()
    log.info(api_user)
    for uc in range(config.user_count):
        #Create User
        data = rgw.create_user(uid=api_user,
                               display_name=api_user,
                               email=api_user + '@abc.xyz')
        log.info("User created successfully")
        log.info(data)
        log.info('verification starts')
        op = utils.exec_shell_cmd("radosgw-admin user info --uid %s" %
                                  api_user)
        json_doc = json.loads(op)
        log.info(json_doc)
        v = verify_user(data, json_doc)
        if v is False:
            test_info.failed_status('test failed')
            sys.exit(1)
        log.info("Verification for create operation completed")

        #Update User
        data = rgw.modify_user(uid=api_user,
                               display_name=api_user + "_11",
                               email=api_user + '*****@*****.**')
        log.info("User Updated successfully")
        log.info(data)
        log.info('verification starts')
        op = utils.exec_shell_cmd("radosgw-admin user info --uid %s" %
                                  api_user)
        json_doc = json.loads(op)
        log.info(json_doc)
        v = verify_user(data, json_doc)
        if v is False:
            test_info.failed_status('test failed')
            sys.exit(1)
        log.info("Verification for Update operation completed")

        #delete User
        data = rgw.remove_user(uid=api_user, purge_data=False)
        log.info(data)
        log.info("User removed")
        op = utils.exec_shell_cmd("radosgw-admin user list")
        json_doc = json.loads(op)
        if api_user in json_doc:
            test_info.failed_status('test failed')
            sys.exit(1)
        log.info("Verification for Delete operation completed")
    # check for any crashes during the execution
    crash_info = reusable.check_for_crash()
    if crash_info:
        raise TestExecError("ceph daemon crash found!")
Example #18
0
import boto
import boto.s3.connection
from rgwadmin import RGWAdmin

# Users and Buckets from the primary server are created in the secondary server

rgw_sa = RGWAdmin(access_key=<access_key>, secret_key=<secret_key>,
               server=<primary_server_endpoint>, secure=False) #Add keys here of rgwadmin admin account and endpoint
rgw_samit = RGWAdmin(access_key=<access_key>, secret_key=<secret_key>,
               server=<secondary_server_endpoint>, secure=False) #Add keys here of rgwadmin admin account and endpoint

sa_users=rgw_sa.get_users()
samit_users=rgw_samit.get_users()
users={} #dict of the users with their access and secret keys
for user in sa_users:
    user_details=rgw_sa.get_user(user)
    users[user]={}
    users[user]['ak']=user_details['keys'][0]['access_key']
    users[user]['sk']=user_details['keys'][0]['secret_key']

    if user not in samit_users:
        rgw_samit.create_user(uid=user, display_name=user_details['display_name'],
                              email=user_details['email'],access_key=user_details['keys'][0]['access_key'],
                              secret_key=user_details['keys'][0]['secret_key'], generate_key=False)
	    print "User created in SAmit", user

count=1
for user in users.keys():
    access_key=users[user]['ak']
    secret_key=users[user]['sk']
    print count,user