Move module tests using TQM to integration tests.
This commit is contained in:
parent
a727a1ee67
commit
04ddadd89b
3 changed files with 84 additions and 256 deletions
2
test/integration/targets/ec2_vpc_nat_gateway/aliases
Normal file
2
test/integration/targets/ec2_vpc_nat_gateway/aliases
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
cloud/aws
|
||||||
|
shippable/aws/group2
|
82
test/integration/targets/ec2_vpc_nat_gateway/tasks/main.yml
Normal file
82
test/integration/targets/ec2_vpc_nat_gateway/tasks/main.yml
Normal file
|
@ -0,0 +1,82 @@
|
||||||
|
# The tests for this module are incomplete.
|
||||||
|
# The tests below were migrated from unit tests.
|
||||||
|
# They take advantage of hard-coded results within the module to trigger both changed and unchanged responses.
|
||||||
|
# They were migrated to maintain test coverage while removing unit tests that depended on use of TaskQueueManager.
|
||||||
|
|
||||||
|
- name: Create new nat gateway with eip allocation-id
|
||||||
|
ec2_vpc_nat_gateway:
|
||||||
|
subnet_id: subnet-12345678
|
||||||
|
allocation_id: eipalloc-12345678
|
||||||
|
wait: yes
|
||||||
|
region: us-west-2
|
||||||
|
register: nat_gateway
|
||||||
|
check_mode: yes
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- nat_gateway.changed
|
||||||
|
|
||||||
|
- name: Create new nat gateway with eip allocation-id
|
||||||
|
ec2_vpc_nat_gateway:
|
||||||
|
subnet_id: subnet-123456789
|
||||||
|
allocation_id: eipalloc-1234567
|
||||||
|
wait: yes
|
||||||
|
region: us-west-2
|
||||||
|
register: nat_gateway
|
||||||
|
check_mode: yes
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- not nat_gateway.changed
|
||||||
|
|
||||||
|
- name: Create new nat gateway with eip address
|
||||||
|
ec2_vpc_nat_gateway:
|
||||||
|
subnet_id: subnet-12345678
|
||||||
|
eip_address: 55.55.55.55
|
||||||
|
wait: yes
|
||||||
|
region: us-west-2
|
||||||
|
register: nat_gateway
|
||||||
|
check_mode: yes
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- nat_gateway.changed
|
||||||
|
|
||||||
|
- name: Create new nat gateway with eip address
|
||||||
|
ec2_vpc_nat_gateway:
|
||||||
|
subnet_id: subnet-123456789
|
||||||
|
eip_address: 55.55.55.55
|
||||||
|
wait: yes
|
||||||
|
region: us-west-2
|
||||||
|
register: nat_gateway
|
||||||
|
check_mode: yes
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- not nat_gateway.changed
|
||||||
|
|
||||||
|
- name: Create new nat gateway only if one does not exist already
|
||||||
|
ec2_vpc_nat_gateway:
|
||||||
|
if_exist_do_not_create: yes
|
||||||
|
subnet_id: subnet-123456789
|
||||||
|
wait: yes
|
||||||
|
region: us-west-2
|
||||||
|
register: nat_gateway
|
||||||
|
check_mode: yes
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- not nat_gateway.changed
|
||||||
|
|
||||||
|
- name: Delete Nat Gateway
|
||||||
|
ec2_vpc_nat_gateway:
|
||||||
|
nat_gateway_id: nat-123456789
|
||||||
|
state: absent
|
||||||
|
wait: yes
|
||||||
|
region: us-west-2
|
||||||
|
register: nat_gateway
|
||||||
|
check_mode: yes
|
||||||
|
|
||||||
|
- assert:
|
||||||
|
that:
|
||||||
|
- nat_gateway.changed
|
|
@ -1,270 +1,14 @@
|
||||||
import pytest
|
import pytest
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
from collections import namedtuple
|
|
||||||
from ansible.parsing.dataloader import DataLoader
|
|
||||||
from ansible.vars.manager import VariableManager
|
|
||||||
from ansible.inventory.manager import InventoryManager
|
|
||||||
from ansible.playbook.play import Play
|
|
||||||
from ansible.executor.task_queue_manager import TaskQueueManager
|
|
||||||
|
|
||||||
import ansible.modules.cloud.amazon.ec2_vpc_nat_gateway as ng
|
import ansible.modules.cloud.amazon.ec2_vpc_nat_gateway as ng
|
||||||
|
|
||||||
|
|
||||||
boto3 = pytest.importorskip("boto3")
|
boto3 = pytest.importorskip("boto3")
|
||||||
botocore = pytest.importorskip("botocore")
|
botocore = pytest.importorskip("botocore")
|
||||||
|
|
||||||
Options = (
|
|
||||||
namedtuple(
|
|
||||||
'Options', [
|
|
||||||
'connection', 'module_path', 'forks', 'become', 'become_method',
|
|
||||||
'become_user', 'remote_user', 'private_key_file', 'ssh_common_args',
|
|
||||||
'sftp_extra_args', 'scp_extra_args', 'ssh_extra_args', 'verbosity',
|
|
||||||
'check', 'diff'
|
|
||||||
]
|
|
||||||
)
|
|
||||||
)
|
|
||||||
# initialize needed objects
|
|
||||||
loader = DataLoader()
|
|
||||||
variable_manager = VariableManager(loader=loader)
|
|
||||||
options = (
|
|
||||||
Options(
|
|
||||||
connection='local',
|
|
||||||
module_path='cloud/amazon',
|
|
||||||
forks=1, become=None, become_method=None, become_user=None, check=True,
|
|
||||||
remote_user=None, private_key_file=None, ssh_common_args=None,
|
|
||||||
sftp_extra_args=None, scp_extra_args=None, ssh_extra_args=None,
|
|
||||||
verbosity=3, diff=False
|
|
||||||
)
|
|
||||||
)
|
|
||||||
passwords = dict(vault_pass='')
|
|
||||||
|
|
||||||
aws_region = 'us-west-2'
|
aws_region = 'us-west-2'
|
||||||
|
|
||||||
# create inventory and pass to var manager
|
|
||||||
inventory = InventoryManager(loader=loader)
|
|
||||||
variable_manager.set_inventory(inventory)
|
|
||||||
|
|
||||||
|
|
||||||
def run(play):
|
|
||||||
tqm = None
|
|
||||||
results = None
|
|
||||||
try:
|
|
||||||
tqm = TaskQueueManager(
|
|
||||||
inventory=inventory,
|
|
||||||
variable_manager=variable_manager,
|
|
||||||
loader=loader,
|
|
||||||
options=options,
|
|
||||||
passwords=passwords,
|
|
||||||
stdout_callback='default',
|
|
||||||
)
|
|
||||||
results = tqm.run(play)
|
|
||||||
finally:
|
|
||||||
if tqm is not None:
|
|
||||||
tqm.cleanup()
|
|
||||||
return tqm, results
|
|
||||||
|
|
||||||
|
|
||||||
class AnsibleVpcNatGatewayTasks(unittest.TestCase):
|
|
||||||
|
|
||||||
def test_create_gateway_using_allocation_id(self):
|
|
||||||
play_source = dict(
|
|
||||||
name="Create new nat gateway with eip allocation-id",
|
|
||||||
hosts='localhost',
|
|
||||||
gather_facts='no',
|
|
||||||
tasks=[
|
|
||||||
dict(
|
|
||||||
action=dict(
|
|
||||||
module='ec2_vpc_nat_gateway',
|
|
||||||
args=dict(
|
|
||||||
subnet_id='subnet-12345678',
|
|
||||||
allocation_id='eipalloc-12345678',
|
|
||||||
wait='yes',
|
|
||||||
region=aws_region,
|
|
||||||
)
|
|
||||||
),
|
|
||||||
register='nat_gateway',
|
|
||||||
),
|
|
||||||
dict(
|
|
||||||
action=dict(
|
|
||||||
module='debug',
|
|
||||||
args=dict(
|
|
||||||
msg='{{nat_gateway}}'
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
]
|
|
||||||
)
|
|
||||||
play = Play().load(play_source, variable_manager=variable_manager, loader=loader)
|
|
||||||
tqm, results = run(play)
|
|
||||||
self.failUnless(tqm._stats.ok['localhost'] == 2)
|
|
||||||
self.failUnless(tqm._stats.changed['localhost'] == 1)
|
|
||||||
|
|
||||||
def test_create_gateway_using_allocation_id_idempotent(self):
|
|
||||||
play_source = dict(
|
|
||||||
name="Create new nat gateway with eip allocation-id",
|
|
||||||
hosts='localhost',
|
|
||||||
gather_facts='no',
|
|
||||||
tasks=[
|
|
||||||
dict(
|
|
||||||
action=dict(
|
|
||||||
module='ec2_vpc_nat_gateway',
|
|
||||||
args=dict(
|
|
||||||
subnet_id='subnet-123456789',
|
|
||||||
allocation_id='eipalloc-1234567',
|
|
||||||
wait='yes',
|
|
||||||
region=aws_region,
|
|
||||||
)
|
|
||||||
),
|
|
||||||
register='nat_gateway',
|
|
||||||
),
|
|
||||||
dict(
|
|
||||||
action=dict(
|
|
||||||
module='debug',
|
|
||||||
args=dict(
|
|
||||||
msg='{{nat_gateway}}'
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
]
|
|
||||||
)
|
|
||||||
play = Play().load(play_source, variable_manager=variable_manager, loader=loader)
|
|
||||||
tqm, results = run(play)
|
|
||||||
self.failUnless(tqm._stats.ok['localhost'] == 2)
|
|
||||||
self.assertFalse('localhost' in tqm._stats.changed)
|
|
||||||
|
|
||||||
def test_create_gateway_using_eip_address(self):
|
|
||||||
play_source = dict(
|
|
||||||
name="Create new nat gateway with eip address",
|
|
||||||
hosts='localhost',
|
|
||||||
gather_facts='no',
|
|
||||||
tasks=[
|
|
||||||
dict(
|
|
||||||
action=dict(
|
|
||||||
module='ec2_vpc_nat_gateway',
|
|
||||||
args=dict(
|
|
||||||
subnet_id='subnet-12345678',
|
|
||||||
eip_address='55.55.55.55',
|
|
||||||
wait='yes',
|
|
||||||
region=aws_region,
|
|
||||||
)
|
|
||||||
),
|
|
||||||
register='nat_gateway',
|
|
||||||
),
|
|
||||||
dict(
|
|
||||||
action=dict(
|
|
||||||
module='debug',
|
|
||||||
args=dict(
|
|
||||||
msg='{{nat_gateway}}'
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
]
|
|
||||||
)
|
|
||||||
play = Play().load(play_source, variable_manager=variable_manager, loader=loader)
|
|
||||||
tqm, results = run(play)
|
|
||||||
self.failUnless(tqm._stats.ok['localhost'] == 2)
|
|
||||||
self.failUnless(tqm._stats.changed['localhost'] == 1)
|
|
||||||
|
|
||||||
def test_create_gateway_using_eip_address_idempotent(self):
|
|
||||||
play_source = dict(
|
|
||||||
name="Create new nat gateway with eip address",
|
|
||||||
hosts='localhost',
|
|
||||||
gather_facts='no',
|
|
||||||
tasks=[
|
|
||||||
dict(
|
|
||||||
action=dict(
|
|
||||||
module='ec2_vpc_nat_gateway',
|
|
||||||
args=dict(
|
|
||||||
subnet_id='subnet-123456789',
|
|
||||||
eip_address='55.55.55.55',
|
|
||||||
wait='yes',
|
|
||||||
region=aws_region,
|
|
||||||
)
|
|
||||||
),
|
|
||||||
register='nat_gateway',
|
|
||||||
),
|
|
||||||
dict(
|
|
||||||
action=dict(
|
|
||||||
module='debug',
|
|
||||||
args=dict(
|
|
||||||
msg='{{nat_gateway}}'
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
]
|
|
||||||
)
|
|
||||||
play = Play().load(play_source, variable_manager=variable_manager, loader=loader)
|
|
||||||
tqm, results = run(play)
|
|
||||||
self.failUnless(tqm._stats.ok['localhost'] == 2)
|
|
||||||
self.assertFalse('localhost' in tqm._stats.changed)
|
|
||||||
|
|
||||||
def test_create_gateway_in_subnet_only_if_one_does_not_exist_already(self):
|
|
||||||
play_source = dict(
|
|
||||||
name="Create new nat gateway only if one does not exist already",
|
|
||||||
hosts='localhost',
|
|
||||||
gather_facts='no',
|
|
||||||
tasks=[
|
|
||||||
dict(
|
|
||||||
action=dict(
|
|
||||||
module='ec2_vpc_nat_gateway',
|
|
||||||
args=dict(
|
|
||||||
if_exist_do_not_create='yes',
|
|
||||||
subnet_id='subnet-123456789',
|
|
||||||
wait='yes',
|
|
||||||
region=aws_region,
|
|
||||||
)
|
|
||||||
),
|
|
||||||
register='nat_gateway',
|
|
||||||
),
|
|
||||||
dict(
|
|
||||||
action=dict(
|
|
||||||
module='debug',
|
|
||||||
args=dict(
|
|
||||||
msg='{{nat_gateway}}'
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
]
|
|
||||||
)
|
|
||||||
play = Play().load(play_source, variable_manager=variable_manager, loader=loader)
|
|
||||||
tqm, results = run(play)
|
|
||||||
self.failUnless(tqm._stats.ok['localhost'] == 2)
|
|
||||||
self.assertFalse('localhost' in tqm._stats.changed)
|
|
||||||
|
|
||||||
def test_delete_gateway(self):
|
|
||||||
play_source = dict(
|
|
||||||
name="Delete Nat Gateway",
|
|
||||||
hosts='localhost',
|
|
||||||
gather_facts='no',
|
|
||||||
tasks=[
|
|
||||||
dict(
|
|
||||||
action=dict(
|
|
||||||
module='ec2_vpc_nat_gateway',
|
|
||||||
args=dict(
|
|
||||||
nat_gateway_id='nat-123456789',
|
|
||||||
state='absent',
|
|
||||||
wait='yes',
|
|
||||||
region=aws_region,
|
|
||||||
)
|
|
||||||
),
|
|
||||||
register='nat_gateway',
|
|
||||||
),
|
|
||||||
dict(
|
|
||||||
action=dict(
|
|
||||||
module='debug',
|
|
||||||
args=dict(
|
|
||||||
msg='{{nat_gateway}}'
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
]
|
|
||||||
)
|
|
||||||
play = Play().load(play_source, variable_manager=variable_manager, loader=loader)
|
|
||||||
tqm, results = run(play)
|
|
||||||
self.failUnless(tqm._stats.ok['localhost'] == 2)
|
|
||||||
self.assertTrue('localhost' in tqm._stats.changed)
|
|
||||||
|
|
||||||
|
|
||||||
class AnsibleEc2VpcNatGatewayFunctions(unittest.TestCase):
|
class AnsibleEc2VpcNatGatewayFunctions(unittest.TestCase):
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue