import paramiko
import re
import socket
+import sys
import subprocess
import tempfile
import teuthology
from teuthology.config import set_config_attr
from teuthology.orchestra import connection
from teuthology import misc
-from openstack import connection as openstack_connection
from yaml.representer import SafeRepresenter
+try:
+ from openstack import connection as openstack_connection
+except ImportError:
+ openstack_connection = None
+
class cmd_str(str): pass
def cmd_repr(dumper, data):
' you are encouraged to add a comment if you want it to be'
' fixed.')
-class OpenStackInstance(object):
+def create_connection():
+ if openstack_connection is None:
+ raise RuntimeError(
+ "Did not find required openstack dependencies. "
+ f"Try: {sys.executable} -m pip install -e .[openstack]"
+ )
+ return openstack_connection.from_config(cloud=None)
+
+class OpenStackInstance(object):
def __init__(self, name_or_id, info=None):
self.name_or_id = name_or_id
self.private_or_floating_ip = None
self.private_ip = None
self.info = info
- self.conn = self._create_connection()
+ self.conn = create_connection()
if info is None:
self.set_info()
else:
errmsg = '{}: {}'.format(errmsg, self.info['message'])
raise Exception(errmsg)
- def _create_connection(self):
- return openstack_connection.from_config(cloud=None)
-
def set_info(self):
try:
server = self.conn.compute.find_server(self.name_or_id)
self.username = 'ubuntu'
self.up_string = "UNKNOWN"
self.teuthology_suite = 'teuthology-suite'
- self.conn = self._create_connection()
+ self.conn = create_connection()
token = None
token_expires = None
token_cache_duration = 3600
- def _create_connection(self):
- return openstack_connection.from_config(cloud=None)
-
def cache_token(self):
if self.provider != 'ovh':
return False