Source code for geni.aggregate.protogeni

# Copyright (c) 2013-2017  Barnstormer Softworks, Ltd.

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

from __future__ import absolute_import

import inspect
import sys

from .core import AM, APIRegistry

[docs]class PGCompute(AM): def __init__ (self, name, host, cmid = None, url = None): if url is None: url = "https://%s:12369/protogeni/xmlrpc/am/2.0" % (host) self.urlv3 = "%s3.0" % (url[:-3]) self._apiv3 = APIRegistry.get("amapiv3") super(PGCompute, self).__init__(name, url, "amapiv2", "pg", cmid)
[docs] def geniRestart (self, context, sname, urns): if not isinstance(urns, list): urns = [urns] return self._apiv3.poa(context, self.urlv3, sname, "geni_restart", urns)
[docs] def geniStart (self, context, sname): return self._apiv3.poa(context, self.urlv3, sname, "geni_start")
[docs] def geniUpdateUsers (self, context, sname, user_info_list): # user_info_list: # [ { "urn" : <str>, "keys" : [ <str>, ...] }, ... ] return self._apiv3.poa(context, self.urlv3, sname, "geni_update_users", options = {"geni_users" : user_info_list})
[docs] def geniCancelUpdateUsers (self, context, sname): return self._apiv3.poa(context, self.urlv3, sname, "geni_updating_users_cancel")
[docs] def getConsoleURL (self, context, sname, urn): return self._apiv3.poa(context, self.urlv3, sname, "geni_console_url", urns = [urn])
Kentucky_PG = PGCompute('pg-kentucky', 'www.uky.emulab.net', 'urn:publicid:IDN+uky.emulab.net+authority+cm') UTAH_PG = PGCompute('pg-utah', 'www.emulab.net', 'urn:publicid:IDN+emulab.net+authority+cm') Wall2_PG = PGCompute("pg-wall2", "www.wall2.ilabt.iminds.be", "urn:publicid:IDN+wall2.ilabt.iminds.be+authority+cm") Wall1_PG = PGCompute("pg-wall1", "www.wall1.ilabt.iminds.be", "urn:publicid:IDN+wall1.ilabt.iminds.be+authority+cm") wilab_PG = PGCompute("pg-wilab", "www.wilab2.ilabt.iminds.be", "urn:publicid:IDN+wilab2.ilabt.iminds.be+authority+cm")
[docs]def aggregates (): module = sys.modules[__name__] for _,obj in inspect.getmembers(module): if isinstance(obj, AM): yield obj
[docs]def name_to_aggregate (): result = dict() module = sys.modules[__name__] for _,obj in inspect.getmembers(module): if isinstance(obj, AM): result[obj.name] = obj return result