def __dhcp_cleanup(k8s_conf): logger.info('REMOVING DHCP') multus_elems = config_utils.get_multus_net_elems(k8s_conf) if consts.DHCP_TYPE in multus_elems: ips = config_utils.get_minion_node_ips(k8s_conf) ansible_utils.apply_playbook(consts.K8_DHCP_REMOVAL_PATH, ips, consts.NODE_USER)
def validate_dhcpmandatory(config): """ Checks the presence of DHCP CNI Plugin with Multus, if SRIOV or Multus uses dhcp as network type """ logger.info("checking dhcp mandatory values") has_dhcp = False macvlan_nets = config_utils.get_multus_cni_macvlan_cfgs(config) for macvlan_net in macvlan_nets: macvlan_conf = macvlan_net[consts.MACVLAN_NET_DTLS_KEY] if macvlan_conf[consts.TYPE_KEY] == consts.DHCP_TYPE: has_dhcp = True break if not has_dhcp: sriov_nets = config_utils.get_multus_cni_sriov_cfgs(config) for sriov_net in sriov_nets: sriov_conf = sriov_net[consts.HOST_KEY] sriov_net_confs = sriov_conf[consts.SRIOV_NETWORKS_KEY] for sriov_net_conf in sriov_net_confs: if sriov_net_conf[consts.TYPE_KEY] == consts.DHCP_TYPE: has_dhcp = True break if has_dhcp: cni_types = config_utils.get_multus_net_elems(config) if consts.DHCP_TYPE not in cni_types: raise ValidationException('DHCP must be in the {} list'.format( consts.MULTUS_CNI_KEY))
def __create_multus_cni(k8s_conf): multus_enabled = config_utils.is_multus_cni_enabled(k8s_conf) if multus_enabled: multus_elems = config_utils.get_multus_net_elems(k8s_conf) if consts.DHCP_TYPE in multus_elems: __dhcp_installation(k8s_conf) if consts.SRIOV_TYPE in multus_elems: aconf.launch_sriov_cni_configuration(k8s_conf) aconf.launch_sriov_network_creation(k8s_conf) if consts.FLANNEL_TYPE in multus_elems: aconf.create_flannel_interface(k8s_conf) if consts.WEAVE_TYPE in multus_elems: __launch_weave_interface(k8s_conf) if consts.MACVLAN_TYPE in multus_elems: __macvlan_installation(k8s_conf) ips = config_utils.get_minion_node_ips(k8s_conf) networking_plugin = config_utils.get_networking_plugin(k8s_conf) ansible_utils.apply_playbook( consts.K8_CONF_FILES_DELETION_AFTER_MULTUS, ips, config_utils.get_node_user(k8s_conf), variables={ 'networking_plugin': networking_plugin, 'KUBERNETES_PATH': consts.NODE_K8S_PATH, 'PROJ_ARTIFACT_DIR': config_utils.get_project_artifact_dir( k8s_conf), }) else: logger.info('MULTUS CNI IS DISABLED')
def test_get_multus_net_elems(self): """ Ensures Multus CNI elements are properly parsed """ multus_net_elems = config_utils.get_multus_net_elems(self.config) expected = self.network_list[1][consts.MULTUS_NET_KEY][0][ consts.MULTUS_CNI_KEY] self.assertEqual(expected, multus_net_elems)
def __clean_up_flannel(k8s_conf): """ This function is used to clean the flannel additional plugin """ networking_plugin = config_utils.get_networking_plugin(k8s_conf) mult_elems = config_utils.get_multus_net_elems(k8s_conf) if (networking_plugin != consts.FLANNEL_TYPE and consts.FLANNEL_TYPE in mult_elems): aconf.delete_flannel_interfaces(k8s_conf)
def __macvlan_cleanup(k8s_conf): logger.info("MACVLAN PLUGIN REMOVAL") if consts.MACVLAN_TYPE in config_utils.get_multus_net_elems(k8s_conf): logger.info('REMOVING MACVLAN') __removal_macvlan_interface(k8s_conf) __remove_macvlan_networks(k8s_conf) else: logger.info( 'MAC-VLAN CONFIGURATION EXIT , REASON--> MACVLAN IS DISABLED ')
def __get_multus_cni_value_for_dynamic_node(k8s_conf): """ This function is used to get multus cni value for dynamic node """ multus_cni_elems = config_utils.get_multus_net_elems(k8s_conf) for multus_cni_elem in multus_cni_elems: if multus_cni_elem == consts.FLANNEL_TYPE: return True if multus_cni_elem == consts.WEAVE_TYPE: return True return False
def __clean_up_weave(k8s_conf): """ This function is used to clean the weave additional plugin """ networking_plugin = config_utils.get_networking_plugin(k8s_conf) if networking_plugin != consts.WEAVE_TYPE: logger.info('DEFAULT NETWOKRING PLUGUN IS NOT WEAVE.. ' 'CHECK MULTUS CNI PLUGINS') if (consts.MULTUS_NET_KEY in config_utils.get_multus_net_elems(k8s_conf)): aconf.delete_weave_interface(k8s_conf) else: logger.info('WEAVE IS DEFAULT PLUGIN') aconf.delete_default_weave_interface(k8s_conf)
def validate_duplicatein_cni_and_networkplugin(config): """ Checks if there exists the same plugin in both default network plugin tag and in Cni parameters """ logger.info("checking duplicate values") net_configs = config_utils.get_networks(config) networkpluginvalue = net_configs[0].values()[0][consts.NET_PLUGIN_KEY] net_elems = config_utils.get_multus_net_elems(config) if (consts.WEAVE_TYPE in net_elems and consts.WEAVE_TYPE == networkpluginvalue): raise ValidationException("duplicate weave") if (consts.FLANNEL_TYPE in net_elems and consts.FLANNEL_TYPE == networkpluginvalue): raise ValidationException("duplicate flannel") if (consts.SRIOV_TYPE in net_elems and consts.SRIOV_TYPE == networkpluginvalue): raise ValidationException("duplicate Sriov") if (consts.MACVLAN_TYPE in net_elems and consts.MACVLAN_TYPE == networkpluginvalue): raise ValidationException("duplicate macvlan")