Beispiel #1
0
def create_cluster_role(k8s_conf):
    """
    This function is used to launch multus cni
    """
    logger.info('EXECUTING CREATE CLUSTER ROLE PLAY')
    pb_vars = {
        'PROJ_ARTIFACT_DIR': config_utils.get_project_artifact_dir(k8s_conf)
    }
    ansible_utils.apply_playbook(consts.K8_MULTUS_SET_MASTER,
                                 variables=pb_vars)

    logger.info('Setting nodes in cluster role definition')
    node_configs = config_utils.get_node_configs(k8s_conf)
    if node_configs and len(node_configs) > 0:
        for node_config in node_configs:
            host = node_config[consts.HOST_KEY]
            pb_vars = {
                'hostname':
                host[consts.HOSTNAME_KEY],
                'PROJ_ARTIFACT_DIR':
                config_utils.get_project_artifact_dir(k8s_conf)
            }
            ansible_utils.apply_playbook(consts.K8_MULTUS_CLUSTER_ROLE_DEFINE,
                                         variables=pb_vars)

    logger.info('EXECUTING cluster role creation')
    pb_vars = {
        'PROJ_ARTIFACT_DIR': config_utils.get_project_artifact_dir(k8s_conf)
    }
    ansible_utils.apply_playbook(consts.K8_MULTUS_CLUSTER_ROLE_CREATION,
                                 variables=pb_vars)
def validate_api_ext_loadbalancer_tag_params(config):
    logger.info("checking api_ext_loadbalancer_tag")
    k8s_dict = config_utils.get_k8s_dict(config)
    node_configs = config_utils.get_node_configs(config)
    ha_configs = config_utils.get_ha_config(config)

    for ha_config in ha_configs:
        validate_dict_data(k8s_dict, consts.HA_CONFIG_KEY)
        validate_dict_data(ha_config, consts.HA_API_EXT_LB_KEY)
        ha_lb_conf = ha_config[consts.HA_API_EXT_LB_KEY]
        validate_dict_data(ha_lb_conf, consts.IP_KEY)
        validate_dict_data(node_configs[0], consts.HOST_KEY)

        for node_conf in node_configs:
            if (node_conf.get(consts.HOST_KEY)[consts.IP_KEY] == ha_lb_conf[
                    consts.IP_KEY]):
                raise ValidationException(
                    'Bootstrap ip should never match with the master or node')

        validate_dict_data(ha_lb_conf, consts.USER_KEY)
        validate_dict_data(ha_lb_conf, consts.PASSWORD_KEY)
        validate_dict_data(ha_lb_conf, consts.PORT_KEY)

        ha_lb_port = ha_lb_conf.get(consts.PORT_KEY)
        if not ha_lb_port or ha_lb_port == "" or ha_lb_port == 6443:
            raise ValidationException('Port shoud not be empty or 6443')
def validate_node_config_params(config):
    """
    Checks the presence of node configuration parameters
    """
    logger.info("checking node configuration params")

    node_configs = config_utils.get_node_configs(config)
    validate_dict_data(node_configs[0], consts.HOST_KEY)

    for node_conf in node_configs:
        host_conf = node_conf[consts.HOST_KEY]
        validate_dict_data(host_conf, consts.HOSTNAME_KEY)
        validate_dict_data(host_conf, consts.IP_KEY)
        validate_dict_data(host_conf, consts.NODE_TYPE_KEY)
        validate_dict_data(host_conf, consts.LABEL_KEY)
        validate_dict_data(host_conf, consts.LBL_VAL_KEY)

        if consts.REG_PORT_KEY in host_conf:
            node_type = host_conf[consts.NODE_TYPE_KEY]
            if not (node_type != consts.NODE_TYPE_MASTER
                    or node_type != consts.NODE_TYPE_MINION):
                raise ValidationException(
                    'Node type should be either master or minion')
        validate_dict_data(host_conf, consts.PASSWORD_KEY)
        validate_dict_data(host_conf, consts.USER_KEY)
Beispiel #4
0
 def test_get_node_configs(self):
     """
     Ensures node configuration settings are properly parsed
     """
     node_configs = config_utils.get_node_configs(self.config)
     expected = self.config[consts.K8S_KEY][consts.NODE_CONF_KEY]
     self.assertEqual(expected, node_configs)
def __label_nodes(k8s_conf):
    node_cfgs = config_utils.get_node_configs(k8s_conf)
    for node_cfg in node_cfgs:
        node = node_cfg[consts.HOST_KEY]
        ansible_utils.apply_playbook(
            consts.K8_NODE_LABELING, variables={
                'hostname': node.get(consts.HOSTNAME_KEY),
                'label_key': node.get(consts.LABEL_KEY),
                'label_value': node.get(consts.LBL_VAL_KEY),
                'PROJ_ARTIFACT_DIR': config_utils.get_project_artifact_dir(
                    k8s_conf),
            })
def provision_preparation(k8s_conf):
    """
    This method is responsible for setting up this host for k8s provisioning
    :param k8s_conf: the configuration dict object
    """
    node_configs = config_utils.get_node_configs(k8s_conf)
    if node_configs and len(node_configs) > 0:
        for node_config in node_configs:
            host = node_config[consts.HOST_KEY]
            pb_vars = {'hostname': host[consts.HOSTNAME_KEY],
                       'ip': host[consts.IP_KEY]}
            ansible_utils.apply_playbook(consts.SETUP_ETC_HOSTS,
                                         variables=pb_vars)
    else:
        raise Exception('No hosts to deploy - Aborting')
def validate_count_master_minion(config):
    logger.info("checking count master and minion")
    master_count = 0
    minion_count = 0
    node_configs = config_utils.get_node_configs(config)
    validate_dict_data(node_configs[0], consts.HOST_KEY)

    for node_config in node_configs:
        host = node_config[consts.HOST_KEY]
        if host[consts.NODE_TYPE_KEY] == consts.NODE_TYPE_MASTER:
            master_count = master_count + 1
        if host[consts.NODE_TYPE_KEY] == "minion":
            minion_count = minion_count + 1
    if minion_count > 0:
        pass
    else:
        raise ValidationException("At least one minion is required")
    if master_count > 0:
        pass
    else:
        raise ValidationException("At least master is required")
Beispiel #8
0
 def test_get_password(self):
     node_confs = config_utils.get_node_configs(self.config)
     for node_conf in node_confs:
         password = config_utils.get_node_password(
             self.config, node_conf[consts.HOST_KEY][consts.HOSTNAME_KEY])
         self.assertEqual('password', password)