Ejemplo n.º 1
0
 def delete_routes(datapusher_name, deis_instance_id, root_domain,
                   sub_domain):
     routers_manager.delete_routes(datapusher_name=datapusher_name,
                                   deis_instance_id=deis_instance_id,
                                   root_domain=root_domain,
                                   sub_domain=sub_domain)
     logs.exit_great_success()
Ejemplo n.º 2
0
def initialize(interactive, cluster_provider, operator_image, skip_to):
    """Initialize the currently connected cluster"""
    manager.initialize(interactive=interactive,
                       default_cluster_provider=cluster_provider,
                       skip_to=skip_to,
                       operator_image=operator_image)
    logs.exit_great_success()
Ejemplo n.º 3
0
def create_base_db(db_name, db_password, admin_connection_string):
    with _get_admin_connection(admin_connection_string) as admin_conn:
        db_name = db_name or _generate_password(8)
        db_password = db_password or _generate_password(12)
        logs.info(f'creating base db: {db_name} / {db_password}')
        driver.create_base_db(admin_conn, db_name, db_password)
        logs.exit_great_success()
Ejemplo n.º 4
0
def update(instance_id_or_name, override_spec_json, persist_overrides,
           wait_ready, skip_deployment, skip_route, force, override_spec_file,
           ckan_cloud_docker_latest_tag):
    """Update an instance to the latest resource spec, optionally applying the given json override to the resource spec

    Examples:

    ckan-cloud-operator ckan instance update <INSTANCE_ID_OR_NAME> '{"siteUrl": "http://localhost:5000"}' --wait-ready

    ckan-cloud-operator ckan instance update <INSTANCE_ID_OR_NAME> '{"replicas": 3}' --persist-overrides
    """
    override_spec = json.loads(
        override_spec_json) if override_spec_json else None
    if override_spec:
        assert not override_spec_file, "Can't specify both OVERRIDE_SPEC_JSON and override_spec_file"
    elif override_spec_file:
        with open(override_spec_file) as f:
            override_spec = yaml.safe_load(f)
    if ckan_cloud_docker_latest_tag:
        assert override_spec.get(
            "ckanImage"
        ), "ckanImage attribute is required in spec for --ckan-cloud-docker-latest-tag arg"
        if override_spec["ckanImage"].endswith(":latest"):
            override_spec["ckanImage"] = override_spec["ckanImage"].replace(
                ":latest", ":%s" % ckan_cloud_docker_latest_tag)
            logs.info("Replacing ckanImage to latest tag: %s" %
                      override_spec["ckanImage"])
    manager.update(instance_id_or_name,
                   override_spec=override_spec,
                   persist_overrides=persist_overrides,
                   wait_ready=wait_ready,
                   skip_deployment=skip_deployment,
                   skip_route=skip_route,
                   force=force)
    logs.exit_great_success()
Ejemplo n.º 5
0
def initialize(interactive, provider_id, storage_suffix, disk_name, dry_run):
    manager.initialize(interactive=interactive,
                       provider_id=provider_id,
                       storage_suffix=storage_suffix,
                       use_existing_disk_name=disk_name,
                       dry_run=dry_run)
    logs.exit_great_success()
Ejemplo n.º 6
0
def create_instance(instance_id, instance_type, values_file, exists_ok,
                    dry_run):
    manager.create_instance(instance_id,
                            instance_type,
                            values_filename=values_file,
                            exists_ok=exists_ok,
                            dry_run=dry_run)
    logs.exit_great_success()
Ejemplo n.º 7
0
def create(values_file, instance_id, instance_name, exists_ok, dry_run, update_, wait_ready,
           skip_deployment, skip_route, force, deployment_provider):
    if not deployment_provider:
        deployment_provider = 'helm'
    manager.create(deployment_provider=deployment_provider, instance_id=instance_id, instance_name=instance_name,
                   values_filename=values_file, exists_ok=exists_ok, dry_run=dry_run, update_=update_,
                   wait_ready=wait_ready, skip_deployment=skip_deployment, skip_route=skip_route, force=force)
    logs.exit_great_success()
Ejemplo n.º 8
0
def delete(instance_id_or_name, no_dry_run):
    generator = manager.delete_instances(instance_ids_or_names=instance_id_or_name, dry_run=not no_dry_run)
    while True:
        try:
            logs.info('Deleting instance', **next(generator))
        except StopIteration:
            break
        logs.info(**next(generator))
    logs.exit_great_success(quiet=True)
Ejemplo n.º 9
0
def list_instances(full, quick, name, credentials):
    instances = list(
        manager.list_instances(full=full,
                               quick=quick,
                               name=name,
                               withCredentials=credentials))
    print('---')
    logs.print_yaml_dump(instances)
    logs.exit_great_success(quiet=True)
Ejemplo n.º 10
0
def list_instances(full, quick, name, credentials):
    '''
    List existing CKAN instaces
    '''
    instances = list(
        manager.list_instances(full=full, quick=quick,
                               name=name, withCredentials=credentials)
    )
    logs.print_yaml_dump(instances)
    logs.exit_great_success(quiet=True)
Ejemplo n.º 11
0
def migrate_deis_instance(old_site_id, new_instance_id, router_name,
                          skip_gitlab, force, rerun, recreate_dbs, recreate,
                          recreate_instance, skip_routes, skip_solr,
                          skip_deployment, no_db_proxy):
    """Run a full end-to-end migration of an instasnce"""
    manager.migrate_deis_instance(old_site_id, new_instance_id, router_name,
                                  skip_gitlab, force, rerun, recreate_dbs,
                                  recreate, recreate_instance, skip_routes,
                                  skip_solr, skip_deployment, no_db_proxy)
    logs.exit_great_success()
Ejemplo n.º 12
0
def create(instance_type, values_file, instance_id, instance_name, exists_ok, dry_run, update_, wait_ready,
           skip_deployment, skip_route, force, skip_solr):
    '''
    Create CKAN instance
    '''
    manager.create(instance_id=instance_id, instance_type=instance_type, instance_name=instance_name,
                   values_filename=values_file, exists_ok=exists_ok, dry_run=dry_run, update_=update_,
                   wait_ready=wait_ready, skip_deployment=skip_deployment, skip_route=skip_route, force=force, skip_solr=skip_solr)

    logs.exit_great_success()
Ejemplo n.º 13
0
def update(instance_id_or_name, override_spec_json, persist_overrides, wait_ready, skip_deployment, skip_route, force):
    """Update an instance to the latest resource spec, optionally applying the given json override to the resource spec

    Examples:

    ckan-cloud-operator apps update <INSTANCE_ID_OR_NAME> '{"siteUrl": "http://localhost:5000"}' --wait-ready

    ckan-cloud-operator apps update <INSTANCE_ID_OR_NAME> '{"replicas": 3}' --persist-overrides
    """
    override_spec = json.loads(override_spec_json) if override_spec_json else None
    manager.update(instance_id_or_name, override_spec=override_spec, persist_overrides=persist_overrides,
                   wait_ready=wait_ready, skip_deployment=skip_deployment, skip_route=skip_route,
                   force=force)
    logs.exit_great_success()
Ejemplo n.º 14
0
def proxy_update(verify_instance_id, set_pool_mode, reload):
    manager.update(wait_updated=reload, set_pool_mode=set_pool_mode)
    if verify_instance_id:
        from ckan_cloud_operator.providers.db import manager as db_manager
        logs.info(f'{verify_instance_id}: Checking DB..')
        db_manager.check_connection_string(
            db_manager.get_deis_instsance_external_connection_string(
                verify_instance_id))
        logs.info(f'{verify_instance_id}: Checking DataStore..')
        db_manager.check_connection_string(
            db_manager.get_deis_instsance_external_connection_string(
                verify_instance_id, is_datastore=True))
        logs.info(f'{verify_instance_id}: Checking DataStore ReadOnly..')
        db_manager.check_connection_string(
            db_manager.get_deis_instsance_external_connection_string(
                verify_instance_id, is_datastore_readonly=True))
    logs.exit_great_success()
Ejemplo n.º 15
0
def update(user):
    assert user['spec']['role'] == 'admin', 'only admin role is supported'
    username = user['spec']['name']
    password = _generate_password(12)
    config = _config_get(is_secret=True)
    api_endpoint, access_key, secret = [
        config['api-endpoint'], config['access-key'], config['secret-key']
    ]
    print('---- # Creating Rancher user')
    res = rancher_driver.create_user(api_endpoint, access_key, secret,
                                     username, password)
    user_id = res['id']
    assert len(res['principalIds']) == 1, 'invalid principalIds'
    user_principal_id = res['principalIds'][0]
    print(yaml.dump(res, default_flow_style=False))
    cluster_id, _ = _config_get('default-context', is_secret=True).split(':')
    print('---- # Creating admin role bindings')
    logs.print_yaml_dump(
        rancher_driver.create_cluster_role_template_binding(
            api_endpoint, access_key, secret, cluster_id, user_principal_id))
    print('---')
    logs.print_yaml_dump(
        rancher_driver.create_global_role_binding(api_endpoint, access_key,
                                                  secret, user_id))
    print('---- # Creating user token')
    res = rancher_driver.login(api_endpoint, username, password)
    user_login_token = res['token']
    logs.print_yaml_dump(res)
    print('---')
    res = rancher_driver.create_user_token(api_endpoint, user_login_token,
                                           'ckan-cloud-operator')
    token = res['token']
    logs.print_yaml_dump(res)
    _config_set(f'{username}-token', token, is_secret=True)
    print(
        '\n\nckan-cloud-operator uses the token to login, if you require human access, keep the username/password, it will not be displayed again\n\n'
    )
    print('username:'******'password:'******'\n\n')
    logs.exit_great_success()
Ejemplo n.º 16
0
def print_event_exit_on_complete(event, details_msg, soft_exit=False):
    if not details_msg: details_msg = ''
    msg = event.pop('msg')
    step = event.pop('step')
    logs.info(f'{step}: {msg}')
    if len(event) > 0:
        logs.info(f'event metadata: {event}')
    event_completed_successfully = get_event_migration_complete_status(event)
    if event_completed_successfully:
        logs.info(f'Migration completed successfully ({details_msg})')
        if soft_exit:
            return True
        else:
            logs.exit_great_success()
    elif event_completed_successfully is False:
        logs.error(f'Migration failed ({details_msg})')
        if soft_exit:
            return False
        else:
            logs.exit_catastrophic_failure()
    else:
        return None
Ejemplo n.º 17
0
def initialize(interactive):
    manager.initialize(interactive=interactive)
    logs.exit_great_success()
Ejemplo n.º 18
0
def migrate_delete(migration_name, delete_dbs):
    for name in migration_name:
        db_migration_manager.delete(name, delete_dbs)
    logs.exit_great_success()
Ejemplo n.º 19
0
def post_create_checks(instance_id):
    manager.post_create_checks(instance_id)
    logs.exit_great_success()
Ejemplo n.º 20
0
def initialize():
    manager.initialize()
    logs.exit_great_success()
Ejemplo n.º 21
0
def put_configs(configs_dir):
    manager.zk_put_configs(configs_dir)
    logs.exit_great_success()
Ejemplo n.º 22
0
def initialize(interactive, db_prefix):
    """Enable Azure SQL as the main DB provider"""
    manager.initialize(interactive=interactive, db_prefix=db_prefix)
    logs.exit_great_success()
Ejemplo n.º 23
0
def create_management_server(interactive, values):
    manager.create_management_server(interactive, values)
    logs.exit_great_success()
Ejemplo n.º 24
0
def get_kubeconfig(user_name):
    """Get kubeconfig file for a user"""
    print(
        yaml.dump(manager.get_kubeconfig(user_name), default_flow_style=False))
    logs.exit_great_success(quiet=True)
Ejemplo n.º 25
0
def set_name(instance_id, instance_name):
    logs.info(f'{instance_name} --> {instance_id}')
    manager.set_name(instance_id, instance_name)
    logs.exit_great_success()
Ejemplo n.º 26
0
def delete_name(instance_name):
    manager.delete_name(instance_name=instance_name)
    logs.exit_great_success()
Ejemplo n.º 27
0
def create(user_name, role):
    """Create a user with the given role"""
    manager.create(user_name, role)
    manager.update(user_name)
    logs.exit_great_success()
Ejemplo n.º 28
0
def list_instances(full, quick, name):
    for instance in manager.list_instances(full=full, quick=quick, name=name):
        logs.print_yaml_dump([instance])
    logs.exit_great_success(quiet=True)
Ejemplo n.º 29
0
def initialize_docker_registry():
    manager.initialize_docker_registry()
    logs.exit_great_success()
Ejemplo n.º 30
0
def initialize(interactive, dry_run):
    manager.initialize(interactive=interactive, dry_run=dry_run)
    logs.exit_great_success()