From 7889b176f0b132c071b02f1d43d7e019db8416df Mon Sep 17 00:00:00 2001
From: Danny Auble <da@schedmd.com>
Date: Thu, 20 Feb 2014 16:27:07 -0800
Subject: [PATCH] Change structures their definitions and packing

---
 slurm/slurmdb.h            | 187 ++++++---------
 src/common/slurmdb_defs.c  | 240 +++++++++-----------
 src/common/slurmdb_defs.h  |  17 +-
 src/common/slurmdb_pack.c  | 452 ++++++++++++++++---------------------
 src/common/slurmdb_pack.h  |  20 +-
 src/common/slurmdbd_defs.c | 203 +++++------------
 src/common/slurmdbd_defs.h |  18 +-
 7 files changed, 452 insertions(+), 685 deletions(-)

diff --git a/slurm/slurmdb.h b/slurm/slurmdb.h
index 1e4c2688a8d..58cbf92ff11 100644
--- a/slurm/slurmdb.h
+++ b/slurm/slurmdb.h
@@ -135,15 +135,13 @@ typedef enum {
 	SLURMDB_ADD_CLUSTER,
 	SLURMDB_REMOVE_CLUSTER,
 	SLURMDB_REMOVE_ASSOC_USAGE,
-	SLURMDB_ADD_CLUS_RES,
-	SLURMDB_REMOVE_CLUS_RES,
-	SLURMDB_MODIFY_CLUS_RES,
-	SLURMDB_ADD_SER_RES,
-	SLURMDB_REMOVE_SER_RES,
-	SLURMDB_MODIFY_SER_RES,
+	SLURMDB_ADD_RES,
+	SLURMDB_REMOVE_RES,
+	SLURMDB_MODIFY_RES,
 } slurmdb_update_type_t;
 
 /* Define QOS flags */
+#define	QOS_FLAG_BASE                0x0fffffff
 #define	QOS_FLAG_NOTSET              0x10000000
 #define	QOS_FLAG_ADD                 0x20000000
 #define	QOS_FLAG_REMOVE              0x40000000
@@ -157,9 +155,13 @@ typedef enum {
 #define	QOS_FLAG_DENY_LIMIT          0x00000040
 
 /* Define Server Resource flags */
-#define	SER_RES_FLAG_NOTSET          0x10000000
-#define	SER_RES_FLAG_ADD             0x20000000
-#define	SER_RES_FLAG_REMOVE          0x40000000
+#define	SLURMDB_RES_FLAG_BASE        0x0fffffff /* apply to get real flags */
+#define	SLURMDB_RES_FLAG_NOTSET      0x10000000
+#define	SLURMDB_RES_FLAG_ADD         0x20000000
+#define	SLURMDB_RES_FLAG_REMOVE      0x40000000
+
+/* flags and types of resources */
+/* when we come up with some */
 
 /* Archive / Purge time flags */
 #define SLURMDB_PURGE_BASE    0x0000ffff   /* Apply to get the number
@@ -202,7 +204,7 @@ typedef enum {
 #ifndef __assoc_mgr_association_usage_t_defined
 #  define  __assoc_mgr_association_usage_t_defined
 /* opaque data type */
-   typedef struct assoc_mgr_association_usage assoc_mgr_association_usage_t;
+typedef struct assoc_mgr_association_usage assoc_mgr_association_usage_t;
 #endif
 
 /* Define assoc_mgr_qos_usage_t below to avoid including
@@ -210,7 +212,7 @@ typedef enum {
 #ifndef __assoc_mgr_qos_usage_t_defined
 #  define  __assoc_mgr_qos_usage_t_defined
 /* opaque data type */
-   typedef struct assoc_mgr_qos_usage assoc_mgr_qos_usage_t;
+typedef struct assoc_mgr_qos_usage assoc_mgr_qos_usage_t;
 #endif
 
 /********************************************/
@@ -335,21 +337,6 @@ typedef struct {
 	uint32_t vsize_max_taskid; /* contains which task number it was on */
 } slurmdb_stats_t;
 
-/* slurmdb_ser_res_rec_t needs to be defined before
- * slurmdb_clus_res_rec_t.
- */
-typedef struct {
-	char *description;
-	uint32_t id;
-	char *name;
-	uint32_t count; /* count of resources managed
-			 * on the server */
-	uint32_t flags; /* resource attribute flags */
-	uint32_t type;  /* type of resource represented by this record */
-	char *manager;  /* resource manager name */
-	char *server;  /* resource server name */
-} slurmdb_ser_res_rec_t;
-
 /************** alphabetical order of structures **************/
 
 typedef struct {
@@ -493,23 +480,6 @@ typedef struct {
 	char *user;		   /* user associated to association */
 } slurmdb_association_rec_t;
 
-typedef struct {
-	slurmdb_ser_res_rec_t *res_ptr; /* pointer to server resource */
-	char *cluster; /* name of cluster */
-	uint32_t percent_allowed; /* percentage of total resources
-				   * allowed for this cluster */
-} slurmdb_clus_res_rec_t;
-
-typedef struct {
-	List name_list; /* list of char * */
-	List description_list; /* list of char * */
-	List format_list; /* list of char * */
-	List manager_list; /* list of char * */
-	List server_list; /* list of char * */
-	List cluster_list; /* list of char * */
-	uint16_t with_deleted;
-} slurmdb_clus_res_cond_t;
-
 typedef struct {
 	uint16_t classification; /* how this machine is classified */
 	List cluster_list; /* list of char * */
@@ -541,8 +511,7 @@ typedef struct {
 	uint32_t plugin_id_select; /* id of the select plugin */
 	slurmdb_association_rec_t *root_assoc; /* root association for
 						* cluster */
-	List resource_list; /* list of slurmdb_clus_res_rec_t
-			    * for this cluster */
+	List res_list; /* list of slurmdb_res_rec_t's for this cluster */
 	uint16_t rpc_version; /* version of rpc this cluter is running */
 } slurmdb_cluster_rec_t;
 
@@ -558,6 +527,12 @@ typedef struct {
 	uint64_t resv_secs; /* number of cpu seconds reserved */
 } slurmdb_cluster_accounting_rec_t;
 
+typedef struct {
+	char *cluster; /* name of cluster */
+	uint16_t percent_allowed; /* percentage of total resources
+				   * allowed for this cluster */
+} slurmdb_clus_res_rec_t;
+
 typedef struct {
 	char *name;
 	uint16_t direct;
@@ -674,8 +649,8 @@ typedef struct {
 	uint64_t max_cpu_mins_pj; /* max number of cpu mins a job can
 				   * use with this qos */
 	uint64_t max_cpu_run_mins_pu; /* max number of cpu mins a user can
-				   * allocate at a given time when
-				   * using this qos (Not yet valid option) */
+				       * allocate at a given time when
+				       * using this qos (Not yet valid option) */
 	uint32_t max_cpus_pj; /* max number of cpus a job can
 			       * allocate with this qos */
 	uint32_t max_cpus_pu; /* max number of cpus a user can
@@ -777,17 +752,35 @@ typedef struct {
 } slurmdb_step_rec_t;
 
 /* slurmdb_stats_t defined above alphabetical */
+
 typedef struct {
-	List name_list; /* list of char * */
+	List cluster_list; /* list of char * */
 	List description_list; /* list of char * */
-	List format_list; /* list of char * */
+	uint32_t flags;
 	List id_list; /* list of char * */
 	List manager_list; /* list of char * */
+	List name_list; /* list of char * */
+	List percent_list; /* list of char * */
 	List server_list; /* list of char * */
+	List type_list; /* list of char * */
 	uint16_t with_deleted;
-} slurmdb_ser_res_cond_t;
+	uint16_t with_clusters;
+} slurmdb_res_cond_t;
 
-/* slurmdb_ser_res_rec_t defined above alphabetical */
+typedef struct {
+	List clus_res_list; /* list of slurmdb_clus_res_rec_t *'s */
+	slurmdb_clus_res_rec_t *clus_res_rec; /* if only one cluster
+						 being represented */
+	uint32_t count; /* count of resources managed on the server */
+	char *description;
+	uint32_t flags; /* resource attribute flags */
+	uint32_t id;
+	char *manager;  /* resource manager name */
+	char *name;
+	uint16_t percent_used;
+	char *server;  /* resource server name */
+	uint32_t type; /* resource type */
+} slurmdb_res_rec_t;
 
 typedef struct {
 	List acct_list; /* list of char * */
@@ -1116,7 +1109,7 @@ extern List slurmdb_clusters_remove(void *db_conn,
  * note List needs to be freed with slurm_list_destroy() when called
  */
 extern List slurmdb_report_cluster_account_by_user(void *db_conn,
-	slurmdb_association_cond_t *assoc_cond);
+						   slurmdb_association_cond_t *assoc_cond);
 
 /* report for clusters of users per account
  * IN: slurmdb_association_cond_t *assoc_cond
@@ -1124,7 +1117,7 @@ extern List slurmdb_report_cluster_account_by_user(void *db_conn,
  * note List needs to be freed with slurm_list_destroy() when called
  */
 extern List slurmdb_report_cluster_user_by_account(void *db_conn,
-	slurmdb_association_cond_t *assoc_cond);
+						   slurmdb_association_cond_t *assoc_cond);
 
 /* report for clusters of wckey per user
  * IN: slurmdb_wckey_cond_t *wckey_cond
@@ -1132,7 +1125,7 @@ extern List slurmdb_report_cluster_user_by_account(void *db_conn,
  * note List needs to be freed with slurm_list_destroy() when called
  */
 extern List slurmdb_report_cluster_wckey_by_user(void *db_conn,
-	slurmdb_wckey_cond_t *wckey_cond);
+						 slurmdb_wckey_cond_t *wckey_cond);
 
 /* report for clusters of users per wckey
  * IN: slurmdb_wckey_cond_t *wckey_cond
@@ -1140,14 +1133,14 @@ extern List slurmdb_report_cluster_wckey_by_user(void *db_conn,
  * note List needs to be freed with slurm_list_destroy() when called
  */
 extern List slurmdb_report_cluster_user_by_wckey(void *db_conn,
-	slurmdb_wckey_cond_t *wckey_cond);
+						 slurmdb_wckey_cond_t *wckey_cond);
 
 
 extern List slurmdb_report_job_sizes_grouped_by_top_account(void *db_conn,
-	slurmdb_job_cond_t *job_cond, List grouping_list, bool flat_view);
+							    slurmdb_job_cond_t *job_cond, List grouping_list, bool flat_view);
 
 extern List slurmdb_report_job_sizes_grouped_by_wckey(void *db_conn,
-	slurmdb_job_cond_t *job_cond, List grouping_list);
+						      slurmdb_job_cond_t *job_cond, List grouping_list);
 
 extern List slurmdb_report_job_sizes_grouped_by_top_account_then_wckey(
 	void *db_conn, slurmdb_job_cond_t *job_cond,
@@ -1260,21 +1253,19 @@ extern List slurmdb_txn_get(void *db_conn, slurmdb_txn_cond_t *txn_cond);
 extern void slurmdb_init_association_rec(slurmdb_association_rec_t *assoc,
 					 bool free_it);
 extern void slurmdb_init_clus_res_rec(slurmdb_clus_res_rec_t *clus_res,
-				 bool free_it);
+				      bool free_it);
 extern void slurmdb_init_cluster_rec(slurmdb_cluster_rec_t *cluster,
 				     bool free_it);
 extern void slurmdb_init_qos_rec(slurmdb_qos_rec_t *qos,
 				 bool free_it);
-extern void slurmdb_init_ser_res_rec(slurmdb_ser_res_rec_t *ser_res,
+extern void slurmdb_init_res_rec(slurmdb_res_rec_t *res,
 				 bool free_it);
 extern void slurmdb_init_wckey_rec(slurmdb_wckey_rec_t *wckey,
 				   bool free_it);
-extern void slurmdb_init_clus_res_cond(slurmdb_clus_res_cond_t *cluster,
-				       bool free_it);
 extern void slurmdb_init_cluster_cond(slurmdb_cluster_cond_t *cluster,
 				      bool free_it);
-extern void slurmdb_init_ser_res_cond(slurmdb_ser_res_cond_t *cluster,
-				      bool free_it);
+extern void slurmdb_init_res_cond(slurmdb_res_cond_t *cluster,
+				  bool free_it);
 /* The next two functions have pointers to assoc_list so do not
  * destroy assoc_list before using the list returned from this function.
  */
@@ -1289,78 +1280,38 @@ extern char *slurmdb_tree_name_get(char *name, char *parent, List tree_list);
 
 /************** resource functions **************/
 /*
- * add clus_res's to accounting system
- * IN:  clus_res_list List of char *
- * RET: SLURM_SUCCESS on success SLURM_ERROR else
- */
-extern int slurmdb_clus_res_add(void *db_conn, uint32_t uid,
-				List clus_res_list);
-
-/*
- * get info from the storage
- * IN:  slurmdb_clus_res_cond_t *
- * RET: List of slurmdb_clus_res_rec_t *
- * note List needs to be freed with slurm_list_destroy() when called
- */
-extern List slurmdb_clus_res_get(void *db_conn,
-				 slurmdb_clus_res_cond_t *clus_res_cond);
-
-/*
- * modify existing clus_res in the accounting system
- * IN:  slurmdb_clus_res_cond_t *clus_res_cond
- * IN:  slurmdb_clus_res_rec_t *clus_res
- * RET: List containing (char *'s) else NULL on error
- * note List needs to be freed with slurm_list_destroy() when called
- */
-extern List slurmdb_clus_res_modify(void *db_conn,
-				    slurmdb_clus_res_cond_t *clus_res_cond,
-				    slurmdb_clus_res_rec_t *clus_res);
-
-/*
- * remove clus_res from accounting system
- * IN:  slurmdb_clus_res_cond_t *clus_res
- * RET: List containing (char *'s) else NULL on error
- * note List needs to be freed with slurm_list_destroy() when called
- */
-extern List slurmdb_clus_res_remove(void *db_conn,
-				    slurmdb_clus_res_cond_t *clus_res_cond);
-
-				    /*
- * add ser_res's to accounting system
- * IN:  ser_res_list List of char *
+ * add resource's to accounting system
+ * IN:  res_list List of char *
  * RET: SLURM_SUCCESS on success SLURM_ERROR else
  */
-extern int slurmdb_ser_res_add(void *db_conn, uint32_t uid,
-			       List ser_res_list);
+extern int slurmdb_res_add(void *db_conn, uint32_t uid, List res_list);
 
 /*
  * get info from the storage
- * IN:  slurmdb_ser_res_cond_t *
- * RET: List of slurmdb_ser_res_rec_t *
+ * IN:  slurmdb_res_cond_t *
+ * RET: List of slurmdb_res_rec_t *
  * note List needs to be freed with slurm_list_destroy() when called
  */
-extern List slurmdb_ser_res_get(void *db_conn,
-				slurmdb_ser_res_cond_t *ser_res_cond);
+extern List slurmdb_res_get(void *db_conn, slurmdb_res_cond_t *res_cond);
 
 /*
- * modify existing ser_res in the accounting system
- * IN:  slurmdb_ser_res_cond_t *ser_res_cond
- * IN:  slurmdb_ser_res_rec_t *ser_res
+ * modify existing resource in the accounting system
+ * IN:  slurmdb_res_cond_t *res_cond
+ * IN:  slurmdb_res_rec_t *res
  * RET: List containing (char *'s) else NULL on error
  * note List needs to be freed with slurm_list_destroy() when called
  */
-extern List slurmdb_ser_res_modify(void *db_conn,
-				   slurmdb_ser_res_cond_t *ser_res_cond,
-				   slurmdb_ser_res_rec_t *ser_res);
+extern List slurmdb_res_modify(void *db_conn,
+			       slurmdb_res_cond_t *res_cond,
+			       slurmdb_res_rec_t *res);
 
 /*
- * remove ser_res from accounting system
- * IN:  slurmdb_ser_res_cond_t *ser_res
+ * remove resource from accounting system
+ * IN:  slurmdb_res_cond_t *res
  * RET: List containing (char *'s) else NULL on error
  * note List needs to be freed with slurm_list_destroy() when called
  */
-extern List slurmdb_ser_res_remove(void *db_conn,
-				   slurmdb_ser_res_cond_t *ser_res_cond);
+extern List slurmdb_res_remove(void *db_conn, slurmdb_res_cond_t *res_cond);
 
 /************** qos functions **************/
 
diff --git a/src/common/slurmdb_defs.c b/src/common/slurmdb_defs.c
index 3d3540578b9..d094b91588c 100644
--- a/src/common/slurmdb_defs.c
+++ b/src/common/slurmdb_defs.c
@@ -51,6 +51,9 @@
 
 slurmdb_cluster_rec_t *working_cluster_rec = NULL;
 
+static void _free_res_cond_members(slurmdb_res_cond_t *res_cond);
+static void _free_res_rec_members(slurmdb_res_rec_t *res);
+
 static void _free_assoc_rec_members(slurmdb_association_rec_t *assoc)
 {
 	if (assoc) {
@@ -71,8 +74,7 @@ static void _free_assoc_rec_members(slurmdb_association_rec_t *assoc)
 static void _free_clus_res_rec_members(slurmdb_clus_res_rec_t *clus_res)
 {
 	if (clus_res) {
-		if (clus_res->res_ptr)
-			slurmdb_destroy_ser_res_rec(clus_res->res_ptr);
+		xfree(clus_res->cluster);
 	}
 }
 
@@ -101,7 +103,6 @@ static void _free_qos_rec_members(slurmdb_qos_rec_t *qos)
 	}
 }
 
-
 static void _free_wckey_rec_members(slurmdb_wckey_rec_t *wckey)
 {
 	if (wckey) {
@@ -113,24 +114,6 @@ static void _free_wckey_rec_members(slurmdb_wckey_rec_t *wckey)
 	}
 }
 
-static void _free_clus_res_cond_members(slurmdb_clus_res_cond_t *clus_res_cond)
-{
-	if (clus_res_cond) {
-		if (clus_res_cond->name_list)
-			list_destroy(clus_res_cond->name_list);
-		if (clus_res_cond->description_list)
-			list_destroy(clus_res_cond->description_list);
-		if (clus_res_cond->format_list)
-			list_destroy(clus_res_cond->format_list);
-		if (clus_res_cond->manager_list)
-			list_destroy(clus_res_cond->manager_list);
-		if (clus_res_cond->server_list)
-			list_destroy(clus_res_cond->server_list);
-		if (clus_res_cond->cluster_list)
-			list_destroy(clus_res_cond->cluster_list);
-	}
-}
-
 static void _free_cluster_cond_members(slurmdb_cluster_cond_t *cluster_cond)
 {
 	if (cluster_cond) {
@@ -139,24 +122,33 @@ static void _free_cluster_cond_members(slurmdb_cluster_cond_t *cluster_cond)
 	}
 }
 
-static void _free_ser_res_cond_members(slurmdb_ser_res_cond_t *ser_res_cond)
+static void _free_res_cond_members(slurmdb_res_cond_t *res_cond)
+{
+	if (res_cond) {
+		FREE_NULL_LIST(res_cond->cluster_list);
+		FREE_NULL_LIST(res_cond->description_list);
+		FREE_NULL_LIST(res_cond->id_list);
+		FREE_NULL_LIST(res_cond->manager_list);
+		FREE_NULL_LIST(res_cond->name_list);
+		FREE_NULL_LIST(res_cond->percent_list);
+		FREE_NULL_LIST(res_cond->server_list);
+		FREE_NULL_LIST(res_cond->type_list);
+	}
+}
+
+static void _free_res_rec_members(slurmdb_res_rec_t *res)
 {
-	if (ser_res_cond) {
-		if (ser_res_cond->name_list)
-			list_destroy(ser_res_cond->name_list);
-		if (ser_res_cond->description_list)
-			list_destroy(ser_res_cond->description_list);
-		if (ser_res_cond->format_list)
-			list_destroy(ser_res_cond->format_list);
-		if (ser_res_cond->id_list)
-			list_destroy(ser_res_cond->id_list);
-		if (ser_res_cond->manager_list)
-			list_destroy(ser_res_cond->manager_list);
-		if (ser_res_cond->server_list)
-			list_destroy(ser_res_cond->server_list);
+	if (res) {
+		FREE_NULL_LIST(res->clus_res_list);
+		slurmdb_destroy_clus_res_rec(res->clus_res_rec);
+		xfree(res->description);
+		xfree(res->manager);
+		xfree(res->name);
+		xfree(res->server);
 	}
 }
 
+
 /*
  * Comparator used for sorting immediate children of acct_hierarchical_recs
  *
@@ -307,7 +299,7 @@ static int _setup_cluster_rec(slurmdb_cluster_rec_t *cluster_rec)
 	}
 
 	if ((plugin_id_select = select_get_plugin_id_pos(
-			cluster_rec->plugin_id_select)) == SLURM_ERROR) {
+		     cluster_rec->plugin_id_select)) == SLURM_ERROR) {
 		error("Cluster '%s' has an unknown select plugin_id %u",
 		      cluster_rec->name,
 		      cluster_rec->plugin_id_select);
@@ -382,7 +374,7 @@ static uint32_t _str_2_qos_flags(char *flags)
 	return 0;
 }
 
-static uint32_t _str_2_ser_res_flags(char *flags)
+static uint32_t _str_2_res_flags(char *flags)
 {
 	return 0;
 }
@@ -482,7 +474,6 @@ extern void slurmdb_destroy_clus_res_rec(void *object)
 
 	if (slurmdb_clus_res) {
 		_free_clus_res_rec_members(slurmdb_clus_res);
-		xfree(slurmdb_clus_res->cluster);
 		xfree(slurmdb_clus_res);
 	}
 }
@@ -589,17 +580,14 @@ extern void slurmdb_destroy_step_rec(void *object)
 	}
 }
 
-extern void slurmdb_destroy_ser_res_rec(void *object)
+extern void slurmdb_destroy_res_rec(void *object)
 {
-	slurmdb_ser_res_rec_t *slurmdb_ser_res =
-		(slurmdb_ser_res_rec_t *)object;
+	slurmdb_res_rec_t *slurmdb_res =
+		(slurmdb_res_rec_t *)object;
 
-	if (slurmdb_ser_res) {
-		xfree(slurmdb_ser_res->name);
-		xfree(slurmdb_ser_res->description);
-		xfree(slurmdb_ser_res->manager);
-		xfree(slurmdb_ser_res->server);
-		xfree(slurmdb_ser_res);
+	if (slurmdb_res) {
+		_free_res_rec_members(slurmdb_res);
+		xfree(slurmdb_res);
 	}
 }
 
@@ -709,16 +697,6 @@ extern void slurmdb_destroy_account_cond(void *object)
 	}
 }
 
-extern void slurmdb_destroy_clus_res_cond(void *object)
-{
-	slurmdb_clus_res_cond_t *slurmdb_clus_res =
-		(slurmdb_clus_res_cond_t *)object;
-	if (slurmdb_clus_res) {
-		_free_clus_res_cond_members(slurmdb_clus_res);
-		xfree(slurmdb_clus_res);
-	}
-}
-
 extern void slurmdb_destroy_cluster_cond(void *object)
 {
 	slurmdb_cluster_cond_t *slurmdb_cluster =
@@ -877,13 +855,13 @@ extern void slurmdb_destroy_qos_cond(void *object)
 	}
 }
 
-extern void slurmdb_destroy_ser_res_cond(void *object)
+extern void slurmdb_destroy_res_cond(void *object)
 {
-	slurmdb_ser_res_cond_t *slurmdb_ser_res =
-		(slurmdb_ser_res_cond_t *)object;
-	if (slurmdb_ser_res) {
-		_free_ser_res_cond_members(slurmdb_ser_res);
-		xfree(slurmdb_ser_res);
+	slurmdb_res_cond_t *slurmdb_res =
+		(slurmdb_res_cond_t *)object;
+	if (slurmdb_res) {
+		_free_res_cond_members(slurmdb_res);
+		xfree(slurmdb_res);
 	}
 }
 
@@ -1170,7 +1148,7 @@ extern void slurmdb_init_association_rec(slurmdb_association_rec_t *assoc,
 }
 
 extern void slurmdb_init_clus_res_rec(slurmdb_clus_res_rec_t *clus_res,
-				     bool free_it)
+				      bool free_it)
 {
 	if (!clus_res)
 		return;
@@ -1178,9 +1156,7 @@ extern void slurmdb_init_clus_res_rec(slurmdb_clus_res_rec_t *clus_res,
 	if (free_it)
 		_free_clus_res_rec_members(clus_res);
 	memset(clus_res, 0, sizeof(slurmdb_clus_res_rec_t));
-	clus_res->res_ptr = NULL;
-	clus_res->cluster = NULL;
-	clus_res->percent_allowed = NO_VAL;
+	clus_res->percent_allowed = (uint16_t)NO_VAL;
 }
 
 extern void slurmdb_init_cluster_rec(slurmdb_cluster_rec_t *cluster,
@@ -1233,23 +1209,20 @@ extern void slurmdb_init_qos_rec(slurmdb_qos_rec_t *qos, bool free_it)
 	qos->usage_thres = (double)NO_VAL;
 }
 
-extern void slurmdb_init_ser_res_rec(slurmdb_ser_res_rec_t *ser_res,
-				     bool free_it)
+extern void slurmdb_init_res_rec(slurmdb_res_rec_t *res,
+				 bool free_it)
 {
-	if (!ser_res)
+	if (!res)
 		return;
 
 	if (free_it)
-		slurmdb_destroy_ser_res_rec(ser_res);
-	memset(ser_res, 0, sizeof(slurmdb_ser_res_rec_t));
-	ser_res->description = NULL;
-	ser_res->id = NO_VAL;
-	ser_res->name = NULL;
-	ser_res->count = NO_VAL;
-	ser_res->flags = SER_RES_FLAG_NOTSET;
-	ser_res->type = NO_VAL;
-	ser_res->manager = NULL;
-	ser_res->server = NULL;
+		_free_res_rec_members(res);
+	memset(res, 0, sizeof(slurmdb_res_rec_t));
+	res->count = NO_VAL;
+	res->flags = SLURMDB_RES_FLAG_NOTSET;
+	res->id = NO_VAL;
+	res->percent_used = (uint16_t)NO_VAL;
+	res->type = SLURMDB_RESOURCE_NOTSET;
 }
 
 extern void slurmdb_init_wckey_rec(slurmdb_wckey_rec_t *wckey, bool free_it)
@@ -1263,18 +1236,6 @@ extern void slurmdb_init_wckey_rec(slurmdb_wckey_rec_t *wckey, bool free_it)
 	wckey->is_def = (uint16_t)NO_VAL;
 }
 
-extern void slurmdb_init_clus_res_cond(slurmdb_clus_res_cond_t *clus_res,
-				      bool free_it)
-{
-	if (!clus_res)
-		return;
-
-	if (free_it)
-		_free_clus_res_cond_members(clus_res);
-	memset(clus_res, 0, sizeof(slurmdb_clus_res_cond_t));
-	clus_res->with_deleted = 0;
-}
-
 extern void slurmdb_init_cluster_cond(slurmdb_cluster_cond_t *cluster,
 				      bool free_it)
 {
@@ -1287,15 +1248,16 @@ extern void slurmdb_init_cluster_cond(slurmdb_cluster_cond_t *cluster,
 	cluster->flags = NO_VAL;
 }
 
-extern void slurmdb_init_ser_res_cond(slurmdb_ser_res_cond_t *ser_res,
-				      bool free_it)
+extern void slurmdb_init_res_cond(slurmdb_res_cond_t *res,
+				  bool free_it)
 {
-	if (!ser_res)
+	if (!res)
 		return;
 
 	if (free_it)
-		_free_ser_res_cond_members(ser_res);
-	memset(ser_res, 0, sizeof(slurmdb_ser_res_cond_t));
+		_free_res_cond_members(res);
+	memset(res, 0, sizeof(slurmdb_res_cond_t));
+	res->flags = SLURMDB_RES_FLAG_NOTSET;
 }
 
 extern char *slurmdb_qos_str(List qos_list, uint32_t level)
@@ -1397,7 +1359,7 @@ extern uint32_t str_2_qos_flags(char *flags, int option)
 		/* clear them all */
 		qos_flags = INFINITE;
 		qos_flags &= (~QOS_FLAG_NOTSET &
-			       ~QOS_FLAG_ADD);
+			      ~QOS_FLAG_ADD);
 		return qos_flags;
 	}
 
@@ -1420,57 +1382,73 @@ extern uint32_t str_2_qos_flags(char *flags, int option)
 	return qos_flags;
 }
 
-extern char *slurmdb_ser_res_flags_str(uint32_t flags)
+extern char *slurmdb_res_flags_str(uint32_t flags)
 {
-	char *ser_res_flags = NULL;
+	char *res_flags = NULL;
 
-	if (flags & SER_RES_FLAG_NOTSET)
+	if (flags & SLURMDB_RES_FLAG_NOTSET)
 		return xstrdup("NotSet");
 
-	if (flags & SER_RES_FLAG_ADD)
-		xstrcat(ser_res_flags, "Add,");
-	if (flags & SER_RES_FLAG_REMOVE)
-		xstrcat(ser_res_flags, "Remove,");
+	if (flags & SLURMDB_RES_FLAG_ADD)
+		xstrcat(res_flags, "Add,");
+	if (flags & SLURMDB_RES_FLAG_REMOVE)
+		xstrcat(res_flags, "Remove,");
 
-	if (ser_res_flags)
-		ser_res_flags[strlen(ser_res_flags)-1] = '\0';
+	if (res_flags)
+		res_flags[strlen(res_flags)-1] = '\0';
 
-	return ser_res_flags;
+	return res_flags;
 }
 
-extern uint32_t str_2_ser_res_flags(char *flags, int option)
+extern uint32_t str_2_res_flags(char *flags, int option)
 {
-	uint32_t ser_res_flags = 0;
+	uint32_t res_flags = 0;
 	char *token, *my_flags, *last = NULL;
 
 	if (!flags) {
 		error("We need a server resource flags string to translate");
-		return SER_RES_FLAG_NOTSET;
+		return SLURMDB_RES_FLAG_NOTSET;
 	} else if (atoi(flags) == -1) {
 		/* clear them all */
-		ser_res_flags = INFINITE;
-		ser_res_flags &= (~SER_RES_FLAG_NOTSET &
-				  ~SER_RES_FLAG_ADD);
-		return ser_res_flags;
+		res_flags = INFINITE;
+		res_flags &= (SLURMDB_RES_FLAG_NOTSET &
+			      ~SLURMDB_RES_FLAG_ADD);
+		return res_flags;
 	}
 
 	my_flags = xstrdup(flags);
 	token = strtok_r(my_flags, ",", &last);
 	while (token) {
-		ser_res_flags |= _str_2_ser_res_flags(token);
+		res_flags |= _str_2_res_flags(token);
 		token = strtok_r(NULL, ",", &last);
 	}
 	xfree(my_flags);
 
-	if (!ser_res_flags)
-		ser_res_flags = SER_RES_FLAG_NOTSET;
+	if (!res_flags)
+		res_flags = SLURMDB_RES_FLAG_NOTSET;
 	else if (option == '+')
-		ser_res_flags |= SER_RES_FLAG_ADD;
+		res_flags |= SLURMDB_RES_FLAG_ADD;
 	else if (option == '-')
-		ser_res_flags |= SER_RES_FLAG_REMOVE;
+		res_flags |= SLURMDB_RES_FLAG_REMOVE;
+
 
+	return res_flags;
+}
 
-	return ser_res_flags;
+extern char *slurmdb_res_type_str(slurmdb_resource_type_t type)
+{
+	switch (type) {
+	case SLURMDB_RESOURCE_NOTSET:
+		return "Not Set";
+		break;
+	case SLURMDB_RESOURCE_LICENSE:
+		return "License";
+		break;
+	default:
+		return "Unknown";
+		break;
+	}
+	return "Unknown";
 }
 
 extern char *slurmdb_admin_level_str(slurmdb_admin_level_t level)
@@ -1504,7 +1482,7 @@ extern slurmdb_admin_level_t str_2_slurmdb_admin_level(char *level)
 	} else if (!strncasecmp(level, "Operator", 1)) {
 		return SLURMDB_ADMIN_OPERATOR;
 	} else if (!strncasecmp(level, "SuperUser", 1)
-		  || !strncasecmp(level, "Admin", 1)) {
+		   || !strncasecmp(level, "Admin", 1)) {
 		return SLURMDB_ADMIN_SUPER_USER;
 	} else {
 		return SLURMDB_ADMIN_NOTSET;
@@ -1589,19 +1567,19 @@ extern List slurmdb_get_acct_hierarchical_rec_list(List assoc_list)
 			arch_rec->sort_name = assoc->acct;
 
 		if (last_parent && assoc->parent_id == last_parent->assoc->id
-		   && !strcmp(assoc->cluster, last_parent->assoc->cluster)) {
+		    && !strcmp(assoc->cluster, last_parent->assoc->cluster)) {
 			par_arch_rec = last_parent;
 		} else if (last_acct_parent
-			  && (assoc->parent_id == last_acct_parent->assoc->id)
-			  && !strcmp(assoc->cluster,
-				     last_acct_parent->assoc->cluster)) {
+			   && (assoc->parent_id == last_acct_parent->assoc->id)
+			   && !strcmp(assoc->cluster,
+				      last_acct_parent->assoc->cluster)) {
 			par_arch_rec = last_acct_parent;
 		} else {
 			list_iterator_reset(itr2);
 			while((par_arch_rec = list_next(itr2))) {
 				if (assoc->parent_id == par_arch_rec->assoc->id
-				   && !strcmp(assoc->cluster,
-					      par_arch_rec->assoc->cluster)) {
+				    && !strcmp(assoc->cluster,
+					       par_arch_rec->assoc->cluster)) {
 					if (assoc->user)
 						last_parent = par_arch_rec;
 					else
@@ -1725,7 +1703,7 @@ extern char *get_qos_complete_str_bitstr(List qos_list, bitstr_t *valid_qos)
 	int i = 0;
 
 	if (!qos_list || !list_count(qos_list)
-	   || !valid_qos || (bit_ffs(valid_qos) == -1))
+	    || !valid_qos || (bit_ffs(valid_qos) == -1))
 		return xstrdup("");
 
 	temp_list = list_create(NULL);
@@ -1762,7 +1740,7 @@ extern char *get_qos_complete_str(List qos_list, List num_qos_list)
 	int option = 0;
 
 	if (!qos_list || !list_count(qos_list)
-	   || !num_qos_list || !list_count(num_qos_list))
+	    || !num_qos_list || !list_count(num_qos_list))
 		return xstrdup("");
 
 	temp_list = list_create(slurm_destroy_char);
@@ -2242,7 +2220,7 @@ extern int slurmdb_addto_qos_char_list(List char_list, List qos_list,
 				if ((i-start) > 0) {
 					int tmp_option = option;
 					if (names[start] == '+'
-					   || names[start] == '-') {
+					    || names[start] == '-') {
 						tmp_option = names[start];
 						start++;
 					}
diff --git a/src/common/slurmdb_defs.h b/src/common/slurmdb_defs.h
index 1fe2c9f685f..565b5ea5c8f 100644
--- a/src/common/slurmdb_defs.h
+++ b/src/common/slurmdb_defs.h
@@ -69,7 +69,7 @@ extern void slurmdb_destroy_job_rec(void *object);
 extern void slurmdb_destroy_qos_rec(void *object);
 extern void slurmdb_destroy_reservation_rec(void *object);
 extern void slurmdb_destroy_step_rec(void *object);
-extern void slurmdb_destroy_ser_res_rec(void *object);
+extern void slurmdb_destroy_res_rec(void *object);
 extern void slurmdb_destroy_txn_rec(void *object);
 extern void slurmdb_destroy_wckey_rec(void *object);
 extern void slurmdb_destroy_archive_rec(void *object);
@@ -79,7 +79,6 @@ extern void slurmdb_destroy_report_cluster_rec(void *object);
 
 extern void slurmdb_destroy_user_cond(void *object);
 extern void slurmdb_destroy_account_cond(void *object);
-extern void slurmdb_destroy_clus_res_cond(void *object);
 extern void slurmdb_destroy_cluster_cond(void *object);
 extern void slurmdb_destroy_association_cond(void *object);
 extern void slurmdb_destroy_event_cond(void *object);
@@ -87,7 +86,7 @@ extern void slurmdb_destroy_job_cond(void *object);
 extern void slurmdb_destroy_job_modify_cond(void *object);
 extern void slurmdb_destroy_qos_cond(void *object);
 extern void slurmdb_destroy_reservation_cond(void *object);
-extern void slurmdb_destroy_ser_res_cond(void *object);
+extern void slurmdb_destroy_res_cond(void *object);
 extern void slurmdb_destroy_txn_cond(void *object);
 extern void slurmdb_destroy_wckey_cond(void *object);
 extern void slurmdb_destroy_archive_cond(void *object);
@@ -111,7 +110,7 @@ extern void slurmdb_init_cluster_rec(slurmdb_cluster_rec_t *cluster,
 				     bool free_it);
 extern void slurmdb_init_qos_rec(slurmdb_qos_rec_t *qos,
 				 bool free_it);
-extern void slurmdb_init_ser_res_rec(slurmdb_ser_res_rec_t *ser_res,
+extern void slurmdb_init_res_rec(slurmdb_res_rec_t *res,
 				 bool free_it);
 extern void slurmdb_init_wckey_rec(slurmdb_wckey_rec_t *wckey,
 				   bool free_it);
@@ -124,8 +123,10 @@ extern char *slurmdb_qos_str(List qos_list, uint32_t level);
 extern uint32_t str_2_slurmdb_qos(List qos_list, char *level);
 extern char *slurmdb_qos_flags_str(uint32_t flags);
 extern uint32_t str_2_qos_flags(char *flags, int option);
-extern char *slurmdb_ser_res_flags_str(uint32_t flags);
-extern uint32_t str_2_ser_res_flags(char *flags, int option);
+extern char *slurmdb_res_flags_str(uint32_t flags);
+extern uint32_t str_2_res_flags(char *flags, int option);
+extern char *slurmdb_res_type_str(slurmdb_resource_type_t type);
+
 extern char *slurmdb_admin_level_str(slurmdb_admin_level_t level);
 extern slurmdb_admin_level_t str_2_slurmdb_admin_level(char *level);
 
@@ -160,12 +161,8 @@ extern int slurmdb_report_set_start_end_time(time_t *start, time_t *end);
 extern uint32_t slurmdb_parse_purge(char *string);
 extern char *slurmdb_purge_string(uint32_t purge, char *string, int len,
 				  bool with_archive);
-extern int slurmdb_addto_clus_res_char_list(List char_list, List clus_res_list,
-				       char *names, int option);
 extern int slurmdb_addto_qos_char_list(List char_list, List qos_list,
 				       char *names, int option);
-extern int slurmdb_addto_ser_res_char_list(List char_list, List ser_res_list,
-				       char *names, int option);
 extern int slurmdb_send_accounting_update(List update_list, char *cluster,
 					  char *host, uint16_t port,
 					  uint16_t rpc_version);
diff --git a/src/common/slurmdb_pack.c b/src/common/slurmdb_pack.c
index 045bf918e85..ffa9fcaf296 100644
--- a/src/common/slurmdb_pack.c
+++ b/src/common/slurmdb_pack.c
@@ -820,14 +820,12 @@ extern void slurmdb_pack_clus_res_rec(void *in, uint16_t rpc_version,
 	slurmdb_clus_res_rec_t *object = (slurmdb_clus_res_rec_t *)in;
 
 	if (!object) {
-		slurmdb_pack_ser_res_rec(NULL, rpc_version, buffer);
 		packnull(buffer);
 		pack32(NO_VAL, buffer);
 		return;
 	}
-	slurmdb_pack_ser_res_rec(object->res_ptr, rpc_version, buffer);
 	packstr(object->cluster, buffer);
-	pack32(object->percent_allowed, buffer);
+	pack16(object->percent_allowed, buffer);
 }
 
 extern int slurmdb_unpack_clus_res_rec(void **object, uint16_t rpc_version,
@@ -840,12 +838,8 @@ extern int slurmdb_unpack_clus_res_rec(void **object, uint16_t rpc_version,
 	*object = object_ptr;
 
 	slurmdb_init_clus_res_rec(object_ptr, 0);
-	if (slurmdb_unpack_ser_res_rec(
-		    &object_ptr->res_ptr, rpc_version, buffer)
-	    == SLURM_ERROR)
-		goto unpack_error;
 	safe_unpackstr_xmalloc(&object_ptr->cluster, &uint32_tmp, buffer);
-	safe_unpack32(&object_ptr->percent_allowed, buffer);
+	safe_unpack16(&object_ptr->percent_allowed, buffer);
 
 	return SLURM_SUCCESS;
 
@@ -2321,55 +2315,108 @@ unpack_error:
 }
 
 
-extern void slurmdb_pack_ser_res_rec(void *in, uint16_t rpc_version,
-				     Buf buffer)
+extern void slurmdb_pack_res_rec(void *in, uint16_t rpc_version, Buf buffer)
 {
-	slurmdb_ser_res_rec_t *object = (slurmdb_ser_res_rec_t *)in;
+	slurmdb_res_rec_t *object = (slurmdb_res_rec_t *)in;
+	uint32_t count = NO_VAL;
+	slurmdb_clus_res_rec_t *clus_res;
+	ListIterator itr;
 
 	if (!object) {
-		packnull(buffer);
-		pack32(NO_VAL, buffer);
-		packnull(buffer);
-		pack32(NO_VAL, buffer);
-		pack32(SER_RES_FLAG_NOTSET, buffer);
-		pack32(NO_VAL, buffer);
-		packnull(buffer);
-		packnull(buffer);
+		pack32(NO_VAL, buffer); // clus_res_list
+		pack32(NO_VAL, buffer); // clus_res_rec
+		pack32(NO_VAL, buffer); // count
+		packnull(buffer); // description
+		pack32(SLURMDB_RES_FLAG_NOTSET, buffer); // flags
+		pack32(NO_VAL, buffer); // id
+		packnull(buffer); // manager
+		packnull(buffer); // name
+		pack16(0, buffer); // percent_used
+		packnull(buffer); // server
+		pack32(SLURMDB_RESOURCE_NOTSET, buffer); // type
+
 		return;
 	}
-	packstr(object->description, buffer);
-	pack32(object->id, buffer);
-	packstr(object->name, buffer);
+	if (object->clus_res_list)
+		count = list_count(object->clus_res_list);
+
+	pack32(count, buffer);
+
+	if (count && count != NO_VAL) {
+		itr = list_iterator_create(object->clus_res_list);
+		while((clus_res = list_next(itr)))
+			slurmdb_pack_clus_res_rec(
+				clus_res, rpc_version, buffer);
+		list_iterator_destroy(itr);
+	}
+	count = NO_VAL;
+	if (object->clus_res_rec) {
+		pack32(0, buffer); /* anything not NO_VAL */
+		slurmdb_pack_clus_res_rec(
+			object->clus_res_rec, rpc_version, buffer);
+	} else
+		pack32(NO_VAL, buffer);
+
 	pack32(object->count, buffer);
+	packstr(object->description, buffer);
 	pack32(object->flags, buffer);
-	pack32(object->type, buffer);
+	pack32(object->id, buffer);
 	packstr(object->manager, buffer);
+	packstr(object->name, buffer);
+	pack16(object->percent_used, buffer);
 	packstr(object->server, buffer);
+	pack32(object->type, buffer);
 }
 
-extern int slurmdb_unpack_ser_res_rec(void **object, uint16_t rpc_version,
-				       Buf buffer)
+extern int slurmdb_unpack_res_rec(void **object, uint16_t rpc_version,
+				  Buf buffer)
 {
 	uint32_t uint32_tmp;
-	slurmdb_ser_res_rec_t *object_ptr =
-		xmalloc(sizeof(slurmdb_ser_res_rec_t));
+	uint32_t count;
+	int i;
+	slurmdb_res_rec_t *object_ptr =
+		xmalloc(sizeof(slurmdb_res_rec_t));
+	slurmdb_clus_res_rec_t *clus_res;
 
 	*object = object_ptr;
 
-	slurmdb_init_ser_res_rec(object_ptr, 0);
-	safe_unpackstr_xmalloc(&object_ptr->description, &uint32_tmp, buffer);
-	safe_unpack32(&object_ptr->id, buffer);
-	safe_unpackstr_xmalloc(&object_ptr->name, &uint32_tmp, buffer);
+	slurmdb_init_res_rec(object_ptr, 0);
+
+	safe_unpack32(&count, buffer);
+	if (count != NO_VAL) {
+		object_ptr->clus_res_list =
+			list_create(slurmdb_destroy_clus_res_rec);
+		for (i=0; i<count; i++) {
+			if (slurmdb_unpack_clus_res_rec(
+				    (void **)&clus_res, rpc_version, buffer)
+			    != SLURM_SUCCESS)
+				goto unpack_error;
+			list_append(object_ptr->clus_res_list, clus_res);
+		}
+	}
+
+	safe_unpack32(&count, buffer);
+	if (count != NO_VAL) {
+		if (slurmdb_unpack_clus_res_rec(
+			    (void **)&object_ptr->clus_res_rec,
+			    rpc_version, buffer) != SLURM_SUCCESS)
+			goto unpack_error;
+	}
+
 	safe_unpack32(&object_ptr->count, buffer);
+	safe_unpackstr_xmalloc(&object_ptr->description, &uint32_tmp, buffer);
 	safe_unpack32(&object_ptr->flags, buffer);
-	safe_unpack32(&object_ptr->type, buffer);
+	safe_unpack32(&object_ptr->id, buffer);
 	safe_unpackstr_xmalloc(&object_ptr->manager, &uint32_tmp, buffer);
+	safe_unpackstr_xmalloc(&object_ptr->name, &uint32_tmp, buffer);
+	safe_unpack16(&object_ptr->percent_used, buffer);
 	safe_unpackstr_xmalloc(&object_ptr->server, &uint32_tmp, buffer);
+	safe_unpack32(&object_ptr->type, buffer);
 
 	return SLURM_SUCCESS;
 
 unpack_error:
-	slurmdb_destroy_ser_res_rec(object_ptr);
+	slurmdb_destroy_res_rec(object_ptr);
 	*object = NULL;
 	return SLURM_ERROR;
 }
@@ -2875,185 +2922,6 @@ unpack_error:
 	return SLURM_ERROR;
 }
 
-extern void slurmdb_pack_clus_res_cond(void *in, uint16_t rpc_version,
-				      Buf buffer)
-{
-	char *tmp_info = NULL;
-	ListIterator itr = NULL;
-	slurmdb_clus_res_cond_t *object = (slurmdb_clus_res_cond_t *)in;
-	uint32_t count = NO_VAL;
-	if (!object) {
-		pack32(NO_VAL, buffer);
-		pack32(NO_VAL, buffer);
-		pack32(NO_VAL, buffer);
-		pack32(NO_VAL, buffer);
-		pack32(NO_VAL, buffer);
-		pack32(NO_VAL, buffer);
-		pack16(0,buffer);
-		return;
-	}
-	if (object->name_list)
-		count = list_count(object->name_list);
-
-	pack32(count, buffer);
-
-	if (count && count != NO_VAL) {
-		itr = list_iterator_create(object->name_list);
-		while((tmp_info = list_next(itr))) {
-			packstr(tmp_info, buffer);
-		}
-		list_iterator_destroy(itr);
-	}
-	count = NO_VAL;
-	if (object->description_list)
-		count = list_count(object->description_list);
-
-	pack32(count, buffer);
-
-	if (count && count != NO_VAL) {
-		itr = list_iterator_create(object->description_list);
-		while((tmp_info = list_next(itr))) {
-			packstr(tmp_info, buffer);
-		}
-		list_iterator_destroy(itr);
-	}
-	count = NO_VAL;
-	if (object->format_list)
-		count = list_count(object->format_list);
-
-	pack32(count, buffer);
-
-	if (count && count != NO_VAL) {
-		itr = list_iterator_create(object->format_list);
-		while((tmp_info = list_next(itr))) {
-			packstr(tmp_info, buffer);
-		}
-		list_iterator_destroy(itr);
-	}
-	count = NO_VAL;
-	if (object->manager_list)
-		count = list_count(object->manager_list);
-
-	pack32(count, buffer);
-
-	if (count && count != NO_VAL) {
-		itr = list_iterator_create(object->manager_list);
-		while((tmp_info = list_next(itr))) {
-			packstr(tmp_info, buffer);
-		}
-		list_iterator_destroy(itr);
-	}
-	count = NO_VAL;
-	if (object->server_list)
-		count = list_count(object->server_list);
-
-	pack32(count, buffer);
-
-	if (count && count != NO_VAL) {
-		itr = list_iterator_create(object->server_list);
-		while((tmp_info = list_next(itr))) {
-			packstr(tmp_info, buffer);
-		}
-		list_iterator_destroy(itr);
-	}
-	count = NO_VAL;
-	if (object->cluster_list)
-		count = list_count(object->cluster_list);
-
-	pack32(count, buffer);
-
-	if (count && count != NO_VAL) {
-		itr = list_iterator_create(object->cluster_list);
-		while((tmp_info = list_next(itr))) {
-			packstr(tmp_info, buffer);
-		}
-		list_iterator_destroy(itr);
-	}
-	count = NO_VAL;
-	pack16(object->with_deleted, buffer);
-}
-
-extern int slurmdb_unpack_clus_res_cond(void **object, uint16_t rpc_version,
-				       Buf buffer)
-{
-	uint32_t uint32_tmp;
-	int i;
-	uint32_t count;
-	slurmdb_clus_res_cond_t *object_ptr =
-		xmalloc(sizeof(slurmdb_clus_res_cond_t));
-	char *tmp_info = NULL;
-
-	*object = object_ptr;
-
-	safe_unpack32(&count, buffer);
-	if (count && count != NO_VAL) {
-		object_ptr->name_list =
-			list_create(slurm_destroy_char);
-		for(i=0; i<count; i++) {
-			safe_unpackstr_xmalloc(&tmp_info,
-					       &uint32_tmp, buffer);
-			list_append(object_ptr->name_list, tmp_info);
-		}
-	}
-	safe_unpack32(&count, buffer);
-	if (count && count != NO_VAL) {
-		object_ptr->description_list =
-			list_create(slurm_destroy_char);
-		for(i=0; i<count; i++) {
-			safe_unpackstr_xmalloc(&tmp_info,
-					       &uint32_tmp, buffer);
-			list_append(object_ptr->description_list, tmp_info);
-		}
-	}
-	safe_unpack32(&count, buffer);
-	if (count && count != NO_VAL) {
-		object_ptr->format_list =
-			list_create(slurm_destroy_char);
-		for(i=0; i<count; i++) {
-			safe_unpackstr_xmalloc(&tmp_info,
-					       &uint32_tmp, buffer);
-			list_append(object_ptr->format_list, tmp_info);
-		}
-	}
-	safe_unpack32(&count, buffer);
-	if (count && count != NO_VAL) {
-		object_ptr->manager_list =
-			list_create(slurm_destroy_char);
-		for(i=0; i<count; i++) {
-			safe_unpackstr_xmalloc(&tmp_info,
-					       &uint32_tmp, buffer);
-			list_append(object_ptr->manager_list, tmp_info);
-		}
-	}
-	safe_unpack32(&count, buffer);
-	if (count && count != NO_VAL) {
-		object_ptr->server_list =
-			list_create(slurm_destroy_char);
-		for(i=0; i<count; i++) {
-			safe_unpackstr_xmalloc(&tmp_info,
-					       &uint32_tmp, buffer);
-			list_append(object_ptr->server_list, tmp_info);
-		}
-	}
-	safe_unpack32(&count, buffer);
-	if (count && count != NO_VAL) {
-		object_ptr->cluster_list =
-			list_create(slurm_destroy_char);
-		for(i=0; i<count; i++) {
-			safe_unpackstr_xmalloc(&tmp_info,
-					       &uint32_tmp, buffer);
-			list_append(object_ptr->cluster_list, tmp_info);
-		}
-	}
-	safe_unpack16(&object_ptr->with_deleted, buffer);
-	return SLURM_SUCCESS;
-
-unpack_error:
-	slurmdb_destroy_clus_res_cond(object_ptr);
-	*object = NULL;
-	return SLURM_ERROR;
-}
-
 extern void slurmdb_pack_cluster_cond(void *in, uint16_t rpc_version,
 				      Buf buffer)
 {
@@ -7150,14 +7018,17 @@ unpack_error:
 	return SLURM_ERROR;
 }
 
-extern void slurmdb_pack_ser_res_cond(void *in, uint16_t rpc_version,
-				      Buf buffer)
+extern void slurmdb_pack_res_cond(void *in, uint16_t rpc_version, Buf buffer)
 {
 	char *tmp_info = NULL;
 	ListIterator itr = NULL;
-	slurmdb_ser_res_cond_t *object = (slurmdb_ser_res_cond_t *)in;
+	slurmdb_res_cond_t *object = (slurmdb_res_cond_t *)in;
 	uint32_t count = NO_VAL;
+
 	if (!object) {
+		pack32(NO_VAL, buffer);
+		pack32(NO_VAL, buffer);
+		pack32(SLURMDB_RES_FLAG_NOTSET, buffer);
 		pack32(NO_VAL, buffer);
 		pack32(NO_VAL, buffer);
 		pack32(NO_VAL, buffer);
@@ -7165,21 +7036,24 @@ extern void slurmdb_pack_ser_res_cond(void *in, uint16_t rpc_version,
 		pack32(NO_VAL, buffer);
 		pack32(NO_VAL, buffer);
 		pack16(0, buffer);
+		pack16(0, buffer);
+
 		return;
 	}
-	if (object->name_list)
-		count = list_count(object->name_list);
+	if (object->cluster_list)
+		count = list_count(object->cluster_list);
 
 	pack32(count, buffer);
 
 	if (count && count != NO_VAL) {
-		itr = list_iterator_create(object->name_list);
+		itr = list_iterator_create(object->cluster_list);
 		while((tmp_info = list_next(itr))) {
 			packstr(tmp_info, buffer);
 		}
 		list_iterator_destroy(itr);
 	}
 	count = NO_VAL;
+
 	if (object->description_list)
 		count = list_count(object->description_list);
 
@@ -7193,45 +7067,65 @@ extern void slurmdb_pack_ser_res_cond(void *in, uint16_t rpc_version,
 		list_iterator_destroy(itr);
 	}
 	count = NO_VAL;
-	if (object->format_list)
-		count = list_count(object->format_list);
+
+	pack32(object->flags, buffer);
+
+	if (object->id_list)
+		count = list_count(object->id_list);
 
 	pack32(count, buffer);
 
 	if (count && count != NO_VAL) {
-		itr = list_iterator_create(object->format_list);
+		itr = list_iterator_create(object->id_list);
 		while((tmp_info = list_next(itr))) {
 			packstr(tmp_info, buffer);
 		}
 		list_iterator_destroy(itr);
 	}
 	count = NO_VAL;
-	if (object->id_list)
-		count = list_count(object->id_list);
+
+	if (object->manager_list)
+		count = list_count(object->manager_list);
 
 	pack32(count, buffer);
 
 	if (count && count != NO_VAL) {
-		itr = list_iterator_create(object->id_list);
+		itr = list_iterator_create(object->manager_list);
 		while((tmp_info = list_next(itr))) {
 			packstr(tmp_info, buffer);
 		}
 		list_iterator_destroy(itr);
 	}
 	count = NO_VAL;
-	if (object->manager_list)
-		count = list_count(object->manager_list);
+
+	if (object->name_list)
+		count = list_count(object->name_list);
 
 	pack32(count, buffer);
 
 	if (count && count != NO_VAL) {
-		itr = list_iterator_create(object->manager_list);
+		itr = list_iterator_create(object->name_list);
+		while((tmp_info = list_next(itr))) {
+			packstr(tmp_info, buffer);
+		}
+		list_iterator_destroy(itr);
+	}
+	count = NO_VAL;
+
+	if (object->percent_list)
+		count = list_count(object->percent_list);
+
+	pack32(count, buffer);
+
+	if (count && count != NO_VAL) {
+		itr = list_iterator_create(object->percent_list);
 		while((tmp_info = list_next(itr))) {
 			packstr(tmp_info, buffer);
 		}
 		list_iterator_destroy(itr);
 	}
 	count = NO_VAL;
+
 	if (object->server_list)
 		count = list_count(object->server_list);
 
@@ -7245,32 +7139,50 @@ extern void slurmdb_pack_ser_res_cond(void *in, uint16_t rpc_version,
 		list_iterator_destroy(itr);
 	}
 	count = NO_VAL;
+
+	if (object->type_list)
+		count = list_count(object->type_list);
+
+	pack32(count, buffer);
+
+	if (count && count != NO_VAL) {
+		itr = list_iterator_create(object->type_list);
+		while((tmp_info = list_next(itr))) {
+			packstr(tmp_info, buffer);
+		}
+		list_iterator_destroy(itr);
+	}
+	count = NO_VAL;
+
 	pack16(object->with_deleted, buffer);
+	pack16(object->with_clusters, buffer);
 }
 
-extern int slurmdb_unpack_ser_res_cond(void **object, uint16_t rpc_version,
+extern int slurmdb_unpack_res_cond(void **object, uint16_t rpc_version,
 				       Buf buffer)
 {
 	uint32_t uint32_tmp;
 	int i;
 	uint32_t count;
-	slurmdb_ser_res_cond_t *object_ptr =
-		xmalloc(sizeof(slurmdb_ser_res_cond_t));
+	slurmdb_res_cond_t *object_ptr =
+		xmalloc(sizeof(slurmdb_res_cond_t));
 	char *tmp_info = NULL;
 
 	*object = object_ptr;
 
-	slurmdb_init_ser_res_cond(object_ptr, 0);
+	slurmdb_init_res_cond(object_ptr, 0);
+
 	safe_unpack32(&count, buffer);
 	if (count && count != NO_VAL) {
-		object_ptr->name_list =
+		object_ptr->cluster_list =
 			list_create(slurm_destroy_char);
 		for(i=0; i<count; i++) {
 			safe_unpackstr_xmalloc(&tmp_info,
 					       &uint32_tmp, buffer);
-			list_append(object_ptr->name_list, tmp_info);
+			list_append(object_ptr->cluster_list, tmp_info);
 		}
 	}
+
 	safe_unpack32(&count, buffer);
 	if (count && count != NO_VAL) {
 		object_ptr->description_list =
@@ -7281,36 +7193,53 @@ extern int slurmdb_unpack_ser_res_cond(void **object, uint16_t rpc_version,
 			list_append(object_ptr->description_list, tmp_info);
 		}
 	}
+
+	safe_unpack32(&object_ptr->flags, buffer);
+
 	safe_unpack32(&count, buffer);
 	if (count && count != NO_VAL) {
-		object_ptr->format_list =
+		object_ptr->id_list =
 			list_create(slurm_destroy_char);
 		for(i=0; i<count; i++) {
 			safe_unpackstr_xmalloc(&tmp_info,
 					       &uint32_tmp, buffer);
-			list_append(object_ptr->format_list, tmp_info);
+			list_append(object_ptr->id_list, tmp_info);
 		}
 	}
+
 	safe_unpack32(&count, buffer);
 	if (count && count != NO_VAL) {
-		object_ptr->id_list =
+		object_ptr->manager_list =
 			list_create(slurm_destroy_char);
 		for(i=0; i<count; i++) {
 			safe_unpackstr_xmalloc(&tmp_info,
 					       &uint32_tmp, buffer);
-			list_append(object_ptr->id_list, tmp_info);
+			list_append(object_ptr->manager_list, tmp_info);
 		}
 	}
+
 	safe_unpack32(&count, buffer);
 	if (count && count != NO_VAL) {
-		object_ptr->manager_list =
+		object_ptr->name_list =
 			list_create(slurm_destroy_char);
 		for(i=0; i<count; i++) {
 			safe_unpackstr_xmalloc(&tmp_info,
 					       &uint32_tmp, buffer);
-			list_append(object_ptr->manager_list, tmp_info);
+			list_append(object_ptr->name_list, tmp_info);
+		}
+	}
+
+	safe_unpack32(&count, buffer);
+	if (count && count != NO_VAL) {
+		object_ptr->percent_list =
+			list_create(slurm_destroy_char);
+		for(i=0; i<count; i++) {
+			safe_unpackstr_xmalloc(&tmp_info,
+					       &uint32_tmp, buffer);
+			list_append(object_ptr->percent_list, tmp_info);
 		}
 	}
+
 	safe_unpack32(&count, buffer);
 	if (count && count != NO_VAL) {
 		object_ptr->server_list =
@@ -7321,11 +7250,25 @@ extern int slurmdb_unpack_ser_res_cond(void **object, uint16_t rpc_version,
 			list_append(object_ptr->server_list, tmp_info);
 		}
 	}
+
+	safe_unpack32(&count, buffer);
+	if (count && count != NO_VAL) {
+		object_ptr->type_list =
+			list_create(slurm_destroy_char);
+		for(i=0; i<count; i++) {
+			safe_unpackstr_xmalloc(&tmp_info,
+					       &uint32_tmp, buffer);
+			list_append(object_ptr->type_list, tmp_info);
+		}
+	}
+
 	safe_unpack16(&object_ptr->with_deleted, buffer);
+	safe_unpack16(&object_ptr->with_clusters, buffer);
+
 	return SLURM_SUCCESS;
 
 unpack_error:
-	slurmdb_destroy_ser_res_cond(object_ptr);
+	slurmdb_destroy_res_cond(object_ptr);
 	*object = NULL;
 	return SLURM_ERROR;
 }
@@ -8021,19 +7964,14 @@ extern void slurmdb_pack_update_object(slurmdb_update_object_t *object,
 	case SLURMDB_REMOVE_WCKEY:
 		my_function = slurmdb_pack_wckey_rec;
 		break;
-	case SLURMDB_ADD_CLUS_RES:
-	case SLURMDB_MODIFY_CLUS_RES:
-	case SLURMDB_REMOVE_CLUS_RES:
-		my_function = slurmdb_pack_clus_res_rec;
-		break;
 	case SLURMDB_ADD_CLUSTER:
 	case SLURMDB_REMOVE_CLUSTER:
 		pack16(object->type, buffer);
 		return;
-	case SLURMDB_ADD_SER_RES:
-	case SLURMDB_MODIFY_SER_RES:
-	case SLURMDB_REMOVE_SER_RES:
-		my_function = slurmdb_pack_ser_res_rec;
+	case SLURMDB_ADD_RES:
+	case SLURMDB_MODIFY_RES:
+	case SLURMDB_REMOVE_RES:
+		my_function = slurmdb_pack_res_rec;
 		break;
 	case SLURMDB_UPDATE_NOTSET:
 	default:
@@ -8098,21 +8036,15 @@ extern int slurmdb_unpack_update_object(slurmdb_update_object_t **object,
 		my_function = slurmdb_unpack_wckey_rec;
 		my_destroy = slurmdb_destroy_wckey_rec;
 		break;
-	case SLURMDB_ADD_CLUS_RES:
-	case SLURMDB_MODIFY_CLUS_RES:
-	case SLURMDB_REMOVE_CLUS_RES:
-		my_function = slurmdb_unpack_clus_res_rec;
-		my_destroy = slurmdb_destroy_clus_res_rec;
-		break;
 	case SLURMDB_ADD_CLUSTER:
 	case SLURMDB_REMOVE_CLUSTER:
 		/* we don't pack anything on these */
 		return SLURM_SUCCESS;
-	case SLURMDB_ADD_SER_RES:
-	case SLURMDB_MODIFY_SER_RES:
-	case SLURMDB_REMOVE_SER_RES:
-		my_function = slurmdb_unpack_ser_res_rec;
-		my_destroy = slurmdb_destroy_ser_res_rec;
+	case SLURMDB_ADD_RES:
+	case SLURMDB_MODIFY_RES:
+	case SLURMDB_REMOVE_RES:
+		my_function = slurmdb_unpack_res_rec;
+		my_destroy = slurmdb_destroy_res_rec;
 		break;
 	case SLURMDB_UPDATE_NOTSET:
 	default:
diff --git a/src/common/slurmdb_pack.h b/src/common/slurmdb_pack.h
index baa83fbb771..48e3868fca5 100644
--- a/src/common/slurmdb_pack.h
+++ b/src/common/slurmdb_pack.h
@@ -66,7 +66,7 @@ extern int unpack_cluster_accounting_rec(void **object, uint16_t rpc_version,
 extern void slurmdb_pack_clus_res_rec(void *in,
 				      uint16_t rpc_version, Buf buffer);
 extern int slurmdb_unpack_clus_res_rec(void **object, uint16_t rpc_version,
-				      Buf buffer);
+				       Buf buffer);
 extern void slurmdb_pack_cluster_rec(void *in,
 				     uint16_t rpc_version, Buf buffer);
 extern int slurmdb_unpack_cluster_rec(void **object, uint16_t rpc_version,
@@ -94,10 +94,9 @@ extern void slurmdb_pack_reservation_rec(void *in,
 					 uint16_t rpc_version, Buf buffer);
 extern int slurmdb_unpack_reservation_rec(void **object, uint16_t rpc_version,
 					  Buf buffer);
-extern void slurmdb_pack_ser_res_rec(void *in,
-				     uint16_t rpc_version, Buf buffer);
-extern int slurmdb_unpack_ser_res_rec(void **object, uint16_t rpc_version,
-				       Buf buffer);
+extern void slurmdb_pack_res_rec(void *in, uint16_t rpc_version, Buf buffer);
+extern int slurmdb_unpack_res_rec(void **object, uint16_t rpc_version,
+				  Buf buffer);
 extern void slurmdb_pack_txn_rec(void *in,
 				 uint16_t rpc_version, Buf buffer);
 extern int slurmdb_unpack_txn_rec(void **object,
@@ -119,10 +118,6 @@ extern void slurmdb_pack_account_cond(void *in,
 				      uint16_t rpc_version, Buf buffer);
 extern int slurmdb_unpack_account_cond(void **object, uint16_t rpc_version,
 				       Buf buffer);
-extern void slurmdb_pack_clus_res_cond(void *in,
-				       uint16_t rpc_version, Buf buffer);
-extern int slurmdb_unpack_clus_res_cond(void **object, uint16_t rpc_version,
-					Buf buffer);
 extern void slurmdb_pack_cluster_cond(void *in,
 				      uint16_t rpc_version, Buf buffer);
 extern int slurmdb_unpack_cluster_cond(void **object, uint16_t rpc_version,
@@ -164,10 +159,9 @@ extern void slurmdb_pack_step_rec(slurmdb_step_rec_t *step,
 				  uint16_t rpc_version, Buf buffer);
 extern int slurmdb_unpack_step_rec(slurmdb_step_rec_t **step,
 				   uint16_t rpc_version, Buf buffer);
-extern void slurmdb_pack_ser_res_cond(void *in,
-				      uint16_t rpc_version, Buf buffer);
-extern int slurmdb_unpack_ser_res_cond(void **object, uint16_t rpc_version,
-				       Buf buffer);
+extern void slurmdb_pack_res_cond(void *in, uint16_t rpc_version, Buf buffer);
+extern int slurmdb_unpack_res_cond(void **object, uint16_t rpc_version,
+				   Buf buffer);
 extern void slurmdb_pack_txn_cond(void *in,
 				  uint16_t rpc_version, Buf buffer);
 extern int slurmdb_unpack_txn_cond(void **object, uint16_t rpc_version,
diff --git a/src/common/slurmdbd_defs.c b/src/common/slurmdbd_defs.c
index ea6926a665d..32015b985c2 100644
--- a/src/common/slurmdbd_defs.c
+++ b/src/common/slurmdbd_defs.c
@@ -508,19 +508,17 @@ extern Buf pack_slurmdbd_msg(slurmdbd_msg_t *req, uint16_t rpc_version)
 	switch (req->msg_type) {
 	case DBD_ADD_ACCOUNTS:
 	case DBD_ADD_ASSOCS:
-	case DBD_ADD_CLUS_RES:
 	case DBD_ADD_CLUSTERS:
-	case DBD_ADD_SER_RES:
+	case DBD_ADD_RES:
 	case DBD_ADD_USERS:
 	case DBD_GOT_ACCOUNTS:
 	case DBD_GOT_ASSOCS:
-	case DBD_GOT_CLUS_RES:
 	case DBD_GOT_CLUSTERS:
 	case DBD_GOT_EVENTS:
 	case DBD_GOT_JOBS:
 	case DBD_GOT_LIST:
-	case DBD_GOT_SER_RES:
 	case DBD_GOT_PROBS:
+	case DBD_GOT_RES:
 	case DBD_ADD_QOS:
 	case DBD_GOT_QOS:
 	case DBD_GOT_RESVS:
@@ -554,23 +552,21 @@ extern Buf pack_slurmdbd_msg(slurmdbd_msg_t *req, uint16_t rpc_version)
 		break;
 	case DBD_GET_ACCOUNTS:
 	case DBD_GET_ASSOCS:
-	case DBD_GET_CLUS_RES:
 	case DBD_GET_CLUSTERS:
 	case DBD_GET_EVENTS:
 	case DBD_GET_JOBS_COND:
 	case DBD_GET_PROBS:
 	case DBD_GET_QOS:
 	case DBD_GET_RESVS:
-	case DBD_GET_SER_RES:
+	case DBD_GET_RES:
 	case DBD_GET_TXN:
 	case DBD_GET_USERS:
 	case DBD_GET_WCKEYS:
 	case DBD_REMOVE_ACCOUNTS:
 	case DBD_REMOVE_ASSOCS:
-	case DBD_REMOVE_CLUS_RES:
 	case DBD_REMOVE_CLUSTERS:
 	case DBD_REMOVE_QOS:
-	case DBD_REMOVE_SER_RES:
+	case DBD_REMOVE_RES:
 	case DBD_REMOVE_WCKEYS:
 	case DBD_REMOVE_USERS:
 	case DBD_ARCHIVE_DUMP:
@@ -614,11 +610,10 @@ extern Buf pack_slurmdbd_msg(slurmdbd_msg_t *req, uint16_t rpc_version)
 		break;
 	case DBD_MODIFY_ACCOUNTS:
 	case DBD_MODIFY_ASSOCS:
-	case DBD_MODIFY_CLUS_RES:
 	case DBD_MODIFY_CLUSTERS:
 	case DBD_MODIFY_JOB:
 	case DBD_MODIFY_QOS:
-	case DBD_MODIFY_SER_RES:
+	case DBD_MODIFY_RES:
 	case DBD_MODIFY_USERS:
 		slurmdbd_pack_modify_msg(
 			(dbd_modify_msg_t *)req->data, rpc_version,
@@ -695,13 +690,11 @@ extern int unpack_slurmdbd_msg(slurmdbd_msg_t *resp,
 	switch (resp->msg_type) {
 	case DBD_ADD_ACCOUNTS:
 	case DBD_ADD_ASSOCS:
-	case DBD_ADD_CLUS_RES:
 	case DBD_ADD_CLUSTERS:
-	case DBD_ADD_SER_RES:
+	case DBD_ADD_RES:
 	case DBD_ADD_USERS:
 	case DBD_GOT_ACCOUNTS:
 	case DBD_GOT_ASSOCS:
-	case DBD_GOT_CLUS_RES:
 	case DBD_GOT_CLUSTERS:
 	case DBD_GOT_EVENTS:
 	case DBD_GOT_JOBS:
@@ -710,7 +703,7 @@ extern int unpack_slurmdbd_msg(slurmdbd_msg_t *resp,
 	case DBD_ADD_QOS:
 	case DBD_GOT_QOS:
 	case DBD_GOT_RESVS:
-	case DBD_GOT_SER_RES:
+	case DBD_GOT_RES:
 	case DBD_ADD_WCKEYS:
 	case DBD_GOT_WCKEYS:
 	case DBD_GOT_TXN:
@@ -742,23 +735,21 @@ extern int unpack_slurmdbd_msg(slurmdbd_msg_t *resp,
 		break;
 	case DBD_GET_ACCOUNTS:
 	case DBD_GET_ASSOCS:
-	case DBD_GET_CLUS_RES:
 	case DBD_GET_CLUSTERS:
 	case DBD_GET_EVENTS:
 	case DBD_GET_JOBS_COND:
 	case DBD_GET_PROBS:
 	case DBD_GET_QOS:
 	case DBD_GET_RESVS:
-	case DBD_GET_SER_RES:
+	case DBD_GET_RES:
 	case DBD_GET_TXN:
 	case DBD_GET_USERS:
 	case DBD_GET_WCKEYS:
 	case DBD_REMOVE_ACCOUNTS:
 	case DBD_REMOVE_ASSOCS:
-	case DBD_REMOVE_CLUS_RES:
 	case DBD_REMOVE_CLUSTERS:
 	case DBD_REMOVE_QOS:
-	case DBD_REMOVE_SER_RES:
+	case DBD_REMOVE_RES:
 	case DBD_REMOVE_WCKEYS:
 	case DBD_REMOVE_USERS:
 	case DBD_ARCHIVE_DUMP:
@@ -806,11 +797,10 @@ extern int unpack_slurmdbd_msg(slurmdbd_msg_t *resp,
 		break;
 	case DBD_MODIFY_ACCOUNTS:
 	case DBD_MODIFY_ASSOCS:
-	case DBD_MODIFY_CLUS_RES:
 	case DBD_MODIFY_CLUSTERS:
 	case DBD_MODIFY_JOB:
 	case DBD_MODIFY_QOS:
-	case DBD_MODIFY_SER_RES:
+	case DBD_MODIFY_RES:
 	case DBD_MODIFY_USERS:
 		rc = slurmdbd_unpack_modify_msg(
 			(dbd_modify_msg_t **)&resp->data,
@@ -886,12 +876,10 @@ extern slurmdbd_msg_type_t str_2_slurmdbd_msg_type(char *msg_type)
 		return DBD_ADD_ACCOUNT_COORDS;
 	} else if (!strcasecmp(msg_type, "Add Associations")) {
 		return DBD_ADD_ASSOCS;
-	} else if (!strcasecmp(msg_type, "Add Cluster Resources")) {
-		return DBD_ADD_CLUS_RES;
 	} else if (!strcasecmp(msg_type, "Add Clusters")) {
 		return DBD_ADD_CLUSTERS;
-	} else if (!strcasecmp(msg_type, "Add Server Resources")) {
-		return DBD_ADD_SER_RES;
+	} else if (!strcasecmp(msg_type, "Add Resources")) {
+		return DBD_ADD_RES;
 	} else if (!strcasecmp(msg_type, "Add Users")) {
 		return DBD_ADD_USERS;
 	} else if (!strcasecmp(msg_type, "Cluster Processors")) {
@@ -904,8 +892,6 @@ extern slurmdbd_msg_type_t str_2_slurmdbd_msg_type(char *msg_type)
 		return DBD_GET_ASSOCS;
 	} else if (!strcasecmp(msg_type, "Get Association Usage")) {
 		return DBD_GET_ASSOC_USAGE;
-	} else if (!strcasecmp(msg_type, "Get Cluster Resources")) {
-		return DBD_GET_CLUS_RES;
 	} else if (!strcasecmp(msg_type, "Get Clusters")) {
 		return DBD_GET_CLUSTERS;
 	} else if (!strcasecmp(msg_type, "Get Cluster Usage")) {
@@ -916,8 +902,8 @@ extern slurmdbd_msg_type_t str_2_slurmdbd_msg_type(char *msg_type)
 		return DBD_GET_JOBS;
 	} else if (!strcasecmp(msg_type, "Get Problems")) {
 		return DBD_GET_PROBS;
-	} else if (!strcasecmp(msg_type, "Get Server Resources")) {
-		return DBD_GET_SER_RES;
+	} else if (!strcasecmp(msg_type, "Get Resources")) {
+		return DBD_GET_RES;
 	} else if (!strcasecmp(msg_type, "Get Users")) {
 		return DBD_GET_USERS;
 	} else if (!strcasecmp(msg_type, "Got Accounts")) {
@@ -926,8 +912,6 @@ extern slurmdbd_msg_type_t str_2_slurmdbd_msg_type(char *msg_type)
 		return DBD_GOT_ASSOCS;
 	} else if (!strcasecmp(msg_type, "Got Association Usage")) {
 		return DBD_GOT_ASSOC_USAGE;
-	} else if (!strcasecmp(msg_type, "Got Cluster Resources")) {
-		return DBD_GOT_CLUS_RES;
 	} else if (!strcasecmp(msg_type, "Got Clusters")) {
 		return DBD_GOT_CLUSTERS;
 	} else if (!strcasecmp(msg_type, "Got Cluster Usage")) {
@@ -940,8 +924,8 @@ extern slurmdbd_msg_type_t str_2_slurmdbd_msg_type(char *msg_type)
 		return DBD_GOT_LIST;
 	} else if (!strcasecmp(msg_type, "Got Problems")) {
 		return DBD_GOT_PROBS;
-	} else if (!strcasecmp(msg_type, "Got Server Resources")) {
-		return DBD_GOT_SER_RES;
+	} else if (!strcasecmp(msg_type, "Got Resources")) {
+		return DBD_GOT_RES;
 	} else if (!strcasecmp(msg_type, "Got Users")) {
 		return DBD_GOT_USERS;
 	} else if (!strcasecmp(msg_type, "Job Complete")) {
@@ -956,16 +940,14 @@ extern slurmdbd_msg_type_t str_2_slurmdbd_msg_type(char *msg_type)
 		return DBD_MODIFY_ACCOUNTS;
 	} else if (!strcasecmp(msg_type, "Modify Associations")) {
 		return DBD_MODIFY_ASSOCS;
-	} else if (!strcasecmp(msg_type, "Modify Cluster Resources")) {
-		return DBD_MODIFY_CLUS_RES;
 	} else if (!strcasecmp(msg_type, "Modify Clusters")) {
 		return DBD_MODIFY_CLUSTERS;
 	} else if (!strcasecmp(msg_type, "Modify Job")) {
 		return DBD_MODIFY_JOB;
 	} else if (!strcasecmp(msg_type, "Modify QOS")) {
 		return DBD_MODIFY_QOS;
-	} else if (!strcasecmp(msg_type, "Modify Server Resources")) {
-		return DBD_MODIFY_SER_RES;
+	} else if (!strcasecmp(msg_type, "Modify Resources")) {
+		return DBD_MODIFY_RES;
 	} else if (!strcasecmp(msg_type, "Modify Users")) {
 		return DBD_MODIFY_USERS;
 	} else if (!strcasecmp(msg_type, "Node State")) {
@@ -984,12 +966,10 @@ extern slurmdbd_msg_type_t str_2_slurmdbd_msg_type(char *msg_type)
 		return DBD_ARCHIVE_LOAD;
 	} else if (!strcasecmp(msg_type, "Remove Associations")) {
 		return DBD_REMOVE_ASSOCS;
-	} else if (!strcasecmp(msg_type, "Remove Cluster Resources")) {
-		return DBD_REMOVE_CLUS_RES;
 	} else if (!strcasecmp(msg_type, "Remove Clusters")) {
 		return DBD_REMOVE_CLUSTERS;
-	} else if (!strcasecmp(msg_type, "Remove Server Resources")) {
-		return DBD_REMOVE_SER_RES;
+	} else if (!strcasecmp(msg_type, "Remove Resources")) {
+		return DBD_REMOVE_RES;
 	} else if (!strcasecmp(msg_type, "Remove Users")) {
 		return DBD_REMOVE_USERS;
 	} else if (!strcasecmp(msg_type, "Roll Usage")) {
@@ -1086,23 +1066,17 @@ extern char *slurmdbd_msg_type_2_str(slurmdbd_msg_type_t msg_type, int get_enum)
 		} else
 			return "Add Associations";
 		break;
-	case DBD_ADD_CLUS_RES:
-		if (get_enum) {
-			return "DBD_ADD_CLUS_RES";
-		} else
-			return "Add Cluster Resources";
-		break;
 	case DBD_ADD_CLUSTERS:
 		if (get_enum) {
 			return "DBD_ADD_CLUSTERS";
 		} else
 			return "Add Clusters";
 		break;
-	case DBD_ADD_SER_RES:
+	case DBD_ADD_RES:
 		if (get_enum) {
-			return "DBD_ADD_SER_RES";
+			return "DBD_ADD_RES";
 		} else
-			return "Add Server Resources";
+			return "Add Resources";
 		break;
 	case DBD_ADD_USERS:
 		if (get_enum) {
@@ -1140,12 +1114,6 @@ extern char *slurmdbd_msg_type_2_str(slurmdbd_msg_type_t msg_type, int get_enum)
 		} else
 			return "Get Association Usage";
 		break;
-	case DBD_GET_CLUS_RES:
-		if (get_enum) {
-			return "DBD_GET_CLUS_RES";
-		} else
-			return "Get Cluster Resources";
-		break;
 	case DBD_GET_CLUSTERS:
 		if (get_enum) {
 			return "DBD_GET_CLUSTERS";
@@ -1176,11 +1144,11 @@ extern char *slurmdbd_msg_type_2_str(slurmdbd_msg_type_t msg_type, int get_enum)
 		} else
 			return "Get Problems";
 		break;
-	case DBD_GET_SER_RES:
+	case DBD_GET_RES:
 		if (get_enum) {
-			return "DBD_GET_SER_RES";
+			return "DBD_GET_RES";
 		} else
-			return "Get Server Resources";
+			return "Get Resources";
 		break;
 	case DBD_GET_USERS:
 		if (get_enum) {
@@ -1206,12 +1174,6 @@ extern char *slurmdbd_msg_type_2_str(slurmdbd_msg_type_t msg_type, int get_enum)
 		} else
 			return "Got Association Usage";
 		break;
-	case DBD_GOT_CLUS_RES:
-		if (get_enum) {
-			return "DBD_GOT_CLUS_RES";
-		} else
-			return "Got Cluster Resources";
-		break;
 	case DBD_GOT_CLUSTERS:
 		if (get_enum) {
 			return "DBD_GOT_CLUSTERS";
@@ -1248,11 +1210,11 @@ extern char *slurmdbd_msg_type_2_str(slurmdbd_msg_type_t msg_type, int get_enum)
 		} else
 			return "Got Problems";
 		break;
-	case DBD_GOT_SER_RES:
+	case DBD_GOT_RES:
 		if (get_enum) {
-			return "DBD_GOT_SER_RES";
+			return "DBD_GOT_RES";
 		} else
-			return "Got Server Resources";
+			return "Got Resources";
 		break;
 	case DBD_GOT_USERS:
 		if (get_enum) {
@@ -1296,12 +1258,6 @@ extern char *slurmdbd_msg_type_2_str(slurmdbd_msg_type_t msg_type, int get_enum)
 		} else
 			return "Modify Associations";
 		break;
-	case DBD_MODIFY_CLUS_RES:
-		if (get_enum) {
-			return "DBD_MODIFY_CLUS_RES";
-		} else
-			return "Modify Cluster Resources";
-		break;
 	case DBD_MODIFY_CLUSTERS:
 		if (get_enum) {
 			return "DBD_MODIFY_CLUSTERS";
@@ -1320,11 +1276,11 @@ extern char *slurmdbd_msg_type_2_str(slurmdbd_msg_type_t msg_type, int get_enum)
 		} else
 			return "Modify QOS";
 		break;
-	case DBD_MODIFY_SER_RES:
+	case DBD_MODIFY_RES:
 		if (get_enum) {
-			return "DBD_MODIFY_SER_RES";
+			return "DBD_MODIFY_RES";
 		} else
-			return "Modify Server Resources";
+			return "Modify Resources";
 		break;
 	case DBD_MODIFY_USERS:
 		if (get_enum) {
@@ -1380,23 +1336,17 @@ extern char *slurmdbd_msg_type_2_str(slurmdbd_msg_type_t msg_type, int get_enum)
 		} else
 			return "Remove Associations";
 		break;
-	case DBD_REMOVE_CLUS_RES:
-		if (get_enum) {
-			return "DBD_REMOVE_CLUS_RES";
-		} else
-			return "Remove Cluster Resources";
-		break;
 	case DBD_REMOVE_CLUSTERS:
 		if (get_enum) {
 			return "DBD_REMOVE_CLUSTERS";
 		} else
 			return "Remove Clusters";
 		break;
-	case DBD_REMOVE_SER_RES:
+	case DBD_REMOVE_RES:
 		if (get_enum) {
-			return "DBD_REMOVE_SER_RES";
+			return "DBD_REMOVE_RES";
 		} else
-			return "Remove Server Resources";
+			return "Remove Resources";
 		break;
 	case DBD_REMOVE_USERS:
 		if (get_enum) {
@@ -2625,10 +2575,6 @@ extern void slurmdbd_free_cond_msg(dbd_cond_msg_t *msg,
 		case DBD_REMOVE_ASSOCS:
 			my_destroy = slurmdb_destroy_association_cond;
 			break;
-		case DBD_GET_CLUS_RES:
-		case DBD_REMOVE_CLUS_RES:
-			my_destroy = slurmdb_destroy_clus_res_cond;
-			break;
 		case DBD_GET_CLUSTERS:
 		case DBD_REMOVE_CLUSTERS:
 			my_destroy = slurmdb_destroy_cluster_cond;
@@ -2640,9 +2586,9 @@ extern void slurmdbd_free_cond_msg(dbd_cond_msg_t *msg,
 		case DBD_REMOVE_QOS:
 			my_destroy = slurmdb_destroy_qos_cond;
 			break;
-		case DBD_GET_SER_RES:
-		case DBD_REMOVE_SER_RES:
-			my_destroy = slurmdb_destroy_ser_res_cond;
+		case DBD_GET_RES:
+		case DBD_REMOVE_RES:
+			my_destroy = slurmdb_destroy_res_cond;
 			break;
 		case DBD_GET_WCKEYS:
 		case DBD_REMOVE_WCKEYS:
@@ -2750,10 +2696,6 @@ extern void slurmdbd_free_modify_msg(dbd_modify_msg_t *msg,
 			destroy_cond = slurmdb_destroy_association_cond;
 			destroy_rec = slurmdb_destroy_association_rec;
 			break;
-		case DBD_MODIFY_CLUS_RES:
-			destroy_cond = slurmdb_destroy_clus_res_cond;
-			destroy_rec = slurmdb_destroy_clus_res_rec;
-			break;
 		case DBD_MODIFY_CLUSTERS:
 			destroy_cond = slurmdb_destroy_cluster_cond;
 			destroy_rec = slurmdb_destroy_cluster_rec;
@@ -2766,9 +2708,9 @@ extern void slurmdbd_free_modify_msg(dbd_modify_msg_t *msg,
 			destroy_cond = slurmdb_destroy_qos_cond;
 			destroy_rec = slurmdb_destroy_qos_rec;
 			break;
-		case DBD_MODIFY_SER_RES:
-			destroy_cond = slurmdb_destroy_ser_res_cond;
-			destroy_rec = slurmdb_destroy_ser_res_rec;
+		case DBD_MODIFY_RES:
+			destroy_cond = slurmdb_destroy_res_cond;
+			destroy_rec = slurmdb_destroy_res_rec;
 			break;
 		case DBD_MODIFY_USERS:
 			destroy_cond = slurmdb_destroy_user_cond;
@@ -3023,10 +2965,6 @@ extern void slurmdbd_pack_cond_msg(dbd_cond_msg_t *msg,
 	case DBD_REMOVE_ASSOCS:
 		my_function = slurmdb_pack_association_cond;
 		break;
-	case DBD_GET_CLUS_RES:
-	case DBD_REMOVE_CLUS_RES:
-		my_function = slurmdb_pack_clus_res_cond;
-		break;
 	case DBD_GET_CLUSTERS:
 	case DBD_REMOVE_CLUSTERS:
 		my_function = slurmdb_pack_cluster_cond;
@@ -3038,9 +2976,9 @@ extern void slurmdbd_pack_cond_msg(dbd_cond_msg_t *msg,
 	case DBD_REMOVE_QOS:
 		my_function = slurmdb_pack_qos_cond;
 		break;
-	case DBD_GET_SER_RES:
-	case DBD_REMOVE_SER_RES:
-		my_function = slurmdb_pack_ser_res_cond;
+	case DBD_GET_RES:
+	case DBD_REMOVE_RES:
+		my_function = slurmdb_pack_res_cond;
 		break;
 	case DBD_GET_WCKEYS:
 	case DBD_REMOVE_WCKEYS:
@@ -3087,10 +3025,6 @@ extern int slurmdbd_unpack_cond_msg(dbd_cond_msg_t **msg,
 	case DBD_REMOVE_ASSOCS:
 		my_function = slurmdb_unpack_association_cond;
 		break;
-	case DBD_GET_CLUS_RES:
-	case DBD_REMOVE_CLUS_RES:
-		my_function = slurmdb_unpack_clus_res_cond;
-		break;
 	case DBD_GET_CLUSTERS:
 	case DBD_REMOVE_CLUSTERS:
 		my_function = slurmdb_unpack_cluster_cond;
@@ -3102,9 +3036,9 @@ extern int slurmdbd_unpack_cond_msg(dbd_cond_msg_t **msg,
 	case DBD_REMOVE_QOS:
 		my_function = slurmdb_unpack_qos_cond;
 		break;
-	case DBD_GET_SER_RES:
-	case DBD_REMOVE_SER_RES:
-		my_function = slurmdb_unpack_ser_res_cond;
+	case DBD_GET_RES:
+	case DBD_REMOVE_RES:
+		my_function = slurmdb_unpack_res_cond;
 		break;
 	case DBD_GET_WCKEYS:
 	case DBD_REMOVE_WCKEYS:
@@ -3527,10 +3461,6 @@ extern void slurmdbd_pack_list_msg(dbd_list_msg_t *msg,
 	case DBD_GOT_PROBS:
 		my_function = slurmdb_pack_association_rec;
 		break;
-	case DBD_ADD_CLUS_RES:
-	case DBD_GOT_CLUS_RES:
-		my_function = slurmdb_pack_clus_res_rec;
-		break;
 	case DBD_ADD_CLUSTERS:
 	case DBD_GOT_CLUSTERS:
 		my_function = slurmdb_pack_cluster_rec;
@@ -3551,9 +3481,9 @@ extern void slurmdbd_pack_list_msg(dbd_list_msg_t *msg,
 	case DBD_GOT_RESVS:
 		my_function = slurmdb_pack_reservation_rec;
 		break;
-	case DBD_ADD_SER_RES:
-	case DBD_GOT_SER_RES:
-		my_function = slurmdb_pack_ser_res_rec;
+	case DBD_ADD_RES:
+	case DBD_GOT_RES:
+		my_function = slurmdb_pack_res_rec;
 		break;
 	case DBD_ADD_WCKEYS:
 	case DBD_GOT_WCKEYS:
@@ -3625,11 +3555,6 @@ extern int slurmdbd_unpack_list_msg(dbd_list_msg_t **msg, uint16_t rpc_version,
 		my_function = slurmdb_unpack_association_rec;
 		my_destroy = slurmdb_destroy_association_rec;
 		break;
-	case DBD_ADD_CLUS_RES:
-	case DBD_GOT_CLUS_RES:
-		my_function = slurmdb_unpack_clus_res_rec;
-		my_destroy = slurmdb_destroy_clus_res_rec;
-		break;
 	case DBD_ADD_CLUSTERS:
 	case DBD_GOT_CLUSTERS:
 		my_function = slurmdb_unpack_cluster_rec;
@@ -3656,10 +3581,10 @@ extern int slurmdbd_unpack_list_msg(dbd_list_msg_t **msg, uint16_t rpc_version,
 		my_function = slurmdb_unpack_reservation_rec;
 		my_destroy = slurmdb_destroy_reservation_rec;
 		break;
-	case DBD_ADD_SER_RES:
-	case DBD_GOT_SER_RES:
-		my_function = slurmdb_unpack_ser_res_rec;
-		my_destroy = slurmdb_destroy_ser_res_rec;
+	case DBD_ADD_RES:
+	case DBD_GOT_RES:
+		my_function = slurmdb_unpack_res_rec;
+		my_destroy = slurmdb_destroy_res_rec;
 		break;
 	case DBD_ADD_WCKEYS:
 	case DBD_GOT_WCKEYS:
@@ -3743,10 +3668,6 @@ extern void slurmdbd_pack_modify_msg(dbd_modify_msg_t *msg,
 		my_cond = slurmdb_pack_association_cond;
 		my_rec = slurmdb_pack_association_rec;
 		break;
-	case DBD_MODIFY_CLUS_RES:
-		my_cond = slurmdb_pack_clus_res_cond;
-		my_rec = slurmdb_pack_clus_res_rec;
-		break;
 	case DBD_MODIFY_CLUSTERS:
 		my_cond = slurmdb_pack_cluster_cond;
 		my_rec = slurmdb_pack_cluster_rec;
@@ -3759,9 +3680,9 @@ extern void slurmdbd_pack_modify_msg(dbd_modify_msg_t *msg,
 		my_cond = slurmdb_pack_qos_cond;
 		my_rec = slurmdb_pack_qos_rec;
 		break;
-	case DBD_MODIFY_SER_RES:
-		my_cond = slurmdb_pack_ser_res_cond;
-		my_rec = slurmdb_pack_ser_res_rec;
+	case DBD_MODIFY_RES:
+		my_cond = slurmdb_pack_res_cond;
+		my_rec = slurmdb_pack_res_rec;
 		break;
 	case DBD_MODIFY_USERS:
 		my_cond = slurmdb_pack_user_cond;
@@ -3796,10 +3717,6 @@ extern int slurmdbd_unpack_modify_msg(dbd_modify_msg_t **msg,
 		my_cond = slurmdb_unpack_association_cond;
 		my_rec = slurmdb_unpack_association_rec;
 		break;
-	case DBD_MODIFY_CLUS_RES:
-		my_cond = slurmdb_unpack_clus_res_cond;
-		my_rec = slurmdb_unpack_clus_res_rec;
-		break;
 	case DBD_MODIFY_CLUSTERS:
 		my_cond = slurmdb_unpack_cluster_cond;
 		my_rec = slurmdb_unpack_cluster_rec;
@@ -3812,9 +3729,9 @@ extern int slurmdbd_unpack_modify_msg(dbd_modify_msg_t **msg,
 		my_cond = slurmdb_unpack_qos_cond;
 		my_rec = slurmdb_unpack_qos_rec;
 		break;
-	case DBD_MODIFY_SER_RES:
-		my_cond = slurmdb_unpack_ser_res_cond;
-		my_rec = slurmdb_unpack_ser_res_rec;
+	case DBD_MODIFY_RES:
+		my_cond = slurmdb_unpack_res_cond;
+		my_rec = slurmdb_unpack_res_rec;
 		break;
 	case DBD_MODIFY_USERS:
 		my_cond = slurmdb_unpack_user_cond;
diff --git a/src/common/slurmdbd_defs.h b/src/common/slurmdbd_defs.h
index 738d9d7280f..5b3ebf30f0b 100644
--- a/src/common/slurmdbd_defs.h
+++ b/src/common/slurmdbd_defs.h
@@ -166,16 +166,14 @@ typedef enum {
 	DBD_SEND_MULT_MSG,      /* Send multiple message		*/
 	DBD_GOT_MULT_MSG,	/* Get response to DBD_SEND_MULT_MSG    */
 	DBD_MODIFY_JOB,		/* Modify existing Job(s)               */
-	DBD_ADD_CLUS_RES,      /* Add new cluster resource to the mix  */
-	DBD_GET_CLUS_RES,	/* Get cluster resource information	*/
-	DBD_GOT_CLUS_RES,	/* Got cluster resource information	*/
-	DBD_MODIFY_CLUS_RES,    /* Modify existing cluster resource     */
-	DBD_REMOVE_CLUS_RES,    /* Remove existing cluster resource     */
-	DBD_ADD_SER_RES,        /* Add new system resource to the mix   */
-	DBD_GET_SER_RES,	/* Get cluster resource information	*/
-	DBD_GOT_SER_RES,	/* Got system resource information	*/
-	DBD_MODIFY_SER_RES,     /* Modify existing system resource      */
-	DBD_REMOVE_SER_RES,     /* Remove existing system resource      */
+	DBD_ADD_RES,    	/* Add new system resource to the mix   */
+	DBD_GET_RES,		/* Get resource information		*/
+	DBD_GOT_RES,		/* Got resource information		*/
+	DBD_REMOVE_RES,     	/* Remove existing resource      	*/
+	DBD_MODIFY_RES,     	/* Modify existing resource      	*/
+	DBD_ADD_CLUS_RES,    	/* Add cluster using a resource    	*/
+	DBD_REMOVE_CLUS_RES,   	/* Remove existing cluster resource    	*/
+	DBD_MODIFY_CLUS_RES,   	/* Modify existing cluster resource   	*/
 } slurmdbd_msg_type_t;
 
 /*****************************************************************************\
-- 
GitLab