-#!/usr/bin/python
+#!/usr/bin/python2
#
# Copyright (c) 2003 Intel Corporation
# All rights reserved.
# Copyright (c) 2004-2006 The Trustees of Princeton University
# All rights reserved.
+from __future__ import print_function
+
import os
import xmlrpclib
+import ssl
import socket
import string
# define the basic partition paths
PARTITIONS = {}
- PARTITIONS["root"] = "/dev/planetlab/root"
- PARTITIONS["swap"] = "/dev/planetlab/swap"
- PARTITIONS["vservers"] = "/dev/planetlab/vservers"
+# PARTITIONS["root"] = "/dev/planetlab/root"
+# PARTITIONS["swap"] = "/dev/planetlab/swap"
+# PARTITIONS["vservers"] = "/dev/planetlab/vservers"
# Linux 2.6 mounts LVM with device mapper
- PARTITIONS["mapper-root"] = "/dev/mapper/planetlab-root"
- PARTITIONS["mapper-swap"] = "/dev/mapper/planetlab-swap"
- PARTITIONS["mapper-vservers"] = "/dev/mapper/planetlab-vservers"
+ PARTITIONS["root"] = "/dev/mapper/planetlab-root"
+ PARTITIONS["swap"] = "/dev/mapper/planetlab-swap"
+ PARTITIONS["vservers"] = "/dev/mapper/planetlab-vservers"
vars["PARTITIONS"] = PARTITIONS
log.write("Opening connection to API server\n")
try:
- api_inst = xmlrpclib.Server(vars['BOOT_API_SERVER'], verbose=0)
- except KeyError as e:
+ server_url = vars['BOOT_API_SERVER']
+ except:
raise BootManagerException("configuration file does not specify API server URL")
+
+ api_inst = None
+ # preferred strategy : select tlsv1 as the encryption protocol
+ try:
+ ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
+ api_inst = xmlrpclib.ServerProxy(server_url,
+ context=ssl_context,
+ verbose=0)
+ # this is only supported in python >= 2.7.9 though, so allow for failure
+ except:
+ print("Default xmlrpclib strategy failed")
+ import traceback
+ traceback.print_exc()
+ pass
+
+ # if that failed, resort to the old-fashioned code
+ if api_inst is None:
+ api_inst = xmlrpclib.ServerProxy(server_url, verbose=0)
vars['API_SERVER_INST'] = api_inst