static bool backupscmd(UAContext *ua, const char *cmd);
static bool levelscmd(UAContext *ua, const char *cmd);
static bool getmsgscmd(UAContext *ua, const char *cmd);
+static bool volstatuscmd(UAContext *ua, const char *cmd);
+static bool mediatypescmd(UAContext *ua, const char *cmd);
+static bool locationscmd(UAContext *ua, const char *cmd);
+static bool mediacmd(UAContext *ua, const char *cmd);
+static bool aopcmd(UAContext *ua, const char *cmd);
-static bool dot_lsdirs(UAContext *ua, const char *cmd);
-static bool dot_lsfiles(UAContext *ua, const char *cmd);
-static bool dot_update(UAContext *ua, const char *cmd);
+static bool dot_bvfs_lsdirs(UAContext *ua, const char *cmd);
+static bool dot_bvfs_lsfiles(UAContext *ua, const char *cmd);
+static bool dot_bvfs_update(UAContext *ua, const char *cmd);
static bool api_cmd(UAContext *ua, const char *cmd);
static bool sql_cmd(UAContext *ua, const char *cmd);
{ NT_(".sql"), sql_cmd, NULL, false},
{ NT_(".status"), dot_status_cmd, NULL, false},
{ NT_(".storage"), storagecmd, NULL, true},
- { NT_(".lsdirs"), dot_lsdirs, NULL, true},
- { NT_(".lsfiles"), dot_lsfiles, NULL, true},
- { NT_(".update"), dot_update, NULL, true},
+ { NT_(".volstatus"), volstatuscmd, NULL, true},
+ { NT_(".media"), mediacmd, NULL, true},
+ { NT_(".mediatypes"), mediatypescmd, NULL, true},
+ { NT_(".locations"), locationscmd, NULL, true},
+ { NT_(".actiononpurge"),aopcmd, NULL, true},
+ { NT_(".bvfs_lsdirs"), dot_bvfs_lsdirs, NULL, true},
+ { NT_(".bvfs_lsfiles"),dot_bvfs_lsfiles,NULL, true},
+ { NT_(".bvfs_update"), dot_bvfs_update, NULL, true},
{ NT_(".types"), typescmd, NULL, false}
};
#define comsize ((int)(sizeof(commands)/sizeof(struct cmdstruct)))
return ok;
}
-static bool dot_update(UAContext *ua, const char *cmd)
+static bool dot_bvfs_update(UAContext *ua, const char *cmd)
{
if (!open_client_db(ua)) {
}
/*
- * .lsfiles jobid=1,2,3,4 pathid=10
- * .lsfiles jobid=1,2,3,4 path=/
+ * .bvfs_lsfiles jobid=1,2,3,4 pathid=10
+ * .bvfs_lsfiles jobid=1,2,3,4 path=/
*/
-static bool dot_lsfiles(UAContext *ua, const char *cmd)
+static bool dot_bvfs_lsfiles(UAContext *ua, const char *cmd)
{
DBId_t pathid=0;
int limit=2000, offset=0;
}
/*
- * .lsdirs jobid=1,2,3,4 pathid=10
- * .lsdirs jobid=1,2,3,4 path=/
- * .lsdirs jobid=1,2,3,4 path=
+ * .bvfs_lsdirs jobid=1,2,3,4 pathid=10
+ * .bvfs_lsdirs jobid=1,2,3,4 path=/
+ * .bvfs_lsdirs jobid=1,2,3,4 path=
*/
-static bool dot_lsdirs(UAContext *ua, const char *cmd)
+static bool dot_bvfs_lsdirs(UAContext *ua, const char *cmd)
{
DBId_t pathid=0;
int limit=2000, offset=0;
#endif
+/*
+ * Can use an argument to filter on JobType
+ * .jobs [type=B]
+ */
static bool jobscmd(UAContext *ua, const char *cmd)
{
JOB *job;
+ uint32_t type = 0;
+ int pos;
+ if ((pos = find_arg_with_value(ua, "type")) >= 0) {
+ type = ua->argv[pos][0];
+ }
LockRes();
foreach_res(job, R_JOB) {
- if (acl_access_ok(ua, Job_ACL, job->name())) {
- ua->send_msg("%s\n", job->name());
+ if (!type || type == job->JobType) {
+ if (acl_access_ok(ua, Job_ACL, job->name())) {
+ ua->send_msg("%s\n", job->name());
+ }
}
}
UnlockRes();
return true;
}
+static bool aopcmd(UAContext *ua, const char *cmd)
+{
+ ua->send_msg("None\n");
+ ua->send_msg("Truncate\n");
+ return true;
+}
static bool typescmd(UAContext *ua, const char *cmd)
{
return true;
}
-
/*
* If this command is called, it tells the director that we
* are a program that wants a sort of API, and hence,
return true;
}
+static int one_handler(void *ctx, int num_field, char **row)
+{
+ UAContext *ua = (UAContext *)ctx;
+ ua->send_msg("%s\n", row[0]);
+ return 0;
+}
+static bool mediatypescmd(UAContext *ua, const char *cmd)
+{
+ if (!open_client_db(ua)) {
+ return true;
+ }
+ if (!db_sql_query(ua->db,
+ "SELECT DISTINCT MediaType FROM MediaType ORDER BY MediaType",
+ one_handler, (void *)ua))
+ {
+ ua->error_msg(_("List MediaType failed: ERR=%s\n"), db_strerror(ua->db));
+ }
+ return true;
+}
+
+static bool mediacmd(UAContext *ua, const char *cmd)
+{
+ if (!open_client_db(ua)) {
+ return true;
+ }
+ if (!db_sql_query(ua->db,
+ "SELECT DISTINCT Media.VolumeName FROM Media ORDER BY VolumeName",
+ one_handler, (void *)ua))
+ {
+ ua->error_msg(_("List Media failed: ERR=%s\n"), db_strerror(ua->db));
+ }
+ return true;
+}
+
+static bool locationscmd(UAContext *ua, const char *cmd)
+{
+ if (!open_client_db(ua)) {
+ return true;
+ }
+ if (!db_sql_query(ua->db,
+ "SELECT DISTINCT Location FROM Location ORDER BY Location",
+ one_handler, (void *)ua))
+ {
+ ua->error_msg(_("List Location failed: ERR=%s\n"), db_strerror(ua->db));
+ }
+ return true;
+}
static bool levelscmd(UAContext *ua, const char *cmd)
{
return true;
}
+static bool volstatuscmd(UAContext *ua, const char *cmd)
+{
+ ua->send_msg("Append\n");
+ ua->send_msg("Full\n");
+ ua->send_msg("Used\n");
+ ua->send_msg("Recycle\n");
+ ua->send_msg("Purged\n");
+ ua->send_msg("Cleaning\n");
+ ua->send_msg("Error\n");
+ return true;
+}
+
/*
* Return default values for a job
*/