# Copyright 2019 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

EAPI=6

DESCRIPTION="Configuration of cloud-init for lakitu"
HOMEPAGE=""

LICENSE="BSD-Google"
SLOT="0"
KEYWORDS="*"
IUSE="platform_aws platform_azure platform_gcp platform_vsphere"

DEPEND="app-emulation/cloud-init"
RDEPEND="
	${DEPEND}
	!<app-emulation/cloud-init-18.5-r4
"

S=${WORKDIR}

src_install() {
	# override the default cloud.cfg
	insinto /etc/cloud
	if use platform_azure; then
		doins "${FILESDIR}"/azure/cloud.cfg
	else
		doins "${FILESDIR}"/cloud.cfg
	fi

	doins "${FILESDIR}"/ds-identify.cfg
	
	insinto /etc/cloud/cloud.cfg.d
	if use platform_gcp; then
		doins "${FILESDIR}/gcp/10-disable_ssh_publish_hostkeys.cfg"
		doins "${FILESDIR}/gcp/91-datasource-gce.cfg"
	elif use platform_aws; then
		doins "${FILESDIR}"/aws/90-default-user.cfg
		doins "${FILESDIR}"/aws/91-datasource-ec2.cfg
	elif use platform_azure; then
		doins "${FILESDIR}"/azure/10_hostname.cfg
		doins "${FILESDIR}"/azure/90-default-user.cfg
		doins "${FILESDIR}"/azure/91-datasource-azure.cfg
	elif use platform_vsphere; then
		doins "${FILESDIR}"/vsphere/10_hostname.cfg
		doins "${FILESDIR}"/vsphere/90-default-user.cfg
		doins "${FILESDIR}"/vsphere/91-datasource-vmware-ovf.cfg
	fi
}

