From 795cca3ec6a9f33625f532ff89a1439500f4ce9f Mon Sep 17 00:00:00 2001
From: Shrikumar Sharma <shrikumar.sharma@windriver.com>
Date: Wed, 13 Apr 2022 08:43:44 -0400
Subject: [PATCH] Prestaging package group and package filter

A new prestaging package group and package filter is created
for prestaging operations. It has fewer packages than the
platform-storage package group. Currently, 785 packages
are installed.

Test Plan:

PASS: Verify the creation of a new packagegroup,
      platform-prestaging, in the comps.xml file under the
      repodata directory of the prestage iso.

PASS: Verify that the number of packages to be installed
      decreases, when valid entries are included in the file
      filter_out_from_prestaging.

Story: 2009948
Task: 45146

Change-Id: Ied45039c83cbe181e74654d98f60cbae6ae14e5d
Signed-off-by: Shrikumar Sharma <shrikumar.sharma@windriver.com>
---
 bsp-files/centos-ks-gen.pl           |   4 +-
 bsp-files/filter_out_from_prestaging | 429 +++++++++++++++++++++++++++
 bsp-files/platform_comps.py          |   3 +
 3 files changed, 434 insertions(+), 2 deletions(-)
 create mode 100644 bsp-files/filter_out_from_prestaging

diff --git a/bsp-files/centos-ks-gen.pl b/bsp-files/centos-ks-gen.pl
index 2025cbb1..7683af51 100755
--- a/bsp-files/centos-ks-gen.pl
+++ b/bsp-files/centos-ks-gen.pl
@@ -85,11 +85,11 @@ write_config_file("controller-worker-lowlatency",
 # For now the 'controller' package group is used and a new prestaging
 # package list is used to trim down the set of installed packages.
 #
-write_config_file("controller",
+write_config_file("prestaging",
                   "${output_dir}/prestaged_installer_ks.cfg",
                   "pre_prestaging_install_check.cfg",
                   "pre_common_head.cfg",
-                  "pre_pkglist_prestage.cfg",
+                  "pre_pkglist.cfg",
                   "pre_disk_setup_common.cfg",
                   "pre_disk_aio.cfg",
                   "pre_disk_setup_tail.cfg",
diff --git a/bsp-files/filter_out_from_prestaging b/bsp-files/filter_out_from_prestaging
new file mode 100644
index 00000000..de3088c1
--- /dev/null
+++ b/bsp-files/filter_out_from_prestaging
@@ -0,0 +1,429 @@
+armada
+traceroute
+trousers
+python-urlgrabber
+python2-botocore
+python2-gnocchiclient
+python2-heatclient
+python2-pecan
+python-perf
+python2-glanceclient
+p11-kit
+newt
+newt-python
+boost-system
+boost-thread
+bootswatch*
+collectd
+collectd-extensions
+collectd-python
+tss2
+gsettings-desktop-schemas
+nettle
+gpgme
+quota
+openldap-config
+ceilometer-alarm-evaluator
+ceilometer-alarm-notifier
+ceilometer-api
+ceilometer-collector
+ceilometer-compute
+ceilometer-tests
+ceph
+ceph-common
+ceph-fuse
+ceph-radosgw
+distributedcloud-dccommon
+distributedcloud-dcdbsync
+docker-ce
+docker-config
+docker-distribution
+docker-forward-journald
+gdb
+gdbm
+ceph-manager
+cgcs-dpdk
+cgcs-dpdk-rt
+cgcs-dpdk-dev
+cgcs-dpdk-rt-dev
+cgcs-dpdk-staticdev
+cgcs-dpdk-rt-staticdev
+cgcs-dpdk-rt-apps
+cgts-client
+cgts-client-bash-completion
+cgcs-patch-controller
+mtce-compute
+mtce-control
+mtce-guestServer
+mtce-guestAgent
+cgtssys
+cinder
+cinder-api
+cinder-scheduler
+cinder-tests
+cinder-volume
+worker-utils
+workerconfig
+workerconfig-standalone
+workerconfig-subfunction
+configvalidator
+controllerconfig
+createrepo
+d2to1
+distributedcloud-dcmanager
+distributedcloud-client-dcmanagerclient
+distributedcloud-dcorch
+erlang
+fm-doc
+glance
+glance-api
+glance-registry
+glance-tests
+glusterfs
+glusterfs-api
+glusterfs-client-xlators
+glusterfs-libs
+gnocchi-api
+gnocchi-metricd
+gnocchi-common
+gnocchi-statsd
+guest-scale-helper
+haproxy
+haproxy-config
+heartbeat
+heat-api
+heat-api-cfn
+heat-cfn
+heat-common
+heat-contrib-nova-flavor
+heat-engine
+heat-templates
+heat-tests
+horizon
+horizon-standalone
+horizon-tests
+io-monitor
+io-scheduler
+isolcpus-device-plugin
+isomd5sum
+ipxe-roms-qemu
+kernel-module-openvswitch
+keystone
+keystone-tests
+kube-cpusets
+kube-memory
+kubernetes-1.21.8-client
+kubernetes-1.21.8-kubeadm
+kubernetes-1.21.8-node
+kubernetes-1.22.5-client
+kubernetes-1.22.5-kubeadm
+kubernetes-1.22.5-node
+kubernetes-1.23.1-client
+kubernetes-1.23.1-kubeadm
+kubernetes-1.23.1-node
+kubernetes-unversioned
+libconfig-general-perl
+libguestfs
+libssh2
+lighttpd-module-access
+lighttpd-module-accesslog
+lighttpd-module-dirlisting
+lighttpd-module-indexfile
+lighttpd-module-proxy
+lighttpd-module-staticfile
+lighttpd
+lighttpd-config
+lighttpd-mod_geoip
+lighttpd-fastcgi
+lighttpd-mod_mysql_vhost
+libvirt
+libvirt-daemon
+libvirt-daemon-config-network
+libvirt-daemon-config-nwfilter
+libvirt-daemon-driver-interface
+libvirt-daemon-driver-lxc
+libvirt-daemon-driver-network
+libvirt-daemon-driver-nodedev
+libvirt-daemon-driver-nwfilter
+libvirt-daemon-driver-qemu
+libvirt-daemon-driver-qemu
+libvirt-daemon-driver-secret
+libvirt-daemon-driver-storage
+libvirt-daemon-kvm
+libvirt-docs
+nodejs
+nova-api
+nova-common
+nova-compute
+nova-compute-preclean
+nova-compute-setup
+nova-conductor
+nova-consoleauth
+nova-controller
+nova-network
+nova-novncproxy
+nova-scheduler
+nova-spicehtml5proxy
+nova-tests
+nova-api-proxy
+nova-placement-api
+novnc
+openssh
+openssh-clients
+openssh-config
+openssh-server
+openssl
+openssl-libs
+openstack-aodh-api
+openstack-aodh-commmon
+openstack-aodh-compat
+openstack-aodh-evaluator
+openstack-aodh-expirer
+openstack-aodh-listener
+openstack-aodh-notifier
+openstack-barbican
+openstack-barbican-api
+openstack-barbican-common
+openstack-barbican-keystone-listener
+openstack-barbican-worker
+openstack-aodh-config
+openstack-ceilometer-alarm
+openstack-ceilometer-central
+openstack-ceilometer-collector
+openstack-ceilometer-compute
+openstack-ceilometer-ipmi
+openstack-ceilometer-notification
+openstack-cinder
+openstack-cinder-doc
+openstack-dashboard
+openstack-glance
+openstack-glance-doc
+openstack-heat-api
+openstack-heat-api-cfn
+openstack-heat-api-cloudwatch
+openstack-heat-common
+openstack-heat-engine
+openstack-ironic-api
+openstack-ironic-common
+openstack-ironic-conductor
+python-ironic-tests
+python-ironic-inspector-client
+python-ironic-lib
+python2-ironicclient
+openstack-keystone
+openstack-keystone-doc
+openstack-murano-api
+openstack-murano-cf-api
+openstack-murano-common
+openstack-murano-doc
+openstack-murano-engine
+openstack-murano-ui
+openstack-murano-ui-doc
+python2-muranoclient
+python-muranoclient-doc
+openstack-magnum-api
+openstack-magnum-common
+openstack-magnum-conductor
+openstack-magnum-doc
+openstack-magnum-ui
+python2-magnumclient
+python-magnum
+python-magnumclient-doc
+python-magnumclient-tests
+python-magnum-tests
+python-magnum-ui-doc
+openstack-neutron
+openstack-neutron-common
+openstack-neutron-sriov-nic-agent
+openstack-neutron-ml2
+openstack-neutron-openvswitch
+openstack-nova-api
+openstack-nova-cells
+openstack-nova-common
+openstack-nova-compute
+openstack-nova-conductor
+openstack-nova-console
+openstack-nova-doc
+openstack-nova-network
+openstack-nova-novncproxy
+openstack-nova-objectstore
+openstack-nova-scheduler
+openstack-nova-serialproxy
+openstack-nova-spicehtml5proxy
+openstack-nova-placement-api
+openstack-panko-api
+openstack-panko-common
+openstack-panko-doc
+openstack-ras
+patch-alarm
+patching-controller
+pbr
+pecan
+platform-util-controller
+postgresql
+postgresql-client
+postgresql-contrib
+postgresql-timezone
+pxe-network-installer
+python-aodh
+python-aodhclient
+python-barbican
+python2-barbicanclient
+python-ceilometerclient
+python-cephclient
+python-cinder
+python-cinderclient
+python-django
+python-django-appconf
+python-django-compressor
+python-fmclient
+python-glance
+python-glanceclient
+python2-gunicorn
+python-heat
+python-heatclient
+python-heatclient-bash-completion
+python-horizon
+python-keystone
+python-libguestfs
+python-lockfile
+python-netclient
+python-neutron
+python-neutron-lib
+python2-neutronclient
+python-nova
+python2-novaclient
+python-novnc
+python-openstackclient
+python-pam
+python-panko
+python2-pankoclient
+python-passlib
+python-pytz
+python-swiftclient
+python-wsme
+qemu-img-ev
+qemu-kvm-common-ev
+qemu-kvm-ev
+qemu-kvm-tools-ev
+rabbitmq-server
+rabbitmq-server-config
+radvd
+rubygem-rdoc
+task-cloud-compute
+task-cloud-controller
+tgt
+fm-mgr
+fm-rest-api
+sm
+sm-api
+sm-client
+sm-common
+sm-db
+sm-tools
+starlingx-dashboard
+storage-topology
+stx-audit-helm
+stx-audit-helm-fluxcd
+stx-cert-manager-helm-fluxcd
+stx-extensions
+stx-metrics-server-helm
+stx-nginx-ingress-controller-helm-fluxcd
+stx-ocf-scripts
+stx-oidc-auth-helm-fluxcd
+stx-platform-helm
+stx-portieris-helm-fluxcd
+stx-ptp-notification-helm
+stx-ptp-notification-helm-fluxcd
+stx-rook-ceph
+stx-ssl
+stx-vault-helm-fluxcd
+nfv
+nfv-common
+nfv-plugins
+nfv-vim
+nfv-tools
+nfv-client
+vm-topology
+python-networking-odl
+config-gate-worker
+wrs-heat-templates
+python-django-horizon
+libmlx5
+kmod-bnxt_en-rt
+kmod-e1000e-rt
+kmod-i40e-rt
+kmod-iavf-rt
+kmod-ice-rt
+kmod-ixgbe-rt
+kmod-ixgbevf-rt
+kmod-igb_uio-rt
+kmod-tpm-rt
+kmod-integrity-rt
+kmod-opae-fpga-driver-rt
+mlnx-ofa_kernel-rt-modules
+rtctl
+rt-setup
+qat17-rt
+NaviCLI-Linux-64-x86-en_US
+kmod-drbd-rt
+wrs-ssl
+tpm2-tools
+tss2
+tpm2-openssl-engine
+libtpms
+OVMF
+python2-networking-bgpvpn
+python-networking-bgpvpn-dashboard
+python-networking-bgpvpn-heat
+python2-neutron-dynamic-routing
+python2-ruamel-yaml
+python2-ryu
+python-ryu-common
+python2-networking-sfc
+openvswitch
+openvswitch-config
+platform-kickstarts
+python-3parclient
+python-lefthandclient
+screen
+memcached
+memcached-custom
+openstack-swift-object
+openstack-swift-account
+openstack-swift-container
+openstack-swift-proxy
+pci-irq-affinity-agent
+Redfishtool
+kvm-timer-advance
+dex-helm
+oidcauthtools
+stx-oidc-auth-helm
+stx-cert-manager-helm
+stx-nginx-ingress-controller-helm
+stx-portieris-helm
+stx-snmp-helm
+stx-vault-helm
+sysinv-fpga-agent
+k8s-pod-recovery
+tcpdump
+puppet
+puppet-barbican
+puppet-collectd
+puppet-manifests
+containernetworking-plugins
+multus-config
+perf
+playbookconfig
+python2-barbican
+python2-docker
+python2-kubernetes
+python2-neutronclient
+python2-openstacksdk
+python2-osc-lib
+python2-oslo-db
+python-docker-pycredspython-oslo-db-lang
+tboot
+vm-topology
+wrcp-playbook
+wrcp-utils
diff --git a/bsp-files/platform_comps.py b/bsp-files/platform_comps.py
index 4dfa1965..9316afa5 100644
--- a/bsp-files/platform_comps.py
+++ b/bsp-files/platform_comps.py
@@ -136,6 +136,8 @@ def main():
     add_group(comps, 'worker-lowlatency', rpmlist,
               filter_dir, 'filter_out_from_worker_lowlatency')
     add_group(comps, 'storage', rpmlist, filter_dir, 'filter_out_from_storage')
+    add_group(comps, 'prestaging', rpmlist, filter_dir,
+              'filter_out_from_prestaging')
 
     add_group(comps, 'controller')
     add_group(comps, 'controller-worker')
@@ -143,6 +145,7 @@ def main():
     add_group(comps, 'worker')
     add_group(comps, 'worker-lowlatency')
     add_group(comps, 'storage')
+    add_group(comps, 'prestaging')
 
     tree.write(groups_file, encoding="UTF-8")