Example #1
0
def run(cfg, experiments, options):
    """
    Generate the experiment space and calls execute() for each
    experiment.
    """

    # print information
    info.show_info(cfg, experiments)

    # initialize counters
    t_start = tc()

    total_runs = len(experiments)  # * cfg.runs
    missing_runs = total_runs - core.success_count(cfg, experiments)
    actual_runs = 0
    executed_runs = 0
    elapsed_time = utils.Mean()

    if hasattr(cfg, 'prepare_global') and not options.skip_global:
        if options.show_output:
            f = utils.Tee("dude.prepare_global", 'w')
        else:
            f = open("dude.prepare_global", 'w')
        try:
            sys.stdout = sys.stderr = f
            cfg.prepare_global()
        except KeyboardInterrupt, e:
            sys.stdout = sys.__stdout__
            sys.stderr = sys.__stderr__
            print "Interrupted on prepare_global()"
            sys.exit(1)
        finally:
Example #2
0
    print("The best test acc is {:.2f}".format(test_acc))
    print("The best test l2 is {:.3f}".format(test_l2))
    print(
        "=============================================================================="
    )


if __name__ == '__main__':
    file = dataset_name + ".json"
    args = utils.load_params(file)
    if w > 0:
        log_file = "attack" + '_' + target_name + '_{}_{}.txt'.format(
            target_mode, w)
    else:
        log_file = "attack" + '_' + target_name + '_{}.txt'.format(target_mode)
    logger = utils.Tee(os.path.join(save_log_path, log_file), 'w')
    utils.print_params(args)

    train_file = args['dataset']['test_file']
    test_file = args['dataset']['train_file']
    trainloader = utils.init_dataloader(args, train_file, mode="train")
    testloader = utils.init_dataloader(args, test_file, mode="test")

    eval_model = utils.get_model(args, "VGG16", "reg")
    eval_model = torch.nn.DataParallel(eval_model).to(device)
    utils.load_state_dict(eval_model, eval_path)

    save_img_path = os.path.join(
        save_img_path, "attack_{}_{}".format(target_name, target_mode))
    os.makedirs(save_img_path, exist_ok=True)
    main(args, trainloader, testloader, eval_model)
Example #3
0
def main():
    f = open('log_test_values_cider.txt', 'w')
    original = sys.stdout
    sys.stdout = utils.Tee(sys.stdout, f)

    token = 0
    domain_id, production_project_id, cms_project_id, atlas_project_id = (
        0, ) * 4
    computing_project_id, visualisation_project_id, services_project_id = (
        0, ) * 3
    operations_project_id = 0
    try:
        token_json = utils.default_token_json('admin', 'demo')
        token = utils.get_token(token_json)
        print '======================================================================='
        print 'This script will use the follow hierarchy to validate the quota values'
        print 'related to Nested Quotas on Cinder'
        print '======================================================================='
        print 'Hierarchy:'
        print '                            Domain_X          '
        print '                               |'
        print '                          ProductionIT - Mike'
        print '                     /                  \ '
        print '          Jay - CMS                       ATLAS - John'
        print '             /       \                   /       \ '
        print '      Computing   Visualisation   Operations   Services  '
        print '       Walter        Duncan          Eric         Xing'
        print ''
        print 'Actors:'
        print ''
        print 'Mike - Cloud Admin (i.e. role:cloud-admin) of ProductionIT'
        print 'Jay - Manager (i.e. role: project-admin) of Project CMS'
        print 'John - Manager (i.e. role: project-admin) of Project ATLAS'
        print 'Eric - Manager (i.e. role: project-admin) of Project Operations'
        print 'Xing - Manager (i.e. role: project-admin) of Project Services'
        print 'Walter - Manager (i.e. role: project-admin) of Project Computing'
        print 'Duncan - Manager (i.e. role: project-admin) of Project Visualisation'
        print '======================================================================='

        # Create a new domain
        print 'Creating the domain...'
        domain = utils.domain_json()
        domain_id = utils.create_domain(domain, token)
        print 'Domain created: %s' % domain_id
        print '======================================================================='
        print 'Creating the projects...'

        # Create project ProductionIT
        production_project_json = utils.project_json('ProductionIT', domain_id)
        production_project_id = utils.create_project(production_project_json,
                                                     token)
        print "ProductionIT created: %s" % production_project_id
        print '======================================================================='

        # Create Project CMS
        cms_project_json = utils.project_json('CMS', domain_id,
                                              production_project_id)
        cms_project_id = utils.create_project(cms_project_json, token)
        print "CMS created: %s" % cms_project_id
        print '======================================================================='

        # Create Project Atlas
        atlas_project_json = utils.project_json('ATLAS', domain_id,
                                                production_project_id)
        atlas_project_id = utils.create_project(atlas_project_json, token)
        print "ATLAS created: %s" % atlas_project_id
        print '======================================================================='

        # Create Project computing
        computing_project_json = utils.project_json('computing', domain_id,
                                                    cms_project_id)
        computing_project_id = utils.create_project(computing_project_json,
                                                    token)
        print "Computing created: %s" % computing_project_id
        print '======================================================================='

        # Create Project visualisation
        visual_project_json = utils.project_json('visualisation', domain_id,
                                                 cms_project_id)
        visualisation_project_id = utils.create_project(
            visual_project_json, token)
        print "Visualisation created: %s" % visualisation_project_id
        print '======================================================================='

        # Create Project services
        services_project_json = utils.project_json('services', domain_id,
                                                   atlas_project_id)
        services_project_id = utils.create_project(services_project_json,
                                                   token)
        print "Services created: %s" % services_project_id
        print '======================================================================='

        # Create Project operations
        operations_project_json = utils.project_json('operations', domain_id,
                                                     atlas_project_id)
        operations_project_id = utils.create_project(operations_project_json,
                                                     token)
        print "Operations created: %s" % operations_project_id
        print '======================================================================='

        admin_role = utils.get_role(token, 'admin')
        # Creating users
        # Creating and grant admin role to mike in production
        print 'Creating the users...'
        mike = utils.create_user(token, 'Mike', domain_id)
        print "Mike: %s" % mike
        utils.grant_user_role(token, mike, admin_role, [production_project_id])
        print '======================================================================='

        # Creating and grant admin role to jay in cms
        jay = utils.create_user(token, 'Jay', domain_id)
        print "Jay: %s" % jay
        utils.grant_user_role(token, jay, admin_role, [cms_project_id])
        print '======================================================================='

        # Creating and grant admin role to john in atlas
        john = utils.create_user(token, 'John', domain_id)
        print "John: %s" % john
        utils.grant_user_role(token, john, admin_role, [atlas_project_id])
        print '======================================================================='

        # Creating and grant admin role to eric in operations
        eric = utils.create_user(token, 'Eric', domain_id)
        print "Eric: %s" % eric
        utils.grant_user_role(token, eric, admin_role, [operations_project_id])
        print '======================================================================='

        # Creating and grant admin role to xing in services
        xing = utils.create_user(token, 'Xing', domain_id)
        print "Xing: %s" % xing
        utils.grant_user_role(token, xing, admin_role, [services_project_id])
        print '======================================================================='

        # Creating and grant admin role to walter in computing
        walter = utils.create_user(token, 'Walter', domain_id)
        print "Walter: %s" % walter
        utils.grant_user_role(token, walter, admin_role,
                              [computing_project_id])
        print '======================================================================='

        # Creating and grant admin role to duncan in visualisation
        duncan = utils.create_user(token, 'Duncan', domain_id)
        print "Ducnan: %s" % duncan
        utils.grant_user_role(token, duncan, admin_role,
                              [visualisation_project_id])
        print '======================================================================='
        print 'Now, we will get a token for Mike in ProductionIT (root project)'
        print 'and show that the quota calculation in the hierarchy works well.'
        print '======================================================================='
        # Get a token for Mike in ProductionIT
        mike_token_json = utils.get_token_json('Mike', production_project_id)
        mike_token = utils.get_token(mike_token_json)
        print 'Token for mike: %s' % mike_token
        print '======================================================================='

        # Update the Prduction Quota to 100
        print 'Updating the ProductionIT quota for 100...'
        quota_value = 100
        production_quota = utils.update_quota(mike_token,
                                              production_project_id,
                                              production_project_id,
                                              quota_value)
        quota_show_production = utils.quota_show(mike_token,
                                                 production_project_id,
                                                 production_project_id)
        print '======================================================================='
        print "Production Quota: %s" % quota_show_production
        print '======================================================================='
        # Update the CMS Quota to 40
        print 'Updating the CMS quota for 40...'
        quota_value = 40
        cms_quota = utils.update_quota(mike_token, production_project_id,
                                       cms_project_id, quota_value)
        quota_show_production = utils.quota_show(mike_token,
                                                 production_project_id,
                                                 production_project_id)
        quota_show_cms = utils.quota_show(mike_token, production_project_id,
                                          cms_project_id)
        print 'Verify that allocated ProductionIT quota was updated to 40'
        print "Production Quota: %s" % quota_show_production
        print "CMS Quota: %s" % quota_show_cms
        print '======================================================================='
        # Update the Atlas Quota to 30
        print 'Updating the Atlas quota for 30...'
        quota_value = 30
        atlas_quota = utils.update_quota(mike_token, production_project_id,
                                         atlas_project_id, quota_value)
        quota_show_production = utils.quota_show(mike_token,
                                                 production_project_id,
                                                 production_project_id)
        quota_show_atlas = utils.quota_show(mike_token, production_project_id,
                                            atlas_project_id)
        print 'Verify that allocated ProductionIT quota was updated to 70'
        print "Production Quota: %s" % quota_show_production
        print "Atlas Quota: %s" % quota_show_atlas
        print '======================================================================='

        # Update the Computing Quota to 15
        print 'Updating the Computing quota for 15...'
        quota_value = 15
        computing_quota = utils.update_quota(mike_token, production_project_id,
                                             computing_project_id, quota_value)
        quota_show_cms = utils.quota_show(mike_token, production_project_id,
                                          cms_project_id)
        quota_show_computing = utils.quota_show(mike_token,
                                                production_project_id,
                                                computing_project_id)
        print 'Verify that allocated CMS quota was updated to 15'
        print "CMS Quota: %s" % quota_show_cms
        print "Computing Quota: %s" % quota_show_computing
        print '======================================================================='

        # Update the visualisaton Quota to 15
        print 'Updating the Visualisation quota for 15...'
        quota_value = 15
        visualisation_quota = utils.update_quota(mike_token,
                                                 production_project_id,
                                                 visualisation_project_id,
                                                 quota_value)
        quota_show_cms = utils.quota_show(mike_token, production_project_id,
                                          cms_project_id)
        quota_show_visualisation = utils.quota_show(mike_token,
                                                    production_project_id,
                                                    visualisation_project_id)
        print 'Verify that allocated CMS quota was updated to 30'
        print "CMS Quota: %s" % quota_show_cms
        print "Visualisation Quota: %s" % quota_show_visualisation
        print '======================================================================='

        print 'Updating the Services quota for 10...'
        # Update the services Quota to 10
        quota_value = 10
        services_quota = utils.update_quota(mike_token, production_project_id,
                                            services_project_id, quota_value)
        quota_show_atlas = utils.quota_show(mike_token, production_project_id,
                                            atlas_project_id)
        quota_show_services = utils.quota_show(mike_token,
                                               production_project_id,
                                               services_project_id)
        print 'Verify that allocated Atlas quota was updated to 10'
        print "Atlas Quota: %s" % quota_show_atlas
        print "Service Quota: %s" % quota_show_services
        print '======================================================================='

        # Update the operations Quota to 10
        quota_value = 10
        operations_quota = utils.update_quota(mike_token,
                                              production_project_id,
                                              operations_project_id,
                                              quota_value)
        quota_show_atlas = utils.quota_show(mike_token, production_project_id,
                                            atlas_project_id)
        quota_show_operations = utils.quota_show(mike_token,
                                                 production_project_id,
                                                 operations_project_id)
        print 'Verify that allocated Atlas quota was updated to 20'
        print "Atlas Quota: %s" % quota_show_atlas
        print "Operations Quota: %s" % quota_show_operations
        print '======================================================================='
        # Update the CMS Quota to 40
        quota_value = 71
        print 'Trying update the CMS quota for 71...'
        cms_quota = utils.update_quota(mike_token, production_project_id,
                                       cms_project_id, quota_value)
        print "Error: %s" % cms_quota
        print '======================================================================='
        print "Creating 10 Volumes in CMS..."
        # Get a token for Jay in CMS
        jay_token_json = utils.get_token_json('Jay', cms_project_id)
        jay_token = utils.get_token(jay_token_json)

        for i in range(0, 10):
            utils.create_volume(jay_token, cms_project_id)
        quota_show_cms = utils.quota_show(jay_token, cms_project_id,
                                          cms_project_id)
        print "CMS Quota: %s" % quota_show_cms
        print 'Now, we dont have free quota in CMS'
        print '======================================================================='
        print "Trying update the computing quota to 16 (subproject for CMS)..."
        quota_value = 16
        computing_quota = utils.update_quota(mike_token, production_project_id,
                                             computing_project_id, quota_value)
        print "Error: %s" % computing_quota
        print '======================================================================='
        print 'Clean up...'

    except Exception as e:
        print 'Error'
        tear_down(token, [
            production_project_id, cms_project_id, atlas_project_id,
            computing_project_id, visualisation_project_id,
            services_project_id, operations_project_id
        ], domain_id)
        f.close()
        print e
    tear_down(token, [
        production_project_id, cms_project_id, atlas_project_id,
        computing_project_id, visualisation_project_id, services_project_id,
        operations_project_id
    ], domain_id)
    f.close()
Example #4
0
def execute_isolated(cfg, optpt, folder, show_output=False):
    """Executes one experiment in a separate folder"""
    start = tc()

    # lock experiment
    if not core.experiment_lock(cfg, folder):
        return (False, 0, 0)

    # skip successful runs
    if core.exist_status_file(folder):
        val = core.read_status_file(folder)
        if val == 0:
            # it ran successfully, don't repeat exp

            # unlock experiment
            core.experiment_unlock(cfg, folder)

            return (False, val, 0)

    # change working directory
    wd = os.getcwd()
    os.chdir(folder)

    # call prepare experiment
    if hasattr(cfg, 'prepare_exp'):
        if show_output:
            f = utils.Tee("dude.prepare_exp", 'w')
        else:
            f = open("dude.prepare_exp", 'w')
        try:
            sys.stdout = sys.stderr = f
            if cfg.prepare_exp(optpt) == False:
                # unlock experiment
                core.experiment_unlock(cfg, ".")

                os.chdir(wd)
                return (False, -1, 0)
        except:
            core.experiment_unlock(cfg, ".")
            raise  # raise previous exception
        finally:
            if f: f.close()
            sys.stdout = sys.__stdout__
            sys.stderr = sys.__stderr__
    status = -1
    try:
        if show_output:
            fout = utils.Tee(core.outputFile, 'w')
        else:
            fout = open(core.outputFile, 'w')

        status = execute_one(cfg, optpt, fout, fout)
        if status != 0:
            print 'command returned error value: %d' % status

    finally:
        if fout: fout.close()

        # call prepare experiment
        if hasattr(cfg, 'finish_exp'):
            if show_output:
                f = utils.Tee("dude.finish_exp", 'w')
            else:
                f = open("dude.finish_exp", 'w')
            try:
                sys.stdout = sys.stderr = f
                s = cfg.finish_exp(optpt, status)
                # if finish_exp returns something, use that as status
                # value, otherwise use execute_one status.
                if s: status = s
            except:
                core.experiment_unlock(cfg, ".")
                raise  # raise previous exception
            finally:
                if f: f.close()
                sys.stdout = sys.__stdout__
                sys.stderr = sys.__stderr__

        f = open(core.statusFile, 'w')
        print >> f, status
        f.close()

        # unlock experiment
        core.experiment_unlock(cfg, ".")

        # go back to working dir
        os.chdir(wd)

    # return the time used
    end = tc()

    return (True, status, (end - start))
Example #5
0
                print '<-> skipping'

            # Add elapsed time to mean object
            elapsed_time.add(etime)

            # Calculate the total time
            t_actual = tc()

            # Print some time information
            info.print_exp(actual_runs, executed_runs, missing_runs,
                           total_runs, t_actual - t_start, elapsed_time)
    # end not global_only

    if hasattr(cfg, 'finish_global') and not options.skip_global:
        if options.show_output:
            f = utils.Tee("dude.finish_global", 'w')
        else:
            f = open("dude.finish_global", 'w')
        try:
            sys.stdout = sys.stderr = f
            cfg.finish_global()
        except KeyboardInterrupt, e:
            sys.stdout = sys.__stdout__
            sys.stderr = sys.__stderr__
            print "Interrupted on prepare_global()"
            sys.exit(1)
        finally:
            if f: f.close()
            sys.stdout = sys.__stdout__
            sys.stderr = sys.__stderr__
Example #6
0
    return gp


root_path = "./Attack"
log_path = os.path.join(root_path, "attack_logs")
save_img_dir = os.path.join(root_path, "attack_imgs")
save_model_dir = os.path.join(root_path, "attack_models")
os.makedirs(save_model_dir, exist_ok=True)
os.makedirs(save_img_dir, exist_ok=True)
os.makedirs(log_path, exist_ok=True)

dataset_name = "MNIST"

log_file = "GAN.txt"
utils.Tee(os.path.join(log_path, log_file), 'w')

if __name__ == "__main__":

    file = "./MNIST.json"
    args = load_json(json_file=file)

    file_path = 'train_gan_file'
    model_name = 'GAN'
    lr = args[model_name]['lr']
    batch_size = args[model_name]['batch_size']
    z_dim = args[model_name]['z_dim']
    epochs = args[model_name]['epochs']
    n_critic = args[model_name]['n_critic']

    print("---------------------Training [%s]------------------------------" %
Example #7
0
def main():
    f = open('log_test_authorization_cider.txt', 'w')
    original = sys.stdout
    sys.stdout = utils.Tee(sys.stdout, f)

    token = 0
    domain_id, production_project_id, cms_project_id, atlas_project_id = (
        0, ) * 4
    computing_project_id, visualisation_project_id, services_project_id = (
        0, ) * 3
    operations_project_id = 0
    try:
        token_json = utils.default_token_json('admin', 'demo')
        token = utils.get_token(token_json)
        print '======================================================================='
        print 'This script will use the follow hierarchy to validate the authorization'
        print 'actions related to Nested Quotas on Cinder'
        print '======================================================================='
        print 'Hierarchy:'
        print '                            Domain_X          '
        print '                               |'
        print '                          ProductionIT - Mike'
        print '                     /                  \ '
        print '          Jay - CMS                       ATLAS - John'
        print '             /       \                   /       \ '
        print '      Computing   Visualisation   Operations   Services  '
        print '       Walter        Duncan          Eric         Xing'
        print ''
        print 'Actors:'
        print ''
        print 'Mike - Cloud Admin (i.e. role:cloud-admin) of ProductionIT'
        print 'Jay - Manager (i.e. role: project-admin) of Project CMS'
        print 'John - Manager (i.e. role: project-admin) of Project ATLAS'
        print 'Eric - Manager (i.e. role: project-admin) of Project Operations'
        print 'Xing - Manager (i.e. role: project-admin) of Project Services'
        print 'Walter - Manager (i.e. role: project-admin) of Project Computing'
        print 'Duncan - Manager (i.e. role: project-admin) of Project Visualisation'
        print '======================================================================='
        admin_role = utils.get_role(token, 'admin')
        # Create a new domain
        print 'Creating the domain...'
        domain = utils.domain_json()
        domain_id = utils.create_domain(domain, token)
        print 'Domain created: %s' % domain_id
        print '======================================================================='
        print 'Creating the projects...'
        # Create project ProductionIT
        production_project_json = utils.project_json('ProductionIT', domain_id)
        production_project_id = utils.create_project(production_project_json,
                                                     token)
        print "ProductionIT created: %s" % production_project_id
        print '======================================================================='

        # Create Project CMS
        cms_project_json = utils.project_json('CMS', domain_id,
                                              production_project_id)
        cms_project_id = utils.create_project(cms_project_json, token)
        print "CMS created: %s" % cms_project_id
        print '======================================================================='

        # Create Project Atlas
        atlas_project_json = utils.project_json('ATLAS', domain_id,
                                                production_project_id)
        atlas_project_id = utils.create_project(atlas_project_json, token)
        print "ATLAS created: %s" % atlas_project_id
        print '======================================================================='

        # Create Project computing
        computing_project_json = utils.project_json('computing', domain_id,
                                                    cms_project_id)
        computing_project_id = utils.create_project(computing_project_json,
                                                    token)
        print "Computing created: %s" % computing_project_id
        print '======================================================================='

        # Create Project visualisation
        visual_project_json = utils.project_json('visualisation', domain_id,
                                                 cms_project_id)
        visualisation_project_id = utils.create_project(
            visual_project_json, token)
        print "Visualisation created: %s" % visualisation_project_id
        print '======================================================================='

        # Create Project services
        services_project_json = utils.project_json('services', domain_id,
                                                   atlas_project_id)
        services_project_id = utils.create_project(services_project_json,
                                                   token)
        print "Services created: %s" % services_project_id
        print '======================================================================='

        # Create Project operations
        operations_project_json = utils.project_json('operations', domain_id,
                                                     atlas_project_id)
        operations_project_id = utils.create_project(operations_project_json,
                                                     token)
        print "Operations created: %s" % operations_project_id
        print '======================================================================='

        # Creating users
        # Creating and grant admin role to mike in production
        print 'Creating the users...'
        mike = utils.create_user(token, 'Mike', domain_id)
        print "Mike: %s" % mike
        utils.grant_user_role(token, mike, admin_role, [production_project_id])

        print '======================================================================='
        # Creating and grant admin role to jay in cms
        jay = utils.create_user(token, 'Jay', domain_id)
        print "Jay: %s" % jay
        utils.grant_user_role(token, jay, admin_role, [cms_project_id])

        print '======================================================================='
        # Creating and grant admin role to john in atlas
        john = utils.create_user(token, 'John', domain_id)
        print "John: %s" % john
        utils.grant_user_role(token, john, admin_role, [atlas_project_id])

        print '======================================================================='
        # Creating and grant admin role to eric in operations
        eric = utils.create_user(token, 'Eric', domain_id)
        print "Eric: %s" % eric
        utils.grant_user_role(token, eric, admin_role, [operations_project_id])

        print '======================================================================='
        # Creating and grant admin role to xing in services
        xing = utils.create_user(token, 'Xing', domain_id)
        print "Xing: %s" % xing
        utils.grant_user_role(token, xing, admin_role, [services_project_id])

        print '======================================================================='
        # Creating and grant admin role to walter in computing
        walter = utils.create_user(token, 'Walter', domain_id)
        print "Walter: %s" % walter
        utils.grant_user_role(token, walter, admin_role,
                              [computing_project_id])
        print '======================================================================='

        # Creating and grant admin role to duncan in visualisation
        duncan = utils.create_user(token, 'Duncan', domain_id)
        print "Ducnan: %s" % duncan
        utils.grant_user_role(token, duncan, admin_role,
                              [visualisation_project_id])
        print '======================================================================='
        print 'Now, we will get a token for Mike in ProductionIT (root project)'
        print 'and show that Mike can update the quota for the root project.'
        print '======================================================================='
        # Get a token for Mike in ProductionIT
        mike_token_json = utils.get_token_json('Mike', production_project_id)
        mike_token = utils.get_token(mike_token_json)
        print 'Token for mike: %s' % mike_token
        print '======================================================================='

        # Update the Production Quota to 100
        print 'Updating the ProductionIT quota for 100...'
        quota_value = 100
        production_quota = utils.update_quota(mike_token,
                                              production_project_id,
                                              production_project_id,
                                              quota_value)
        print "Mike updating Production Quota: %s" % production_quota
        print '======================================================================='

        print 'Trying get the default quota for CMS...'
        # Verify that the default quotas for CMS is zero
        cms_quota = utils.get_quota(mike_token, production_project_id,
                                    cms_project_id)
        print "Mike getting CMS Quota: %s" % cms_quota
        print '======================================================================='

        print 'Trying update the CMS quota for 45...'
        # Update the CMS Quota to 45
        quota_value = 45
        new_cms_quota = utils.update_quota(mike_token, production_project_id,
                                           cms_project_id, quota_value)
        print "Mike updating CMS Quota: %s" % new_cms_quota
        print '======================================================================='

        print 'Now, we get a token for Jay in CMS and we will try update the CMS Quota'
        print '======================================================================='
        # Get a token for Jay in CMS
        jay_token_json = utils.get_token_json('Jay', cms_project_id)
        jay_token = utils.get_token(jay_token_json)
        print 'Token for Jay: %s ' % jay_token
        print '======================================================================='

        # Raise a exception when try update the CMS Quota with
        # only a project_admin
        print 'Trying update the CMS quota for 50'
        quota_value = 50
        forbidden_error = 403
        new_cms_quota = utils.update_quota(jay_token, cms_project_id,
                                           cms_project_id, quota_value)
        if new_cms_quota == forbidden_error:
            print 'Error: Cannot update the quota for CMS with user Jay'

        print '======================================================================='
        # Verify that the default quotas for Visualisation is zero
        cms_quota = utils.get_quota(jay_token, cms_project_id, cms_project_id)
        print "Trying get the CMS Quota: %s" % cms_quota

        print '======================================================================='
        # Raise a exception when try update the Visualisation Quota with a
        # project_admin in a non-root project
        print 'Trying update the Visualisation Quota with Jay'
        quota_value = 10
        new_visualisation_quota = utils.update_quota(jay_token, cms_project_id,
                                                     visualisation_project_id,
                                                     quota_value)
        if new_visualisation_quota == forbidden_error:
            print 'Error: Cannot update the quota for Visualisation with user Jay'
        else:
            print 'New Visualisation Quota: %s ' % new_visualisation_quota
        print '======================================================================='

        # Raise a exception when try get the Visualisation Quota with a
        # project_admin in a non-root project
        print 'Trying get the Visualisation Quota with Jay'
        visualisation_quota = utils.get_quota(jay_token, cms_project_id,
                                              visualisation_project_id)
        if visualisation_quota == forbidden_error:
            print 'Error: Cannot get the quota for Visualisation with user Jay'
        else:
            print 'Get Visualisation Quota: %s ' % new_visualisation_quota
        print '======================================================================='
        # Raise a exception when try get the Atlas Quota with a project_admin
        # in a non-root project
        atlas_quota = utils.get_quota(jay_token, cms_project_id,
                                      atlas_project_id)
        if atlas_quota == forbidden_error:
            print 'Error: Cannot get the quota for Atlas with user Jay'
        print '======================================================================='

        # Get a token for Duncan in Visualisation
        duncan_token_json = utils.get_token_json('Duncan',
                                                 visualisation_project_id)
        duncan_token = utils.get_token(duncan_token_json)

        print 'Get a token for Duncan in Visualisation: %s ' % duncan_token
        # Raise a exception when try get the Atlas Quota with a project_admin
        # in a subproject
        cms_quota = utils.get_quota(duncan_token, visualisation_project_id,
                                    cms_project_id)
        if cms_quota == forbidden_error:
            print 'Error: Cannot get the quota for CMS with user Duncan'
        print '======================================================================='

        # Raise a exception when try update the Visualisation Quota
        # with a project_admin in a non-root project
        quota_value = 10
        new_visualisation_quota = utils.update_quota(duncan_token,
                                                     visualisation_project_id,
                                                     visualisation_project_id,
                                                     quota_value)
        if new_visualisation_quota == forbidden_error:
            print('Cannot update the quota for Visualisation with user Duncan')
        print '======================================================================='

        # Verify that the default quotas for Visualisation is zero
        visual_quota = utils.get_quota(duncan_token, visualisation_project_id,
                                       visualisation_project_id)
        print('Duncan getting the Visualisation Quota: %s' % visual_quota)
        print '======================================================================='
        print 'Clean up...'

    except Exception as e:
        print 'Error'
        tear_down(token, [
            production_project_id, cms_project_id, atlas_project_id,
            computing_project_id, visualisation_project_id,
            services_project_id, operations_project_id
        ], domain_id)
        f.close()
        print e
    tear_down(token, [
        production_project_id, cms_project_id, atlas_project_id,
        computing_project_id, visualisation_project_id, services_project_id,
        operations_project_id
    ], domain_id)
    f.close()