def setUpClass(cls):
        m = MagicMock()
        cls.service_mock = MagicMock()
        cls.service_mock.__class__ = MagicMock()
        cls.service_lbmonitor_binding_mock = MagicMock()
        cls.lbmonitor_service_binding_mock = MagicMock()
        nssrc_modules_mock = {
            'nssrc.com.citrix.netscaler.nitro.resource.config.basic':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.basic.service':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.basic.service.service':
            cls.service_mock,
            'nssrc.com.citrix.netscaler.nitro.resource.config.basic.service_lbmonitor_binding':
            cls.service_lbmonitor_binding_mock,
            'nssrc.com.citrix.netscaler.nitro.resource.config.basic.service_lbmonitor_binding.service_lbmonitor_binding':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.lb':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbmonitor_service_binding':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbmonitor_service_binding.lbmonitor_service_binding':
            cls.lbmonitor_service_binding_mock,
        }

        cls.nitro_specific_patcher = patch.dict(sys.modules,
                                                nssrc_modules_mock)
        cls.nitro_base_patcher = nitro_base_patcher
Beispiel #2
0
    def setUpClass(cls):
        class MockException(Exception):
            pass

        cls.MockException = MockException

        m = MagicMock()
        cls.server_mock = MagicMock()
        cls.server_mock.__class__ = MagicMock(add=Mock())
        nssrc_modules_mock = {
            'nssrc.com.citrix.netscaler.nitro.resource.config.lb':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbvserver':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbvserver.lbvserver':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbvserver_service_binding':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbvserver_service_binding.lbvserver_service_binding':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbvserver_servicegroup_binding':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbvserver_servicegroup_binding.lbvserver_servicegroup_binding':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.ssl':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.ssl.sslvserver_sslcertkey_binding':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.ssl.sslvserver_sslcertkey_binding.sslvserver_sslcertkey_binding':
            m,
        }

        cls.nitro_specific_patcher = patch.dict(sys.modules,
                                                nssrc_modules_mock)
        cls.nitro_base_patcher = nitro_base_patcher
    def test_no_change_to_module_when_all_identical(self):
        self.set_module_state('present')
        from ansible_collections.community.network.plugins.modules.network.netscaler import netscaler_cs_policy
        cs_policy_mock = MagicMock()
        attrs = {
            'diff_object.return_value': {},
        }
        cs_policy_mock.configure_mock(**attrs)

        m = MagicMock(return_value=cs_policy_mock)
        policy_exists_mock = Mock(side_effect=[True, True])
        policy_identical_mock = Mock(side_effect=[True, True])

        with patch.multiple(
                'ansible_collections.community.network.plugins.modules.network.netscaler.netscaler_cs_policy',
                ConfigProxy=m,
                policy_exists=policy_exists_mock,
                policy_identical=policy_identical_mock,
                ensure_feature_is_enabled=Mock(),
                nitro_exception=self.MockException,
        ):
            self.module = netscaler_cs_policy
            result = self.exited()
            self.assertFalse(result['changed'],
                             msg='Erroneous changed status update')
    def test_update_servicegroup_when_service_members_differ(self):
        self.set_module_state('present')
        from ansible_collections.community.network.plugins.modules.network.netscaler import netscaler_servicegroup
        servicegroup_proxy_mock = MagicMock()
        attrs = {
            'diff_object.return_value': {},
        }
        servicegroup_proxy_mock.configure_mock(**attrs)

        m = MagicMock(return_value=servicegroup_proxy_mock)
        sync_mock = Mock()

        with patch.multiple(
                'ansible_collections.community.network.plugins.modules.network.netscaler.netscaler_servicegroup',
                ConfigProxy=m,
                servicegroup_exists=Mock(side_effect=[True, True]),
                servicegroup_identical=Mock(side_effect=[True, True]),
                monitor_bindings_identical=Mock(side_effect=[True, True]),
                sync_monitor_bindings=Mock(),
                servicemembers_identical=Mock(side_effect=[False, True]),
                sync_service_members=sync_mock,
                do_state_change=Mock(return_value=Mock(errorcode=0)),
        ):
            self.module = netscaler_servicegroup
            result = self.exited()
        # poor man's assert_called_once since python3.5 does not implement that mock method
        self.assertEqual(len(sync_mock.mock_calls),
                         1,
                         msg='sync monitor bindings not called once')
        self.assertTrue(result['changed'], msg='Change not recorded')
    def setUpClass(cls):
        class MockException(Exception):
            pass

        cls.MockException = MockException
        m = MagicMock()
        cls.servicegroup_mock = MagicMock()
        cls.servicegroup_mock.__class__ = MagicMock()
        nssrc_modules_mock = {
            'nssrc.com.citrix.netscaler.nitro.resource.config.basic':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.basic.servicegroup':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.basic.servicegroup.servicegroup':
            cls.servicegroup_mock,
            'nssrc.com.citrix.netscaler.nitro.resource.config.basic.servicegroup_servicegroupmember_binding':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.basic.servicegroup_servicegroupmember_binding.servicegroup_servicegroupmember_binding':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.basic.servicegroup_lbmonitor_binding':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.basic.servicegroup_lbmonitor_binding.servicegroup_lbmonitor_binding':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.lb':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbmonitor_servicegroup_binding':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbmonitor_servicegroup_binding.lbmonitor_servicegroup_binding':
            m
        }

        cls.nitro_specific_patcher = patch.dict(sys.modules,
                                                nssrc_modules_mock)
        cls.nitro_base_patcher = nitro_base_patcher
    def test_no_change_to_module_when_all_identical(self):
        self.set_module_state('present')
        from ansible_collections.community.network.plugins.modules.network.netscaler import netscaler_servicegroup
        servicegroup_proxy_mock = MagicMock()
        attrs = {
            'diff_object.return_value': {},
        }
        servicegroup_proxy_mock.configure_mock(**attrs)

        m = MagicMock(return_value=servicegroup_proxy_mock)
        servicegroup_exists_mock = Mock(side_effect=[True, True])
        servicegroup_identical_mock = Mock(side_effect=[True, True])
        monitor_bindings_identical_mock = Mock(side_effect=[True, True])

        with patch.multiple(
                'ansible_collections.community.network.plugins.modules.network.netscaler.netscaler_servicegroup',
                ConfigProxy=m,
                servicegroup_exists=servicegroup_exists_mock,
                servicegroup_identical=servicegroup_identical_mock,
                servicemembers_identical=Mock(side_effect=[True, True]),
                monitor_bindings_identical=monitor_bindings_identical_mock,
                do_state_change=Mock(return_value=Mock(errorcode=0)),
                nitro_exception=self.MockException,
        ):
            self.module = netscaler_servicegroup
            result = self.exited()
            self.assertFalse(result['changed'],
                             msg='Erroneous changed status update')
    def test_servicegroup_monitor_bindings_sanity(self):
        self.set_module_state('present')
        from ansible_collections.community.network.plugins.modules.network.netscaler import netscaler_servicegroup
        servicegroup_proxy_mock = MagicMock()
        attrs = {
            'diff_object.return_value': {},
        }
        servicegroup_proxy_mock.configure_mock(**attrs)

        m = MagicMock(return_value=servicegroup_proxy_mock)
        sync_mock = Mock()

        with patch.multiple(
                'ansible_collections.community.network.plugins.modules.network.netscaler.netscaler_servicegroup',
                ConfigProxy=m,
                servicegroup_exists=Mock(side_effect=[True, True]),
                servicegroup_identical=Mock(side_effect=[True, True]),
                monitor_bindings_identical=Mock(side_effect=[False, False]),
                sync_monitor_bindings=Mock(),
                servicemembers_identical=Mock(side_effect=[True, True]),
                nitro_exception=self.MockException,
                sync_service_members=sync_mock,
                do_state_change=Mock(return_value=Mock(errorcode=0)),
        ):
            self.module = netscaler_servicegroup
            result = self.failed()
            self.assertEqual(result['msg'],
                             'Monitor bindings are not identical')
    def test_icx_config_lines_w_parents(self):
        lines = ['disable']
        parents = ['interface ethernet 1/1/4']
        set_module_args(dict(lines=lines, parents=parents))
        module = MagicMock()
        module.params = {'lines': lines, 'parents': parents, 'src': None}
        candidate_config = icx_config.get_candidate_config(module)

        self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(
            candidate_config, self.running_config))

        commands = ['interface ethernet 1/1/4', 'disable']
        self.execute_module(changed=True, commands=commands)
Beispiel #9
0
    def test_voss_config_ipv6(self):
        lines = [
            'ip address 1 1.1.1.1/255.255.255.255',
            'ipv6 interface address 2011:0:0:0:0:0:0:1/128'
        ]
        parents = ['interface loopback 1']
        set_module_args(dict(lines=lines, parents=parents))
        module = MagicMock()
        module.params = {'lines': lines, 'parents': parents, 'src': None}
        candidate_config = voss_config.get_candidate_config(module)

        self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(
            candidate_config, self.running_config))
        self.execute_module(changed=False)
Beispiel #10
0
    def setUp(self):
        super(TestExosConfigModule, self).setUp()

        self.mock_get_config = patch(
            'ansible_collections.community.network.plugins.modules.network.exos.exos_config.get_config'
        )
        self.get_config = self.mock_get_config.start()

        self.mock_load_config = patch(
            'ansible_collections.community.network.plugins.modules.network.exos.exos_config.load_config'
        )
        self.load_config = self.mock_load_config.start()

        self.mock_run_commands = patch(
            'ansible_collections.community.network.plugins.modules.network.exos.exos_config.run_commands'
        )
        self.run_commands = self.mock_run_commands.start()

        self.mock_get_startup_config = patch(
            'ansible_collections.community.network.plugins.modules.network.exos.exos_config.get_startup_config'
        )
        self.get_startup_config = self.mock_get_startup_config.start()

        self.cliconf_obj = Cliconf(MagicMock())

        self.mock_get_diff = patch(
            'ansible_collections.community.network.plugins.modules.network.exos.exos_config.get_diff'
        )
        self.get_diff = self.mock_get_diff.start()

        self.running_config = load_fixture('exos_config_config.cfg')
Beispiel #11
0
    def test_voss_config_match_exact(self):
        lines = ['name "ServerA"', 'vlacp enable', 'no shutdown']
        parents = ['interface GigabitEthernet 1/1']
        set_module_args(dict(lines=lines, parents=parents, match='exact'))

        module = MagicMock()
        module.params = {'lines': lines, 'parents': parents, 'src': None}
        candidate_config = voss_config.get_candidate_config(module)
        self.conn.get_diff = MagicMock(
            return_value=self.cliconf_obj.get_diff(candidate_config,
                                                   self.running_config,
                                                   diff_match='exact',
                                                   path=parents))

        commands = parents + lines
        self.execute_module(changed=True, commands=commands, sort=False)
Beispiel #12
0
 def test_voss_config_after(self):
     lines = ['prompt "VSP8K"']
     set_module_args(dict(lines=lines, after=['test1', 'test2']))
     self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(
         '\n'.join(lines), self.running_config))
     commands = ['prompt "VSP8K"', 'test1', 'test2']
     self.execute_module(changed=True, commands=commands, sort=False)
Beispiel #13
0
    def setUpClass(cls):
        class MockException(Exception):
            pass

        cls.MockException = MockException

        m = MagicMock()
        nssrc_modules_mock = {
            'nssrc.com.citrix.netscaler.nitro.resource.config.gslb':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.gslb.gslbvserver':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.gslb.gslbvserver.gslbvserver':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.gslb.gslbvserver_gslbservice_binding':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.gslb.gslbvserver_gslbservice_binding.gslbvserver_gslbservice_binding':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.gslb.gslbvserver_domain_binding':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.gslb.gslbvserver_domain_binding.gslbvserver_domain_binding':
            m,
        }

        cls.nitro_specific_patcher = patch.dict(sys.modules,
                                                nssrc_modules_mock)
        cls.nitro_base_patcher = nitro_base_patcher
def super_switcher(scope="function", autouse=True):
    # Mocking the inbuilt super as it is used in ApiSession initialization
    original_super = __builtin__.super
    __builtin__.super = MagicMock()
    yield
    # Revert the super to default state
    __builtin__.super = original_super
Beispiel #15
0
    def setUpClass(cls):
        class MockException(Exception):
            pass

        cls.MockException = MockException

        m = MagicMock()
        nssrc_modules_mock = {
            'nssrc.com.citrix.netscaler.nitro.resource.config.gslb': m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.gslb.gslbservice': m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.gslb.gslbservice.gslbservice': m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.gslb.gslbservice_lbmonitor_binding': m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.gslb.gslbservice_lbmonitor_binding.gslbservice_lbmonitor_binding': m,

            # The following are needed because of monkey_patch_nitro_api()
            'nssrc.com.citrix.netscaler.nitro.resource.base': m,
            'nssrc.com.citrix.netscaler.nitro.resource.base.Json': m,
            'nssrc.com.citrix.netscaler.nitro.resource.base.Json.Json': m,
            'nssrc.com.citrix.netscaler.nitro.util': m,
            'nssrc.com.citrix.netscaler.nitro.util.nitro_util': m,
            'nssrc.com.citrix.netscaler.nitro.util.nitro_util.nitro_util': m,
        }

        cls.nitro_specific_patcher = patch.dict(sys.modules, nssrc_modules_mock)
        cls.nitro_base_patcher = nitro_base_patcher
 def test_icx_config_src(self):
     src = load_fixture('icx_config_src.cfg')
     set_module_args(dict(src=src))
     self.conn.get_diff = MagicMock(
         return_value=self.cliconf_obj.get_diff(src, self.running_config))
     commands = ['hostname foo', 'interface ethernet 1/1/4', 'disable']
     self.execute_module(changed=True, commands=commands)
 def test_icx_config_lines_wo_parents(self):
     lines = ['hostname foo']
     set_module_args(dict(lines=lines))
     self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(
         '\n'.join(lines), self.running_config))
     commands = ['hostname foo']
     self.execute_module(changed=True, commands=commands)
    def test_icx_config_match_none_block(self):
        lines = ['speed-duplex 10-full', 'port-name test-interface-4']
        parents = ['interface ethernet 1/1/4']
        set_module_args(dict(lines=lines, parents=parents, match='none'))

        module = MagicMock()
        module.params = {'lines': lines, 'parents': parents, 'src': None}
        candidate_config = icx_config.get_candidate_config(module)
        self.conn.get_diff = MagicMock(
            return_value=self.cliconf_obj.get_diff(candidate_config,
                                                   self.running_config,
                                                   diff_match='none',
                                                   path=parents))

        commands = parents + lines
        self.execute_module(changed=True, commands=commands, sort=False)
Beispiel #19
0
 def test_voss_config_config(self):
     config = 'prompt "VSP300"'
     lines = ['prompt router']
     set_module_args(dict(lines=lines, config=config))
     self.conn.get_diff = MagicMock(
         return_value=self.cliconf_obj.get_diff('\n'.join(lines), config))
     commands = ['prompt router']
     self.execute_module(changed=True, commands=commands)
    def test_icx_config_replace_block(self):
        lines = ['port-name test string', 'test string']
        parents = ['interface ethernet 1/1/4']
        set_module_args(dict(lines=lines, replace='block', parents=parents))

        module = MagicMock()
        module.params = {'lines': lines, 'parents': parents, 'src': None}
        candidate_config = icx_config.get_candidate_config(module)

        self.conn.get_diff = MagicMock(
            return_value=self.cliconf_obj.get_diff(candidate_config,
                                                   self.running_config,
                                                   diff_replace='block',
                                                   path=parents))

        commands = parents + lines
        self.execute_module(changed=True, commands=commands)
 def test_icx_config_config(self):
     config = 'hostname localhost'
     lines = ['hostname router']
     set_module_args(dict(lines=lines, config=config))
     self.conn.get_diff = MagicMock(
         return_value=self.cliconf_obj.get_diff('\n'.join(lines), config))
     commands = ['hostname router']
     self.execute_module(changed=True, commands=commands)
    def setUp(self):
        librouteros = pytest.importorskip("librouteros")
        self.module = routeros_api
        self.module.connect = MagicMock(new=fake_ros_api)
        self.module.Key = MagicMock(new=Key)
        self.config_module_args = {
            "username": "******",
            "password": "******",
            "hostname": "127.0.0.1",
            "path": "interface bridge"
        }

        self.mock_module_helper = patch.multiple(basic.AnsibleModule,
                                                 exit_json=exit_json,
                                                 fail_json=fail_json)
        self.mock_module_helper.start()
        self.addCleanup(self.mock_module_helper.stop)
    def setUpClass(cls):
        class MockException(Exception):
            pass

        cls.MockException = MockException

        m = MagicMock()
        cls.server_mock = MagicMock()
        cls.server_mock.__class__ = MagicMock(add=Mock())
        nssrc_modules_mock = {
            'nssrc.com.citrix.netscaler.nitro.resource.config.basic': m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.basic.server': m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.basic.server.server': cls.server_mock,
        }

        cls.nitro_specific_patcher = patch.dict(sys.modules, nssrc_modules_mock)
        cls.nitro_base_patcher = nitro_base_patcher
    def test_update_service_when_service_differs(self):
        self.set_module_state('present')
        from ansible_collections.community.network.plugins.modules.network.netscaler import netscaler_service
        service_proxy_mock = MagicMock()
        attrs = {
            'diff_object.return_value': {},
        }
        service_proxy_mock.configure_mock(**attrs)

        m = MagicMock(return_value=service_proxy_mock)
        service_exists_mock = Mock(side_effect=[True, True])
        service_identical_mock = Mock(side_effect=[False, True])
        monitor_bindings_identical_mock = Mock(side_effect=[True, True])
        all_identical_mock = Mock(side_effect=[False])

        with patch.multiple(
                'ansible_collections.community.network.plugins.modules.network.netscaler.netscaler_service',
                ConfigProxy=m,
                service_exists=service_exists_mock,
                service_identical=service_identical_mock,
                monitor_bindings_identical=monitor_bindings_identical_mock,
                all_identical=all_identical_mock,
                do_state_change=Mock(return_value=Mock(errorcode=0)),
        ):
            self.module = netscaler_service
            result = self.exited()
            service_proxy_mock.assert_has_calls([call.update()])
            self.assertTrue(result['changed'], msg='Change not recorded')
    def test_create_non_existing_servicegroup(self):
        self.set_module_state('present')
        from ansible_collections.community.network.plugins.modules.network.netscaler import netscaler_servicegroup
        servicegroup_proxy_mock = MagicMock()
        attrs = {
            'diff_object.return_value': {},
        }
        servicegroup_proxy_mock.configure_mock(**attrs)

        m = MagicMock(return_value=servicegroup_proxy_mock)
        servicegroup_exists_mock = Mock(side_effect=[False, True])

        servicegroup_servicegroupmember_binding_mock = Mock(count=Mock(
            return_value=0))

        with patch.multiple(
                'ansible_collections.community.network.plugins.modules.network.netscaler.netscaler_servicegroup',
                ConfigProxy=m,
                servicegroup_exists=servicegroup_exists_mock,
                servicemembers_identical=Mock(side_effect=[False, True]),
                do_state_change=Mock(return_value=Mock(errorcode=0)),
                servicegroup_servicegroupmember_binding=
                servicegroup_servicegroupmember_binding_mock,
                nitro_exception=self.MockException,
        ):
            self.module = netscaler_servicegroup
            result = self.exited()
            servicegroup_proxy_mock.assert_has_calls([call.add()])
            self.assertTrue(result['changed'], msg='Change not recorded')
 def test_icx_config_before_after_no_change(self):
     lines = ['hostname router']
     set_module_args(
         dict(lines=lines,
              before=['test1', 'test2'],
              after=['test3', 'test4']))
     self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(
         '\n'.join(lines), self.running_config))
     self.execute_module()
Beispiel #27
0
 def test_voss_config_src(self):
     src = load_fixture('voss_config_src.cfg')
     set_module_args(dict(src=src))
     self.conn.get_diff = MagicMock(
         return_value=self.cliconf_obj.get_diff(src, self.running_config))
     commands = [
         'prompt "VSP8K"', 'interface GigabitEthernet 1/1', 'name "UNUSED"',
         'exit'
     ]
     self.execute_module(changed=True, commands=commands)
Beispiel #28
0
 def test_voss_config_src_ipv6(self):
     src = load_fixture('voss_config_ipv6.cfg')
     set_module_args(dict(src=src))
     self.conn.get_diff = MagicMock(
         return_value=self.cliconf_obj.get_diff(src, self.running_config))
     commands = [
         'interface loopback 1', 'ip address 1 2.2.2.2/255.255.255.255',
         'ipv6 interface address 2011:0:0:0:0:0:0:2/128', 'exit'
     ]
     self.execute_module(changed=True, commands=commands)
def test_lookup_multiple_obj(dummy_credentials):
    avi_lookup = lookup_loader.get('community.network.avi')
    avi_mock = MagicMock()
    avi_mock.return_value.get.return_value.json.return_value = data[
        "mock_multiple_obj"]
    with patch.object(avi, 'ApiSession', avi_mock):
        retval = avi_lookup.run([], {},
                                avi_credentials=dummy_credentials,
                                obj_type="network")
        assert retval == data["mock_multiple_obj"]["results"]
def test_lookup_single_obj(dummy_credentials):
    avi_lookup = lookup_loader.get('community.network.avi')
    avi_mock = MagicMock()
    avi_mock.return_value.get_object_by_name.return_value = data[
        "mock_single_obj"]
    with patch.object(avi, 'ApiSession', avi_mock):
        retval = avi_lookup.run([], {},
                                avi_credentials=dummy_credentials,
                                obj_type="network",
                                obj_name='PG-123')
        assert retval[0] == data["mock_single_obj"]