Fixes are available
4.2.2 Fix Pack 7 (July 2014) for Tivoli Storage Productivity Center
4.2.2 Interim Fix 2 (December 2012) for Tivoli Storage Productivity Center
4.2.2 Fix Pack 8 (March 2015) for Tivoli Storage Productivity Center
4.2.2 Fix Pack 9 (May 2015) for Tivoli Storage Productivity Center
4.2.2 Fix Pack 10 (August 2015) for Tivoli Storage Productivity Center
4.2.2 Fix Pack 3 (October 2012) for Tivoli Storage Productivity Center
APAR status
Closed as program error.
Error description
When calling TPC API to create zone: 1. If completed successfully, there's no "zone id" returned by the API, through zone was created/shown from fabric manager 2. If zone creation fails, multiple errors, either zone not committed, or wrong parameter, etc, checked on fabric manager right after the call, no zone create; after a period of time, e.g. overnight, zone shows on fabric manager The code in com.ibm.tpc.integration.tpm.control.TPCFabricControl.java has a problem. The TPM workflow script is issuing commands in this order: getAllZoneSets( ) startZoneTransaction( ) createZone( ) addZoneMembersToZone( ) addZoneToZoneSet( ) commitZoneTransaction( ) This order is the right order to use. There is nothing wrong with the TPM workflow script. In com.ibm.tpc.integration.tpm.control.TPCFabricControl.java, when addZoneMembersToZone( ) is called, it does the following: //Check each of the input portWWNs and check to see if it is already a member of the zone. If so, no need to send it to TPC API, //otherwise we'll solicit a failure response. If this code causes a performance problem, it can safely be commented out... noting //that TPC_Fabric_AddZoneMembers workflow should then filter this list before sending it to this java helper. ArrayList alPortWWNs = new ArrayList(java.util.Arrays.asList(portWWNs)); String[] existingMembers = getAllPortsInZone(fabricID, zoneName, false, hostname, port, username, password); for(int i=0; i < existingMembers.length; ++i){ alPortWWNs.remove(existingMembers[i]); } portWWNs = (String[])alPortWWNs.toArray(new String[0]); //Check to ensure that there are still portWWNs to add if(portWWNs.length == 0) return 0; //All ports must've already been members. Report success. The call to getAllPortsInZone( ) fails because the zone does not exist yet. It is held in memory in TPC Device Server, waiting to be committed to the fabric. The call to getAllPortsInZone( ) checks the TPC DB for the zone but it is appropriately not yet existing in the TPC DB. This causes the following error for their TPM workflow script: [ERROR] 09/09/2011 12:13:15,797 [ TPCUtil.java:123 ] - TPCFabricControl.getAllPortsInZone() :: Invalid parameter passed to fabricProxy.getAllPortsinZone() [ERROR] 09/09/2011 12:13:15,798 [ TPCUtil.java:124 ] - com.ibm.tpc.common.api.InvalidParameterException: BTAFM4110E Zone ctstidp16l2_2_V39 was not found. at com.ibm.tpc.fabric.FabricManagerService.throwInvalidParameterExc eption(FabricManagerService.java:488 8) at com.ibm.tpc.fabric.FabricManagerService.getPortsInZone(FabricMan agerService.java:4058) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessor Impl.java:79) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethod AccessorImpl.java:43) To fix this, the TPCFabricControl.addZoneMembersToZone( ) method should check if the zone exists before calling getAllPortsInZone( ). Note that this TPCFabricControl.addZoneMembersToZone( ) method needs to handle scenarios where the caller is creating the zone in the same session (i.e. the zone exists only in TPC Device Server memory) and cases where the caller is adding a zone member to a zone which already exists on the fabric. So it would not be correct to just remove the check for getAllPortsInZone( ). We need to check if the zone exists and then call getAllPortsInZone( ).
Local fix
Problem summary
**************************************************************** * USERS AFFECTED: Those running Tivoli Storage Productivity * * Center workflows in Tivoli Provisioning * * Manager. * * Center * **************************************************************** * PROBLEM DESCRIPTION: When running a Tivoli Storage * * Productivity Center "create zone" * * workflow in Tivoli Provisioning * * Manager and also specifying at least * * one zone member to add to the new * * zone, the workflow may fail with an * * error saying that the zone to be * * created was not found. * **************************************************************** * RECOMMENDATION: * **************************************************************** -
Problem conclusion
An updated IBMTPC.tcdriver file is needed to correct this problem. The updated driver fix for this APAR is targeted for the following maintenance package: | interim fix | 7.2.1-TIV-TPM-IF0001
Temporary fix
Comments
APAR Information
APAR number
IC78617
Reported component name
TPC FOR FABRIC
Reported component ID
5608TC100
Reported release
42W
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt
Submitted date
2011-09-12
Closed date
2011-10-17
Last modified date
2011-10-17
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
Fix information
Fixed component name
TPC FOR FABRIC
Fixed component ID
5608TC100
Applicable component levels
R42A PSY
UP
R42L PSY
UP
R42W PSY
UP
[{"Line of Business":{"code":"LOB26","label":"Storage"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SS8JFM","label":"TotalStorage Productivity Center for Fabric"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"42W"}]
Document Information
Modified date:
18 September 2021