PyObject* dsmGetNextQObj_wrapper(PyObject * self, PyObject * args) { dsUint32_t dsmHandle; dsmQueryType queryType; int rc = 0; int iqueryType = 0; PyObject* result = NULL; DataBlk qData; qData.stVersion = DataBlkVersion; if (!PyArg_ParseTuple(args, "II", &dsmHandle, &iqueryType)) { return NULL; } queryType = (dsmQueryType) iqueryType; if(queryType == qtBackup){ qryRespBackupData respBuffer; memset(&respBuffer,0x00,sizeof(qryRespBackupData)); qData.bufferLen = sizeof(qryRespBackupData); qData.bufferPtr = (char *) &respBuffer; respBuffer.stVersion = qryRespBackupDataVersion; rc = dsmGetNextQObj(dsmHandle, (DataBlk*) &qData); result = qryRespBackupDataToPyDict(respBuffer); } else if(queryType == qtBackupActive){ qryARespBackupData respBuffer; memset(&respBuffer,0x00,sizeof(qryARespBackupData)); qData.bufferLen = sizeof(qryARespBackupData); qData.bufferPtr = (char *) &respBuffer; respBuffer.stVersion = qryARespBackupDataVersion; rc = dsmGetNextQObj(dsmHandle, (DataBlk*) &qData); result = qryARespBackupDataToPyDict(respBuffer); } else if(queryType == qtFilespace) { qryRespFSData respBuffer; memset(&respBuffer,0x00,sizeof(qryRespFSData)); qData.bufferLen = sizeof(qryRespFSData); qData.bufferPtr = (char *) &respBuffer; respBuffer.stVersion = qryRespFSDataVersion; rc = dsmGetNextQObj(dsmHandle, (DataBlk*) &qData); result = qryRespFSDataToPyDict(respBuffer); } else { return NULL; } if(result != NULL) return returnTouple(rc, result); else return returnTouple(rc, Py_None); }
int tsmqueryadv(char *fs, char *hl, char *ll, struct taquery **taqp, int state, time_t date) { qryRespBackupData *qaresp; struct taquery *taq, *tapole = NULL, *tarev = NULL; struct taquery *ftaq; DataBlk db; dsmObjName on; qryBackupData qa; int rv, nq; strcpy(on.fs, fs); strcpy(on.hl, hl); strcpy(on.ll, ll); on.objType = DSM_OBJ_WILDCARD; qa.stVersion = qryBackupDataVersion; qa.objName = &on; qa.owner = ""; qa.objState = DSM_ACTIVE; qa.pitDate.year = DATE_MINUS_INFINITE; if ((rv = dsmBeginQuery(dsmHandle,qtBackup, &qa))) { tsmerror("dsmBeginQuery", rv); return rv; } db.stVersion = DataBlkVersion; ftaq = fetchtaq(); db.bufferLen = sizeof(qryRespBackupData); db.bufferPtr = ftaq->tsmresp; qaresp = (qryRespBackupData *)db.bufferPtr; qaresp->stVersion = qryRespBackupDataVersion; nq = 0; while ((rv = dsmGetNextQObj(dsmHandle, &db)) == DSM_RC_MORE_DATA) { taq = ftaq; taq->da = (struct dirattribute *)&qaresp->objInfo; taq->fs = qaresp->objName.fs; taq->hl = qaresp->objName.hl; taq->ll = qaresp->objName.ll; taq->next = tapole; tapole = taq; ftaq = fetchtaq(); db.bufferPtr = ftaq->tsmresp; qaresp = (qryRespBackupData *)db.bufferPtr; qaresp->stVersion = qryRespBackupDataVersion; nq++; if (dflag && (nq % 1000) == 0) printf("**** Status taken of %d objects\n", nq); } if (dflag) printf("!!!! Total %d objects\n", nq); if (rv == DSM_RC_FINISHED || rv == DSM_RC_ABORT_NO_MATCH) rv = 0; else { tsmerror("dsmGetNextQObj", rv); return rv; } if ((rv = dsmEndQuery(dsmHandle))) tsmerror("dsmEndQuery", rv); while (tapole) { taq = tarev; tarev = tapole; tapole = tapole->next; tarev->next = taq; } *taqp = tarev; return rv; }
int tsmquery(char *fs, char *hl, char *ll, struct taquery **taqp, struct tm *tm) { qryRespBackupData *qaresp; struct taquery *taq, *tapole = NULL, *tarev = NULL; struct taquery *ftaq; DataBlk db; dsmObjName on; qryBackupData qa; int rv, nq; strcpy(on.fs, fs); strcpy(on.hl, hl); strcpy(on.ll, ll); on.objType = DSM_OBJ_WILDCARD; qa.stVersion = qryBackupDataVersion; qa.objName = &on; qa.owner = ""; qa.objState = DSM_ACTIVE; if (tm != NULL) { qa.pitDate.year = tm->tm_year; qa.pitDate.month = tm->tm_mon; qa.pitDate.day = tm->tm_mday; qa.pitDate.hour = tm->tm_hour; qa.pitDate.minute = tm->tm_min; qa.pitDate.second = tm->tm_sec; qa.objState = DSM_ANY_MATCH; } else qa.pitDate.year = DATE_MINUS_INFINITE; if ((rv = dsmBeginQuery(dsmHandle,qtBackup, &qa))) { tsmerror("dsmBeginQuery", rv); return rv; } db.stVersion = DataBlkVersion; ftaq = fetchtaq(); db.bufferLen = sizeof(qryRespBackupData); db.bufferPtr = ftaq->tsmresp; qaresp = (qryRespBackupData *)db.bufferPtr; qaresp->stVersion = qryRespBackupDataVersion; nq = 0; e0: while ((rv = dsmGetNextQObj(dsmHandle, &db)) == DSM_RC_MORE_DATA) { taq = ftaq; taq->da = (struct dirattribute *)&qaresp->objInfo; taq->fs = qaresp->objName.fs; taq->hl = qaresp->objName.hl; taq->ll = qaresp->objName.ll; taq->next = tapole; tapole = taq; ftaq = fetchtaq(); db.bufferPtr = ftaq->tsmresp; qaresp = (qryRespBackupData *)db.bufferPtr; qaresp->stVersion = qryRespBackupDataVersion; nq++; if (dflag && (nq % 1000) == 0) printf("**** Status taken of %d objects\n", nq); } if (rv == DSM_RC_UNKNOWN_FORMAT) { /* XXX what to do??? */ printf("unknown format...\n"); goto e0; } if (dflag) printf("!!!! Total %d objects\n", nq); if (rv == DSM_RC_FINISHED || rv == DSM_RC_ABORT_NO_MATCH) { rv = 0; } else { tsmerror("dsmGetNextQObj", rv); return rv; } if ((rv = dsmEndQuery(dsmHandle))) tsmerror("dsmEndQuery", rv); while (tapole) { taq = tarev; tarev = tapole; tapole = tapole->next; tarev->next = taq; } *taqp = tarev; return rv; }