diff --git a/ironic-17.0.3.tar.gz b/ironic-17.0.3.tar.gz new file mode 100644 index 0000000..b24c98e Binary files /dev/null and b/ironic-17.0.3.tar.gz differ diff --git a/ironic-dist.conf b/ironic-dist.conf new file mode 100644 index 0000000..360a95a --- /dev/null +++ b/ironic-dist.conf @@ -0,0 +1,4 @@ +[DEFAULT] +log_dir = /var/log/ironic +state_path = /var/lib/ironic +use_stderr = False diff --git a/openstack-ironic.sudoers b/ironic-rootwrap-sudoers similarity index 62% rename from openstack-ironic.sudoers rename to ironic-rootwrap-sudoers index a7e9d49..f03c027 100644 --- a/openstack-ironic.sudoers +++ b/ironic-rootwrap-sudoers @@ -1,2 +1,2 @@ -Defaults:ironic syslog_goodpri=none, !pam_session +Defaults:ironic !requiretty ironic ALL = (root) NOPASSWD: /usr/bin/ironic-rootwrap /etc/ironic/rootwrap.conf * diff --git a/ironic-stable-victoria.tar.gz b/ironic-stable-victoria.tar.gz deleted file mode 100644 index 1c84d99..0000000 Binary files a/ironic-stable-victoria.tar.gz and /dev/null differ diff --git a/ironic.logrotate b/ironic.logrotate new file mode 100644 index 0000000..bc94097 --- /dev/null +++ b/ironic.logrotate @@ -0,0 +1,7 @@ +/var/log/ironic/*.log { + rotate 14 + size 10M + missingok + compress + copytruncate +} diff --git a/openstack-ironic-api.service b/openstack-ironic-api.service index 4d89d03..5e6857b 100644 --- a/openstack-ironic-api.service +++ b/openstack-ironic-api.service @@ -1,17 +1,13 @@ [Unit] -Description=OpenStack Ironic - API +Description=OpenStack Ironic API service After=syslog.target network.target -After=mariadb.service postgresql.service rabbitmq-server.service [Service] -Type=notify +Type=simple User=ironic -Group=ironic -WorkingDirectory=/var/lib/ironic -PrivateTmp=yes -ExecStartPre=-/usr/bin/ironic-dbsync ExecStart=/usr/bin/ironic-api Restart=on-failure [Install] WantedBy=multi-user.target + diff --git a/openstack-ironic-conductor.service b/openstack-ironic-conductor.service index 93bffba..d1684dd 100644 --- a/openstack-ironic-conductor.service +++ b/openstack-ironic-conductor.service @@ -1,16 +1,13 @@ [Unit] -Description=OpenStack Ironic - Conductor +Description=OpenStack Ironic Conductor service After=syslog.target network.target -After=mariadb.service postgresql.service rabbitmq-server.service [Service] -Type=notify +Type=simple User=ironic -Group=ironic -WorkingDirectory=/var/lib/ironic -PrivateTmp=yes ExecStart=/usr/bin/ironic-conductor Restart=on-failure [Install] WantedBy=multi-user.target + diff --git a/openstack-ironic.README.config b/openstack-ironic.README.config deleted file mode 100644 index d4733d9..0000000 --- a/openstack-ironic.README.config +++ /dev/null @@ -1,30 +0,0 @@ -The main service configuration (/etc/$project/$project.conf) can still be used -for configuration but the preferred way is to add config file snippets into -/etc/$project/$project.conf.d/ instead. - -As part of the packaging, the package itself installs a config snippet at -/etc/$project/$project.conf.d/010-$project.conf with basic configuration. This -file should not be modified. In case there is a need to overwrite or add -settings, a XXX-$project.conf (XXX being a 3 digit number) should be created -instead. - -Config directory file snippet naming should follow these conventions: -- snippets should start with "XXX-" where "X" is a number -- snippets must end with ".conf" -- config management systems (Crowbar, Salt, ...) should use numbers - between 100 and 499 -- users should use numbers starting from 500 - -Configuring just a single $program (eg for Nova, $project is "nova" and -$program is "nova-api", "nova-compute", "nova-scheduler", ...) can be done -in a similar way. The config snippets should be placed in -/etc/$project/$program.conf.d/ . The same snippets rules apply here, too. - -$program reads the configuration files in the following order: -- /etc/$project/$project.conf -- /etc/$project/$project.conf.d/*.conf (lexically sorted) -- /etc/$project/$program.conf.d/*.conf (lexically sorted) - -The last configured key overwrites all previous ones. In particular, settings -in /etc/$project/$project.conf are overwritten by config values from any file -in /etc/$project/$project.conf.d/XXX-$project.conf . diff --git a/openstack-ironic.defaultconf b/openstack-ironic.defaultconf deleted file mode 100644 index b0cbdc5..0000000 --- a/openstack-ironic.defaultconf +++ /dev/null @@ -1,7 +0,0 @@ -[DEFAULT] -log_dir = /var/log/ironic -rootwrap_config = /etc/ironic/rootwrap.conf -state_path = /var/lib/ironic - -[oslo_concurrency] -lock_path = /run/ironic \ No newline at end of file diff --git a/openstack-ironic.logrotate b/openstack-ironic.logrotate deleted file mode 100644 index d35b09e..0000000 --- a/openstack-ironic.logrotate +++ /dev/null @@ -1,10 +0,0 @@ -/var/log/ironic/*.log { - compress - rotate 15 - size 1M - dateext - missingok - notifempty - su ironic ironic - sharedscripts -} diff --git a/openstack-ironic.spec b/openstack-ironic.spec index fc84576..6ff1e71 100644 --- a/openstack-ironic.spec +++ b/openstack-ironic.spec @@ -1,42 +1,50 @@ -%global with_doc 1 +%global full_release ironic-%{version} + +%{!?upstream_version: %global upstream_version %{version}%{?milestone}} + Name: openstack-ironic -Epoch: 0 -Version: 16.0.4 -Release: 0.2.dev3 -Summary: Openstack Provisioning of Bare Metal Servers +# Liberty semver reset +# https://review.openstack.org/#/q/I1a161b2c1d1e27268065b6b4be24c8f7a5315afb,n,z +Summary: OpenStack Baremetal Hypervisor API (ironic) +Version: 17.0.3 +Release: 1 License: ASL 2.0 -URL: https://launchpad.net/ironic -Source0: ironic-stable-victoria.tar.gz -Source1: openstack-ironic.sudoers -Source2: openstack-ironic.logrotate -Source3: openstack-ironic.tmpfiles -Source4: openstack-ironic.defaultconf -Source5: openstack-ironic.README.config -# systemd service files -Source6: openstack-ironic-api.service -Source7: openstack-ironic-conductor.service +URL: http://www.openstack.org +Source0: https://tarballs.openstack.org/ironic/ironic-%{version}.tar.gz + +Source1: openstack-ironic-api.service +Source2: openstack-ironic-conductor.service +Source3: ironic-rootwrap-sudoers +Source4: ironic-dist.conf +Source5: ironic.logrotate + +BuildArch: noarch BuildRequires: openstack-macros -BuildRequires: python3-jinja2 -BuildRequires: python3-sqlalchemy -BuildRequires: python3-wsme -BuildRequires: python3-webob +BuildRequires: python3-setuptools +BuildRequires: python3-devel +BuildRequires: python3-pbr +BuildRequires: openssl-devel +BuildRequires: libxml2-devel +BuildRequires: libxslt-devel +BuildRequires: gmp-devel +BuildRequires: python3-sphinx +BuildRequires: systemd +# Required to run unit tests BuildRequires: python3-alembic BuildRequires: python3-automaton BuildRequires: python3-cinderclient BuildRequires: python3-ddt BuildRequires: python3-eventlet -BuildRequires: python3-fixtures BuildRequires: python3-futurist BuildRequires: python3-glanceclient -BuildRequires: python3-ironic-lib -BuildRequires: python3-iso8601 +BuildRequires: python3-jinja2 BuildRequires: python3-jsonpatch BuildRequires: python3-jsonschema BuildRequires: python3-keystoneauth1 BuildRequires: python3-keystonemiddleware BuildRequires: python3-mock BuildRequires: python3-neutronclient -BuildRequires: python3-os-traits +BuildRequires: python3-openstacksdk BuildRequires: python3-oslo-concurrency BuildRequires: python3-oslo-config BuildRequires: python3-oslo-context @@ -55,266 +63,233 @@ BuildRequires: python3-oslo-utils BuildRequires: python3-oslo-versionedobjects BuildRequires: python3-oslotest BuildRequires: python3-osprofiler +BuildRequires: python3-os-traits BuildRequires: python3-pbr BuildRequires: python3-pecan BuildRequires: python3-psutil -BuildRequires: python3-pysendfile BuildRequires: python3-pysnmp BuildRequires: python3-pytz BuildRequires: python3-requests -BuildRequires: python3-retrying -BuildRequires: python3-rfc3986 +BuildRequires: python3-scciclient +BuildRequires: python3-sqlalchemy BuildRequires: python3-stestr BuildRequires: python3-stevedore +BuildRequires: python3-sushy BuildRequires: python3-swiftclient +BuildRequires: python3-testresources +BuildRequires: python3-testscenarios BuildRequires: python3-testtools BuildRequires: python3-tooz -BuildRequires: sudo -Requires: logrotate -Requires: python3-ironic = %{epoch}:%{version}-%{release} -BuildArch: noarch -%if 0%{?suse_version} -BuildRequires: systemd-rpm-macros -%{?systemd_requires} -%else -BuildRequires: systemd -Requires(post): systemd -Requires(postun): systemd -Requires(pre): shadow-utils -Requires(preun): systemd -%endif +BuildRequires: python3-dracclient +BuildRequires: python3-ironic-lib +BuildRequires: python3-proliantutils +BuildRequires: python3-tenacity +BuildRequires: python3-webob + +Requires: %{name}-api = %{version}-%{release} +Requires: %{name}-conductor = %{version}-%{release} %description -Ironic is an Incubated OpenStack project which aims to provision bare metal -machines instead of virtual machines, forked from the Nova Baremetal driver. -It is best thought of as a bare metal hypervisor API and a set of plugins -which interact with the bare metal hypervisors. By default, it will use -PXE and IPMI in concert to provision and turn on/off machines, but Ironic -also supports vendor-specific plugins which may implement additional functionality. +Ironic provides an API for management and provisioning of physical machines -%package -n python3-ironic -Summary: OpenStack shared file system service (ironic) - Python module -Group: Development/Languages/Python -Requires: python3-jinja2 -Requires: python3-sqlalchemy -Requires: python3-wsme -Requires: python3-webob -Requires: python3-alembic -Requires: python3-automaton -Requires: python3-cinderclient -Requires: python3-eventlet -Requires: python3-futurist -Requires: python3-glanceclient -Requires: python3-ironic-lib -Requires: python3-jsonpatch -Requires: python3-jsonschema -Requires: python3-keystoneauth1 -Requires: python3-keystonemiddleware -Requires: python3-neutronclient -Requires: python3-os-traits -Requires: python3-oslo-concurrency -Requires: python3-oslo-config -Requires: python3-oslo-context -Requires: python3-oslo-db -Requires: python3-oslo-i18n -Requires: python3-oslo-log -Requires: python3-oslo-messaging -Requires: python3-oslo-middleware -Requires: python3-oslo-policy -Requires: python3-oslo-reports -Requires: python3-oslo-rootwrap -Requires: python3-oslo-serialization -Requires: python3-oslo-service -Requires: python3-oslo-upgradecheck -Requires: python3-oslo-utils -Requires: python3-oslo-versionedobjects -Requires: python3-osprofiler -Requires: python3-pbr -Requires: python3-pecan -Requires: python3-psutil -Requires: python3-pysendfile -Requires: python3-pysnmp -Requires: python3-pytz -Requires: python3-requests -Requires: python3-retrying -Requires: python3-rfc3986 -Requires: python3-stevedore -Requires: python3-swiftclient -Requires: python3-tooz -Requires: sudo +%package -n python3-ironic +Summary: OpenStack shared file system service (ironic) - Python module + +Requires: python3-alembic >= 1.4.2 +Requires: python3-automaton >= 1.9.0 +Requires: python3-cinderclient >= 3.3.0 +Requires: python3-eventlet >= 0.18.2 +Requires: python3-futurist >= 1.2.0 +Requires: python3-glanceclient >= 2.8.0 +Requires: python3-ironic-lib >= 4.3.0 +Requires: python3-jinja2 >= 2.10 +Requires: python3-jsonpatch >= 1.16 +Requires: python3-jsonschema >= 3.2.0 +Requires: python3-keystoneauth1 >= 4.2.0 +Requires: python3-keystonemiddleware >= 4.17.0 +Requires: python3-openstacksdk >= 0.48.0 +Requires: python3-oslo-concurrency >= 4.2.0 +Requires: python3-oslo-config >= 6.8.0 +Requires: python3-oslo-context >= 2.19.2 +Requires: python3-oslo-db >= 6.0.0 +Requires: python3-oslo-log >= 4.3.0 +Requires: python3-oslo-messaging >= 5.29.0 +Requires: python3-oslo-middleware >= 3.31.0 +Requires: python3-oslo-policy >= 3.6.2 +Requires: python3-oslo-rootwrap >= 5.8.0 +Requires: python3-oslo-serialization >= 2.18.0 +Requires: python3-oslo-service >= 1.24.0 +Requires: python3-oslo-upgradecheck >= 1.3.0 +Requires: python3-oslo-utils >= 4.5.0 +Requires: python3-oslo-versionedobjects >= 1.31.2 +Requires: python3-osprofiler >= 1.5.0 +Requires: python3-os-traits >= 0.4.0 +Requires: python3-pbr >= 2.0.0 +Requires: python3-pecan >= 1.0.0 +Requires: python3-psutil >= 3.2.2 +Requires: python3-pytz >= 2013.6 +Requires: python3-requests >= 2.14.2 +Requires: python3-rfc3986 >= 0.3.1 +Requires: python3-sqlalchemy >= 1.2.19 +Requires: python3-stevedore >= 1.20.0 +Requires: python3-swiftclient >= 3.2.0 +Requires: python3-tenacity >= 6.2.0 +Requires: python3-tooz >= 2.7.0 +Requires: python3-webob >= 1.7.1 +Requires(pre): shadow-utils %description -n python3-ironic This package contains the core code of OpenStack Ironic. -%if 0%{?with_doc} -%package doc -Summary: OpenStack bare metal provisioning service (ironic) - Documentation -Group: Documentation/HTML -BuildRequires: python3-sphinx -BuildRequires: python3-openstackdocstheme -BuildRequires: python3-sphinxcontrib-apidoc -BuildRequires: python3-sphinxcontrib-httpdomain -BuildRequires: python3-sphinxcontrib-pecanwsme -BuildRequires: python3-sphinxcontrib-seqdiag -BuildRequires: python3-sphinxcontrib-svg2pdfconverter +%package common +Summary: Ironic common +Requires: python3-ironic = %{version}-%{release} -%description doc -OpenStack bare metal provisioning service. -This package contains the Documentation. -%endif +%description common +Components common to all OpenStack Ironic services %package api Summary: OpenStack Ironic - API -Group: System/Management -Requires: openstack-ironic = %{epoch}:%{version}-%{release} +Requires: %{name}-common = %{version}-%{release} %description api This package contains the OpenStack Ironic API Daemon. %package conductor Summary: OpenStack Ironic - Conductor -Group: System/Management -Requires: openstack-ironic = %{epoch}:%{version}-%{release} +Requires: %{name}-common = %{version}-%{release} %description conductor This package contains the OpenStack Ironic Conductor Manager Daemon. -%prep -%autosetup -p1 -n ironic-16.0.4.dev3 -%py_req_cleanup +%package -n python3-ironic-tests +Summary: Ironic unit tests +Requires: %{name}-common = %{version}-%{release} +Requires: python3-mock +Requires: python3-oslotest +Requires: python3-stestr +Requires: python3-testresources +Requires: python3-testscenarios +Requires: python3-testtools + +%description -n python3-ironic-tests +This package contains the Ironic test files. + +%prep +# Required for tarball sources verification +%setup -q -n ironic-%{upstream_version} +# Let RPM handle the requirements +%py_req_cleanup +# Remove tempest plugin entrypoint as a workaround +sed -i '/tempest/d' setup.cfg +rm -rf ironic_tempest_plugin %build %{py3_build} -%if 0%{?with_doc} -PYTHONPATH=. PBR_VERSION=16.0.4.dev3 sphinx-build --keep-going -b html doc/source doc/build/html -PYTHONPATH=. PBR_VERSION=16.0.4.dev3 sphinx-build --keep-going -b man doc/source doc/build/man -# remove the Sphinx-build leftovers -rm -rf doc/build/html/.{doctrees,buildinfo} -rm -rf doc/build/man/.{doctrees,buildinfo} -%endif - %install %{py3_install} -### Setup directories -install -d -m 750 %{buildroot}%{_localstatedir}/{lib,log,cache}/ironic -install -d -m 755 %{buildroot}%{_sysconfdir}/ironic -install -d -m 755 %{buildroot}%{_sysconfdir}/ironic/ironic.conf.d/ -install -d -m 700 %{buildroot}%{_localstatedir}/run/ironic +install -p -D -m 644 %{SOURCE5} %{buildroot}%{_sysconfdir}/logrotate.d/openstack-ironic -### Install configuration files -install -D -m 644 %{SOURCE3} %{buildroot}/%_tmpfilesdir/ironic.conf -install -p -D -m 640 %{SOURCE4} %{buildroot}%{_sysconfdir}/ironic/ironic.conf.d/010-ironic.conf -mv %{buildroot}%{_prefix}%{_sysconfdir}/ironic/* %{buildroot}%{_sysconfdir}/ironic/ -cp -a etc/ironic/rootwrap.d/ %{buildroot}%{_sysconfdir}/ironic/ -install -p -D -m 640 %{SOURCE5} %{buildroot}%{_sysconfdir}/ironic/README.config +# install systemd scripts +mkdir -p %{buildroot}%{_unitdir} +install -p -D -m 644 %{SOURCE1} %{buildroot}%{_unitdir} +install -p -D -m 644 %{SOURCE2} %{buildroot}%{_unitdir} -### Install systemd service files -install -p -D -m 644 %{SOURCE6} %{buildroot}%{_unitdir}/%{name}-api.service -install -p -D -m 644 %{SOURCE7} %{buildroot}%{_unitdir}/%{name}-conductor.service +# install sudoers file +mkdir -p %{buildroot}%{_sysconfdir}/sudoers.d +install -p -D -m 440 %{SOURCE3} %{buildroot}%{_sysconfdir}/sudoers.d/ironic -### install symlinks on SUSE -%if 0%{?suse_version} -mkdir -p %{buildroot}%{_sbindir} -ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rc%{name}-api -ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rc%{name}-conductor -%endif +mkdir -p %{buildroot}%{_sharedstatedir}/ironic/ +mkdir -p %{buildroot}%{_localstatedir}/log/ironic/ +mkdir -p %{buildroot}%{_sysconfdir}/ironic/rootwrap.d -### sudoers configuration for ironic-rootwrap: -install -D -m 440 %{SOURCE1} %{buildroot}%{_sysconfdir}/sudoers.d/openstack-ironic +#Populate the conf dir +export PYTHONPATH=. +oslo-config-generator --config-file tools/config/ironic-config-generator.conf --output-file %{buildroot}/%{_sysconfdir}/ironic/ironic.conf +oslopolicy-sample-generator --config-file tools/policy/ironic-policy-generator.conf +mv %{buildroot}%{_prefix}/etc/ironic/rootwrap.conf %{buildroot}/%{_sysconfdir}/ironic/rootwrap.conf +mv %{buildroot}%{_prefix}/etc/ironic/rootwrap.d/* %{buildroot}/%{_sysconfdir}/ironic/rootwrap.d/ +# Remove duplicate config files under /usr/etc/ironic +rmdir %{buildroot}%{_prefix}/etc/ironic/rootwrap.d +rmdir %{buildroot}%{_prefix}/etc/ironic -### Install logrotate -install -p -D -m 644 %{SOURCE1} %{buildroot}%{_sysconfdir}/logrotate.d/openstack-ironic - -### man pages -%if 0%{?with_doc} -mkdir -p %{buildroot}%{_mandir}/man1 -install -p -D -m 644 doc/build/man/*.1 %{buildroot}%{_mandir}/man1/ -%endif +# Install distribution config +install -p -D -m 640 %{SOURCE4} %{buildroot}/%{_datadir}/ironic/ironic-dist.conf %check -export LC_ALL=en_US.UTF-8 -python3 -m stestr.cli run - -%pre -%openstack_pre_user_group_create ironic ironic /sbin/nologin -exit 0 - -%post -%tmpfiles_create %{_tmpfilesdir}/ironic.conf - -%post api -%systemd_post %{name}-api.service - -%preun api -%systemd_preun %{name}-api.service - -%postun api -%systemd_postun %{name}-api.service - -%post conductor -%systemd_post %{name}-conductor.service - -%preun conductor -%systemd_preun %{name}-conductor.service - -%postun conductor -%systemd_postun %{name}-conductor.service +PYTHON=%{__python3} stestr run %files -%doc README.rst %license LICENSE -%dir %attr(0750, ironic, ironic) %{_localstatedir}/lib/ironic -%dir %attr(0750, ironic, ironic) %{_localstatedir}/cache/ironic -%dir %attr(0750, ironic, ironic) %{_localstatedir}/log/ironic -%_tmpfilesdir/ironic.conf -%dir %{_sysconfdir}/ironic -%dir %{_sysconfdir}/ironic/ironic.conf.d/ -%{_sysconfdir}/ironic/README.config -%config(noreplace) %{_sysconfdir}/logrotate.d/openstack-ironic -%config(noreplace) %{_sysconfdir}/sudoers.d/openstack-ironic -%config(noreplace) %attr(0640, root, ironic) %{_sysconfdir}/ironic/ironic.conf.d/010-ironic.conf -%config %{_sysconfdir}/ironic/rootwrap.conf -%dir %{_sysconfdir}/ironic/rootwrap.d -%config(noreplace) %{_sysconfdir}/ironic/rootwrap.d/ironic-utils.filters -%{_bindir}/ironic-status -%{_bindir}/ironic-rootwrap -%{_bindir}/ironic-dbsync -%if 0%{?with_doc} -%{_mandir}/man1/ironic.1.gz -%endif %files -n python3-ironic +%doc README.rst %license LICENSE -%{python3_sitelib}/ironic/ +%{python3_sitelib}/ironic %{python3_sitelib}/ironic-*.egg-info +%exclude %{python3_sitelib}/ironic/tests -%if 0%{?with_doc} -%files doc +%files common +%doc README.rst +%doc etc/ironic/policy.yaml.sample %license LICENSE -%doc doc/build/html -%endif +%{_bindir}/ironic-dbsync +%{_bindir}/ironic-rootwrap +%{_bindir}/ironic-status +%{_sysconfdir}/sudoers.d/ironic +%config(noreplace) %{_sysconfdir}/logrotate.d/openstack-ironic +%config(noreplace) %attr(-,root,ironic) %{_sysconfdir}/ironic +%attr(-,ironic,ironic) %{_sharedstatedir}/ironic +%attr(0750,ironic,ironic) %{_localstatedir}/log/ironic +%attr(-, root, ironic) %{_datadir}/ironic/ironic-dist.conf + +%pre common +getent group ironic >/dev/null || groupadd -r ironic +getent passwd ironic >/dev/null || \ + useradd -r -g ironic -d %{_sharedstatedir}/ironic -s /sbin/nologin \ +-c "OpenStack Ironic Daemons" ironic +exit 0 + %files api -%license LICENSE -%{_unitdir}/%{name}-api.service -%if 0%{?suse_version} -%{_sbindir}/rc%{name}-api -%endif %{_bindir}/ironic-api %{_bindir}/ironic-api-wsgi +%{_unitdir}/openstack-ironic-api.service + +%post api +%systemd_post openstack-ironic-api.service + +%preun api +%systemd_preun openstack-ironic-api.service + +%postun api +%systemd_postun_with_restart openstack-ironic-api.service %files conductor -%license LICENSE -%{_unitdir}/%{name}-conductor.service -%if 0%{?suse_version} -%{_sbindir}/rc%{name}-conductor -%endif %{_bindir}/ironic-conductor +%{_unitdir}/openstack-ironic-conductor.service + +%post conductor +%systemd_post openstack-ironic-conductor.service + +%preun conductor +%systemd_preun openstack-ironic-conductor.service + +%postun conductor +%systemd_postun_with_restart openstack-ironic-conductor.service + +%files -n python3-ironic-tests +%{python3_sitelib}/ironic/tests + %changelog +* Thu Aug 12 2021 liusheng 17.0.3-1 +- Upgrade to version 17.0.3 (OpenStack Wallaby) + * Tue Feb 09 2021 huangtianhua - Enable with_doc to generate docs + * Mon Feb 08 2021 OpenStack rpm-packaging - Package Spec generated diff --git a/openstack-ironic.tmpfiles b/openstack-ironic.tmpfiles deleted file mode 100644 index 19ab51a..0000000 --- a/openstack-ironic.tmpfiles +++ /dev/null @@ -1 +0,0 @@ -d /run/ironic 0700 ironic ironic -