From 1ef095e709e0b8ac3ccdb47c4b4a619610a12bc2 Mon Sep 17 00:00:00 2001 From: Finn <finn.ball@codethink.co.uk> Date: Mon, 29 Oct 2018 15:49:02 +0000 Subject: [PATCH] Remove hardware descriptions from bot_session. Also move `bot_session` to simply `session`. --- buildgrid/bot/{bot_session.py => session.py} | 117 +++---------------- 1 file changed, 13 insertions(+), 104 deletions(-) rename buildgrid/bot/{bot_session.py => session.py} (55%) diff --git a/buildgrid/bot/bot_session.py b/buildgrid/bot/session.py similarity index 55% rename from buildgrid/bot/bot_session.py rename to buildgrid/bot/session.py index 8110d4671..b0e8581b3 100644 --- a/buildgrid/bot/bot_session.py +++ b/buildgrid/bot/session.py @@ -18,7 +18,7 @@ """ Bot Session -==== +=========== Allows connections """ @@ -36,7 +36,7 @@ from buildgrid._exceptions import BotError class BotSession: - def __init__(self, parent, interface): + def __init__(self, parent, interface, worker): """ Unique bot ID within the farm used to identify this bot Needs to be human readable. All prior sessions with bot_id of same ID are invalidated. @@ -45,23 +45,20 @@ class BotSession: """ self.logger = logging.getLogger(__name__) - - self._bot_id = '{}.{}'.format(parent, platform.node()) self._context = None + + self._worker = worker self._interface = interface self._leases = {} - self._name = None self._parent = parent self._status = BotStatus.OK.value - self._work = None - self._worker = None + + self.__bot_id = '{}.{}'.format(parent, platform.node()) + self.__name = None @property def bot_id(self): - return self._bot_id - - def add_worker(self, worker): - self._worker = worker + return self.__bot_id def create_bot_session(self, work, context=None): self.logger.debug("Creating bot session") @@ -69,15 +66,15 @@ class BotSession: self._context = context session = self._interface.create_bot_session(self._parent, self.get_pb2()) - self._name = session.name + self.__name = session.name - self.logger.info("Created bot session with name: [{}]".format(self._name)) + self.logger.info("Created bot session with name: [{}]".format(self.__name)) for lease in session.leases: self._update_lease_from_server(lease) def update_bot_session(self): - self.logger.debug("Updating bot session: [{}]".format(self._bot_id)) + self.logger.debug("Updating bot session: [{}]".format(self.__bot_id)) session = self._interface.update_bot_session(self.get_pb2()) for k, v in list(self._leases.items()): if v.state == LeaseState.COMPLETED.value: @@ -94,8 +91,8 @@ class BotSession: return bots_pb2.BotSession(worker=self._worker.get_pb2(), status=self._status, leases=leases, - bot_id=self._bot_id, - name=self._name) + bot_id=self.__bot_id, + name=self.__name) def lease_completed(self, lease): lease.state = LeaseState.COMPLETED.value @@ -133,91 +130,3 @@ class BotSession: self.logger.debug("Work complete: [{}]".format(lease.id)) self.lease_completed(lease) - - -class Worker: - def __init__(self, properties=None, configs=None): - self.properties = {} - self._configs = {} - self._devices = [] - - if properties: - for k, v in properties.items(): - if k == 'pool': - self.properties[k] = v - else: - raise KeyError('Key not supported: [{}]'.format(k)) - - if configs: - for k, v in configs.items(): - if k == 'DockerImage': - self.configs[k] = v - else: - raise KeyError('Key not supported: [{}]'.format(k)) - - @property - def configs(self): - return self._configs - - def add_device(self, device): - self._devices.append(device) - - def get_pb2(self): - devices = [device.get_pb2() for device in self._devices] - worker = worker_pb2.Worker(devices=devices) - property_message = worker_pb2.Worker.Property() - for k, v in self.properties.items(): - property_message.key = k - property_message.value = v - worker.properties.extend([property_message]) - - config_message = worker_pb2.Worker.Config() - for k, v in self.properties.items(): - property_message.key = k - property_message.value = v - worker.configs.extend([config_message]) - - return worker - - -class Device: - def __init__(self, properties=None): - """ Creates devices available to the worker - The first device is know as the Primary Device - the revice which - is running a bit and responsible to actually executing commands. - All other devices are known as Attatched Devices and must be controlled - by the Primary Device. - """ - - self._name = str(uuid.uuid4()) - self._properties = {} - - if properties: - for k, v in properties.items(): - if k == 'os': - self._properties[k] = v - - elif k == 'docker': - if v not in ('True', 'False'): - raise ValueError('Value not supported: [{}]'.format(v)) - self._properties[k] = v - - else: - raise KeyError('Key not supported: [{}]'.format(k)) - - @property - def name(self): - return self._name - - @property - def properties(self): - return self._properties - - def get_pb2(self): - device = worker_pb2.Device(handle=self._name) - property_message = worker_pb2.Device.Property() - for k, v in self._properties.items(): - property_message.key = k - property_message.value = v - device.properties.extend([property_message]) - return device -- GitLab