def write_environment_1( self, BUFFER=None ): if not BUFFER: BUFFER = self.FILE BUFFER.write( "\n\n# CYLC SUITE ENVIRONMENT:" ) # write the static suite variables for var, val in self.__class__.suite_env.items(): BUFFER.write( "\nexport " + var + "=" + str(val) ) if str(self.__class__.suite_env.get('CYLC_UTC')) == 'True': BUFFER.write( "\nexport TZ=UTC" ) # override and write task-host-specific suite variables suite_work_dir = sitecfg.get_derived_host_item( self.suite, 'suite work directory', self.host, self.owner ) st_env = deepcopy( self.__class__.suite_task_env ) st_env[ 'CYLC_SUITE_RUN_DIR' ] = sitecfg.get_derived_host_item( self.suite, 'suite run directory', self.host, self.owner ) st_env[ 'CYLC_SUITE_WORK_DIR' ] = suite_work_dir st_env[ 'CYLC_SUITE_SHARE_DIR' ] = sitecfg.get_derived_host_item( self.suite, 'suite share directory', self.host, self.owner ) st_env[ 'CYLC_SUITE_SHARE_PATH' ] = '$CYLC_SUITE_SHARE_DIR' # DEPRECATED rsp = self.jobconfig['remote suite path'] if rsp: st_env[ 'CYLC_SUITE_DEF_PATH' ] = rsp else: # replace home dir with '$HOME' for evaluation on the task host st_env[ 'CYLC_SUITE_DEF_PATH' ] = re.sub( os.environ['HOME'], '$HOME', st_env['CYLC_SUITE_DEF_PATH'] ) for var, val in st_env.items(): BUFFER.write( "\nexport " + var + "=" + str(val) ) task_work_dir = os.path.join( suite_work_dir, self.jobconfig['work sub-directory'] ) use_login_shell = sitecfg.get_host_item( 'use login shell', self.host, self.owner ) comms = sitecfg.get_host_item( 'task communication method', self.host, self.owner ) BUFFER.write( "\n\n# CYLC TASK ENVIRONMENT:" ) BUFFER.write( "\nexport CYLC_TASK_ID=" + self.task_id ) BUFFER.write( "\nexport CYLC_TASK_NAME=" + self.task_name ) BUFFER.write( "\nexport CYLC_TASK_MSG_RETRY_INTVL=" + str( sitecfg.get( ['task messaging','retry interval in seconds'])) ) BUFFER.write( "\nexport CYLC_TASK_MSG_MAX_TRIES=" + str( sitecfg.get( ['task messaging','maximum number of tries'])) ) BUFFER.write( "\nexport CYLC_TASK_MSG_TIMEOUT=" + str( sitecfg.get( ['task messaging','connection timeout in seconds'])) ) BUFFER.write( "\nexport CYLC_TASK_IS_COLDSTART=" + str( self.jobconfig['is cold-start']) ) BUFFER.write( "\nexport CYLC_TASK_CYCLE_TIME=" + self.tag ) BUFFER.write( "\nexport CYLC_TASK_LOG_ROOT=" + self.log_root ) BUFFER.write( '\nexport CYLC_TASK_NAMESPACE_HIERARCHY="' + ' '.join( self.jobconfig['namespace hierarchy']) + '"') BUFFER.write( "\nexport CYLC_TASK_TRY_NUMBER=" + str(self.jobconfig['try number']) ) BUFFER.write( "\nexport CYLC_TASK_COMMS_METHOD=" + comms ) BUFFER.write( "\nexport CYLC_TASK_SSH_LOGIN_SHELL=" + str(use_login_shell) ) BUFFER.write( "\nexport CYLC_TASK_WORK_DIR=" + task_work_dir ) BUFFER.write( "\nexport CYLC_TASK_WORK_PATH=$CYLC_TASK_WORK_DIR") # DEPRECATED
def __init__(self, hosts=None, owner=None, poll_interval=None, is_compact=False): # We can't use gobject.threads_init() for panel applets. warnings.filterwarnings('ignore', 'use the new', Warning) setup_icons() if not hosts: try: hosts = sitecfg.get( ["suite host scanning","hosts"] ) except KeyError: hosts = ["localhost"] self.is_compact = is_compact self.hosts = hosts if owner is None: owner = user self.owner = owner dot_hbox = gtk.HBox() dot_hbox.show() dot_eb = gtk.EventBox() dot_eb.show() dot_eb.add(dot_hbox) image = gtk.image_new_from_stock("gcylc", gtk.ICON_SIZE_MENU) image.show() image_eb = gtk.EventBox() image_eb.show() image_eb.connect("button-press-event", self._on_button_press_event) image_eb.add(image) self.top_hbox = gtk.HBox() self.top_hbox.pack_start(image_eb, expand=False, fill=False) self.top_hbox.pack_start(dot_eb, expand=False, fill=False, padding=2) self.top_hbox.show() self.updater = SummaryPanelAppletUpdater(hosts, dot_hbox, image, self.is_compact, owner=owner, poll_interval=poll_interval) self.top_hbox.connect("destroy", self.stop)
def __init__(self, hosts=None, owner=None, poll_interval=None): gobject.threads_init() set_exception_hook_dialog("cylc gsummary") setup_icons() if not hosts: try: hosts = sitecfg.get( ["suite host scanning","hosts"] ) except KeyError: hosts = ["localhost"] self.hosts = hosts if owner is None: owner = user self.owner = owner self.window = gtk.Window() self.window.set_title("cylc gsummary") self.window.set_icon(get_icon()) self.vbox = gtk.VBox() self.vbox.show() self.theme_name = gcfg.get( ['use theme'] ) self.theme = gcfg.get( ['themes', self.theme_name] ) self.dots = DotMaker(self.theme) suite_treemodel = gtk.TreeStore(*([str, str, bool, str, int] + [str] * 20)) self._prev_tooltip_location_id = None self.suite_treeview = gtk.TreeView(suite_treemodel) # Construct the host column. host_name_column = gtk.TreeViewColumn("Host") cell_text_host = gtk.CellRendererText() host_name_column.pack_start(cell_text_host, expand=False) host_name_column.set_cell_data_func( cell_text_host, self._set_cell_text_host) host_name_column.set_sort_column_id(0) host_name_column.set_visible(False) # Construct the suite name column. suite_name_column = gtk.TreeViewColumn("Suite") cell_text_name = gtk.CellRendererText() suite_name_column.pack_start(cell_text_name, expand=False) suite_name_column.set_cell_data_func( cell_text_name, self._set_cell_text_name) suite_name_column.set_sort_column_id(1) # Construct the suite title column. suite_title_column = gtk.TreeViewColumn("Title") cell_text_title = gtk.CellRendererText() suite_title_column.pack_start(cell_text_title, expand=False) suite_title_column.set_cell_data_func( cell_text_title, self._set_cell_text_title) suite_title_column.set_sort_column_id(3) suite_title_column.set_visible(False) # Construct the update time column. time_column = gtk.TreeViewColumn("Updated") cell_text_time = gtk.CellRendererText() time_column.pack_start(cell_text_time, expand=False) time_column.set_cell_data_func( cell_text_time, self._set_cell_text_time) time_column.set_sort_column_id(4) time_column.set_visible(False) # Construct the status column. status_column = gtk.TreeViewColumn("Status") status_column.set_sort_column_id(5) for i in range(5, 25): cell_pixbuf_state = gtk.CellRendererPixbuf() status_column.pack_start(cell_pixbuf_state, expand=False) status_column.set_cell_data_func( cell_pixbuf_state, self._set_cell_pixbuf_state, i) self.suite_treeview.append_column(host_name_column) self.suite_treeview.append_column(suite_name_column) self.suite_treeview.append_column(suite_title_column) self.suite_treeview.append_column(time_column) self.suite_treeview.append_column(status_column) self.suite_treeview.show() if hasattr(self.suite_treeview, "set_has_tooltip"): self.suite_treeview.set_has_tooltip(True) try: self.suite_treeview.connect('query-tooltip', self._on_query_tooltip) except TypeError: # Lower PyGTK version. pass self.suite_treeview.connect("button-press-event", self._on_button_press_event) scrolled_window = gtk.ScrolledWindow() scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) scrolled_window.add(self.suite_treeview) scrolled_window.show() self.vbox.pack_start(scrolled_window, expand=True, fill=True) self.updater = SummaryAppUpdater(self.hosts, suite_treemodel, owner=self.owner, poll_interval=poll_interval) self.updater.start() self.window.add(self.vbox) self.window.connect("destroy", self._on_destroy_event) self.window.set_default_size(200, 100) self.suite_treeview.grab_focus() self.window.show()