Exemple #1
0
    def build_access_feature(self, feature_name, collector_host=None, condor_host=None):
        if condor_host==None: condor_host = self.params.collector_addr
        if collector_host==None: collector_host = condor_host
        sys.stdout.write("building access feature %s\n"%(feature_name))
        sys.stdout.flush()

        self.assert_feature(feature_name)

        params={}
        params["CONDOR_HOST"] = condor_host
        params["COLLECTOR_HOST"] = collector_host
        params["ALLOW_WRITE"] = "*"
        params["ALLOW_READ"] = "*"
        params["SEC_DEFAULT_AUTHENTICATION_METHODS"] = "CLAIMTOBE"

        # make sure parameters are declared
        splist = params.keys()
        splist.sort()
        for p in splist: self.assert_param(p)

        feat_obj = WallabyHelpers.get_feature(self.session, self.config_store, feature_name)
        result = feat_obj.modifyParams('replace', params, {})
        if result.status != 0:
            sys.stderr.write("Failed to modify params for %s: (%d, %s)\n" % (feature_name, result.status, result.text))
            raise WallabyStoreError("Failed to add feature")
Exemple #2
0
    def build_accounting_group_feature(self, feature_name, group_tuple_list):
        sys.stdout.write("building acct group feature %s\n"%(feature_name))
        sys.stdout.flush()
        
        self.assert_feature(feature_name)

        params = {}
        params["GROUP_NAMES"] = ",".join([x[0] for x in group_tuple_list])
        
        for tuple in group_tuple_list:
            (name, is_static, quota, accept_surplus) = tuple
            if is_static: params["GROUP_QUOTA_%s"%(name)] = "%d"%(int(quota))
            else:         params["GROUP_QUOTA_DYNAMIC_%s"%(name)] = "%f"%(float(quota))
            if accept_surplus: params["GROUP_AUTOREGROUP_%s"%(name)] = "TRUE"

        # make sure parameters are declared
        splist = params.keys()
        splist.sort()
        for p in splist: self.assert_param(p)

        feat_obj = WallabyHelpers.get_feature(self.session, self.config_store, feature_name)
        result = feat_obj.modifyParams('replace', params, {})
        if result.status != 0:
            sys.stderr.write("Failed to modify params for %s: (%d, %s)\n" % (feature_name, result.status, result.text))
            raise WallabyStoreError("Failed to add feature")
Exemple #3
0
    def build_feature(self, feature_name, params={}, mod_op='replace'):
        sys.stdout.write("building feature %s\n"%(feature_name))
        sys.stdout.flush()

        self.assert_feature(feature_name)

        # make sure parameters are declared
        splist = params.keys()
        splist.sort()
        for p in splist: self.assert_param(p)

        feat_obj = WallabyHelpers.get_feature(self.session, self.config_store, feature_name)
        result = feat_obj.modifyParams(mod_op, params, {})
        if result.status != 0:
            sys.stderr.write("Failed to modify params for %s: (%d, %s)\n" % (feature_name, result.status, result.text))
            raise WallabyStoreError("Failed to add feature")
Exemple #4
0
    def build_collector_feature(self, feature_name, n_coll=1, portstart=10000, dl_append=True, collector_host=None, condor_host=None, disable_plugins=True):
        if condor_host==None: condor_host = self.params.collector_addr
        if collector_host==None: collector_host = condor_host
        sys.stdout.write("building collector feature %s with %d sub-collectors\n"%(feature_name, n_coll))
        sys.stdout.flush()
        
        self.assert_feature(feature_name)

        collector_names = []
        params={}
        if dl_append: daemon_list = ">= "
        else:         daemon_list = "MASTER"
        for s in xrange(n_coll):
            tag = "%03d"%(s)
            port=portstart+s
            locname = "COLLECTOR%s"%(tag)
            collector_names += ["%s:%d"%(collector_host,port)]
            if (s > 0) or not dl_append: daemon_list += ","
            daemon_list += "COLLECTOR%s"%(tag)
            params["COLLECTOR%s"%(tag)] = "$(COLLECTOR)"
            params["COLLECTOR%s_ARGS"%(tag)] = "-f -p %d -local-name %s"%(port,locname)
            params["COLLECTOR%s_ENVIRONMENT"%(tag)] = "_CONDOR_COLLECTOR_LOG=$(LOG)/CollectorLog%s"%(tag)
            params["COLLECTOR.%s.COLLECTOR_NAME"%(locname)] = locname
            params["COLLECTOR.%s.CONDOR_VIEW_HOST"%(locname)] = "$(COLLECTOR_HOST)"
            params["COLLECTOR.%s.COLLECTOR_ADDRESS_FILE"%(locname)] = "$(LOG)/.collector%s-address"%(tag)
            if disable_plugins:
                params["COLLECTOR.%s.PLUGINS"%(locname)] = ""

        params["DAEMON_LIST"] = daemon_list

        # make sure parameters are declared
        splist = params.keys()
        splist.sort()
        for p in splist: self.assert_param(p)

        feat_obj = WallabyHelpers.get_feature(self.session, self.config_store, feature_name)
        result = feat_obj.modifyParams('replace', params, {})
        if result.status != 0:
            sys.stderr.write("Failed to modify params for %s: (%d, %s)\n" % (feature_name, result.status, result.text))
            raise WallabyStoreError("Failed to add feature")

        return collector_names
Exemple #5
0
    def build_scheduler_feature(self, feature_name, n_schedd=1, dl_append=True):
        sys.stdout.write("building scheduler feature %s with %d schedds\n"%(feature_name, n_schedd))
        sys.stdout.flush()
        
        self.assert_feature(feature_name)

        schedd_names = []
        params={}
        params["USE_PROCD"] = "FALSE"
        if dl_append: daemon_list = ">= "
        else:         daemon_list = "MASTER"
        for s in xrange(n_schedd):
            tag = "%03d"%(s)
            locname = "SCHEDD%s"%(tag)
            schedd_names += [locname]
            if (s > 0) or not dl_append: daemon_list += ","
            daemon_list += "SCHEDD%s"%(tag)
            params["SCHEDD%s"%(tag)] = "$(SCHEDD)"
            params["SCHEDD%s_ARGS"%(tag)] = "-f -local-name %s"%(locname)
            params["SCHEDD.%s.SCHEDD_NAME"%(locname)] = locname
            params["SCHEDD.%s.SCHEDD_LOG"%(locname)] = "$(LOG)/SchedLog%s"%(tag)
            params["SCHEDD.%s.SCHEDD_ADDRESS_FILE"%(locname)] = "$(LOG)/.schedd%s-address"%(tag)
            params["SCHEDD.%s.SPOOL"%(locname)] = "$(SPOOL).%s"%(tag)
            params["SCHEDD.%s.HISTORY"%(locname)] = "$(SPOOL)/history.s%s"%(tag)
            #params["SCHEDD.%s.SCHEDD_DAEMON_AD_FILE"%(locname)] = "$(LOG)/.schedd%s-daemon-ad"%(tag)

        params["DAEMON_LIST"] = daemon_list

        # make sure parameters are declared
        splist = params.keys()
        splist.sort()
        for p in splist: self.assert_param(p)

        feat_obj = WallabyHelpers.get_feature(self.session, self.config_store, feature_name)
        result = feat_obj.modifyParams('replace', params, {})
        if result.status != 0:
            sys.stderr.write("Failed to modify params for %s: (%d, %s)\n" % (feature_name, result.status, result.text))
            raise WallabyStoreError("Failed to add feature")

        return schedd_names
Exemple #6
0
    def tag_test_feature(self, feature_name, param_name):
        # ensure parameter name exists
        self.assert_param(param_name)

        # ensure that parameter requires restart
        param_obj = WallabyHelpers.get_param(self.session, self.config_store, param_name)
        result = param_obj.setRequiresRestart(True)
        if result.status != 0:
            sys.stderr.write("Failed to set restart for %s: (%d, %s)\n" % (param_name, result.status, result.text))
            raise WallabyStoreError("Failed to set restart")

        # set this param to a new value, to ensure a restart on activation
        feat_obj = WallabyHelpers.get_feature(self.session, self.config_store, feature_name)
        result = feat_obj.modifyParams('add', {param_name:("%s"%(time.time()))}, {})
        if result.status != 0:
            sys.stderr.write("Failed to add param %s to %s: (%d, %s)\n" % (param_name, feature_name, result.status, result.text))
            raise WallabyStoreError("Failed to add param")

        # make sure master is tagged for restart via this parameter
        subsys_obj = WallabyHelpers.get_subsys(self.session, self.config_store, 'master')
        result = subsys_obj.modifyParams('add', [param_name], {})
        if result.status != 0:
            sys.stderr.write("Failed to add param %s to master: (%d, %s)\n" % (param_name, result.status, result.text))
            raise WallabyStoreError("Failed to add param")
Exemple #7
0
    def build_execute_feature(self, feature_name, n_startd=1, n_slots=1, n_dynamic=0, dl_append=True, dedicated=True, preemption=False, ad_machine=True):
        sys.stdout.write("building execute feature %s -- n_startd=%d  n_slots=%d  n_dynamic=%d\n"%(feature_name, n_startd, n_slots, n_dynamic))
        sys.stdout.flush()

        self.assert_feature(feature_name)

        params={}
        params["USE_PROCD"] = "FALSE"

        if dedicated:
            params["START"] = "TRUE"
            params["SUSPEND"] = "FALSE"
            params["KILL"] = "FALSE"
            params["CONTINUE"] = "TRUE"
            params["WANT_VACATE"] = "FALSE"
            params["WANT_SUSPEND"] = "FALSE"

        if not preemption:
            params["MAXJOBRETIREMENTTIME"] = "3600 * 24"
            params["PREEMPT"] = "FALSE"
            params["PREEMPTION_REQUIREMENTS"] = "FALSE"
            params["RANK"] = "0"
            params["NEGOTIATOR_CONSIDER_PREEMPTION"] = "FALSE"

        if n_dynamic > 0:
            params["SLOT_TYPE_1"] = "cpus=%d"%(n_dynamic)
            params["SLOT_TYPE_1_PARTITIONABLE"] = "TRUE"
            params["NUM_SLOTS_TYPE_1"] = "%d"%(n_slots)
            params["NUM_CPUS"] = "%d"%(n_slots * n_dynamic)
        else:
            params["NUM_SLOTS"] = "%d"%(n_slots)
            params["NUM_CPUS"] = "%d"%(n_slots)

        if dl_append: daemon_list = ">= "
        else:         daemon_list = "MASTER"
        for s in xrange(n_startd):
            tag = "%03d"%(s)
            locname = "STARTD%s"%(tag)
            if (s > 0) or not dl_append: daemon_list += ","
            daemon_list += "STARTD%s"%(tag)
            params["STARTD%s"%(tag)] = "$(STARTD)"
            params["STARTD%s_ARGS"%(tag)] = "-f -local-name %s"%(locname)
            params["STARTD.%s.STARTD_NAME"%(locname)] = locname
            params["STARTD.%s.STARTD_ADDRESS_FILE"%(locname)] = "$(LOG)/.startd%s-address"%(tag)
            params["STARTD.%s.STARTD_LOG"%(locname)] = "$(LOG)/StartLog%s"%(tag)
            #params["STARTD.%s.EXECUTE"%(locname)] = "$(EXECUTE)/%s"%(locname)
            if ad_machine:
                params["STARTD%s.STARTD_ATTRS"%(tag)] = "$(STARTD_ATTRS), Machine"
                params["STARTD%s.Machine"%(tag)] = "\"s%s.$(FULL_HOSTNAME)\""%(tag)

        params["DAEMON_LIST"] = daemon_list

        # make sure parameters are declared
        splist = params.keys()
        splist.sort()
        for p in splist: self.assert_param(p)

        feat_obj = WallabyHelpers.get_feature(self.session, self.config_store, feature_name)
        result = feat_obj.modifyParams('replace', params, {})
        if result.status != 0:
            sys.stderr.write("Failed to modify params for %s: (%d, %s)\n" % (feature_name, result.status, result.text))
            raise WallabyStoreError("Failed to add feature")

        tslots = n_startd * n_slots
        return (tslots, tslots * n_dynamic)