Provided by: libslurm-dev_19.05.5-1_amd64 bug

NAME

       slurm_create_partition,   slurm_create_reservation,   slurm_delete_partition,   slurm_delete_reservation,
       slurm_init_part_desc_msg, slurm_init_resv_desc_msg,  slurm_reconfigure,  slurm_shutdown,  slurm_takeover,
       ,slurm_init_update_node_msg  slurm_update_node,  slurm_update_partition, slurm_update_reservation - Slurm
       administrative functions

SYNTAX

       #include <slurm/slurm.h>

       int slurm_create_partition (
            update_part_msg_t *update_part_msg_ptr
       );

       int slurm_create_reservation (
            resv_desc_msg_t *update_resv_msg_ptr
       );

       int slurm_delete_partition (
            delete_part_msg_t *delete_part_msg_ptr
       );

       int slurm_delete_reservation (
            reservation_name_msg_t *delete_resv_msg_ptr
       );

       void slurm_init_front_end_msg (
            update_front_end_msg_t *update_front_end_msg_ptr
       );

       void slurm_init_part_desc_msg (
            update_part_msg_t *update_part_msg_ptr
       );

       void slurm_init_resv_desc_msg (
            resv_desc_msg_t *update_resv_msg_ptr
       );

       void slurm_init_update_node_msg(
            update_node_msg_t *update_node_msg_ptr
       );

       int slurm_reconfigure ( );

       int slurm_shutdown (
            uint16_t shutdown_options
       );

       int slurm_takeover ( );

       int slurm_update_front_end (
            update_front_end_msg_t *update_front_end_msg_ptr
       );

       int slurm_update_node (
            update_node_msg_t *update_node_msg_ptr
       );

       int slurm_update_partition (
            update_part_msg_t *update_part_msg_ptr
       );

       int slurm_update_reservation (
            resv_desc_msg_t *update_resv_msg_ptr
       );

ARGUMENTS

       shutdown_options
              0: all slurm daemons are shutdown
              1: slurmctld generates a core file
              2: only the slurmctld is shutdown (no core file)

       delete_part_msg_ptr
              Specifies the pointer to a partition delete request specification.  See slurm.h for  full  details
              on the data structure's contents.

       delete_resv_msg_ptr
              Specifies the pointer to a reservation delete request specification.  See slurm.h for full details
              on the data structure's contents.

       update_front_end_msg_ptr
              Specifies  the  pointer  to  a  front end node update request specification.  See slurm.h for full
              details on the data structure's contents.

       update_node_msg_ptr
              Specifies the pointer to a node update request specification. See slurm.h for full details on  the
              data structure's contents.

       update_part_msg_ptr
              Specifies the pointer to a partition create or update request specification.  See slurm.h for full
              details on the data structure's contents.

       update_resv_msg_ptr
              Specifies  the  pointer  to a reservation create or update request specification.  See slurm.h for
              full details on the data structure's contents.

DESCRIPTION

       slurm_create_partition Request that a new partition be created.  Initialize the data structure using  the
       slurm_init_part_desc_msg  function  prior  to  setting  values  of  the  parameters to be changed.  Note:
       slurm_init_part_desc_msg is not equivalent to setting the data structure values  to  zero.   A  partition
       name must be set for the call to succeed.  This function may only be successfully executed by user root.

       slurm_create_reservation  Request that a new reservation be created.  Initialize the data structure using
       the slurm_init_resv_desc_msg function prior to setting values of the parameters  to  be  changed.   Note:
       slurm_init_resv_desc_msg  is  not  equivalent  to  setting  the  data  structure  values  to  zero.   The
       reservation's time limits, user or account restrictions, and node names or a node count must be specified
       for the call to succeed.  This function may only be successfully executed by user root.

       slurm_delete_partition Request that the specified partition be deleted.  All  jobs  associated  with  the
       identified  partition  will be terminated and purged.  This function may only be successfully executed by
       user root.

       slurm_delete_reservation Request that the specified reservation be deleted. This  function  may  only  be
       successfully executed by user root.

       slurm_init_update_front_end_msg  Initialize  the  contents  of  an  update front end node descriptor with
       default values. Note: slurm_init_update_front_end_msg is not equivalent to  setting  the  data  structure
       values to zero. Execute this function before executing slurm_update_front_end.

       slurm_init_part_desc_msg  Initialize  the  contents  of a partition descriptor with default values. Note:
       slurm_init_part_desc_msg is not equivalent to setting the data structure values  to  zero.  Execute  this
       function before executing slurm_create_partition or slurm_update_partition.

       slurm_init_resv_desc_msg  Initialize  the contents of a reservation descriptor with default values. Note:
       slurm_init_resv_desc_msg is not equivalent to setting the data structure values  to  zero.  Execute  this
       function before executing slurm_create_reservation or slurm_update_reservation.

       slurm_init_update_node_msg  Initialize  the  contents  of  an update node descriptor with default values.
       Note: slurm_init_update_node_msg is not equivalent to setting the data structure values to zero.  Execute
       this function before executing slurm_update_node.

       slurm_reconfigure Request that the Slurm controller re-read its configuration file. The new configuration
       parameters take effect immediately. This function may only be successfully executed by user root.

       slurm_shutdown  Request  that  the  Slurm  controller  terminate.  This function may only be successfully
       executed by user root.

       slurm_takeover Request that the Slurm primary controller shutdown immediately and the  backup  controller
       take over.  This function may only be successfully executed by user root.

       slurm_update_front_end  Request  that the state of one or more front end nodes be updated.  This function
       may only be successfully executed by user root.  If used by some autonomous program, the state value most
       likely to be used is NODE_STATE_DRAIN.

       slurm_update_node Request that the state of one or more nodes be updated.  Note that the state of a  node
       (e.g.  DRAINING,  IDLE,  etc.)  may be changed, but its hardware configuration may not be changed by this
       function. If the hardware configuration of a node  changes,  update  the  Slurm  configuration  file  and
       execute  the slurm_reconfigure function. This function may only be successfully executed by user root. If
       used by some autonomous program,  the  state  value  most  likely  to  be  used  is  NODE_STATE_DRAIN  or
       NODE_STATE_FAILING.   The  node  state  flag  NODE_STATE_NO_RESPOND may be specified without changing the
       underlying node state. Note that the node's NODE_STATE_NO_RESPOND flag will be cleared  as  soon  as  the
       slurmd  daemon  on  that node communicates with the slurmctld daemon.  Likewise the state NODE_STATE_DOWN
       indicates that the slurmd daemon is not responding (and has not responded for an  interval  at  least  as
       long as the SlurmdTimeout configuration parameter). The node will leave the NODE_STATE_DOWN state as soon
       as  the slurmd daemon communicates.

       slurm_update_partition Request that the configuration of a partition be updated.  Note that most, but not
       all  parameters  of  a partition may be changed by this function. Initialize the data structure using the
       slurm_init_part_desc_msg function prior to  setting  values  of  the  parameters  to  be  changed.  Note:
       slurm_init_part_desc_msg  is  not  equivalent to setting the data structure values to zero. This function
       may only be successfully executed by user root.

       slurm_update_reservation Request that the configuration of a reservation be updated.  Initialize the data
       structure using the slurm_init_resv_desc_msg function prior to setting values of  the  parameters  to  be
       changed.  Note:  slurm_init_resv_desc_msg is not equivalent to setting the data structure values to zero.
       This function may only be successfully executed by user root.

RETURN VALUE

       On success, zero is returned. On error, -1 is returned, and the Slurm error code is set appropriately.

       Exception:  A successful slurm_create_reservation call returns  a  string  containing  the  name  of  the
       reservation,  in  memory  to be freed by the caller.  A failed call returns NULL and sets the Slurm error
       code.

ERRORS

       SLURM_PROTOCOL_VERSION_ERROR Protocol version has changed, re-link your code.

       ESLURM_INVALID_NODE_NAME The requested node name(s) is/are not valid.

       ESLURM_INVALID_NODE_STATE The specified state node state or requested node state transition is not valid.

       ESLURM_INVALID_PARTITION_NAME The requested partition name is not valid.

       ESLURM_INVALID_AUTHTYPE_CHANGE The AuthType parameter can not  be  changed  using  the  slurm_reconfigure
       function, but all Slurm daemons and commands must be restarted. See slurm.conf(5) for more information.

       ESLURM_INVALID_SCHEDTYPE_CHANGE   The   SchedulerType   parameter   can   not   be   changed   using  the
       slurm_reconfigure function, but the slurmctld daemon must be restarted. Manual changes  to  existing  job
       parameters may also be required. See slurm.conf(5) for more information.

       ESLURM_INVALID_SWITCHTYPE_CHANGE  The SwitchType parameter can not be changed using the slurm_reconfigure
       function, but all Slurm daemons and commands must be restarted. All previously running jobs will be lost.
       See slurm.conf(5) for more information.

       ESLURM_ACCESS_DENIED The requesting user lacks authorization for the requested  action  (e.g.  trying  to
       delete or modify another user's job).

       SLURM_PROTOCOL_SOCKET_IMPL_TIMEOUT Timeout in communicating with Slurm controller.

       ESLURM_RESERVATION_ACCESS  Requestor is not authorized to access the reservation.

       ESLURM_RESERVATION_INVALID  Invalid reservation parameter given, e.g. wrong name given.

       ESLURM_INVALID_TIME_VALUE  Invalid time value.

       ESLURM_RESERVATION_BUSY  Reservation is busy, e.g. trying to delete a reservation while in use.

       ESLURM_RESERVATION_NOT_USABLE  Reservation not usable, e.g. trying to use an expired reservation.

EXAMPLE

       #include <stdio.h>
       #include <stdlib.h>
       #include <slurm/slurm.h>
       #include <slurm/slurm_errno.h>

       int main (int argc, char *argv[])
       {
            update_node_msg_t       update_node_msg;
            update_part_msg_t       update_part_msg;
            delete_part_msg_t       delete_part_msg;
            resv_desc_msg_t         resv_msg;
            char                   *resv_name = NULL;

            if (slurm_reconfigure ( )) {
                 slurm_perror ("slurm_reconfigure error");
                 exit (1);
            }

            slurm_init_part_desc_msg ( &update_part_msg );
            update_part_msg.name = "test.partition";
            update_part_msg.state_up = 0;  /* partition down */
            if (slurm_create_partition (&update_part_msg)) {
                 slurm_perror ("slurm_create_partition error");
                 exit (1);
            }

            update_part_msg.state_up = 1;  /* partition up */
            if (slurm_update_partition (&update_part_msg)) {
                 slurm_perror ("slurm_update_partition error");
                 exit (1);
            }

            delete_part_msg.name = "test.partition";
            if (slurm_delete_partition (&delete_part_msg)) {
                 slurm_perror ("slurm_delete_partition error");
                 exit (1);
            }

            slurm_init_update_node_msg (&update_node_msg);
            update_node_msg.node_names = "lx[10-12]";
            update_node_msg.node_state = NODE_STATE_DRAIN ;
            if (slurm_update_node (&update_node_msg)) {
                 slurm_perror ("slurm_update_node error");
                 exit (1);
            }

            slurm_init_resv_desc_msg ( &resv_msg );
            resv_msg.start_time = time(NULL) + 60*60;  /* One hour from now */
            resv_msg.duration = 720;  /* 12 hours/720 minutes */
            resv_msg.node_cnt = 10;
            resv_msg.accounts = "admin";
            resv_name = slurm_create_reservation (&resv_msg);
            if (!resv_name) {
                 slurm_perror ("slurm_create_reservation error");
                 exit (1);
            }
            free(resv_name);
            exit (0);
       }

NOTE

       These  functions are included in the libslurm library, which must be linked to your process for use (e.g.
       "cc -lslurm myprog.c").

COPYING

       Copyright (C) 2002-2007 The Regents of the University of California.  Copyright  (C)  2008-2010  Lawrence
       Livermore  National  Security.   Produced  at  Lawrence  Livermore  National Laboratory (cf, DISCLAIMER).
       CODE-OCEC-09-009. All rights reserved.

       This   file   is   part   of   Slurm,   a   resource    management    program.     For    details,    see
       <https://slurm.schedmd.com/>.

       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.

       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.

SEE ALSO

       scontrol(1),   slurm_get_errno(3),   slurm_init_job_desc_msg(3),   slurm_perror(3),    slurm_strerror(3),
       slurm.conf(5)

April 2015                               Slurm administrative functions                             Slurm API(3)