afs-admin-tools (3.1) unstable; urgency=medium

  * volcreate: several changes including ones suggested by Claude Code:
    - Invoke vos and fs sub-commands using named options (-server,
      -partition, -id, -name, -maxquota, -dir, -vol, -path, -acl,
      -force, etc.) instead of positional arguments. This fixes a
      problem where the final argument (max quota) was being
      interpreted as the volumen name.
    - Add run_command() helper built on IPC::Run that captures stdout,
      stderr, and the exit code. Route every external command (vos
      create/backup/dump/restore/addsite/release/partinfo, fs
      mkmount/setacl, and loadmtpt) through it. The captured stderr is
      included in error messages when a command fails.
    - Remove the custom system() override and its "use subs
      qw(system)" declaration; $JUSTPRINT (dry-run) handling now lives
      in run_command().
    - Switch command-line parsing from Getopt::Long to
      Getopt::Long::Descriptive so a usage summary can be generated
      automatically. -h/--help now prints the summary; a new
      -m/--manual option prints the full manual (this is what -h used
      to do).
    - Fix a latent bug where $VOS was being assigned the
      scalar-context result of grep { -x $_ } ... (i.e. a count of
      matching paths) rather than the first executable path. Use
      List::Util::first instead.
    - Numerous perlcritic cleanups.
    - Add -s/--servers option to override $SERVERS from the command
      line, useful when operating on a non-default cell whose servers
      file lives at a different path.
    - When --cell is given, derive $VOLCREATE_MOUNT_PREFIX as
      "/afs/.<cell>/" automatically, replacing any value set by the
      configuration file.
  * volnuke: several changes including ones suggested by Claude Code:
    - Rewrite the volinfo() sub to parse the "vos examine -format"
      key/value output instead of the human-readable output. Extracts
      diskused as size, walks site_count/site_server_N/site_partition_N/
      site_type_N to populate rwserver, rwpart, ro, and sites, and
      requires the volume type to be RW.
    - For replicated volumes, run a second "vos examine
      <volume>.readonly -format" and compare updateDate values between
      the RW and RO clones to set the unreleased flag; use dayUse for
      accesses.
    - Fix a partial rename where $volume1 in the caller had been
      left as $volume in several places, causing a compilation error
      under "use strict".
    - Fix a small assortment of syntax errors introduced by an earlier
      abandoned refactor: an unbalanced parenthesis in a regex, a
      missing comma in an argument list, an undeclared $cmd_fmted
      variable, and a C-style "if $cond {" (which Perl requires to be
      written "if ($cond) {").
    - Query each RO replica individually with "vos listvol -format"
      instead of a single aggregate "vos examine <volume>.readonly".
      The single-call approach silently kept only the last site's
      dayUse and updateDate, so per-site access warnings and the
      unreleased flag could miss stale or accessed replicas.  This
      restores the per-site semantics of the pre-3.1 (human-output)
      code path while keeping the structured -format parser.
    - Add -V/--verbose option that emits progress messages as the tool
      examines the volume, queries each replica, removes each site,
      and cleans up.
    - Promote "uninitialized" warnings to fatal errors.  A stray undef
      in a printed size or hostname could yield a confirmation prompt
      that looks reasonable but describes the wrong thing; making
      these fatal turns silent misprints into loud stops before any
      "vos remove" runs.
    - Install a SIGINT handler for the destructive phase so Ctrl-C
      between "vos remove" calls prints a warning naming the volume
      that may be partially removed and suggesting a state-check
      command, instead of exiting silently.
  * Both volcreate and volnuke:
    - Add -C/--cell option, threaded through every "vos" command via
      -cell.  Overrides both the built-in default and any $CELL set in
      the configuration file.
    - Add --config option to load an alternate configuration file,
      overriding the default /etc/afs-admin-tools/config path.
    - Change $FS and $VOS declarations from "my" to "our" so
      /etc/afs-admin-tools/config assignments actually take effect
      (previously silently ignored due to lexical scoping).
    - Add $CELL configuration variable, defaulting to ir.stanford.edu.

 -- Adam Henry Lewenberg <adamhl@stanford.edu>  Thu, 09 Jul 2026 08:00:00 -0700

afs-admin-tools (3.0) unstable; urgency=medium

  * volcreate-logs: Large changes and re-factoring. Removed mail option.
    Changed configuration file to YAML.

 -- Adam Henry Lewenberg <adamhl@stanford.edu>  Mon, 02 Mar 2026 13:39:30 -0800

afs-admin-tools (2.1) unstable; urgency=medium

  * Change package dependency to require either openafs-client or auristorfs-client.

 -- Adam Henry Lewenberg <adamhl@stanford.edu>  Fri, 30 May 2025 14:19:36 -0700

afs-admin-tools (2.0-1) unstable; urgency=low

  * Initial packaging.

 -- Russ Allbery <rra@debian.org>  Tue, 15 Jan 2013 20:53:44 -0800

