[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 `+` ]