3.1.4.15 RollupComputers
A DSS calls the RollupComputers method to send information on client computers that get updates from it, or from any descendant update server, to the USS.
-
<wsdl:operation name="RollupComputers"> <wsdl:input message="tns:RollupComputersSoapIn" /> <wsdl:output message="tns:RollupComputersSoapOut" /> </wsdl:operation>
The SOAP operation is as follows.
-
<soap:operation soapAction="http://www.microsoft.com/SoftwareDistribut ion/RollupComputers" style="document" />
Request validation:
The USS validates inputs as given in the following table. If any of the inputs are not valid, the USS MUST return a SOAP fault message to the DSS.
Input |
Validation conditions |
---|---|
computers |
MUST be present, and the total number of ComputerRollupInfo structures in the request MUST NOT exceed the RollupComputersMaxBatchSize value returned by the USS in the preceding GetRollupConfiguration call. |
Data processing:
The USS MUST process this message as follows:
If the DoDetailedRollup value in the Server Configuration Table is FALSE, return a SOAP fault message to the DSS and stop processing the request.
For each ComputerRollupInfo structure in the request, get the ParentServerId value and search the DSS Table for an entry with a matching ServerID. If no entry is found, return a SOAP fault message to the DSS with an <ErrorCode> of InternalServerError and stop processing the request.
The USS MAY use the clientTime value passed by the DSS to determine the difference between the USS system clock and DSS system clock, and adjust the other input time stamps to compensate for the difference.<54>
For each ComputerRollupInfo structure in the request, get the ComputerId value and search the client computers table for an entry with a matching ComputerId.
If no entry is found, create a new entry, initializing all values using values from the ComputerRollupInfo structure.
If an existing entry is found, and the LastSyncTime value from this entry in the table is less than or equal to the LastSyncTime value from the ComputerRollupInfo structure, replace the values in the entry using the values from the ComputerRollupInfo structure.
Else ignore this ComputerRollupInfo structure.
The USS MUST compose a RollupComputersResponse message in response, as follows:
The RollupComputersResult array is initialized to an empty array.
For each ComputerRollupInfo structure in the request, if the Details field does not exist and one of the following is true:
A new entry was added to the client computers table in step 4.1 for this ComputerRollupInfo structure.
An existing entry in the client computers table was updated in step 4.2 for this ComputerRollupInfo structure, and the ParentServerID value was changed to a new value.
The USS MUST add an entry to the RollupComputersResult array with the following:
ComputerId: Set to the ComputerId value from the ComputerRollupInfo structure.
Change: Set to NewParent.
This notifies the caller that it MUST populate the Details field the next time it reports information about this client computer to this USS.
For each ComputerRollupInfo structure in the request, the USS MAY add an entry to the RollupComputersResult array with the following:
ComputerId: Set to the ComputerId value from the ComputerRollupInfo structure.
Change: Set to Deleted.
This notifies the caller that the USS is no longer interested in receiving information about this client computer.<55>
The same ComputerId MUST NOT appear more than once in the RollupComputersResult array. If the ComputerId already exists in the array as a result of step 5.2, the same ComputerId MUST NOT be added in step 5.3.
Response
If no errors occur during processing, the USS MUST return the success response to the DSS.
If an error occurs during processing, the USS MUST return a SOAP fault indicating that an error occurred. This protocol does not define a mechanism for returning information on the cause of the failure. The DSS MUST stop the protocol when a SOAP fault is received.