Files
ironic/pyproject.toml
Stephen Finucane 1ef438f996 Migrate setup configuration to pyproject.toml
The only thing of note is the use of data files: while pbr allowed you
to include directories in a glob, setuptools only allows individual
files. This necessitates expanding out the list of files we wish to
copy.

Change-Id: I65156249c3494708d79789be23afb2d69c194848
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
2025-09-22 11:46:52 +01:00

275 lines
12 KiB
TOML

[build-system]
requires = ["pbr>=6.1.1"]
build-backend = "pbr.build"
[project]
name = "ironic"
description = "OpenStack Bare Metal Provisioning"
authors = [
{name = "OpenStack", email = "openstack-discuss@lists.openstack.org"},
]
readme = {file = "README.rst", content-type = "text/x-rst"}
license = {text = "Apache-2.0"}
dynamic = ["version", "dependencies"]
requires-python = ">=3.10"
classifiers = [
"Development Status :: 5 - Production/Stable",
"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",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
]
[project.urls]
Homepage = "https://docs.openstack.org/ironic"
Repository = "https://opendev.org/openstack/ironic"
Bugs = "https://bugs.launchpad.net/ironic"
[project.entry-points."ironic.console.container"]
systemd = "ironic.console.container.systemd:SystemdConsoleContainer"
fake = "ironic.console.container.fake:FakeConsoleContainer"
# TODO(stephenfin): Remove the oslo.db call that requires this. It's unnecessary
[project.entry-points."ironic.database.migration_backend"]
sqlalchemy = "ironic.db.sqlalchemy.migration"
[project.entry-points."ironic.dhcp"]
dnsmasq = "ironic.dhcp.dnsmasq:DnsmasqDHCPApi"
neutron = "ironic.dhcp.neutron:NeutronDHCPApi"
none = "ironic.dhcp.none:NoneDHCPApi"
[project.entry-points."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"
[project.entry-points."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"
[project.entry-points."ironic.hardware.interfaces.console"]
fake = "ironic.drivers.modules.fake:FakeConsole"
fake-graphical = "ironic.drivers.modules.fake:FakeGraphicalConsole"
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"
redfish-graphical = "ironic.drivers.modules.redfish.graphical_console:RedfishGraphicalConsole"
[project.entry-points."ironic.hardware.interfaces.deploy"]
anaconda = "ironic.drivers.modules.pxe:PXEAnacondaDeploy"
ansible = "ironic.drivers.modules.ansible.deploy:AnsibleDeploy"
bootc = "ironic.drivers.modules.agent:BootcAgentDeploy"
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"
[project.entry-points."ironic.hardware.interfaces.firmware"]
fake = "ironic.drivers.modules.fake:FakeFirmware"
no-firmware = "ironic.drivers.modules.noop:NoFirmware"
redfish = "ironic.drivers.modules.redfish.firmware:RedfishFirmware"
[project.entry-points."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"
[project.entry-points."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"
[project.entry-points."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"
[project.entry-points."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"
[project.entry-points."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"
[project.entry-points."ironic.hardware.interfaces.rescue"]
agent = "ironic.drivers.modules.agent:AgentRescue"
fake = "ironic.drivers.modules.fake:FakeRescue"
no-rescue = "ironic.drivers.modules.noop:NoRescue"
[project.entry-points."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"
[project.entry-points."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"
[project.entry-points."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"
[project.entry-points."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"
[project.entry-points."oslo.config.opts"]
ironic = "ironic.conf.opts:list_opts"
[project.entry-points."oslo.config.opts.defaults"]
ironic = "ironic.conf.opts:update_opt_defaults"
[project.entry-points."oslo.policy.enforcer"]
ironic = "ironic.common.policy:get_oslo_policy_enforcer"
[project.entry-points."oslo.policy.policies"]
"ironic.api" = "ironic.common.policy:list_policies"
[project.scripts]
ironic = "ironic.command.singleprocess:main"
ironic-api = "ironic.command.api:main"
ironic-dbsync = "ironic.command.dbsync:main"
ironic-conductor = "ironic.command.conductor:main"
ironic-novncproxy = "ironic.command.novncproxy:main"
ironic-status = "ironic.command.status:main"
ironic-pxe-filter = "ironic.command.pxe_filter:main"
[project.optional-dependencies]
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
]
[tool.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/*"
[tool.setuptools]
packages = [
"ironic"
]
[tool.setuptools.data-files]
"share/ironic/vnc-container" = [
"tools/vnc-container/Containerfile",
"tools/vnc-container/README.rst",
]
"share/ironic/vnc-container/bin" = [
"tools/vnc-container/bin/*",
]
"share/ironic/vnc-container/drivers/fake/" = [
"tools/vnc-container/drivers/fake/*",
]
[tool.doc8]
ignore = ["D001"]
[tool.ruff]
line-length = 79
[tool.ruff.lint]
select = [
"E", # pycodestyle (error)
"F", # pyflakes
"G", # flake8-logging-format
"LOG", # flake8-logging
]
[tool.ruff.lint.per-file-ignores]
"ironic/tests/**/*.py" = [
"E402", # module-import-not-at-top-of-file
]
"ironic/drivers/modules/drac/raid.py" = [
"G003", # Logging statement uses `+`
]