# 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"
	fi

	if use platform_aws; then
		doins "${FILESDIR}"/aws/90-default-user.cfg
		doins "${FILESDIR}"/aws/91-datasource.cfg
	elif use platform_azure; then
		doins "${FILESDIR}"/azure/10_hostname.cfg
		doins "${FILESDIR}"/azure/90-default-user.cfg
		doins "${FILESDIR}"/azure/91-datasource.cfg
	elif use platform_vsphere; then
		doins "${FILESDIR}"/vsphere/10_hostname.cfg
		doins "${FILESDIR}"/vsphere/90-default-user.cfg
		doins "${FILESDIR}"/vsphere/91-datasource.cfg
	else
		# by default we add [GCE, NoCloud, None] as the datasource.
		doins "${FILESDIR}/gcp/91-datasource.cfg"
	fi
}

