Solved

Subclient Properties Attribute List

  • 4 October 2022
  • 2 replies
  • 101 views

Userlevel 2
Badge +6

Hi Guys

Each Subclient that gets created has 200+ Parameters and Options, some are set always, some not, new ones get added with every FeatureReleases and Default-Values might change with every other MaintenanceRelease. After couple of years I now have a Zoo full of varying configurations that I need to consolidate to a hand full of standards.

Anybody know a convenient way to gather all available Options for a given Subclient-Type? Intention is to gather a giant table to be able to compare f.E. setting up same diskCleanupRules for all FIleSystem Agents.

Tried to extract the Data from App_GetSubClientPropertiesResponse xml-Output but couldn’t find a good way to extract all Entity and Attribute Paths as source for a XPath-Query Loop through everything.  XPath 3.0 would support something like “//@*/path()” to do that in a one-liner but Commvault Java stack doesn’t seem to support that.

Anybody had the same challenge and found a solution

Best Regards

Stefan

icon

Best answer by Jos Meijer 4 October 2022, 14:30

View original

2 replies

Userlevel 7
Badge +17

You might want to take a look at REST.

This API will retrieve the subclient settings, just loop this for every subclient id:

http://WebConsoleHostName/webconsole/api/Subclient/{{subclientId}}

Source: https://api.commvault.com/#c8f29cd9-773d-4620-b7eb-917813fa34d8

 

When you have altered the settings to a standard you can post the settings again for each subclient id:

http://WebConsoleHostName/webconsole/api/Subclient/{{subclientId}}

Source: https://api.commvault.com/#8330e0a0-202d-490d-86e2-953dd1e41447

Hope this helps 🙂

 

Example output GET Subclient Properties:

{
"subClientProperties": [
{
"hcSubclientProp": {},
"impersonateUser": {
"userName": ""
},
"proxyClient": {},
"subClientEntity": {
"clientName": "firewalltestcs",
"instanceName": "DefaultInstanceName",
"backupsetId": 3,
"_type_": 7,
"instanceId": 1,
"subclientId": 49,
"clientId": 2,
"appName": "File System",
"backupsetName": "defaultBackupSet",
"applicationId": 33,
"subclientName": "TestFSAPI"
},
"dfsSubclientProp": {
"distributedDataAccessNodes": {}
},
"fsSubClientProp": {
"catalogACL": false,
"syncQueue": "",
"archiverRetention": false,
"blockLevelSPOSBackup": 0,
"backupPrivateAuthority": false,
"enableFolderLevelMultiThread": false,
"bigFileSize": 1024,
"backupAsObjects": false,
"useGlobalFilters": 2,
"backupFilesQualifiedForArchive": false,
"syncAllLibForBackup": false,
"backupFileTimeZoneName": "",
"vssOptions": 2,
"useVSSForSystemState": true,
"olderFileVersionsMode": 1,
"blockLevelBackup": 0,
"backupRetentionMode": 1,
"deletePSTFileOnly": false,
"txtlibSyncCheckPoint": "",
"customSubclientContentFlags": 0,
"saveAccessPath": "*SYSVAL",
"unixCtime": true,
"keepVersions": 0,
"backupRetention": false,
"scanOption": 2,
"backupFilesAsExtents": false,
"backupSystemState": false,
"afterDeletionKeepItemsForNDays": 730,
"saveWhileActiveOpt": "",
"useIncremental": false,
"unixMtime": true,
"useVssForAllFilesOptions": 3,
"runTrueUpJobAfterJobsForFS": 0,
"catalogAdditional": false,
"oneTouchSubclient": false,
"extendRetentionForNDays": -1,
"customSubclientFlag": false,
"isTrueUpOptionEnabledForFS": true,
"enableOCSBackupOnSubclient": false,
"folderLevelThreadCount": 0,
"targetReleaseForBackupData": "",
"retentionPolicy": 0,
"backupSaveFileData": false,
"activeWaitTime": 0,
"archiverRetentionMode": 2,
"backupFilesOnOrAfter": false,
"extentSize": 4,
"enableOnePass": false,
"runTrueUpJobAfterDaysForFS": 30,
"useVSS": true,
"isSynthfullRunAfterOnePassEnabledOnSubclient": false,
"useSCPFilters": false,
"extendStoragePolicyRetention": false,
"backupSpooledFileData": false,
"backupQueueData": false,
"oneTouchServerDirectory": "",
"keepOlderVersionsForNDays": 30,
"ibmiSubclientprop": {
"SRBootServerDir": ""
},
"backupConfiguration": {},
"oneTouchServer": {
"clientId": 0,
"_type_": 3
},
"backupFilesOnOrAfterDate": {
"_type_": 55
},
"diskCleanupRules": {
"stubPruningOptions": 0,
"afterArchivingRule": 1,
"stubRetentionDaysOld": 0,
"enableRedundancyForDataBackedup": true,
"patternMatch": "",
"rulesToSatisfy": 1,
"entityMatch": ""
},
"ocsUserName": {
"userName": ""
}
},
"planEntity": {},
"content": [
{
"path": "C:\\csguid.PNG"
},
{
"path": "C:\\DEMO_3.pptx"
},
{
"path": "C:\\fw10_tppm.doc"
},
{
"path": "C:\\removeGUIDKeyFromClientGroup.sqle"
},
{
"path": "C:\\test.jpg"
},
{
"path": "C:\\v11SP4a.xml"
},
{
"path": "C:\\wf.txt"
},
{
"path": "C:\\WORKQUEUE_TASK.docx"
},
{
"path": "C:\\testimg.jpg"
},
{
"path": "C:\\Siesta-Lake-Sunset.jpg"
}
],
"commonProperties": {
"encryptionFlag": 2,
"numberOfBackupStreams": 2,
"nextBackupTime": 0,
"isTurboSubclient": false,
"isKeepItemPastExpiryTime": true,
"onDemandSubClient": false,
"totalBackupSize": 5933719,
"lastBackupTime": 1496122319,
"indexingBackupSubClient": false,
"description": "",
"subClientPropertiesFlag": 0,
"lastBackupSize": 981264,
"onlyBackupQualifiedArchivingFiles": false,
"allowVssForSnapbackup": false,
"enableBackupAfterDelay": false,
"expandSymbolicLinks": false,
"enableAppleDoubleSupport": false,
"allowMultipleDataReaders": false,
"indexCycleToEveryBackupJobs": 0,
"excludeFromSLA": false,
"readBuffersize": 0,
"enableBackup": true,
"securityAssociations": {
"ownerAssociations": {}
},
"enableBackupAtDateTime": {
"TimeZoneID": 0,
"time": 0
},
"turboNASClient": {
"clientId": 0,
"_type_": 3
},
"associatedSnapShotSCId": {
"_type_": 7,
"subclientId": 0
},
"snapCopyInfo": {
"snapToTapeProxyToUseSource": false,
"isSnapBackupEnabled": false,
"backupCopyInterface": 0,
"IsOracleSposDriverEnabled": false,
"isRMANEnableForTapeMovement": false,
"useProxyForSQLIntegrity": {},
"sybaseUser": {},
"snapToTapeSelectedEngine": {
"_type_": 110
},
"sqlUser": {},
"snapToTapeProxyToUse": {
"clientId": 0,
"_type_": 3
},
"quiesceImpersonateUser": {},
"separateProxyForSnapToTape": {
"_type_": 3
},
"configuredSybaseInstance": {
"_type_": 5
}
},
"prepostProcess": {
"runPostScan": 0,
"runPostBackup": 0,
"runPostLog": 0,
"prepostUserName": {}
},
"security": {
"clientOwners": [
"testadmin"
],
"associatedUserGroups": [
{
"userGroupId": 1,
"_type_": 15,
"userGroupName": "master"
},
{
"userGroupId": 3,
"_type_": 15,
"userGroupName": "View All"
}
],
"ownerCapabilities": {}
},
"storageDevice": {
"networkAgents": 2,
"overrideIncrementalDataPath": false,
"applicableReadSize": 0,
"softwareCompression": 2,
"overrideDataPath": false,
"throttleNetworkBandwidth": 0,
"dataBackupStoragePolicy": {
"_type_": 17,
"storagePolicyName": "CSSP",
"storagePolicyId": 3
},
"deDuplicationOptions": {
"enableDeduplication": true,
"generateSignature": 1
},
"logBackupStoragePolicy": {
"_type_": 17
},
"performanceMode": {
"perfSPName": "CSSP",
"multiplexingValid": true,
"enableMultiplexing": false,
"perfCopyName": "Primary",
"perfClientName": "firewalltestcs",
"streamsOverMux": false,
"pipelineBufferSize": 64,
"numOfPipelineBuffers": 30,
"muxFactor": 0,
"lookAheadReaderSlots": 4,
"perfCRCDetails": [
{
"crcOverMedia": true,
"perfMaId": 2,
"crcOverNetwork": true,
"perfMa": "firewalltestcs"
}
]
}
},
"associatedPolicy": {
"subclientPolicyId": 0
}
},
"analyticsSubclientProp": {}
}
]
}

 

Userlevel 2
Badge +6

Hi Jos

Good hint, thanks for that. Considered going that route but abandoned it for couple of points. Main one being that we heavily use Workflows for Automation and with that the qCommand-XML API to configure things. Options on REST-API didn’t always translate well in past, other keywords, other structures, other requirements. Second being API previously omit many options, though trying it now seems got better, options like “excludeFromSLA” that are set are still missing though. Last and major one to me, most of the options are not documented at all or are incorrectly documented (f.E. applicationId for FileSystem supposedly being 33 when that only applies for Windows and must be 29 for Linux or “useGlobalFilters” claiming it uses string-values while API returns integer with no info on what maps to what, etc).

Not to keen on starting from scratch under those circumstances and bit too lazy for that if I’m honest 😅

BR Stefan

Reply