コード例 #1
0
def controller(ctx, provisioner_name, namespace, config, container_image,
               node_name, parent_dataset, dataset_mount_dir,
               set_kopf_log_level):
    log = ctx.obj['log']
    log.debug('controller: provisioner_name: %s', provisioner_name)
    log.debug('controller: namespace: %s', namespace)
    log.debug('controller: config: %s', config)
    log.debug('controller: container_image: %s', container_image)
    log.debug('controller: node_name: %s', node_name)
    log.debug('controller: parent_dataset: %s', parent_dataset)
    log.debug('controller: dataset_mount_dir: %s', dataset_mount_dir)

    if set_kopf_log_level:
        logging.getLogger('kopf').setLevel(log.getEffectiveLevel())

    # Import handlers module so they are registered with kopf.
    from . import handlers
    # Pass cli options to handlers.
    handlers.configure(
        provisioner_name=provisioner_name,
        namespace=namespace,
        parent_dataset=parent_dataset,
        config=config,
        container_image=container_image,
        node_name=node_name,
        dataset_mount_dir=dataset_mount_dir,
    )

    log.info('Starting controller ...')
    from kopf.reactor import running
    running.run()
コード例 #2
0
ファイル: cli.py プロジェクト: zalando-incubator/kopf
def run(
    __controls: CLIControls,
    paths: List[str],
    modules: List[str],
    peering_name: Optional[str],
    priority: int,
    standalone: bool,
    namespace: Optional[str],
    liveness_endpoint: Optional[str],
) -> None:
    """ Start an operator process and handle all the requests. """
    if __controls.registry is not None:
        registries.set_default_registry(__controls.registry)
    loaders.preload(
        paths=paths,
        modules=modules,
    )
    return running.run(
        standalone=standalone,
        namespace=namespace,
        priority=priority,
        peering_name=peering_name,
        liveness_endpoint=liveness_endpoint,
        registry=__controls.registry,
        settings=__controls.settings,
        stop_flag=__controls.stop_flag,
        ready_flag=__controls.ready_flag,
        vault=__controls.vault,
    )
コード例 #3
0
def freeze(
    id: Optional[str],
    message: Optional[str],
    lifetime: int,
    namespaces: Collection[references.NamespacePattern],
    clusterwide: bool,
    peering_name: str,
    priority: int,
) -> None:
    """ Freeze the resource handling in the cluster. """
    identity = peering.Identity(id) if id else peering.detect_own_id(
        manual=True)
    insights = references.Insights()
    settings = configuration.OperatorSettings()
    settings.peering.name = peering_name
    settings.peering.priority = priority
    return running.run(clusterwide=clusterwide,
                       namespaces=namespaces,
                       insights=insights,
                       identity=identity,
                       settings=settings,
                       _command=peering.touch_command(insights=insights,
                                                      identity=identity,
                                                      settings=settings,
                                                      lifetime=lifetime))
コード例 #4
0
def run(paths, modules, peering_name, priority, standalone, namespace):
    """ Start an operator process and handle all the requests. """
    cli_login()
    loaders.preload(
        paths=paths,
        modules=modules,
    )
    return running.run(
        standalone=standalone,
        namespace=namespace,
        priority=priority,
        peering_name=peering_name,
    )
コード例 #5
0
def run(
    paths: List[str],
    modules: List[str],
    peering_name: Optional[str],
    priority: int,
    standalone: bool,
    namespace: Optional[str],
) -> None:
    """ Start an operator process and handle all the requests. """
    cli_login()
    loaders.preload(
        paths=paths,
        modules=modules,
    )
    return running.run(
        standalone=standalone,
        namespace=namespace,
        priority=priority,
        peering_name=peering_name,
    )
コード例 #6
0
def run(
    __controls: CLIControls,
    paths: List[str],
    modules: List[str],
    peering_name: Optional[str],
    priority: Optional[int],
    standalone: Optional[bool],
    namespaces: Collection[references.NamespacePattern],
    clusterwide: bool,
    liveness_endpoint: Optional[str],
) -> None:
    """ Start an operator process and handle all the requests. """
    if os.environ.get(
            'KOPF_RUN_NAMESPACE'):  # legacy for single-namespace mode
        namespaces = tuple(namespaces) + (
            os.environ.get('KOPF_RUN_NAMESPACE'), )
    if namespaces and clusterwide:
        raise click.UsageError(
            "Either --namespace or --all-namespaces can be used, not both.")
    if __controls.registry is not None:
        registries.set_default_registry(__controls.registry)
    loaders.preload(
        paths=paths,
        modules=modules,
    )
    return running.run(
        standalone=standalone,
        namespaces=namespaces,
        clusterwide=clusterwide,
        priority=priority,
        peering_name=peering_name,
        liveness_endpoint=liveness_endpoint,
        registry=__controls.registry,
        settings=__controls.settings,
        stop_flag=__controls.stop_flag,
        ready_flag=__controls.ready_flag,
        vault=__controls.vault,
    )