aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--functest/opnfv_tests/vnf/epc/juju_epc.py51
1 files changed, 39 insertions, 12 deletions
diff --git a/functest/opnfv_tests/vnf/epc/juju_epc.py b/functest/opnfv_tests/vnf/epc/juju_epc.py
index 283a152f..dc92bc92 100644
--- a/functest/opnfv_tests/vnf/epc/juju_epc.py
+++ b/functest/opnfv_tests/vnf/epc/juju_epc.py
@@ -17,27 +17,28 @@ import sys
import uuid
from copy import deepcopy
from urlparse import urljoin
+import pkg_resources
+import yaml
from functest.core import vnf
from functest.opnfv_tests.openstack.snaps import snaps_utils
from functest.utils.constants import CONST
-import functest.utils.openstack_utils as os_utils
-import pkg_resources
from snaps.config.flavor import FlavorConfig
from snaps.config.image import ImageConfig
from snaps.config.network import NetworkConfig, SubnetConfig
from snaps.config.router import RouterConfig
+from snaps.config.security_group import (
+ Direction, Protocol, SecurityGroupConfig, SecurityGroupRuleConfig)
from snaps.config.user import UserConfig
from snaps.openstack.create_flavor import OpenStackFlavor
from snaps.openstack.create_image import OpenStackImage
from snaps.openstack.create_network import OpenStackNetwork
from snaps.openstack.create_router import OpenStackRouter
+from snaps.openstack.create_security_group import OpenStackSecurityGroup
from snaps.openstack.create_user import OpenStackUser
from snaps.openstack.utils import keystone_utils
-from snaps.openstack.utils import neutron_utils
from snaps.openstack.utils import nova_utils
-import yaml
__author__ = "Amarendra Meher <amarendra@rebaca.com>"
__author__ = "Soumaya K Nayek <soumaya.nayek@rebaca.com>"
@@ -185,6 +186,21 @@ class JujuEpc(vnf.VnfOnBoarding):
credentials_yaml)):
raise vnf.VnfPreparationException
+ def _add_custom_rule(self, sec_grp_name):
+ """ To add custom rule for SCTP Traffic """
+ sec_grp_rules = list()
+ security_group_init = OpenStackSecurityGroup(
+ self.snaps_creds,
+ SecurityGroupConfig(
+ name=sec_grp_name,
+ rule_settings=sec_grp_rules))
+ security_group_init.initialize()
+ sctp_rule = SecurityGroupRuleConfig(
+ sec_grp_name=sec_grp_name, direction=Direction.ingress,
+ protocol=Protocol.sctp)
+ security_group_init.add_rule(sctp_rule)
+ self.created_object.append(security_group_init)
+
def prepare(self):
"""Prepare testcase (Additional pre-configuration steps)."""
self.__logger.info("Additional pre-configuration steps")
@@ -267,7 +283,7 @@ class JujuEpc(vnf.VnfOnBoarding):
"OS_REGION_NAME", self.default_region_name),
self.public_auth_url))
self.created_object.append(image_creator)
- self.__logger.info("Credential information : %s", net_id)
+ self.__logger.info("Network ID : %s", net_id)
juju_bootstrap_command = (
'juju bootstrap abot-epc abot-controller --config network={} '
'--metadata-source ~ --config ssl-hostname-verification=false '
@@ -297,20 +313,21 @@ class JujuEpc(vnf.VnfOnBoarding):
self.__logger.info("juju wait completed: %s", status)
self.__logger.info("Deployed Abot-epc on Openstack")
nova_client = nova_utils.nova_client(self.snaps_creds)
- neutron_client = neutron_utils.neutron_client(self.snaps_creds)
if status == 0:
- instances = os_utils.get_instances(nova_client)
+ instances = get_instances(nova_client)
+ self.__logger.info("List of Instance: %s", instances)
for items in instances:
metadata = get_instance_metadata(nova_client, items)
if 'juju-units-deployed' in metadata:
- sec_group = ('juju-' + metadata['juju-controller-uuid'] +
+ sec_group = ('juju-' +
+ metadata['juju-controller-uuid'] +
'-' + metadata['juju-model-uuid'])
- self.sec_group_id = os_utils.get_security_group_id(
- neutron_client, sec_group)
+ self.__logger.info("Instance: %s", sec_group)
break
self.__logger.info("Adding Security group rule....")
- os_utils.create_secgroup_rule(
- neutron_client, self.sec_group_id, 'ingress', 132)
+ # This will add sctp rule to a common Security Group Created
+ # by juju and shared to all deployed units.
+ self._add_custom_rule(sec_group)
self.__logger.info("Copying the feature files to Abot_node ")
os.system('juju scp -- -r {}/featureFiles abot-'
'epc-basic/0:~/'.format(self.case_dir))
@@ -481,6 +498,16 @@ def update_data(obj):
return obj
+def get_instances(nova_client):
+ """ To get all vm info of a project """
+ try:
+ instances = nova_client.servers.list()
+ return instances
+ except Exception as exc: # pylint: disable=broad-except
+ logging.error("Error [get_instances(nova_client)]: %s", exc)
+ return None
+
+
def get_instance_metadata(nova_client, instance):
""" Get instance Metadata - Instance ID """
try: