summaryrefslogtreecommitdiffstats
path: root/contrib/nettest/nettest/stcv_stack.py
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/nettest/nettest/stcv_stack.py')
-rw-r--r--contrib/nettest/nettest/stcv_stack.py165
1 files changed, 0 insertions, 165 deletions
diff --git a/contrib/nettest/nettest/stcv_stack.py b/contrib/nettest/nettest/stcv_stack.py
deleted file mode 100644
index 7c1d4336..00000000
--- a/contrib/nettest/nettest/stcv_stack.py
+++ /dev/null
@@ -1,165 +0,0 @@
-##############################################################################
-# Copyright (c) 2018 Spirent Communications and others.
-#
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
-
-import logging
-import os
-from time import sleep
-import traceback
-
-import heatclient.client as heatclient
-from keystoneauth1 import loading
-from keystoneauth1 import session
-
-
-class StcvStack(object):
- STCV_CONFIG_FILE = 'stcv_config_file'
- STCV_HEAT_FILE = './heat_2stcv.yaml'
-
- def __init__(self, name, **kwargs):
- self.logger = logging.getLogger(__name__)
-
- self.name = name
- self.pub_net_name = kwargs.get('pub_net_name')
- self.ntp_server_ip = kwargs.get('ntp_server_ip')
- self.lab_server_ip = kwargs.get('lab_server_ip')
- self.stcv_image = kwargs.get('stcv_image')
- self.stcv_flavor = kwargs.get('stcv_flavor')
- if kwargs.get('stcv_affinity'):
- self.stcv_affinity = 'affinity'
- else:
- self.stcv_affinity = 'anti-affinity'
-
- self.stack_id = None
- self._heatc_lient = None
-
- def _attach_to_openstack(self):
- creds = {"username": os.environ.get('OS_USERNAME'),
- "password": os.environ.get('OS_PASSWORD'),
- "auth_url": os.environ.get('OS_AUTH_URL'),
- "project_domain_id": os.environ.get('OS_PROJECT_DOMAIN_ID'),
- "project_domain_name": os.environ.get('OS_PROJECT_DOMAIN_NAME'),
- "project_id": os.environ.get('OS_PROJECT_ID'),
- "project_name": os.environ.get('OS_PROJECT_NAME'),
- "tenant_name": os.environ.get('OS_TENANT_NAME'),
- "tenant_id": os.environ.get("OS_TENANT_ID"),
- "user_domain_id": os.environ.get('OS_USER_DOMAIN_ID'),
- "user_domain_name": os.environ.get('OS_USER_DOMAIN_NAME')
- }
-
- self.logger.debug("Creds: %s" % creds)
-
- loader = loading.get_plugin_loader('password')
- auth = loader.load_from_options(**creds)
- sess = session.Session(auth)
- self._heat_client = heatclient.Client("1", session=sess)
-
- def _make_parameters(self):
- return {
- 'public_net_name': self.pub_net_name,
- 'stcv_image': self.stcv_image,
- 'stcv_flavor': self.stcv_flavor,
- 'stcv_sg_affinity': self.stcv_affinity,
- 'ntp_server_ip': self.ntp_server_ip
- }
-
- def acquire_ip_from_stack_output(self, output, key_name):
- ip = None
- for item in output:
- if item['output_key'] == key_name:
- ip = item['output_value']
- if isinstance(ip, list):
- ip = ip[0]['ip_address']
- break
-
- return ip
-
- def create_stack(self):
- with open(self.STCV_HEAT_FILE) as fd:
- template = fd.read()
-
- self._attach_to_openstack()
-
- self.logger.debug("Creating stack")
-
- stack = self._heat_client.stacks.create(
- stack_name=self.name,
- template=template,
- parameters=self._make_parameters())
-
- self.stack_id = stack['stack']['id']
-
- while True:
- stack = self._heat_client.stacks.get(self.stack_id)
- status = getattr(stack, 'stack_status')
- self.logger.debug("Stack status=%s" % (status,))
- if (status == u'CREATE_COMPLETE'):
- self.stcv1_ip = self.acquire_ip_from_stack_output(stack.outputs, "STCv_1_Mgmt_Ip")
- self.stcv2_ip = self.acquire_ip_from_stack_output(stack.outputs, "STCv_2_Mgmt_Ip")
- self.stcv1_tst_ip = self.acquire_ip_from_stack_output(stack.outputs, "STCv_1_Tst_Ip")
- self.stcv2_tst_ip = self.acquire_ip_from_stack_output(stack.outputs, "STCv_2_Tst_Ip")
- break
- if (status == u'DELETE_COMPLETE'):
- self.stack_id = None
- break
- if (status == u'CREATE_FAILED'):
- self.status_reason = getattr(stack, 'stack_status_reason')
- sleep(5)
- self._heat_client.stacks.delete(stack_id=self.stack_id)
- sleep(2)
-
- def delete_stack(self):
- if self.stack_id is None:
- raise Exception('stack does not exist')
-
- self._attach_to_openstack()
- while True:
- stack = self._heat_client.stacks.get(self.stack_id)
- status = getattr(stack, 'stack_status')
- self.logger.debug("Stack status=%s" % (status,))
- if (status == u'CREATE_COMPLETE'):
- self._heat_client.stacks.delete(stack_id=self.stack_id)
- if (status == u'DELETE_COMPLETE'):
- self.stack_id = None
- break
- if (status == u'DELETE_FAILED'):
- sleep(5)
- self._heat_client.stacks.delete(stack_id=self.stack_id)
- sleep(2)
-
- def get_west_stcv_ip(self):
- return self.stcv1_ip
-
- def get_west_stcv_tst_ip(self):
- return self.stcv1_tst_ip
-
- def get_east_stcv_ip(self):
- return self.stcv2_ip
-
- def get_east_stcv_tst_ip(self):
- return self.stcv2_tst_ip
-
-
-if __name__ == '__main__':
- try:
- stack = StcvStack(name='stack1',
- pub_net_name='external',
- ntp_server_ip='192.168.37.151',
- stcv_image='stcv-4.79',
- stcv_flavor='m1.tiny',
- affinity=False)
- stack.create_stack()
-
- print stack.get_east_stcv_ip()
- print stack.get_east_stcv_tst_ip()
- print stack.get_west_stcv_ip()
- print stack.get_west_stcv_tst_ip()
-
- except Exception as err:
- excstr = traceback.format_exc()
- print excstr