def test_validate_default_deploy_interface(self): hookenv.config.return_value = { "default-deploy-interface": "direct", "enabled-deploy-interfaces": "direct, iscsi" } target = ironic.IronicConductorCharm() self.assertIsNone(target._validate_default_deploy_interface())
def test_validate_default_net_interface(self): hookenv.config.return_value = { "default-network-interface": "flat", "enabled-network-interfaces": "neutron, flat, noop" } target = ironic.IronicConductorCharm() self.assertIsNone(target._validate_default_net_interface())
def test_enabled_deploy_interfaces(self): cfg_data = {"enabled-deploy-interfaces": "fake, fake2"} hookenv.config.return_value = cfg_data target = ironic.IronicConductorCharm() self.get_pxe_config_class.assert_called_with(cfg_data) self.assertEqual(target.enabled_deploy_interfaces, ["fake", "fake2"])
def test_setup_power_adapter_config_train(self): os_release.return_value = "train" cfg_data = { "enabled-hw-types": "ipmi, redfish, idrac", } hookenv.config.return_value = cfg_data target = ironic.IronicConductorCharm() target._setup_power_adapter_config() expected = { "enabled_hardware_types": "intel-ipmi, idrac, ipmi, redfish", "enabled_management_interfaces": ("idrac-redfish, ipmitool, " "redfish, intel-ipmitool, noop"), "enabled_inspect_interfaces": "idrac-redfish, redfish, no-inspect", "enabled_power_interfaces": "idrac-redfish, ipmitool, redfish", "enabled_console_interfaces": ("ipmitool-shellinabox, " "ipmitool-socat, no-console"), "enabled_raid_interfaces": "idrac-wsman, no-raid", "enabled_vendor_interfaces": "ipmitool, idrac-wsman, no-vendor", "enabled_boot_interfaces": "pxe", "enabled_bios_interfaces": "no-bios" } self.assertEqual(target.config["hardware_type_cfg"], expected)
def test_custom_assess_status_check_all_good(self): hookenv.config.return_value = { "default-deploy-interface": "direct", "enabled-deploy-interfaces": "direct, iscsi", "default-network-interface": "flat", "enabled-network-interfaces": "neutron, flat, noop" } target = ironic.IronicConductorCharm() self.assertEqual(target.custom_assess_status_check(), (None, None))
def test_validate_deploy_interfaces(self): target = ironic.IronicConductorCharm() with self.assertRaises(ValueError) as err: target._validate_deploy_interfaces(["bogus"]) expected_msg = ('Deploy interface bogus is not valid.' ' Valid interfaces are: direct, iscsi') self.assertIsNone(target._validate_deploy_interfaces(["direct"])) self.assertEqual(str(err.exception), expected_msg)
def test_configure_defaults_no_cfg(self): cfg_data = { "default-network-interface": "", "default-deploy-interface": "" } hookenv.config.return_value = cfg_data target = ironic.IronicConductorCharm() self.assertEqual(target.config.get("default-network-interface"), ironic.DEFAULT_NET_IFACE) self.assertEqual(target.config.get("default-deploy-interface"), ironic.DEFAULT_DEPLOY_IFACE)
def test_validate_deploy_interfaces_tmp_secret(self): # leadership.set.temp_url_secret is not set, and "direct" # boot method is enabled. Validate will fail, until # set-temp-url-secret action is run reactive.is_flag_set.side_effect = [False, True] target = ironic.IronicConductorCharm() with self.assertRaises(ValueError) as err: target._validate_deploy_interfaces(["direct"]) expected_msg = ('run set-temp-url-secret action on ' 'leader to enable direct deploy method') self.assertEqual(str(err.exception), expected_msg)
def test_validate_default_deploy_interface_invalid_default(self): hookenv.config.return_value = { "default-deploy-interface": "bogus", "enabled-deploy-interfaces": "direct, iscsi" } target = ironic.IronicConductorCharm() with self.assertRaises(ValueError) as err: target._validate_default_deploy_interface() expected_msg = ("default-deploy-interface (bogus) is not enabled " "in enabled-deploy-interfaces: direct, iscsi") self.assertEqual(str(err.exception), expected_msg)
def test_validate_default_net_interface_invalid_default(self): hookenv.config.return_value = { "default-network-interface": "bogus", "enabled-network-interfaces": "neutron, flat, noop" } target = ironic.IronicConductorCharm() with self.assertRaises(ValueError) as err: target._validate_default_net_interface() expected_msg = ("default-network-interface (bogus) is not enabled " "in enabled-network-interfaces: neutron, flat, noop") self.assertEqual(str(err.exception), expected_msg)
def test_get_amqp_credentials(self): cfg_data = { "rabbit-user": "******", "rabbit-vhost": "openstack", } hookenv.config.return_value = cfg_data target = ironic.IronicConductorCharm() self.get_pxe_config_class.assert_called_with(cfg_data) result = target.get_amqp_credentials() self.assertEqual(result, ('ironic', 'openstack'))
def test_custom_assess_status_check_invalid_default_net_iface(self): hookenv.config.return_value = { "default-deploy-interface": "direct", "enabled-deploy-interfaces": "direct, iscsi", "default-network-interface": "bogus", "enabled-network-interfaces": "neutron, flat, noop" } target = ironic.IronicConductorCharm() expected_status = ( 'blocked', 'invalid default-network-interface config, ' 'default-network-interface (bogus) is not enabled ' 'in enabled-network-interfaces: neutron, flat, noop') self.assertEqual(target.custom_assess_status_check(), expected_status)
def test_custom_assess_status_check_invalid_enabled_deploy_ifaces(self): hookenv.config.return_value = { "default-deploy-interface": "direct", "enabled-deploy-interfaces": "bogus, iscsi", "default-network-interface": "flat", "enabled-network-interfaces": "neutron, flat, noop" } target = ironic.IronicConductorCharm() expected_status = ( 'blocked', 'invalid enabled-deploy-interfaces config, Deploy interface ' 'bogus is not valid. Valid interfaces are: direct, iscsi') self.assertEqual(target.custom_assess_status_check(), expected_status)
def test_configure_defaults_with_user_defined_val(self): cfg_data = { "default-network-interface": "fake_net", "default-deploy-interface": "fake_deploy" } hookenv.config.return_value = cfg_data target = ironic.IronicConductorCharm() target._configure_defaults() self.assertEqual(target.config.get("default-network-interface"), "fake_net") self.assertEqual(target.config.get("default-deploy-interface"), "fake_deploy")
def test_get_database_setup(self): cfg_data = { "database-user": "******", "database": "ironicdb", } hookenv.config.return_value = cfg_data target = ironic.IronicConductorCharm() self.get_pxe_config_class.assert_called_with(cfg_data) result = target.get_database_setup() self.assertEqual(result, [{ "database": cfg_data["database"], "username": cfg_data["database-user"] }])
def test_setup_pxe_config(self): hookenv.config.return_value = { "default-network-interface": "fake_net", "default-deploy-interface": "fake_deploy" } target = ironic.IronicConductorCharm() target._setup_pxe_config(self.mocked_pxe_cfg) expected_pkgs = ironic.PACKAGES + ["fakepkg1", "fakepkg2"] expected_cfg = { 'tftpboot': ctrl_util.PXEBootBase.TFTP_ROOT, 'httpboot': ctrl_util.PXEBootBase.HTTP_ROOT, 'ironic_user': ctrl_util.PXEBootBase.IRONIC_USER, 'ironic_group': ctrl_util.PXEBootBase.IRONIC_GROUP, 'hardware_type_cfg': { 'enabled_hardware_types': 'intel-ipmi, ipmi', 'enabled_management_interfaces': ('intel-ipmitool, ipmitool,' ' noop'), 'enabled_inspect_interfaces': 'no-inspect', 'enabled_power_interfaces': 'ipmitool', 'enabled_console_interfaces': ('ipmitool-shellinabox, ' 'ipmitool-socat, no-console'), 'enabled_raid_interfaces': 'no-raid', 'enabled_vendor_interfaces': 'ipmitool, no-vendor', 'enabled_boot_interfaces': 'pxe', 'enabled_bios_interfaces': 'no-bios' }, 'default-network-interface': 'fake_net', 'default-deploy-interface': 'fake_deploy' } self.assertEqual(target.packages.sort(), expected_pkgs.sort()) self.assertEqual(target.config, expected_cfg) self.assertEqual(target.restart_map.get("fake_config", []), ["fake_svc"]) self.assertTrue("fakehttpd" in target.services)
def test_validate_network_interfaces(self): target = ironic.IronicConductorCharm() with self.assertRaises(ValueError): target._validate_network_interfaces(["bogus"]) self.assertIsNone(target._validate_network_interfaces(["neutron"]))