[metadata]
name = ironic
summary = OpenStack Bare Metal Provisioning
description_file =
    README.rst
author = OpenStack
author_email = openstack-discuss@lists.openstack.org
home_page = https://docs.openstack.org/ironic/latest/
python_requires = >=3.8
classifier =
    Environment :: OpenStack
    Intended Audience :: Information Technology
    Intended Audience :: System Administrators
    License :: OSI Approved :: Apache Software License
    Operating System :: POSIX :: Linux
    Programming Language :: Python
    Programming Language :: Python :: 3 :: Only
    Programming Language :: Python :: 3
    Programming Language :: Python :: 3.8
    Programming Language :: Python :: 3.9
    Programming Language :: Python :: 3.10
    Programming Language :: Python :: 3.11

[files]
# TODO(dtantsur): remove rootwrap files after the packagers drop them.
data_files =
    etc/ironic =
        etc/ironic/rootwrap.conf
    etc/ironic/rootwrap.d = etc/ironic/rootwrap.d/*
packages =
    ironic

[entry_points]
oslo.config.opts =
    ironic = ironic.conf.opts:list_opts

oslo.config.opts.defaults =
    ironic = ironic.conf.opts:update_opt_defaults

oslo.policy.enforcer =
    ironic = ironic.common.policy:get_oslo_policy_enforcer

oslo.policy.policies =
    ironic.api = ironic.common.policy:list_policies

console_scripts =
    ironic = ironic.cmd.singleprocess:main
    ironic-api = ironic.cmd.api:main
    ironic-dbsync = ironic.cmd.dbsync:main
    ironic-conductor = ironic.cmd.conductor:main
    ironic-rootwrap = oslo_rootwrap.cmd:main
    ironic-status = ironic.cmd.status:main
    ironic-pxe-filter = ironic.cmd.pxe_filter:main

wsgi_scripts =
    ironic-api-wsgi = ironic.api.wsgi:initialize_wsgi_app

ironic.dhcp =
    dnsmasq = ironic.dhcp.dnsmasq:DnsmasqDHCPApi
    neutron = ironic.dhcp.neutron:NeutronDHCPApi
    none = ironic.dhcp.none:NoneDHCPApi

ironic.hardware.interfaces.bios =
    fake = ironic.drivers.modules.fake:FakeBIOS
    idrac-redfish = ironic.drivers.modules.drac.bios:DracRedfishBIOS
    ilo = ironic.drivers.modules.ilo.bios:IloBIOS
    irmc = ironic.drivers.modules.irmc.bios:IRMCBIOS
    no-bios = ironic.drivers.modules.noop:NoBIOS
    redfish = ironic.drivers.modules.redfish.bios:RedfishBIOS

ironic.hardware.interfaces.boot =
    fake = ironic.drivers.modules.fake:FakeBoot
    idrac-redfish-virtual-media = ironic.drivers.modules.drac.boot:DracRedfishVirtualMediaBoot
    ilo-pxe = ironic.drivers.modules.ilo.boot:IloPXEBoot
    ilo-ipxe = ironic.drivers.modules.ilo.boot:IloiPXEBoot
    ilo-virtual-media = ironic.drivers.modules.ilo.boot:IloVirtualMediaBoot
    ilo-uefi-https = ironic.drivers.modules.ilo.boot:IloUefiHttpsBoot
    ipxe = ironic.drivers.modules.ipxe:iPXEBoot
    irmc-pxe = ironic.drivers.modules.irmc.boot:IRMCPXEBoot
    irmc-virtual-media = ironic.drivers.modules.irmc.boot:IRMCVirtualMediaBoot
    pxe = ironic.drivers.modules.pxe:PXEBoot
    redfish-virtual-media = ironic.drivers.modules.redfish.boot:RedfishVirtualMediaBoot
    redfish-https = ironic.drivers.modules.redfish.boot:RedfishHttpsBoot
    http = ironic.drivers.modules.pxe:HttpBoot
    http-ipxe = ironic.drivers.modules.ipxe:iPXEHttpBoot

ironic.hardware.interfaces.console =
    fake = ironic.drivers.modules.fake:FakeConsole
    ilo = ironic.drivers.modules.ilo.console:IloConsoleInterface
    ipmitool-shellinabox = ironic.drivers.modules.ipmitool:IPMIShellinaboxConsole
    ipmitool-socat = ironic.drivers.modules.ipmitool:IPMISocatConsole
    no-console = ironic.drivers.modules.noop:NoConsole

ironic.hardware.interfaces.deploy =
    anaconda = ironic.drivers.modules.pxe:PXEAnacondaDeploy
    ansible = ironic.drivers.modules.ansible.deploy:AnsibleDeploy
    custom-agent = ironic.drivers.modules.agent:CustomAgentDeploy
    direct = ironic.drivers.modules.agent:AgentDeploy
    fake = ironic.drivers.modules.fake:FakeDeploy
    ramdisk = ironic.drivers.modules.ramdisk:RamdiskDeploy

ironic.hardware.interfaces.firmware =
    fake = ironic.drivers.modules.fake:FakeFirmware
    no-firmware = ironic.drivers.modules.noop:NoFirmware
    redfish = ironic.drivers.modules.redfish.firmware:RedfishFirmware

ironic.hardware.interfaces.inspect =
    agent = ironic.drivers.modules.inspector:AgentInspect
    fake = ironic.drivers.modules.fake:FakeInspect
    idrac-redfish = ironic.drivers.modules.drac.inspect:DracRedfishInspect
    ilo = ironic.drivers.modules.ilo.inspect:IloInspect
    inspector = ironic.drivers.modules.inspector:Inspector
    irmc = ironic.drivers.modules.irmc.inspect:IRMCInspect
    no-inspect = ironic.drivers.modules.noop:NoInspect
    redfish = ironic.drivers.modules.redfish.inspect:RedfishInspect

ironic.hardware.interfaces.management =
    fake = ironic.drivers.modules.fake:FakeManagement
    idrac-redfish = ironic.drivers.modules.drac.management:DracRedfishManagement
    ilo = ironic.drivers.modules.ilo.management:IloManagement
    ilo5 = ironic.drivers.modules.ilo.management:Ilo5Management
    intel-ipmitool = ironic.drivers.modules.intel_ipmi.management:IntelIPMIManagement
    ipmitool = ironic.drivers.modules.ipmitool:IPMIManagement
    irmc = ironic.drivers.modules.irmc.management:IRMCManagement
    noop = ironic.drivers.modules.noop_mgmt:NoopManagement
    redfish = ironic.drivers.modules.redfish.management:RedfishManagement

ironic.hardware.interfaces.network =
    flat = ironic.drivers.modules.network.flat:FlatNetwork
    neutron = ironic.drivers.modules.network.neutron:NeutronNetwork
    noop = ironic.drivers.modules.network.noop:NoopNetwork

ironic.hardware.interfaces.power =
    agent = ironic.drivers.modules.agent_power:AgentPower
    fake = ironic.drivers.modules.fake:FakePower
    idrac-redfish = ironic.drivers.modules.drac.power:DracRedfishPower
    ilo = ironic.drivers.modules.ilo.power:IloPower
    ipmitool = ironic.drivers.modules.ipmitool:IPMIPower
    irmc = ironic.drivers.modules.irmc.power:IRMCPower
    redfish = ironic.drivers.modules.redfish.power:RedfishPower
    snmp = ironic.drivers.modules.snmp:SNMPPower

ironic.hardware.interfaces.raid =
    agent = ironic.drivers.modules.agent:AgentRAID
    fake = ironic.drivers.modules.fake:FakeRAID
    idrac-redfish = ironic.drivers.modules.drac.raid:DracRedfishRAID
    ilo5 = ironic.drivers.modules.ilo.raid:Ilo5RAID
    irmc = ironic.drivers.modules.irmc.raid:IRMCRAID
    no-raid = ironic.drivers.modules.noop:NoRAID
    redfish = ironic.drivers.modules.redfish.raid:RedfishRAID

ironic.hardware.interfaces.rescue =
    agent = ironic.drivers.modules.agent:AgentRescue
    fake = ironic.drivers.modules.fake:FakeRescue
    no-rescue = ironic.drivers.modules.noop:NoRescue

ironic.hardware.interfaces.storage =
    fake = ironic.drivers.modules.fake:FakeStorage
    noop = ironic.drivers.modules.storage.noop:NoopStorage
    cinder = ironic.drivers.modules.storage.cinder:CinderStorage
    external = ironic.drivers.modules.storage.external:ExternalStorage

ironic.hardware.interfaces.vendor =
    fake = ironic.drivers.modules.fake:FakeVendorB
    idrac-redfish = ironic.drivers.modules.drac.vendor_passthru:DracRedfishVendorPassthru
    ilo = ironic.drivers.modules.ilo.vendor:VendorPassthru
    irmc = ironic.drivers.modules.irmc.vendor:IRMCVendorPassthru
    ipmitool = ironic.drivers.modules.ipmitool:VendorPassthru
    no-vendor = ironic.drivers.modules.noop:NoVendor
    redfish = ironic.drivers.modules.redfish.vendor:RedfishVendorPassthru

ironic.hardware.types =
    fake-hardware = ironic.drivers.fake_hardware:FakeHardware
    idrac = ironic.drivers.drac:IDRACHardware
    ilo = ironic.drivers.ilo:IloHardware
    ilo5 = ironic.drivers.ilo:Ilo5Hardware
    intel-ipmi = ironic.drivers.intel_ipmi:IntelIPMIHardware
    ipmi = ironic.drivers.ipmi:IPMIHardware
    irmc = ironic.drivers.irmc:IRMCHardware
    manual-management = ironic.drivers.generic:ManualManagementHardware
    redfish = ironic.drivers.redfish:RedfishHardware
    snmp = ironic.drivers.snmp:SNMPHardware

ironic.database.migration_backend =
    sqlalchemy = ironic.db.sqlalchemy.migration

ironic.inspection.hooks =
    ramdisk-error = ironic.drivers.modules.inspector.hooks.ramdisk_error:RamdiskErrorHook
    validate-interfaces = ironic.drivers.modules.inspector.hooks.validate_interfaces:ValidateInterfacesHook
    ports = ironic.drivers.modules.inspector.hooks.ports:PortsHook
    architecture = ironic.drivers.modules.inspector.hooks.architecture:ArchitectureHook
    accelerators =  ironic.drivers.modules.inspector.hooks.accelerators:AcceleratorsHook
    boot-mode = ironic.drivers.modules.inspector.hooks.boot_mode:BootModeHook
    cpu-capabilities = ironic.drivers.modules.inspector.hooks.cpu_capabilities:CPUCapabilitiesHook
    extra-hardware = ironic.drivers.modules.inspector.hooks.extra_hardware:ExtraHardwareHook
    memory = ironic.drivers.modules.inspector.hooks.memory:MemoryHook
    pci-devices = ironic.drivers.modules.inspector.hooks.pci_devices:PciDevicesHook
    physical-network = ironic.drivers.modules.inspector.hooks.physical_network:PhysicalNetworkHook
    raid-device = ironic.drivers.modules.inspector.hooks.raid_device:RaidDeviceHook
    root-device = ironic.drivers.modules.inspector.hooks.root_device:RootDeviceHook
    local-link-connection = ironic.drivers.modules.inspector.hooks.local_link_connection:LocalLinkConnectionHook
    parse-lldp = ironic.drivers.modules.inspector.hooks.parse_lldp:ParseLLDPHook

[extras]
guru_meditation_reports =
  oslo.reports>=1.18.0 # Apache-2.0
i18n =
  oslo.i18n>=3.20.0 # Apache-2.0
devstack =
  virtualbmc>=1.4.0 # Apache-2.0

[codespell]
quiet-level = 4
# Words to ignore:
# selectin: arg string
# exept: variable
# taks: decorator variable
# ser: short for serialize
# CNA: Computer Network Administrator
# MyRAID: class name
# assertIn: used in unit testing 
# checkin: variable
# authenticatin: misspelled in the real-world output data we use as a test fixture
# burnin: documentation referencing actual method name
ignore-words-list = selectin,exept,taks,ser,wit,cna,myraid,dum,assertin,checkin,authenticatin,burnin
skip = AUTHORS,ChangeLog,*.pyc,*.inv,*.svg,*.png,*.sample,./doc/build/*,./api-ref/build/*,./releasenotes/build/*,./api-ref/build/*,./build/*