From 3f45b4e59d245fc21332184d80a5a66dc375e6b4 Mon Sep 17 00:00:00 2001
From: Danny Auble <da@llnl.gov>
Date: Wed, 3 Mar 2010 17:15:23 +0000
Subject: [PATCH] more mods

---
 src/common/Makefile.am                |   2 +
 src/common/Makefile.in                |  30 +++--
 src/common/slurm_accounting_storage.h |  18 ---
 src/db_api/account_functions.c        |  17 +--
 src/db_api/slurmdb_defs.c             |   0
 src/db_api/slurmdb_defs.h             |  76 ++++++++++++
 src/db_api/slurmdb_pack.c             |   0
 src/db_api/slurmdb_pack.h             | 160 ++++++++++++++++++++++++++
 8 files changed, 261 insertions(+), 42 deletions(-)
 create mode 100644 src/db_api/slurmdb_defs.c
 create mode 100644 src/db_api/slurmdb_defs.h
 create mode 100644 src/db_api/slurmdb_pack.c
 create mode 100644 src/db_api/slurmdb_pack.h

diff --git a/src/common/Makefile.am b/src/common/Makefile.am
index 473929eb33b..f689c76f884 100644
--- a/src/common/Makefile.am
+++ b/src/common/Makefile.am
@@ -73,6 +73,8 @@ libcommon_la_SOURCES = 			\
 	slurm_protocol_defs.h		\
 	slurm_rlimits_info.h		\
 	slurm_rlimits_info.c		\
+	slurmdb_defs.c slurmdb_defs.h   \
+	slurmdb_pack.c slurmdb_pack.h   \
 	slurmdbd_defs.c slurmdbd_defs.h	\
 	uid.c uid.h			\
 	util-net.c util-net.h		\
diff --git a/src/common/Makefile.in b/src/common/Makefile.in
index 3994de6fcdf..27464b27d01 100644
--- a/src/common/Makefile.in
+++ b/src/common/Makefile.in
@@ -111,8 +111,9 @@ am__libcommon_la_SOURCES_DIST = assoc_mgr.c assoc_mgr.h \
 	slurm_protocol_socket_common.h slurm_protocol_common.h \
 	slurm_protocol_interface.h slurm_protocol_defs.c \
 	slurm_protocol_defs.h slurm_rlimits_info.h \
-	slurm_rlimits_info.c slurmdbd_defs.c slurmdbd_defs.h uid.c \
-	uid.h util-net.c util-net.h slurm_auth.c slurm_auth.h \
+	slurm_rlimits_info.c slurmdb_defs.c slurmdb_defs.h \
+	slurmdb_pack.c slurmdb_pack.h slurmdbd_defs.c slurmdbd_defs.h \
+	uid.c uid.h util-net.c util-net.h slurm_auth.c slurm_auth.h \
 	jobacct_common.c jobacct_common.h slurm_accounting_storage.c \
 	slurm_accounting_storage.h slurm_jobacct_gather.c \
 	slurm_jobacct_gather.h slurm_jobcomp.c slurm_jobcomp.h \
@@ -136,16 +137,17 @@ am_libcommon_la_OBJECTS = assoc_mgr.lo basil_resv_conf.lo xmalloc.lo \
 	slurm_cred.lo slurm_errno.lo slurm_priority.lo \
 	slurm_protocol_api.lo slurm_protocol_pack.lo \
 	slurm_protocol_util.lo slurm_protocol_socket_implementation.lo \
-	slurm_protocol_defs.lo slurm_rlimits_info.lo slurmdbd_defs.lo \
-	uid.lo util-net.lo slurm_auth.lo jobacct_common.lo \
-	slurm_accounting_storage.lo slurm_jobacct_gather.lo \
-	slurm_jobcomp.lo slurm_topology.lo switch.lo arg_desc.lo \
-	malloc.lo getopt.lo getopt1.lo $(am__objects_1) \
-	slurm_selecttype_info.lo slurm_resource_info.lo hostlist.lo \
-	slurm_step_layout.lo checkpoint.lo job_resources.lo \
-	parse_time.lo job_options.lo global_defaults.lo timers.lo \
-	stepd_api.lo write_labelled_message.lo proc_args.lo \
-	slurm_strcasestr.lo node_conf.lo
+	slurm_protocol_defs.lo slurm_rlimits_info.lo slurmdb_defs.lo \
+	slurmdb_pack.lo slurmdbd_defs.lo uid.lo util-net.lo \
+	slurm_auth.lo jobacct_common.lo slurm_accounting_storage.lo \
+	slurm_jobacct_gather.lo slurm_jobcomp.lo slurm_topology.lo \
+	switch.lo arg_desc.lo malloc.lo getopt.lo getopt1.lo \
+	$(am__objects_1) slurm_selecttype_info.lo \
+	slurm_resource_info.lo hostlist.lo slurm_step_layout.lo \
+	checkpoint.lo job_resources.lo parse_time.lo job_options.lo \
+	global_defaults.lo timers.lo stepd_api.lo \
+	write_labelled_message.lo proc_args.lo slurm_strcasestr.lo \
+	node_conf.lo
 am__EXTRA_libcommon_la_SOURCES_DIST = unsetenv.c unsetenv.h
 libcommon_la_OBJECTS = $(am_libcommon_la_OBJECTS)
 libcommon_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
@@ -436,6 +438,8 @@ libcommon_la_SOURCES = \
 	slurm_protocol_defs.h		\
 	slurm_rlimits_info.h		\
 	slurm_rlimits_info.c		\
+	slurmdb_defs.c slurmdb_defs.h   \
+	slurmdb_pack.c slurmdb_pack.h   \
 	slurmdbd_defs.c slurmdbd_defs.h	\
 	uid.c uid.h			\
 	util-net.c util-net.h		\
@@ -623,6 +627,8 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/slurm_step_layout.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/slurm_strcasestr.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/slurm_topology.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/slurmdb_defs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/slurmdb_pack.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/slurmdbd_defs.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stepd_api.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strlcpy.Plo@am__quote@
diff --git a/src/common/slurm_accounting_storage.h b/src/common/slurm_accounting_storage.h
index c5d81279766..ac8b2f36df9 100644
--- a/src/common/slurm_accounting_storage.h
+++ b/src/common/slurm_accounting_storage.h
@@ -141,24 +141,6 @@ typedef struct {
 					 * parents */
 } acct_association_cond_t;
 
-typedef struct {
-	acct_association_cond_t *assoc_cond;/* use acct_list here for
-						names */
-	List description_list; /* list of char * */
-	List organization_list; /* list of char * */
-	uint16_t with_assocs;
-	uint16_t with_coords;
-	uint16_t with_deleted;
-} acct_account_cond_t;
-
-typedef struct {
-	List assoc_list; /* list of acct_association_rec_t *'s */
-	List coordinators; /* list of acct_coord_rec_t *'s */
-	char *description;
-	char *name;
-	char *organization;
-} acct_account_rec_t;
-
 typedef struct {
 	uint64_t alloc_secs; /* number of cpu seconds allocated */
 	uint32_t id;	/* association/wckey ID		*/
diff --git a/src/db_api/account_functions.c b/src/db_api/account_functions.c
index 4b9a8e737d8..a9843a52077 100644
--- a/src/db_api/account_functions.c
+++ b/src/db_api/account_functions.c
@@ -55,9 +55,7 @@
  */
 extern int slurmdb_add_accounts(void *db_conn, List acct_list)
 {
-	int rc = SLURM_SUCCESS;
-
-	return rc;
+	return acct_storage_g_add_accounts(db_conn, getuid(), acct_list);
 }
 
 /*
@@ -70,9 +68,7 @@ extern int slurmdb_add_accounts(void *db_conn, List acct_list)
 extern List slurmdb_accounts_get(void *db_conn,
 				 slurmdb_account_cond_t *acct_cond)
 {
-	List ret_list = NULL;
-
-	return ret_list;
+	return acct_storage_g_get_accounts(db_conn, getuid(), acct_cond);
 }
 
 /*
@@ -85,9 +81,8 @@ extern List slurmdb_accounts_modify(void *db_conn,
 				    slurmdb_account_cond_t *acct_cond,
 				    slurmdb_account_rec_t *acct)
 {
-	List ret_list = NULL;
-
-	return ret_list;
+	return acct_storage_g_modify_accounts(db_conn, getuid(),
+					      acct_cond, acct);
 }
 
 /*
@@ -98,8 +93,6 @@ extern List slurmdb_accounts_modify(void *db_conn,
 extern List slurmdb_accounts_remove(void *db_conn,
 				    slurmdb_account_cond_t *acct_cond)
 {
-	List ret_list = NULL;
-
-	return ret_list;
+	return acct_storage_g_remove_accounts(db_conn, getuid(), acct_cond);
 }
 
diff --git a/src/db_api/slurmdb_defs.c b/src/db_api/slurmdb_defs.c
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/src/db_api/slurmdb_defs.h b/src/db_api/slurmdb_defs.h
new file mode 100644
index 00000000000..1c511297d3d
--- /dev/null
+++ b/src/db_api/slurmdb_defs.h
@@ -0,0 +1,76 @@
+/*****************************************************************************\
+ *  slurmdb_defs.h - definitions used by slurmdb api
+ ******************************************************************************
+ *  Copyright (C) 2010 Lawrence Livermore National Security.
+ *  Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
+ *  Written by Danny Auble da@llnl.gov, et. al.
+ *  CODE-OCEC-09-009. All rights reserved.
+ *
+ *  This file is part of SLURM, a resource management program.
+ *  For details, see <https://computing.llnl.gov/linux/slurm/>.
+ *  Please also read the included file: DISCLAIMER.
+ *
+ *  SLURM is free software; you can redistribute it and/or modify it under
+ *  the terms of the GNU General Public License as published by the Free
+ *  Software Foundation; either version 2 of the License, or (at your option)
+ *  any later version.
+ *
+ *  In addition, as a special exception, the copyright holders give permission
+ *  to link the code of portions of this program with the OpenSSL library under
+ *  certain conditions as described in each individual source file, and
+ *  distribute linked combinations including the two. You must obey the GNU
+ *  General Public License in all respects for all of the code used other than
+ *  OpenSSL. If you modify file(s) with this exception, you may extend this
+ *  exception to your version of the file(s), but you are not obligated to do
+ *  so. If you do not wish to do so, delete this exception statement from your
+ *  version.  If you delete this exception statement from all source files in
+ *  the program, then also delete it here.
+ *
+ *  SLURM is distributed in the hope that it will be useful, but WITHOUT ANY
+ *  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ *  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ *  details.
+ *
+ *  You should have received a copy of the GNU General Public License along
+ *  with SLURM; if not, write to the Free Software Foundation, Inc.,
+ *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA.
+\*****************************************************************************/
+#ifndef _SLURMDB_DEFS_H
+#define _SLURMDB_DEFS_H
+
+extern void destroy_acct_user_rec(void *object);
+extern void destroy_acct_account_rec(void *object);
+extern void destroy_acct_coord_rec(void *object);
+extern void destroy_cluster_accounting_rec(void *object);
+extern void destroy_acct_cluster_rec(void *object);
+extern void destroy_acct_accounting_rec(void *object);
+extern void destroy_acct_association_rec(void *object);
+extern void destroy_acct_event_rec(void *object);
+extern void destroy_acct_qos_rec(void *object);
+extern void destroy_acct_reservation_rec(void *object);
+extern void destroy_acct_txn_rec(void *object);
+extern void destroy_acct_wckey_rec(void *object);
+extern void destroy_acct_archive_rec(void *object);
+
+extern void destroy_acct_user_cond(void *object);
+extern void destroy_acct_account_cond(void *object);
+extern void destroy_acct_cluster_cond(void *object);
+extern void destroy_acct_association_cond(void *object);
+extern void destroy_acct_event_cond(void *object);
+extern void destroy_acct_job_cond(void *object);
+extern void destroy_acct_qos_cond(void *object);
+extern void destroy_acct_reservation_cond(void *object);
+extern void destroy_acct_txn_cond(void *object);
+extern void destroy_acct_wckey_cond(void *object);
+extern void destroy_acct_archive_cond(void *object);
+
+extern void destroy_acct_update_object(void *object);
+extern void destroy_acct_used_limits(void *object);
+extern void destroy_update_shares_rec(void *object);
+extern void destroy_acct_print_tree(void *object);
+extern void destroy_acct_hierarchical_rec(void *object);
+
+extern void init_acct_association_rec(acct_association_rec_t *assoc);
+extern void init_acct_qos_rec(acct_qos_rec_t *qos);
+
+#endif
diff --git a/src/db_api/slurmdb_pack.c b/src/db_api/slurmdb_pack.c
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/src/db_api/slurmdb_pack.h b/src/db_api/slurmdb_pack.h
new file mode 100644
index 00000000000..6c65dc362e9
--- /dev/null
+++ b/src/db_api/slurmdb_pack.h
@@ -0,0 +1,160 @@
+/*****************************************************************************\
+ *  slurmdb_pack.h - un/pack definitions used by slurmdb api
+ ******************************************************************************
+ *  Copyright (C) 2010 Lawrence Livermore National Security.
+ *  Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
+ *  Written by Danny Auble da@llnl.gov, et. al.
+ *  CODE-OCEC-09-009. All rights reserved.
+ *
+ *  This file is part of SLURM, a resource management program.
+ *  For details, see <https://computing.llnl.gov/linux/slurm/>.
+ *  Please also read the included file: DISCLAIMER.
+ *
+ *  SLURM is free software; you can redistribute it and/or modify it under
+ *  the terms of the GNU General Public License as published by the Free
+ *  Software Foundation; either version 2 of the License, or (at your option)
+ *  any later version.
+ *
+ *  In addition, as a special exception, the copyright holders give permission
+ *  to link the code of portions of this program with the OpenSSL library under
+ *  certain conditions as described in each individual source file, and
+ *  distribute linked combinations including the two. You must obey the GNU
+ *  General Public License in all respects for all of the code used other than
+ *  OpenSSL. If you modify file(s) with this exception, you may extend this
+ *  exception to your version of the file(s), but you are not obligated to do
+ *  so. If you do not wish to do so, delete this exception statement from your
+ *  version.  If you delete this exception statement from all source files in
+ *  the program, then also delete it here.
+ *
+ *  SLURM is distributed in the hope that it will be useful, but WITHOUT ANY
+ *  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ *  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ *  details.
+ *
+ *  You should have received a copy of the GNU General Public License along
+ *  with SLURM; if not, write to the Free Software Foundation, Inc.,
+ *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA.
+\*****************************************************************************/
+#ifndef _SLURMDB_PACK_H
+#define _SLURMDB_PACK_H
+
+extern void slurmdb_pack_user_rec(void *in,
+				  uint16_t rpc_version, Buf buffer);
+extern int slurmdb_unpack_user_rec(void **object,
+				   uint16_t rpc_version, Buf buffer);
+extern void slurmdb_pack_account_rec(void *in,
+				     uint16_t rpc_version, Buf buffer);
+extern int slurmdb_unpack_account_rec(void **object, uint16_t rpc_version,
+				      Buf buffer);
+extern void slurmdb_pack_coord_rec(void *in,
+				   uint16_t rpc_version, Buf buffer);
+extern int slurmdb_unpack_coord_rec(void **object, uint16_t rpc_version,
+				    Buf buffer);
+extern void pack_cluster_accounting_rec(void *in,
+					uint16_t rpc_version, Buf buffer);
+extern int unpack_cluster_accounting_rec(void **object, uint16_t rpc_version,
+					 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,
+				      Buf buffer);
+extern void slurmdb_pack_accounting_rec(void *in,
+					uint16_t rpc_version,
+					Buf buffer);
+extern int slurmdb_unpack_accounting_rec(void **object, uint16_t rpc_version,
+					 Buf buffer);
+extern void slurmdb_pack_association_rec(void *in,
+					 uint16_t rpc_version,
+					 Buf buffer);
+extern int slurmdb_unpack_association_rec(void **object, uint16_t rpc_version,
+					  Buf buffer);
+extern void slurmdb_pack_event_rec(void *in,
+				   uint16_t rpc_version,
+				   Buf buffer);
+extern int slurmdb_unpack_event_rec(void **object, uint16_t rpc_version,
+				    Buf buffer);
+extern void slurmdb_pack_qos_rec(void *in,
+				 uint16_t rpc_version, Buf buffer);
+extern int slurmdb_unpack_qos_rec(void **object,
+				  uint16_t rpc_version, Buf buffer);
+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_txn_rec(void *in,
+				 uint16_t rpc_version, Buf buffer);
+extern int slurmdb_unpack_txn_rec(void **object,
+				  uint16_t rpc_version, Buf buffer);
+extern void slurmdb_pack_wckey_rec(void *in,
+				   uint16_t rpc_version, Buf buffer);
+extern int slurmdb_unpack_wckey_rec(void **object, uint16_t rpc_version,
+				    Buf buffer);
+extern void slurmdb_pack_archive_rec(void *in,
+				     uint16_t rpc_version, Buf buffer);
+extern int slurmdb_unpack_archive_rec(void **object, uint16_t rpc_version,
+				      Buf buffer);
+
+extern void slurmdb_pack_user_cond(void *in,
+				   uint16_t rpc_version, Buf buffer);
+extern int slurmdb_unpack_user_cond(void **object, uint16_t rpc_version,
+				    Buf buffer);
+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_cluster_cond(void *in,
+				      uint16_t rpc_version, Buf buffer);
+extern int slurmdb_unpack_cluster_cond(void **object, uint16_t rpc_version,
+				       Buf buffer);
+extern void slurmdb_pack_association_cond(void *in,
+					  uint16_t rpc_version,
+					  Buf buffer);
+extern int slurmdb_unpack_association_cond(void **object, uint16_t rpc_version,
+					   Buf buffer);
+extern void slurmdb_pack_event_cond(void *in,
+				    uint16_t rpc_version, Buf buffer);
+extern int slurmdb_unpack_event_cond(void **object, uint16_t rpc_version,
+				     Buf buffer);
+extern void slurmdb_pack_job_cond(void *in,
+				  uint16_t rpc_version, Buf buffer);
+extern int slurmdb_unpack_job_cond(void **object, uint16_t rpc_version,
+				   Buf buffer);
+extern void slurmdb_pack_qos_cond(void *in,
+				  uint16_t rpc_version, Buf buffer);
+extern int slurmdb_unpack_qos_cond(void **object, uint16_t rpc_version,
+				   Buf buffer);
+extern void slurmdb_pack_reservation_cond(void *in,
+					  uint16_t rpc_version,
+					  Buf buffer);
+extern int slurmdb_unpack_reservation_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,
+				   Buf buffer);
+extern void slurmdb_pack_wckey_cond(void *in,
+				    uint16_t rpc_version, Buf buffer);
+extern int slurmdb_unpack_wckey_cond(void **object, uint16_t rpc_version,
+				     Buf buffer);
+extern void slurmdb_pack_archive_cond(void *in,
+				      uint16_t rpc_version, Buf buffer);
+extern int slurmdb_unpack_archive_cond(void **object, uint16_t rpc_version,
+				       Buf buffer);
+
+extern void slurmdb_pack_update_object(acct_update_object_t *object,
+				       uint16_t rpc_version, Buf buffer);
+extern int slurmdb_unpack_update_object(acct_update_object_t **object,
+					uint16_t rpc_version, Buf buffer);
+
+extern void slurmdb_pack_used_limits(void *in,
+
+				     uint16_t rpc_version, Buf buffer);
+extern int slurmdb_unpack_used_limits(void **object,
+				      uint16_t rpc_version, Buf buffer);
+
+extern void pack_update_shares_used(void *in,
+				    uint16_t rpc_version, Buf buffer);
+extern int unpack_update_shares_used(void **object, uint16_t rpc_version,
+				     Buf buffer);
+
+#endif
-- 
GitLab