diff options
author | opensource-tnbt <sridhar.rao@spirent.com> | 2020-11-11 22:55:02 +0530 |
---|---|---|
committer | opensource-tnbt <sridhar.rao@spirent.com> | 2020-11-25 12:27:15 +0530 |
commit | 9ec3918b56f1e8862fe140455928cdcd87a2554b (patch) | |
tree | 8823eb095639dce15a411f645ce32149c870dfd6 /tools/os_deploy_tgen/osclients/openstack.py | |
parent | 605102bb6a8a3b48f0c66d817614eec0ef42e017 (diff) |
Openstack: Using VSPERF to Test on Openstack.
This patch will support running VSPERF Tests with Openstack.
This patch adds the following:
1. Provide --openstack parameter.
2. New Configuration file for openstack
3. Deploy Trafficgenerator based on configuration provided
4. Run Tests after Trafficgenerator are deployed on openstack
Update-1: Minor bug-fixes and Documentation Added.
Update-2: Add user-config to heat.
Update-3: Update Python Requirements
Update-4: Add dogpile
Update-5: Update decription of the Hot files.
Signed-off-by: Sridhar K. N. Rao <sridhar.rao@spirent.com>
Change-Id: Iebec356eb893e0e6726cac6a10537b99e41f67f4
Diffstat (limited to 'tools/os_deploy_tgen/osclients/openstack.py')
-rw-r--r-- | tools/os_deploy_tgen/osclients/openstack.py | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/tools/os_deploy_tgen/osclients/openstack.py b/tools/os_deploy_tgen/osclients/openstack.py new file mode 100644 index 00000000..58297e6c --- /dev/null +++ b/tools/os_deploy_tgen/osclients/openstack.py @@ -0,0 +1,82 @@ +# Copyright (c) 2020 Mirantis Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Openstack Client - Main File +""" + +import os_client_config +from oslo_log import log as logging +from oslo_utils import importutils + +LOG = logging.getLogger(__name__) + + +class OpenStackClientException(Exception): + ''' + Custom Exception + ''' + + +def init_profiling(os_profile): + """ + Initialize Profiling + """ + if os_profile: + osprofiler_profiler = importutils.try_import("osprofiler.profiler") + + if osprofiler_profiler: # lib is present + osprofiler_profiler.init(os_profile) + trace_id = osprofiler_profiler.get().get_base_id() + LOG.info('Profiling is enabled, trace id: %s', trace_id) + else: # param is set, but lib is not present + LOG.warning('Profiling could not be enabled. To enable profiling ' + 'please install "osprofiler" library') + + +class OpenStackClient(): + """ + Client Class + """ + def __init__(self, openstack_params): + """ + Initialize + """ + LOG.debug('Establishing connection to OpenStack') + + init_profiling(openstack_params.get('os_profile')) + + config = os_client_config.OpenStackConfig() + cloud_config = config.get_one_cloud(**openstack_params) + if openstack_params['os_insecure']: + cloud_config.config['verify'] = False + cloud_config.config['cacert'] = None + self.keystone_session = cloud_config.get_session() + self.nova = cloud_config.get_legacy_client('compute') + self.neutron = cloud_config.get_legacy_client('network') + self.glance = cloud_config.get_legacy_client('image') + + # heat client wants endpoint to be always set + endpoint = cloud_config.get_session_endpoint('orchestration') + if not endpoint: + raise OpenStackClientException( + 'Endpoint for orchestration service is not found') + self.heat = cloud_config.get_legacy_client('orchestration', + endpoint=endpoint) + + # Ping OpenStack + self.keystone_session.get_token() + + LOG.info('Connection to OpenStack is initialized') |