def model_init(**kwargs): """Set this host to be the Geppetto master and save global config""" for name, value in kwargs.iteritems(): if value: ConfigClassParameter.set_config_parameter(name.upper(), value) master_hostname = network.get_hostname() Master.promote_node(master_hostname) master = get_or_create_node(master_hostname) Override.\ update_or_create_override(master, ConfigClassParameter.get_by_name( ConfigClassParameter.VPX_LABEL_PREFIX), 'Citrix OpenStack VPX') geppetto_roles = [ Role.get_by_name(Role.CELERY_WORKER), Role.get_by_name(Role.CELERY_CAMERA) ] if kwargs['vpx_master_db_host'] in [master_hostname, 'localhost']: geppetto_roles.append(Role.get_by_name(Role.MYSQL)) if kwargs['vpx_master_queue_host'] in [master_hostname, 'localhost']: geppetto_roles.append(Role.get_by_name(Role.RABBITMQ)) roles_to_apply = [r for r in geppetto_roles \ if not NodeRoleAssignment.exists(master, r)] NodeRoleAssignment.add_roles_to_node(master, roles_to_apply, True)
def update_related_config_params(roles, node_fqdn): """Update all config values affected by the given worker type moving to a new node. Then restart all affected services. """ affected_config_parms = [] for role in roles: if role.description: affected_config_parms.extend(RoleDesConfigParamAssignment.\ get_param_labels_by_description(role.description)) affected_config_parms = set(affected_config_parms) for param_label in affected_config_parms: ConfigClassParameter.set_config_parameter(param_label, node_fqdn) Override.update_overrides(ConfigClassParameter.\ get_by_name(param_label)) GroupOverride.update_overrides(ConfigClassParameter.\ get_by_name(param_label)) # restart appropriate services on the affected nodes or # track nodes whose CLI configuration require a refresh node_dict = {} details = ConfigClassParameter.\ get_details_for_params(affected_config_parms) for param_label in affected_config_parms: applies_to = details[param_label]['applies-to'] for role_name in applies_to: role_name = str(role_name) affected_nodes = Node.get_fqdns_by_role(role_name) for n in affected_nodes: if n in node_dict and role_name not in node_dict[n]: node_dict[n].append(role_name) elif n != node_fqdn: node_dict[n] = [role_name] affected_nodes = Node.get_fqdns_by_role(role_name, is_service=False) for n in affected_nodes: if n not in node_dict: node_dict[n] = [] svc_restart = ConfigClassParameter.\ get_by_name(ConfigClassParameter.VPX_RESTART_SERVICES) for node_fqdn, role_to_restart in node_dict.iteritems(): if len(role_to_restart) > 0: Override.update_or_create_override(Node.get_by_name(node_fqdn), svc_restart, role_to_restart, True) return node_dict.keys()
def _test_method_assert_equal(testrunner, name, value): config.set_config_parameter(name, value) self.assertEqual(value, config.get_value_by_name(name))