Previous | Contents | Index |
Attempting to update an active field that is nondynamic is essentially useless, since the active field value does not change. For instance, calling this procedure with the active_sw field set to 1 and the qti_username field populated produces no change to the system.
Setting the current_sw field to 1 causes updates to be written to the current ACMSGEN file. These updates are durable (that is, they survive a restart of the ACMS sytem) but do not affect the active system until the system is restarted.
Both current_sw and active_sw can be set on a given call. In this case, both the active and stored values for any nonnegative or nonnull fields are updated.
For any nonnegative integer fields, the completion status of the update is returned in the corresponding field in the return structure. For string fields, the string field value is returned, regardless of the status of the call.
In order to have one of the string fields set to a null string (that is, ""), populate the field with value "NULL". To have one of the string fields ignored, pass in a null string.
int set_qti_data(int client_id,CLIENT *cl) { static char c_name_all[2] = "*"; static char c_null_str[2] = ""; static qti_config_rec set_struct; static qti_status_rec *ret_struct; dcl_link *nl; memset(&set_struct,-1,sizeof(set_struct)); set_struct.client_id = client_id; set_struct.active_sw = 1; set_struct.current_sw = 0; set_struct.polling_timer = 4999; /* Have to provide a pointer for string conversions by XDR or it will qtiess vio. RM will ignore any fields with strlen of 0 */ set_struct.qti_username = c_null_str; ret_struct = acmsmgmt_set_qti_1(&set_struct,cl); if (!ret_struct) { printf("\n Call to modify qti failed"); return(MGMT_FAIL); } if (ret_struct->status != MGMT_SUCCESS) printf("\n Call to modify QTI returned the following warnings or errors\n"); else printf("\n Call to modify QTI completed\n"); for (nl = ret_struct->qti_status_rec_u.data.cmd_output; nl != NULL; nl = nl->pNext) printf("\n %s",nl->dcl_msg); return(0); } |
In the preceding example, the acmsmgmt_set_qti_1 procedure is called to set the ACMSGEN parameter qti_polling_timer to 4999 milliseconds. If the call succeeds, only the active value is modified, the stored value is unchanged, and a success message is displayed. Otherwise, an error message is displayed. The example in Section 5.3.1 shows how to declare and initialize the input arguments to this procedure.
7.30 ACMSMGMT_SET_SERVER_1
This procedure modifies server (ACMS procedure server) Config class
attributes.
ser_status_rec *acmsmgmt_set_server_1(ser_config_rec *ser_cfg_rec,CLIENT *cl)
ser_cfg_rec
Type: Ser_config_rec Access: Read Mechanism: By reference Usage: Structure that contains the following client identification and Server table fields. client_id Type: Integer Access: Read Mechanism: By value Usage: If explicit authentication is being used, a valid client ID must be provided. If the value of client_id is 0, proxy access is used. Client_id is obtained by calling the acms$mgmt_get_creds procedure. appl_name Type: Null-terminated string Access: Read Mechanism: By reference Usage: Name of the application to which the server to be updated belongs. server_name Type: Null-terminated string Access: Read Mechanism: By reference Usage: Name of the server to update. creation_delay, creation_interval, deletion_delay, deletion_interval, server_proc_dmpflag, minimum_instances, maximum_instances Type: Integer Access: Read Mechanism: By value Usage: Values to be updated. These fields correspond to the active fields of the same names in the Server table (for example, creation_delay updates the creation_delay_active field). See Section 8.10 for a discussion of these fields. All fields in this record can be updated dynamically. cl
Type: CLIENT * Access: Read Mechanism: By value Usage: Pointer to an RPC client handle previously obtained by calling the RPC routine CLNT_CREATE.
Type: Struct ser_status_rec Access: Write Mechanism: By reference Usage: Pointer to a union. The union contains either a failure code or a structure of type ser_config_rec_out, which contains status codes for each field, as well as a linked list of status messages associated with the update. See the Description section for a discussion of how to determine the update status for any field. The following are the contents of this union: status Type: Integer Access: Write Mechanism: By value Usage: Failure return code. data, data_warn Type: Ser_config_rec_out Access: Write Mechanism: By value Usage: Structure containing fields corresponding to the fields in the ser_config_rec structure, as well as a linked list of status messages associated with the update. See the Description section for a discussion of how to determine the update status for any field. The following are the contents of this structure: creation_delay, creation_interval, deletion_delay, deletion_interval, server_proc_dmpflag, minimum_instances, maximum_instances Type: Integer Access: Write Mechanism: By value Usage: Status fields corresponding to the fields in the input argument. cmd_output Type: Dcl_list Access: Write Mechanism: By reference Usage: Pointer to a linked list of records containing status messages related to the failure of any updates. This structure contains the following fields: dcl_msg Type: Null-terminated string Access: Write Mechanism: By reference Usage: The status message. pNext Type: Dcl_list Access: Write Mechanism: By reference Usage: Pointer to the next node in the linked list.
This procedure requests updates to ACMS server Config class fields contained in the Server table (see Section 8.10). Note that the Server table contains only active values.For any nonnegative integer fields, the completion status of the update is returned in the corresponding field in the return structure.
int set_ser_data(int client_id,CLIENT *cl) { static char c_name_all[2] = "*"; static char vr_appl[] = "VR_APPL"; static ser_config_rec set_struct; static ser_status_rec *ret_struct; dcl_link *nl; memset(&set_struct,-1,sizeof(set_struct)); set_struct.client_id = client_id; set_struct.appl_name = vr_appl; set_struct.server_name = c_name_all; set_struct.creation_delay = 20; ret_struct = acmsmgmt_set_server_1(&set_struct,cl); if (!ret_struct) { printf("\n Call to modify ser failed"); return(MGMT_FAIL); } if (ret_struct->status != MGMT_SUCCESS) printf("\n Call to modify SER returned the following warnings or errors\n"); else printf("\n Call to modify SER completed\n"); for (nl = ret_struct->ser_status_rec_u.data.cmd_output; nl != NULL; nl = nl->pNext) printf("\n %s",nl->dcl_msg); return(0); } |
In the preceding example, the acmsmgmt_set_server_1 procedure is called to set the creation_delay parameter field for all servers in application VR_APPL to 20 seconds. If the call succeeds, this parameter field is modified for all servers in the VR_APPL, and a success message is displayed. Otherwise, an error message is displayed. The example in Section 5.3.1 shows how to declare and initialize the input arguments to this procedure.
7.31 ACMSMGMT_SET_TRAP_1
This procedure modifies entries in the Remote Manager Trap table. Trap
table entries can also be added (see Section 7.3) and deleted (see
Section 7.5).
trap_status_rec *acmsmgmt_set_trap_1(trap_config_rec *trap_cfg_rec,CLIENT *cl)
trap_cfg_rec
Type: Trap_config_rec Access: Read Mechanism: By reference Usage: Structure that contains the following client identification and Trap table fields. client_id Type: Integer Access: Read Mechanism: By value Usage: If explicit authentication is being used, a valid client ID must be provided. If the value of client_id is 0, proxy access is used. Client_id is obtained by calling the acms$mgmt_get_creds procedure. trap_entry Type: Struct trap_update_rec_r Access: Read Mechanism: By value Usage: Structure containing a Trap table record. Trap table fields are described in Section 8.12. See the Description section for information on how to initialize this record. cl
Type: CLIENT * Access: Read Mechanism: By value Usage: Pointer to an RPC client handle previously obtained by calling the RPC routine CLNT_CREATE.
Type: Struct trap_status_rec Access: Write Mechanism: By reference Usage: Pointer to a union. The union contains either a failure code or a structure of type trap_update_rec_r, which contains status codes for each field. See the Description section for a discussion of how to determine the update status for any field. The following are the contents of this union: status Type: Integer Access: Write Mechanism: By value Usage: Failure return code. data_warn Type: Trap_update_rec_r Access: Write Mechanism: By value Usage: Structure containing a Trap table record. The entries in this field contain status codes corresponding to the fields in the trap_entry structure. See the Description section for a discussion of how to determine the update status for any field.
This procedure requests updates to fields in the Trap table (see Section 8.12).Updates to this table are not durable; that is, they do not survive a restart of the Remote Manager. To make nondynamic, permanent updates to the Trap table, use the ACMSCFG utility.
Calls to this procedure must specify entity_type, entity_name, and param_to_trap. These fields must exactly match an existing record in the Trap table for the update to be applied. Table 7-1 and Table 7-4 contain symbolic values used to populate the collection_class and entity_type fields; symbolic values to the param_to_trap field are described in Table 7-8.
Setting fields trap_min, trap_max, or severity to -2 excludes them from being updating. Otherwise, the corresponding field in the matching trap record is modified. (-1 is a special value that causes the field to be ignored when evaluating the trap conditions; see Section 6.8.)
Updates to the Trap table are processed immediately and may affect more than one ACMS process. See Section 6.8 for a discussion of how to set SNMP traps.
int set_trap_data(int client_id,CLIENT *cl) { static char c_name_all[2] = "*"; static trap_config_rec set_struct; static struct trap_status_rec *status_rec; set_struct.trap_entry.entity_type = MGMT_ACC; set_struct.trap_entry.entity_name = c_name_all; set_struct.trap_entry.param_to_trap = MGMT_EXISTS; set_struct.trap_entry.min = 1; set_struct.trap_entry.max = -1; set_struct.trap_entry.severity = MGMT_SEV_FATAL; status_rec = acmsmgmt_set_trap_1(&set_struct,cl); if (!status_rec) { printf("\n Call to modify trap failed"); return(MGMT_FAIL); } if (status_rec->status == MGMT_WARN) { printf("\nThe following updates failed: "); if (status_rec->trap_status_rec_u.data_warn.entity_type == MGMT_FAIL) printf("\n entity_type not found or invalid"); if (status_rec->trap_status_rec_u.data_warn.param_to_trap == MGMT_FAIL) printf("\n param not found or invalid"); if (status_rec->trap_status_rec_u.data_warn.min == MGMT_FAIL) printf("\n min invalid"); if (status_rec->trap_status_rec_u.data_warn.max == MGMT_FAIL) printf("\n max invalid"); if (status_rec->trap_status_rec_u.data_warn.severity == MGMT_FAIL) printf("\n severity invalid"); } else if (status_rec->status != MGMT_SUCCESS) { printf("\nCall to modify trap failed with status %d",status_rec->trap_status_rec_u.rc); return(MGMT_FAIL); } else printf("\nCall to modify trap was executed"); return(0); } |
In the preceding example, the acmsmgmt_set_trap_1 procedure is called to set the trap_min field to 1, the trap_max field to -1, and the trap severity to FATAL for a trap based on an entity_type of ACC, an entity_name of * (all), and a trap parameter of EXISTS. The effect of this change is to cause a fatal-level trap to be generated if the ACC on the target node is stopped. If the call succeeds, the trap is reconfigured in the Trap table in memory. Otherwise, an error message is displayed. The example in Section 5.3.1 shows how to declare and initialize the input arguments to this procedure.
Previous | Next | Contents | Index |