}
+/*
+ * If VolumeName is non-zero, list the record for that Volume
+ * otherwise, list the Volumes in the Pool specified by PoolId
+ */
void
db_list_media_records(void *jcr, B_DB *mdb, MEDIA_DBR *mdbr,
DB_LIST_HANDLER *sendit, void *ctx, int full)
{
if (full) {
- Mmsg(&mdb->cmd, "SELECT MediaId,VolumeName,Slot,PoolId,"
- "MediaType,FirstWritten,LastWritten,LabelDate,VolJobs,"
- "VolFiles,VolBlocks,VolMounts,VolBytes,VolErrors,VolWrites,"
- "VolCapacityBytes,VolStatus,Recycle,VolRetention,"
- "VolUseDuration,MaxVolJobs,MaxVolFiles,MaxVolBytes "
- "FROM Media WHERE Media.PoolId=%u ORDER BY MediaId", mdbr->PoolId);
+ if (mdbr->VolumeName[0] != 0) {
+ Mmsg(&mdb->cmd, "SELECT MediaId,VolumeName,Slot,PoolId,"
+ "MediaType,FirstWritten,LastWritten,LabelDate,VolJobs,"
+ "VolFiles,VolBlocks,VolMounts,VolBytes,VolErrors,VolWrites,"
+ "VolCapacityBytes,VolStatus,Recycle,VolRetention,"
+ "VolUseDuration,MaxVolJobs,MaxVolFiles,MaxVolBytes "
+ "FROM Media WHERE Media.VolumeName='%s'", mdbr->VolumeName);
+ } else {
+ Mmsg(&mdb->cmd, "SELECT MediaId,VolumeName,Slot,PoolId,"
+ "MediaType,FirstWritten,LastWritten,LabelDate,VolJobs,"
+ "VolFiles,VolBlocks,VolMounts,VolBytes,VolErrors,VolWrites,"
+ "VolCapacityBytes,VolStatus,Recycle,VolRetention,"
+ "VolUseDuration,MaxVolJobs,MaxVolFiles,MaxVolBytes "
+ "FROM Media WHERE Media.PoolId=%u ORDER BY MediaId", mdbr->PoolId);
+ }
} else {
- Mmsg(&mdb->cmd, "SELECT MediaId,VolumeName,MediaType,VolStatus,"
- "VolBytes,LastWritten,VolRetention,Recycle,Slot "
- "FROM Media WHERE Media.PoolId=%u ORDER BY MediaId", mdbr->PoolId);
+ if (mdbr->VolumeName[0] != 0) {
+ Mmsg(&mdb->cmd, "SELECT MediaId,VolumeName,MediaType,VolStatus,"
+ "VolBytes,LastWritten,VolRetention,Recycle,Slot "
+ "FROM Media WHERE Media.VolumeName='%s'", mdbr->VolumeName);
+ } else {
+ Mmsg(&mdb->cmd, "SELECT MediaId,VolumeName,MediaType,VolStatus,"
+ "VolBytes,LastWritten,VolRetention,Recycle,Slot "
+ "FROM Media WHERE Media.PoolId=%u ORDER BY MediaId", mdbr->PoolId);
+ }
}
db_lock(mdb);
for (i=1; i<ua->argc; i++) {
if (strcasecmp(ua->argk[i], _("pool")) == 0) {
if (!get_pool_dbr(ua, &pr)) {
+ bsendmsg(ua, _("No Pool specified.\n"));
return 1;
}
mr.PoolId = pr.PoolId;
free(ids);
return 1;
}
+ /* List a specific volume */
+ } else if (strcasecmp(ua->argk[i], _("volume")) == 0) {
+ if (!ua->argv[i]) {
+ bsendmsg(ua, _("No Volume Name specified.\n"));
+ return 1;
+ }
+ bstrncpy(mr.VolumeName, ua->argv[i], sizeof(mr.VolumeName));
+ db_list_media_records(ua->jcr, ua->db, &mr, prtit, ua, llist);
+ return 1;
} else {
bsendmsg(ua, _("Unknown list keyword: %s\n"), NPRT(ua->argk[i]));
}