def test_project_display(project_id):
    feed_utils.heading("Trying project display. project_id: %s" % project_id)
    project_info = project.get_project(project_id)
    if not project_info:
        feed_utils.failed("failed getting project details")
    else:
        feed_utils.ok("project details: %s" % project_info)
Пример #2
0
def test_user_registration(idp_number, federated_id, name, email, user_type_id, is_active, affiliation):
    feed_utils.heading("Trying user registration")
    new_id = users.register_user(idp_number, federated_id, name, email, user_type_id, is_active, affiliation)
    if not new_id:
        feed_utils.failed("user registration failed")
    else:
        feed_utils.ok("new user registered. nels_id: %s " % new_id)
        test_users_list.test_user_display(new_id)
Пример #3
0
def test_project_add(name, description):
    feed_utils.heading("Trying project creation")
    new_id = project.add_project(name, description)
    if not new_id:
        feed_utils.failed("project creation failed")
    else:
        feed_utils.ok("new created prject. project_id: %s " % new_id)
        test_project_display(new_id)
def test_quota_del(id):
    feed_utils.heading("Trying quota deletion. id : %s" % id)
    if not sbi_quotas.delete_quota(id):
        feed_utils.failed("deletion of quota failed")
        return False

    feed_utils.ok("deletion of quota")
    return True
Пример #5
0
def test_project_search(project_id=None, name=None):
    result = project.search_projects(project_id, name)
    if not result:
        feed_utils.failed("search projects failed")
    else:
        feed_utils.ok("found %s projects from the search" % len(result))
        for proj in result:
            test_projects_list.test_project_display(proj['id'])
def test_project_display_dataset(project_id, dataset_id):
    feed_utils.heading(
        "Trying dataset in project display. project_id: %s, dataset_id %s" %
        (project_id, dataset_id))
    project_info = sbi_project.get_dataset_in_project(project_id, dataset_id)
    if not project_info:
        feed_utils.failed("failed getting dataset details")
    else:
        feed_utils.ok("dataset details: %s" % project_info)
Пример #7
0
def test_project_add(quota_id, name, federated_id):
    feed_utils.heading("Trying project creation")
    project_id = sbi_project.add_project(quota_id, name, federated_id)
    if project_id is None:
        feed_utils.failed("project creation failed")
    else:
        feed_utils.ok("new created project. project id: %s " % project_id)

    return project_id
Пример #8
0
def test_project_delete_member(project_id, federated_id):
    feed_utils.heading("Trying delete member from project")
    success = sbi_project.delete_user_from_project(project_id, federated_id)
    if success != True:
        feed_utils.failed("delete member from project failed")
    else:
        feed_utils.ok("removed member in project. ")

    return project_id
Пример #9
0
def test_project_add_dataset(project_id, federated_id):
    feed_utils.heading("Trying adding dataset to project")
    success = sbi_project.add_dataset_to_project(project_id, federated_id)
    if success != True:
        feed_utils.failed("adding dataset to project failed")
    else:
        feed_utils.ok("new dataset in project. ")

    return project_id
Пример #10
0
def test_quota_add(name, federated_id):
    feed_utils.heading("Trying quota creation")
    created_code = sbi_quotas.add_quota(name, federated_id)
    if created_code == None:
        feed_utils.failed("quota creation failed")
        return False

    feed_utils.ok("new created quota ")
    return True
def test_recompute_disc_usage():
    feed_utils.heading("Trying recompute sbi project disc usage")
    success = sbi_project.recompute_project_disc_usage()
    if success is False:
        feed_utils.failed("recompute failed")
    else:
        feed_utils.ok("recompute success")

    return success
def test_project_delete_dataset(project_id, dataset_id):
    feed_utils.heading("Trying deleting dataset from project")
    success = sbi_project.delete_dataset_in_project(project_id, dataset_id)
    if success != True:
        feed_utils.failed("deleting dataset in project failed")
    else:
        feed_utils.ok("deleted dataset in project. ")

    return project_id
def test_project_add_member(project_id, membership_type, federated_id):
    feed_utils.heading("Trying adding member to project")
    success = sbi_project.add_user_to_project(project_id, membership_type,
                                              federated_id)
    if success != True:
        feed_utils.failed("adding member to project failed")
    else:
        feed_utils.ok("new member in project. ")

    return project_id
def test_users_list():
    feed_utils.heading("Trying sbi user ids")
    user_ids = sbi_users.get_user_ids()
    if not user_ids:
        feed_utils.failed("get user ids")
        return

    for user_id in user_ids:
        feed_utils.info(user_id)

    feed_utils.ok("")
Пример #15
0
def test_projects_list():
    feed_utils.heading("Trying projects list")
    project_ids = project.get_project_ids()
    if not project_ids:
        feed_utils.failed("get project ids")
        return False
    feed_utils.ok("fetched %s project ids" % len(project_ids))

    random_project_id = project_ids[random.randrange(0, len(project_ids) - 1)]
    test_project_display(random_project_id)
    return True
Пример #16
0
def test_copy_nels_to_sbi(nels_id):
    feed_utils.heading("copy use case nels to sbi. nels_id: %s" % nels_id)

    credentail = ssh_utils.get_ssh_credentials(nels_id)
    if not credentail:
        feed_utils.failed("fetching key")
        return False
    feed_utils.ok("ssh key fetched")
    (host, username, key_file) = credentail

    test_file = "dummy5.txt"

    src_dir = "Personal"
    src_file = "%s/%s" % (src_dir, test_file)
    dest_dir = ''

    if not ssh_utils.write_dummy_file(key_file, username, host, src_file,
                                      "5k"):  # 5M
        feed_utils.failed("write test file")
        return False
    feed_utils.ok("write test file")

    dataset_id = "c16ff090-605d-4228-a8c9-3713a9a40e45"
    dataset_name = "regtest1feb"
    subtype = "Intensities"
    subtype_id = 1124874

    job_id = job.add_sbi_job(job.SBI_PULL, nels_id, [test_file], [], host,
                             username, file_utils.read_file_content(key_file),
                             dataset_id, dataset_name, subtype, subtype_id,
                             src_dir, "")

    if job_id == -1:
        feed_utils.failed("job submission")
        return False
    feed_utils.ok("job submission. job-id: %s" % job_id)
    job.wait_for_job(job_id)
    # validate file (to do)

    # clean up
    if not job.delete_job(job_id):
        feed_utils.failed("job delete")
        return False
    feed_utils.ok("job delete")

    # clean up on NeLS side
    [exit_code, output,
     error] = run_utils.launch_remote_with_key(key_file, username, host,
                                               "rm -rf %s " % (src_file))
    if exit_code != 0:
        feed_utils.error(error)
        return False
    feed_utils.ok("clean up")
    return True
def test_project_list_all_datasets(project_id):
    feed_utils.heading("Trying list datasets in project. project_id: %s" %
                       project_id)
    project_info = sbi_project.get_datasets_in_project(project_id)

    if project_info == None:
        feed_utils.failed("failed getting project datasets")
    elif project_info == []:
        feed_utils.ok("project without datasets: %s" % project_info)

    else:
        feed_utils.ok("project datasets: %s" % project_info)
def test_project_list_all_subtypes(project_id, dataset_id):
    feed_utils.heading(
        "Trying list subtypes of a dataset in project. project_id: %s, dataset_id %s"
        % (project_id, dataset_id))
    project_info = sbi_project.get_subtypes_in_dataset_in_project(
        project_id, dataset_id)

    if project_info == None:
        feed_utils.failed("failed getting project dataset subtypes")
    elif project_info == []:
        feed_utils.ok("project without dataset subtypes: %s" % project_info)

    else:
        feed_utils.ok("project dataset subtypes: %s" % project_info)
def test_quota_search(name):
    feed_utils.heading("Trying quota search")
    result = sbi_quotas.search_quotas(name)
    if not result:
        feed_utils.failed("search quotas failed")
    else:
        feed_utils.ok("found %s quotas from the search" % result[u'count'])
        for quota in result[u'data']:

            feed_utils.info("id: %d, quota_id: %d" %
                            (int(quota[u'id']), int(quota[u'quota_id'])))

            if result[u'count'] == 1:
                return int(quota[u'id']), int(quota[u'quota_id'])
    return None
def test_project_list_all_users(project_id):
    feed_utils.heading("Trying list users in project. project_id: %s" %
                       project_id)
    project_info = sbi_project.get_users_in_project(project_id)
    if project_info == None:
        feed_utils.failed("failed getting project users")

    elif project_info == []:
        feed_utils.ok("project without users: %s" % project_info)

    else:
        feed_utils.ok("number of project users: %s" % len(project_info))

        for user in project_info:
            feed_utils.info("federated_id : %s" % user[u'federated_id'])
Пример #21
0
def get_projects_in_quota(quota_id):
    try:
        ids = []
        response = requests.get(config.sbi_url("quotas/%s/projects" % (quota_id)),
                                auth=(config.SBI_KEY, config.SBI_SECRET))
        feed_utils.info(response.json())
        if response.status_code == requests.codes.ok:
            json_response = response.json()
            if json_response[u'count'] > 0:

                for uid in json_response[u'data']:
                    ids.append(uid[u'project_id'])

            else:
                feed_utils.ok("No projects in this quota")
            return ids
    except:
        feed_utils.error(sys.exc_info()[0])
    return None
Пример #22
0
def test_ssh(nels_id):
    feed_utils.heading("ssh use case. nels_id: %s" % nels_id)
    credentail = ssh_utils.get_ssh_credentials(nels_id)
    if not credentail:
        feed_utils.failed("fetching key")
        return False
    feed_utils.ok("ssh key fetched")
    (host, username, key_file) = credentail
    (status, items,
     error) = run_utils.launch_remote_with_key(key_file, username, host, "ls ")
    if status != 0:
        feed_utils.error(error)
        return False

    if "Personal" in items:
        feed_utils.ok("Personal folder found")
    else:
        feed_utils.failed("Personal folder not found")

    if "Projects" in items:
        feed_utils.ok("Projects folder found")
    else:
        feed_utils.failed("Projects folder not found")

    feed_utils.info("cleaning key file")
    run_utils.launch_cmd("rm -f  %s" % key_file)
    return True
Пример #23
0
    # get options and arguments
    (options, args) = parser.parse_args()
    feed_utils.VERBOSE = options.verbose
    args_utils.require_args_length(parser, args, 1)

    args_utils.require_arg_number(parser, args, 0, "project_id")
    pid = args[0]

    config.init()
    feed_utils.heading("project info")

    if not project_facade.project_exists(pid):
        run_utils.exit_fail("project not found")

    feed_utils.ok("project found\nname:\t%s\nhome folder:\t%s" %
                  (project_facade.project_name_by_id(pid),
                   project_facade.project_home(pid)))

    feed_utils.push_in()
    for role in [
            project_facade.MembershipRoles.ADMIN,
            project_facade.MembershipRoles.POWERUSER,
            project_facade.MembershipRoles.MEMBER
    ]:
        feed_utils.push_in()
        members = project_facade.project_members(pid, role)
        feed_utils.info("role:\t%s (members count: %s)" % (role, len(members)))
        for uid in members:
            feed_utils.info("\tnels_id:\t%s\tusername:\t%s" %
                            (uid, user_facade.nels_id_to_username(uid)))
        feed_utils.push_out()
Пример #24
0
from optparse import OptionParser

import config
from facades import user_facade
from utils import feed_utils, args_utils, run_utils

if __name__ == "__main__":
    usage = 'usage: %prog [options] nels_id'
    version = '%prog 1.0'

    parser = OptionParser(usage=usage, version=version)
    parser.add_option('-v', '--verbose', dest="verbose", action="store_true", help='turn verbosity on', default=False)
    # get options and arguments
    (options, args) = parser.parse_args()
    feed_utils.VERBOSE = options.verbose
    args_utils.require_args_length(parser, args, 1)

    args_utils.require_arg_number(parser, args, 0, "nels_id")
    nels_id = args[0]

    config.init()
    feed_utils.heading("user info")

    if not user_facade.user_exists(nels_id):
        run_utils.exit_fail("user not found")
    feed_utils.ok("user found\nnels-id:\t%s\nusername:\t%s\nhome folder:\t%s" % (
        nels_id, user_facade.nels_id_to_username(nels_id), user_facade.user_home(nels_id)))
Пример #25
0
                      '--notify',
                      dest="notify",
                      action="store_true",
                      help='turn notification on',
                      default=False)
    (options, args) = parser.parse_args()
    feed_utils.VERBOSE = options.verbose
    feed_utils.NOTIFY = options.notify

    args_utils.require_args_length(parser, args, 1)
    email = str(args[0])
    if not mail_utils.is_valid_email(email):
        run_utils.exit_fail("invalid e-mail")

    # list users
    users_list_ok = test_users_list.test_users_list()
    feed_utils.heading("A full life-cyle of user")
    nels_id = users.register_user(users.NELS_IDP, email, "Test-added-user",
                                  email, users.NORMAL_USER, True, "TEST")
    if not nels_id:
        run_utils.exit_fail("user registration failed")

    test_users_list.test_user_display(nels_id)
    ssh_ok = test_ssh(nels_id)
    if ssh_ok:
        test_copy(nels_id)
        test_move(nels_id)
    if not users.delete_user(nels_id):
        run_utils.exit_fail("uanble to delete user")
    feed_utils.ok("user deleted successfully")
Пример #26
0
def test_user_del(nels_id):
    feed_utils.heading("Trying user deletion. nels_id : %s" %nels_id)
    if not users.delete_user(nels_id):
        feed_utils.failed("deletion of user failed")
    else:
        feed_utils.ok("deletion of user")
Пример #27
0
from optparse import OptionParser

import config
from facades import user_facade
from utils import feed_utils, args_utils

if __name__ == "__main__":
    usage = 'usage: %prog [options] nels_id'
    version = '%prog 1.0'

    parser = OptionParser(usage=usage, version=version)
    parser.add_option('-v',
                      '--verbose',
                      dest="verbose",
                      action="store_true",
                      help='turn verbosity on',
                      default=False)
    # get options and arguments
    (options, args) = parser.parse_args()
    feed_utils.VERBOSE = options.verbose
    args_utils.require_args_length(parser, args, 1)

    args_utils.require_arg_number(parser, args, 0, "nels_id")
    nels_id = args[0]

    config.init()
    feed_utils.heading("nels id to user name")
    feed_utils.ok("nels id: %s  : username: %s " %
                  (nels_id, user_facade.nels_id_to_username(nels_id)))
Пример #28
0
def test_project_del(project_id):
    feed_utils.heading("Trying project deletion. project_id : %s" % project_id)
    if not project.delete_project(project_id):
        feed_utils.failed("deletion of project failed")
    else:
        feed_utils.ok("deletion of project")
    project_name = str(args[1])

    nels_id = users.register_user(users.NELS_IDP, email, "Test-added-user", email, users.NORMAL_USER, True, "TEST")
    if not nels_id:
        run_utils.exit_fail("user registration failed")
    test_users_list.test_user_display(nels_id)

    project_id = project.add_project(project_name, 'added from integration test')
    if not project_id:
        feed_utils.failed("project creation failed")
    else:
        test_projects_list.test_project_display(project_id)

        default_membership_type = 1
        if project.add_user_to_project(project_id, nels_id, default_membership_type):
            feed_utils.ok("user was added to project")
            if not default_membership_type == project.get_user_in_project(project_id, nels_id):
                feed_utils.failed("the user's membership type is not correct")
            else:
                feed_utils.ok("the user's membership type is correct")
        else:
            feed_utils.failed("user was not added to project")

        if not project.delete_project(project_id):
            feed_utils.failed("unable to delete project")
        else:
            feed_utils.ok("project deleted successfully")

    if not users.delete_user(nels_id):
        run_utils.exit_fail("uanble to delete user")
    run_utils.exit_ok("user deleted successfully")
Пример #30
0
if __name__ == "__main__":
    usage = 'usage: %prog [options] nels_id  link_to_clean'
    version = '%prog 1.0'

    parser = OptionParser(usage=usage, version=version)
    parser.add_option('-v', '--verbose', dest="verbose", action="store_true", help='turn verbosity on', default=False)
    # get options and arguments
    (options, args) = parser.parse_args()
    feed_utils.VERBOSE = options.verbose
    args_utils.require_args_length(parser, args, 2)

    args_utils.require_arg_number(parser, args, 0, "nels_id")
    config.init()

    proot = path.join(storage_facade.USERS_ROOT_DIR, user_facade.nels_id_to_username(int(args[0])), "Projects")
    plink = path.join(proot, args[1])
    if not path.exists(plink):
        run_utils.exit_fail("symbolic link not found")

    # unlock folder, remove link and lock folder again
    run_utils.launch_cmd("/bin/chflags -h nosimmutable,nosunlink %s" % proot)
    run_utils.launch_cmd("/bin/rm -f %s " % plink)
    run_utils.launch_cmd("/bin/chflags -h simmutable,sunlink %s" % proot)

    #verify
    if path.exists(plink):
        feed_utils.failed("link still exists")
    else:
        feed_utils.ok("link removed successfully")