blob: 15f14587fc37059a93146ee6a1c258456d4bfdfe [file] [log] [blame]
// Copyright 2020 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.
package deviceconfig
import (
"github.com/golang/protobuf/proto"
"go.chromium.org/chromiumos/infra/proto/go/device"
)
// BoardToPlatformMap refers to the mapping from autotest board to device reference board:
// https://docs.google.com/spreadsheets/d/1R6ycgnIJnoSWVpN9pVvnrPUacady-vYFkjMrW-pHZ9c/edit#gid=0
// Current DUTs' boards and models are not 1:1 matched to platforms and models in device config.
// BoardToPlatformMap and ModelMap are used temporarily to do the mapping, so that no duts will
// skip device config retrieval.
var BoardToPlatformMap = map[string]string{
"auron_paine": "auron",
"auron_yuna": "auron",
"buddy": "auron",
"gandof": "auron",
"lulu": "auron",
"samus": "auron",
"monroe": "beltino",
"panther": "beltino",
"tricky": "beltino",
"zako": "beltino",
"caroline": "glados",
"caroline-ndktranslation": "glados",
"cave": "glados",
"chell": "glados",
"bob": "gru",
"kevin": "gru",
"kahlee": "grunt",
"excelsior": "fizz",
"fizz-labstation": "fizz",
"fizz-moblab": "fizz",
"guado-kernelnext": "jecht",
"guado_labstation": "jecht",
"guado": "jecht",
"rikku": "jecht",
"tidus": "jecht",
"asuka": "kunimitsu",
"lars": "kunimitsu",
"sentry": "kunimitsu",
"nyan_big": "nyan",
"nyan_blaze": "nyan",
"nyan_kitty": "nyan",
"elm": "oak",
"hana": "oak",
"atlas": "poppy",
"eve": "poppy",
"nautilus": "poppy",
"nocturne": "poppy",
"soraka": "poppy",
"banjo": "rambi",
"candy": "rambi",
"enguarde": "rambi",
"gnawty": "rambi",
"heli": "rambi",
"kip": "rambi",
"ninja": "rambi",
"orco": "rambi",
"quawks": "rambi",
"squawks": "rambi",
"sumo": "rambi",
"swanky": "rambi",
"winky": "rambi",
"pyro": "reef",
"sand": "reef",
"snappy": "reef",
"arcada": "sarien",
"sarien-kvm": "sarien",
"falco": "slippy",
"falco_li": "slippy",
"peppy": "slippy",
"banon": "strago",
"celes": "strago",
"cyan": "strago",
"edgar": "strago",
"kefka": "strago",
"reks": "strago",
"relm": "strago",
"sabin": "strago",
"setzer": "strago",
"terra": "strago",
"ultima": "strago",
"wizpig": "strago",
"veyron_fievel": "veyron_pinky",
"veyron_jaq": "veyron_pinky",
"veyron_jerry": "veyron_pinky",
"veyron_mickey": "veyron_pinky",
"veyron_mighty": "veyron_pinky",
"veyron_minnie": "veyron_pinky",
"veyron_rialto": "veyron_pinky",
"veyron_speedy": "veyron_pinky",
"veyron_tiger": "veyron_pinky",
}
// ModelMap refers to the mapping from autotest model to device model:
// https://docs.google.com/spreadsheets/d/1R6ycgnIJnoSWVpN9pVvnrPUacady-vYFkjMrW-pHZ9c/edit#gid=0
var ModelMap = map[string]string{
"arcada_signed": "arcada",
"falco_li": "falco",
"guado-kernelnext": "guado",
"sarien_signed": "sarien",
}
// GetValidPlatform maps some autotest boards to valid device config platform values.
func GetValidPlatform(platform string) string {
if mapped, ok := BoardToPlatformMap[platform]; ok {
return mapped
}
return platform
}
// GetValidModel maps some autotest models to valid device config model values.
func GetValidModel(model string) string {
if mapped, ok := ModelMap[model]; ok {
return mapped
}
return model
}
// ConvertValidDeviceConfigID maps existing device config ID from autotest to valid one.
func ConvertValidDeviceConfigID(dcID *device.ConfigId) *device.ConfigId {
newID := proto.Clone(dcID).(*device.ConfigId)
oldPlatform := dcID.GetPlatformId().GetValue()
if oldPlatform != "" {
newID.PlatformId.Value = GetValidPlatform(oldPlatform)
}
oldModel := dcID.GetModelId().GetValue()
if oldModel != "" {
newID.ModelId.Value = GetValidModel(oldModel)
}
return newID
}