def setUp(self):
        self.mock_jujuclient = MagicMock(name='jujuclient')
        self.mock_juju_state = MagicMock(name='juju_state')
        self.mock_ui = MagicMock(name='ui')
        self.mock_config = MagicMock(name='config')

        self.get_config_patcher = patch('cloudinstall.charms.get_charm_config')
        self.mock_get_config = self.get_config_patcher.start()
        self.mock_get_config.return_value = ({}, None)

        self.charm = CharmNovaCloudController(juju=self.mock_jujuclient,
                                              juju_state=self.mock_juju_state,
                                              ui=self.mock_ui,
                                              config=self.mock_config)
        self.ltp = patch('cloudinstall.utils.load_template')
        self.mock_load_template = self.ltp.start()
        self.mock_load_template.side_effect = source_tree_template_loader
class TestController(unittest.TestCase):
    def setUp(self):
        self.mock_jujuclient = MagicMock(name='jujuclient')
        self.mock_juju_state = MagicMock(name='juju_state')
        self.mock_ui = MagicMock(name='ui')
        self.mock_config = MagicMock(name='config')

        self.get_config_patcher = patch('cloudinstall.charms.get_charm_config')
        self.mock_get_config = self.get_config_patcher.start()
        self.mock_get_config.return_value = ({}, None)

        self.charm = CharmNovaCloudController(juju=self.mock_jujuclient,
                                              juju_state=self.mock_juju_state,
                                              ui=self.mock_ui,
                                              config=self.mock_config)
        self.ltp = patch('cloudinstall.utils.load_template')
        self.mock_load_template = self.ltp.start()
        self.mock_load_template.side_effect = source_tree_template_loader

    def tearDown(self):
        self.get_config_patcher.stop()
        self.ltp.stop()

    @patch('cloudinstall.utils.spew')
    def test_render_setup_script_single(self, mock_spew):
        self.mock_config.is_single.return_value = True
        self.mock_config.cfg_path = 'fake-cfg-path'
        self.mock_config.getopt.return_value = '10.0.90210.0/24'
        self.charm.render_setup_script()
        name, (path, script_text), kwargs = mock_spew.mock_calls[0]
        self.mock_config.getopt.assert_any_call('lxc_network'),
        self.mock_config.getopt.assert_any_call('openstack_release')
        self.assertEqual(path, 'fake-cfg-path/nova-controller-setup.sh')
        self.assertTrue('--gateway 10.0.90210.1' in script_text)

    @patch('cloudinstall.utils.spew')
    def test_render_setup_script_multi(self, mock_spew):
        self.mock_config.is_single.return_value = False
        self.mock_config.cfg_path = 'fake-cfg-path'

        self.charm.render_setup_script()
        name, (path, script_text), kwargs = mock_spew.mock_calls[0]
        self.mock_config.getopt.assert_called_with('openstack_release')
        self.assertEqual(path, 'fake-cfg-path/nova-controller-setup.sh')
        self.assertTrue('--gateway 10.0.0.1' in script_text)
class TestController(unittest.TestCase):
    def setUp(self):
        self.mock_jujuclient = MagicMock(name="jujuclient")
        self.mock_juju_state = MagicMock(name="juju_state")
        self.mock_ui = MagicMock(name="ui")
        self.mock_config = MagicMock(name="config")

        self.get_config_patcher = patch("cloudinstall.charms.get_charm_config")
        self.mock_get_config = self.get_config_patcher.start()
        self.mock_get_config.return_value = ({}, None)

        self.charm = CharmNovaCloudController(
            juju=self.mock_jujuclient, juju_state=self.mock_juju_state, ui=self.mock_ui, config=self.mock_config
        )
        self.ltp = patch("cloudinstall.utils.load_template")
        self.mock_load_template = self.ltp.start()
        self.mock_load_template.side_effect = source_tree_template_loader

    def tearDown(self):
        self.get_config_patcher.stop()
        self.ltp.stop()

    @patch("cloudinstall.utils.spew")
    def test_render_setup_script_single(self, mock_spew):
        self.mock_config.is_single.return_value = True
        self.mock_config.cfg_path = "fake-cfg-path"
        self.mock_config.getopt.return_value = "10.0.90210.0/24"
        self.charm.render_setup_script()
        name, (path, script_text), kwargs = mock_spew.mock_calls[0]
        self.mock_config.getopt.assert_any_call("lxc_network"),
        self.mock_config.getopt.assert_any_call("openstack_release")
        self.assertEqual(path, "fake-cfg-path/nova-controller-setup.sh")
        self.assertTrue("--gateway 10.0.90210.1" in script_text)

    @patch("cloudinstall.utils.spew")
    def test_render_setup_script_multi(self, mock_spew):
        self.mock_config.is_single.return_value = False
        self.mock_config.cfg_path = "fake-cfg-path"

        self.charm.render_setup_script()
        name, (path, script_text), kwargs = mock_spew.mock_calls[0]
        self.mock_config.getopt.assert_called_with("openstack_release")
        self.assertEqual(path, "fake-cfg-path/nova-controller-setup.sh")
        self.assertTrue("--gateway 10.0.0.1" in script_text)
    def setUp(self):
        self.mock_jujuclient = MagicMock(name="jujuclient")
        self.mock_juju_state = MagicMock(name="juju_state")
        self.mock_ui = MagicMock(name="ui")
        self.mock_config = MagicMock(name="config")

        self.get_config_patcher = patch("cloudinstall.charms.get_charm_config")
        self.mock_get_config = self.get_config_patcher.start()
        self.mock_get_config.return_value = ({}, None)

        self.charm = CharmNovaCloudController(
            juju=self.mock_jujuclient, juju_state=self.mock_juju_state, ui=self.mock_ui, config=self.mock_config
        )
        self.ltp = patch("cloudinstall.utils.load_template")
        self.mock_load_template = self.ltp.start()
        self.mock_load_template.side_effect = source_tree_template_loader