Пример #1
0
def validate(config, jobs):
    for job in jobs:
        label = job['name']
        validate_schema(
            beetmover_cdns_description_schema, job,
            "In cdns-signing ({!r} kind) task for {!r}:".format(config.kind, label))
        yield job
Пример #2
0
def validate(config, jobs):
    for job in jobs:
        label = job['label']
        validate_schema(
            job_description_schema, job,
            "In repackage-signing ({!r} kind) task for {!r}:".format(config.kind, label))
        yield job
Пример #3
0
def validate(config, jobs):
    for job in jobs:
        label = job.get('dependent-task', object).__dict__.get('label', '?no-label?')
        validate_schema(
            checksums_signing_description_schema, job,
            "In checksums-signing ({!r} kind) task for {!r}:".format(config.kind, label))
        yield job
Пример #4
0
def configure_taskdesc_for_run(config, job, taskdesc, worker_implementation):
    """
    Run the appropriate function for this job against the given task
    description.

    This will raise an appropriate error if no function exists, or if the job's
    run is not valid according to the schema.
    """
    run_using = job['run']['using']
    if run_using not in registry:
        raise Exception("no functions for run.using {!r}".format(run_using))

    if worker_implementation not in registry[run_using]:
        raise Exception("no functions for run.using {!r} on {!r}".format(
            run_using, worker_implementation))

    func, schema, defaults = registry[run_using][worker_implementation]
    for k, v in defaults.items():
        job['run'].setdefault(k, v)

    if schema:
        validate_schema(
                schema, job['run'],
                "In job.run using {!r}/{!r} for job {!r}:".format(
                    job['run']['using'], worker_implementation, job['label']))
    func(config, job, taskdesc)
Пример #5
0
def validate(config, jobs):
    for job in jobs:
        label = job.get('dependent-task', object).__dict__.get('label', '?no-label?')
        validate_schema(
            balrog_description_schema, job,
            "In balrog ({!r} kind) task for {!r}:".format(config.kind, label))

        yield job
Пример #6
0
def validate_jobs_schema_transform_partial(description_schema, transform_type, config, jobs):
    for job in jobs:
        label = job.get('label', '?no-label?')
        validate_schema(
            description_schema, job,
            "In {} ({!r} kind) task for {!r}:".format(transform_type, config.kind, label)
        )
        yield job
Пример #7
0
def validate_jobs_schema_transform_partial(config, jobs):
    for job in jobs:
        label = job.get('label', '?no-label?')
        validate_schema(
            push_apk_description_schema, job,
            "In PushApk ({!r} kind) task for {!r}:".format(config.kind, label)
        )
        yield job
Пример #8
0
def validate(config, jobs):
    for job in jobs:
        label = job['name']
        validate_schema(
            beetmover_push_to_release_description_schema, job,
            "In beetmover-push-to-release ({!r} kind) task for {!r}:".format(
                config.kind, label))
        yield job
def validate(config, jobs):
    for job in jobs:
        label = job.get('primary-dependency',
                        object).__dict__.get('label', '?no-label?')
        validate_schema(
            release_generate_checksums_beetmover_schema, job,
            "In ({!r} kind) task for {!r}:".format(config.kind, label))
        yield job
Пример #10
0
def validate(config, jobs):
    for job in jobs:
        label = job.get('primary-dependency',
                        object).__dict__.get('label', '?no-label?')
        validate_schema(
            signing_description_schema, job,
            "In signing ({!r} kind) task for {!r}:".format(config.kind, label))
        yield job
Пример #11
0
def validate(config, jobs):
    for job in jobs:
        label = job['label']
        validate_schema(
            job_description_schema, job,
            "In repackage-signing ({!r} kind) task for {!r}:".format(
                config.kind, label))
        yield job
Пример #12
0
def validate(config, jobs):
    for job in jobs:
        label = job['name']
        validate_schema(
            beetmover_cdns_description_schema, job,
            "In cdns-signing ({!r} kind) task for {!r}:".format(
                config.kind, label))
        yield job
Пример #13
0
def validate_jobs_schema_transform_partial(description_schema, transform_type,
                                           config, jobs):
    for job in jobs:
        label = job.get('label', '?no-label?')
        validate_schema(
            description_schema, job,
            "In {} ({!r} kind) task for {!r}:".format(transform_type,
                                                      config.kind, label))
        yield job
Пример #14
0
def get_manifest():
    manifest_paths = glob.glob(os.path.join(MANIFEST_DIR, "*.yml"))
    all_manifests = {}
    for path in manifest_paths:
        rw_manifest = yaml.load_yaml(path)
        manifest_name = os.path.basename(path).replace(".yml", "")
        rw_manifest["manifest_name"] = manifest_name
        validate_schema(base_schema, deepcopy(rw_manifest), "Invalid manifest:")
        check_manifest(deepcopy(rw_manifest))
        assert manifest_name not in all_manifests
        all_manifests[manifest_name] = rw_manifest
    return ReadOnlyDict(all_manifests)
Пример #15
0
def validate(config, tasks):
    for task in tasks:
        validate_schema(
            task_description_schema,
            task,
            "In task {!r}:".format(task.get("label", "?no-label?")),
        )
        validate_schema(
            payload_builders[task["worker"]["implementation"]].schema,
            task["worker"],
            "In task.run {!r}:".format(task.get("label", "?no-label?")),
        )
        yield task
Пример #16
0
def get_manifest():
    manifest_paths = glob.glob(os.path.join(MANIFEST_DIR, "*.yml"))
    all_manifests = {}
    graph_config = load_graph_config(ROOT)
    for path in manifest_paths:
        rw_manifest = yaml.load_yaml(path)
        manifest_name = os.path.basename(path).replace(".yml", "")
        rw_manifest["manifest_name"] = manifest_name
        validate_schema(base_schema, deepcopy(rw_manifest), "Invalid manifest:")
        check_manifest(deepcopy(rw_manifest), graph_config)
        rw_manifest["artifacts"] = tuple(rw_manifest["artifacts"])
        assert manifest_name not in all_manifests
        all_manifests[manifest_name] = ReadOnlyDict(rw_manifest)
    return ReadOnlyDict(all_manifests)
Пример #17
0
def test_worker_caches(task, transform):
    config, job, taskdesc, impl = transform(task)
    add_cache(job, taskdesc, 'cache1', '/cache1')
    add_cache(job, taskdesc, 'cache2', '/cache2', skip_untrusted=True)

    if impl not in ('docker-worker', 'generic-worker'):
        pytest.xfail("caches not implemented for '{}'".format(impl))

    key = 'caches' if impl == 'docker-worker' else 'mounts'
    assert key in taskdesc['worker']
    assert len(taskdesc['worker'][key]) == 2

    # Create a new schema object with just the part relevant to caches.
    partial_schema = Schema(payload_builders[impl].schema.schema[key])
    validate_schema(partial_schema, taskdesc['worker'][key], "validation error")
Пример #18
0
def test_worker_caches(task, transform):
    config, job, taskdesc, impl = transform(task)
    add_cache(job, taskdesc, "cache1", "/cache1")
    add_cache(job, taskdesc, "cache2", "/cache2", skip_untrusted=True)

    if impl not in ("docker-worker", "generic-worker"):
        pytest.xfail("caches not implemented for '{}'".format(impl))

    key = "caches" if impl == "docker-worker" else "mounts"
    assert key in taskdesc["worker"]
    assert len(taskdesc["worker"][key]) == 2

    # Create a new schema object with just the part relevant to caches.
    partial_schema = Schema(payload_builders[impl].schema.schema[key])
    validate_schema(partial_schema, taskdesc["worker"][key],
                    "validation error")
Пример #19
0
def configure_taskdesc_for_run(config, job, taskdesc):
    """
    Run the appropriate function for this job against the given task
    description.

    This will raise an appropriate error if no function exists, or if the job's
    run is not valid according to the schema.
    """
    run_using = job['run']['using']
    if run_using not in registry:
        raise Exception("no functions for run.using {!r}".format(run_using))

    worker_implementation = job['worker']['implementation']
    if worker_implementation not in registry[run_using]:
        raise Exception("no functions for run.using {!r} on {!r}".format(
            run_using, worker_implementation))

    func, schema = registry[run_using][worker_implementation]
    if schema:
        job['run'] = validate_schema(
                schema, job['run'],
                "In job.run using {!r} for job {!r}:".format(
                    job['run']['using'], job['label']))

    func(config, job, taskdesc)
Пример #20
0
def validate(config, jobs):
    for job in jobs:
        label = job.get('dependent-task',
                        object).__dict__.get('label', '?no-label?')
        yield validate_schema(
            checksums_signing_description_schema, job,
            "In checksums-signing ({!r} kind) task for {!r}:".format(
                config.kind, label))
Пример #21
0
def validate(config, tasks):
    for task in tasks:
        yield validate_schema(
            task_description_schema, task,
            "In task {!r}:".format(task.get('label', '?no-label?')))
Пример #22
0
def validate_again(config, jobs):
    for job in jobs:
        yield validate_schema(l10n_description_schema, job,
                              "In job {!r}:".format(job.get('name', 'unknown')))
Пример #23
0
 def test_invalid(self):
     try:
         validate_schema(schema, {'x': 'not-int'}, "pfx")
         self.fail("no exception raised")
     except Exception, e:
         self.failUnless(str(e).startswith("pfx\n"))
Пример #24
0
 def test_valid(self):
     validate_schema(schema, {'x': 10, 'y': 'foo'}, "pfx")
Пример #25
0
 def test_invalid(self):
     try:
         validate_schema(schema, {'x': 'not-int'}, "pfx")
         self.fail("no exception raised")
     except Exception as e:
         self.assertTrue(str(e).startswith("pfx\n"))
Пример #26
0
 def check(self):
     schema = base_schema if self.strict else base_schema.extend(
         {}, extra=ALLOW_EXTRA)
     validate_schema(schema, self.copy(), 'Invalid parameters:')
Пример #27
0
def validate(config, tests):
    for test in tests:
        validate_schema(test_description_schema, test,
                        "In test {!r}:".format(test['test-name']))
        yield test
Пример #28
0
 def check(self):
     schema = Schema(base_schema,
                     extra=PREVENT_EXTRA if self.strict else ALLOW_EXTRA)
     validate_schema(schema, self.copy(), 'Invalid parameters:')
Пример #29
0
def validate(config, jobs):
    for job in jobs:
        validate_schema(source_test_description_schema, job,
                        "In job {!r}:".format(job['name']))
        yield job
Пример #30
0
def validate(config, jobs):
    for job in jobs:
        label = job.get('dependent-task', object).__dict__.get('label', '?no-label?')
        yield validate_schema(
            beetmover_description_schema, job,
            "In beetmover ({!r} kind) task for {!r}:".format(config.kind, label))
Пример #31
0
def validate(cron_yml):
    validate_schema(cron_yml_schema, cron_yml, "Invalid .cron.yml:")
Пример #32
0
def validate(config, tasks):
    for task in tasks:
        validate_schema(
            diff_description_schema, task,
            "In diff task {!r}:".format(task.get('name', 'unknown')))
        yield task
Пример #33
0
def validate(config, tasks):
    for task in tasks:
        validate_schema(
            docker_image_schema, task,
            "In docker image {!r}:".format(task.get('name', 'unknown')))
        yield task
Пример #34
0
def validate(config, jobs):
    for job in jobs:
        yield validate_schema(source_test_description_schema, job,
                              "In job {!r}:".format(job['name']))
Пример #35
0
def validate(config, jobs):
    for job in jobs:
        yield validate_schema(job_description_schema, job,
                              "In job {!r}:".format(job['name']))
Пример #36
0
def validate(config, jobs):
    for job in jobs:
        validate_schema(job_description_schema, job,
                        "In job {!r}:".format(job.get('name', job.get('label'))))
        yield job
Пример #37
0
 def test_valid(self):
     validate_schema(schema, {'x': 10, 'y': 'foo'}, "pfx")
Пример #38
0
def validate_again(config, jobs):
    for job in jobs:
        yield validate_schema(
            l10n_description_schema, job,
            "In job {!r}:".format(job.get('name', 'unknown')))
Пример #39
0
def validate(config, tests):
    for test in tests:
        yield validate_schema(test_description_schema, test,
                              "In test {!r}:".format(test['test-name']))
Пример #40
0
def validate(config, tasks):
    for task in tasks:
        validate_schema(
            diff_description_schema, task,
            "In diff task {!r}:".format(task.get('name', 'unknown')))
        yield task
Пример #41
0
 def test_valid(self):
     validate_schema(schema, {"x": 10, "y": "foo"}, "pfx")
Пример #42
0
def validate(config, jobs):
    for job in jobs:
        yield validate_schema(
            job_description_schema, job,
            "In job {!r}:".format(job.get('name', job.get('label'))))
Пример #43
0
def validate(config, tasks):
    for task in tasks:
        yield validate_schema(
            task_description_schema, task,
            "In task {!r}:".format(task.get('label', '?no-label?')))
Пример #44
0
def validate(cron_yml):
    validate_schema(cron_yml_schema, cron_yml, "Invalid .cron.yml:")
Пример #45
0
def validate(config, tasks):
    for task in tasks:
        validate_schema(
            docker_image_schema, task,
            "In docker image {!r}:".format(task.get('name', 'unknown')))
        yield task