// Copyright 2024 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

package helpers

import (
	_go "go.chromium.org/chromiumos/config/go"
	"go.chromium.org/chromiumos/config/go/test/api"
	"go.chromium.org/chromiumos/test/ctpv2/common/dynamic_updates/common"
	"go.chromium.org/chromiumos/test/ctpv2/common/dynamic_updates/interfaces"
	"google.golang.org/protobuf/types/known/anypb"
)

// DefaultProvisionStartUpRequest outlines the default values
// typically required for starting up a provision task.
func DefaultProvisionStartUpRequest(deviceId *common.DeviceIdentifier) *interfaces.ProvisionTaskStartUpRequest {
	return &interfaces.ProvisionTaskStartUpRequest{
		DynamicInputs: map[string]string{
			"dut":       deviceId.GetDevice("dut"),
			"dutServer": deviceId.GetCrosDutServer(),
		},
	}
}

// DefaultCrosProvisionInstallRequest sets up a cros-provision request
// with an empty metadata field, solely passing along the installPath.
func DefaultCrosProvisionInstallRequest(installPath string) *interfaces.ProvisionTaskInstallRequest {
	crosProvisionMetadata, _ := anypb.New(&api.CrOSProvisionMetadata{})
	return &interfaces.ProvisionTaskInstallRequest{
		StaticImagePath: &_go.StoragePath{
			HostType: _go.StoragePath_GS,
			Path:     installPath,
		},
		StaticMetadata: crosProvisionMetadata,
	}
}

// DefaultAndroidProvisionInstallRequest sets up a android-provision request.
func DefaultAndroidProvisionInstallRequest() *interfaces.ProvisionTaskInstallRequest {
	androidProvisionMetadata, _ := anypb.New(&api.AndroidProvisionRequestMetadata{
		CipdPackages: []*api.CIPDPackage{
			{
				VersionOneof: &api.CIPDPackage_Ref{
					Ref: "latest_stable",
				},
				AndroidPackage: api.AndroidPackage_GMS_CORE,
			},
		},
	})
	return &interfaces.ProvisionTaskInstallRequest{
		StaticMetadata: androidProvisionMetadata,
	}
}
