Пример #1
0
    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")
Пример #2
0
    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)
Пример #3
0
    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")
Пример #4
0
    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'