Change in osmo-gsm-tester[master]: Inroduce RunNode class

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

pespin gerrit-no-reply at lists.osmocom.org
Tue Feb 11 17:49:37 UTC 2020


pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-gsm-tester/+/17132 )

Change subject: Inroduce RunNode class
......................................................................

Inroduce RunNode class

This class will be used to hold information for a run node, that is, a
target system or environment were a process or task is run.
It superseeds in functionality the old ip_address resource, which will
eventually be droped in favor of RunNode.

Change-Id: I647bedf116aa9a570d925a5281c9491c9032e343
---
M src/osmo_gsm_tester/resource.py
A src/osmo_gsm_tester/run_node.py
M src/osmo_gsm_tester/suite.py
3 files changed, 79 insertions(+), 1 deletion(-)

Approvals:
  Jenkins Builder: Verified
  pespin: Looks good to me, approved



diff --git a/src/osmo_gsm_tester/resource.py b/src/osmo_gsm_tester/resource.py
index 992734d..0cdcb8a 100644
--- a/src/osmo_gsm_tester/resource.py
+++ b/src/osmo_gsm_tester/resource.py
@@ -40,14 +40,19 @@
 RESERVED_RESOURCES_FILE = 'reserved_resources.state'
 
 R_IP_ADDRESS = 'ip_address'
+R_RUN_NODE = 'run_node'
 R_BTS = 'bts'
 R_ARFCN = 'arfcn'
 R_MODEM = 'modem'
 R_OSMOCON = 'osmocon_phone'
-R_ALL = (R_IP_ADDRESS, R_BTS, R_ARFCN, R_MODEM, R_OSMOCON)
+R_ALL = (R_IP_ADDRESS, R_RUN_NODE, R_BTS, R_ARFCN, R_MODEM, R_OSMOCON)
 
 RESOURCES_SCHEMA = {
         'ip_address[].addr': schema.IPV4,
+        'run_node[].run_type': schema.STR,
+        'run_node[].run_addr': schema.IPV4,
+        'run_node[].ssh_user': schema.STR,
+        'run_node[].ssh_addr': schema.IPV4,
         'bts[].label': schema.STR,
         'bts[].type': schema.STR,
         'bts[].ipa_unit_id': schema.UINT,
diff --git a/src/osmo_gsm_tester/run_node.py b/src/osmo_gsm_tester/run_node.py
new file mode 100644
index 0000000..88555a6
--- /dev/null
+++ b/src/osmo_gsm_tester/run_node.py
@@ -0,0 +1,69 @@
+# osmo_gsm_tester: run_node: object holding information on a target env to run stuff.
+#
+# Copyright (C) 2020 by sysmocom - s.f.m.c. GmbH
+#
+# Author: Pau Espin Pedrol <pespin at sysmocom.de>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+from . import log
+
+class RunNode(log.Origin):
+
+    T_LOCAL = 'local'
+    T_REM_SSH = 'ssh'
+
+    def __init__(self, type=None, run_addr=None, ssh_user=None, ssh_addr=None):
+        super().__init__(log.C_RUN, 'runnode')
+        self._type = type
+        self._run_addr = run_addr
+        self._ssh_user = ssh_user
+        self._ssh_addr = ssh_addr
+        if not self._type:
+            raise log.Error('run_type not set')
+        if not self._run_addr:
+            raise log.Error('run_addr not set')
+        if self._type == RunNode.T_LOCAL and (self._ssh_user or self._ssh_addr):
+            raise log.Error('run_type=%s but ssh info set' % RunNode.T_LOCAL)
+        if self._type == RunNode.T_REM_SSH and not (self._ssh_user and self._ssh_addr):
+            raise log.Error('run_type=%s but ssh info NOT set' % RunNode.T_LOCAL)
+
+        if self._type == RunNode.T_LOCAL:
+            self.set_name('run-' + self._run_addr)
+        else:
+            self.set_name('run-' + self._run_addr + "(" + self._ssh_user + '@' + self._ssh_addr + ")")
+
+    @classmethod
+    def from_conf(cls, conf):
+        return cls(conf.get('run_type', None), conf.get('run_addr', None), conf.get('ssh_user', None), conf.get('ssh_addr', None))
+
+    def is_local(self):
+        return self._type == RunNode.T_LOCAL
+
+    def __str__(self):
+        return self.name()
+
+    def run_type(self):
+        return self._type
+
+    def run_addr(self):
+        return self._run_addr
+
+    def ssh_user(self):
+        return self._ssh_user
+
+    def ssh_addr(self):
+        return self._ssh_addr
+
+# vim: expandtab tabstop=4 shiftwidth=4
diff --git a/src/osmo_gsm_tester/suite.py b/src/osmo_gsm_tester/suite.py
index 0738e96..457bfb3 100644
--- a/src/osmo_gsm_tester/suite.py
+++ b/src/osmo_gsm_tester/suite.py
@@ -24,6 +24,7 @@
 from . import config, log, util, resource, test
 from .event_loop import MainLoop
 from . import osmo_nitb, osmo_hlr, osmo_mgcpgw, osmo_mgw, osmo_msc, osmo_bsc, osmo_stp, osmo_ggsn, osmo_sgsn, esme, osmocon, ms_driver, iperf3, process
+from . import run_node
 
 class Timeout(Exception):
     pass
@@ -358,6 +359,9 @@
         self.register_for_cleanup(esme_obj)
         return esme_obj
 
+    def run_node(self, specifics=None):
+        return run_node.RunNode.from_conf(self.reserved_resources.get(resource.R_RUN_NODE, specifics=specifics))
+
     def osmocon(self, specifics=None):
         conf = self.reserved_resources.get(resource.R_OSMOCON, specifics=specifics)
         osmocon_obj = osmocon.Osmocon(self, conf=conf)

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-gsm-tester/+/17132
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-gsm-tester
Gerrit-Branch: master
Gerrit-Change-Id: I647bedf116aa9a570d925a5281c9491c9032e343
Gerrit-Change-Number: 17132
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: pespin <pespin at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20200211/b6acbf42/attachment.htm>


More information about the gerrit-log mailing list