import re
import socket
import utils
+import copy
+from PLCs import PLC, PLCs
+from Sites import Site, Sites
+from Nodes import Node, Nodes
+from Slices import Slice, Slices
+from Persons import Person, Persons
class Config:
path = os.path.dirname(os.path.abspath(__file__))
- tests_path = path + os.sep + 'tests'
- node_tests_path = tests_path + os.sep + 'node'
- slice_tests_path = tests_path + os.sep + 'slice'
+ tests_path = path + os.sep + 'tests' + os.sep
+ node_tests_path = tests_path + os.sep + 'node' + os.sep
+ slice_tests_path = tests_path + os.sep + 'slice' + os.sep
+ vserver_scripts_path = path + os.sep + 'vserver' + os.sep
+ qemu_scripts_path = path + os.sep + 'qemu' + os.sep
- def update_api(self):
+ def update_api(self, plc = None):
# Set up API acccess
- # Try importing the API shell for direct api access.
- # If that fails fall back to using xmlrpm
- try:
- sys.path.append('/usr/share/plc_api')
- from PLC.Shell import Shell
- shell = Shell(globals = globals())
+ # If plc is specified, find its configuration
+ # and use its API
+ if plc is not None:
+ host, path, port = plc['host'], plc['api_path'], plc['port']
+ api_server = "https://%(host)s:%(port)s/%(path)s" % locals()
+ self.api = xmlrpclib.Server(api_server, allow_none = 1)
+ self.api_type = 'xmlrpc'
+ else:
+
+ # Try importing the API shell for direct api access.
+ # If that fails fall back to using xmlrpm
+ try:
+ sys.path.append('/usr/share/plc_api')
+ from PLC.Shell import Shell
+ shell = Shell(globals = globals())
- # test it
- shell.GetRoles()
- self.api = shell
- self.api_type = 'direct'
- except:
- self.api = xmlrpclib.Server('https://%s/PLCAPI/' % self.PLC_API_HOST, allow_none = 1)
- self.api_type = 'xmlrpc'
+ # test it
+ shell.GetRoles()
+ self.api = shell
+ self.api_type = 'direct'
+ except:
+ self.api = xmlrpclib.Server('https://%s/PLCAPI/' % self.PLC_API_HOST, allow_none = 1)
+ self.api_type = 'xmlrpc'
def __init__(self, config_file = path+os.sep+'qa_config'):
# Load config file
# try setting hostname and ip
self.hostname = socket.gethostname()
- (stdout, stderr) = utils.popen("/sbin/ifconfig eth0 | grep 'inet addr'")
- inet_addr = re.findall('inet addr:[0-9\.^\w]*', stdout[0])[0]
- parts = inet_addr.split(":")
- self.ip = parts[1]
+ try:
+ (stdout, stderr) = utils.popen("/sbin/ifconfig eth0 | grep 'inet addr'")
+ inet_addr = re.findall('inet addr:[0-9\.^\w]*', stdout[0])[0]
+ parts = inet_addr.split(":")
+ self.ip = parts[1]
+ except:
+ self.ip = '127.0.0.1'
api_host = self.__dict__.get("PLC_API_HOST",self.ip)
self.PLC_API_HOST=api_host
node_test_files = os.listdir(self.node_tests_path)
self.node_test_files = filter(valid_node_test_files, node_test_files)
+ def load(self, conffile):
+
+ confdata = {}
+ try: execfile(conffile, confdata)
+ except: raise
+
+ from Nodes import Nodes
+ from PLCs import PLCs
+ loadables = ['plcs', 'sites', 'nodes', 'slices', 'persons']
+ config = Config()
+ for loadable in loadables:
+ if loadable in confdata and loadable in ['plcs']:
+ setattr(self, loadable, PLCs(config, confdata[loadable]))
+ elif loadable in confdata and loadable in ['nodes']:
+ setattr(self, loadable, Nodes(config, confdata[loadable]))
+ elif loadable in confdata and loadable in ['sites']:
+ setattr(self, loadable, Sites(confdata[loadable]))
+ elif loadable in confdata and loadable in ['slices']:
+ setattr(self, loadable, Slices(confdata[loadable]))
+ elif loadable in confdata and loadable in ['persons']:
+ setattr(self, loadable, Persons(confdata[loadable]))
+
+