def test_modify_vlans_idempotent(self, *args):
        set_module_args(
            dict(name="my-virtual-server",
                 partition="Common",
                 disabled_vlans=["net1"],
                 state="present",
                 provider=dict(server='localhost',
                               password='******',
                               user='******')))

        # Configure the parameters that would be returned by querying the
        # remote device
        current = ApiParameters(params=load_fixture('load_ltm_virtual_2.json'))

        module = AnsibleModule(
            argument_spec=self.spec.argument_spec,
            supports_check_mode=self.spec.supports_check_mode,
            mutually_exclusive=self.spec.mutually_exclusive)

        # Override methods to force specific logic in the module to happen
        mm = ModuleManager(module=module)
        mm.exists = Mock(return_value=True)
        mm.read_current_from_device = Mock(return_value=current)

        results = mm.exec_module()

        assert results['changed'] is False
 def test_destination_mutex_2(self):
     args = dict(
         destination='1.1.1.1%2'
     )
     p = ApiParameters(params=args)
     assert p.destination_tuple.ip == '1.1.1.1'
     assert p.destination_tuple.route_domain == 2
    def test_enable_vs_that_is_already_enabled(self, *args):
        set_module_args(
            dict(all_profiles=['http', 'clientssl'],
                 description="Test Virtual Server",
                 destination="10.10.10.10",
                 name="my-snat-pool",
                 partition="Common",
                 port="443",
                 snat="Automap",
                 state="absent",
                 provider=dict(server='localhost',
                               password='******',
                               user='******')))

        # Configure the parameters that would be returned by querying the
        # remote device
        current = ApiParameters(dict(agent_status_traps='disabled'))

        module = AnsibleModule(
            argument_spec=self.spec.argument_spec,
            supports_check_mode=self.spec.supports_check_mode,
            mutually_exclusive=self.spec.mutually_exclusive)

        # Override methods to force specific logic in the module to happen
        mm = ModuleManager(module=module)
        mm.exists = Mock(return_value=False)
        mm.update_on_device = Mock(return_value=True)
        mm.read_current_from_device = Mock(return_value=current)
        results = mm.exec_module()

        assert results['changed'] is False
 def test_destination_mutex_3(self):
     args = dict(
         destination='1.1.1.1:80'
     )
     p = ApiParameters(params=args)
     assert p.destination_tuple.ip == '1.1.1.1'
     assert p.destination_tuple.port == 80
    def test_modify_port_idempotent(self, *args):
        set_module_args(dict(
            name="my-virtual-server",
            partition="Common",
            password="******",
            port="443",
            server="localhost",
            state="present",
            user="******",
            validate_certs="no"
        ))

        # Configure the parameters that would be returned by querying the
        # remote device
        current = ApiParameters(params=load_fixture('load_ltm_virtual_1.json'))

        module = AnsibleModule(
            argument_spec=self.spec.argument_spec,
            supports_check_mode=self.spec.supports_check_mode
        )

        # Override methods to force specific logic in the module to happen
        mm = ModuleManager(module=module)
        mm.exists = Mock(return_value=True)
        mm.read_current_from_device = Mock(return_value=current)
        results = mm.exec_module()

        assert results['changed'] is False
 def test_destination_mutex_11(self):
     args = dict(
         destination='2700:bc00:1f10:101::6.80'
     )
     p = ApiParameters(params=args)
     assert p.destination_tuple.ip == '2700:bc00:1f10:101::6'
     assert p.destination_tuple.port == 80
 def test_destination_mutex_10(self):
     args = dict(
         destination='2700:bc00:1f10:101::6%2'
     )
     p = ApiParameters(params=args)
     assert p.destination_tuple.ip == '2700:bc00:1f10:101::6'
     assert p.destination_tuple.route_domain == 2
 def test_api_destination_mutex_8(self):
     args = dict(
         destination='/Common/1.1.1.1%2:80'
     )
     p = ApiParameters(params=args)
     assert p.destination_tuple.ip == '1.1.1.1'
     assert p.destination_tuple.port == 80
     assert p.destination_tuple.route_domain == 2
Example #9
0
    def test_modify_profiles(self, *args):
        set_module_args(dict(
            name="my-virtual-server",
            partition="Common",
            profiles=[
                'http', 'clientssl'
            ],
            state="present",
            provider=dict(
                server='localhost',
                password='******',
                user='******'
            )
        ))

        # Configure the parameters that would be returned by querying the
        # remote device
        current = ApiParameters(params=load_fixture('load_ltm_virtual_2.json'))
        module = AnsibleModule(
            argument_spec=self.spec.argument_spec,
            supports_check_mode=self.spec.supports_check_mode,
            mutually_exclusive=self.spec.mutually_exclusive
        )

        # Override methods to force specific logic in the module to happen
        mm = ModuleManager(module=module)
        mm.exists = Mock(return_value=True)
        mm.read_current_from_device = Mock(return_value=current)
        mm.update_on_device = Mock(return_value=True)

        results = mm.exec_module()

        assert results['changed'] is True
        assert len(results['profiles']) == 2
        assert 'name' in results['profiles'][0]
        assert 'context' in results['profiles'][0]
        assert results['profiles'][0]['name'] == 'http'
        assert results['profiles'][0]['context'] == 'all'
        assert 'name' in results['profiles'][1]
        assert 'context' in results['profiles'][1]
        assert results['profiles'][1]['name'] == 'clientssl'
        assert results['profiles'][1]['context'] == 'clientside'
 def test_api_destination_mutex_5(self):
     args = dict(destination='/Common/1.1.1.1')
     p = ApiParameters(params=args)
     assert p.destination_tuple.ip == '1.1.1.1'
    def test_update_virtual_server(self, *args):
        set_module_args(
            dict(profiles=[dict(name='http'),
                           dict(name='clientssl')],
                 description="foo virtual",
                 destination="1.1.1.1",
                 name="my-virtual-server",
                 partition="Common",
                 port="8443",
                 snat="snat-pool1",
                 state="disabled",
                 source='1.2.3.4/32',
                 irules=['irule1', 'irule2'],
                 policies=['policy1', 'policy2'],
                 enabled_vlans=['vlan1', 'vlan2'],
                 pool='my-pool',
                 default_persistence_profile='source_addr',
                 fallback_persistence_profile='dest_addr',
                 provider=dict(server='localhost',
                               password='******',
                               user='******')))

        # Configure the parameters that would be returned by querying the
        # remote device
        current = ApiParameters(params=load_fixture('load_ltm_virtual_3.json'))

        module = AnsibleModule(
            argument_spec=self.spec.argument_spec,
            supports_check_mode=self.spec.supports_check_mode,
            mutually_exclusive=self.spec.mutually_exclusive)

        # Override methods to force specific logic in the module to happen
        mm = ModuleManager(module=module)
        mm.exists = Mock(return_value=True)
        mm.read_current_from_device = Mock(return_value=current)
        mm.update_on_device = Mock(return_value=True)

        results = mm.exec_module()

        assert results['changed'] is True
        assert results['source'] == '1.2.3.4/32'
        assert results['description'] == 'foo virtual'
        assert results['snat'] == '/Common/snat-pool1'
        assert results['destination'] == '1.1.1.1'
        assert results['port'] == 8443
        assert results['default_persistence_profile'] == '/Common/source_addr'
        assert results['fallback_persistence_profile'] == '/Common/dest_addr'

        # policies
        assert len(results['policies']) == 2
        assert '/Common/policy1' in results['policies']
        assert '/Common/policy2' in results['policies']

        # irules
        assert len(results['irules']) == 2
        assert '/Common/irule1' in results['irules']
        assert '/Common/irule2' in results['irules']

        # vlans
        assert len(results['enabled_vlans']) == 2
        assert '/Common/vlan1' in results['enabled_vlans']
        assert '/Common/vlan2' in results['enabled_vlans']

        # profiles
        assert len(results['profiles']) == 2
        assert 'name' in results['profiles'][0]
        assert 'context' in results['profiles'][0]
        assert results['profiles'][0]['name'] == 'http'
        assert results['profiles'][0]['context'] == 'all'
        assert 'name' in results['profiles'][1]
        assert 'context' in results['profiles'][1]
        assert results['profiles'][1]['name'] == 'clientssl'
        assert results['profiles'][1]['context'] == 'clientside'
 def test_api_parameters_variables(self):
     args = {
         "kind":
         "tm:ltm:virtual:virtualstate",
         "name":
         "my-virtual-server",
         "partition":
         "Common",
         "fullPath":
         "/Common/my-virtual-server",
         "generation":
         54,
         "selfLink":
         "https://localhost/mgmt/tm/ltm/virtual/~Common~my-virtual-server?expandSubcollections=true&ver=12.1.2",
         "addressStatus":
         "yes",
         "autoLasthop":
         "default",
         "cmpEnabled":
         "yes",
         "connectionLimit":
         0,
         "description":
         "Test Virtual Server",
         "destination":
         "/Common/10.10.10.10:443",
         "enabled":
         True,
         "gtmScore":
         0,
         "ipProtocol":
         "tcp",
         "mask":
         "255.255.255.255",
         "mirror":
         "disabled",
         "mobileAppTunnel":
         "disabled",
         "nat64":
         "disabled",
         "rateLimit":
         "disabled",
         "rateLimitDstMask":
         0,
         "rateLimitMode":
         "object",
         "rateLimitSrcMask":
         0,
         "serviceDownImmediateAction":
         "none",
         "source":
         "0.0.0.0/0",
         "sourceAddressTranslation": {
             "type": "automap"
         },
         "sourcePort":
         "preserve",
         "synCookieStatus":
         "not-activated",
         "translateAddress":
         "enabled",
         "translatePort":
         "enabled",
         "vlansEnabled":
         True,
         "vsIndex":
         3,
         "vlans": ["/Common/net1"],
         "vlansReference": [{
             "link":
             "https://localhost/mgmt/tm/net/vlan/~Common~net1?ver=12.1.2"
         }],
         "policiesReference": {
             "link":
             "https://localhost/mgmt/tm/ltm/virtual/~Common~my-virtual-server/policies?ver=12.1.2",
             "isSubcollection": True
         },
         "profilesReference": {
             "link":
             "https://localhost/mgmt/tm/ltm/virtual/~Common~my-virtual-server/profiles?ver=12.1.2",
             "isSubcollection":
             True,
             "items": [{
                 "kind": "tm:ltm:virtual:profiles:profilesstate",
                 "name": "http",
                 "partition": "Common",
                 "fullPath": "/Common/http",
                 "generation": 54,
                 "selfLink":
                 "https://localhost/mgmt/tm/ltm/virtual/~Common~my-virtual-server/profiles/~Common~http?ver=12.1.2",
                 "context": "all",
                 "nameReference": {
                     "link":
                     "https://localhost/mgmt/tm/ltm/profile/http/~Common~http?ver=12.1.2"
                 }
             }, {
                 "kind": "tm:ltm:virtual:profiles:profilesstate",
                 "name": "serverssl",
                 "partition": "Common",
                 "fullPath": "/Common/serverssl",
                 "generation": 54,
                 "selfLink":
                 "https://localhost/mgmt/tm/ltm/virtual/~Common~my-virtual-server/profiles/~Common~serverssl?ver=12.1.2",
                 "context": "serverside",
                 "nameReference": {
                     "link":
                     "https://localhost/mgmt/tm/ltm/profile/server-ssl/~Common~serverssl?ver=12.1.2"
                 }
             }, {
                 "kind": "tm:ltm:virtual:profiles:profilesstate",
                 "name": "tcp",
                 "partition": "Common",
                 "fullPath": "/Common/tcp",
                 "generation": 54,
                 "selfLink":
                 "https://localhost/mgmt/tm/ltm/virtual/~Common~my-virtual-server/profiles/~Common~tcp?ver=12.1.2",
                 "context": "all",
                 "nameReference": {
                     "link":
                     "https://localhost/mgmt/tm/ltm/profile/tcp/~Common~tcp?ver=12.1.2"
                 }
             }]
         }
     }
     p = ApiParameters(params=args)
     assert p.name == 'my-virtual-server'
     assert p.partition == 'Common'
     assert p.port == 443
     assert p.destination == '/Common/10.10.10.10:443'
     assert p.snat == {'type': 'automap'}
     assert p.description == 'Test Virtual Server'
     assert 'context' in p.profiles[0]
     assert 'name' in p.profiles[0]
     assert 'fullPath' in p.profiles[0]
     assert p.profiles[0]['context'] == 'all'
     assert p.profiles[0]['name'] == 'http'
     assert p.profiles[0]['fullPath'] == '/Common/http'
     assert '/Common/net1' in p.vlans