示例#1
0
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)
示例#2
0
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()
示例#3
0
 def _test_method_assert_equal(testrunner, name, value):
     config.set_config_parameter(name, value)
     self.assertEqual(value, config.get_value_by_name(name))