OsmoBtsOctphy: Integrate with OsmoPcu and OsmoSgsn

Change-Id: I54780971d711d47b23976dd044a4a53134dd4299
diff --git a/src/osmo_gsm_tester/bts_octphy.py b/src/osmo_gsm_tester/bts_octphy.py
index d9ffd6e..90eeb40 100644
--- a/src/osmo_gsm_tester/bts_octphy.py
+++ b/src/osmo_gsm_tester/bts_octphy.py
@@ -20,11 +20,12 @@
 import os
 import pprint
 import tempfile
-from . import log, config, util, template, process, event_loop
+from . import log, config, util, template, process, event_loop, pcu_osmo
 
 class OsmoBtsOctphy(log.Origin):
     suite_run = None
     bsc = None
+    sgsn = None
     run_dir = None
     inst = None
     env = None
@@ -33,6 +34,7 @@
     lac = None
     cellid = None
     proc_bts = None
+    _pcu = None
 
     BIN_BTS_OCTPHY = 'osmo-bts-octphy'
 
@@ -56,6 +58,11 @@
                 pass
             os.rmdir(self.pcu_sk_tmp_dir)
 
+    def pcu(self):
+        if self._pcu is None:
+            self._pcu = pcu_sysmo.OsmoPcuSysmo(self.suite_run, self, self.conf)
+        return self._pcu
+
     def pcu_socket_path(self):
         return os.path.join(self.pcu_sk_tmp_dir, 'pcu_bts')
 
@@ -165,6 +172,10 @@
         if self.cellid is not None:
             config.overlay(values, { 'cell_identity': self.cellid })
         config.overlay(values, self.conf)
+
+        sgsn_conf = {} if self.sgsn is None else self.sgsn.conf_for_client()
+        config.overlay(values, sgsn_conf)
+
         self.dbg(conf=values)
         return values
 
@@ -176,6 +187,9 @@
     def set_bsc(self, bsc):
         self.bsc = bsc
 
+    def set_sgsn(self, sgsn):
+        self.sgsn = sgsn
+
     def set_lac(self, lac):
         self.lac = lac