#!/usr/bin/env python3

import sys

PROFILES = {
    "cinder": "ceph qemu",
    "nova": "ceph openvswitch configdrive qemu migration",
    "neutron": "openvswitch vpn",
    "keystone": "apache ldap openidc",
    "horizon": "apache",
    "monasca-api": "apache influxdb",
    "ironic": "ipxe ipmi qemu tftp",
    "glance": "ceph",
    "monasca-persister": "influxdb",
    "placement": "apache",
}
DIST_PACKAGES = {
    "heat": "curl",
    "designate": "bind9utils",
    "nova": "ovmf qemu-efi-aarch64",
    "neutron": "jq ethtool lshw",
    "monasca-agent": "iproute2 libvirt-clients lshw",
    "ironic": "ethtool lshw iproute2",
}
PIP_PACKAGES = {
    "neutron": "neutron-vpnaas",
    "monasca-agent": "libvirt-python python-glanceclient python-neutronclient python-novaclient py3nvml",
    "horizon": "designate-dashboard heat-dashboard ironic-ui magnum-ui neutron-vpnaas-dashboard octavia-dashboard senlin-dashboard monasca-ui",
    "ironic": "python-dracclient sushy",
    "placement": "httplib2",
}
PLATFORMS = {
    "nova": "linux/amd64,linux/arm64",
    "neutron": "linux/amd64,linux/arm64",
}

project = sys.argv[1]
release = sys.argv[2]

ref = open(f"images/openstack/projects/{project}/{release}/ref", "r").read().strip()
profiles = PROFILES.get(project, "")
dist_packages = DIST_PACKAGES.get(project, "")
pip_packages = PIP_PACKAGES.get(project, "")
platforms = PLATFORMS.get(project, "")

print(f"PROJECT_REF={ref}")
print(f"PROFILES={profiles}")
print(f"DIST_PACKAGES={dist_packages}")
print(f"PIP_PACKAGES={pip_packages}")
print(f"PLATFORMS={platforms}")
