From 8247b33a98de61ee5281fdc10ca4ad853626267b456e70611d120e8401ecace6 Mon Sep 17 00:00:00 2001
From: Steven Hardy <steven.hardy@suse.com>
Date: Tue, 12 Nov 2024 18:34:16 +0000
Subject: [PATCH] ironic-ipa-ramdisk: add new/renamed package

To align with isv:SUSE:Edge:Metal3:Ironic:2024.2
---
 .obs/workflows.yml                         |   4 +
 ironic-ipa-ramdisk/_constraints            |   8 +
 ironic-ipa-ramdisk/config.sh               | 105 +++++++++++++
 ironic-ipa-ramdisk/ironic-ipa-ramdisk.kiwi | 173 +++++++++++++++++++++
 ironic-ipa-ramdisk/ironic-ipa-ramdisk.spec | 167 ++++++++++++++++++++
 ironic-ipa-ramdisk/root.tar.bz2            | Bin 0 -> 3866 bytes
 6 files changed, 457 insertions(+)
 create mode 100644 ironic-ipa-ramdisk/_constraints
 create mode 100644 ironic-ipa-ramdisk/config.sh
 create mode 100644 ironic-ipa-ramdisk/ironic-ipa-ramdisk.kiwi
 create mode 100644 ironic-ipa-ramdisk/ironic-ipa-ramdisk.spec
 create mode 100644 ironic-ipa-ramdisk/root.tar.bz2

diff --git a/.obs/workflows.yml b/.obs/workflows.yml
index af2407f..8c923ad 100644
--- a/.obs/workflows.yml
+++ b/.obs/workflows.yml
@@ -230,3 +230,7 @@ staging_build:
       source_package: kube-rbac-proxy-image
       source_project: isv:SUSE:Edge:Factory
       target_project: isv:SUSE:Edge:Factory:Staging
+  - branch_package:
+      source_package: ironic-ipa-ramdisk
+      source_project: isv:SUSE:Edge:Factory
+      target_project: isv:SUSE:Edge:Factory:Staging
diff --git a/ironic-ipa-ramdisk/_constraints b/ironic-ipa-ramdisk/_constraints
new file mode 100644
index 0000000..19d0995
--- /dev/null
+++ b/ironic-ipa-ramdisk/_constraints
@@ -0,0 +1,8 @@
+<constraints>
+    <hardware>
+        <processors>4</processors>
+        <disk>
+            <size unit="G">12</size>
+        </disk>
+    </hardware>
+</constraints>
diff --git a/ironic-ipa-ramdisk/config.sh b/ironic-ipa-ramdisk/config.sh
new file mode 100644
index 0000000..8285ba4
--- /dev/null
+++ b/ironic-ipa-ramdisk/config.sh
@@ -0,0 +1,105 @@
+#!/bin/bash
+
+test -f /.kconfig && . /.kconfig
+test -f /.profile && . /.profile
+
+#======================================
+# Greeting...
+#--------------------------------------
+echo "Configure image: [$kiwi_iname]..."
+
+#==========================================
+# setup build day
+#------------------------------------------
+baseSetupBuildDay
+
+#======================================
+# Mount system filesystems
+#--------------------------------------
+#baseMount
+
+#==========================================
+# remove unneded kernel files
+#------------------------------------------
+suseStripKernel
+baseStripLocales en_US.utf-8 C.utf8
+
+#======================================
+# Setup baseproduct link
+#--------------------------------------
+suseSetupProduct
+
+#======================================
+# Add missing gpg keys to rpm
+#--------------------------------------
+suseImportBuildKey
+
+#======================================
+# Activate services
+#--------------------------------------
+baseInsertService openstack-ironic-python-agent
+baseInsertService suse-ironic-image-setup
+baseInsertService suse-network-setup
+baseInsertService sshd
+baseInsertService NetworkManager
+#suseInsertService sshd
+#suseInsertService openstack-ironic-python-agent
+#suseInsertService suse-ironic-image-setup
+
+echo 'DEFAULT_TIMEZONE="UTC"' >> /etc/sysconfig/clock
+baseUpdateSysConfig /etc/sysconfig/clock HWCLOCK "-u"
+baseUpdateSysConfig /etc/sysconfig/clock TIMEZONE UTC
+baseUpdateSysConfig /etc/sysconfig/network/dhcp DHCLIENT_SET_HOSTNAME no
+baseUpdateSysConfig /etc/sysconfig/network/dhcp WRITE_HOSTNAME_TO_HOSTS no
+
+#==========================================
+# generate autologin@ service
+# based on getty@ service
+#------------------------------------------
+#sed 's/^ExecStart=.*/\0 --autologin root/' /usr/lib/systemd/system/getty@.service > /etc/systemd/system/autologin\@.service
+sed -E 's/^(ExecStart=.*\/agetty).*(--noclear.*)/\1 \2 --autologin root/' /usr/lib/systemd/system/getty@.service > /etc/systemd/system/autologin\@.service
+
+#==========================================
+# add fstab entry for tmpfs based /tmp
+#------------------------------------------
+echo 'tmpfs /tmp tmpfs size=3G 0 0' >> /etc/fstab
+
+#==========================================
+# remove package docs and manuals
+#------------------------------------------
+#baseStripDocs
+#baseStripMans
+#baseStripInfos
+
+#======================================
+# only basic version of vim is
+# installed; no syntax highlighting
+#--------------------------------------
+sed -i -e's/^syntax on/" syntax on/' /etc/vimrc
+
+#======================================
+# Remove yast if not in use
+#--------------------------------------
+#suseRemoveYaST
+
+#======================================
+# Remove package manager
+#--------------------------------------
+#suseStripPackager
+
+#rm -f usr/lib/perl5/*/*/auto/Encode/??/??.so # 9MB
+
+#======================================
+# Umount kernel filesystems
+#--------------------------------------
+#baseCleanMount
+
+ln -s /sbin/init /init
+
+#==========================================
+# umount
+#------------------------------------------
+umount /proc >/dev/null 2>&1
+
+exit 0
+
diff --git a/ironic-ipa-ramdisk/ironic-ipa-ramdisk.kiwi b/ironic-ipa-ramdisk/ironic-ipa-ramdisk.kiwi
new file mode 100644
index 0000000..315d4d0
--- /dev/null
+++ b/ironic-ipa-ramdisk/ironic-ipa-ramdisk.kiwi
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="utf-8"?>
+<image schemaversion="7.4" name="openstack-ironic-image-201">
+    <description type="system">
+        <author>Cloud developers</author>
+        <contact>cloud-devel@suse.de</contact>
+        <specification>kernel and ramdisk image for metal3</specification>
+    </description>
+    <profiles>
+        <profile name="default" description="Booting default profile" import="true"/>
+    </profiles>
+    <preferences>
+        <locale>en_US</locale>
+        <packagemanager>zypper</packagemanager>
+        <rpm-check-signatures>false</rpm-check-signatures>
+        <timezone>UTC</timezone>
+        <version>1.0.0</version> 
+    </preferences>	
+    <preferences profiles="default">
+        <type image="kis" initrd_system="none" compressed="false"/>
+    </preferences>
+
+    <users>
+        <user password="*" home="/root" name="root" groups="root"/>
+    </users>
+
+    <repository alias="build-binaries" type="rpm-md" priority="99">
+      <source path="dir:///.build.binaries"/>
+    </repository>
+
+    <drivers>
+        <file name="crypto/*"/>
+        <file name="drivers/acpi/*"/>
+        <file name="drivers/acpi/dock.ko"/>
+        <file name="drivers/ata/*"/>
+        <file name="drivers/block/brd.ko"/>
+        <file name="drivers/block/cciss.ko"/>
+        <file name="drivers/block/loop.ko"/>
+        <file name="drivers/block/virtio_blk.ko"/>
+        <file name="drivers/cdrom/*"/>
+        <file name="drivers/char/hw_random/virtio-rng.ko"/>
+        <file name="drivers/char/lp.ko"/>
+        <file name="drivers/char/ipmi/*"/>
+        <file name="drivers/firmware/iscsi_ibft.ko"/>
+        <file name="drivers/firmware/edd.ko"/>
+        <file name="drivers/gpu/drm/*"/>
+        <file name="drivers/hid/*"/>
+        <file name="drivers/hv/*"/>
+        <file name="drivers/hwmon/*"/>
+        <file name="drivers/ide/*"/>
+        <file name="drivers/input/keyboard/*"/>
+        <file name="drivers/input/mouse/*"/>
+        <file name="drivers/md/*"/>
+        <file name="drivers/message/fusion/*"/>
+        <file name="drivers/misc/hpilo.ko"/>
+        <file name="drivers/net/*"/>
+        <file name="drivers/parport/*"/>
+        <file name="drivers/scsi/*"/>
+        <file name="drivers/staging/hv/*"/>
+        <file name="drivers/target/*"/>
+        <file name="drivers/thermal/*"/>
+        <file name="drivers/usb/*"/>
+        <file name="drivers/virtio/*"/>
+        <file name="fs/binfmt_aout.ko"/>
+        <file name="fs/binfmt_misc.ko"/>
+        <file name="fs/overlayfs/*"/>
+        <file name="fs/btrfs/*"/>
+        <file name="fs/exportfs/*"/>
+        <file name="fs/ext4/*"/>
+        <file name="fs/fat/*"/>
+        <file name="fs/fuse/*"/>
+        <file name="fs/hfs/*"/>
+        <file name="fs/jbd2/*"/>
+        <file name="fs/nfs/*"/>
+        <file name="fs/mbcache.ko"/>
+        <file name="fs/nls/nls_cp437.ko"/>
+        <file name="fs/nls/nls_iso8859-1.ko"/>
+        <file name="fs/nls/nls_utf8.ko"/>
+        <file name="fs/quota_v1.ko"/>
+        <file name="fs/quota_v2.ko"/>
+        <file name="fs/squashfs/*"/>
+        <file name="fs/udf/*"/>
+        <file name="fs/vfat/*"/>
+        <file name="fs/xfs/*"/>
+        <file name="fs/isofs/*"/>
+        <file name="lib/crc-t10dif.ko"/>
+        <file name="lib/crc16.ko"/>
+        <file name="lib/libcrc32c.ko"/>
+        <file name="lib/zlib_deflate/zlib_deflate.ko"/>
+        <file name="net/packet/*"/>
+    </drivers>
+
+    <packages type="delete">
+        <package name="gpg2"/>
+        <package name="libcairo2"/>
+        <package name="libpango-1_0-0"/>
+        <package name="libX11-6"/>
+        <package name="libXext6"/>
+        <package name="libXft2"/>
+        <package name="libXrender1"/>
+        <package name="libX11-data"/>
+        <package name="libXau6"/>
+        <package name="libxcb-render0"/>
+        <package name="libxcb-shm0"/>
+        <package name="libxcb1"/>
+        <package name="plymouth"/>
+        <package name="plymouth-branding-SLE"/>
+    </packages>
+
+    <packages type="image">
+        <package name="checkmedia"/>
+        <package name="plymouth-branding-SLE"/>
+        <package name="plymouth-dracut"/>
+        <package name="plymouth-theme-bgrt"/>
+        <package name="grub2-branding-SLE"/>
+        <package name="iputils"/>
+        <package name="vim"/>
+        <package name="grub2"/>
+        <package name="grub2-x86_64-efi" arch="x86_64"/>
+        <package name="grub2-i386-pc"/>
+        <package name="syslinux"/>
+        <package name="lvm2"/>
+        <package name="plymouth"/>
+        <package name="fontconfig"/>
+        <package name="fonts-config"/>
+        <package name="openssh"/>
+        <package name="iproute2"/>
+        <package name="which"/>
+        <package name="kernel-firmware"/>
+        <package name="kernel-default"/>
+        <package name="NetworkManager"/>
+        <package name="nm-configurator-030"/>
+        <package name="timezone"/>
+        <package name="haveged"/>
+        <!-- ironic-python-agent specific -->
+        <package name="openstack-ironic-python-agent"/>
+        <package name="hdparm"/>
+        <package name="qemu-tools"/>
+        <package name="python311-proliantutils" arch="x86_64"/>
+        <package name="lshw"/>
+        <package name="dmidecode" arch="aarch64"/>
+        <package name="dmidecode" arch="x86_64"/>
+        <package name="efibootmgr" arch="aarch64" />
+        <package name="efibootmgr" arch="x86_64" />
+        <package name="gptfdisk"/>
+        <package name="open-iscsi"/>
+        <package name="hwinfo"/>
+        <package name="ipmitool"/>
+        <package name="iputils"/>
+        <package name="lvm2"/>
+        <package name="net-tools"/>
+        <package name="ntp"/>
+        <package name="parted"/>
+        <package name="psmisc"/>
+        <package name="timezone"/>
+        <package name="which"/>
+        <package name="kbd"/>
+    </packages>
+
+    <packages type="kis">
+        <package name="gfxboot-branding-SLE"/>
+        <package name="dracut-kiwi-oem-repart"/>
+        <package name="dracut-kiwi-oem-dump"/>
+    </packages> 
+
+    <packages type="bootstrap">
+        <package name="glibc-locale"/>
+        <package name="udev"/>
+        <package name="filesystem"/>
+        <package name="cracklib-dict-full"/>
+        <package name="ca-certificates"/>
+        <package name="sles-release"/>
+    </packages>
+</image>
diff --git a/ironic-ipa-ramdisk/ironic-ipa-ramdisk.spec b/ironic-ipa-ramdisk/ironic-ipa-ramdisk.spec
new file mode 100644
index 0000000..2e4232a
--- /dev/null
+++ b/ironic-ipa-ramdisk/ironic-ipa-ramdisk.spec
@@ -0,0 +1,167 @@
+#
+# spec file for package openstack-ironic-image
+#
+# Copyright (c) 2023 SUSE LLC
+#
+# All modifications and additions to the file contributed by third parties
+# remain the property of their copyright owners, unless otherwise agreed
+# upon. The license for this file, and modifications and additions to the
+# file, is the same license as for the pristine package itself (unless the
+# license for the pristine package is not an Open Source License, in which
+# case the license is the MIT License). An "Open Source License" is a
+# license that conforms to the Open Source Definition (Version 1.9)
+# published by the Open Source Initiative.
+
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
+#
+# needsrootforbuild
+# needsbinariesforbuild
+
+
+Name:           ironic-ipa-ramdisk
+Version:        3.0.0
+Release:        0
+Summary:        Kernel and ramdisk image for OpenStack Ironic
+License:        SUSE-EULA
+Group:          System/Management
+URL:            https://github.com/SUSE-Cloud/
+Source0:        config.sh
+Source10:       ironic-ipa-ramdisk.kiwi
+Source20:       root.tar.bz2
+
+BuildRequires:  -post-build-checks
+BuildRequires:  bash
+BuildRequires:  kiwi
+BuildRequires:  kiwi-tools
+BuildRequires:  zypper
+BuildArch:      noarch
+
+BuildRequires:  checkmedia
+BuildRequires:  acl
+BuildRequires:  ca-certificates
+BuildRequires:  cracklib-dict-full
+BuildRequires:  cron
+BuildRequires:  dbus-1
+BuildRequires:  elfutils
+BuildRequires:  filesystem
+BuildRequires:  fipscheck
+BuildRequires:  fontconfig
+BuildRequires:  fonts-config
+BuildRequires:  gptfdisk
+BuildRequires:  grub2
+BuildRequires:  grub2-x86_64-efi
+BuildRequires:  haveged
+BuildRequires:  hdparm
+BuildRequires:  hwinfo
+BuildRequires:  ipmitool
+BuildRequires:  iproute2
+BuildRequires:  iputils
+BuildRequires:  kernel-default
+BuildRequires:  kernel-firmware
+BuildRequires:  lvm2
+BuildRequires:  net-tools
+BuildRequires:  ntp
+BuildRequires:  open-iscsi
+BuildRequires:  openssh
+BuildRequires:  openstack-ironic-python-agent
+BuildRequires:  pam-config
+BuildRequires:  parted
+BuildRequires:  patterns-base-minimal_base
+BuildRequires:  pinentry
+BuildRequires:  pkgconfig
+BuildRequires:  Mesa-gallium
+BuildRequires:  plymouth
+BuildRequires:  plymouth-scripts
+BuildRequires:  python311-proliantutils
+BuildRequires:  psmisc
+BuildRequires:  qemu-tools
+BuildRequires:  sg3_utils
+BuildRequires:  sles-release
+BuildRequires:  sudo
+BuildRequires:  suse-build-key
+BuildRequires:  systemd-presets-branding-SLE
+BuildRequires:  timezone
+BuildRequires:  udev
+BuildRequires:  vim
+BuildRequires:  wpa_supplicant
+BuildRequires:  dhcp-client
+BuildRequires:  which
+BuildRequires:  NetworkManager
+BuildRequires:  nm-configurator-030
+BuildRequires:  logrotate
+BuildRequires:  plymouth-dracut
+BuildRequires:  plymouth-theme-bgrt
+BuildRequires:  dracut-kiwi-oem-dump
+BuildRequires:  dracut-kiwi-oem-repart
+BuildRequires:  gfxboot-branding-SLE
+BuildRequires:  grub2-branding-SLE
+BuildRequires:  open-iscsi
+BuildRequires:  plymouth-branding-SLE
+BuildRequires:  lshw
+BuildRequires:  kbd
+%ifarch aarch64
+BuildRequires:  dmidecode
+BuildRequires:  efibootmgr
+%endif
+%ifarch x86_64
+BuildRequires:  dmidecode
+BuildRequires:  efibootmgr
+BuildRequires:  syslinux
+%endif
+
+%description
+Kernel and ramdisk image for use with Metal3
+
+%package %{_arch}
+Summary:        Kernel and ramdisk image for Metal3
+Group:          System/Management
+Provides:       openstack-ironic-python-agent = %{version}
+Obsoletes:      openstack-ironic-python-agent < %{version}
+
+%description %{_arch}
+Kernel and ramdisk image for use with Metal3
+For %{_arch}
+
+%prep
+mkdir -p /tmp/openstack-ironic-image/build /tmp/openstack-ironic-image/root /tmp/openstack-ironic-image/img
+
+cp -a %{SOURCE0} /tmp/openstack-ironic-image/config.sh
+
+cp -a %{SOURCE10} /tmp/openstack-ironic-image/config.kiwi
+
+tar -xC /tmp/openstack-ironic-image/root -f %{SOURCE20}
+
+%build
+if ! which kiwi; then
+    cat <<EOF >&2
+kiwi not found in \$PATH; most likely this build was missing
+the --userootforbuild option.  If you are invoking osc build
+manually, please use 'make buildlocal' instead.
+EOF
+    exit 1
+fi
+
+kiwi-ng --debug --profile default system build --description /tmp/openstack-ironic-image --target-dir /tmp/openstack-ironic-image/img
+
+%install
+TDIR=`mktemp -d /tmp/openstack-ironic-image.XXXXX`
+cd /tmp/openstack-ironic-image/img/build/image-root 
+find . | cpio --create --format=newc --quiet > $TDIR/initrdtmp
+cd $TDIR
+gzip -9 -f initrdtmp
+INITRDGZ=`ls *.gz | head -1`
+gzip -cd $INITRDGZ | xz --check=crc32 -c9 > initrd.xz
+INITRD=`ls *.xz | head -1`
+
+ls /tmp/openstack-ironic-image/img/openstack-ironic-image*
+KERNEL=`ls /tmp/openstack-ironic-image/img/openstack-ironic-image*default*kernel | head -1`
+
+mkdir -p %{buildroot}/srv/tftpboot/openstack-ironic-image
+install -p -m 644 $KERNEL $INITRD %{buildroot}/srv/tftpboot/openstack-ironic-image/
+
+%files %{_arch}
+%defattr(644,root,root)
+%dir %attr(755, root, root) /srv/tftpboot/openstack-ironic-image
+%attr(644, root, root) /srv/tftpboot/openstack-ironic-image/*
+
+%changelog
diff --git a/ironic-ipa-ramdisk/root.tar.bz2 b/ironic-ipa-ramdisk/root.tar.bz2
new file mode 100644
index 0000000000000000000000000000000000000000000000000000000000000000..b7be89a56cef5e1a5db424f5919a5260afcfcdd1f963159fa6d1fc6067566dcd
GIT binary patch
literal 3866
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

literal 0
HcmV?d00001