Searching the Help
To search for information in the Help, type a word or phrase in the Search box. When you enter a group of words, OR is inferred. You can use Boolean operators to refine your search.
Results returned are case insensitive. However, results ranking takes case into account and assigns higher scores to case matches. Therefore, a search for "cats" followed by a search for "Cats" would return the same number of Help topics, but the order in which the topics are listed would be different.
Search for | Example | Results |
---|---|---|
A single word | cat
|
Topics that contain the word "cat". You will also find its grammatical variations, such as "cats". |
A phrase. You can specify that the search results contain a specific phrase. |
"cat food" (quotation marks) |
Topics that contain the literal phrase "cat food" and all its grammatical variations. Without the quotation marks, the query is equivalent to specifying an OR operator, which finds topics with one of the individual words instead of the phrase. |
Search for | Operator | Example |
---|---|---|
Two or more words in the same topic |
|
|
Either word in a topic |
|
|
Topics that do not contain a specific word or phrase |
|
|
Topics that contain one string and do not contain another | ^ (caret) |
cat ^ mouse
|
A combination of search types | ( ) parentheses |
|
Support Differential Synchronization
For the Push adapter to support differential synchronization, the DiscoveryMain function must return an object implementing the DataPushResults interface, which contains the mappings between the IDs that the Jython script receives from the XML and the IDs that the Jython script creates on the remote machine. The latter IDs are of the type ExternalId.
The ExternalIdUtil.restoreExternal command, which receives the ID of the CI in the CMDB as a parameter, restores the external ID from the ID of the CI in the CMDB. This command can be used, for example, while performing differential synchronization, and a link is received where one of its ends is not in the bulk (it was already synchronized).
If the DiscoveryMain method in the Jython script on which the Push adapter is based returns an empty ObjectStateHolderVector instance, the adapter will not support differential synchronization. This means that even when a differential synchronization job is run, in actuality, a full synchronization is being performed. Therefore, no data can be updated or removed on the remote system, since all data is added to the
Important: If you are implementing differential synchronization on an existing adapter that was created in version 9.00 or 9.01, you must use the push-adapter.zip file from version 9.02 or later to recreate your adapter package. For details, see Build an Adapter Package.
This task enables the Push adapter to perform differential synchronization.
The Jython script returns the DataPushResults object which contains two Java maps - one for object ID mappings (keys and values are ExternalCiId type objects) and one for link IDs (keys and values are ExternalRelationId type objects).
-
Add the following from statements to your Jython script:
from com.hp.ucmdb.federationspi.data.query.types import ExternalIdFactory
from com.hp.ucmdb.adapters.push import DataPushResults
from com.hp.ucmdb.adapters.push import DataPushResultsFactory
from com.mercury.topaz.cmdb.server.fcmdb.spi.data.query.types import ExternalIdUtil
-
Use the DataPushResultsFactory factory class to obtain the DataPushResults object from the DiscoveryMain function.
# Create the UpdateResult object
updateResult = DataPushResultsFactory.createDataPushResults(objectMappings, linkMappings);
-
Use the following commands to create Java maps for the DataPushResults object:
#Prepare the maps to store the mappings if IDs
objectMappings = HashMap()
linkMappings = HashMap()
-
Use the ExternalIdFactory class to create the following ExternalId IDs:
-
ExternalId for objects or links originating in a CMDB (for example, all of the CIs in an add operation are from the CMDB):
externaCIlId = ExternalIdFactory.createExternalCmdbCiId(ciType, ciIDAsString)
externalRelationId = ExternalIdFactory.createExternalCmdbRelationId(linkType, end1ExternalCIId, end2ExternalCIId, linkIDAsString)
-
ExternalId for objects or links not originating in a CMDB (usually, every update and remove operation contains such objects):
myIDField = TypesFactory.createProperty("systemID", "1")
myExternalId = ExternalIdFactory.createExternalCiId(type, myIDField)
Note If the Jython script updated existing information and the ID of the object (or link) changes, you must return a mapping between the previous external ID and the new one.
-
-
Use the restoreCmdbCiIDString or restoreCmdbRelationIDString methods from the ExternalIdFactory class to retrieve the UCMDB ID string from an External ID of an object or link that originated in UCMDB.
-
Use the restoreExternalCiId and restoreExternalRelationId methods from the ExternalIdUtil class to restore the ExternalId object from the mamId attribute value of the XML of the update or remove operations.
Note ExternalId objects are actually an array of properties. This means that you can use an ExternalId object to store any information you may need that will identify the data on the remote system.