コード例 #1
0
def _create_key_files(check_oci):
    utils.log("Setting environment variables")
    if OCICONFIG_VAR in os.environ:
        utils.run_command(
            "echo \"$OCICONFIG_VAR\" | openssl enc -base64 -d -A > " +
            VolumeProvisionerSystemTestInterface.TMP_OCICONFIG, ".")
        utils.run_command(
            "chmod 600 " + VolumeProvisionerSystemTestInterface.TMP_OCICONFIG,
            ".")
    if KUBECONFIG_VAR in os.environ:
        utils.run_command(
            "echo \"$KUBECONFIG_VAR\" | openssl enc -base64 -d -A > " +
            utils.TMP_KUBECONFIG, ".")

    if check_oci:
        oci_config_file = VolumeProvisionerSystemTestInterface(
        )._get_oci_config_file()
        with open(oci_config_file, 'r') as stream:
            try:
                cnf = yaml.load(stream)
                with open(
                        VolumeProvisionerSystemTestInterface.
                        TMP_OCI_API_KEY_FILE, 'w') as stream:
                    stream.write(cnf['auth']['key'])
            except yaml.YAMLError as err:
                utils.log(
                    "Error. Failed to parse oci config file %s. Error: %s " %
                    (oci_config_file, err))
                utils.finish_with_exit_code(1)
コード例 #2
0
def _check_env(check_oci):
    if check_oci:
        if OCICONFIG not in os.environ and OCICONFIG_VAR not in os.environ:
            utils.log(
                "Error. Can't find either OCICONFIG or OCICONFIG_VAR in the environment."
            )
            utils.finish_with_exit_code(1)
コード例 #3
0
def _handle_args():
    parser = argparse.ArgumentParser(description='Description of your program')
    parser.add_argument('--setup',
                        help='Setup the provisioner on the cluster',
                        action='store_true',
                        default=False)
    parser.add_argument('--no-test',
                        help='Dont run the tests on the test cluster',
                        action='store_true',
                        default=False)
    parser.add_argument(
        '--check-oci',
        help=
        'Check with OCI that the volumes have been created/destroyed (requires --setup)',
        action='store_true',
        default=False)
    parser.add_argument('--teardown',
                        help='Teardown the provisioner on the cluster',
                        action='store_true',
                        default=False)
    args = vars(parser.parse_args())

    if args['check_oci'] and not args['setup']:
        utils.log(
            "If --check-oci is specified, then --setup also needs to be set.")
        utils.finish_with_exit_code(1)

    return args
コード例 #4
0
 def _get_json_doc(response):
     decoder = json.JSONDecoder()
     try:
         doc = decoder.decode(response)
     except (ValueError, UnicodeError) as _:
         utils.log('Invalid JSON in response: %s' % str(response))
         utils.finish_with_exit_code(1)
     return doc
コード例 #5
0
 def _get_region():
     nodes_json = utils.kubectl("get nodes -o json", log_stdout=False)
     nodes = json.loads(nodes_json)
     for node in nodes['items']:
         return node['metadata']['labels'][
             'failure-domain.beta.kubernetes.io/zone']
     utils.log("Region lookup failed")
     utils.finish_with_exit_code(1)
コード例 #6
0
 def _get_oci_config(self):
     config = dict(oci.config.DEFAULT_CONFIG)
     oci_config_file = self._get_oci_config_file()
     with open(oci_config_file, 'r') as stream:
         try:
             cnf = yaml.load(stream)
             config["user"] = cnf['auth']['user']
             config["tenancy"] = cnf['auth']['tenancy']
             config["fingerprint"] = cnf['auth']['fingerprint']
             config["key_file"] = self.TMP_OCI_API_KEY_FILE
             config["region"] = cnf['auth']['region']
             return config
         except yaml.YAMLError:
             utils.log("Error. Failed to parse oci config file " +
                       oci_config_file)
             utils.finish_with_exit_code(1)
コード例 #7
0
def _main():
    utils.reset_debug_file()
    args = _handle_args()

    _check_env(args['check_oci'])
    _create_key_files(args['check_oci'])

    def _destroy_key_files_atexit():
        _destroy_key_files(args['check_oci'])

    atexit.register(_destroy_key_files_atexit)

    test_id = str(uuid.uuid4())[:8]
    canaryMetrics = CanaryMetrics(metrics_file=os.environ.get(METRICS_FILE))
    if args['teardown']:

        def _teardown_atexit():
            utils.log("Tearing down the volume provisioner", as_banner=True)
            # BlockSystemTests(test_id, args['setup']).cleanup()
            FSSSystemTests(test_id, args['setup']).cleanup()
            # BackupVolumeSystemTest(test_id, args['setup']).cleanup()

        atexit.register(_teardown_atexit)

    if not args['no_test']:
        BlockSystemTests(test_id=test_id,
                         setup=args['setup'],
                         check_oci=args['check_oci'],
                         canaryMetrics=canaryMetrics).run()
        FSSSystemTests(subnet_ocid=os.environ.get(SUBNET_OCID),
                       test_id=test_id,
                       setup=args['setup'],
                       check_oci=args['check_oci'],
                       canaryMetrics=canaryMetrics).run()
        BackupVolumeSystemTest(test_id=test_id,
                               setup=args['setup'],
                               check_oci=args['check_oci'],
                               canaryMetrics=canaryMetrics).run()
    canaryMetrics.finish_canary_metrics()
    utils.finish_with_exit_code(0)
コード例 #8
0
 def _checkTestSuccess(self):
     '''Check whether any tests failed or not'''
     if not self._testSuccess:
         utils.finish_with_exit_code(1)