ibm-information-center/dist/eclipse/plugins/i5OS.ic.apis_5.4.0.1/clrgrmvnrd.htm

717 lines
21 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Copyright" content="Copyright (c) 2006 by IBM Corporation">
<title>Remove Node From Recovery Domain (QcstRemoveNodeFromRcvyDomain)
API</title>
<!-- Begin Header Records ========================================== -->
<!-- All rights reserved. Licensed Materials Property of IBM -->
<!-- US Government Users Restricted Rights -->
<!-- Use, duplication or disclosure restricted by -->
<!-- GSA ADP Schedule Contract with IBM Corp. -->
<!-- Change History: -->
<!-- YYMMDD USERID Change description -->
<!-- CLUST3A SCRIPT A converted by B2H R4.1 (346) (CMS) by NLJONES at -->
<!-- RCHVMX on 24 Feb 1999 at 17:23:22 -->
<!-- Edited by Kersten Oct 2001 -->
<!-- End Header Records -->
<!-- -->
<!-- -->
<!-- -->
<!-- Begin Developer Note ========================================== -->
<!-- NOTE: If you are adding, changing, or removing ANY requirements -->
<!-- for this API chance are good that the GUI code need to change -->
<!-- also. The Cluster GUI code is built on top of this API and it -->
<!-- does a certain amount of explicit and implicit validation -->
<!-- checking of user data prior to the API call being made. Please -->
<!-- have the Cluster GUI developer check the -->
<!--/as400/v5r4m0.guix/cur/cmvc/java.pgm/ugcl.guix/com/ibm/as400/opnav/ugcl/ClGuiActionsManager.java/ClGuiActionsManager.java -->
<!-- part to determine if any Cluster GUI code changes are needed. -->
<!-- End Developer Note -->
<link rel="stylesheet" type="text/css" href="../rzahg/ic.css">
</head>
<body>
<!--Java sync-link-->
<script type="text/javascript" language="Javascript" src="../rzahg/synch.js">
</script>
<a name="Top_Of_Page"></a>
<h2>Remove Node From Recovery Domain (QcstRemoveNodeFromRcvyDomain) API</h2>
<div class="box" style="width: 70%;">
<br>
&nbsp;&nbsp;Required Parameter Group:<br>
<!-- iddvc RMBR -->
<br>
<table width="100%">
<tr>
<td align="center" valign="top" width="10%">1</td>
<td align="left" valign="top" width="50%">Request handle</td>
<td align="left" valign="top" width="20%">Output</td>
<td align="left" valign="top" width="20%">Char(16)</td>
</tr>
<tr>
<td align="center" valign="top">2</td>
<td align="left" valign="top">Cluster name</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(10)</td>
</tr>
<tr>
<td align="center" valign="top">3</td>
<td align="left" valign="top">Cluster resource group name</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(10)</td>
</tr>
<tr>
<td align="center" valign="top">4</td>
<td align="left" valign="top">Node id</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(8)</td>
</tr>
<tr>
<td align="center" valign="top">5</td>
<td align="left" valign="top">Results information</td>
<td align="left" valign="top">Input</td>
<td align="left" valign="top">Char(30)</td>
</tr>
<tr>
<td align="center" valign="top">6</td>
<td align="left" valign="top">Error code</td>
<td align="left" valign="top">I/O</td>
<td align="left" valign="top">Char(*)</td>
</tr>
</table>
<br>
&nbsp;&nbsp;Service Program: QCSTCRG1<br>
<!-- iddvc RMBR -->
<br>
&nbsp;&nbsp;Default Public Authority: *EXCLUDE<br>
<!-- iddvc RMBR -->
<br>
&nbsp;&nbsp;Threadsafe: Yes<br>
<!-- iddvc RMBR -->
<br>
</div>
<p>The Remove Node From Recovery Domain (QcstRemoveNodeFromRcvyDomain) API is used to remove a node from the
recovery domain of a cluster resource group. The node being removed does not
need to be active in the cluster to be removed from the recovery domain.
<img src="delta.gif" alt="Start of change">
For primary-backup model, if the cluster resource group has no backup nodes
in either the current recovery domain
or the preferred recovery domain,
<img src="deltaend.gif" alt="End of change">
the primary node cannot be removed.
<p>This API will do the following for all cluster resource group types:</p>
<ol>
<li>Set the cluster resource group status to Remove Node Pending (550).</li>
<li>Call the exit program on all active nodes in the recovery domain with an
action code of Remove Node (12), if an exit program is specified for the
cluster resource group.</li>
<li>Reset the cluster resource group status to the value at the time the API
was called, if the exit program completes successfully on all nodes.</li>
<li>Set the cluster resource group status to Indoubt (30) if the exit program
fails on any node and the original state of the cluster resource group cannot
be recovered.</li>
<li>Delete the cluster resource group object from the node removed.</li>
</ol>
<p>This API will do the following for resilient application cluster resource
groups:</p>
<ol>
<li>If Cluster Resource Services configured the takeover IP address, it will be
removed.</li>
</ol>
<p>This API will do the following for resilient device cluster resource
groups:</p>
<ol>
<li>If the node being removed is the current primary node, ownership of the
devices specified in the cluster resource group are switched from the current
primary to the new primary,
if none of the configuration objects are varied on
on the current primary.
For cross-site mirroring, the devices are switched to the new primary node
(if the new primary node is at the same site as the current primary node) or
to the active backup node at the same site as the current primary node.
If any configuration objects are varied on, an error
message is returned. In addition, the new primary node must be active.
<p>All members of an auxiliary
storage pool group must be configured in the cluster resource group before
ownership can be changed. </p>
<p>Devices are not varied on after the ownership is switched. The node which is
to become the new primary must be active in the cluster.</p>
</li>
</ol>
<p>This API requires:</p>
<ol>
<li>Cluster Resource Services started on the node running the API.</li>
<li><img src="delta.gif" alt="Start of change">For primary-backup model cluster
resource groups:<img src="deltaend.gif" alt="End of change">
<ul>
<li>A cluster resource group status other than Active (10) in order to remove
the node that is currently the primary.</li>
<li>At least one backup node in the recovery domain of the cluster resource
group, if the primary node is removed.</li>
</ul>
<li><img src="delta.gif" alt="Start of change">For peer model cluster resource groups:
<ul>
<li>The last node designated as peer cannot be removed if the cluster resource
group is Active (10).<img src="deltaend.gif" alt="End of change">
</ul>
<li>At least one active node in the recovery domain of the cluster resource
group after the successful completion of the remove operation.</li>
</ol>
<p>This API operates in an asynchronous mode. See <a href="clust1a3.htm">
Behavior of Cluster Resource Services APIs</a> for more information.</p>
<p><strong>Restriction:</strong> This API cannot be called from a cluster
resource group exit program.<br>
</p>
<h3>Authorities and Locks</h3>
<p>The program that calls this API must be running under a user profile with
*IOSYSCFG special authority.</p>
<dl>
<dt><em>Cluster Resource Group Authority</em></dt>
<dd>*CHANGE, *OBJEXIST</dd>
<dt><em>Cluster Resource Group Library Authority</em></dt>
<dd>*EXECUTE</dd>
<dt><em>Cluster Resource Group Lock</em></dt>
<dd>*EXCL</dd>
<dt><em>Exit Program Authority <img src="delta.gif" alt="Start of change"> (applies
to user profile calling the API and user
profile to run the exit program)<img src="deltaend.gif" alt="End of change"> </em></dt>
<dd>*EXECUTE</dd>
<dt><em>Exit Program Library Authority <img src="delta.gif" alt="Start of change"> (applies to user profile calling the API and user
profile to run the exit program)<img src="deltaend.gif" alt="End of change"> </em></dt>
<dd>*EXECUTE</dd>
<dt><em>User Profile Authority <img src="delta.gif" alt="Start of change">(applies to user profile to run the exit program)<img src="deltaend.gif" alt="End of change"></em></dt>
<dd>*USE</dd>
<dt><em>Request Information User Queue Authority</em></dt>
<dd>*OBJOPR, *ADD</dd>
<dt><em>Request Information User Queue Library Authority</em></dt>
<dd>*EXECUTE</dd>
<dt><em>Request Information User Queue Lock</em></dt>
<dd>*EXCLRD</dd>
<dt><em>Configuration Object Authority</em></dt>
<dd>*USE and *OBJMGT</dd>
</dl>
<br>
<h3>Required Parameter Group</h3>
<dl>
<dt><strong>Request handle</strong></dt>
<dd>OUTPUT; CHAR(16)
<p>A unique string or handle that identifies this API call. It is used to
associate this call to any responses placed on the user queue specified in the
results information parameter.</p>
</dd>
<dt><strong>Cluster name</strong></dt>
<dd>INPUT; CHAR(10)
<p>The name of the cluster containing the cluster resource group.</p>
</dd>
<dt><strong>Cluster resource group name</strong></dt>
<dd>INPUT; CHAR(10)
<p>The name of the cluster resource group from which the node will be
removed.</p>
</dd>
<dt><strong>Node id</strong></dt>
<dd>INPUT; CHAR(8)
<p>A unique string of characters that identifies the node that is to be removed
from the recovery domain of the cluster resource group.</p>
</dd>
<dt><strong>Results information</strong></dt>
<dd>INPUT; CHAR(30)
<p>This parameter identifies a qualified user queue field and is followed by a
reserved field.</p>
<p>Qualified user queue: Completion information is returned to this user queue,
which exists on the node from which the API was called, after the function has
completed. See the <a href="#usage_notes">
Usage Notes</a> section of this API for a description of the data that is
placed on this queue. This is a 20-character field. The first 10 characters
contain the user queue name, and the second 10 characters contain the user
queue library name. No special values are supported. QTEMP, *LIBL, *CURLIB are
not valid library names. The attributes of this user queue must be keyed.
</p>
<p>Reserved: The last 10 characters of the 30-character results information are
reserved. Each character in this field must be set to hexadecimal zero.</p>
</dd>
<dt><strong>Error code</strong></dt>
<dd>I/O; CHAR(*)
<p>The structure in which to return error information. For the format of the
structure, see <a href="../apiref/error.htm#hdrerrcod">Error Code Parameter</a>.</p>
</dd>
</dl>
<br>
<h3><a name="usage_notes">Usage Notes</a></h3>
<h3>Results Information User Queue</h3>
<p>Asynchronous results are returned to a user queue specified by the Results
Information parameter of the API. See <a href="clust1a4.htm">Cluster APIs Use
of User Queues</a> and <a href="clust1a5.htm">Using Results Information</a> for
details on how to create the results information user queue, the format of the
entries, and how to use the data placed on the queue. The data is sent to the
user queue in the form of a message identifier and the substitution data for
the message (if any exists). The following identifies the data sent to the user
queue (excluding the message text).</p>
<table width="100%" cellpadding="5">
<tr>
<th align="left" valign="top">Message ID</th>
<th align="left" valign="top">Message Text</th>
</tr>
<tr>
<td width="15%" valign="top">CPCBB01 C</td>
<td width="85%" valign="top">Cluster Resource Services API &amp;1
completed.</td>
</tr>
<tr>
<td align="left" valign="top">CPF18BA D</td>
<td align="left" valign="top">Error occurred with subsystem.</td>
</tr>
<tr>
<td align="left" valign="top">CPF2113 E</td>
<td align="left" valign="top">Cannot allocate library &amp;1.</td>
</tr>
<tr>
<td align="left" valign="top">CPF2204 D</td>
<td align="left" valign="top">User profile &amp;1 not found.</td>
</tr>
<tr>
<td align="left" valign="top">CPF3CF2 D</td>
<td align="left" valign="top">Error(s) occurred during running of &amp;1 API.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9801 D</td>
<td align="left" valign="top">Object &amp;2 in library &amp;3 not found.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9802 D</td>
<td align="left" valign="top">Not authorized to object &amp;2 in &amp;3.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9803 D</td>
<td align="left" valign="top">Cannot allocate object &amp;2 in library &amp;3.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9804 D</td>
<td align="left" valign="top">Object &amp;2 in library &amp;3 damaged.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9810 D</td>
<td align="left" valign="top">Library &amp;1 not found.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB09 D</td>
<td align="left" valign="top">Cluster node Id &amp;1 does not exist in Cluster &amp;2.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB0A D</td>
<td align="left" valign="top">Cluster node &amp;1 not active in cluster &amp;2.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB0B D</td>
<td align="left" valign="top">Request using takeover IP address &amp;1 failed.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB0F D</td>
<td align="left" valign="top">Cluster resource group &amp;1 does not exist in cluster
&amp;2.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB17 D</td>
<td align="left" valign="top">&amp;1 API cannot be processed in cluster &amp;2.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB18 D</td>
<td align="left" valign="top">Request &amp;1 not allowed for cluster resource group
&amp;2.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB1B D</td>
<td align="left" valign="top">Cluster node &amp;1 does not exist in the recovery domain for
cluster resource group &amp;2.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB2C D</td>
<td align="left" valign="top">Attributes of exit program &amp;1 in library &amp;2 are not
valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB2D D</td>
<td align="left" valign="top">Timeout detected while waiting for a response.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB2E D</td>
<td align="left" valign="top">Job submission failed for cluster resource group &amp;1 in
cluster &amp;2.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB32 D</td>
<td align="left" valign="top">Attributes of user queue &amp;1 in library &amp;2 are not
valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB38 D</td>
<td align="left" valign="top">Library name &amp;1 not allowed for this request.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB39 D</td>
<td align="left" valign="top">Current user does not have IOSYSCFG special authority.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB46 D</td>
<td align="left" valign="top">Cluster resource service internal error.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB50 D</td>
<td align="left" valign="top">Cluster node &amp;1 not removed from cluster resource group
&amp;2.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB5B D</td>
<td align="left" valign="top">Resource name &amp;1 incorrect for configuration object &amp;2
on node &amp;3.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB66 D</td>
<td align="left" valign="top">Request failed for device cluster resource group &amp;3.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB67 D</td>
<td align="left" valign="top">Node &amp;1 cannot take ownership of configuration object
&amp;2.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB69 D</td>
<td align="left" valign="top">Primary node &amp;1 not current owner of hardware resource
&amp;2.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB6C D</td>
<td align="left" valign="top">Hardware configuration is not complete for configuration
objects in cluster resource group &amp;1.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB70 D</td>
<td align="left" valign="top">API request &amp;1 not compatible with current cluster
version.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB7B D</td>
<td align="left" valign="top">Device type not correct for configuration object &amp;1 on
node &amp;2.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB80 D</td>
<td align="left" valign="top">Request failed for device cluster resource group &amp;3.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB81 D</td>
<td align="left" valign="top">New primary node &amp;1 not active.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB90 D</td>
<td align="left" valign="top">Request failed for device cluster resource group &amp;3.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB92 D</td>
<td align="left" valign="top">Hardware resource &amp;1 not owned by node &amp;3 or node
&amp;4.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB98 D</td>
<td align="left" valign="top">Hardware resource &amp;1 not switchable.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB99 D</td>
<td align="left" valign="top">Request failed for device cluster resource group &amp;3.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB9B D</td>
<td align="left" valign="top">Auxiliary storage pool group member &amp;1 not specified.
</td>
</tr>
<tr>
<td align="left" valign="top">CPIBB10 D</td>
<td align="left" valign="top">Cluster resource group exit program &amp;1 in library &amp;2
on node &amp;3 failed.</td>
</tr>
</table>
<br>
<h3>Error Messages</h3>
<p>Messages that are delivered through the error code parameter are listed
here. The data (messages) sent to the results information user queue are listed
in the <a href="#usage_notes">Usage Notes</a> above.</p>
<table width="100%" cellpadding="5">
<tr>
<th align="left" valign="top">Message ID</th>
<th align="left" valign="top">Error Message Text</th>
</tr>
<tr>
<td width="15%" valign="top">CPF2113 E</td>
<td width="85%" valign="top">Cannot allocate library &amp;1.</td>
</tr>
<tr>
<td align="left" valign="top">CPF24B4 E</td>
<td align="left" valign="top">Severe error while addressing parameter list.</td>
</tr>
<tr>
<td align="left" valign="top">CPF3C1E E</td>
<td align="left" valign="top">Required parameter &amp;1 omitted.</td>
</tr>
<tr>
<td align="left" valign="top">CPF3C39 E</td>
<td align="left" valign="top">Value for reserved field not valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF3CF1 E</td>
<td align="left" valign="top">Error code parameter not valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPF3CF2 E</td>
<td align="left" valign="top">Error(s) occurred during running of &amp;1 API.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9801 E</td>
<td align="left" valign="top">Object &amp;2 in library &amp;3 not found.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9802 E</td>
<td align="left" valign="top">Not authorized to object &amp;2 in &amp;3.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9803 E</td>
<td align="left" valign="top">Cannot allocate object &amp;2 in library &amp;3.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9804 E</td>
<td align="left" valign="top">Object &amp;2 in library &amp;3 damaged.</td>
</tr>
<tr>
<td align="left" valign="top">CPF980C E</td>
<td align="left" valign="top">Object &amp;1 in library &amp;2 cannot be in an independent
auxiliary storage pool. </td>
</tr>
<tr>
<td align="left" valign="top">CPF9810 E</td>
<td align="left" valign="top">Library &amp;1 not found.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9820 E</td>
<td align="left" valign="top">Not authorized to use library &amp;1.</td>
</tr>
<tr>
<td align="left" valign="top">CPF9872 E</td>
<td align="left" valign="top">Program or service program &amp;1 in library &amp;2 ended.
Reason code &amp;3.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB02 E</td>
<td align="left" valign="top">Cluster &amp;1 does not exist.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB09 E</td>
<td align="left" valign="top">Cluster node &amp;1 does not exist in Cluster &amp;2.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB0A E</td>
<td align="left" valign="top">Cluster node &amp;1 not active in cluster &amp;2.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB0F E</td>
<td align="left" valign="top">Cluster resource group &amp;1 does not exist in cluster
&amp;2.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB1B E</td>
<td align="left" valign="top">Cluster node &amp;1 does not exist in the recovery domain for
cluster resource group &amp;2.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB26 E</td>
<td align="left" valign="top">Cluster Resource Services not active or not responding.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB2C E</td>
<td align="left" valign="top">Attributes of exit program &amp;1 in library &amp;2 are not
valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB32 E</td>
<td align="left" valign="top">Attributes of user queue &amp;1 in library &amp;2 are not
valid.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB39 E</td>
<td align="left" valign="top">Current user does not have IOSYSCFG special authority.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB42 E</td>
<td align="left" valign="top">&amp;1 API cannot be used within a cluster resource group exit
program.</td>
</tr>
<tr>
<td align="left" valign="top">CPFBB50 E</td>
<td align="left" valign="top">Cluster node &amp;1 not removed from cluster resource group
&amp;2.</td>
</tr>
</table>
<br>
<hr>
API introduced: V4R4
<hr>
<center>
<table cellpadding="2" cellspacing="2">
<tr align="center">
<td valign="middle" align="center"><a href="#Top_Of_Page">Top</a> | <a href=
"clust1a1.htm">Cluster APIs</a> | <a href="aplist.htm">APIs by
category</a></td>
</tr>
</table>
</center>
</body>
</html>