def test_create_snat_pool_idempotent(self, *args): set_module_args( dict(name='asdasd', state='present', members=['1.1.1.1', '2.2.2.2'], provider=dict(server='localhost', password='******', user='******'))) current = ApiParameters(params=load_fixture('load_ltm_snatpool.json')) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode, required_if=self.spec.required_if) mm = ModuleManager(module=module) # Override methods to force specific logic in the module to happen mm.exists = Mock(side_effect=[True, True]) mm.read_current_from_device = Mock(return_value=current) results = mm.exec_module() assert results['changed'] is False
def test_create_monitor(self, *args): set_module_args( dict(name='foo', ip='10.10.10.10', port=80, interval=20, timeout=30, server='localhost', password='******', user='******')) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode) # Override methods in the specific type of manager mm = ModuleManager(module=module) mm.exists = Mock(side_effect=[False, True]) mm.create_on_device = Mock(return_value=True) mm.module_provisioned = Mock(return_value=True) results = mm.exec_module() assert results['changed'] is True
def test_update_interval_larger_than_existing_timeout(self, *args): set_module_args( dict(name='asdf', interval=30, partition='Common', provider=dict(server='localhost', password='******', user='******'))) current = Parameters(params=load_fixture('load_ltm_monitor_udp.json')) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode) # Override methods in the specific type of manager 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) with pytest.raises(F5ModuleError) as ex: mm.exec_module() assert "must be less than" in str(ex.value)
def test_create(self, *args): # Configure the arguments that would be sent to the Ansible module set_module_args( dict(name='foo', parent='bar', description='foo', collect_geo=True, collect_ip=True, provider=dict(server='localhost', password='******', user='******'))) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode) mm = ModuleManager(module=module) # Override methods to force specific logic in the module to happen mm.exists = Mock(return_value=False) mm.create_on_device = Mock(return_value=True) results = mm.exec_module() assert results['changed'] is True
def test_update_route_domain(self, *args): set_module_args( dict(name='foo', route_domain=1, server='localhost', password='******', user='******')) current = ApiParameters( params=load_fixture('load_tm_auth_partition.json')) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode) # Override methods in the specific type of manager 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['route_domain'] == 1
def test_create_with_description(self, *args): set_module_args( dict(name='foo', parent='/Common/gateway-icmp', interval=20, timeout=30, time_until_up=60, description='Important Description', server='localhost', password='******', user='******')) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode) # Override methods in the specific type of manager mm = ModuleManager(module=module) mm.exists = Mock(side_effect=[False, True]) mm.create_on_device = Mock(return_value=True) results = mm.exec_module() assert results['changed'] is True
def test_create_monitor(self, *args): set_module_args( dict(name='foo', address='10.10.10.10', service_port=80, route_domain=20, tsig_key='key1', partition='Common', server='localhost', password='******', user='******')) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode) # Override methods in the specific type of manager mm = ModuleManager(module=module) mm.exists = Mock(side_effect=[False, True]) mm.create_on_device = Mock(return_value=True) results = mm.exec_module() assert results['changed'] is True
def test_update_generic_router(self, *args): set_module_args(dict( name='messagerouter', use_local_connection='no', mirror='yes', routes=['/Common/example'], provider=dict( server='localhost', password='******', user='******' ) )) current = ApiParameters(params=load_fixture('load_generic_router.json')) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode ) # Override methods in the specific type of manager gm = GenericModuleManager(module=module) gm.exists = Mock(return_value=True) gm.update_on_device = Mock(return_value=True) gm.read_current_from_device = Mock(return_value=current) mm = ModuleManager(module=module) mm.version_less_than_14 = Mock(return_value=False) mm.get_manager = Mock(return_value=gm) results = mm.exec_module() assert results['changed'] is True assert results['use_local_connection'] == 'no' assert results['mirror'] == 'yes' assert results['routes'] == ['/Common/example']
def test_create(self, *args): set_module_args(dict( content='{ "foo": "bar" }', provider=dict( server='localhost', password='******', user='******' ) )) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode, required_if=self.spec.required_if ) mm = ModuleManager(module=module) # Override methods to force specific logic in the module to happen mm.exists = Mock(return_value=False) mm.upsert_on_device = Mock(return_value=True) results = mm.exec_module() assert results['changed'] is True
def test_create(self, *args): set_module_args( dict(lines=[ 'bgp graceful-restart restart-time 120', 'redistribute kernel route-map rhi', 'neighbor 10.10.10.11 remote-as 65000', 'neighbor 10.10.10.11 fall-over bfd', 'neighbor 10.10.10.11 remote-as 65000', 'neighbor 10.10.10.11 fall-over bfd' ], parents='router bgp 64664', before='bfd slow-timer 2000', match='exact', provider=dict(server='localhost', password='******', user='******'))) current = load_fixture('load_imish_output_1.json') module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode, mutually_exclusive=self.spec.mutually_exclusive, required_if=self.spec.required_if, add_file_common_args=self.spec.add_file_common_args) # Override methods in the specific type of manager mm = ModuleManager(module=module) mm.read_current_from_device = Mock( return_value=current['commandResult']) mm.upload_file_to_device = Mock(return_value=True) mm.load_config_on_device = Mock(return_value=True) mm.remove_uploaded_file_from_device = Mock(return_value=True) results = mm.exec_module() assert results['changed'] is True
def test_create(self, *args): set_module_args(dict( license_key='XXXX-XXXX-XXXX-XXXX-XXXX', accept_eula=True, password='******', server='localhost', user='******' )) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode ) mm = ModuleManager(module=module) # Override methods to force specific logic in the module to happen mm.exists = Mock(side_effect=[False, True]) mm.create_on_device = Mock(return_value=True) mm.wait_for_initial_license_activation = Mock(return_value=True) mm.wait_for_utility_license_activation = Mock(return_value=True) results = mm.exec_module() assert results['changed'] is True
def test_create_partition_idempotent(self, *args): set_module_args(dict( name='foo', description='my description', server='localhost', password='******', user='******' )) current = ApiParameters(params=load_fixture('load_tm_auth_partition.json')) current.update({'folder_description': 'my description'}) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode ) # Override methods in the specific type of manager 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_get_facts(self, *args): set_module_args( dict(gather_subset=['system-info'], password='******', server='localhost', user='******')) fixture1 = load_fixture('load_shared_system_setup_1.json') module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode) tm = SystemInfoFactManager(module=module) tm.read_collection_from_device = Mock(return_value=fixture1) # Override methods to force specific logic in the module to happen mm = ModuleManager(module=module) mm.get_manager = Mock(return_value=tm) results = mm.exec_module() assert results['changed'] is True assert 'system_info' in results
def test_create_snat_pool(self, *args): set_module_args( dict(name='my-snat-pool', state='present', members=['10.10.10.10', '20.20.20.20'], password='******', server='localhost', user='******')) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode) mm = ModuleManager(module=module) # Override methods to force specific logic in the module to happen mm.exists = Mock(side_effect=[False, True]) mm.create_on_device = Mock(return_value=True) results = mm.exec_module() assert results['changed'] is True assert len(results['members']) == 2 assert '/Common/10.10.10.10' in results['members'] assert '/Common/20.20.20.20' in results['members']
def test_update(self, *args): set_module_args( dict(enforced_policy='enforced1', staged_policy='staged1', service_policy='service1', provider=dict(server='localhost', password='******', user='******'))) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode) current = ApiParameters( params=load_fixture('load_security_firewall_global_rules_1.json')) # Override methods to force specific logic in the module to happen mm = ModuleManager(module=module) 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 True
def test_create_iapp_template(self, *args): # Configure the arguments that would be sent to the Ansible module set_module_args(dict( content=load_fixture('basic-iapp.tmpl'), provider=dict( server='localhost', password='******', user='******' ) )) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode ) mm = ModuleManager(module=module) # Override methods to force specific logic in the module to happen mm.exists = Mock(side_effect=[False, True]) mm.create_on_device = Mock(return_value=True) results = mm.exec_module() assert results['changed'] is True
def test_create(self, *args): set_module_args( dict(name='foo', description='this is a description', rules=['rule1', 'rule2', 'rule3'], provider=dict(server='localhost', password='******', user='******'))) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode) mm = ModuleManager(module=module) # Override methods to force specific logic in the module to happen mm.exists = Mock(side_effect=[False, True]) mm.create_on_device = Mock(return_value=True) results = mm.exec_module() assert results['changed'] is True assert 'rules' in results assert len(results['rules']) == 3 assert results['description'] == 'this is a description'
def test_create_policy(self, *args): set_module_args( dict(name="foo", description='foo description', destinations=['dest1', 'dest2'], state='present', provider=dict(server='localhost', password='******', user='******'))) 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=False) mm.create_on_device = Mock(return_value=True) results = mm.exec_module() assert results['changed'] is True assert results['description'] == 'foo description' assert results['destinations'] == ['/Common/dest1', '/Common/dest2']
def test_update_expired_cert(self, *args): set_module_args( dict(days_valid=60, provider=dict(server='localhost', password='******', user='******', transport='cli', server_port=22))) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode, required_if=self.spec.required_if) mm = ModuleManager(module=module) mm.expired = Mock(return_value=True) mm.update_certificate = Mock(return_value=True) mm.restart_daemon = Mock(return_value=True) mm.copy_files_to_trusted = Mock(return_value=True) results = mm.exec_module() assert results['changed'] is True assert results['days_valid'] == 60
def test_update_agent_status_traps(self, *args): set_module_args( dict(agent_status_traps='enabled', provider=dict(server='localhost', password='******', user='******'))) # Configure the parameters that would be returned by querying the # remote device current = ApiParameters(params=dict(agent_status_traps='disabled')) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode) mm = ModuleManager(module=module) # Override methods to force specific logic in the module to happen 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 True assert results['agent_status_traps'] == 'enabled'
def test_create(self, *args): set_module_args( dict(name='foo', description='this is a description', addresses=['1.1.1.1', '2.2.2.2'], address_ranges=['3.3.3.3-4.4.4.4', '5.5.5.5-6.6.6.6'], address_lists=['/Common/foo', 'foo'], geo_locations=[ dict(country='US', region='Los Angeles'), dict(country='China'), dict(country='EU') ], fqdns=['google.com', 'mit.edu'], password='******', server='localhost', user='******')) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode) mm = ModuleManager(module=module) # Override methods to force specific logic in the module to happen mm.exists = Mock(return_value=False) mm.create_on_device = Mock(return_value=True) results = mm.exec_module() assert results['changed'] is True assert 'addresses' in results assert 'address_lists' in results assert 'address_ranges' in results assert len(results['addresses']) == 2 assert len(results['address_ranges']) == 2 assert len(results['address_lists']) == 2 assert results['description'] == 'this is a description'
def test_create_service(self, *args): parameters = load_fixture( 'create_iapp_service_parameters_f5_http.json') set_module_args( dict(name='foo', template='f5.http', parameters=parameters, state='present', password='******', server='localhost', user='******')) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode) mm = ModuleManager(module=module) # Override methods to force specific logic in the module to happen mm.exists = Mock(return_value=False) mm.create_on_device = Mock(return_value=True) mm.template_exists = Mock(return_value=True) results = mm.exec_module() assert results['changed'] is True
def test_command_with_commas(self, *args): set_module_args( dict(commands=""" tmsh create /auth ldap system-auth {bind-dn uid=binduser, cn=users,dc=domain,dc=com bind-pw $ENCRYPTEDPW check-roles-group enabled search-base-dn cn=users,dc=domain,dc=com servers add { ldap.server.com } } """, provider=dict(server='localhost', password='******', user='******'))) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode) m1 = V2Manager(module=module) m1.execute_on_device = Mock(return_value=['resp1', 'resp2']) mm = ModuleManager(module=module) mm.get_manager = Mock(return_value=m1) results = mm.exec_module() assert results['changed'] is True assert m1.execute_on_device.call_count == 2
def test_create_route_to_vlan(self, *args): set_module_args( dict(name='test-route', state='present', destination='10.10.10.10', netmask='255.255.255.255', vlan="test-vlan", provider=dict(server='localhost', password='******', user='******'))) module = AnsibleModule( argument_spec=self.spec.argument_spec, mutually_exclusive=self.spec.mutually_exclusive, supports_check_mode=self.spec.supports_check_mode) mm = ModuleManager(module=module) # Override methods to force specific logic in the module to happen mm.exists = Mock(return_value=False) mm.create_on_device = Mock(return_value=True) results = mm.exec_module() assert results['changed'] is True assert results['vlan'] == '/Common/test-vlan'
def test_absent_timezone(self, *args): set_module_args( dict(timezone='', state='absent', provider=dict(server='localhost', password='******', user='******'))) # Configure the parameters that would be returned by querying the # remote device current = Parameters(params=load_fixture('load_ntp.json')) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode, required_one_of=self.spec.required_one_of) mm = ModuleManager(module=module) # Override methods to force specific logic in the module to happen mm.absent_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_modify_profiles(self, *args): set_module_args( dict(name="my-virtual-server", partition="Common", password="******", profiles=['http', 'clientssl'], 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_2.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) 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_create_node(self, *args): set_module_args( dict(host='10.20.30.40', name='mytestserver', monitors=['/Common/icmp'], partition='Common', state='present', provider=dict(server='localhost', password='******', user='******'))) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode, mutually_exclusive=self.spec.mutually_exclusive) mm = ModuleManager(module=module) # Override methods to force specific logic in the module to happen mm.exists = Mock(side_effect=[False, True]) mm.create_on_device = Mock(return_value=True) results = mm.exec_module() assert results['changed'] is True
def test_create_vlan_untagged_interfaces(self, *args): set_module_args(dict( name='somevlan', untagged_interface=['2.1', '1.1'], server='localhost', password='******', user='******', partition='Common', )) 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.create_on_device = Mock(return_value=True) mm.exists = Mock(return_value=False) results = mm.exec_module() assert results['changed'] is True assert results['untagged_interfaces'] == ['1.1', '2.1']
def test_update_time_until_up(self, *args): set_module_args( dict(name='asdf', time_until_up=300, partition='Common', provider=dict(server='localhost', password='******', user='******'))) current = Parameters(params=load_fixture('load_ltm_monitor_udp.json')) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode) # Override methods in the specific type of manager 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['time_until_up'] == 300
def test_create_pool_monitor_and_list_custom_partition(self, *args): set_module_args( dict(pool='fake_pool', partition='Testing', monitor_type='and_list', monitors=['tcp', 'http'], server='localhost', password='******', user='******')) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode) mm = ModuleManager(module=module) mm.create_on_device = Mock(return_value=True) mm.exists = Mock(return_value=False) results = mm.exec_module() assert results['changed'] is True assert results['name'] == 'fake_pool' assert results['monitors'] == ['/Testing/http', '/Testing/tcp'] assert results['monitor_type'] == 'and_list'