[RFE] Deprecate classic drivers

Bug #1690185 reported by Dmitry Tantsur
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
tripleo
Fix Released
High
Dmitry Tantsur

Bug Description

This RFE proposed deprecation and eventual removal of the classic drivers (both drivers themselves and their support).

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to ironic-specs (master)

Fix proposed to branch: master
Review: https://review.openstack.org/464046

Changed in ironic:
status: Confirmed → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to ironic-specs (master)

Reviewed: https://review.openstack.org/464046
Committed: https://git.openstack.org/cgit/openstack/ironic-specs/commit/?id=2db98e494e3fe8b28852c10aab593c4934d7206b
Submitter: Jenkins
Branch: master

commit 2db98e494e3fe8b28852c10aab593c4934d7206b
Author: Dmitry Tantsur <email address hidden>
Date: Thu May 11 18:58:31 2017 +0200

    Define the future of the classic drivers

    This is a follow up to the driver composition reform.

    Change-Id: I1111742cee554e8f3b26e85dddfe81a1b563ca22
    Partial-Bug: #1690185
    Related-Bug: #1524745

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to ironic (master)

Fix proposed to branch: master
Review: https://review.openstack.org/486696

Revision history for this message
Dmitry Tantsur (divius) wrote :

Added TripleO, as it's going to be affected by the deprecation, and will need switching.

Changed in tripleo:
status: New → Triaged
assignee: nobody → Dmitry Tantsur (divius)
importance: Undecided → High
milestone: none → queens-1
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to ironic (master)

Reviewed: https://review.openstack.org/486696
Committed: https://git.openstack.org/cgit/openstack/ironic/commit/?id=d39f9af92b635e5aa0eec8ae9c826023ab6ec38a
Submitter: Jenkins
Branch: master

commit d39f9af92b635e5aa0eec8ae9c826023ab6ec38a
Author: Dmitry Tantsur <email address hidden>
Date: Mon Jul 24 18:56:24 2017 +0200

    Guide on upgrading to hardware types

    Only covers the generic cases for now. More drivers should be added later.

    Related-Bug: #1524745
    Partial-Bug: #1690185
    Change-Id: Ic63c7ec7068db84931ac4ede712691327547810e

Dmitry Tantsur (divius)
Changed in tripleo:
milestone: queens-1 → queens-2
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to tripleo-common (master)

Fix proposed to branch: master
Review: https://review.openstack.org/512707

Changed in tripleo:
status: Triaged → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Change abandoned on tripleo-common (master)

Change abandoned by Emilien Macchi (<email address hidden>) on branch: master
Review: https://review.openstack.org/512707
Reason: Clearing the gate now, see context on http://lists.openstack.org/pipermail/openstack-dev/2017-October/123979.html
I'll restore the patch once we're green. Apologizes in advance and don't worry for your patch, it will merge asap.

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to tripleo-common (master)

Reviewed: https://review.openstack.org/512707
Committed: https://git.openstack.org/cgit/openstack/tripleo-common/commit/?id=73b6ede2bb706c41c331a4fd95399ca0b1e2047d
Submitter: Zuul
Branch: master

commit 73b6ede2bb706c41c331a4fd95399ca0b1e2047d
Author: Dmitry Tantsur <email address hidden>
Date: Tue Oct 17 18:40:30 2017 +0200

    Update list of supported drivers, hardware types and their properties

    * Add support for ilo, idrac, irmc and cisco-ucs-managed hardware types,
    * Remove support for already removed SSH drivers
    * Add pm_port support for ilo drivers
    * Remove deprecated parameters for irmc and cisco-ucs-managed

    Change-Id: Ie67f13db1f69888bac692a4e013224377740b969
    Partial-Bug: #1690185

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to tripleo-heat-templates (master)

Fix proposed to branch: master
Review: https://review.openstack.org/523093

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to instack-undercloud (master)

Reviewed: https://review.openstack.org/519300
Committed: https://git.openstack.org/cgit/openstack/instack-undercloud/commit/?id=58701fe014bf118ee0bbed5272c1a08e3f594ae0
Submitter: Zuul
Branch: master

commit 58701fe014bf118ee0bbed5272c1a08e3f594ae0
Author: Dmitry Tantsur <email address hidden>
Date: Fri Nov 3 14:27:36 2017 +0100

    Support more hardware types and deprecate enabled_drivers

    Ironic is going to deprecate classic drivers in Queens and remove them in Rocky.
    This change enables hardware types ilo and idrac that correspond to already
    enabled classic drivers pxe_ilo and pxe_drac. It also adds support for other
    common hardware types, but does not enable them by default.

    The enabled_drivers option is deprecated.

    Partial-Bug: #1690185
    Change-Id: Ib505f3512627c49d17d6adcdc2622bdfe580a84f

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to tripleo-heat-templates (master)

Reviewed: https://review.openstack.org/523093
Committed: https://git.openstack.org/cgit/openstack/tripleo-heat-templates/commit/?id=ce48b4c85c14ae5da56720c42d24f99dbaa84397
Submitter: Zuul
Branch: master

commit ce48b4c85c14ae5da56720c42d24f99dbaa84397
Author: Dmitry Tantsur <email address hidden>
Date: Mon Nov 27 12:35:30 2017 +0100

    undercloud: support the standard set of hardware types and interface

    This change makes the THT-based undercloud use the same set of hardware
    types and hardware interfaces as the instack-based by default.

    IronicEnabled***Interfaces options are exposed for all interfaces,
    except for work-in-progress rescue interface.

    Change-Id: I97ce4eec9c8765480a5fd2e51ebd25e438f52754
    Partial-Bug: #1690185

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix proposed to tripleo-docs (master)

Related fix proposed to branch: master
Review: https://review.openstack.org/524674

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix merged to tripleo-docs (master)

Reviewed: https://review.openstack.org/524674
Committed: https://git.openstack.org/cgit/openstack/tripleo-docs/commit/?id=7299c84eeb4aa6f727b214c5dec41174430ff3fb
Submitter: Zuul
Branch: master

commit 7299c84eeb4aa6f727b214c5dec41174430ff3fb
Author: Dmitry Tantsur <email address hidden>
Date: Fri Dec 1 17:33:11 2017 +0100

    Update the driver documentation for the undercloud

    This change updates the wording to use "hardware types", which is our
    primary notion right now. A difference between hardware types and classic
    drivers is mentioned, and a few helpful links are added.

    Add the full list of (techinically) supported drivers, and link to their
    documentation pages. Stop "recommeding" vendor drivers, as they often have
    problems that the IPMI driver does not have, and make it clear that these
    drivers are not supported by the TripleO team (incl. its ironic part).

    Change-Id: I8b2b307c9dd0d3d53e2ab791184128628c72c43c
    Related-Bug: #1690185

Changed in tripleo:
milestone: queens-2 → queens-3
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to ironic (master)

Fix proposed to branch: master
Review: https://review.openstack.org/528337

Dmitry Tantsur (divius)
Changed in tripleo:
milestone: queens-3 → rocky-2
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to ironic (master)

Reviewed: https://review.openstack.org/528337
Committed: https://git.openstack.org/cgit/openstack/ironic/commit/?id=8a87fc6fcb8c6ffc0b07f59c3cb27b738473cfa5
Submitter: Zuul
Branch: master

commit 8a87fc6fcb8c6ffc0b07f59c3cb27b738473cfa5
Author: Dmitry Tantsur <email address hidden>
Date: Fri Dec 15 17:46:46 2017 +0100

    Switch non-vendor parts admin guide to hardware types

    This change makes the admin guide use hardware types for examples and
    explanations. The in-band inspection document was updated with recent
    changes.

    Vendor driver documentation requires more careful review, and ideally
    should be updated by vendor representatives.

    Change-Id: I98a2eb905e352502a7f9f4cb1804c9d64489ec47
    Partial-Bug: #1690185

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to ironic (master)

Fix proposed to branch: master
Review: https://review.openstack.org/534373

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix proposed to instack-undercloud (master)

Related fix proposed to branch: master
Review: https://review.openstack.org/534842

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix proposed to ironic (master)

Related fix proposed to branch: master
Review: https://review.openstack.org/535772

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix proposed to ironic-specs (master)

Related fix proposed to branch: master
Review: https://review.openstack.org/536298

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to ironic (master)

Fix proposed to branch: master
Review: https://review.openstack.org/536875

Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

Fix proposed to branch: master
Review: https://review.openstack.org/536928

Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

Fix proposed to branch: master
Review: https://review.openstack.org/537959

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix merged to ironic (master)

Reviewed: https://review.openstack.org/535772
Committed: https://git.openstack.org/cgit/openstack/ironic/commit/?id=d8f10c01ae4105a88e8caf58e89041d4c81f1670
Submitter: Zuul
Branch: master

commit d8f10c01ae4105a88e8caf58e89041d4c81f1670
Author: Dmitry Tantsur <email address hidden>
Date: Fri Jan 19 12:59:44 2018 +0100

    Allow data migrations to accept options

    This allows migration to be tuned to a specific deployment. For example,
    when we will migrate nodes to hardware types, an option will be used
    to specify what to do with missing interfaces.

    Change-Id: Ie5045b20b7420fc9b5d864bfb18258a4d8b93334
    Related-Bug: #1690185

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to ironic (master)

Reviewed: https://review.openstack.org/534373
Committed: https://git.openstack.org/cgit/openstack/ironic/commit/?id=cc6f7bc73e2b1c9dad9624f3bc9c4c6ac3d103de
Submitter: Zuul
Branch: master

commit cc6f7bc73e2b1c9dad9624f3bc9c4c6ac3d103de
Author: Dmitry Tantsur <email address hidden>
Date: Tue Jan 16 17:27:17 2018 +0100

    Automatically migrate nodes to hardware types

    This change adds a new data migration: migrate_to_hardware_types.
    It works by walking through known classic drivers, detecting matching
    hardware types and interfaces and updates nodes accordingly.

    Nodes that cannot be updated (e.g. matching hardware type is not
    enabled) are skipped. A new migration option reset_unsupported_interfaces
    can be set to True to allow resetting optional interfaces to their
    no-op versions.

    The example implementation are provided for the community supported
    IPMI and SNMP drivers, as well as for fake drivers based on them.

    Change-Id: I732b44f2ab1ef73f56b352415ffd9cdd8a0e232b
    Partial-Bug: #1690185

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix merged to ironic-specs (master)

Reviewed: https://review.openstack.org/536298
Committed: https://git.openstack.org/cgit/openstack/ironic-specs/commit/?id=08b5820be460dd0d8de12126eeb6c04dcc6a0eed
Submitter: Zuul
Branch: master

commit 08b5820be460dd0d8de12126eeb6c04dcc6a0eed
Author: Dmitry Tantsur <email address hidden>
Date: Mon Jan 22 11:35:11 2018 +0100

    Future of classic drivers: update the migration proposal

    As I started working on the migration implementation, it became
    apparent that the current proposal is not the best. This patch
    makes the following changes:

    1. Do not calculate migration per node, but rather per driver. Doing
       it per node is not required for the current classic drivers.
       It complicates the database code and makes it potentially less
       efficient, because we need to fetch and update every node
       separately.

    2. Return hardware type and interfaces separately from to_hardware_types.
       Also return interfaces without _interface suffix. This simplifies
       additional checks in the migration code.

    3. Add support for options in migrations, and add an option to reset
       unsupported interfaces to no-<interface>. This is needed to make
       this migration more usable. For example, for ``pxe_ipmitool``
       to be migrated under the current proposal, a deployment must have
       ``agent`` RAID and ``shellinabox`` console enabled, even if it
       does not use and/or does not support them. The new options will
       allow such deployments to have unsupported interfaces reset.

    Change-Id: I194be98bdd1f307ce6b9054a0037788f81cb0d23
    Related-Bug: #1690185

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to ironic (master)

Reviewed: https://review.openstack.org/536875
Committed: https://git.openstack.org/cgit/openstack/ironic/commit/?id=fa850c80cbc701f1252dabcd3f514bca0148f54d
Submitter: Zuul
Branch: master

commit fa850c80cbc701f1252dabcd3f514bca0148f54d
Author: Dmitry Tantsur <email address hidden>
Date: Tue Jan 23 17:00:17 2018 +0100

    Switch the CI to hardware types

    Note that the job names are not changed to reduce the diff of this
    patch. They will be renamed in later changes.

    For the direct deploy, copy Swift temporary URL configuration from
    devstack-gate (it hardcoded agent_* there).

    Also clean up no-op conditions on drivers left from the times when
    the job definitions were parametrized.

    Change-Id: Ib0297f8936bba9449a02fb1a878981ab55687ef9
    Partial-Bug: #1690185

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix proposed to ironic (master)

Related fix proposed to branch: master
Review: https://review.openstack.org/539582

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to ironic (master)

Fix proposed to branch: master
Review: https://review.openstack.org/539589

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix merged to ironic (master)

Reviewed: https://review.openstack.org/539582
Committed: https://git.openstack.org/cgit/openstack/ironic/commit/?id=8f464b909a1a6fa2ec5b62fee0fd83e1bcd240da
Submitter: Zuul
Branch: master

commit 8f464b909a1a6fa2ec5b62fee0fd83e1bcd240da
Author: Dmitry Tantsur <email address hidden>
Date: Wed Jan 31 16:49:56 2018 +0100

    Add missing ilo vendor to the ilo hardware types

    I'm not sure why it was missed initially. But if we don't have it,
    the automatic migration to hardware types will reset the vendor
    interface to no-vendor, which may look like a regression to users.

    Change-Id: I6da6aa8138d7f0cbf225c15c4137edeec2c33d49
    Related-Bug: #1690185

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to ironic (master)

Reviewed: https://review.openstack.org/536928
Committed: https://git.openstack.org/cgit/openstack/ironic/commit/?id=02378fdcde330333af851bdf8c42813f5a216c1d
Submitter: Zuul
Branch: master

commit 02378fdcde330333af851bdf8c42813f5a216c1d
Author: Dmitry Tantsur <email address hidden>
Date: Tue Jan 23 19:37:15 2018 +0100

    Deprecate classic drivers

    Also address small issues in the release note for the migration
    to hardware types.

    Change-Id: I32998c5508e01882714a76751482a916d066f938
    Partial-Bug: #1690185

Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

Reviewed: https://review.openstack.org/539589
Committed: https://git.openstack.org/cgit/openstack/ironic/commit/?id=d1062cfbdd3fdacc4e4bd807f1508f90557bef65
Submitter: Zuul
Branch: master

commit d1062cfbdd3fdacc4e4bd807f1508f90557bef65
Author: Dmitry Tantsur <email address hidden>
Date: Wed Jan 31 16:40:23 2018 +0100

    Migrate the remaining classic drivers to hardware types

    I've tried my best to provide a correct matching for these, but
    there are two exceptions:

    * fake_drac uses iscsi deploy with None boot, which cannot work,
      so changing both to fake
    * some fake drivers are migrated to the 'fake' power interface,
      which is changed to include soft power as well.

    The latter means that all fake classic drivers now support fake
    soft power actions, while previously only fake_soft_power did.
    Now fake_soft_power is identical to fake and is left for backward
    compatibility

    Also wrote more tests to check correctness of this migration.

    Change-Id: I00c9c6ed698b10f035e65428e1a20d733c7e544a
    Partial-Bug: #1690185

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix proposed to ironic (master)

Related fix proposed to branch: master
Review: https://review.openstack.org/541171

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix merged to ironic (master)

Reviewed: https://review.openstack.org/541171
Committed: https://git.openstack.org/cgit/openstack/ironic/commit/?id=ffdfa5eb53fbe18dd133d864eb9b10ff12741f11
Submitter: Zuul
Branch: master

commit ffdfa5eb53fbe18dd133d864eb9b10ff12741f11
Author: Hironori Shiina <email address hidden>
Date: Tue Feb 6 16:47:26 2018 +0900

    Update iRMC document for classic driver deprecation

    As a part of deprecating classic drivers, this patch updates the
    documentation of iRMC driver. We still mention the classic drivers with
    warning. The description for the classic drivers will be removed in
    Rocky.

    Change-Id: I6331072b44bf33c6bfa75703bf2ab46dac96a5e7
    Related-Bug: #1690185

Ruby Loo (rloo)
tags: added: rfe-approved
removed: needs-spec rfe
Changed in ironic:
assignee: Dmitry Tantsur (divius) → Julia Kreger (juliaashleykreger)
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to ironic (stable/queens)

Fix proposed to branch: stable/queens
Review: https://review.openstack.org/544726

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to ironic (master)

Reviewed: https://review.openstack.org/537959
Committed: https://git.openstack.org/cgit/openstack/ironic/commit/?id=152f45c993b0a157b4ddb36b2966178952c43311
Submitter: Zuul
Branch: master

commit 152f45c993b0a157b4ddb36b2966178952c43311
Author: Dmitry Tantsur <email address hidden>
Date: Thu Jan 25 10:08:07 2018 +0100

    Switch contributor documentation to hardware types

    Also write a bit more meaningful documentation on writing drivers with
    helpful links to move forward.

    Change-Id: Id76705efabaf93a76a1370bc2e1d998622e82ac9
    Partial-Bug: #1690185

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to ironic (stable/queens)

Reviewed: https://review.openstack.org/544726
Committed: https://git.openstack.org/cgit/openstack/ironic/commit/?id=f15aaec4b236315de16eb3a9f6673d63627eefc0
Submitter: Zuul
Branch: stable/queens

commit f15aaec4b236315de16eb3a9f6673d63627eefc0
Author: Dmitry Tantsur <email address hidden>
Date: Thu Jan 25 10:08:07 2018 +0100

    Switch contributor documentation to hardware types

    Also write a bit more meaningful documentation on writing drivers with
    helpful links to move forward.

    Change-Id: Id76705efabaf93a76a1370bc2e1d998622e82ac9
    Partial-Bug: #1690185
    (cherry picked from commit 152f45c993b0a157b4ddb36b2966178952c43311)

tags: added: in-stable-queens
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix proposed to instack-undercloud (stable/queens)

Related fix proposed to branch: stable/queens
Review: https://review.openstack.org/549991

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix proposed to tripleo-heat-templates (master)

Related fix proposed to branch: master
Review: https://review.openstack.org/549992

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix merged to instack-undercloud (master)

Reviewed: https://review.openstack.org/534842
Committed: https://git.openstack.org/cgit/openstack/instack-undercloud/commit/?id=3756d3d60f50c8f84639bea0410c014e5c1cb307
Submitter: Zuul
Branch: master

commit 3756d3d60f50c8f84639bea0410c014e5c1cb307
Author: Dmitry Tantsur <email address hidden>
Date: Wed Jan 17 17:50:13 2018 +0100

    Enable automatic migration for classic drivers to hardware types

    The new online data migration in ironic will migrate nodes from classic drivers
    to hardware types. However, it will skip nodes with one or more target
    hardware interfaces not enabled. In the undercloud we don't enable certain
    implementations that we do not support (e.g. "agent" RAID and
    "ipmitool-shellinabox" console for the "ipmi" hardware type).
    To allow the migration to work, set a special option to reset these
    interfaces to their no-op equivalents ("no-raid", "no-console", etc).

    Change-Id: Iba1e82d47c0e22613b06b99f0a9d0f4b3082bbe7
    Related-Bug: #1690185

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix merged to instack-undercloud (stable/queens)

Reviewed: https://review.openstack.org/549991
Committed: https://git.openstack.org/cgit/openstack/instack-undercloud/commit/?id=5edfd64edea87f5fb40c799b8ebd0e92004bcad3
Submitter: Zuul
Branch: stable/queens

commit 5edfd64edea87f5fb40c799b8ebd0e92004bcad3
Author: Dmitry Tantsur <email address hidden>
Date: Wed Jan 17 17:50:13 2018 +0100

    Enable automatic migration for classic drivers to hardware types

    The new online data migration in ironic will migrate nodes from classic drivers
    to hardware types. However, it will skip nodes with one or more target
    hardware interfaces not enabled. In the undercloud we don't enable certain
    implementations that we do not support (e.g. "agent" RAID and
    "ipmitool-shellinabox" console for the "ipmi" hardware type).
    To allow the migration to work, set a special option to reset these
    interfaces to their no-op equivalents ("no-raid", "no-console", etc).

    Change-Id: Iba1e82d47c0e22613b06b99f0a9d0f4b3082bbe7
    Related-Bug: #1690185
    (cherry picked from commit 3756d3d60f50c8f84639bea0410c014e5c1cb307)

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Change abandoned on tripleo-heat-templates (master)

Change abandoned by Dmitry Tantsur (<email address hidden>) on branch: master
Review: https://review.openstack.org/549992
Reason: The classic drivers will be removed in Rocky.

Changed in tripleo:
milestone: rocky-2 → rocky-3
Changed in tripleo:
milestone: rocky-3 → rocky-rc1
Changed in tripleo:
milestone: rocky-rc1 → stein-1
Revision history for this message
Julia Kreger (juliaashleykreger) wrote :

Greetings. I'm a little confused and worried as to the change in milestone, given ironic has not had any classic driver support in our released 11.0 and 11.1 versions.

Changed in tripleo:
milestone: stein-1 → stein-2
Revision history for this message
Julia Kreger (juliaashleykreger) wrote :

Since I can't edit the bug tagging with ironic, I'm going to delete the tag. I believe this work is done in ironic. It should also be done in TripleO, but I'll leave that to those managing bugs.

no longer affects: ironic
Changed in tripleo:
milestone: stein-2 → stein-3
Revision history for this message
Juan Antonio Osorio Robles (juan-osorio-robles) wrote :

Thanks for the update Julia!

Changed in tripleo:
status: In Progress → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.