From b2846fda3c56a01a4ed2cab417a67edfdb4632db Mon Sep 17 00:00:00 2001
From: Cyril Danilevski <cydanil@gmail.com>
Date: Thu, 3 Jun 2021 10:31:17 +0200
Subject: [PATCH] Remove support for dark queries in webservice

---
 webservice/webservice.py | 117 +--------------------------------------
 1 file changed, 1 insertion(+), 116 deletions(-)

diff --git a/webservice/webservice.py b/webservice/webservice.py
index 8a911cdbb..fe81a09fc 100644
--- a/webservice/webservice.py
+++ b/webservice/webservice.py
@@ -737,8 +737,7 @@ class ActionsServer:
         return res
 
     accepted_actions = {
-        'correct', 'dark', 'dark_request', 'query-rid', 'upload-yaml',
-        'update_conf',
+        'correct', 'dark_request', 'query-rid', 'upload-yaml', 'update_conf',
     }
 
     # Handler methods for each available action ------------------------------
@@ -857,120 +856,6 @@ class ActionsServer:
 
         return queued_msg.encode()
 
-    async def handle_dark(
-            self, rid, _sase, instrument, cycle, proposal, karabo_ids,
-            karabo_das, *runs
-    ):
-        request_time = datetime.now().strftime('%Y-%m-%dT%H:%M:%S')
-        try:
-            run_mapping = {}
-            wait_runs = []
-
-            karabo_ids = karabo_ids.split(',')
-            karabo_das = karabo_das.split(',')
-
-            for i, run in enumerate(runs):
-                erun = ast.literal_eval(run)
-                if isinstance(erun, (list, tuple)):
-                    typ, runnr = erun
-                    if typ == "reservation":
-                        continue
-                    runnr = runnr.strip('r')
-                    run_mapping[typ] = runnr
-                    wait_runs.append(runnr)
-                else:
-                    run_mapping['no_mapping_{}'.format(i)] = erun
-                    wait_runs.append(erun)
-
-            proposal = self._normalise_proposal_num(proposal)
-            pconf_full = self.load_proposal_config(cycle, proposal)
-
-            data_conf = pconf_full['data-mapping']
-            if instrument in pconf_full['dark']:
-                pconf = pconf_full['dark'][instrument]
-            else:
-                logging.info(f'Instrument {instrument} is unknown')
-                return Errors.NOT_CONFIGURED.encode()
-
-            # Run over all available detectors
-            if karabo_ids[0] == 'all':
-                karabo_ids = list(pconf.keys())
-
-            in_folder = self.config['dark']['in-folder'].format(
-                instrument=instrument, cycle=cycle, proposal=proposal)
-            out_folder = self.config['dark']['out-folder'].format(
-                instrument=instrument, cycle=cycle, proposal=proposal,
-                runs="_".join(wait_runs))
-
-        except Exception as e:
-            msg = Errors.JOB_LAUNCH_FAILED.format('dark', e)
-            logging.error(msg, exc_info=e)
-            return msg.encode()
-
-        async def _continue():
-            """Runs in the background after we reply to the 'dark' request"""
-            transfer_complete = await wait_transfers(
-                wait_runs, in_folder, proposal
-            )
-            if not transfer_complete:
-                return  # Timed out
-
-            detectors = {}
-
-            # Prepare configs for all requested detectors
-            for karabo_id in karabo_ids:
-
-                # use selected karabo_das
-                karabo_das_for_id = karabo_das
-                if karabo_das[0] == 'all':
-                    karabo_das_for_id = data_conf[karabo_id]["karabo-da"]
-
-                # Check if any files for given karabo-das exists
-                if check_files(in_folder, wait_runs, karabo_das_for_id):
-                    thisconf = copy.copy(data_conf[karabo_id])
-
-                    if (karabo_id in pconf and
-                            isinstance(pconf[karabo_id], dict)):
-                        thisconf.update(copy.copy(pconf[karabo_id]))
-
-                    thisconf["in-folder"] = in_folder
-                    thisconf["out-folder"] = os.path.join(
-                        out_folder, karabo_id.replace('-', '_')
-                    )
-                    thisconf["karabo-id"] = karabo_id
-                    thisconf["karabo-da"] = karabo_das_for_id
-
-                    run_config = []
-                    for typ, run in run_mapping.items():
-                        if "no_mapping" in typ:
-                            run_config.append(run)
-                        else:
-                            thisconf[typ] = run
-                    if len(run_config):
-                        thisconf["runs"] = ",".join(run_config)
-
-                    detectors[karabo_id] = thisconf
-                else:
-                    logging.warning(
-                        "File list for %s in proposal %s runs %s is empty",
-                        karabo_id, proposal, wait_runs
-                    )
-            if len(detectors) == 0:
-                logging.warning(Errors.NOTHING_TO_DO.format(wait_runs))
-                return
-
-            await self.launch_jobs(
-                wait_runs, 0, detectors, 'dark', instrument, cycle, proposal,
-                request_time,
-            )
-        # END of part to run after sending reply
-
-        asyncio.ensure_future(_continue())
-
-        msg = Success.QUEUED.format(proposal, wait_runs)
-        logging.debug(msg)
-        return msg.encode()
-
     async def handle_dark_request(
             self, rid, _sase, instrument, cycle, proposal, karabo_id,
             operation_mode, *extra
-- 
GitLab