LSSTApplications  11.0-13-gbb96280,12.1.rc1,12.1.rc1+1,12.1.rc1+2,12.1.rc1+5,12.1.rc1+8,12.1.rc1-1-g06d7636+1,12.1.rc1-1-g253890b+5,12.1.rc1-1-g3d31b68+7,12.1.rc1-1-g3db6b75+1,12.1.rc1-1-g5c1385a+3,12.1.rc1-1-g83b2247,12.1.rc1-1-g90cb4cf+6,12.1.rc1-1-g91da24b+3,12.1.rc1-2-g3521f8a,12.1.rc1-2-g39433dd+4,12.1.rc1-2-g486411b+2,12.1.rc1-2-g4c2be76,12.1.rc1-2-gc9c0491,12.1.rc1-2-gda2cd4f+6,12.1.rc1-3-g3391c73+2,12.1.rc1-3-g8c1bd6c+1,12.1.rc1-3-gcf4b6cb+2,12.1.rc1-4-g057223e+1,12.1.rc1-4-g19ed13b+2,12.1.rc1-4-g30492a7
LSSTDataManagementBasePackage
DataAnnouncer.py
Go to the documentation of this file.
1 #
2 # LSST Data Management System
3 # Copyright 2008, 2009, 2010 LSST Corporation.
4 #
5 # This product includes software developed by the
6 # LSST Project (http://www.lsst.org/).
7 #
8 # This program is free software: you can redistribute it and/or modify
9 # it under the terms of the GNU General Public License as published by
10 # the Free Software Foundation, either version 3 of the License, or
11 # (at your option) any later version.
12 #
13 # This program is distributed in the hope that it will be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 # GNU General Public License for more details.
17 #
18 # You should have received a copy of the LSST License Statement and
19 # the GNU General Public License along with this program. If not,
20 # see <http://www.lsstcorp.org/LegalNotices/>.
21 #
22 
23 import os
24 import lsst.log as log
25 from lsst.ctrl.orca.EnvString import EnvString
26 
27 ##
28 # @deprecated DataAnnouncer
29 # this class is used to send events with available data
31 
32  ## initialize
33  def __init__(self, runid, prodConfig, wfConfig, logger = None):
34  log.debug("DataAnnouncer: __init__")
35  ## run id
36  self.runid = runid
37  ## production configuration
38  self.prodConfig = prodConfig
39  ## workflow configuration
40  self.wfConfig = wfConfig
41 
42  ## send events announcing data to consumers
43  def announce(self):
44  log.debug("DataAnnouncer: announce")
45  broker = self.prodConfig.production.eventBrokerHost
46 
47  configType = self.wfConfig.configurationType
48  print "configType",configType
49  config = self.wfConfig.configuration[configType]
50  if config == None:
51  print "configuration for workflow was not found"
52  return False
53 
54  if config.announceData != None:
55  annData = config.announceData
56  script = annData.script
57  script = EnvString.resolve(script)
58  topic = annData.topic
59  inputdata = annData.inputdata
60  inputdata = EnvString.resolve(inputdata)
61  cmd = "%s -r %s -b %s -t %s %s" % (script, self.runid, broker, topic, inputdata)
62  print cmd
63  cmdSplit = cmd.split()
64  pid = os.fork()
65  if not pid:
66  os.execvp(cmdSplit[0], cmdSplit)
67  os.wait()[0]
68 
69  if config.announceData.dataCompleted != None:
70  dataComp = config.announceData.dataCompleted
71  script = dataComp.script
72  script = EnvString.resolve(script)
73  topic = dataComp.topic
74  status = dataComp.status
75  cmd = "%s %s %s %s %s" % (script, broker, topic, self.runid, status)
76  print cmd
77  cmdSplit = cmd.split()
78  pid = os.fork()
79  if not pid:
80  os.execvp(cmdSplit[0], cmdSplit)
81  os.wait()[0]
82  else:
83  print "not announcing that data has been completing sent; automatic shutdown will not occur"
84 
85  return True
86  else:
87  return False
88 
89 
Definition: Log.h:716
def announce
send events announcing data to consumers