mirror of https://github.com/ansible/ansible.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
135 lines
4.5 KiB
Python
135 lines
4.5 KiB
Python
import sys
|
|
|
|
import pytest
|
|
|
|
import units.compat.unittest as unittest
|
|
from units.compat.mock import MagicMock
|
|
from units.compat.unittest import TestCase
|
|
from units.modules.utils import set_module_args
|
|
|
|
|
|
# Exoscale's cs doesn't support Python 2.6
|
|
pytestmark = []
|
|
if sys.version_info[:2] != (2, 6):
|
|
from ansible.modules.cloud.cloudstack.cs_traffic_type import AnsibleCloudStackTrafficType, setup_module_object
|
|
from ansible.module_utils.cloudstack import HAS_LIB_CS
|
|
if not HAS_LIB_CS:
|
|
pytestmark.append(pytest.mark.skip('The cloudstack library, "cs", is needed to test cs_traffic_type'))
|
|
else:
|
|
pytestmark.append(pytest.mark.skip('Exoscale\'s cs doesn\'t support Python 2.6'))
|
|
|
|
|
|
EXISTING_TRAFFIC_TYPES_RESPONSE = {
|
|
"count": 3,
|
|
"traffictype": [
|
|
{
|
|
"id": "9801cf73-5a73-4883-97e4-fa20c129226f",
|
|
"kvmnetworklabel": "cloudbr0",
|
|
"physicalnetworkid": "659c1840-9374-440d-a412-55ca360c9d3c",
|
|
"traffictype": "Management"
|
|
},
|
|
{
|
|
"id": "28ed70b7-9a1f-41bf-94c3-53a9f22da8b6",
|
|
"kvmnetworklabel": "cloudbr0",
|
|
"physicalnetworkid": "659c1840-9374-440d-a412-55ca360c9d3c",
|
|
"traffictype": "Guest"
|
|
},
|
|
{
|
|
"id": "9c05c802-84c0-4eda-8f0a-f681364ffb46",
|
|
"kvmnetworklabel": "cloudbr0",
|
|
"physicalnetworkid": "659c1840-9374-440d-a412-55ca360c9d3c",
|
|
"traffictype": "Storage"
|
|
}
|
|
]
|
|
}
|
|
|
|
VALID_LIST_NETWORKS_RESPONSE = {
|
|
"count": 1,
|
|
"physicalnetwork": [
|
|
{
|
|
"broadcastdomainrange": "ZONE",
|
|
"id": "659c1840-9374-440d-a412-55ca360c9d3c",
|
|
"name": "eth1",
|
|
"state": "Enabled",
|
|
"vlan": "3900-4000",
|
|
"zoneid": "49acf813-a8dd-4da0-aa53-1d826d6003e7"
|
|
}
|
|
]
|
|
}
|
|
|
|
VALID_LIST_ZONES_RESPONSE = {
|
|
"count": 1,
|
|
"zone": [
|
|
{
|
|
"allocationstate": "Enabled",
|
|
"dhcpprovider": "VirtualRouter",
|
|
"dns1": "8.8.8.8",
|
|
"dns2": "8.8.4.4",
|
|
"guestcidraddress": "10.10.0.0/16",
|
|
"id": "49acf813-a8dd-4da0-aa53-1d826d6003e7",
|
|
"internaldns1": "192.168.56.1",
|
|
"localstorageenabled": True,
|
|
"name": "DevCloud-01",
|
|
"networktype": "Advanced",
|
|
"securitygroupsenabled": False,
|
|
"tags": [],
|
|
"zonetoken": "df20d65a-c6c8-3880-9064-4f77de2291ef"
|
|
}
|
|
]
|
|
}
|
|
|
|
|
|
base_module_args = {
|
|
"api_key": "api_key",
|
|
"api_secret": "very_secret_content",
|
|
"api_url": "http://localhost:8888/api/client",
|
|
"kvm_networklabel": "cloudbr0",
|
|
"physical_network": "eth1",
|
|
"poll_async": True,
|
|
"state": "present",
|
|
"traffic_type": "Guest",
|
|
"zone": "DevCloud-01"
|
|
}
|
|
|
|
|
|
class TestAnsibleCloudstackTraffiType(TestCase):
|
|
|
|
def test_module_is_created_sensibly(self):
|
|
set_module_args(base_module_args)
|
|
module = setup_module_object()
|
|
assert module.params['traffic_type'] == 'Guest'
|
|
|
|
def test_update_called_when_traffic_type_exists(self):
|
|
set_module_args(base_module_args)
|
|
module = setup_module_object()
|
|
actt = AnsibleCloudStackTrafficType(module)
|
|
actt.get_traffic_type = MagicMock(return_value=EXISTING_TRAFFIC_TYPES_RESPONSE['traffictype'][0])
|
|
actt.update_traffic_type = MagicMock()
|
|
actt.present_traffic_type()
|
|
self.assertTrue(actt.update_traffic_type.called)
|
|
|
|
def test_update_not_called_when_traffic_type_doesnt_exist(self):
|
|
set_module_args(base_module_args)
|
|
module = setup_module_object()
|
|
actt = AnsibleCloudStackTrafficType(module)
|
|
actt.get_traffic_type = MagicMock(return_value=None)
|
|
actt.update_traffic_type = MagicMock()
|
|
actt.add_traffic_type = MagicMock()
|
|
actt.present_traffic_type()
|
|
self.assertFalse(actt.update_traffic_type.called)
|
|
self.assertTrue(actt.add_traffic_type.called)
|
|
|
|
def test_traffic_type_returned_if_exists(self):
|
|
set_module_args(base_module_args)
|
|
module = setup_module_object()
|
|
actt = AnsibleCloudStackTrafficType(module)
|
|
actt.get_physical_network = MagicMock(return_value=VALID_LIST_NETWORKS_RESPONSE['physicalnetwork'][0])
|
|
actt.get_traffic_types = MagicMock(return_value=EXISTING_TRAFFIC_TYPES_RESPONSE)
|
|
tt = actt.present_traffic_type()
|
|
self.assertTrue(tt.get('kvmnetworklabel') == base_module_args['kvm_networklabel'])
|
|
self.assertTrue(tt.get('traffictype') == base_module_args['traffic_type'])
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|