Skip to content

Commit 1e881ff

Browse files
committed
Use env config only for creating devices.
Bug: b/519240653
1 parent 31b7ead commit 1e881ff

4 files changed

Lines changed: 29 additions & 111 deletions

File tree

pkg/app/app_test.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -413,11 +413,7 @@ func TestHostForwarderInjectCredentialsUsingHTTPHeader(t *testing.T) {
413413

414414
func TestHostForwarderDoesNotInjectCredentials(t *testing.T) {
415415
reqURL := "http://test.com/v1/zones/foo/hosts/bar/cvds"
416-
msg, _ := json.Marshal(&hoapi.CreateCVDRequest{
417-
CVD: &hoapi.CVD{
418-
Name: "cvdname",
419-
},
420-
})
416+
msg, _ := json.Marshal(&hoapi.CreateCVDRequest{})
421417
credentials := "abcdef"
422418

423419
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {

pkg/cli/cli.go

Lines changed: 2 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -104,15 +104,6 @@ const (
104104
buildIDFlag = "build_id"
105105
buildTargetFlag = "build_target"
106106
localImageFlag = "local_image"
107-
kernelBranchFlag = "kernel_branch"
108-
kernelBuildIDFlag = "kernel_build_id"
109-
kernelBuildTargetFlag = "kernel_build_target"
110-
bootloaderBranchFlag = "bootloader_branch"
111-
bootloaderBuildIDFlag = "bootloader_build_id"
112-
bootloaderBuildTargetFlag = "bootloader_build_target"
113-
systemImgBranchFlag = "system_branch"
114-
systemImgBuildIDFlag = "system_build_id"
115-
systemImgBuildTargetFlag = "system_build_target"
116107
numInstancesFlag = "num_instances"
117108
connectAgentFlag = "connect_agent"
118109
autoConnectFlag = "auto_connect"
@@ -606,33 +597,13 @@ func createCommand(opts *subCommandOpts) *cobra.Command {
606597
},
607598
}
608599
create.Flags().StringVar(&createFlags.Host, hostFlag, "", "Specifies the host. Creates a new host when it's not specified")
609-
// Main build flags.
600+
// Remote build flags.
610601
create.Flags().StringVar(&createFlags.MainBuild.Branch, branchFlag, "aosp-main", "The branch name")
611602
create.Flags().StringVar(&createFlags.MainBuild.BuildID, buildIDFlag, "", "Android build identifier")
612603
create.Flags().StringVar(&createFlags.MainBuild.Target, buildTargetFlag, "aosp_cf_x86_64_phone-trunk_staging-userdebug",
613604
"Android build target")
614605
create.MarkFlagsMutuallyExclusive(branchFlag, buildIDFlag)
615-
// Kernel build flags
616-
create.Flags().StringVar(&createFlags.KernelBuild.Branch, kernelBranchFlag, "", "Kernel branch name")
617-
create.Flags().StringVar(&createFlags.KernelBuild.BuildID, kernelBuildIDFlag, "", "Kernel build identifier")
618-
create.Flags().StringVar(&createFlags.KernelBuild.Target, kernelBuildTargetFlag, "", "Kernel build target")
619-
create.MarkFlagsMutuallyExclusive(kernelBranchFlag, kernelBuildIDFlag)
620-
// Bootloader build flags
621-
create.Flags().StringVar(&createFlags.BootloaderBuild.Branch, bootloaderBranchFlag, "", "Bootloader branch name")
622-
create.Flags().StringVar(&createFlags.BootloaderBuild.BuildID, bootloaderBuildIDFlag, "", "Bootloader build identifier")
623-
create.Flags().StringVar(&createFlags.BootloaderBuild.Target, bootloaderBuildTargetFlag, "", "Bootloader build target")
624-
create.MarkFlagsMutuallyExclusive(bootloaderBranchFlag, bootloaderBuildIDFlag)
625-
// System image build flags
626-
create.Flags().StringVar(&createFlags.SystemImgBuild.Branch, systemImgBranchFlag, "", "System image branch name")
627-
create.Flags().StringVar(&createFlags.SystemImgBuild.BuildID, systemImgBuildIDFlag, "", "System image build identifier")
628-
create.Flags().StringVar(&createFlags.SystemImgBuild.Target, systemImgBuildTargetFlag, "", "System image build target")
629-
create.MarkFlagsMutuallyExclusive(systemImgBranchFlag, systemImgBuildIDFlag)
630-
remoteBuildFlags := []string{
631-
branchFlag, buildIDFlag, buildTargetFlag,
632-
kernelBranchFlag, kernelBuildIDFlag, kernelBuildTargetFlag,
633-
bootloaderBranchFlag, bootloaderBuildIDFlag, bootloaderBuildTargetFlag,
634-
systemImgBranchFlag, systemImgBuildIDFlag, systemImgBuildTargetFlag,
635-
}
606+
remoteBuildFlags := []string{branchFlag, buildIDFlag, buildTargetFlag}
636607
// Local image
637608
create.Flags().BoolVar(&createFlags.LocalImage, localImageFlag, false,
638609
"Create instance from a local build, the required files are https://cs.android.com/android/platform/superproject/+/master:device/google/cuttlefish/required_images and cvd-host-packages.tar.gz")

pkg/cli/cli_test.go

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -103,30 +103,6 @@ func TestCommandSucceeds(t *testing.T) {
103103
Args: []string{"host", "delete", "foo", "bar"},
104104
ExpOut: "",
105105
},
106-
{
107-
Name: "create",
108-
Args: []string{"create", "--build_id=123"},
109-
ExpOut: expectedOutput(unitTestServiceURL, "foo", &hoapi.CVD{
110-
Group: "cvd-1",
111-
Name: "1",
112-
Status: "Running",
113-
Displays: []string{"720 x 1280 (320)"},
114-
WebRTCDeviceID: "cvd-1-1",
115-
ADBSerial: "0.0.0.0:6520",
116-
}, 12345),
117-
},
118-
{
119-
Name: "create with --host",
120-
Args: []string{"create", "--host=bar", "--build_id=123"},
121-
ExpOut: expectedOutput(unitTestServiceURL, "bar", &hoapi.CVD{
122-
Group: "cvd-1",
123-
Name: "1",
124-
Status: "Running",
125-
Displays: []string{"720 x 1280 (320)"},
126-
WebRTCDeviceID: "cvd-1-1",
127-
ADBSerial: "0.0.0.0:6520",
128-
}, 12345),
129-
},
130106
{
131107
Name: "list",
132108
Args: []string{"list"},

pkg/cli/cvd.go

Lines changed: 26 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -83,13 +83,29 @@ type CreateCVDLocalOpts struct {
8383
LocalImagesZipSrc string
8484
}
8585

86+
// Represents a build from ci.android.com.
87+
type AndroidCIBuild struct {
88+
// The branch name. If omitted the passed `BuildID` will determine the branch.
89+
Branch string
90+
// Uniquely identifies a branch's snapshot. If empty, the latest green snapshot of the used branch will
91+
// be used.
92+
BuildID string
93+
// A string to determine the specific device product and flavor
94+
Target string
95+
}
96+
97+
func (b *AndroidCIBuild) EnvConfigURI() string {
98+
branch := b.Branch
99+
if b.BuildID != "" {
100+
branch = b.BuildID
101+
}
102+
return fmt.Sprintf("@ab/%s/%s", branch, b.Target)
103+
}
104+
86105
type CreateCVDOpts struct {
87-
Host string
88-
MainBuild hoapi.AndroidCIBuild
89-
KernelBuild hoapi.AndroidCIBuild
90-
BootloaderBuild hoapi.AndroidCIBuild
91-
SystemImgBuild hoapi.AndroidCIBuild
92-
LocalImage bool
106+
Host string
107+
MainBuild AndroidCIBuild
108+
LocalImage bool
93109
// Creates multiple instances. Only relevant if given a single build source.
94110
NumInstances int
95111
// TODO(b/378123925): Work with https://github.com/google/android-cuttlefish/blob/main/base/cvd/cuttlefish/host/commands/cvd/cli/parser/load_config.proto
@@ -159,7 +175,7 @@ func (c *cvdCreator) Create() ([]*hoapi.CVD, error) {
159175
if !c.opts.CreateCVDLocalOpts.empty() {
160176
return c.createCVDFromLocalSrcs()
161177
}
162-
return c.createCVDFromAndroidCI()
178+
return c.createWithOpts()
163179
}
164180

165181
var uaEnvConfigTmpl *template.Template
@@ -263,13 +279,6 @@ const (
263279
stateMsgFetchAndStart = "Fetching, starting and waiting for boot complete"
264280
)
265281

266-
func (c *cvdCreator) createCVDFromAndroidCI() ([]*hoapi.CVD, error) {
267-
if c.opts.EnvConfig != nil {
268-
return c.createWithCanonicalConfig()
269-
}
270-
return c.createWithOpts()
271-
}
272-
273282
func (c *cvdCreator) createWithCanonicalConfig() ([]*hoapi.CVD, error) {
274283
hostSrv := c.client.HostClient(c.opts.Host)
275284
envConfig := make(map[string]any)
@@ -386,46 +395,12 @@ func (c *cvdCreator) uploadImagesAndUpdateEnvConfig(client hoclient.HostOrchestr
386395
}
387396

388397
func (c *cvdCreator) createWithOpts() ([]*hoapi.CVD, error) {
389-
var mainBuild, kernelBuild, bootloaderBuild, systemImageBuild *hoapi.AndroidCIBuild
390-
mainBuild = &c.opts.MainBuild
391-
if c.opts.KernelBuild != (hoapi.AndroidCIBuild{}) {
392-
kernelBuild = &c.opts.KernelBuild
393-
}
394-
if c.opts.BootloaderBuild != (hoapi.AndroidCIBuild{}) {
395-
bootloaderBuild = &c.opts.BootloaderBuild
396-
}
397-
if c.opts.SystemImgBuild != (hoapi.AndroidCIBuild{}) {
398-
systemImageBuild = &c.opts.SystemImgBuild
399-
}
400-
fetchReq := &hoapi.FetchArtifactsRequest{
401-
AndroidCIBundle: &hoapi.AndroidCIBundle{Build: mainBuild, Type: hoapi.MainBundleType},
402-
}
403-
c.statePrinter.Print(stateMsgFetchMainBundle)
404-
fetchMainBuildRes, err := c.client.HostClient(c.opts.Host).FetchArtifacts(fetchReq, c.credentialsFactory())
405-
c.statePrinter.PrintDone(stateMsgFetchMainBundle, err)
398+
envConfig, err := buildUAEnvConfig([]string{c.opts.MainBuild.EnvConfigURI()}, c.opts.MainBuild.EnvConfigURI(), c.opts.NumInstances)
406399
if err != nil {
407400
return nil, err
408401
}
409-
createReq := &hoapi.CreateCVDRequest{
410-
CVD: &hoapi.CVD{
411-
BuildSource: &hoapi.BuildSource{
412-
AndroidCIBuildSource: &hoapi.AndroidCIBuildSource{
413-
MainBuild: fetchMainBuildRes.AndroidCIBundle.Build,
414-
KernelBuild: kernelBuild,
415-
BootloaderBuild: bootloaderBuild,
416-
SystemImageBuild: systemImageBuild,
417-
},
418-
},
419-
},
420-
AdditionalInstancesNum: c.opts.AdditionalInstancesNum(),
421-
}
422-
c.statePrinter.Print(stateMsgStartCVD)
423-
res, err := c.client.HostClient(c.opts.Host).CreateCVD(createReq, c.credentialsFactory())
424-
c.statePrinter.PrintDone(stateMsgStartCVD, err)
425-
if err != nil {
426-
return nil, err
427-
}
428-
return res.CVDs, nil
402+
c.opts.EnvConfig = envConfig
403+
return c.createWithCanonicalConfig()
429404
}
430405

431406
func (c *cvdCreator) createCVDFromLocalSrcs() ([]*hoapi.CVD, error) {

0 commit comments

Comments
 (0)