mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-09-30 21:43:22 -07:00
Remove hetzner content. (#1368)
This commit is contained in:
parent
8e3931d9b0
commit
eab9a43d2e
18 changed files with 27 additions and 3192 deletions
|
@ -1,219 +0,0 @@
|
|||
# (c) 2020 Felix Fontein <felix@fontein.de>
|
||||
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
|
||||
from __future__ import (absolute_import, division, print_function)
|
||||
__metaclass__ = type
|
||||
|
||||
|
||||
from ansible_collections.community.internal_test_tools.tests.unit.utils.fetch_url_module_framework import (
|
||||
FetchUrlCall,
|
||||
BaseTestModule,
|
||||
)
|
||||
|
||||
from ansible_collections.community.general.plugins.module_utils.hetzner import BASE_URL
|
||||
from ansible_collections.community.general.plugins.modules.net_tools import hetzner_failover_ip
|
||||
|
||||
|
||||
class TestHetznerFailoverIP(BaseTestModule):
|
||||
MOCK_ANSIBLE_MODULEUTILS_BASIC_ANSIBLEMODULE = 'ansible_collections.community.general.plugins.modules.net_tools.hetzner_failover_ip.AnsibleModule'
|
||||
MOCK_ANSIBLE_MODULEUTILS_URLS_FETCH_URL = 'ansible_collections.community.general.plugins.module_utils.hetzner.fetch_url'
|
||||
|
||||
# Tests for state idempotence (routed and unrouted)
|
||||
|
||||
def test_unrouted(self, mocker):
|
||||
result = self.run_module_success(mocker, hetzner_failover_ip, {
|
||||
'hetzner_user': '',
|
||||
'hetzner_password': '',
|
||||
'failover_ip': '1.2.3.4',
|
||||
'state': 'unrouted',
|
||||
}, [
|
||||
FetchUrlCall('GET', 200)
|
||||
.result_json({
|
||||
'failover': {
|
||||
'ip': '1.2.3.4',
|
||||
'netmask': '255.255.255.255',
|
||||
'server_ip': '2.3.4.5',
|
||||
'server_number': 2345,
|
||||
'active_server_ip': None,
|
||||
},
|
||||
})
|
||||
.expect_url('{0}/failover/1.2.3.4'.format(BASE_URL)),
|
||||
])
|
||||
assert result['changed'] is False
|
||||
assert result['value'] is None
|
||||
assert result['state'] == 'unrouted'
|
||||
|
||||
def test_routed(self, mocker):
|
||||
result = self.run_module_success(mocker, hetzner_failover_ip, {
|
||||
'hetzner_user': '',
|
||||
'hetzner_password': '',
|
||||
'failover_ip': '1.2.3.4',
|
||||
'state': 'routed',
|
||||
'value': '4.3.2.1',
|
||||
}, [
|
||||
FetchUrlCall('GET', 200)
|
||||
.result_json({
|
||||
'failover': {
|
||||
'ip': '1.2.3.4',
|
||||
'netmask': '255.255.255.255',
|
||||
'server_ip': '2.3.4.5',
|
||||
'server_number': 2345,
|
||||
'active_server_ip': '4.3.2.1',
|
||||
},
|
||||
})
|
||||
.expect_url('{0}/failover/1.2.3.4'.format(BASE_URL)),
|
||||
])
|
||||
assert result['changed'] is False
|
||||
assert result['value'] == '4.3.2.1'
|
||||
assert result['state'] == 'routed'
|
||||
|
||||
# Tests for changing state (unrouted to routed, vice versa)
|
||||
|
||||
def test_unrouted_to_routed(self, mocker):
|
||||
result = self.run_module_success(mocker, hetzner_failover_ip, {
|
||||
'hetzner_user': '',
|
||||
'hetzner_password': '',
|
||||
'failover_ip': '1.2.3.4',
|
||||
'state': 'routed',
|
||||
'value': '4.3.2.1',
|
||||
}, [
|
||||
FetchUrlCall('GET', 200)
|
||||
.result_json({
|
||||
'failover': {
|
||||
'ip': '1.2.3.4',
|
||||
'netmask': '255.255.255.255',
|
||||
'server_ip': '2.3.4.5',
|
||||
'server_number': 2345,
|
||||
'active_server_ip': None,
|
||||
},
|
||||
})
|
||||
.expect_url('{0}/failover/1.2.3.4'.format(BASE_URL)),
|
||||
FetchUrlCall('POST', 200)
|
||||
.result_json({
|
||||
'failover': {
|
||||
'ip': '1.2.3.4',
|
||||
'netmask': '255.255.255.255',
|
||||
'server_ip': '2.3.4.5',
|
||||
'server_number': 2345,
|
||||
'active_server_ip': '4.3.2.1',
|
||||
},
|
||||
})
|
||||
.expect_form_value('active_server_ip', '4.3.2.1')
|
||||
.expect_url('{0}/failover/1.2.3.4'.format(BASE_URL)),
|
||||
])
|
||||
assert result['changed'] is True
|
||||
assert result['value'] == '4.3.2.1'
|
||||
assert result['state'] == 'routed'
|
||||
|
||||
def test_routed_to_unrouted(self, mocker):
|
||||
result = self.run_module_success(mocker, hetzner_failover_ip, {
|
||||
'hetzner_user': '',
|
||||
'hetzner_password': '',
|
||||
'failover_ip': '1.2.3.4',
|
||||
'state': 'unrouted',
|
||||
}, [
|
||||
FetchUrlCall('GET', 200)
|
||||
.result_json({
|
||||
'failover': {
|
||||
'ip': '1.2.3.4',
|
||||
'netmask': '255.255.255.255',
|
||||
'server_ip': '2.3.4.5',
|
||||
'server_number': 2345,
|
||||
'active_server_ip': '4.3.2.1',
|
||||
},
|
||||
})
|
||||
.expect_url('{0}/failover/1.2.3.4'.format(BASE_URL)),
|
||||
FetchUrlCall('DELETE', 200)
|
||||
.result_json({
|
||||
'failover': {
|
||||
'ip': '1.2.3.4',
|
||||
'netmask': '255.255.255.255',
|
||||
'server_ip': '2.3.4.5',
|
||||
'server_number': 2345,
|
||||
'active_server_ip': None,
|
||||
},
|
||||
})
|
||||
.expect_url('{0}/failover/1.2.3.4'.format(BASE_URL)),
|
||||
])
|
||||
assert result['changed'] is True
|
||||
assert result['value'] is None
|
||||
assert result['state'] == 'unrouted'
|
||||
|
||||
# Tests for re-routing
|
||||
|
||||
def test_rerouting(self, mocker):
|
||||
result = self.run_module_success(mocker, hetzner_failover_ip, {
|
||||
'hetzner_user': '',
|
||||
'hetzner_password': '',
|
||||
'failover_ip': '1.2.3.4',
|
||||
'state': 'routed',
|
||||
'value': '4.3.2.1',
|
||||
}, [
|
||||
FetchUrlCall('GET', 200)
|
||||
.result_json({
|
||||
'failover': {
|
||||
'ip': '1.2.3.4',
|
||||
'netmask': '255.255.255.255',
|
||||
'server_ip': '2.3.4.5',
|
||||
'server_number': 2345,
|
||||
'active_server_ip': '5.4.3.2',
|
||||
},
|
||||
})
|
||||
.expect_url('{0}/failover/1.2.3.4'.format(BASE_URL)),
|
||||
FetchUrlCall('POST', 200)
|
||||
.result_json({
|
||||
'failover': {
|
||||
'ip': '1.2.3.4',
|
||||
'netmask': '255.255.255.255',
|
||||
'server_ip': '2.3.4.5',
|
||||
'server_number': 2345,
|
||||
'active_server_ip': '4.3.2.1',
|
||||
},
|
||||
})
|
||||
.expect_form_value('active_server_ip', '4.3.2.1')
|
||||
.expect_url('{0}/failover/1.2.3.4'.format(BASE_URL)),
|
||||
])
|
||||
assert result['changed'] is True
|
||||
assert result['value'] == '4.3.2.1'
|
||||
assert result['state'] == 'routed'
|
||||
|
||||
def test_rerouting_already_routed(self, mocker):
|
||||
result = self.run_module_success(mocker, hetzner_failover_ip, {
|
||||
'hetzner_user': '',
|
||||
'hetzner_password': '',
|
||||
'failover_ip': '1.2.3.4',
|
||||
'state': 'routed',
|
||||
'value': '4.3.2.1',
|
||||
}, [
|
||||
FetchUrlCall('GET', 200)
|
||||
.result_json({
|
||||
'failover': {
|
||||
'ip': '1.2.3.4',
|
||||
'netmask': '255.255.255.255',
|
||||
'server_ip': '2.3.4.5',
|
||||
'server_number': 2345,
|
||||
'active_server_ip': '5.4.3.2',
|
||||
},
|
||||
})
|
||||
.expect_url('{0}/failover/1.2.3.4'.format(BASE_URL)),
|
||||
FetchUrlCall('POST', 409)
|
||||
.result_json({
|
||||
'error': {
|
||||
'status': 409,
|
||||
'code': 'FAILOVER_ALREADY_ROUTED',
|
||||
'message': 'Failover already routed',
|
||||
},
|
||||
'failover': {
|
||||
'ip': '1.2.3.4',
|
||||
'netmask': '255.255.255.255',
|
||||
'server_ip': '2.3.4.5',
|
||||
'server_number': 2345,
|
||||
'active_server_ip': '4.3.2.1',
|
||||
},
|
||||
})
|
||||
.expect_form_value('active_server_ip', '4.3.2.1')
|
||||
.expect_url('{0}/failover/1.2.3.4'.format(BASE_URL)),
|
||||
])
|
||||
assert result['changed'] is False
|
||||
assert result['value'] == '4.3.2.1'
|
||||
assert result['state'] == 'routed'
|
|
@ -1,71 +0,0 @@
|
|||
# (c) 2020 Felix Fontein <felix@fontein.de>
|
||||
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
|
||||
from __future__ import (absolute_import, division, print_function)
|
||||
__metaclass__ = type
|
||||
|
||||
|
||||
from ansible_collections.community.internal_test_tools.tests.unit.utils.fetch_url_module_framework import (
|
||||
FetchUrlCall,
|
||||
BaseTestModule,
|
||||
)
|
||||
|
||||
from ansible_collections.community.general.plugins.module_utils.hetzner import BASE_URL
|
||||
from ansible_collections.community.general.plugins.modules.net_tools import hetzner_failover_ip_info
|
||||
|
||||
|
||||
class TestHetznerFailoverIPInfo(BaseTestModule):
|
||||
MOCK_ANSIBLE_MODULEUTILS_BASIC_ANSIBLEMODULE = 'ansible_collections.community.general.plugins.modules.net_tools.hetzner_failover_ip_info.AnsibleModule'
|
||||
MOCK_ANSIBLE_MODULEUTILS_URLS_FETCH_URL = 'ansible_collections.community.general.plugins.module_utils.hetzner.fetch_url'
|
||||
|
||||
# Tests for state (routed and unrouted)
|
||||
|
||||
def test_unrouted(self, mocker):
|
||||
result = self.run_module_success(mocker, hetzner_failover_ip_info, {
|
||||
'hetzner_user': '',
|
||||
'hetzner_password': '',
|
||||
'failover_ip': '1.2.3.4',
|
||||
}, [
|
||||
FetchUrlCall('GET', 200)
|
||||
.result_json({
|
||||
'failover': {
|
||||
'ip': '1.2.3.4',
|
||||
'netmask': '255.255.255.255',
|
||||
'server_ip': '2.3.4.5',
|
||||
'server_number': 2345,
|
||||
'active_server_ip': None,
|
||||
},
|
||||
})
|
||||
.expect_url('{0}/failover/1.2.3.4'.format(BASE_URL)),
|
||||
])
|
||||
assert result['changed'] is False
|
||||
assert result['value'] is None
|
||||
assert result['state'] == 'unrouted'
|
||||
assert result['failover_ip'] == '1.2.3.4'
|
||||
assert result['server_ip'] == '2.3.4.5'
|
||||
assert result['server_number'] == 2345
|
||||
|
||||
def test_routed(self, mocker):
|
||||
result = self.run_module_success(mocker, hetzner_failover_ip_info, {
|
||||
'hetzner_user': '',
|
||||
'hetzner_password': '',
|
||||
'failover_ip': '1.2.3.4',
|
||||
}, [
|
||||
FetchUrlCall('GET', 200)
|
||||
.result_json({
|
||||
'failover': {
|
||||
'ip': '1.2.3.4',
|
||||
'netmask': '255.255.255.255',
|
||||
'server_ip': '2.3.4.5',
|
||||
'server_number': 2345,
|
||||
'active_server_ip': '4.3.2.1',
|
||||
},
|
||||
})
|
||||
.expect_url('{0}/failover/1.2.3.4'.format(BASE_URL)),
|
||||
])
|
||||
assert result['changed'] is False
|
||||
assert result['value'] == '4.3.2.1'
|
||||
assert result['state'] == 'routed'
|
||||
assert result['failover_ip'] == '1.2.3.4'
|
||||
assert result['server_ip'] == '2.3.4.5'
|
||||
assert result['server_number'] == 2345
|
File diff suppressed because it is too large
Load diff
|
@ -1,240 +0,0 @@
|
|||
# (c) 2019 Felix Fontein <felix@fontein.de>
|
||||
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
|
||||
from __future__ import (absolute_import, division, print_function)
|
||||
__metaclass__ = type
|
||||
|
||||
|
||||
from ansible_collections.community.internal_test_tools.tests.unit.utils.fetch_url_module_framework import (
|
||||
FetchUrlCall,
|
||||
BaseTestModule,
|
||||
)
|
||||
|
||||
from ansible_collections.community.general.plugins.module_utils.hetzner import BASE_URL
|
||||
from ansible_collections.community.general.plugins.modules.net_tools import hetzner_firewall_info
|
||||
|
||||
|
||||
class TestHetznerFirewallInfo(BaseTestModule):
|
||||
MOCK_ANSIBLE_MODULEUTILS_BASIC_ANSIBLEMODULE = 'ansible_collections.community.general.plugins.modules.net_tools.hetzner_firewall_info.AnsibleModule'
|
||||
MOCK_ANSIBLE_MODULEUTILS_URLS_FETCH_URL = 'ansible_collections.community.general.plugins.module_utils.hetzner.fetch_url'
|
||||
|
||||
# Tests for state (absent and present)
|
||||
|
||||
def test_absent(self, mocker):
|
||||
result = self.run_module_success(mocker, hetzner_firewall_info, {
|
||||
'hetzner_user': '',
|
||||
'hetzner_password': '',
|
||||
'server_ip': '1.2.3.4',
|
||||
}, [
|
||||
FetchUrlCall('GET', 200)
|
||||
.result_json({
|
||||
'firewall': {
|
||||
'server_ip': '1.2.3.4',
|
||||
'server_number': 1,
|
||||
'status': 'disabled',
|
||||
'whitelist_hos': False,
|
||||
'port': 'main',
|
||||
'rules': {
|
||||
'input': [],
|
||||
},
|
||||
},
|
||||
})
|
||||
.expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
|
||||
])
|
||||
assert result['changed'] is False
|
||||
assert result['firewall']['status'] == 'disabled'
|
||||
assert result['firewall']['server_ip'] == '1.2.3.4'
|
||||
assert result['firewall']['server_number'] == 1
|
||||
|
||||
def test_present(self, mocker):
|
||||
result = self.run_module_success(mocker, hetzner_firewall_info, {
|
||||
'hetzner_user': '',
|
||||
'hetzner_password': '',
|
||||
'server_ip': '1.2.3.4',
|
||||
}, [
|
||||
FetchUrlCall('GET', 200)
|
||||
.result_json({
|
||||
'firewall': {
|
||||
'server_ip': '1.2.3.4',
|
||||
'server_number': 1,
|
||||
'status': 'active',
|
||||
'whitelist_hos': False,
|
||||
'port': 'main',
|
||||
'rules': {
|
||||
'input': [],
|
||||
},
|
||||
},
|
||||
})
|
||||
.expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
|
||||
])
|
||||
assert result['changed'] is False
|
||||
assert result['firewall']['status'] == 'active'
|
||||
assert result['firewall']['server_ip'] == '1.2.3.4'
|
||||
assert result['firewall']['server_number'] == 1
|
||||
assert len(result['firewall']['rules']['input']) == 0
|
||||
|
||||
def test_present_w_rules(self, mocker):
|
||||
result = self.run_module_success(mocker, hetzner_firewall_info, {
|
||||
'hetzner_user': '',
|
||||
'hetzner_password': '',
|
||||
'server_ip': '1.2.3.4',
|
||||
}, [
|
||||
FetchUrlCall('GET', 200)
|
||||
.result_json({
|
||||
'firewall': {
|
||||
'server_ip': '1.2.3.4',
|
||||
'server_number': 1,
|
||||
'status': 'active',
|
||||
'whitelist_hos': False,
|
||||
'port': 'main',
|
||||
'rules': {
|
||||
'input': [
|
||||
{
|
||||
'name': 'Accept HTTPS traffic',
|
||||
'ip_version': 'ipv4',
|
||||
'dst_ip': None,
|
||||
'dst_port': '443',
|
||||
'src_ip': None,
|
||||
'src_port': None,
|
||||
'protocol': 'tcp',
|
||||
'tcp_flags': None,
|
||||
'action': 'accept',
|
||||
},
|
||||
{
|
||||
'name': None,
|
||||
'ip_version': 'ipv4',
|
||||
'dst_ip': None,
|
||||
'dst_port': None,
|
||||
'src_ip': None,
|
||||
'src_port': None,
|
||||
'protocol': None,
|
||||
'tcp_flags': None,
|
||||
'action': 'discard',
|
||||
}
|
||||
],
|
||||
},
|
||||
},
|
||||
})
|
||||
.expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
|
||||
])
|
||||
assert result['changed'] is False
|
||||
assert result['firewall']['status'] == 'active'
|
||||
assert result['firewall']['server_ip'] == '1.2.3.4'
|
||||
assert result['firewall']['server_number'] == 1
|
||||
assert len(result['firewall']['rules']['input']) == 2
|
||||
assert result['firewall']['rules']['input'][0]['name'] == 'Accept HTTPS traffic'
|
||||
assert result['firewall']['rules']['input'][0]['dst_port'] == '443'
|
||||
assert result['firewall']['rules']['input'][0]['action'] == 'accept'
|
||||
assert result['firewall']['rules']['input'][1]['dst_port'] is None
|
||||
assert result['firewall']['rules']['input'][1]['action'] == 'discard'
|
||||
|
||||
# Tests for wait_for_configured in getting status
|
||||
|
||||
def test_wait_get(self, mocker):
|
||||
mocker.patch('time.sleep', lambda duration: None)
|
||||
result = self.run_module_success(mocker, hetzner_firewall_info, {
|
||||
'hetzner_user': '',
|
||||
'hetzner_password': '',
|
||||
'server_ip': '1.2.3.4',
|
||||
'wait_for_configured': True,
|
||||
}, [
|
||||
FetchUrlCall('GET', 200)
|
||||
.result_json({
|
||||
'firewall': {
|
||||
'server_ip': '1.2.3.4',
|
||||
'server_number': 1,
|
||||
'status': 'in process',
|
||||
'whitelist_hos': False,
|
||||
'port': 'main',
|
||||
'rules': {
|
||||
'input': [],
|
||||
},
|
||||
},
|
||||
})
|
||||
.expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
|
||||
FetchUrlCall('GET', 200)
|
||||
.result_json({
|
||||
'firewall': {
|
||||
'server_ip': '1.2.3.4',
|
||||
'server_number': 1,
|
||||
'status': 'active',
|
||||
'whitelist_hos': False,
|
||||
'port': 'main',
|
||||
'rules': {
|
||||
'input': [],
|
||||
},
|
||||
},
|
||||
})
|
||||
.expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
|
||||
])
|
||||
assert result['changed'] is False
|
||||
assert result['firewall']['status'] == 'active'
|
||||
assert result['firewall']['server_ip'] == '1.2.3.4'
|
||||
assert result['firewall']['server_number'] == 1
|
||||
|
||||
def test_wait_get_timeout(self, mocker):
|
||||
mocker.patch('time.sleep', lambda duration: None)
|
||||
result = self.run_module_failed(mocker, hetzner_firewall_info, {
|
||||
'hetzner_user': '',
|
||||
'hetzner_password': '',
|
||||
'server_ip': '1.2.3.4',
|
||||
'wait_for_configured': True,
|
||||
'timeout': 0,
|
||||
}, [
|
||||
FetchUrlCall('GET', 200)
|
||||
.result_json({
|
||||
'firewall': {
|
||||
'server_ip': '1.2.3.4',
|
||||
'server_number': 1,
|
||||
'status': 'in process',
|
||||
'whitelist_hos': False,
|
||||
'port': 'main',
|
||||
'rules': {
|
||||
'input': [],
|
||||
},
|
||||
},
|
||||
})
|
||||
.expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
|
||||
FetchUrlCall('GET', 200)
|
||||
.result_json({
|
||||
'firewall': {
|
||||
'server_ip': '1.2.3.4',
|
||||
'server_number': 1,
|
||||
'status': 'in process',
|
||||
'whitelist_hos': False,
|
||||
'port': 'main',
|
||||
'rules': {
|
||||
'input': [],
|
||||
},
|
||||
},
|
||||
})
|
||||
.expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
|
||||
])
|
||||
assert result['msg'] == 'Timeout while waiting for firewall to be configured.'
|
||||
|
||||
def test_nowait_get(self, mocker):
|
||||
result = self.run_module_success(mocker, hetzner_firewall_info, {
|
||||
'hetzner_user': '',
|
||||
'hetzner_password': '',
|
||||
'server_ip': '1.2.3.4',
|
||||
'wait_for_configured': False,
|
||||
}, [
|
||||
FetchUrlCall('GET', 200)
|
||||
.result_json({
|
||||
'firewall': {
|
||||
'server_ip': '1.2.3.4',
|
||||
'server_number': 1,
|
||||
'status': 'in process',
|
||||
'whitelist_hos': False,
|
||||
'port': 'main',
|
||||
'rules': {
|
||||
'input': [],
|
||||
},
|
||||
},
|
||||
})
|
||||
.expect_url('{0}/firewall/1.2.3.4'.format(BASE_URL)),
|
||||
])
|
||||
assert result['changed'] is False
|
||||
assert result['firewall']['status'] == 'in process'
|
||||
assert result['firewall']['server_ip'] == '1.2.3.4'
|
||||
assert result['firewall']['server_number'] == 1
|
Loading…
Add table
Add a link
Reference in a new issue