def vrouter_plugin_changed(): # accepts 'ready' value in realation (True/False) # accepts 'settings' value as a serialized dict to json for contrail-vrouter-agent.conf: # {"DEFAULT": {"key1": "value1"}, "SECTION_2": {"key1": "value1"}} data = relation_get() plugin_ip = data.get("private-address") plugin_ready = data.get("ready", False) if plugin_ready: plugin_ips = common_utils.json_loads(config.get("plugin-ips"), dict()) plugin_ips[plugin_ip] = common_utils.json_loads( data.get("settings"), dict()) config["plugin-ips"] = json.dumps(plugin_ips) config.save() utils.update_charm_status()
def install(): status_set('maintenance', 'Installing...') # TODO: try to remove this call common_utils.fix_hostname() if not config["dpdk"]: utils.prepare_hugepages_kernel_mode() if utils.is_reboot_required(): utils.reboot() docker_utils.install() if config["dpdk"]: utils.fix_libvirt() utils.update_charm_status()
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()
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()
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("maintenance", "maintenance") _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") config.save() utils.update_charm_status()
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()
def agent_cluster_changed(): utils.update_charm_status()
def upgrade_charm(): utils.update_charm_status()
def update_status(): utils.update_ziu("update-status") utils.update_charm_status()
def tls_certificates_relation_departed(): if common_utils.tls_changed(utils.MODULE, None): utils.update_charm_status()
def tls_certificates_relation_changed(): if common_utils.tls_changed(utils.MODULE, relation_get()): utils.update_charm_status()
def update_status(): utils.update_ziu("update-status") utils.compile_kernel_modules() utils.update_charm_status()
def update_status(): utils.update_charm_status()
def upgrade_charm(): # to update config flags and certs params if any was changed _update_tls() utils.update_charm_status()
def tls_certificates_relation_departed(): config['tls_present'] = False common_utils.tls_changed(utils.MODULE, None) utils.update_charm_status()
def tls_certificates_relation_changed(): # it can be fired several times without server's cert if common_utils.tls_changed(utils.MODULE, relation_get()): utils.update_charm_status()