예제 #1
0
def config_changed():
    utils.update_nrpe_config()
    # Charm doesn't support changing of some parameters.
    if config.changed("dpdk"):
        raise Exception("Configuration parameter dpdk couldn't be changed")
    if config.changed("l3mh-cidr"):
        raise Exception(
            "Configuration parameter l3mh-cidr couldn't be changed")
    # Charm doesn't support changing container runtime (check for empty value after upgrade).
    if config.changed("container_runtime") and config.previous(
            "container_runtime"):
        raise Exception(
            "Configuration parameter container_runtime couldn't be changed")

    if not config["dpdk"] and (config.changed("kernel-hugepages-1g")
                               or config.changed("kernel-hugepages-2m")):
        utils.prepare_hugepages_kernel_mode()
    common_utils.container_engine().config_changed()
    utils.pull_images()
    utils.update_charm_status()

    # leave it as latest - in case of exception in previous steps
    # config.changed doesn't work sometimes...
    if config.get("saved-image-tag") != config["image-tag"]:
        utils.update_ziu("image-tag")
        config["saved-image-tag"] = config["image-tag"]
        config.save()
예제 #2
0
def contrail_controller_changed():
    data = relation_get()
    log("RelData: " + str(data))

    def _update_config(key, data_key):
        if data_key in data:
            config[key] = data[data_key]
        else:
            config.pop(key, None)

    _update_config("analytics_servers", "analytics-server")
    _update_config("analyticsdb_enabled", "analyticsdb_enabled")
    _update_config("auth_info", "auth-info")
    _update_config("orchestrator_info", "orchestrator-info")
    _update_config("controller_ips", "controller_ips")
    _update_config("controller_data_ips", "controller_data_ips")
    _update_config("issu_controller_ips", "issu_controller_ips")
    _update_config("issu_controller_data_ips", "issu_controller_data_ips")
    _update_config("issu_analytics_ips", "issu_analytics_ips")

    maintenance = None
    if "maintenance" in data:
        maintenance = "issu"
    if "ziu" in data or "ziu_done" in data:
        maintenance = "ziu"
    if maintenance:
        config["maintenance"] = maintenance
    else:
        config.pop("maintenance", None)

    info = common_utils.json_loads(data.get("agents-info"), dict())
    k8s_info = info.get("k8s_info")
    if k8s_info:
        ip = unit_private_ip()
        for cluster in k8s_info:
            kubernetes_workers = k8s_info[cluster].get("kubernetes_workers",
                                                       [])
            if kubernetes_workers and ip in kubernetes_workers:
                config["pod_subnets"] = k8s_info[cluster].get("pod_subnets")
                break

    if "controller_data_ips" in data:
        settings = {"vhost-address": utils.get_vhost_ip()}
        for rid in relation_ids("agent-cluster"):
            relation_set(relation_id=rid, relation_settings=settings)

    utils.update_ziu("controller-changed")
    utils.update_charm_status()
예제 #3
0
def config_changed():
    utils.update_nrpe_config()
    # Charm doesn't support changing of some parameters.
    if config.changed("dpdk"):
        raise Exception("Configuration parameter dpdk couldn't be changed")

    if not config["dpdk"]:
        utils.prepare_hugepages_kernel_mode()
    docker_utils.config_changed()
    utils.update_charm_status()

    # leave it as latest - in case of exception in previous steps
    # config.changed doesn't work sometimes...
    if config.get("saved-image-tag") != config["image-tag"]:
        utils.update_ziu("image-tag")
        config["saved-image-tag"] = config["image-tag"]
        config.save()
예제 #4
0
def contrail_controller_changed():
    data = relation_get()
    log("RelData: " + str(data))

    def _update_config(key, data_key):
        if data_key in data:
            config[key] = data[data_key]
        else:
            config.pop(key, None)

    _update_config("analytics_servers", "analytics-server")
    _update_config("auth_info", "auth-info")
    _update_config("orchestrator_info", "orchestrator-info")
    _update_config("controller_ips", "controller_ips")
    _update_config("controller_data_ips", "controller_data_ips")
    _update_config("issu_controller_ips", "issu_controller_ips")
    _update_config("issu_controller_data_ips", "issu_controller_data_ips")
    _update_config("issu_analytics_ips", "issu_analytics_ips")

    if "controller_data_ips" in data:
        settings = {"vhost-address": utils.get_vhost_ip()}
        for rid in relation_ids("agent-cluster"):
            relation_set(relation_id=rid, relation_settings=settings)

    maintenance = None
    if "maintenance" in data:
        maintenance = "issu"
    if "ziu" in data or "ziu_done" in data:
        maintenance = "ziu"
    if maintenance:
        config["maintenance"] = maintenance
    else:
        config.pop("maintenance", None)

    config.save()

    utils.update_ziu("controller-changed")
    utils.update_charm_status()
예제 #5
0
def upgrade():
    utils.stop_agent()
    utils.update_charm_status_for_upgrade()
    utils.update_ziu("upgrade")
예제 #6
0
def update_status():
    utils.update_ziu("update-status")
    utils.update_charm_status()
예제 #7
0
def update_status():
    utils.update_ziu("update-status")
    utils.compile_kernel_modules()
    utils.update_charm_status()