def clear_default_group(self): group_obj = WallabyHelpers.get_group(self.session, self.config_store, '+++DEFAULT') result = group_obj.modifyFeatures('replace', [], {}) if result.status != 0: sys.stderr.write("Failed to clear features from %s: (%d, %s)\n" % (name, result.status, result.text)) raise WallabyStoreError("Failed to clear features") result = group_obj.modifyParams('replace', {}, {}) if result.status != 0: sys.stderr.write("Failed to clear params from %s: (%d, %s)\n" % (name, result.status, result.text)) raise WallabyStoreError("Failed to clear params")
def assert_node_features(self, feature_names, node_names, mod_op='replace'): for feat in feature_names: if not feat in self.feat_names: emsg = "Feature %s not in config store" % (feat) raise Exception(emsg) # apply feature list to nodes for name in node_names: node_obj = WallabyHelpers.get_node(self.session, self.config_store, name) group_name = WallabyHelpers.get_id_group_name(node_obj, self.session) group_obj = WallabyHelpers.get_group(self.session, self.config_store, group_name) if mod_op == 'insert': result = group_obj.modifyFeatures('replace', feature_names + group_obj.features, {}) else: result = group_obj.modifyFeatures(mod_op, feature_names, {}) if result.status != 0: sys.stderr.write("Failed to set features for %s: (%d, %s)\n" % (name, result.status, result.text)) raise WallabyStoreError(result.text)
def clear_nodes(self, node_names): for name in node_names: node_obj = WallabyHelpers.get_node(self.session, self.config_store, name) result = node_obj.modifyMemberships('replace', [], {}) if result.status != 0: sys.stderr.write("Failed to clear groups from %s: (%d, %s)\n" % (name, result.status, result.text)) raise WallabyStoreError("Failed to clear groups") group_name = WallabyHelpers.get_id_group_name(node_obj, self.session) group_obj = WallabyHelpers.get_group(self.session, self.config_store, group_name) result = group_obj.modifyFeatures('replace', [], {}) if result.status != 0: sys.stderr.write("Failed to clear features from %s: (%d, %s)\n" % (name, result.status, result.text)) raise WallabyStoreError("Failed to clear features") result = group_obj.modifyParams('replace', {}, {}) if result.status != 0: sys.stderr.write("Failed to clear params from %s: (%d, %s)\n" % (name, result.status, result.text)) raise WallabyStoreError("Failed to clear params")
def assert_group_features(self, feature_names, group_names, mod_op='replace'): # ensure these actually exist for grp in group_names: if not grp in self.group_names: sys.stdout.write("Adding group %s to store:\n" % (grp)) result = self.config_store.addExplicitGroup(grp) if result.status != 0: sys.stderr.write("Failed to create group %s: (%d, %s)\n" % (grp, result.status, result.text)) raise WallabyStoreError(result.text) # In principle, could automatically install features if they aren't found for feat in feature_names: if not feat in self.feat_names: raise Exception("Feature %s not in config store" % (feat)) # apply feature list to group for name in group_names: group_obj = WallabyHelpers.get_group(self.session, self.config_store, name) result = group_obj.modifyFeatures(mod_op, feature_names, {}) if result.status != 0: sys.stderr.write("Failed to set features for %s: (%d, %s)\n" % (name, result.status, result.text)) raise WallabyStoreError(result.text)
env['_CONDOR_QMF_BROKER_HOST'] = '127.0.0.1' env['_CONDOR_QMF_BROKER_PORT'] = '5672' env['_CONDOR_CONFIGD_OVERRIDE_DIR'] = override_dir env['_CONDOR_LOG'] = '.' env['PATH'] = os.environ['PATH'] cmd = shlex.split('../condor_configd -d -l %s -m %s -h %s' % (log_file, config_file, nodename)) os.execve(cmd[0], cmd, env) sys.exit(0) # The configd performs a checkin within 10 seconds on startup time.sleep(15) # Add features and groups to the node WallabyHelpers.add_group(session, store, 'TestGroup') grp_name = WallabyHelpers.get_id_group_name(node, session) node_grp = WallabyHelpers.get_group(session, store, grp_name) node.modifyMemberships('add', ['TestGroup'], {}) node_grp.modifyFeatures('add', ['TestFeature'], {}) node.update() node_grp.update() # Verify older config version causes config retrieval print 'Testing older version causes config retrieval: \t\t\t', node.setLastUpdatedVersion(version-1) store.raiseEvent([nodename]) time.sleep(10) old_version = version try: version = int(read_condor_config('WALLABY', ['CONFIG_VERSION'], environ={'CONDOR_CONFIG':config_file}, permit_param_only = False)['config_version']) except: print 'Error: Failed to find WALLABY_CONFIG_VERSION in config file'