def test_get_immutables_failure(self):
        set_module_args(dict(
            nitro_user='******',
            nitro_pass='******',
            nsip='1.1.1.1',
            state='present',
        ))

        from ansible.modules.network.netscaler import netscaler_lb_monitor

        lb_monitor_proxy_mock = Mock(diff_object=Mock(return_value={}))

        client_mock = Mock()
        m = Mock(return_value=['some'])
        with patch.multiple(
            'ansible.modules.network.netscaler.netscaler_lb_monitor',
            get_nitro_client=Mock(return_value=client_mock),
            ConfigProxy=Mock(return_value=lb_monitor_proxy_mock),
            ensure_feature_is_enabled=Mock(),
            lbmonitor_exists=Mock(side_effect=[True, True]),
            lbmonitor_identical=Mock(side_effect=[False, True]),
            get_immutables_intersection=m,
            diff_list=Mock(return_value={}),
            nitro_exception=self.MockException,
        ):
            self.module = netscaler_lb_monitor
            result = self.failed()
            self.assertTrue(
                result['msg'].startswith('Cannot update immutable attributes'),
                msg='Did not handle immutables error correctly',
            )
    def test_graceful_nitro_exception_state_absent(self):
        set_module_args(dict(
            nitro_user='******',
            nitro_pass='******',
            nsip='1.1.1.1',
            state='absent',
        ))
        from ansible.modules.network.netscaler import netscaler_gslb_site

        class MockException(Exception):
            def __init__(self, *args, **kwargs):
                self.errorcode = 0
                self.message = ''

        m = Mock(side_effect=MockException)
        with patch.multiple(
            'ansible.modules.network.netscaler.netscaler_gslb_site',
            gslb_site_exists=m,
            ensure_feature_is_enabled=Mock(),
            nitro_exception=MockException
        ):
            self.module = netscaler_gslb_site
            result = self.failed()
            self.assertTrue(
                result['msg'].startswith('nitro exception'),
                msg='Nitro exception not caught on operation absent'
            )
    def test_present_gslb_site_identical_flow(self):
        set_module_args(dict(
            nitro_user='******',
            nitro_pass='******',
            nsip='1.1.1.1',
            state='present',
        ))
        from ansible.modules.network.netscaler import netscaler_gslb_site

        client_mock = Mock()

        m = Mock(return_value=client_mock)

        glsb_site_proxy_attrs = {
            'diff_object.return_value': {},
        }
        gslb_site_proxy_mock = Mock()
        gslb_site_proxy_mock.configure_mock(**glsb_site_proxy_attrs)
        config_proxy_mock = Mock(return_value=gslb_site_proxy_mock)

        with patch.multiple(
            'ansible.modules.network.netscaler.netscaler_gslb_site',
            get_nitro_client=m,
            diff_list=Mock(return_value={}),
            get_immutables_intersection=Mock(return_value=[]),
            gslb_site_exists=Mock(side_effect=[True, True]),
            gslb_site_identical=Mock(side_effect=[True, True]),
            nitro_exception=self.MockException,
            ensure_feature_is_enabled=Mock(),
            ConfigProxy=config_proxy_mock,
        ):
            self.module = netscaler_gslb_site
            self.exited()
            gslb_site_proxy_mock.assert_not_called()
    def test_graceful_nitro_error_on_login(self):
        set_module_args(dict(
            nitro_user='******',
            nitro_pass='******',
            nsip='1.1.1.1',
            state='present',
        ))
        from ansible.modules.network.netscaler import netscaler_lb_monitor

        class MockException(Exception):
            def __init__(self, *args, **kwargs):
                self.errorcode = 0
                self.message = ''

        client_mock = Mock()
        client_mock.login = Mock(side_effect=MockException)
        m = Mock(return_value=client_mock)
        with patch.multiple(
            'ansible.modules.network.netscaler.netscaler_lb_monitor',
            get_nitro_client=m,
            nitro_exception=MockException,
        ):
            self.module = netscaler_lb_monitor
            result = self.failed()
            self.assertTrue(result['msg'].startswith('nitro exception'), msg='nitro exception during login not handled properly')
    def test_absent_gslb_site_failed_delete(self):
        set_module_args(dict(
            nitro_user='******',
            nitro_pass='******',
            nsip='1.1.1.1',
            state='absent',
        ))
        from ansible.modules.network.netscaler import netscaler_gslb_site

        client_mock = Mock()

        m = Mock(return_value=client_mock)

        glsb_site_proxy_attrs = {
            'diff_object.return_value': {},
        }
        gslb_site_proxy_mock = Mock()
        gslb_site_proxy_mock.configure_mock(**glsb_site_proxy_attrs)
        config_proxy_mock = Mock(return_value=gslb_site_proxy_mock)

        with patch.multiple(
            'ansible.modules.network.netscaler.netscaler_gslb_site',
            nitro_exception=self.MockException,
            get_nitro_client=m,
            diff_list=Mock(return_value={}),
            get_immutables_intersection=Mock(return_value=[]),
            gslb_site_exists=Mock(side_effect=[True, True]),
            gslb_site_identical=Mock(side_effect=[False, False]),
            ensure_feature_is_enabled=Mock(),
            ConfigProxy=config_proxy_mock,
        ):
            self.module = netscaler_gslb_site
            result = self.failed()
            self.assertEqual(result['msg'], 'GSLB site still exists')
            self.assertTrue(result['failed'])
    def test_ensure_feature_is_enabled_called(self):
        set_module_args(dict(
            nitro_user='******',
            nitro_pass='******',
            nsip='1.1.1.1',
            state='present',
        ))
        from ansible.modules.network.netscaler import netscaler_gslb_site

        gslb_site_proxy_mock = Mock()
        ensure_feature_is_enabled_mock = Mock()
        client_mock = Mock()

        with patch.multiple(
            'ansible.modules.network.netscaler.netscaler_gslb_site',
            get_nitro_client=Mock(return_value=client_mock),
            gslb_site_exists=Mock(side_effect=[False, True]),
            gslb_site_identical=Mock(side_effect=[True]),
            nitro_exception=self.MockException,
            ensure_feature_is_enabled=ensure_feature_is_enabled_mock,
            ConfigProxy=Mock(return_value=gslb_site_proxy_mock),
        ):
            self.module = netscaler_gslb_site
            self.exited()
            ensure_feature_is_enabled_mock.assert_called_with(client_mock, 'GSLB')
    def test_save_config_not_called_on_state_absent(self):
        set_module_args(dict(
            nitro_user='******',
            nitro_pass='******',
            nsip='1.1.1.1',
            state='absent',
            save_config=False,
        ))
        from ansible.modules.network.netscaler import netscaler_gslb_site

        client_mock = Mock()

        m = Mock(return_value=client_mock)

        gslb_site_proxy_mock = Mock()

        with patch.multiple(
            'ansible.modules.network.netscaler.netscaler_gslb_site',
            get_nitro_client=m,
            gslb_site_exists=Mock(side_effect=[True, False]),
            nitro_exception=self.MockException,
            ensure_feature_is_enabled=Mock(),
            ConfigProxy=Mock(return_value=gslb_site_proxy_mock),
        ):
            self.module = netscaler_gslb_site
            self.exited()
            self.assertNotIn(call.save_config(), client_mock.mock_calls)
Ejemplo n.º 8
0
 def test_slxos_linkagg_group_members_absent(self, *args, **kwargs):
     set_module_args(dict(
         group='20',
         state='absent'
     ))
     result = self.execute_module(changed=True)
     self.assertEqual(
         result,
         {
             'commands': [
                 'no interface port-channel 20'
             ],
             'changed': True
         }
     )
     set_module_args(dict(
         group='10',
         state='absent'
     ))
     result = self.execute_module(changed=False)
     self.assertEqual(
         result,
         {
             'commands': [],
             'changed': False
         }
     )
    def test_graceful_login_error(self):
        set_module_args(dict(
            nitro_user='******',
            nitro_pass='******',
            nsip='1.1.1.1',
            state='present',
        ))
        from ansible.modules.network.netscaler import netscaler_gslb_site

        if sys.version_info[:2] == (2, 6):
            self.skipTest('requests library not available under python2.6')

        class MockException(Exception):
            pass
        client_mock = Mock()
        attrs = {'login.side_effect': requests.exceptions.SSLError}
        client_mock.configure_mock(**attrs)
        m = Mock(return_value=client_mock)
        with patch.multiple(
            'ansible.modules.network.netscaler.netscaler_gslb_site',
            get_nitro_client=m,
            nitro_exception=MockException,
        ):
            self.module = netscaler_gslb_site
            result = self.failed()
            self.assertTrue(result['msg'].startswith('SSL Error'), msg='SSL Error was not handled gracefully')
    def test_present_server_update_immutable_attribute(self):
        set_module_args(dict(
            nitro_user='******',
            nitro_pass='******',
            nsip='1.1.1.1',
            state='present',
        ))
        from ansible.modules.network.netscaler import netscaler_ssl_certkey

        client_mock = Mock()

        m = Mock(return_value=client_mock)

        ssl_certkey_proxy_attrs = {
            'diff_object.return_value': {},
        }
        ssl_certkey_proxy_mock = Mock()
        ssl_certkey_proxy_mock.configure_mock(**ssl_certkey_proxy_attrs)
        config_proxy_mock = Mock(return_value=ssl_certkey_proxy_mock)

        with patch.multiple(
            'ansible.modules.network.netscaler.netscaler_ssl_certkey',
            nitro_exception=self.MockException,
            get_nitro_client=m,
            diff_list=Mock(return_value={}),
            get_immutables_intersection=Mock(return_value=['domain']),
            key_exists=Mock(side_effect=[True, True]),
            key_identical=Mock(side_effect=[False, False]),
            ConfigProxy=config_proxy_mock,
        ):
            self.module = netscaler_ssl_certkey
            result = self.failed()
            self.assertEqual(result['msg'], 'Cannot update immutable attributes [\'domain\']')
            self.assertTrue(result['failed'])
Ejemplo n.º 11
0
 def test_bgp_add_network(self):
     neighbors = [dict(remote_as=173, neighbor='10.2.3.4')]
     set_module_args(dict(as_number=172, router_id='1.2.3.4',
                          neighbors=neighbors,
                          networks=['172.16.1.0/24', '172.16.2.0/24']))
     commands = ['router bgp 172 network 172.16.2.0 /24']
     self.execute_module(changed=True, commands=commands)
    def test_new_ssl_certkey_execution_flow(self):
        set_module_args(dict(
            nitro_user='******',
            nitro_pass='******',
            nsip='1.1.1.1',
            state='present',
        ))
        from ansible.modules.network.netscaler import netscaler_ssl_certkey

        client_mock = Mock()

        m = Mock(return_value=client_mock)

        ssl_certkey_proxy_attrs = {
            'diff_object.return_value': {},
        }
        ssl_certkey_proxy_mock = Mock()
        ssl_certkey_proxy_mock.configure_mock(**ssl_certkey_proxy_attrs)
        config_proxy_mock = Mock(return_value=ssl_certkey_proxy_mock)

        with patch.multiple(
            'ansible.modules.network.netscaler.netscaler_ssl_certkey',
            get_nitro_client=m,
            key_exists=Mock(side_effect=[False, True]),
            key_identical=Mock(side_effect=[True]),
            ConfigProxy=config_proxy_mock,
        ):
            self.module = netscaler_ssl_certkey
            self.exited()
            ssl_certkey_proxy_mock.assert_has_calls([call.add()])
    def test_absent_server_noop_flow(self):
        set_module_args(dict(
            nitro_user='******',
            nitro_pass='******',
            nsip='1.1.1.1',
            state='absent',
        ))
        from ansible.modules.network.netscaler import netscaler_ssl_certkey

        client_mock = Mock()

        m = Mock(return_value=client_mock)

        ssl_certkey_proxy_attrs = {
            'diff_object.return_value': {},
        }
        ssl_certkey_proxy_mock = Mock()
        ssl_certkey_proxy_mock.configure_mock(**ssl_certkey_proxy_attrs)
        config_proxy_mock = Mock(return_value=ssl_certkey_proxy_mock)

        with patch.multiple(
            'ansible.modules.network.netscaler.netscaler_ssl_certkey',
            get_nitro_client=m,
            diff_list=Mock(return_value={}),
            get_immutables_intersection=Mock(return_value=[]),
            key_exists=Mock(side_effect=[False, False]),
            key_identical=Mock(side_effect=[False, False]),
            ConfigProxy=config_proxy_mock,
        ):
            self.module = netscaler_ssl_certkey
            self.exited()
            ssl_certkey_proxy_mock.assert_not_called()
Ejemplo n.º 14
0
 def test_mlag_port_channel_add(self):
     set_module_args(dict(name='Mpo34', state='present',
                          members=['Eth1/9']))
     self.load_mlag_port_channel_fixture()
     commands = ['interface mlag-port-channel 34', 'exit',
                 'interface ethernet 1/9 mlag-channel-group 34 mode on']
     self.execute_module(changed=True, commands=commands)
    def test_save_config_not_called_on_state_absent(self):
        set_module_args(dict(
            nitro_user='******',
            nitro_pass='******',
            nsip='1.1.1.1',
            state='absent',
            save_config=False,
        ))
        from ansible.modules.network.netscaler import netscaler_ssl_certkey

        client_mock = Mock()

        m = Mock(return_value=client_mock)

        ssl_certkey_proxy_mock = Mock()

        with patch.multiple(
            'ansible.modules.network.netscaler.netscaler_ssl_certkey',
            get_nitro_client=m,
            key_exists=Mock(side_effect=[True, False]),
            ConfigProxy=Mock(return_value=ssl_certkey_proxy_mock),
        ):
            self.module = netscaler_ssl_certkey
            self.exited()
            self.assertNotIn(call.save_config(), client_mock.mock_calls)
Ejemplo n.º 16
0
 def test_vyos_system_clear_all(self):
     set_module_args(dict(state='absent'))
     commands = ['delete system host-name',
                 'delete system domain-search domain',
                 'delete system domain-name',
                 'delete system name-server']
     self.execute_module(changed=True, commands=commands)
Ejemplo n.º 17
0
 def test_port_channel_add(self):
     set_module_args(dict(name='Po23', state='present',
                          members=['Eth1/8']))
     self.load_port_channel_fixture()
     commands = ['interface port-channel 23', 'exit',
                 'interface ethernet 1/8 channel-group 23 mode on']
     self.execute_module(changed=True, commands=commands)
Ejemplo n.º 18
0
def test_create_lambda_if_not_exist():

    set_module_args(base_module_args)
    (boto3_conn_double, lambda_client_double) = make_mock_no_connection_connection(code_change_lambda_config)

    with patch.object(lda, 'boto3_conn', boto3_conn_double):
        try:
            lda.main()
        except SystemExit:
            pass

    # guard against calling other than for a lambda connection (e.g. IAM)
    assert(len(boto3_conn_double.mock_calls) > 0), "boto connections never used"
    assert(len(boto3_conn_double.mock_calls) < 2), "multiple boto connections used unexpectedly"
    assert(len(lambda_client_double.update_function_configuration.mock_calls) == 0), \
        "unexpectedly updated lambda configuration when should have only created"
    assert(len(lambda_client_double.update_function_code.mock_calls) == 0), \
        "update lambda function code when function should have been created only"
    assert(len(lambda_client_double.create_function.mock_calls) > 0), \
        "failed to call create_function "
    (create_args, create_kwargs) = lambda_client_double.create_function.call_args
    assert (len(create_kwargs) > 0), "expected create called with keyword args, none found"

    try:
        # For now I assume that we should NOT send an empty environment.  It might
        # be okay / better to explicitly send an empty environment.  However `None'
        # is not acceptable - mikedlr
        create_kwargs["Environment"]
        raise(Exception("Environment sent to boto when none expected"))
    except KeyError:
        pass  # We are happy, no environment is fine
Ejemplo n.º 19
0
 def test_ipl_add_peer(self):
     self._mlag_enabled = True
     set_module_args(dict(name="Po1", state='present',
                          vlan_interface='Vlan 1002',
                          peer_address='10.2.2.4'))
     commands = ['interface vlan 1002 ipl 1 peer-address 10.2.2.4']
     self.execute_module(changed=True, commands=commands)
Ejemplo n.º 20
0
    def test_absent_server_failed_delete(self):
        set_module_args(dict(
            nitro_user='******',
            nitro_pass='******',
            nsip='1.1.1.1',
            state='absent',
        ))
        from ansible.modules.network.netscaler import netscaler_server

        client_mock = Mock()

        m = Mock(return_value=client_mock)

        server_proxy_attrs = {
            'diff_object.return_value': {},
        }
        server_proxy_mock = Mock()
        server_proxy_mock.configure_mock(**server_proxy_attrs)
        config_proxy_mock = Mock(return_value=server_proxy_mock)

        with patch.multiple(
            'ansible.modules.network.netscaler.netscaler_server',
            nitro_exception=self.MockException,
            get_nitro_client=m,
            diff_list=Mock(return_value={}),
            get_immutables_intersection=Mock(return_value=[]),
            server_exists=Mock(side_effect=[True, True]),
            server_identical=Mock(side_effect=[False, False]),
            ConfigProxy=config_proxy_mock,
            do_state_change=Mock(return_value=Mock(errorcode=0))
        ):
            self.module = netscaler_server
            result = self.failed()
            self.assertEqual(result['msg'], 'Server seems to be present')
            self.assertTrue(result['failed'])
Ejemplo n.º 21
0
 def test_ironware_facts_gather_subset_config(self):
     set_module_args({'gather_subset': 'config'})
     result = self.execute_module()
     ansible_facts = result['ansible_facts']
     self.assertIn('default', ansible_facts['ansible_net_gather_subset'])
     self.assertIn('config', ansible_facts['ansible_net_gather_subset'])
     self.assertIn('ansible_net_config', ansible_facts)
Ejemplo n.º 22
0
    def test_disable_server_graceful(self):
        set_module_args(dict(
            nitro_user='******',
            nitro_pass='******',
            nsip='1.1.1.1',
            state='present',
            disabled=True,
            graceful=True
        ))
        from ansible.modules.network.netscaler import netscaler_server

        client_mock = Mock()

        m = Mock(return_value=client_mock)

        server_proxy_mock = Mock()

        d = {
            'graceful': True,
            'delay': 20,
        }
        with patch.multiple(
            'ansible.modules.network.netscaler.netscaler_server',
            nitro_exception=self.MockException,
            get_nitro_client=m,
            diff_list=Mock(return_value=d),
            get_immutables_intersection=Mock(return_value=[]),
            server_exists=Mock(side_effect=[True, True]),
            ConfigProxy=Mock(return_value=server_proxy_mock),
            do_state_change=Mock(return_value=Mock(errorcode=0))
        ):
            self.module = netscaler_server
            result = self.exited()
            self.assertEqual(d, {}, 'Graceful disable options were not discarded from the diff_list with the actual object')
Ejemplo n.º 23
0
    def test_save_config_not_called_on_state_present(self):
        set_module_args(dict(
            nitro_user='******',
            nitro_pass='******',
            nsip='1.1.1.1',
            state='present',
            save_config=False,
        ))
        from ansible.modules.network.netscaler import netscaler_server

        client_mock = Mock()

        m = Mock(return_value=client_mock)

        server_proxy_mock = Mock()

        with patch.multiple(
            'ansible.modules.network.netscaler.netscaler_server',
            get_nitro_client=m,
            server_exists=Mock(side_effect=[False, True]),
            ConfigProxy=Mock(return_value=server_proxy_mock),
            diff_list=Mock(return_value={}),
            do_state_change=Mock(return_value=Mock(errorcode=0))
        ):
            self.module = netscaler_server
            self.exited()
            self.assertNotIn(call.save_config(), client_mock.mock_calls)
    def test_update_agent_status_traps(self, *args):
        set_module_args(dict(
            sync_device_to_group='yes',
            device_group="foo",
            password='******',
            server='localhost',
            user='******'
        ))

        client = AnsibleF5Client(
            argument_spec=self.spec.argument_spec,
            supports_check_mode=self.spec.supports_check_mode,
            f5_product_name=self.spec.f5_product_name
        )
        mm = ModuleManager(client)

        # Override methods to force specific logic in the module to happen
        mm._device_group_exists = Mock(return_value=True)
        mm._sync_to_group_required = Mock(return_value=False)
        mm.execute_on_device = Mock(return_value=True)
        mm.read_current_from_device = Mock(return_value=None)

        mm._get_status_from_resource = Mock()
        mm._get_status_from_resource.side_effect = [
            'Changes Pending', 'Awaiting Initial Sync', 'In Sync'
        ]

        results = mm.exec_module()

        assert results['changed'] is True
Ejemplo n.º 25
0
 def test_iosxr_config_match_exact(self):
     lines = ['ip address 1.2.3.4 255.255.255.0', 'description test string',
              'shutdown']
     parents = ['interface GigabitEthernet0/0']
     set_module_args(dict(lines=lines, parents=parents, match='exact'))
     commands = parents + lines
     self.execute_module(changed=True, commands=commands, sort=False)
    def test_save_config_called_on_state_present(self):
        set_module_args(dict(
            nitro_user='******',
            nitro_pass='******',
            nsip='1.1.1.1',
            state='present',
        ))
        from ansible.modules.network.netscaler import netscaler_gslb_vserver

        client_mock = Mock()

        m = Mock(return_value=client_mock)

        gslb_service_proxy_mock = Mock()

        with patch.multiple(
            'ansible.modules.network.netscaler.netscaler_gslb_vserver',
            get_nitro_client=m,
            gslb_vserver_exists=Mock(side_effect=[False, True]),
            gslb_vserver_identical=Mock(side_effect=[True]),
            do_state_change=Mock(return_value=Mock(errorcode=0)),
            nitro_exception=self.MockException,
            ensure_feature_is_enabled=Mock(),
            ConfigProxy=Mock(return_value=gslb_service_proxy_mock),
        ):
            self.module = netscaler_gslb_vserver
            self.exited()
            self.assertIn(call.save_config(), client_mock.mock_calls)
    def test_new_gslb_vserver_execution_flow(self):
        set_module_args(dict(
            nitro_user='******',
            nitro_pass='******',
            nsip='1.1.1.1',
            state='present',
        ))
        from ansible.modules.network.netscaler import netscaler_gslb_vserver

        client_mock = Mock()

        m = Mock(return_value=client_mock)

        glsb_service_proxy_attrs = {
            'diff_object.return_value': {},
        }
        gslb_service_proxy_mock = Mock()
        gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs)
        config_proxy_mock = Mock(return_value=gslb_service_proxy_mock)

        with patch.multiple(
            'ansible.modules.network.netscaler.netscaler_gslb_vserver',
            get_nitro_client=m,
            gslb_vserver_exists=Mock(side_effect=[False, True]),
            gslb_vserver_identical=Mock(side_effect=[True]),
            nitro_exception=self.MockException,
            do_state_change=Mock(return_value=Mock(errorcode=0)),
            ensure_feature_is_enabled=Mock(),
            ConfigProxy=config_proxy_mock,
        ):
            self.module = netscaler_gslb_vserver
            self.exited()
            gslb_service_proxy_mock.assert_has_calls([call.add()])
Ejemplo n.º 28
0
    def test_do_state_change_fail(self):
        set_module_args(dict(
            nitro_user='******',
            nitro_pass='******',
            nsip='1.1.1.1',
            state='present',
        ))
        from ansible.modules.network.netscaler import netscaler_server

        client_mock = Mock()

        m = Mock(return_value=client_mock)

        server_proxy_mock = Mock()

        with patch.multiple(
            'ansible.modules.network.netscaler.netscaler_server',
            nitro_exception=self.MockException,
            get_nitro_client=m,
            server_exists=Mock(side_effect=[True, False]),
            ConfigProxy=Mock(return_value=server_proxy_mock),
            diff_list=Mock(return_value={}),
            do_state_change=Mock(return_value=Mock(errorcode=1, message='Failed on purpose'))
        ):
            self.module = netscaler_server
            result = self.failed()
            self.assertEqual(result['msg'], 'Error when setting disabled state. errorcode: 1 message: Failed on purpose')
Ejemplo n.º 29
0
 def test_dellos10_config_match_exact(self):
     lines = ['ip address 1.2.3.4/24', 'description test string',
              'shutdown']
     parents = ['interface ethernet1/1/2']
     set_module_args(dict(lines=lines, parents=parents, match='exact'))
     commands = parents + lines
     self.execute_module(changed=True, commands=commands, sort=False)
Ejemplo n.º 30
0
    def test_present_server_identical_flow(self):
        set_module_args(dict(
            nitro_user='******',
            nitro_pass='******',
            nsip='1.1.1.1',
            state='present',
        ))
        from ansible.modules.network.netscaler import netscaler_server

        client_mock = Mock()

        m = Mock(return_value=client_mock)

        server_proxy_attrs = {
            'diff_object.return_value': {},
        }
        server_proxy_mock = Mock()
        server_proxy_mock.configure_mock(**server_proxy_attrs)
        config_proxy_mock = Mock(return_value=server_proxy_mock)

        with patch.multiple(
            'ansible.modules.network.netscaler.netscaler_server',
            get_nitro_client=m,
            diff_list=Mock(return_value={}),
            get_immutables_intersection=Mock(return_value=[]),
            server_exists=Mock(side_effect=[True, True]),
            server_identical=Mock(side_effect=[True, True]),
            ConfigProxy=config_proxy_mock,
            do_state_change=Mock(return_value=Mock(errorcode=0))
        ):
            self.module = netscaler_server
            self.exited()
            server_proxy_mock.assert_not_called()
 def test_eth_ifc_update(self):
     set_module_args(
         dict(name='Eth1/5', state='present', ipv4='172.3.13.4/24'))
     commands = ['interface ethernet 1/5 ip address 172.3.13.4/24']
     self.load_eth_ifc_fixture()
     self._execute_module(changed=True, commands=commands)
Ejemplo n.º 32
0
 def test_cnos_l3_interface_ipv4_address(self, *args, **kwargs):
     set_module_args(dict(name='Ethernet 1/35', ipv4='192.168.4.1/24'))
     commands = [
         'interface Ethernet 1/35', 'ip address 192.168.4.1 255.255.255.0'
     ]
     result = self.execute_module(changed=True, commands=commands)
 def _run_module(self, module_args):
     set_module_args(module_args)
     with pytest.raises(AnsibleExitJson) as ex:
         self.module.main()
     return ex.value.args[0]
 def test_eth_ifc_remove(self):
     set_module_args(dict(name='Eth1/5', state='absent'))
     commands = ['interface ethernet 1/5 no ip address']
     self.load_eth_ifc_fixture()
     self._execute_module(changed=True, commands=commands)
 def test_eth_ifc_no_change(self):
     set_module_args(
         dict(name='Eth1/5', state='present', ipv4='172.3.12.4/24'))
     self.load_eth_ifc_fixture()
     self._execute_module(changed=False)
 def test_vlan_ifc_update(self):
     set_module_args(
         dict(name='Vlan 1002', state='present', ipv4='172.3.13.4/24'))
     commands = ['interface vlan 1002 ip address 172.3.13.4/24']
     self.load_vlan_ifc_fixture()
     self._execute_module(changed=True, commands=commands)
 def test_vlan_ifc_remove(self):
     set_module_args(dict(name='Vlan 1002', state='absent'))
     commands = ['interface vlan 1002 no ip address']
     self.load_vlan_ifc_fixture()
     self._execute_module(changed=True, commands=commands)
Ejemplo n.º 38
0
 def test_vyos_config_backup(self):
     set_module_args(dict(backup=True))
     result = self.execute_module()
     self.assertIn('__backup__', result)
Ejemplo n.º 39
0
 def test_edgeos_facts_invalid_subset(self):
     set_module_args(dict(gather_subset='cereal'))
     result = self.execute_module(failed=True)
Ejemplo n.º 40
0
 def test_vyos_config_lines(self):
     commands = ['set system host-name foo']
     set_module_args(dict(lines=commands))
     candidate = '\n'.join(commands)
     self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(candidate, self.running_config))
     self.execute_module(changed=True, commands=commands)
Ejemplo n.º 41
0
 def test_configure_dcb_wrr_mode_with_change(self):
     set_module_args(dict(interfaces=["Eth1/1"], tc=0, dcb=dict(mode="wrr", weight=10)))
     commands = [
         "interface ethernet 1/1 traffic-class 0 dcb ets wrr 10"
     ]
     self.execute_module(changed=True, commands=commands)
Ejemplo n.º 42
0
 def test_vyos_config_unchanged(self):
     src = load_fixture('vyos_config_config.cfg')
     self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(src, src))
     set_module_args(dict(src=src))
     self.execute_module()
Ejemplo n.º 43
0
    def test_configure_congestion_control_disabled_with_no_change(self):
        set_module_args(dict(state="disabled", interfaces=["Eth1/1"], tc=0))

        self.execute_module(changed=False)
Ejemplo n.º 44
0
 def _run_module_with_fail_json(self, module_args):
     set_module_args(module_args)
     with pytest.raises(AnsibleFailJson) as exc:
         self.module.main()
     result = exc.value.args[0]
     return result
 def test_ios_config_replace_config_requires_src(self):
     args = dict(replace='config')
     set_module_args(args)
     result = self.execute_module(failed=True)
Ejemplo n.º 46
0
 def test_configure_dcb_strict_mode_with_change(self):
     set_module_args(dict(interfaces=["Eth1/1"], tc=1, dcb=dict(mode="strict")))
     commands = [
         "interface ethernet 1/1 traffic-class 1 dcb ets strict"
     ]
     self.execute_module(changed=True, commands=commands)
 def test_ios_config_match_strict_requires_lines(self):
     args = dict(match='strict')
     set_module_args(args)
     result = self.execute_module(failed=True)
Ejemplo n.º 48
0
    def test_configure_dcb_wrr_mode_with_no_change(self):
        set_module_args(dict(interfaces=["Eth1/1"], tc=0, dcb=dict(mode="wrr", weight=12)))

        self.execute_module(changed=False)
 def test_ios_config_match_none(self):
     lines = ['hostname router']
     set_module_args(dict(lines=lines, match='none'))
     self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(
         '\n'.join(lines), self.running_config, diff_match='none'))
     self.execute_module(changed=True, commands=lines)
 def test_ios_config_replace_block_requires_lines(self):
     args = dict(replace='block')
     set_module_args(args)
     result = self.execute_module(failed=True)
Ejemplo n.º 51
0
    def test_iprange(self):
        """ Test iprange module with its flags src_range and dst_range """
        set_module_args({
            'chain': 'INPUT',
            'match': ['iprange'],
            'src_range': '192.168.1.100-192.168.1.199',
            'jump': 'ACCEPT'
        })

        commands_results = [
            (0, '', ''),
        ]

        with patch.object(basic.AnsibleModule, 'run_command') as run_command:
            run_command.side_effect = commands_results
            with self.assertRaises(AnsibleExitJson) as result:
                iptables.main()
                self.assertTrue(result.exception.args[0]['changed'])

        self.assertEqual(run_command.call_count, 1)
        self.assertEqual(run_command.call_args_list[0][0][0], [
            '/sbin/iptables',
            '-t',
            'filter',
            '-C',
            'INPUT',
            '-m',
            'iprange',
            '-j',
            'ACCEPT',
            '--src-range',
            '192.168.1.100-192.168.1.199',
        ])

        set_module_args({
            'chain': 'INPUT',
            'src_range': '192.168.1.100-192.168.1.199',
            'dst_range': '10.0.0.50-10.0.0.100',
            'jump': 'ACCEPT'
        })

        commands_results = [
            (0, '', ''),
        ]

        with patch.object(basic.AnsibleModule, 'run_command') as run_command:
            run_command.side_effect = commands_results
            with self.assertRaises(AnsibleExitJson) as result:
                iptables.main()
                self.assertTrue(result.exception.args[0]['changed'])

        self.assertEqual(run_command.call_count, 1)
        self.assertEqual(run_command.call_args_list[0][0][0], [
            '/sbin/iptables', '-t', 'filter', '-C', 'INPUT', '-j', 'ACCEPT',
            '-m', 'iprange', '--src-range', '192.168.1.100-192.168.1.199',
            '--dst-range', '10.0.0.50-10.0.0.100'
        ])

        set_module_args({
            'chain': 'INPUT',
            'dst_range': '10.0.0.50-10.0.0.100',
            'jump': 'ACCEPT'
        })

        commands_results = [
            (0, '', ''),
        ]

        with patch.object(basic.AnsibleModule, 'run_command') as run_command:
            run_command.side_effect = commands_results
            with self.assertRaises(AnsibleExitJson) as result:
                iptables.main()
                self.assertTrue(result.exception.args[0]['changed'])

        self.assertEqual(run_command.call_count, 1)
        self.assertEqual(run_command.call_args_list[0][0][0], [
            '/sbin/iptables', '-t', 'filter', '-C', 'INPUT', '-j', 'ACCEPT',
            '-m', 'iprange', '--dst-range', '10.0.0.50-10.0.0.100'
        ])
 def test_ios_config_src_and_parents_fails(self):
     args = dict(src='foo', parents='foo')
     set_module_args(args)
     result = self.execute_module(failed=True)
Ejemplo n.º 53
0
 def test_vyos_firewall_global_set_01_merged(self):
     set_module_args(
         dict(config=dict(
             validation='strict',
             config_trap=True,
             log_martians=True,
             syn_cookies=True,
             twa_hazards_protection=True,
             ping=dict(all=True, broadcast=True),
             state_policy=[
                 dict(
                     connection_type='established',
                     action='accept',
                     log=True,
                 ),
                 dict(connection_type='invalid', action='reject')
             ],
             route_redirects=[
                 dict(afi='ipv4',
                      ip_src_route=True,
                      icmp_redirects=dict(send=True, receive=False))
             ],
             group=dict(
                 address_group=[
                     dict(
                         name='MGMT-HOSTS',
                         description='This group has the Management hosts address lists',
                         members=[
                             dict(address='192.0.1.1'),
                             dict(address='192.0.1.3'),
                             dict(address='192.0.1.5')
                         ])
                 ],
                 network_group=[
                     dict(name='MGMT',
                          description='This group has the Management network addresses',
                          members=[dict(address='192.0.1.0/24')])
                 ])),
             state="merged"))
     commands = [
         "set firewall group address-group MGMT-HOSTS address 192.0.1.1",
         "set firewall group address-group MGMT-HOSTS address 192.0.1.3",
         "set firewall group address-group MGMT-HOSTS address 192.0.1.5",
         "set firewall group address-group MGMT-HOSTS description 'This group has the Management hosts address lists'",
         "set firewall group address-group MGMT-HOSTS",
         "set firewall group network-group MGMT network 192.0.1.0/24",
         "set firewall group network-group MGMT description 'This group has the Management network addresses'",
         "set firewall group network-group MGMT",
         "set firewall ip-src-route 'enable'",
         "set firewall receive-redirects 'disable'",
         "set firewall send-redirects 'enable'",
         "set firewall config-trap 'enable'",
         "set firewall state-policy established action 'accept'",
         "set firewall state-policy established log 'enable'",
         "set firewall state-policy invalid action 'reject'",
         "set firewall broadcast-ping 'enable'",
         "set firewall all-ping 'enable'",
         "set firewall log-martians 'enable'",
         "set firewall twa-hazards-protection 'enable'",
         "set firewall syn-cookies 'enable'",
         "set firewall source-validation 'strict'"
     ]
     self.execute_module(changed=True, commands=commands)
 def test_ios_config_save_changed_false(self):
     set_module_args(dict(save_when='changed'))
     self.execute_module(changed=False)
     self.assertEqual(self.run_commands.call_count, 0)
     self.assertEqual(self.get_config.call_count, 0)
     self.assertEqual(self.conn.edit_config.call_count, 0)
Ejemplo n.º 55
0
 def test_aireos_config_before_after_no_change(self):
     set_module_args(
         dict(lines=['sysname router'],
              before=['test1', 'test2'],
              after=['test3', 'test4']))
     self.execute_module()
Ejemplo n.º 56
0
 def test_without_required_parameters(self):
     """Failure must occurs when all parameters are missing"""
     with self.assertRaises(AnsibleFailJson):
         set_module_args({})
         iptables.main()
Ejemplo n.º 57
0
 def test_aireos_config_unchanged(self):
     src = load_fixture('aireos_config_config.cfg')
     set_module_args(dict(src=src))
     self.execute_module()
Ejemplo n.º 58
0
 def test_vyos_firewall_global_set_01_deleted(self):
     set_module_args(dict(config=dict(), state="deleted"))
     commands = ["delete firewall "]
     self.execute_module(changed=True, commands=commands)
Ejemplo n.º 59
0
 def test_aireos_config_match_none(self):
     lines = ['sysname router', 'interface create mtc-1 1']
     set_module_args(dict(lines=lines, match='none'))
     self.execute_module(changed=True, commands=lines, sort=False)
Ejemplo n.º 60
0
 def test_aireos_config_after(self):
     set_module_args(dict(lines=['sysname foo'], after=['test1', 'test2']))
     commands = ['sysname foo', 'test1', 'test2']
     self.execute_module(changed=True, commands=commands, sort=False)