blob: 3a65dc3708b821e6c17485a2380311166c8473e2 [file] [log] [blame]
import os
#os.environ.setdefault("DJANGO_SETTINGS_MODULE", "planetstack.settings")
import sys
from optparse import OptionParser
from getpass import getpass
import xmlrpclib
from plclassic.site_importer import SiteImporter
from plclassic.user_importer import UserImporter
from plclassic.slice_importer import SliceImporter
from plclassic.sliver_importer import SliverImporter
class Call:
def __init__(self, callable, auth):
self.callable = callable
self.auth = auth
def __call__(self, *args, **kwds):
a = [self.auth] + list(args)
return self.callable(*a)
class API():
def __init__(self, username, password, url):
self.auth = {'AuthMethod': 'password',
'Username': username,
'AuthString': password}
self.server = xmlrpclib.ServerProxy(url, allow_none=True)
def __getattr__(self, name):
return Call(getattr(self.server, name), self.auth)
class Importer:
def __init__(self, username, password, url):
api = API(username, password, url)
self.sites = SiteImporter(api)
self.slices = SliceImporter(api)
self.users = UserImporter(api)
self.slivers = SliverImporter(api)
def run(self):
self.sites.run()
self.users.run()
self.slices.run(remote_sites=self.sites.remote_sites,
local_sites=self.sites.local_sites)
self.slivers.run()
if __name__ == '__main__':
parser = OptionParser()
parser.add_option("-u", "--username", dest="username",
help="PLC username with which to authenticate")
parser.add_option("", "--url", dest="url",
help="PLC url to contact")
(config, args) = parser.parse_args()
if len(sys.argv) == 1:
parser.print_help()
sys.exit(1)
password = None
try:
password = getpass()
except (EOFError, KeyboardInterrupt):
print
sys.exit(0)
Importer(config.username, password, config.url).run()