NAME

Kubernetes::REST::Deprecated - Registry of CPAN redirect stubs for the removed Kubernetes::REST v0 API

VERSION

version 1.105

DESCRIPTION

Kubernetes::REST::Deprecated is the permanent home for "tombstone" redirect stub modules: when a Kubernetes::REST class gets renamed or retired, the old module name stays indexed on PAUSE forever against the last release that shipped it -- PAUSE has no delete. Anyone still running cpanm Old::Module::Name would keep installing that stale, superseded code with no hint a replacement exists.

PAUSE indexes per module name, not per distribution: it resolves each module name to whichever shipped release -- of any distribution, including a later release of the same one -- carries the highest $VERSION for that name. Kubernetes::REST ships all of its API classes from a single distribution, so a class that is genuinely dropped orphans its name exactly the same way a cross-distribution rename would: PAUSE does not know or care that "the dist is still actively released", it only sees that no shipped release contains that module name above the version of the last one that did.

Not every internally-deprecated Kubernetes::REST class belongs here. Kubernetes::REST's 1.000 "v1 rewrite" (2026-02-13) replaced its entire old per-endpoint v0 API -- one generated Call::* class per API operation, plus a handful of v0-only helper modules -- with a single unified object-oriented API on the main Kubernetes::REST object (list, get, create, update, patch, delete, watch, ...). Rather than deleting the old classes outright, 1.000 through 1.104 kept shipping every one of them as a soft-deprecated warning stub (warn, not die) -- so as long as they kept shipping under their own name in every release, there was no PAUSE orphan and no tombstone was warranted. Only once Kubernetes::REST actually stopped shipping a class did it become a genuine tombstone candidate -- which is what the entries below are.

The Kubernetes::REST::V0Group family is deliberately NOT tombstoned here and never will be for this reason alone. V0Group and its subclasses (Kubernetes::REST::Core, ::Apps, ::Batch, etc. -- the classes behind $api->Core->ListNamespacedPod(...) style calls) look similarly "deprecated" by their ABSTRACT and POD, but unlike the classes below they are not empty warning stubs -- V0Group is a working AUTOLOAD-based compatibility shim that still translates old-style calls into real API calls, and Kubernetes::REST itself still wires up $api->Core / $api->Apps etc. as live accessors. A class that still does its job is not an orphan, no matter how its documentation reads -- confirm with grep -rn "extends 'Kubernetes::REST::V0Group'" before ever drafting a tombstone for one of these.

This distribution fixes the genuine orphan case with the standard CPAN redirect-takeover pattern: it ships a small stub package under the OLD module name, with an explicit $VERSION set strictly higher than the last CPAN release of Kubernetes-REST that shipped that name. PAUSE then indexes this distribution as canonical for the old name. The stub does nothing at runtime except die immediately on load, naming the replacement module, so cpanm Old::Module::Name (or a cpanfile pinning it) now installs a clear, actionable message instead of silently reinstalling dead code.

This dist itself (Kubernetes::REST::Deprecated, this module) has no runtime behaviour of its own -- it is a documentation landing page and the dzil main module. Each tombstone module is self-contained and carries no dependency on Kubernetes::REST core.

VERSION POLICY

Every file here -- the main module and all 1012 tombstones alike -- versions normally and uniformly with the rest of the distribution (RewriteVersion::Transitional / BumpVersionAfterRelease, no version_finder restriction in dist.ini). There is no per-tombstone hand-frozen $VERSION. The starting version, 1.105, was chosen for one reason: it is the next version after Kubernetes-REST 1.104, the last CPAN release that shipped any of these module names. Kubernetes::REST will never ship these names again (they are permanently removed, not merely between releases), and this distribution's own version only ever increases from here, so 1.105 stays ahead of that target for good without further special-casing.

If a future tombstone is ever added for a name whose last-shipped version is higher than whatever version this dist has reached by then, confirm that before releasing and bump first if needed -- an ordinary version-ordering check, not a reason to reintroduce per-file version overrides.

For the step-by-step procedure to add a new tombstone when a future rename or removal happens, see the kubernetes-rest-deprecated skill (.claude/skills/kubernetes-rest-deprecated/SKILL.md in this repo; packaged into the sharedir at build time).

CURRENT TOMBSTONES

The old per-endpoint v0 API (1012 classes)

Kubernetes::REST's 1.000 "v1 rewrite" replaced one generated Call::* class per API operation, across every API group and version, plus 10 v0-only helper modules (result/parameter translation, the old top-level group-getters), with the single unified API described above. Every one of the 1012 classes below shared the exact same shape: a 7-line stub whose only runtime effect was warn __PACKAGE__ . " is deprecated, use the new Kubernetes::REST API instead", continuously since 1.000. Kubernetes-REST 1.104 was the last CPAN release to ship them; all 1012 were then dropped from the distribution outright.

Given the scale (1012 names, most differing from their siblings only by API version/group/operation), the exhaustive canonical list is not duplicated here -- it lives in t/01-tombstones.t's @deprecated_classes array, which both the test suite and this POD's summary below are generated from. Duplicating it verbatim in prose here (unlike the much smaller lists this convention started with) would just be ~1000 lines of drift-prone text with no added value over the array. What follows is the breakdown by API version/group so an audit can sanity-check coverage without reading 1012 lines:

Call class count by apiVersion/group (Kubernetes::REST::Call::<version>::<group>::*):

  v1/Core                        240
  v1beta1/Extensions              87
  v1/Apps                         77
  v1beta2/Apps                    77
  v1beta1/Apps                    47
  v1/RbacAuthorization            41
  v1alpha1/RbacAuthorization      41
  v1beta1/RbacAuthorization       41
  (discovery -- flat under Call/)  24
  v1beta1/Policy                  24
  v1beta1/Admissionregistration   19
  v1beta1/Storage                 19
  v1/Autoscaling                  15
  v1/Batch                        15
  v1beta1/Batch                   15
  v2alpha1/Batch                  15
  v2beta1/Autoscaling             15
  v2beta2/Autoscaling             15
  v1beta1/Certificates            14
  v1/Apiregistration              13
  v1beta1/Apiextensions           13
  v1beta1/Apiregistration         13
  v1/Networking                   12
  v1alpha1/Settings               12
  v1beta1/Coordination            12
  v1beta1/Events                  12
  v1/Storage                      10
  v1alpha1/Admissionregistration  10
  v1alpha1/Auditregistration      10
  v1alpha1/Scheduling             10
  v1alpha1/Storage                10
  v1beta1/Scheduling              10
  v1/Authorization                 5
  v1beta1/Authorization            5
  v1/Authentication                2
  v1beta1/Authentication           2
                                ----
  subtotal                      1002

Plus 10 v0-only helper modules (no per-operation Call:: shape):

  Kubernetes::REST::Apis            -- old top-level API-group discovery
  Kubernetes::REST::Auditregistration -- old Auditregistration group getter
                                        (API group itself was removed from
                                        Kubernetes, not just from this dist)
  Kubernetes::REST::CallContext     -- old per-call context object
  Kubernetes::REST::Extensions      -- old Extensions group getter (API
                                        group itself removed from Kubernetes)
  Kubernetes::REST::ListToRequest   -- old list-to-HTTP-request translator
  Kubernetes::REST::Logs            -- old top-level log-call helper
  Kubernetes::REST::Result2Hash     -- old response-to-hashref translator
                                        (new API returns typed IO::K8s
                                        objects directly)
  Kubernetes::REST::Result2Object   -- old response-to-object translator
                                        (superseded the same way)
  Kubernetes::REST::Settings        -- old Settings group getter
  Kubernetes::REST::Version         -- old cluster-version helper
                                        (superseded by
                                        $api->cluster_version)

All 1012 redirect to the same successor: the unified API on Kubernetes::REST itself.

CONSIDERED BUT NOT TOMBSTONED

The Kubernetes::REST::V0Group family -- V0Group itself plus 17 subclasses (Core, Apps, Batch, Networking, RbacAuthorization, Admissionregistration, Apiextensions, Apiregistration, Authentication, Authorization, Autoscaling, Certificates, Coordination, Events, Policy, Scheduling, Storage) -- carries DEPRECATED in its ABSTRACT and POD, same as the 1012 above, but is a working AUTOLOAD-based compatibility shim, not an empty warning stub: it still translates old-style calls (e.g. $api->Core->ListNamespacedPod(...)) into real calls against the new API, and Kubernetes::REST still wires up $api->Core / $api->Apps etc. as live accessors calling into it. No tombstone is warranted for any of these 18 classes -- they still ship, under their own name, and still work. Recorded here so a future audit doesn't rediscover and mistakenly tombstone a class that merely reads as deprecated in its documentation.

SEE ALSO

Kubernetes::REST, Kubernetes::REST::V0Group

SUPPORT

Issues

Please report bugs and feature requests on GitHub at https://github.com/Getty/kubernetes-rest-deprecated/issues.

IRC

Join #kubernetes on irc.perl.org or message Getty directly.

CONTRIBUTING

Contributions are welcome! Please fork the repository and submit a pull request.

AUTHORS

  • Torsten Raudssus <torsten@raudssus.de>

  • Jose Luis Martinez Torres <jlmartin@cpan.org>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2019-2026 by Jose Luis Martinez Torres <jlmartin@cpan.org>.

This is free software, licensed under:

The Apache License, Version 2.0, January 2004