provision: remove code and leave placeholders behind

All CFT provision code is now in infra/infra.

BUG=b:393597613
TEST=Presubmit

Change-Id: I47a16001e4e334618df74f19fc722bd1faedfb28
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/dev-util/+/6343963
Auto-Submit: Julio Hurtado <juahurta@google.com>
Tested-by: Julio Hurtado <juahurta@google.com>
Reviewed-by: Jae Hoon Kim <kimjae@chromium.org>
Reviewed-by: Chris DeLaGarza <cdelagarza@google.com>
Commit-Queue: Chris DeLaGarza <cdelagarza@google.com>
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/cli/abstract_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/cli/abstract_command.go
deleted file mode 100644
index f37c754..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/cli/abstract_command.go
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package cli
-
-import (
-	"errors"
-	"fmt"
-	"os"
-)
-
-// AbstractCommand represents a CLI grouping (e.g.: run as server, run as CLI, etc)
-type AbstractCommand interface {
-	// Run runs the command
-	Run() error
-
-	// Is checks if the string is representative of the command
-	Is(string) bool
-
-	// Init is an initializer for the command given the trailing args
-	Init([]string) error
-
-	// Name is the command name (for debugging)
-	Name() string
-
-	// Usage prints to standard error a usage message showing the default settings of all defined command-line flags
-	Usage()
-}
-
-// ParseInputs is a helper method which parses input arguments. It is
-// effectively a factory method.
-func ParseInputs() (AbstractCommand, error) {
-	if len(os.Args) < 2 {
-		return nil, errors.New("input arguments must be specified")
-	}
-
-	cmds := []AbstractCommand{
-		NewServerCommand(),
-		NewCLICommand(),
-	}
-
-	subcommand := os.Args[1]
-	var options []string
-
-	for _, cmd := range cmds {
-		options = append(options, cmd.Name())
-		if cmd.Is(subcommand) {
-			if err := cmd.Init(os.Args[2:]); err != nil {
-				return nil, fmt.Errorf("failed to initialize cli command, %s", err)
-			}
-			return cmd, nil
-		}
-	}
-
-	return nil, fmt.Errorf("unknown subcommand: %s. \nOptions are: [%s]", subcommand, options)
-
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/cli/cli_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/cli/cli_command.go
deleted file mode 100644
index 09a5287..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/cli/cli_command.go
+++ /dev/null
@@ -1,205 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package cli
-
-import (
-	"context"
-	"errors"
-	"flag"
-	"fmt"
-	"log"
-	"os"
-	"path/filepath"
-	"strings"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	lab_api "go.chromium.org/chromiumos/config/go/test/lab/api"
-	"google.golang.org/grpc"
-	"google.golang.org/grpc/credentials/insecure"
-	"google.golang.org/protobuf/encoding/protojson"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/service"
-	state_machine "go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/test"
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-)
-
-var statusToResult = map[api.InstallResponse_Status]api.InstallFailure_Reason{
-	api.InstallResponse_STATUS_INVALID_REQUEST:               api.InstallFailure_REASON_INVALID_REQUEST,
-	api.InstallResponse_STATUS_DUT_UNREACHABLE_PRE_PROVISION: api.InstallFailure_REASON_DUT_UNREACHABLE_PRE_PROVISION,
-	api.InstallResponse_STATUS_DOWNLOADING_IMAGE_FAILED:      api.InstallFailure_REASON_DOWNLOADING_IMAGE_FAILED,
-	api.InstallResponse_STATUS_PROVISIONING_FAILED:           api.InstallFailure_REASON_PROVISIONING_FAILED,
-	api.InstallResponse_STATUS_POST_PROVISION_SETUP_FAILED:   api.InstallFailure_REASON_POST_PROVISION_SETUP_FAILED,
-	api.InstallResponse_STATUS_PRE_PROVISION_SETUP_FAILED:    api.InstallFailure_REASON_PRE_PROVISION_SETUP_FAILED,
-	api.InstallResponse_STATUS_CIPD_PACKAGE_LOOKUP_FAILED:    api.InstallFailure_REASON_CIPD_PACKAGE_LOOKUP_FAILED,
-	api.InstallResponse_STATUS_CIPD_PACKAGE_FETCH_FAILED:     api.InstallFailure_REASON_CIPD_PACKAGE_FETCH_FAILED,
-	api.InstallResponse_STATUS_GS_UPLOAD_FAILED:              api.InstallFailure_REASON_GS_UPLOAD_FAILED,
-	api.InstallResponse_STATUS_GS_DOWNLOAD_FAILED:            api.InstallFailure_REASON_GS_DOWNLOAD_FAILED,
-}
-
-// CLICommand executed the provisioning as a CLI
-type CLICommand struct {
-	logFileName string
-	log         *log.Logger
-	inputFile   string
-	inputProto  *api.AndroidProvisionRequest
-	outputFile  string
-	flagSet     *flag.FlagSet
-}
-
-func NewCLICommand() *CLICommand {
-	cc := &CLICommand{
-		flagSet: flag.NewFlagSet("cli", flag.ContinueOnError),
-	}
-
-	cc.flagSet.StringVar(&cc.logFileName, "log-path", common.DefaultLogDirectory, fmt.Sprintf("Path to record execution logs. Default value is %s", common.DefaultLogDirectory))
-	cc.flagSet.StringVar(&cc.inputFile, "input", "", "Specify the request jsonproto input file. Provide service paths and ProvisionState.")
-	cc.flagSet.StringVar(&cc.outputFile, "output", "", "Specify the response jsonproto output file. Empty placeholder file to provide result from provisioning the DUT.")
-	return cc
-}
-
-func (cc *CLICommand) Is(group string) bool {
-	return strings.HasPrefix(group, "c")
-}
-
-func (cc *CLICommand) Name() string {
-	return "cli"
-}
-
-func (cc *CLICommand) Init(args []string) error {
-	err := cc.flagSet.Parse(args)
-	if err != nil {
-		return err
-	}
-
-	cc.log, err = common.SetUpLog(cc.logFileName)
-	if err != nil {
-		return err
-	}
-
-	if err = cc.validate(); err != nil {
-		return err
-	}
-
-	cc.inputProto, err = common_utils.ParseAndroidProvisionRequest(cc.inputFile)
-	if err != nil {
-		return fmt.Errorf("unable to parse AndroidProvisionRequest proto: %s", err)
-	}
-
-	return nil
-}
-
-func (cc *CLICommand) Usage() {
-	cc.flagSet.Usage()
-}
-
-// Logger returns the log
-func (cc *CLICommand) Logger() *log.Logger {
-	return cc.log
-}
-
-// validate checks if inputs are ok
-func (cc *CLICommand) validate() error {
-	if cc.inputFile == "" {
-		return errors.New("input file not specified")
-	}
-
-	if cc.outputFile == "" {
-		return errors.New("output file not specified")
-	}
-	return nil
-}
-
-func (cc *CLICommand) Run() error {
-	cc.log.Printf("Running CLI Mode (V2):")
-	dutAddr := fmt.Sprintf("%s:%d", cc.inputProto.GetDutServer().GetAddress(), cc.inputProto.GetDutServer().GetPort())
-	cc.log.Printf("DutAddr: %s", dutAddr)
-	dutConn, err := grpc.Dial(dutAddr, grpc.WithTransportCredentials(insecure.NewCredentials()))
-	if err != nil {
-		return fmt.Errorf("failed to connect to dut-service: %s", err)
-	}
-	cc.log.Printf("Dut Conn Established")
-	defer dutConn.Close()
-	ip := cc.inputProto.GetDutServer().GetAddress()
-	var svc *service.AndroidService
-	// Use local adapter for testing. See testing folder.
-	if ip == "127.0.0.1" {
-		svcAdapter, err := test.NewLocalDutServiceAdapter(cc.inputProto.GetDutServer())
-		if err != nil {
-			return fmt.Errorf("failed to create AndroidService: %s", err)
-		}
-		svc, err = service.NewAndroidServiceFromExistingConnection(svcAdapter, cc.inputProto.GetDut().GetAndroid().GetSerialNumber(), cc.inputProto.GetProvisionState().GetAndroidOsImage(), cc.inputProto.GetProvisionState().GetCipdPackages())
-		if err != nil {
-			return fmt.Errorf("failed to create Android service: %s", err)
-		}
-		} else {
-			svc, err = service.NewAndroidServiceFromAndroidProvisionRequest(api.NewDutServiceClient(dutConn), cc.inputProto)
-			if err != nil {
-				return fmt.Errorf("failed to create Android service: %s", err)
-			}
-		}
-	cc.log.Printf("New AndroidService Created")
-	out := &api.AndroidProvisionCLIResponse{
-		Id: &lab_api.Dut_Id{
-			Value: cc.inputProto.GetDut().GetId().GetValue(),
-		},
-		Outcome: &api.AndroidProvisionCLIResponse_Success{},
-	}
-	defer cc.saveResponse(out)
-	cc.log.Printf("Starting State Machine.")
-	respStatus, _, err := common_utils.ExecuteStateMachine(context.Background(), state_machine.NewPrepareState(svc), cc.log)
-	if os := svc.OS; os != nil && os.UpdatedBuildInfo != nil {
-		out.InstalledAndroidOs = &api.InstalledAndroidOS{
-			BuildId:            os.UpdatedBuildInfo.Id,
-			OsVersion:          os.UpdatedBuildInfo.OsVersion,
-			IncrementalVersion: os.UpdatedBuildInfo.IncrementalVersion,
-		}
-	}
-	for _, pkg := range svc.ProvisionPackages {
-		if androidPkg := pkg.AndroidPackage; androidPkg != nil && androidPkg.UpdatedVersionCode != "" {
-			installedPkg := &api.InstalledAndroidPackage{
-				Name:        androidPkg.PackageName,
-				VersionCode: androidPkg.UpdatedVersionCode,
-			}
-			out.AndroidPackages = append(out.AndroidPackages, installedPkg)
-		}
-	}
-	if err != nil {
-		cc.log.Printf("State Machine Failed: %v", err)
-		translatedStatus := statusToResult[respStatus]
-		out.Outcome = &api.AndroidProvisionCLIResponse_Failure{
-			Failure: &api.InstallFailure{
-				Reason: api.InstallFailure_Reason(translatedStatus),
-			},
-		}
-		return fmt.Errorf("failed to provision, %s", err)
-	}
-	return nil
-}
-
-// saveResponse saves response to the output file.
-func (cc *CLICommand) saveResponse(out *api.AndroidProvisionCLIResponse) error {
-	cc.log.Printf("saveCLIOutput out:%s\n", out)
-	if cc.outputFile != "" && out != nil {
-		dir := filepath.Dir(cc.outputFile)
-		// Create the directory if it doesn't exist.
-		if err := os.MkdirAll(dir, 0777); err != nil {
-			return fmt.Errorf("save output: fail to create directory for %q", cc.outputFile)
-		}
-		w, err := os.Create(cc.outputFile)
-		if err != nil {
-			return fmt.Errorf("save output: failed to create file %q", cc.outputFile)
-		}
-		defer w.Close()
-
-		if json, err := protojson.Marshal(out); err != nil {
-			return fmt.Errorf("save output: failed to marshal output")
-		} else {
-			w.Write(json)
-		}
-	}
-	return nil
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/cli/server_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/cli/server_command.go
deleted file mode 100644
index 64e4011..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/cli/server_command.go
+++ /dev/null
@@ -1,126 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package cli
-
-import (
-	"errors"
-	"flag"
-	"fmt"
-	"strings"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/executor"
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"go.chromium.org/chromiumos/test/provision/v2/common-utils/metadata"
-	"go.chromium.org/chromiumos/test/provision/v2/common-utils/server"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-// ServerCommand executed the provisioning as a Server
-type ServerCommand struct {
-	metadata     *metadata.ServerMetadata
-	logFileName  string
-	metadataFile string
-	flagSet      *flag.FlagSet
-}
-
-func NewServerCommand() *ServerCommand {
-	sc := &ServerCommand{
-		flagSet:  flag.NewFlagSet("server", flag.ContinueOnError),
-		metadata: &metadata.ServerMetadata{},
-	}
-	sc.flagSet.IntVar(&sc.metadata.Port, "port", common.DefaultServerPort, fmt.Sprintf("Specify the port for the server. Default value %d.", common.DefaultServerPort))
-	sc.flagSet.StringVar(&sc.logFileName, "log-path", common.DefaultLogDirectory, fmt.Sprintf("Path to record execution logs. Default value is %s", common.DefaultLogDirectory))
-	sc.flagSet.StringVar(&sc.metadataFile, "metadata", "", "Specify the request jsonproto input file. Provide service paths and ProvisionState.")
-	return sc
-}
-
-func (sc *ServerCommand) Is(group string) bool {
-	return strings.HasPrefix(group, "s")
-}
-
-func (sc *ServerCommand) Name() string {
-	return "server"
-}
-
-func (sc *ServerCommand) Init(args []string) error {
-	err := sc.flagSet.Parse(args)
-	if err != nil {
-		return err
-	}
-
-	sc.metadata.Log, err = common.SetUpLog(sc.logFileName)
-	if err != nil {
-		return fmt.Errorf("unable to set up logs: %s", err)
-	}
-
-	if err = sc.validateCLIInputs(); err != nil {
-		return err
-	}
-
-	if sc.metadataFile != "" {
-		sc.metadata.Log.Println("warning: CLI arg 'metadata' is deprecated, please use the StartUp RPC instead.")
-		apr, err := common_utils.ParseAndroidProvisionRequest(sc.metadataFile)
-		if err != nil {
-			return fmt.Errorf("unable to parse AndroidProvisionRequest proto: %s", err)
-		}
-
-		if err = sc.validateProtoInputs(apr); err != nil {
-			return err
-		}
-		sc.metadata.Dut = apr.GetDut()
-		sc.metadata.DutAddress = fmt.Sprintf("%s:%d", apr.GetDutServer().GetAddress(), apr.GetDutServer().GetPort())
-	}
-
-	return nil
-}
-
-func (sc *ServerCommand) Usage() {
-	sc.flagSet.Usage()
-}
-
-// validateCLIInputs ensures the CLI input values are valid
-func (sc *ServerCommand) validateCLIInputs() error {
-	return nil
-}
-
-// validateProtoInputs ensures the proto part of the CLI input is valid
-func (sc *ServerCommand) validateProtoInputs(apr *api.AndroidProvisionRequest) error {
-	if apr.GetDut() == nil || apr.GetDut().GetId().GetValue() == "" {
-		return errors.New("dut id is not specified in input file")
-	}
-	if apr.GetDut().GetAndroid() == nil {
-		return errors.New("android dut is not specified in input file")
-	}
-	if apr.GetDut().GetAndroid().GetSerialNumber() == "" {
-		return errors.New("android dut serial number is missing from input file")
-	}
-	if apr.GetDut().GetAndroid().GetAssociatedHostname() == nil || apr.GetDut().GetAndroid().GetAssociatedHostname().GetAddress() == "" {
-		return errors.New("associated host of android dut is not specified in input file")
-	}
-	if apr.GetDutServer() == nil || apr.DutServer.GetAddress() == "" || apr.DutServer.GetPort() <= 0 {
-		return errors.New("dut server address is no specified or incorrect in input file")
-	}
-	return nil
-}
-
-func (sc *ServerCommand) Run() error {
-	sc.metadata.Log.Printf("running server mode:")
-
-	svc, closer, err := server.NewProvisionServer(sc.metadata, &executor.AndroidProvisionExecutor{})
-	defer closer()
-	if err != nil {
-		sc.metadata.Log.Fatalln("failed to create provision: ", err)
-		return err
-	}
-
-	if err := svc.Start(); err != nil {
-		sc.metadata.Log.Fatalln("failed server execution: ", err)
-		return err
-	}
-
-	return nil
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/common/cipd/cipd_client.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/common/cipd/cipd_client.go
deleted file mode 100644
index 10e3fa1..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/common/cipd/cipd_client.go
+++ /dev/null
@@ -1,109 +0,0 @@
-// Copyright 2022 The Chromium Authors.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package cipd
-
-import (
-	"context"
-	"fmt"
-	"os"
-	"path/filepath"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"go.chromium.org/luci/cipd/client/cipd"
-	"go.chromium.org/luci/cipd/common"
-	"go.chromium.org/luci/common/errors"
-)
-
-type CIPDClient interface {
-	Describe(cipdPackageProto *api.CIPDPackage, describeTags, describeRefs bool) (*cipd.InstanceDescription, error)
-	FetchInstanceTo(cipdPackageProto *api.CIPDPackage, packageName, instanceId, filePath string) error
-}
-
-type CIPD struct {
-	ctx       context.Context
-	userAgent string
-}
-
-func NewCIPDClient(ctx context.Context) *CIPD {
-	return &CIPD{
-		ctx:       ctx,
-		userAgent: "FleetServices: AndroidProvision",
-	}
-}
-
-// Describe returns information about CIPD package instances.
-func (c *CIPD) Describe(cipdPackageProto *api.CIPDPackage, describeTags, describeRefs bool) (*cipd.InstanceDescription, error) {
-	clientOptions := cipd.ClientOptions{
-		UserAgent: fmt.Sprintf("%s; %s", c.userAgent, cipd.UserAgent),
-	}
-	if cipdPackageProto.GetServiceUrl() != "" {
-		clientOptions.ServiceURL = cipdPackageProto.GetServiceUrl()
-	}
-	client, err := cipd.NewClientFromEnv(c.ctx, clientOptions)
-	if err != nil {
-		return nil, errors.Annotate(err, "describe package").Err()
-	}
-	defer client.Close(c.ctx)
-	pkgVersion, err := c.getVersion(cipdPackageProto)
-	if err != nil {
-		return nil, errors.Annotate(err, "describe package").Err()
-	}
-	pin, err := client.ResolveVersion(c.ctx, cipdPackageProto.GetName(), pkgVersion)
-	if err != nil {
-		return nil, errors.Annotate(err, "describe package").Err()
-	}
-	d, err := client.DescribeInstance(c.ctx, pin, &cipd.DescribeInstanceOpts{DescribeTags: describeTags, DescribeRefs: describeRefs})
-	if err != nil {
-		return nil, errors.Annotate(err, "describe package").Err()
-	}
-	return d, nil
-}
-
-// FetchInstanceTo downloads CIPD package to a given location.
-func (c *CIPD) FetchInstanceTo(cipdPackageProto *api.CIPDPackage, packageName, instanceId, filePath string) error {
-	clientOptions := cipd.ClientOptions{
-		UserAgent: fmt.Sprintf("%s; %s", c.userAgent, cipd.UserAgent),
-	}
-	if cipdPackageProto.GetServiceUrl() != "" {
-		clientOptions.ServiceURL = cipdPackageProto.GetServiceUrl()
-	}
-	client, err := cipd.NewClientFromEnv(c.ctx, clientOptions)
-	if err != nil {
-		return errors.Annotate(err, "fetch instance to").Err()
-	}
-	defer client.Close(c.ctx)
-	if err := os.MkdirAll(filepath.Dir(filePath), 0755); err != nil {
-		return errors.Annotate(err, "fetch instance to").Err()
-	}
-	out, err := os.OpenFile(filePath, os.O_CREATE|os.O_WRONLY, 0666)
-	if err != nil {
-		return errors.Annotate(err, "fetch instance to").Err()
-	}
-	defer func() {
-		out.Close()
-	}()
-	pin := common.Pin{
-		PackageName: packageName,
-		InstanceID:  instanceId,
-	}
-	return client.FetchInstanceTo(c.ctx, pin, out)
-}
-
-func (c *CIPD) getVersion(cipdPackageProto *api.CIPDPackage) (string, error) {
-	if cipdPackageProto.GetVersionOneof() == nil && cipdPackageProto.GetAndroidPackage() == api.AndroidPackage_GMS_CORE {
-		// GMSCore version is latest_stable by default.
-		return "latest_stable", nil
-	}
-	switch v := cipdPackageProto.GetVersionOneof().(type) {
-	case *api.CIPDPackage_Ref:
-		return cipdPackageProto.GetRef(), nil
-	case *api.CIPDPackage_Tag:
-		return cipdPackageProto.GetTag(), nil
-	case *api.CIPDPackage_InstanceId:
-		return cipdPackageProto.GetInstanceId(), nil
-	default:
-		return "", errors.Reason("unknown CIPD version type: %T", v).Err()
-	}
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/common/cipd/mock_cipd_client.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/common/cipd/mock_cipd_client.go
deleted file mode 100644
index 4573afa..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/common/cipd/mock_cipd_client.go
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright 2022 The Chromium Authors.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package cipd
-
-import (
-	"reflect"
-
-	"github.com/golang/mock/gomock"
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"go.chromium.org/luci/cipd/client/cipd"
-)
-
-// MockCIPDClientInterface is a mock of CIPDClient interface.
-type MockCIPDClientInterface struct {
-	ctrl     *gomock.Controller
-	recorder *MockCIPDClientInterfaceMockRecorder
-}
-
-// MockCIPDClientInterfaceMockRecorder is the mock recorder for CIPDClient.
-type MockCIPDClientInterfaceMockRecorder struct {
-	mock *MockCIPDClientInterface
-}
-
-// NewMockCIPDClientInterface creates a new mock instance.
-func NewMockCIPDClientInterface(ctrl *gomock.Controller) *MockCIPDClientInterface {
-	mock := &MockCIPDClientInterface{ctrl: ctrl}
-	mock.recorder = &MockCIPDClientInterfaceMockRecorder{mock}
-	return mock
-}
-
-// EXPECT returns an object that allows the caller to indicate expected use.
-func (m *MockCIPDClientInterface) EXPECT() *MockCIPDClientInterfaceMockRecorder {
-	return m.recorder
-}
-
-// Describe mocks base method.
-func (m *MockCIPDClientInterface) Describe(cipdPackageProto *api.CIPDPackage, describeTags, describeRefs bool) (*cipd.InstanceDescription, error) {
-	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "Describe", cipdPackageProto, describeTags, describeRefs)
-	ret0, _ := ret[0].(*cipd.InstanceDescription)
-	ret1, _ := ret[1].(error)
-	return ret0, ret1
-}
-
-// Describe indicates an expected call of Describe.
-func (mr *MockCIPDClientInterfaceMockRecorder) Describe(cipdPackageProto, describeTags, describeRefs interface{}) *gomock.Call {
-	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Describe", reflect.TypeOf((*MockCIPDClientInterface)(nil).Describe), cipdPackageProto, describeTags, describeRefs)
-}
-
-// FetchInstanceTo mocks base method.
-func (m *MockCIPDClientInterface) FetchInstanceTo(cipdPackageProto *api.CIPDPackage, packageName, instanceId, filePath string) error {
-	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "FetchInstanceTo", cipdPackageProto, packageName, instanceId, filePath)
-	ret0, _ := ret[0].(error)
-	return ret0
-}
-
-// FetchInstanceTo indicates an expected call of FetchInstanceTo.
-func (mr *MockCIPDClientInterfaceMockRecorder) FetchInstanceTo(cipdPackageProto, packageName, instanceId, filePath interface{}) *gomock.Call {
-	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FetchInstanceTo", reflect.TypeOf((*MockCIPDClientInterface)(nil).Describe), cipdPackageProto, packageName, instanceId, filePath)
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/common/constants.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/common/constants.go
deleted file mode 100644
index 35b6699..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/common/constants.go
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package common
-
-const (
-	DefaultServerPort   = 80
-	DefaultLogDirectory = "/tmp/provision/"
-
-	CIPDVersionCodeTagName = "version_code"
-
-	ADBVendorKeys               = "/var/lib/android_keys"
-	ADBUnixSocketMountDirectory = "/run/arc/adb"
-	GMSCorePackageName          = "com.google.android.gms"
-	GMSCoreCIPDPath             = "chromiumos/infra/skylab/third_party/gmscore/"
-
-	// DroneServiceAccountCreds is needed to upload APKs to Android Provisioning GSBucket.
-	DroneServiceAccountCreds = "/creds/service_accounts/skylab-drone.json"
-	GSImageBucketName        = "android-provisioning-images"
-	GSPackageBucketName      = "android-provisioning-apks"
-)
-
-type ProvisionState int64
-
-const (
-	Prepare ProvisionState = iota
-	OSFetch
-	OSInstall
-	PackageFetch
-	PackageInstall
-	PostInstall
-)
-
-var OSVersionToBuildIDMap = map[string]map[string]string{
-	"10": {
-		"sunfish": "QD4A.200805.003", // android-10.0.0_r45
-	},
-	"11": {
-		"sunfish": "RQ3A.211001.001", // android-11.0.0_r46
-		"redfin":  "RQ3A.211001.001", // android-11.0.0_r46
-		"barbet":  "RD2A.211001.002", // android-11.0.0_r48
-	},
-	"12": {
-		"sunfish": "SQ3A.220705.003.A1", // android-12.1.0_r11
-		"redfin":  "SQ3A.220705.003.A1", // android-12.1.0_r11
-		"barbet":  "SQ3A.220705.003.A1", // android-12.1.0_r11
-		"oriole":  "SQ3A.220705.003.A1", // android-12.1.0_r11
-		"raven":   "SQ3A.220705.003.A1", // android-12.1.0_r11
-	},
-	"13": {
-		"sunfish": "TQ1A.230205.002", // android-13.0.0_r30
-		"redfin":  "TQ1A.230205.002", // android-13.0.0_r30
-		"barbet":  "TQ1A.230205.002", // android-13.0.0_r30
-		"oriole":  "TQ1A.230205.002", // android-13.0.0_r30
-		"raven":   "TQ1A.230205.002", // android-13.0.0_r30
-	},
-}
-
-var OSVersionToGMSCorePlatformMap = map[string]string{
-	"10": "prodpi",
-	"11": "prodrvc",
-	"12": "prodsc",
-	"13": "prodsc",
-	"14": "prodsc",
-	"15": "prodvic",
-}
-
-type ProvisionCtxKey string
-
-const StageCtxKey ProvisionCtxKey = "stage"
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/common/gsstorage/gs_client.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/common/gsstorage/gs_client.go
deleted file mode 100644
index b42ebe4..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/common/gsstorage/gs_client.go
+++ /dev/null
@@ -1,108 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package gsstorage
-
-import (
-	"context"
-	"io"
-	"os"
-	"path/filepath"
-	"time"
-
-	"cloud.google.com/go/storage"
-
-	"google.golang.org/api/iterator"
-	"google.golang.org/api/option"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common"
-)
-
-// GsClient specifies the APIs between provisioning service and storage client.
-// GsClient interface is used mainly for testing purpose,
-// since storage pkg does not provide test pkg.
-type GsClient interface {
-	// Upload uploads an apk to the Fleet Services caching service.
-	Upload(ctx context.Context, apkLocalPath string, apkName string) error
-	// ListFiles lists objects using prefix and delimeter.
-	ListFiles(ctx context.Context, prefix, delim string) ([]string, error)
-}
-
-// gs is mainly used for testing purpose.
-type gs struct {
-	bucketName string
-}
-
-func NewGsClient(bucketName string) GsClient {
-	return &gs{
-		bucketName: bucketName,
-	}
-}
-
-func (gs *gs) Upload(ctx context.Context, apkPath string, remotePath string) error {
-	client, err := storage.NewClient(ctx, option.WithCredentialsFile(common.DroneServiceAccountCreds))
-	if err != nil {
-		return err
-	}
-	defer client.Close()
-	f, err := os.Open(apkPath)
-	if err != nil {
-		return err
-	}
-	defer f.Close()
-	// Cancel after 5m.
-	ctx, cancel := context.WithTimeout(ctx, time.Minute*5)
-	defer cancel()
-	// Upload will be retried until context is canceled.
-	o := client.Bucket(gs.bucketName).Object(remotePath).Retryer(storage.WithPolicy(storage.RetryAlways))
-	// Only upload object if it does not already exist.
-	o = o.If(storage.Conditions{DoesNotExist: true})
-	wc := o.NewWriter(ctx)
-	if _, err = io.Copy(wc, f); err != nil {
-		return err
-	}
-	if err := wc.Close(); err != nil {
-		return err
-	}
-	return nil
-}
-
-// GetGsPath return GS path to image files.
-func GetGsPath(bucketName string, folders ...string) string {
-	if bucketName == "" {
-		bucketName = common.GSImageBucketName
-	}
-	return "gs://" + filepath.Join(append([]string{bucketName}, folders...)...) + "/"
-}
-
-func (gs *gs) ListFiles(ctx context.Context, prefix, delim string) ([]string, error) {
-	client, err := storage.NewClient(ctx, option.WithCredentialsFile(common.DroneServiceAccountCreds))
-	if err != nil {
-		return nil, err
-	}
-	defer client.Close()
-	ctx, cancel := context.WithTimeout(ctx, time.Minute)
-	defer cancel()
-
-	it := client.Bucket(gs.bucketName).Objects(ctx, &storage.Query{
-		Prefix:     prefix,
-		Delimiter:  delim,
-		Projection: storage.ProjectionNoACL,
-	})
-	var names []string
-	for {
-		attrs, err := it.Next()
-		if err == iterator.Done {
-			break
-		}
-		if err != nil {
-			return nil, err
-		}
-		// Filtering out current folder/prefix from listing.
-		if name := attrs.Name; name != prefix {
-			names = append(names, filepath.Base(name))
-		}
-	}
-	return names, err
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/common/gsstorage/mock_gsclient.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/common/gsstorage/mock_gsclient.go
deleted file mode 100644
index 533a7c7..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/common/gsstorage/mock_gsclient.go
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2022 The Chromium Authors.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package gsstorage
-
-import (
-	context "context"
-	reflect "reflect"
-
-	gomock "github.com/golang/mock/gomock"
-)
-
-// MockGsClient is a mock of GsClient interface.
-type MockGsClient struct {
-	ctrl     *gomock.Controller
-	recorder *MockGsClientMockRecorder
-}
-
-// MockGsClientMockRecorder is the mock recorder for MockGsClient.
-type MockGsClientMockRecorder struct {
-	mock *MockGsClient
-}
-
-// NewMockGsClient creates a new mock instance.
-func NewMockGsClient(ctrl *gomock.Controller) *MockGsClient {
-	mock := &MockGsClient{ctrl: ctrl}
-	mock.recorder = &MockGsClientMockRecorder{mock}
-	return mock
-}
-
-// EXPECT returns an object that allows the caller to indicate expected use.
-func (m *MockGsClient) EXPECT() *MockGsClientMockRecorder {
-	return m.recorder
-}
-
-// ListFiles mocks base method.
-func (m *MockGsClient) ListFiles(arg0 context.Context, arg1, arg2 string) ([]string, error) {
-	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "ListFiles", arg0, arg1, arg2)
-	ret0, _ := ret[0].([]string)
-	ret1, _ := ret[1].(error)
-	return ret0, ret1
-}
-
-// ListFiles indicates an expected call of ListFiles.
-func (mr *MockGsClientMockRecorder) ListFiles(arg0, arg1, arg2 interface{}) *gomock.Call {
-	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListFiles", reflect.TypeOf((*MockGsClient)(nil).ListFiles), arg0, arg1, arg2)
-}
-
-// Upload mocks base method.
-func (m *MockGsClient) Upload(arg0 context.Context, arg1, arg2 string) error {
-	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "Upload", arg0, arg1, arg2)
-	ret0, _ := ret[0].(error)
-	return ret0
-}
-
-// Upload indicates an expected call of Upload.
-func (mr *MockGsClientMockRecorder) Upload(arg0, arg1, arg2 interface{}) *gomock.Call {
-	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Upload", reflect.TypeOf((*MockGsClient)(nil).Upload), arg0, arg1, arg2)
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/common/logger.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/common/logger.go
deleted file mode 100644
index bcfa5f5..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/common/logger.go
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package common
-
-import (
-	"fmt"
-	"io"
-	"log"
-	"os"
-	"path/filepath"
-)
-
-// SetUpLog sets up the logging.
-func SetUpLog(dir string) (*log.Logger, error) {
-	if err := os.MkdirAll(dir, 0755); err != nil {
-		return nil, fmt.Errorf("failed to create directory %v: %v", dir, err)
-	}
-	lfp := filepath.Join(dir, "log.txt")
-	lf, err := os.Create(lfp)
-	if err != nil {
-		return nil, fmt.Errorf("failed to create file %v: %v", lfp, err)
-	}
-	return log.New(io.MultiWriter(lf, os.Stderr), "", log.LstdFlags|log.LUTC), nil
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/common/zip/mock_zip_reader.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/common/zip/mock_zip_reader.go
deleted file mode 100644
index c664c58..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/common/zip/mock_zip_reader.go
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2022 The Chromium Authors.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package zip
-
-import (
-	"reflect"
-
-	"github.com/golang/mock/gomock"
-)
-
-// MockZipReaderInterface is a mock of ZipReader interface.
-type MockZipReaderInterface struct {
-	ctrl     *gomock.Controller
-	recorder *MockZipReaderInterfaceMockRecorder
-}
-
-// MockZipReaderInterfaceMockRecorder is the mock recorder for ZipReader.
-type MockZipReaderInterfaceMockRecorder struct {
-	mock *MockZipReaderInterface
-}
-
-// NewMockZipReaderInterface creates a new mock instance.
-func NewMockZipReaderInterface(ctrl *gomock.Controller) *MockZipReaderInterface {
-	mock := &MockZipReaderInterface{ctrl: ctrl}
-	mock.recorder = &MockZipReaderInterfaceMockRecorder{mock}
-	return mock
-}
-
-// EXPECT returns an object that allows the caller to indicate expected use.
-func (m *MockZipReaderInterface) EXPECT() *MockZipReaderInterfaceMockRecorder {
-	return m.recorder
-}
-
-// UnzipFile mocks base method.
-func (m *MockZipReaderInterface) UnzipFile(srcFile, dstPath string) error {
-	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "UnzipFile", srcFile, dstPath)
-	ret0, _ := ret[0].(error)
-	return ret0
-}
-
-// UnzipFile indicates an expected call of UnzipFile.
-func (mr *MockZipReaderInterfaceMockRecorder) UnzipFile(srcFile, dstPath interface{}) *gomock.Call {
-	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UnzipFile", reflect.TypeOf((*MockZipReaderInterface)(nil).UnzipFile), srcFile, dstPath)
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/common/zip/zip_reader.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/common/zip/zip_reader.go
deleted file mode 100644
index ff4c991..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/common/zip/zip_reader.go
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2022 The Chromium Authors.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package zip
-
-import (
-	"archive/zip"
-	"io"
-	"os"
-	"path/filepath"
-	"strings"
-)
-
-type ZipReader interface {
-	UnzipFile(s, d string) error
-}
-
-type Zip struct {
-}
-
-func (z *Zip) UnzipFile(srcFile, dstPath string) error {
-	r, e := zip.OpenReader(srcFile)
-	if e != nil {
-		return e
-	}
-	defer r.Close()
-	for _, f := range r.File {
-		if f.FileInfo().IsDir() {
-			os.MkdirAll(filepath.Join(dstPath, f.Name), os.ModePerm)
-			continue
-		}
-		filePath := filepath.Join(dstPath, strings.ToLower(f.Name))
-		if err := os.MkdirAll(filepath.Dir(filePath), os.ModePerm); err != nil {
-			return err
-		}
-		var err error
-		var dstFile *os.File
-		if dstFile, err = os.OpenFile(filePath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, f.Mode()); err == nil {
-			var fileInArchive io.ReadCloser
-			if fileInArchive, err = f.Open(); err == nil {
-				_, err = io.Copy(dstFile, fileInArchive)
-				fileInArchive.Close()
-			}
-			dstFile.Close()
-		}
-		if err != nil {
-			return err
-		}
-	}
-	return nil
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/executor/android_service_executor.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/executor/android_service_executor.go
deleted file mode 100644
index 18795e1..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/executor/android_service_executor.go
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package executor
-
-import (
-	"errors"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	lab_api "go.chromium.org/chromiumos/config/go/test/lab/api"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/service"
-	state_machine "go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine"
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-)
-
-type AndroidProvisionExecutor struct {
-}
-
-func (c *AndroidProvisionExecutor) GetFirstState(dut *lab_api.Dut, dutClient api.DutServiceClient, servoNexusAddr string, req *api.InstallRequest) (common_utils.ServiceState, error) {
-	svc, err := service.NewAndroidService(dut, dutClient, req)
-	if err != nil {
-		return nil, err
-	}
-	return state_machine.NewPrepareState(svc), nil
-}
-
-// Validate ensures the ProvisionStartupRequest meets specified requirements.
-func (c *AndroidProvisionExecutor) Validate(req *api.ProvisionStartupRequest) error {
-	if req.GetDut() == nil || req.GetDut().GetId().GetValue() == "" {
-		return errors.New("dut id is not specified in input file")
-	}
-	if req.GetDut().GetAndroid() == nil {
-		return errors.New("android dut is not specified in input file")
-	}
-	if req.GetDut().GetAndroid().GetSerialNumber() == "" {
-		return errors.New("android dut serial number is missing from input file")
-	}
-	if req.GetDut().GetAndroid().GetAssociatedHostname() == nil || req.GetDut().GetAndroid().GetAssociatedHostname().GetAddress() == "" {
-		return errors.New("associated host of android dut is not specified in input file")
-	}
-	if req.GetDutServer() == nil || req.GetDutServer().GetAddress() == "" || req.DutServer.GetPort() <= 0 {
-		return errors.New("dut server address is not specified or incorrect in input file")
-	}
-	return nil
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/main.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/main.go
index 03dbaf2..ee8a31d 100644
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/main.go
+++ b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/main.go
@@ -6,21 +6,8 @@
 
 import (
 	"fmt"
-	"os"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/cli"
 )
 
 func main() {
-	cmd, err := cli.ParseInputs()
-	if err != nil {
-		fmt.Fprintf(os.Stderr, "Unable to parse inputs: %s\n", err)
-		cli.NewCLICommand().Usage()
-		cli.NewServerCommand().Usage()
-		os.Exit(2)
-	}
-	if err = cmd.Run(); err != nil {
-		fmt.Fprintf(os.Stderr, "Android Provision failed: %v\n", err)
-		os.Exit(1)
-	}
+	fmt.Println("Code has been migrated to infra/infra. Please reach out to who/juahurta for any questions.")
 }
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/service/android_service.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/service/android_service.go
deleted file mode 100644
index 3be670b..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/service/android_service.go
+++ /dev/null
@@ -1,264 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Package servicer is a container for the AndroidProvision state machine.
-package service
-
-import (
-	"context"
-	"os"
-	"path/filepath"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	lab_api "go.chromium.org/chromiumos/config/go/test/lab/api"
-	"go.chromium.org/luci/common/errors"
-	"google.golang.org/protobuf/types/known/anypb"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common/gsstorage"
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-)
-
-// AndroidPackage contains information about installed Android package.
-type AndroidPackage struct {
-	PackageName        string
-	VersionCode        string
-	UpdatedVersionCode string
-}
-
-// OsBuildInfo contains information about Android OS build.
-type OsBuildInfo struct {
-	Id                 string
-	OsVersion          string
-	IncrementalVersion string
-}
-
-// CIPDPackage wraps CIPD package proto and contains the resolved CIPD package info.
-type CIPDPackage struct {
-	PackageProto *api.CIPDPackage
-	FilePath     string
-	PackageName  string
-	InstanceId   string
-	VersionCode  string
-}
-
-// PkgFile defines package file to install.
-type PkgFile struct {
-	Name    string
-	GsPath  string
-	DutPath string
-}
-
-// ImagePath defines OS image file(s) to flash.
-type ImagePath struct {
-	GsPath         string
-	BoardToBuildID map[string]string
-	Files          []string
-	// DUT directory containing the binary images.
-	DutAndroidProductOut string
-}
-
-// ProvisionPackage contains information about provision package.
-type ProvisionPackage struct {
-	AndroidPackage *AndroidPackage
-	CIPDPackage    *CIPDPackage
-	APKFile        *PkgFile
-}
-
-// AndroidOS contains information about Android OS to install.
-type AndroidOS struct {
-	ImagePath        *ImagePath
-	BuildInfo        *OsBuildInfo
-	UpdatedBuildInfo *OsBuildInfo
-}
-
-// DUTConnection has information about CrosDUT connection and DUT serial number.
-type DUTConnection struct {
-	AssociatedHost common_utils.ServiceAdapterInterface
-	SerialNumber   string
-	Board          string
-}
-
-// AndroidService inherits ServiceInterface
-type AndroidService struct {
-	DUT               *DUTConnection
-	OS                *AndroidOS
-	ProvisionPackages []*ProvisionPackage
-	ProvisionDir      string
-}
-
-func NewAndroidService(dut *lab_api.Dut, dutClient api.DutServiceClient, req *api.InstallRequest) (*AndroidService, error) {
-	dir, err := os.MkdirTemp("", "android_provision_")
-	if err != nil {
-		return nil, err
-	}
-	svc := &AndroidService{
-		DUT: &DUTConnection{
-			AssociatedHost: common_utils.NewServiceAdapter(dutClient, true),
-			SerialNumber:   dut.GetAndroid().GetSerialNumber(),
-		},
-		ProvisionDir: dir,
-	}
-	if err := svc.UnmarshalRequestMetadata(req); err != nil {
-		return nil, err
-	}
-	return svc, nil
-}
-
-func NewAndroidServiceFromAndroidProvisionRequest(dutClient api.DutServiceClient, req *api.AndroidProvisionRequest) (*AndroidService, error) {
-	dir, err := os.MkdirTemp("", "android_provision_")
-	if err != nil {
-		return nil, err
-	}
-	var androidOs *AndroidOS
-	var p []*ProvisionPackage
-	if ps := req.GetProvisionState(); ps != nil {
-		if osImage := ps.GetAndroidOsImage(); osImage != nil {
-			var imagePath *ImagePath
-			switch osImage.GetLocationOneof().(type) {
-			case *api.AndroidOsImage_GsPath:
-				imagePath = parseGsPath(osImage.GetGsPath())
-			case *api.AndroidOsImage_OsVersion:
-				imagePath = parseOSVersion(osImage.GetOsVersion())
-			}
-			if imagePath == nil {
-				return nil, errors.Reason("invalid provision request or unsupported Android OS version").Err()
-			}
-			androidOs = &AndroidOS{ImagePath: imagePath}
-		}
-		for _, pkgProto := range ps.GetCipdPackages() {
-			cipdPkg := &CIPDPackage{
-				PackageProto: pkgProto,
-			}
-			p = append(p, &ProvisionPackage{CIPDPackage: cipdPkg})
-		}
-	}
-	return &AndroidService{
-		DUT: &DUTConnection{
-			AssociatedHost: common_utils.NewServiceAdapter(dutClient, true),
-			SerialNumber:   req.GetDut().GetAndroid().GetSerialNumber(),
-		},
-		OS:                androidOs,
-		ProvisionDir:      dir,
-		ProvisionPackages: p,
-	}, nil
-}
-
-// NewAndroidServiceFromExistingConnection utilizes a given ServiceAdapter. Generally useful for tests.
-func NewAndroidServiceFromExistingConnection(conn common_utils.ServiceAdapterInterface, dutSerialNumber string, osImage *api.AndroidOsImage, pkgProtos []*api.CIPDPackage) (*AndroidService, error) {
-	dir, err := os.MkdirTemp("", "android_provision_")
-	if err != nil {
-		return nil, err
-	}
-	var androidOs *AndroidOS
-	var p []*ProvisionPackage
-	if osImage != nil {
-		var imagePath *ImagePath
-		switch osImage.GetLocationOneof().(type) {
-		case *api.AndroidOsImage_GsPath:
-			imagePath = parseGsPath(osImage.GetGsPath())
-		case *api.AndroidOsImage_OsVersion:
-			imagePath = parseOSVersion(osImage.GetOsVersion())
-		}
-		if imagePath == nil {
-			return nil, errors.Reason("invalid provision request or unsupported Android OS version").Err()
-		}
-		androidOs = &AndroidOS{ImagePath: imagePath}
-	}
-	for _, pkgProto := range pkgProtos {
-		cipdPkg := &CIPDPackage{
-			PackageProto: pkgProto,
-		}
-		p = append(p, &ProvisionPackage{CIPDPackage: cipdPkg})
-	}
-	return &AndroidService{
-		DUT: &DUTConnection{
-			AssociatedHost: conn,
-			SerialNumber:   dutSerialNumber,
-		},
-		OS:                androidOs,
-		ProvisionDir:      dir,
-		ProvisionPackages: p,
-	}, nil
-}
-
-// CleanupOnFailure is called if one of service's states failes to Execute() and
-// should clean up the temporary files, and undo the execution, if feasible.
-func (svc *AndroidService) CleanupOnFailure(states []common_utils.ServiceState, executionErr error) error {
-	os.RemoveAll(svc.ProvisionDir)
-	ctx := context.Background()
-	if svc.OS != nil && svc.OS.ImagePath.DutAndroidProductOut != "" {
-		svc.DUT.AssociatedHost.DeleteDirectory(ctx, svc.OS.ImagePath.DutAndroidProductOut)
-	}
-	for _, pkg := range svc.ProvisionPackages {
-		if apkFile := pkg.APKFile; apkFile.DutPath != "" {
-			svc.DUT.AssociatedHost.DeleteDirectory(ctx, filepath.Dir(apkFile.DutPath))
-		}
-	}
-	return nil
-}
-
-// MarshalResponseMetadata packs AndroidProvisionResponseMetadata into the Any message type.
-func (svc *AndroidService) MarshalResponseMetadata() (*anypb.Any, error) {
-	resp := &api.AndroidProvisionResponseMetadata{}
-	if osImage := svc.OS; osImage != nil && osImage.UpdatedBuildInfo != nil {
-		resp.InstalledAndroidOs = &api.InstalledAndroidOS{
-			BuildId:            osImage.UpdatedBuildInfo.Id,
-			OsVersion:          osImage.UpdatedBuildInfo.OsVersion,
-			IncrementalVersion: osImage.UpdatedBuildInfo.IncrementalVersion,
-		}
-	}
-	for _, pkg := range svc.ProvisionPackages {
-		if ap := pkg.AndroidPackage; ap != nil && ap.UpdatedVersionCode != "" {
-			installedPkg := &api.InstalledAndroidPackage{
-				Name:        ap.PackageName,
-				VersionCode: ap.UpdatedVersionCode,
-			}
-			resp.InstalledAndroidPackages = append(resp.InstalledAndroidPackages, installedPkg)
-		}
-	}
-	return anypb.New(resp)
-}
-
-// UnmarshalRequestMetadata unpacks the Any metadata field into AndroidProvisionRequestMetadata
-func (svc *AndroidService) UnmarshalRequestMetadata(req *api.InstallRequest) error {
-	m := api.AndroidProvisionRequestMetadata{}
-	if err := req.Metadata.UnmarshalTo(&m); err != nil {
-		return errors.Reason("improperly formatted input proto metadata, %s", err).Err()
-	}
-	if osImage := m.GetAndroidOsImage(); osImage != nil {
-		var imagePath *ImagePath
-		switch osImage.GetLocationOneof().(type) {
-		case *api.AndroidOsImage_GsPath:
-			imagePath = parseGsPath(osImage.GetGsPath())
-		case *api.AndroidOsImage_OsVersion:
-			imagePath = parseOSVersion(osImage.GetOsVersion())
-		}
-		if imagePath == nil {
-			return errors.Reason("invalid provision request or unsupported Android OS version").Err()
-		}
-		svc.OS = &AndroidOS{ImagePath: imagePath}
-	}
-	for _, pkgProto := range m.GetCipdPackages() {
-		cipdPkg := &CIPDPackage{PackageProto: pkgProto}
-		svc.ProvisionPackages = append(svc.ProvisionPackages, &ProvisionPackage{CIPDPackage: cipdPkg})
-	}
-	return nil
-}
-
-func parseOSVersion(osVersion string) *ImagePath {
-	if boardToBuildId, ok := common.OSVersionToBuildIDMap[osVersion]; ok {
-		return &ImagePath{BoardToBuildID: boardToBuildId}
-	}
-	return nil
-}
-
-func parseGsPath(gsPathProto *api.GsPath) *ImagePath {
-	if gsPathProto == nil {
-		return nil
-	}
-	return &ImagePath{
-		GsPath: gsstorage.GetGsPath(gsPathProto.GetBucket(), gsPathProto.GetFolder()),
-	}
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/cleanup_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/cleanup_command.go
deleted file mode 100644
index 1f95a32..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/cleanup_command.go
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"context"
-	"log"
-	"os"
-	"path/filepath"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/service"
-)
-
-type CleanupCommand struct {
-	ctx context.Context
-	svc *service.AndroidService
-}
-
-func NewCleanupCommand(ctx context.Context, svc *service.AndroidService) *CleanupCommand {
-	return &CleanupCommand{
-		ctx: ctx,
-		svc: svc,
-	}
-}
-
-func (c *CleanupCommand) Execute(log *log.Logger) error {
-	log.Printf("Start CleanupCommand Execute")
-	if stage := c.ctx.Value(common.StageCtxKey); stage != nil {
-		switch stage {
-		case common.OSInstall:
-			if osImage := c.svc.OS; osImage != nil && osImage.ImagePath.GsPath != "" {
-				c.svc.DUT.AssociatedHost.DeleteDirectory(c.ctx, osImage.ImagePath.DutAndroidProductOut)
-			}
-		case common.PackageInstall:
-			for _, pkg := range c.svc.ProvisionPackages {
-				if apkFile := pkg.APKFile; apkFile != nil {
-					c.svc.DUT.AssociatedHost.DeleteDirectory(c.ctx, filepath.Dir(apkFile.DutPath))
-				}
-			}
-		case common.PostInstall:
-			os.RemoveAll(c.svc.ProvisionDir)
-		}
-	}
-	log.Printf("CleanupCommand Success")
-	return nil
-}
-
-func (c *CleanupCommand) Revert() error {
-	return nil
-}
-
-func (c *CleanupCommand) GetErrorMessage() string {
-	return "failed to cleanup temp files"
-}
-
-func (c *CleanupCommand) GetStatus() api.InstallResponse_Status {
-	if stage := c.ctx.Value(common.StageCtxKey); stage == common.PostInstall {
-		return api.InstallResponse_STATUS_POST_PROVISION_SETUP_FAILED
-	}
-	return api.InstallResponse_STATUS_PROVISIONING_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/cleanup_command_test.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/cleanup_command_test.go
deleted file mode 100644
index bcf160e..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/cleanup_command_test.go
+++ /dev/null
@@ -1,92 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"context"
-	"os"
-	"testing"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common"
-	"github.com/golang/mock/gomock"
-	"go.chromium.org/chromiumos/config/go/test/api"
-
-	. "github.com/smartystreets/goconvey/convey"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/service"
-	mock_common_utils "go.chromium.org/chromiumos/test/provision/v2/mock-common-utils"
-)
-
-func TestCleanupCommand(t *testing.T) {
-	t.Parallel()
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-	Convey("CleanupCommand", t, func() {
-		associatedHost := mock_common_utils.NewMockServiceAdapterInterface(ctrl)
-		pkgProto := &api.CIPDPackage{
-			Name: "cipd_path/cipd_package_name",
-			VersionOneof: &api.CIPDPackage_InstanceId{
-				InstanceId: "instanceId",
-			},
-			AndroidPackage: api.AndroidPackage_GMS_CORE,
-		}
-		apkFile := &service.PkgFile{
-			Name:    "apkName.apk",
-			GsPath:  "gsPath",
-			DutPath: "/tmp/instanceId/apkName.apk",
-		}
-		svc, _ := service.NewAndroidServiceFromExistingConnection(
-			associatedHost,
-			"dutSerialNumber",
-			&api.AndroidOsImage{LocationOneof: &api.AndroidOsImage_OsVersion{OsVersion: "10"}},
-			[]*api.CIPDPackage{pkgProto},
-		)
-		svc.ProvisionPackages[0].APKFile = apkFile
-		provisionDir, _ := os.MkdirTemp("", "testCleanup")
-		defer os.RemoveAll(provisionDir)
-		svc.ProvisionDir = provisionDir
-		svc.OS.ImagePath.GsPath = "gs://gs_bucket/folder/image"
-		svc.OS.ImagePath.DutAndroidProductOut = "/tmp_DutAndroidProductOut"
-		cmd := NewCleanupCommand(context.Background(), svc)
-
-		Convey("Execute - OSInstall", func() {
-			cmd.ctx = context.WithValue(cmd.ctx, common.StageCtxKey, common.OSInstall)
-			log, _ := common.SetUpLog(provisionDir)
-			associatedHost.EXPECT().DeleteDirectory(gomock.Any(), gomock.Eq("/tmp_DutAndroidProductOut")).Times(1)
-			So(cmd.Execute(log), ShouldBeNil)
-		})
-		Convey("Execute - PackageInstall", func() {
-			cmd.ctx = context.WithValue(cmd.ctx, common.StageCtxKey, common.PackageInstall)
-			log, _ := common.SetUpLog(provisionDir)
-			associatedHost.EXPECT().DeleteDirectory(gomock.Any(), gomock.Eq("/tmp/instanceId")).Times(1)
-			So(cmd.Execute(log), ShouldBeNil)
-		})
-		Convey("Execute - PostInstall", func() {
-			cmd.ctx = context.WithValue(cmd.ctx, common.StageCtxKey, common.PostInstall)
-			log, _ := common.SetUpLog(provisionDir)
-			So(cmd.Execute(log), ShouldBeNil)
-			_, err := os.Stat(svc.ProvisionDir)
-			So(os.IsNotExist(err), ShouldBeTrue)
-		})
-		Convey("Revert", func() {
-			So(cmd.Revert(), ShouldBeNil)
-		})
-		Convey("GetErrorMessage", func() {
-			So(cmd.GetErrorMessage(), ShouldEqual, "failed to cleanup temp files")
-		})
-		Convey("GetStatus - OSInstall", func() {
-			cmd.ctx = context.WithValue(cmd.ctx, common.StageCtxKey, common.OSInstall)
-			So(cmd.GetStatus(), ShouldEqual, api.InstallResponse_STATUS_PROVISIONING_FAILED)
-		})
-		Convey("GetStatus - PackageInstall", func() {
-			cmd.ctx = context.WithValue(cmd.ctx, common.StageCtxKey, common.PackageInstall)
-			So(cmd.GetStatus(), ShouldEqual, api.InstallResponse_STATUS_PROVISIONING_FAILED)
-		})
-		Convey("GetStatus - PostInstall", func() {
-			cmd.ctx = context.WithValue(cmd.ctx, common.StageCtxKey, common.PostInstall)
-			So(cmd.GetStatus(), ShouldEqual, api.InstallResponse_STATUS_POST_PROVISION_SETUP_FAILED)
-		})
-	})
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/copy_data_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/copy_data_command.go
deleted file mode 100644
index 05bc960..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/copy_data_command.go
+++ /dev/null
@@ -1,144 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"context"
-	"fmt"
-	"log"
-	"os"
-	"path/filepath"
-	"strings"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"golang.org/x/sync/errgroup"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common/gsstorage"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/service"
-)
-
-type CopyDataCommand struct {
-	ctx context.Context
-	svc *service.AndroidService
-	gs  gsstorage.GsClient
-}
-
-func NewCopyDataCommand(ctx context.Context, svc *service.AndroidService) *CopyDataCommand {
-	return &CopyDataCommand{
-		ctx: ctx,
-		svc: svc,
-		gs:  gsstorage.NewGsClient(common.GSImageBucketName),
-	}
-}
-
-func (c *CopyDataCommand) Execute(log *log.Logger) error {
-	log.Printf("Start CopyDataCommand Execute")
-	switch s := c.ctx.Value(common.StageCtxKey); s {
-	case common.PackageFetch:
-		if err := c.copyPackages(); err != nil {
-			log.Printf("CopyDataCommand Failure: %v", err)
-			return err
-		}
-	case common.OSFetch:
-		if err := c.copyOSImages(); err != nil {
-			log.Printf("CopyDataCommand Failure: %v", err)
-			return err
-		}
-	default:
-		err := fmt.Errorf("unknown installation stage: %s", s)
-		log.Printf("CopyDataCommand Failure: %v", err)
-		return err
-	}
-	log.Printf("CopyDataCommand Success")
-	return nil
-}
-
-func (c *CopyDataCommand) Revert() error {
-	return nil
-}
-
-func (c *CopyDataCommand) GetErrorMessage() string {
-	return "failed to copy data"
-}
-
-func (c *CopyDataCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_GS_DOWNLOAD_FAILED
-}
-
-// copyPackages uses caching-service to copy apks to associated host.
-func (c *CopyDataCommand) copyPackages() error {
-	for _, pkg := range c.svc.ProvisionPackages {
-		if apkFile := pkg.APKFile; apkFile != nil {
-			dstPath := filepath.Join("/tmp", pkg.CIPDPackage.InstanceId, apkFile.Name)
-			dut := c.svc.DUT
-			if err := dut.AssociatedHost.CopyData(c.ctx, apkFile.GsPath, dstPath); err != nil {
-				return err
-			}
-			apkFile.DutPath = dstPath
-		}
-	}
-	return nil
-}
-
-// copyOSImages uses caching-service to copy Android OS images to associated host stateful_partition.
-// stateful_partition is used because the default /tmp folder lack memory space.
-func (c *CopyDataCommand) copyOSImages() error {
-	if c.svc.OS == nil || c.svc.OS.ImagePath.GsPath == "" {
-		// Android OS provision is not requested or not needed.
-		return nil
-	}
-	ctx := c.ctx
-	imagePath := c.svc.OS.ImagePath
-	folderPath := strings.Join(strings.Split(imagePath.GsPath, string(os.PathSeparator))[3:], string(os.PathSeparator))
-	dstPath := filepath.Join("/mnt/stateful_partition/android_provision", folderPath)
-	// List files' name from gcp.
-	files, err := c.gs.ListFiles(ctx, folderPath, "/")
-	if err != nil {
-		return err
-	}
-	provisionFiles := getProvisionFiles(files)
-	// Use caching service to copy files to temp directory.
-	if err := c.cacheOSFiles(dstPath, provisionFiles); err != nil {
-		return err
-	}
-	// Populate the list of images to flash and their location.
-	imagePath.DutAndroidProductOut = dstPath
-	imagePath.Files = provisionFiles
-	return nil
-}
-
-// cacheOSFiles runs copyData for every files in parallel.
-func (c *CopyDataCommand) cacheOSFiles(dstPath string, provisionFiles []string) error {
-	if len(provisionFiles) != 3 {
-		return fmt.Errorf("missing provision files")
-	}
-	svc := c.svc
-	gsPath := svc.OS.ImagePath.GsPath
-	dut := svc.DUT
-	errs, ctx := errgroup.WithContext(c.ctx)
-	for _, f := range provisionFiles {
-		f := f
-		errs.Go(func() error {
-			gsFullPath := gsPath + f
-			return dut.AssociatedHost.CopyData(ctx, gsFullPath, filepath.Join(dstPath, f))
-		})
-	}
-	return errs.Wait()
-}
-
-// getProvisionFiles acts as a filter and returns only the files needed.
-func getProvisionFiles(files []string) []string {
-	var provisionFiles []string
-	for _, f := range files {
-		if len(provisionFiles) == 3 {
-			break
-		}
-		if f == "radio.img" || f == "bootloader.img" || strings.HasSuffix(f, ".zip") {
-			provisionFiles = append(provisionFiles, f)
-		}
-	}
-	return provisionFiles
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/copy_data_command_test.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/copy_data_command_test.go
deleted file mode 100644
index dc6f266..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/copy_data_command_test.go
+++ /dev/null
@@ -1,96 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"context"
-	"os"
-	"testing"
-
-	"github.com/golang/mock/gomock"
-	"go.chromium.org/chromiumos/config/go/test/api"
-
-	. "github.com/smartystreets/goconvey/convey"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common/gsstorage"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/service"
-	mock_common_utils "go.chromium.org/chromiumos/test/provision/v2/mock-common-utils"
-)
-
-func TestCopyDataCommand(t *testing.T) {
-	t.Parallel()
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-	Convey("CopyDataCommand", t, func() {
-		associatedHost := mock_common_utils.NewMockServiceAdapterInterface(ctrl)
-		pkgProto := &api.CIPDPackage{
-			Name: "cipd_path/cipd_package_name",
-			VersionOneof: &api.CIPDPackage_InstanceId{
-				InstanceId: "instanceId",
-			},
-			AndroidPackage: api.AndroidPackage_GMS_CORE,
-		}
-		apkFile := &service.PkgFile{
-			Name:   "apkName.apk",
-			GsPath: "gsPath",
-		}
-		svc, _ := service.NewAndroidServiceFromExistingConnection(
-			associatedHost,
-			"dutSerialNumber",
-			nil,
-			[]*api.CIPDPackage{pkgProto},
-		)
-		provisionPkg := svc.ProvisionPackages[0]
-		provisionPkg.CIPDPackage.InstanceId = "instanceId"
-		provisionPkg.CIPDPackage.VersionCode = "versionCode"
-		provisionPkg.APKFile = apkFile
-		provisionDir, _ := os.MkdirTemp("", "testCleanup")
-		defer os.RemoveAll(provisionDir)
-		svc.OS = &service.AndroidOS{
-			ImagePath: &service.ImagePath{
-				DutAndroidProductOut: "dutProvisionDir",
-			}}
-		mockGsClient := gsstorage.NewMockGsClient(ctrl)
-		cmd := NewCopyDataCommand(context.Background(), svc)
-		cmd.gs = mockGsClient
-
-		Convey("Execute - copy package", func() {
-			log, _ := common.SetUpLog(provisionDir)
-			cmd.ctx = context.WithValue(cmd.ctx, common.StageCtxKey, common.PackageFetch)
-			gomock.InOrder(
-				associatedHost.EXPECT().CopyData(gomock.Any(), "gsPath", "/tmp/instanceId/apkName.apk").Times(1),
-			)
-			So(provisionPkg.APKFile.DutPath, ShouldBeEmpty)
-			So(cmd.Execute(log), ShouldBeNil)
-			So(provisionPkg.APKFile.DutPath, ShouldEqual, "/tmp/instanceId/apkName.apk")
-		})
-		Convey("Execute - copy os images from folder", func() {
-			svc.OS.ImagePath.GsPath = "gs://bucket/folder1/folder2/"
-			cmd.ctx = context.WithValue(cmd.ctx, common.StageCtxKey, common.OSFetch)
-			log, _ := common.SetUpLog(provisionDir)
-			mockGsClient.EXPECT().ListFiles(gomock.Any(), gomock.Eq("folder1/folder2/"), gomock.Eq("/")).Return([]string{"bootloader.img", "radio.img", "smtg-img-2132123.zip"}, nil).Times(1)
-			associatedHost.EXPECT().CopyData(gomock.Any(), gomock.Any(), gomock.Eq("/mnt/stateful_partition/android_provision/folder1/folder2/bootloader.img")).Times(1)
-			associatedHost.EXPECT().CopyData(gomock.Any(), gomock.Any(), gomock.Eq("/mnt/stateful_partition/android_provision/folder1/folder2/radio.img")).Times(1)
-			associatedHost.EXPECT().CopyData(gomock.Any(), gomock.Any(), gomock.Eq("/mnt/stateful_partition/android_provision/folder1/folder2/smtg-img-2132123.zip")).Times(1)
-			So(cmd.Execute(log), ShouldBeNil)
-			So(svc.OS.ImagePath.Files, ShouldResemble, []string{"bootloader.img", "radio.img", "smtg-img-2132123.zip"})
-		})
-		Convey("Execute - undefined stage", func() {
-			cmd.ctx = context.WithValue(cmd.ctx, common.StageCtxKey, nil)
-			log, _ := common.SetUpLog(provisionDir)
-			So(cmd.Execute(log), ShouldBeError)
-		})
-		Convey("Revert", func() {
-			So(cmd.Revert(), ShouldBeNil)
-		})
-		Convey("GetErrorMessage", func() {
-			So(cmd.GetErrorMessage(), ShouldEqual, "failed to copy data")
-		})
-		Convey("GetStatus", func() {
-			So(cmd.GetStatus(), ShouldEqual, api.InstallResponse_STATUS_GS_DOWNLOAD_FAILED)
-		})
-	})
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/extract_zip_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/extract_zip_command.go
deleted file mode 100644
index ef4417d..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/extract_zip_command.go
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"context"
-	"log"
-	"path/filepath"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common"
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"go.chromium.org/luci/common/errors"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common/zip"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/service"
-)
-
-type ExtractZipCommand struct {
-	ctx context.Context
-	svc *service.AndroidService
-	zip zip.ZipReader
-}
-
-func NewExtractZipCommand(ctx context.Context, svc *service.AndroidService) *ExtractZipCommand {
-	return &ExtractZipCommand{
-		ctx: ctx,
-		svc: svc,
-		zip: &zip.Zip{},
-	}
-}
-
-func (c *ExtractZipCommand) Execute(log *log.Logger) error {
-	log.Printf("Start ExtractZipCommand Execute")
-	var err error
-	if stage := c.ctx.Value(common.StageCtxKey); stage != nil {
-		switch stage {
-		case common.PackageFetch:
-			err = c.extractCIPDPackages()
-		}
-	} else {
-		err = errors.Reason("provision stage is not set").Err()
-	}
-	if err != nil {
-		log.Printf("ExtractZipCommand Failure: %v", err)
-		return err
-	}
-	log.Printf("ExtractZipCommand Success")
-	return nil
-}
-
-func (c *ExtractZipCommand) Revert() error {
-	return nil
-}
-
-func (c *ExtractZipCommand) GetErrorMessage() string {
-	return "failed to extract zip file"
-}
-
-func (c *ExtractZipCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_PRE_PROVISION_SETUP_FAILED
-}
-
-// extractCIPDPackages extracts Android package (APK) file from CIPD package
-// downloaded to provision server.
-func (c *ExtractZipCommand) extractCIPDPackages() error {
-	for _, pkg := range c.svc.ProvisionPackages {
-		if cipdPkg := pkg.CIPDPackage; cipdPkg.FilePath != "" {
-			dstPath := filepath.Join(c.svc.ProvisionDir, cipdPkg.InstanceId)
-			if err := c.zip.UnzipFile(cipdPkg.FilePath, dstPath); err != nil {
-				return err
-			}
-		}
-	}
-	return nil
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/extract_zip_command_test.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/extract_zip_command_test.go
deleted file mode 100644
index 16c2c55..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/extract_zip_command_test.go
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"context"
-	"os"
-	"testing"
-
-	mock_common_utils "go.chromium.org/chromiumos/test/provision/v2/mock-common-utils"
-	"github.com/golang/mock/gomock"
-	"go.chromium.org/chromiumos/config/go/test/api"
-
-	. "github.com/smartystreets/goconvey/convey"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common/zip"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/service"
-)
-
-func TestExtractZipCommand(t *testing.T) {
-	t.Parallel()
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-	Convey("ExtractZipCommand", t, func() {
-		pkgProto := &api.CIPDPackage{
-			Name: "cipd_path/cipd_package_name",
-			VersionOneof: &api.CIPDPackage_InstanceId{
-				InstanceId: "instanceId",
-			},
-			AndroidPackage: api.AndroidPackage_GMS_CORE,
-		}
-		cipdPkg := &service.CIPDPackage{
-			PackageProto: pkgProto,
-			FilePath:     "/tmp/instanceId/cipd_package_name.zip",
-			PackageName:  "cipd_package_name",
-			InstanceId:   "instanceId",
-			VersionCode:  "1234567890",
-		}
-		associatedHost := mock_common_utils.NewMockServiceAdapterInterface(ctrl)
-		svc, _ := service.NewAndroidServiceFromExistingConnection(
-			associatedHost,
-			"",
-			nil,
-			[]*api.CIPDPackage{pkgProto},
-		)
-		provisionPkg := svc.ProvisionPackages[0]
-		provisionPkg.CIPDPackage = cipdPkg
-		provisionDir, _ := os.MkdirTemp("", "testCleanup")
-		defer os.RemoveAll(provisionDir)
-		svc.ProvisionDir = provisionDir
-		svc.OS = &service.AndroidOS{
-			ImagePath: &service.ImagePath{
-				DutAndroidProductOut: "dutProvisionDir",
-			}}
-		ctx := context.Background()
-		cmd := NewExtractZipCommand(ctx, svc)
-		Convey("Execute - PackageFetch", func() {
-			cmd.ctx = context.WithValue(cmd.ctx, common.StageCtxKey, common.PackageFetch)
-			mockZipReader := zip.NewMockZipReaderInterface(ctrl)
-			cmd.zip = mockZipReader
-			log, _ := common.SetUpLog(provisionDir)
-
-			mockZipReader.EXPECT().UnzipFile(gomock.Eq("/tmp/instanceId/cipd_package_name.zip"), gomock.Eq(provisionDir+"/instanceId")).Times(1)
-			So(cmd.Execute(log), ShouldBeNil)
-		})
-		Convey("Execute - undefined stage", func() {
-			cmd.ctx = context.WithValue(cmd.ctx, common.StageCtxKey, nil)
-			log, _ := common.SetUpLog(provisionDir)
-			So(cmd.Execute(log), ShouldNotBeNil)
-		})
-		Convey("Revert", func() {
-			So(cmd.Revert(), ShouldBeNil)
-		})
-		Convey("GetErrorMessage", func() {
-			So(cmd.GetErrorMessage(), ShouldEqual, "failed to extract zip file")
-		})
-		Convey("GetStatus", func() {
-			So(cmd.GetStatus(), ShouldEqual, api.InstallResponse_STATUS_PRE_PROVISION_SETUP_FAILED)
-		})
-	})
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/fetch_cipd_package_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/fetch_cipd_package_command.go
deleted file mode 100644
index 4c1597e..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/fetch_cipd_package_command.go
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"context"
-	"fmt"
-	"log"
-	"path/filepath"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common/cipd"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/service"
-)
-
-type FetchCIPDPackageCommand struct {
-	ctx  context.Context
-	svc  *service.AndroidService
-	cipd cipd.CIPDClient
-}
-
-func NewFetchCIPDPackageCommand(ctx context.Context, svc *service.AndroidService) *FetchCIPDPackageCommand {
-	return &FetchCIPDPackageCommand{
-		ctx:  ctx,
-		svc:  svc,
-		cipd: cipd.NewCIPDClient(ctx),
-	}
-}
-
-func (c *FetchCIPDPackageCommand) Execute(log *log.Logger) error {
-	log.Printf("Start FetchCIPDPackageCommand Execute")
-	for _, pkg := range c.svc.ProvisionPackages {
-		cipdPkg, androidPkg := pkg.CIPDPackage, pkg.AndroidPackage
-		if androidPkg != nil && cipdPkg.VersionCode != androidPkg.VersionCode {
-			switch p := cipdPkg.PackageProto.GetAndroidPackage(); p {
-			case api.AndroidPackage_GMS_CORE:
-				cipdPkg.FilePath = filepath.Join(c.svc.ProvisionDir, filepath.Base(cipdPkg.PackageName)+".zip")
-			default:
-				err := fmt.Errorf("unsupported Android package: %s", p.String())
-				log.Printf("FetchCIPDPackageCommand Failure: %v", err)
-				return err
-			}
-			if err := c.cipd.FetchInstanceTo(cipdPkg.PackageProto, cipdPkg.PackageName, cipdPkg.InstanceId, cipdPkg.FilePath); err != nil {
-				log.Printf("FetchCIPDPackageCommand Failure: %v", err)
-				return err
-			}
-		}
-	}
-	log.Printf("FetchCIPDPackageCommand Success")
-	return nil
-}
-
-func (c *FetchCIPDPackageCommand) Revert() error {
-	return nil
-}
-
-func (c *FetchCIPDPackageCommand) GetErrorMessage() string {
-	return "failed to fetch CIPD package"
-}
-
-func (c *FetchCIPDPackageCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_CIPD_PACKAGE_FETCH_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/fetch_cipd_package_command_test.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/fetch_cipd_package_command_test.go
deleted file mode 100644
index 7a166c6..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/fetch_cipd_package_command_test.go
+++ /dev/null
@@ -1,98 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"context"
-	"os"
-	"testing"
-
-	"github.com/golang/mock/gomock"
-	"go.chromium.org/chromiumos/config/go/test/api"
-
-	. "github.com/smartystreets/goconvey/convey"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common/cipd"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/service"
-)
-
-func TestFetchCIPDPackageCommand(t *testing.T) {
-	t.Parallel()
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-	Convey("FetchCIPDPackageCommand", t, func() {
-		pkgProto := &api.CIPDPackage{
-			Name: "cipd_path/cipd_package_name",
-			VersionOneof: &api.CIPDPackage_InstanceId{
-				InstanceId: "instanceId",
-			},
-			AndroidPackage: api.AndroidPackage_GMS_CORE,
-		}
-		cipdPkg := &service.CIPDPackage{
-			PackageProto: pkgProto,
-			PackageName:  "cipd_package_name",
-			InstanceId:   "instanceId",
-			VersionCode:  "1234567890",
-		}
-		androidPkg := &service.AndroidPackage{
-			PackageName: "android.package.name",
-		}
-		svc, _ := service.NewAndroidServiceFromExistingConnection(
-			nil,
-			"",
-			nil,
-			[]*api.CIPDPackage{pkgProto},
-		)
-		provisionPkg := svc.ProvisionPackages[0]
-		provisionPkg.CIPDPackage = cipdPkg
-		provisionPkg.AndroidPackage = androidPkg
-		provisionDir, _ := os.MkdirTemp("", "testCleanup")
-		defer os.RemoveAll(provisionDir)
-		svc.ProvisionDir = "/tmp/provision_dir"
-
-		cmd := NewFetchCIPDPackageCommand(context.Background(), svc)
-
-		Convey("Execute", func() {
-			mockCIPDClient := cipd.NewMockCIPDClientInterface(ctrl)
-			cmd.cipd = mockCIPDClient
-			provisionPkg.CIPDPackage.PackageProto.AndroidPackage = api.AndroidPackage_GMS_CORE
-			Convey("New Android Package", func() {
-				provisionPkg.AndroidPackage.VersionCode = ""
-				log, _ := common.SetUpLog(provisionDir)
-				mockCIPDClient.EXPECT().FetchInstanceTo(gomock.Eq(pkgProto), gomock.Eq("cipd_package_name"), gomock.Eq("instanceId"), gomock.Eq("/tmp/provision_dir/cipd_package_name.zip")).Times(1)
-				So(cmd.Execute(log), ShouldBeNil)
-			})
-			Convey("Existing Android Package - same version code", func() {
-				provisionPkg.AndroidPackage.VersionCode = "1234567890"
-				log, _ := common.SetUpLog(provisionDir)
-				mockCIPDClient.EXPECT().FetchInstanceTo(gomock.Eq(pkgProto), gomock.Eq("cipd_package_name"), gomock.Eq("instanceId"), gomock.Eq("/tmp/provision_dir/cipd_package_name.zip")).Times(0)
-				So(cmd.Execute(log), ShouldBeNil)
-			})
-			Convey("Existing Android Package - different version code", func() {
-				provisionPkg.AndroidPackage.VersionCode = "1234567889"
-				log, _ := common.SetUpLog(provisionDir)
-				mockCIPDClient.EXPECT().FetchInstanceTo(gomock.Eq(pkgProto), gomock.Eq("cipd_package_name"), gomock.Eq("instanceId"), gomock.Eq("/tmp/provision_dir/cipd_package_name.zip")).Times(1)
-				So(cmd.Execute(log), ShouldBeNil)
-			})
-			Convey("Unknown Android Package type - returns error", func() {
-				provisionPkg.AndroidPackage.VersionCode = ""
-				provisionPkg.CIPDPackage.PackageProto.AndroidPackage = api.AndroidPackage_ANDROID_PACKAGE_UNSPECIFIED
-				log, _ := common.SetUpLog(provisionDir)
-				mockCIPDClient.EXPECT().FetchInstanceTo(gomock.Eq(pkgProto), gomock.Eq("cipd_package_name"), gomock.Eq("instanceId"), gomock.Eq("/tmp/provision_dir/cipd_package_name.zip")).Times(0)
-				So(cmd.Execute(log), ShouldNotBeNil)
-			})
-		})
-		Convey("Revert", func() {
-			So(cmd.Revert(), ShouldBeNil)
-		})
-		Convey("GetErrorMessage", func() {
-			So(cmd.GetErrorMessage(), ShouldEqual, "failed to fetch CIPD package")
-		})
-		Convey("GetStatus", func() {
-			So(cmd.GetStatus(), ShouldEqual, api.InstallResponse_STATUS_CIPD_PACKAGE_FETCH_FAILED)
-		})
-	})
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/fetch_dut_info_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/fetch_dut_info_command.go
deleted file mode 100644
index b1172e9..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/fetch_dut_info_command.go
+++ /dev/null
@@ -1,117 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"context"
-	"fmt"
-	"log"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/service"
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type FetchDutInfoCommand struct {
-	ctx context.Context
-	svc *service.AndroidService
-}
-
-func NewFetchDutInfoCommand(ctx context.Context, svc *service.AndroidService) *FetchDutInfoCommand {
-	return &FetchDutInfoCommand{
-		ctx: ctx,
-		svc: svc,
-	}
-}
-
-func (c *FetchDutInfoCommand) Execute(log *log.Logger) error {
-	log.Printf("Start FetchDutInfoCommand Execute")
-	if err := c.fetchBoard(); err != nil {
-		log.Printf("FetchDutInfoCommand Failure: %v", err)
-		return err
-	}
-	if err := c.fetchOSInfo(); err != nil {
-		log.Printf("FetchDutInfoCommand Failure: %v", err)
-		return err
-	}
-	if err := c.fetchPackagesInfo(); err != nil {
-		log.Printf("FetchDutInfoCommand Failure: %v", err)
-		return err
-	}
-	log.Printf("FetchDutInfoCommand Success")
-	return nil
-}
-
-func (c *FetchDutInfoCommand) Revert() error {
-	return nil
-}
-
-func (c *FetchDutInfoCommand) GetErrorMessage() string {
-	return "failed to read installed package version"
-}
-
-func (c *FetchDutInfoCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_DUT_UNREACHABLE_PRE_PROVISION
-}
-
-func (c *FetchDutInfoCommand) fetchBoard() error {
-	dut := c.svc.DUT
-	// Fetch DUT board.
-	board, err := getBoard(c.ctx, dut)
-	if err != nil {
-		return err
-	}
-	c.svc.DUT.Board = board
-	return nil
-}
-
-func (c *FetchDutInfoCommand) fetchOSInfo() error {
-	if c.svc.OS == nil {
-		// OS provision is not requested.
-		return nil
-	}
-	dut := c.svc.DUT
-	// Fetch OS build ID.
-	buildId, err := getOSBuildId(c.ctx, dut)
-	if err != nil {
-		return err
-	}
-	osVersion, err := getOSVersion(c.ctx, dut)
-	if err != nil {
-		return err
-	}
-	// Fetch incremental build version.
-	incrementalVersion, err := getOSIncrementalVersion(c.ctx, dut)
-	if err != nil {
-		return err
-	}
-	c.svc.OS.BuildInfo = &service.OsBuildInfo{
-		Id:                 buildId,
-		OsVersion:          osVersion,
-		IncrementalVersion: incrementalVersion,
-	}
-	log.Printf("Android OS on DUT: version=%s, build ID=%s", osVersion, buildId)
-	return nil
-}
-
-func (c *FetchDutInfoCommand) fetchPackagesInfo() error {
-	dut := c.svc.DUT
-	for _, pkg := range c.svc.ProvisionPackages {
-		pkg.AndroidPackage = &service.AndroidPackage{}
-		switch p := pkg.CIPDPackage.PackageProto.GetAndroidPackage(); p {
-		case api.AndroidPackage_GMS_CORE:
-			pkg.AndroidPackage.PackageName = common.GMSCorePackageName
-		default:
-			return fmt.Errorf("unsupported Android package: %s", p.String())
-		}
-		versionCode, err := getAndroidPackageVersionCode(c.ctx, dut, pkg.AndroidPackage.PackageName)
-		if err != nil {
-			return err
-		}
-		pkg.AndroidPackage.VersionCode = versionCode
-		log.Printf("Found Android package: %s, version=%s", pkg.AndroidPackage.PackageName, versionCode)
-	}
-	return nil
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/fetch_dut_info_command_test.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/fetch_dut_info_command_test.go
deleted file mode 100644
index c883dc7..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/fetch_dut_info_command_test.go
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"context"
-	"os"
-	"testing"
-
-	"github.com/golang/mock/gomock"
-	"go.chromium.org/chromiumos/config/go/test/api"
-
-	. "github.com/smartystreets/goconvey/convey"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/service"
-	mock_common_utils "go.chromium.org/chromiumos/test/provision/v2/mock-common-utils"
-)
-
-func TestFetchDutInfoCommand(t *testing.T) {
-	t.Parallel()
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-	Convey("FetchDutInfoCommand", t, func() {
-		associatedHost := mock_common_utils.NewMockServiceAdapterInterface(ctrl)
-		pkgProto := &api.CIPDPackage{
-			AndroidPackage: api.AndroidPackage_GMS_CORE,
-		}
-		svc, _ := service.NewAndroidServiceFromExistingConnection(
-			associatedHost,
-			"dutSerialNumber",
-			&api.AndroidOsImage{LocationOneof: &api.AndroidOsImage_OsVersion{OsVersion: "10"}},
-			[]*api.CIPDPackage{pkgProto},
-		)
-		provisionDir, _ := os.MkdirTemp("", "testCleanup")
-		defer os.RemoveAll(provisionDir)
-
-		cmd := NewFetchDutInfoCommand(context.Background(), svc)
-
-		Convey("Execute", func() {
-			log, _ := common.SetUpLog(provisionDir)
-			boardArgs := []string{"-s", "dutSerialNumber", "shell", "getprop", "ro.product.board"}
-			buildIdArgs := []string{"-s", "dutSerialNumber", "shell", "getprop", "ro.build.id"}
-			versionArgs := []string{"-s", "dutSerialNumber", "shell", "getprop", "ro.build.version.release"}
-			incrVersionArgs := []string{"-s", "dutSerialNumber", "shell", "getprop", "ro.build.version.incremental"}
-			pkgArgs := []string{"-s", "dutSerialNumber", "shell", "dumpsys", "package", common.GMSCorePackageName, "|", "grep", "versionCode", "|", "sort", "-r", "|", "head", "-n", "1"}
-			gomock.InOrder(
-				associatedHost.EXPECT().RunCmd(gomock.Any(), gomock.Eq("adb"), boardArgs).Return("board.Value", nil).Times(1),
-				associatedHost.EXPECT().RunCmd(gomock.Any(), gomock.Eq("adb"), buildIdArgs).Return("buildId.Value", nil).Times(1),
-				associatedHost.EXPECT().RunCmd(gomock.Any(), gomock.Eq("adb"), versionArgs).Return("12", nil).Times(1),
-				associatedHost.EXPECT().RunCmd(gomock.Any(), gomock.Eq("adb"), incrVersionArgs).Return("1234567890", nil).Times(1),
-				associatedHost.EXPECT().RunCmd(gomock.Any(), gomock.Eq("adb"), pkgArgs).Return("versionCode=224312037 minSdk=30 targetSdk=33", nil).Times(1),
-			)
-			expectedBoard := "board.Value"
-			expectedBuildInfo := &service.OsBuildInfo{
-				Id:                 "buildId.Value",
-				OsVersion:          "12",
-				IncrementalVersion: "1234567890",
-			}
-			expectedAndroidPkg := &service.AndroidPackage{
-				PackageName: common.GMSCorePackageName,
-				VersionCode: "224312037",
-			}
-			So(cmd.Execute(log), ShouldBeNil)
-			So(svc.DUT.Board, ShouldEqual, expectedBoard)
-			So(svc.OS.BuildInfo, ShouldResemble, expectedBuildInfo)
-			So(svc.ProvisionPackages[0].AndroidPackage, ShouldResemble, expectedAndroidPkg)
-		})
-		Convey("Revert", func() {
-			So(cmd.Revert(), ShouldBeNil)
-		})
-		Convey("GetErrorMessage", func() {
-			So(cmd.GetErrorMessage(), ShouldEqual, "failed to read installed package version")
-		})
-		Convey("GetStatus", func() {
-			So(cmd.GetStatus(), ShouldEqual, api.InstallResponse_STATUS_DUT_UNREACHABLE_PRE_PROVISION)
-		})
-	})
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/fetch_dut_info_helpers.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/fetch_dut_info_helpers.go
deleted file mode 100644
index a74f392..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/fetch_dut_info_helpers.go
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright 2023 The ChromiumOS Authors.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"context"
-	"regexp"
-	"strings"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/service"
-)
-
-var reVersionCode = regexp.MustCompile(`^versionCode=(\d+).+`)
-
-func getBoard(ctx context.Context, dut *service.DUTConnection) (string, error) {
-	args := []string{"-s", dut.SerialNumber, "shell", "getprop", "ro.product.board"}
-	board, err := dut.AssociatedHost.RunCmd(ctx, "adb", args)
-	if err != nil {
-		return "", err
-	}
-	return strings.TrimSuffix(board, "\n"), nil
-}
-
-func getOSBuildId(ctx context.Context, dut *service.DUTConnection) (string, error) {
-	args := []string{"-s", dut.SerialNumber, "shell", "getprop", "ro.build.id"}
-	buildId, err := dut.AssociatedHost.RunCmd(ctx, "adb", args)
-	if err != nil {
-		return "", err
-	}
-	return strings.TrimSuffix(buildId, "\n"), nil
-}
-
-func getOSVersion(ctx context.Context, dut *service.DUTConnection) (string, error) {
-	args := []string{"-s", dut.SerialNumber, "shell", "getprop", "ro.build.version.release"}
-	releaseVersion, err := dut.AssociatedHost.RunCmd(ctx, "adb", args)
-	if err != nil {
-		return "", err
-	}
-	return strings.TrimSuffix(releaseVersion, "\n"), nil
-}
-
-func getOSIncrementalVersion(ctx context.Context, dut *service.DUTConnection) (string, error) {
-	args := []string{"-s", dut.SerialNumber, "shell", "getprop", "ro.build.version.incremental"}
-	osVersion, err := dut.AssociatedHost.RunCmd(ctx, "adb", args)
-	if err != nil {
-		return "", err
-	}
-	return strings.TrimSuffix(osVersion, "\n"), nil
-}
-
-func getAndroidPackageVersionCode(ctx context.Context, dut *service.DUTConnection, packageName string) (string, error) {
-	args := []string{"-s", dut.SerialNumber, "shell", "dumpsys", "package", packageName, "|", "grep", "versionCode", "|", "sort", "-r", "|", "head", "-n", "1"}
-	out, err := dut.AssociatedHost.RunCmd(ctx, "adb", args)
-	if err != nil {
-		return "", err
-	}
-	return reVersionCode.ReplaceAllString(strings.TrimSpace(out), "$1"), nil
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/flash_os_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/flash_os_command.go
deleted file mode 100644
index fe54d89..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/flash_os_command.go
+++ /dev/null
@@ -1,134 +0,0 @@
-// Copyright 2023 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"context"
-	"log"
-	"path/filepath"
-	"regexp"
-	"strings"
-	"time"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/service"
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"go.chromium.org/luci/common/errors"
-)
-
-type FlashOsCommand struct {
-	ctx context.Context
-	svc *service.AndroidService
-}
-
-func NewFlashOsCommand(ctx context.Context, svc *service.AndroidService) *FlashOsCommand {
-	return &FlashOsCommand{
-		ctx: ctx,
-		svc: svc,
-	}
-}
-
-func (c *FlashOsCommand) Execute(log *log.Logger) error {
-	log.Printf("Start FlashOsCommand Execute")
-	if osImage := c.svc.OS; osImage != nil && osImage.ImagePath.GsPath != "" {
-		// Flashing bootloader and radio partitions.
-		partitions := []string{"bootloader", "radio"}
-		for _, p := range partitions {
-			if err := c.flashPartition(p); err != nil {
-				log.Printf("FlashOsCommand failed: %v", err)
-				return err
-			}
-			if err := rebootToBootloader(c.ctx, c.svc.DUT, "fastboot"); err != nil {
-				log.Printf("FlashOsCommand failed: %v", err)
-				return err
-			}
-		}
-		// Flashing all other partitions, keeping user data.
-		if err := c.flashAll(); err != nil {
-			log.Printf("FlashOsCommand failed: %v", err)
-			return err
-		}
-		// Device takes some time to boot after flashing.
-		maxWaitTime := 120 * time.Second
-		if err := waitForDevice(c.ctx, c.svc.DUT, maxWaitTime); err != nil {
-			log.Printf("FlashOsCommand failed: %v", err)
-			return err
-		}
-		// Fetch the updated OS info
-		if err := c.fetchOSInfo(); err != nil {
-			log.Printf("FlashOsCommand failed: %v", err)
-			return err
-		}
-	}
-	log.Printf("FlashOsCommand Success")
-	return nil
-}
-
-func (c *FlashOsCommand) Revert() error {
-	return nil
-}
-
-func (c *FlashOsCommand) GetErrorMessage() string {
-	return "failed to flash Android OS"
-}
-
-func (c *FlashOsCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_PROVISIONING_FAILED
-}
-
-func (c *FlashOsCommand) flashPartition(partition string) error {
-	re, err := regexp.Compile(`^` + partition + `[-.].*img$`)
-	if err != nil {
-		return err
-	}
-	for _, f := range c.svc.OS.ImagePath.Files {
-		if re.MatchString(filepath.Base(f)) {
-			dut := c.svc.DUT
-			provisionDir := c.svc.OS.ImagePath.DutAndroidProductOut
-			args := []string{"-s", dut.SerialNumber, "flash", partition, filepath.Join(provisionDir, f)}
-			_, err = dut.AssociatedHost.RunCmd(c.ctx, "fastboot", args)
-			return err
-		}
-	}
-	return errors.Reason("cannot find '" + partition + "' image").Err()
-}
-
-func (c *FlashOsCommand) flashAll() error {
-	for _, f := range c.svc.OS.ImagePath.Files {
-		if strings.HasSuffix(f, ".zip") {
-			dut := c.svc.DUT
-			provisionDir := c.svc.OS.ImagePath.DutAndroidProductOut
-			tmpDir := filepath.Join(c.svc.OS.ImagePath.DutAndroidProductOut, "/tmp")
-			dut.AssociatedHost.CreateDirectories(c.ctx, []string{tmpDir})
-			args := []string{"-s", dut.SerialNumber, "update", filepath.Join(provisionDir, f)}
-			// fastboot fails if TMPDIR does not point to a directory in stateful_partition.
-			_, err := dut.AssociatedHost.RunCmd(c.ctx, "TMPDIR="+tmpDir+" fastboot", args)
-			return err
-		}
-	}
-	return errors.Reason("cannot find update zip file").Err()
-}
-
-func (c *FlashOsCommand) fetchOSInfo() error {
-	dut := c.svc.DUT
-	buildId, err := getOSBuildId(c.ctx, dut)
-	if err != nil {
-		return err
-	}
-	incrementalVersion, err := getOSIncrementalVersion(c.ctx, dut)
-	if err != nil {
-		return err
-	}
-	osVersion, err := getOSVersion(c.ctx, dut)
-	if err != nil {
-		return err
-	}
-	c.svc.OS.UpdatedBuildInfo = &service.OsBuildInfo{
-		Id:                 buildId,
-		IncrementalVersion: incrementalVersion,
-		OsVersion:          osVersion,
-	}
-	log.Printf("Installed Android OS: version=%s, build ID=%s", osVersion, buildId)
-	return nil
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/flash_os_command_test.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/flash_os_command_test.go
deleted file mode 100644
index 8839b7d..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/flash_os_command_test.go
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright 2023 The ChromiumOS Authors.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"context"
-	"os"
-	"path/filepath"
-	"testing"
-
-	"github.com/golang/mock/gomock"
-	"go.chromium.org/chromiumos/config/go/test/api"
-
-	. "github.com/smartystreets/goconvey/convey"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/service"
-	mock_common_utils "go.chromium.org/chromiumos/test/provision/v2/mock-common-utils"
-)
-
-func TestFlashOsCommand(t *testing.T) {
-	t.Parallel()
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-	Convey("FlashOsCommandCommand", t, func() {
-		associatedHost := mock_common_utils.NewMockServiceAdapterInterface(ctrl)
-		svc, _ := service.NewAndroidServiceFromExistingConnection(
-			associatedHost,
-			"dutSerialNumber",
-			nil,
-			nil,
-		)
-		provisionDir, _ := os.MkdirTemp("", "testCleanup")
-		defer os.RemoveAll(provisionDir)
-		log, _ := common.SetUpLog(provisionDir)
-		cmd := NewFlashOsCommand(context.Background(), svc)
-
-		Convey("Execute", func() {
-			svc.OS = &service.AndroidOS{
-				ImagePath: &service.ImagePath{
-					DutAndroidProductOut: provisionDir,
-					GsPath:               "gs://gs_bucket/folder/image",
-					Files:                []string{"abcd/bootloader-model-123456789.img", "radio-model-123456789.img", "model-img-123456789.zip"},
-				},
-			}
-			bootloaderArgs := []string{"-s", "dutSerialNumber", "flash", "bootloader", provisionDir + "/abcd/bootloader-model-123456789.img"}
-			radioArgs := []string{"-s", "dutSerialNumber", "flash", "radio", provisionDir + "/radio-model-123456789.img"}
-			updateArgs := []string{"-s", "dutSerialNumber", "update", provisionDir + "/model-img-123456789.zip"}
-			rebootArgs := []string{"-s", "dutSerialNumber", "reboot", "bootloader"}
-			waitArgs := []string{"devices", "|", "grep", "-sw", "dutSerialNumber", "|", "awk", "'{print $2}'"}
-			fetchBuildIdArgs := []string{"-s", "dutSerialNumber", "shell", "getprop", "ro.build.id"}
-			fetchOSIncrementalVersionArgs := []string{"-s", "dutSerialNumber", "shell", "getprop", "ro.build.version.incremental"}
-			fetchOSReleaseVersionArgs := []string{"-s", "dutSerialNumber", "shell", "getprop", "ro.build.version.release"}
-			tmpDirPath := filepath.Join(svc.OS.ImagePath.DutAndroidProductOut, "/tmp")
-
-			gomock.InOrder(
-				associatedHost.EXPECT().RunCmd(gomock.Any(), gomock.Eq("fastboot"), gomock.Eq(bootloaderArgs)).Return("any string", nil).Times(1),
-				associatedHost.EXPECT().RunCmd(gomock.Any(), gomock.Eq("fastboot"), gomock.Eq(rebootArgs)).Return("any string", nil).Times(1),
-				associatedHost.EXPECT().RunCmd(gomock.Any(), gomock.Eq("fastboot"), gomock.Eq(waitArgs)).Return("fastboot", nil).Times(1),
-				associatedHost.EXPECT().RunCmd(gomock.Any(), gomock.Eq("fastboot"), gomock.Eq(radioArgs)).Return("any string", nil).Times(1),
-				associatedHost.EXPECT().RunCmd(gomock.Any(), gomock.Eq("fastboot"), gomock.Eq(rebootArgs)).Return("any string", nil).Times(1),
-				associatedHost.EXPECT().RunCmd(gomock.Any(), gomock.Eq("fastboot"), gomock.Eq(waitArgs)).Return("fastboot", nil).Times(1),
-				associatedHost.EXPECT().CreateDirectories(gomock.Any(), []string{tmpDirPath}),
-				associatedHost.EXPECT().RunCmd(gomock.Any(), gomock.Eq("TMPDIR="+tmpDirPath+" fastboot"), gomock.Eq(updateArgs)).Return("any string", nil).Times(1),
-				associatedHost.EXPECT().RunCmd(gomock.Any(), gomock.Eq("adb"), gomock.Eq(waitArgs)).Return("device", nil).Times(3),
-				associatedHost.EXPECT().RunCmd(gomock.Any(), gomock.Eq("adb"), gomock.Eq(fetchBuildIdArgs)).Return("any string", nil).Times(1),
-				associatedHost.EXPECT().RunCmd(gomock.Any(), gomock.Eq("adb"), gomock.Eq(fetchOSIncrementalVersionArgs)).Return("1234567890", nil).Times(1),
-				associatedHost.EXPECT().RunCmd(gomock.Any(), gomock.Eq("adb"), gomock.Eq(fetchOSReleaseVersionArgs)).Return("10", nil).Times(1),
-			)
-			So(cmd.Execute(log), ShouldBeNil)
-		})
-		Convey("Execute - Nothing to provision", func() {
-			log, _ := common.SetUpLog(provisionDir)
-			svc.OS = nil
-			associatedHost.EXPECT().RunCmd(gomock.Any(), gomock.Eq("fastboot"), gomock.Any()).Times(0)
-			So(cmd.Execute(log), ShouldBeNil)
-		})
-		Convey("Revert", func() {
-			So(cmd.Revert(), ShouldBeNil)
-		})
-		Convey("GetErrorMessage", func() {
-			So(cmd.GetErrorMessage(), ShouldEqual, "failed to flash Android OS")
-		})
-		Convey("GetStatus", func() {
-			So(cmd.GetStatus(), ShouldEqual, api.InstallResponse_STATUS_PROVISIONING_FAILED)
-		})
-	})
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/install_apk_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/install_apk_command.go
deleted file mode 100644
index 00bef8d..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/install_apk_command.go
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"context"
-	"log"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/service"
-)
-
-type InstallAPKCommand struct {
-	ctx context.Context
-	svc *service.AndroidService
-}
-
-func NewInstallAPKCommand(ctx context.Context, svc *service.AndroidService) *InstallAPKCommand {
-	return &InstallAPKCommand{
-		ctx: ctx,
-		svc: svc,
-	}
-}
-
-func (c *InstallAPKCommand) Execute(log *log.Logger) error {
-	log.Printf("Start InstallAPKCommand Execute")
-	for _, pkg := range c.svc.ProvisionPackages {
-		androidPkg := pkg.AndroidPackage
-		if apkFile := pkg.APKFile; apkFile != nil {
-			dut := c.svc.DUT
-			args := []string{"-s", dut.SerialNumber, "install", "-r", "-d", "-g", apkFile.DutPath}
-			if _, err := dut.AssociatedHost.RunCmd(c.ctx, "adb", args); err != nil {
-				log.Printf("InstallAPKCommand start failed: %v", err)
-				return err
-			}
-			versionCode, err := getAndroidPackageVersionCode(c.ctx, dut, androidPkg.PackageName)
-			if err != nil {
-				log.Printf("InstallAPKCommand Failure: %v", err)
-				// Falling back to the CIPD package version code
-				versionCode = pkg.CIPDPackage.VersionCode
-			}
-			androidPkg.UpdatedVersionCode = versionCode
-			log.Printf("Installed Android package: %s, version=%s", androidPkg.PackageName, androidPkg.UpdatedVersionCode)
-		}
-	}
-	log.Printf("InstallAPKCommand Success")
-	return nil
-}
-
-func (c *InstallAPKCommand) Revert() error {
-	return nil
-}
-
-func (c *InstallAPKCommand) GetErrorMessage() string {
-	return "failed to install APK"
-}
-
-func (c *InstallAPKCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_PROVISIONING_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/install_apk_command_test.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/install_apk_command_test.go
deleted file mode 100644
index e7d5a1a..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/install_apk_command_test.go
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"context"
-	"os"
-	"testing"
-
-	"github.com/golang/mock/gomock"
-	"go.chromium.org/chromiumos/config/go/test/api"
-
-	. "github.com/smartystreets/goconvey/convey"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/service"
-	mock_common_utils "go.chromium.org/chromiumos/test/provision/v2/mock-common-utils"
-)
-
-func TestInstallAPKCommand(t *testing.T) {
-	t.Parallel()
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-	Convey("InstallAPKCommand", t, func() {
-		associatedHost := mock_common_utils.NewMockServiceAdapterInterface(ctrl)
-		pkgProto := &api.CIPDPackage{
-			AndroidPackage: api.AndroidPackage_GMS_CORE,
-		}
-		svc, _ := service.NewAndroidServiceFromExistingConnection(
-			associatedHost,
-			"dutSerialNumber",
-			nil,
-			[]*api.CIPDPackage{pkgProto},
-		)
-		provisionPkg := svc.ProvisionPackages[0]
-		provisionPkg.APKFile = &service.PkgFile{
-			Name:    "apkName.apk",
-			GsPath:  "gs_path",
-			DutPath: "/tmp/instanceId/apkName.apk",
-		}
-		provisionPkg.AndroidPackage = &service.AndroidPackage{
-			PackageName: common.GMSCorePackageName,
-			VersionCode: "224312037",
-		}
-		provisionDir, _ := os.MkdirTemp("", "testCleanup")
-		defer os.RemoveAll(provisionDir)
-
-		cmd := NewInstallAPKCommand(context.Background(), svc)
-
-		Convey("Execute", func() {
-			log, _ := common.SetUpLog(provisionDir)
-			installArgs := []string{"-s", "dutSerialNumber", "install", "-r", "-d", "-g", "/tmp/instanceId/apkName.apk"}
-			versionArgs := []string{"-s", "dutSerialNumber", "shell", "dumpsys", "package", common.GMSCorePackageName, "|", "grep", "versionCode", "|", "sort", "-r", "|", "head", "-n", "1"}
-			gomock.InOrder(
-				associatedHost.EXPECT().RunCmd(gomock.Any(), gomock.Eq("adb"), gomock.Eq(installArgs)).Return("", nil).Times(1),
-				associatedHost.EXPECT().RunCmd(gomock.Any(), gomock.Eq("adb"), gomock.Eq(versionArgs)).Return("versionCode=9876543210 minSdk=30 targetSdk=33", nil),
-			)
-			So(cmd.Execute(log), ShouldBeNil)
-			So(provisionPkg.AndroidPackage.UpdatedVersionCode, ShouldResemble, "9876543210")
-		})
-		Convey("Revert", func() {
-			So(cmd.Revert(), ShouldBeNil)
-		})
-		Convey("GetErrorMessage", func() {
-			So(cmd.GetErrorMessage(), ShouldEqual, "failed to install APK")
-		})
-		Convey("GetStatus", func() {
-			So(cmd.GetStatus(), ShouldEqual, api.InstallResponse_STATUS_PROVISIONING_FAILED)
-		})
-	})
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/reboot_helpers.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/reboot_helpers.go
deleted file mode 100644
index 541efdb..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/reboot_helpers.go
+++ /dev/null
@@ -1,91 +0,0 @@
-// Copyright 2023 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"context"
-	"strings"
-	"time"
-
-	"go.chromium.org/luci/common/errors"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/service"
-)
-
-// rebootToBootloader reboots DUT into bootloader mode.
-func rebootToBootloader(ctx context.Context, dut *service.DUTConnection, cmd string) error {
-	args := []string{"-s", dut.SerialNumber, "reboot", "bootloader"}
-	if _, err := dut.AssociatedHost.RunCmd(ctx, cmd, args); err != nil {
-		return err
-	}
-	// Device may take some time to boot into bootloader.
-	maxWaitTime := 10 * time.Second
-	return waitForBootloaderMode(ctx, dut, maxWaitTime)
-}
-
-// waitForBootloaderMode waits until DUT reboots into bootloader mode.
-func waitForBootloaderMode(ctx context.Context, dut *service.DUTConnection, waitTimeout time.Duration) error {
-	waitInRetry := 1 * time.Second
-	retryCount := int(waitTimeout / waitInRetry)
-	args := []string{"devices", "|", "grep", "-sw", dut.SerialNumber, "|", "awk", "'{print $2}'"}
-	for {
-		ds, err := dut.AssociatedHost.RunCmd(ctx, "fastboot", args)
-		if err != nil {
-			return err
-		}
-		if state := strings.TrimSuffix(ds, "\n"); state == "fastboot" {
-			return nil
-		}
-		retryCount -= 1
-		if retryCount <= 0 {
-			return errors.Reason("failed to wait for dut bootloader mode").Err()
-		}
-		time.Sleep(waitInRetry)
-	}
-}
-
-// waitForDevice waits until DUT reboots.
-func waitForDevice(ctx context.Context, dut *service.DUTConnection, waitTimeout time.Duration) error {
-	waitInRetry := 5 * time.Second
-	retryCount := int(waitTimeout / waitInRetry)
-	stateCount := 3
-	// Ensure the consistent device state at least <stateCount> times in a row.
-	successCount, failureCount := 0, 0
-	args := []string{"devices", "|", "grep", "-sw", dut.SerialNumber, "|", "awk", "'{print $2}'"}
-	for {
-		// Read device state
-		if ds, err := dut.AssociatedHost.RunCmd(ctx, "adb", args); err != nil {
-			successCount = 0
-			failureCount += 1
-		} else {
-			if state := strings.TrimSuffix(ds, "\n"); state == "device" {
-				successCount += 1
-				failureCount = 0
-				if successCount >= stateCount {
-					break
-				}
-			} else {
-				successCount = 0
-				if state == "unauthorized" {
-					failureCount += 1
-					// If device is in unauthorized state for more than 90 seconds, return error.
-					// The device either broken or public key is missing.
-					if failureCount >= 16 {
-						return errors.Reason("dut state is '%s'", ds).Err()
-					}
-				}
-			}
-		}
-		retryCount -= 1
-		if retryCount <= 0 {
-			break
-		}
-		time.Sleep(waitInRetry)
-	}
-	if successCount < stateCount {
-		return errors.Reason("failed to wait for dut normal mode").Err()
-	}
-	return nil
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/reboot_to_bootloader_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/reboot_to_bootloader_command.go
deleted file mode 100644
index a510ea3..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/reboot_to_bootloader_command.go
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2023 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"context"
-	"log"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/service"
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type RebootToBootloaderCommand struct {
-	ctx context.Context
-	svc *service.AndroidService
-}
-
-func NewRebootToBootloaderCommand(ctx context.Context, svc *service.AndroidService) *RebootToBootloaderCommand {
-	return &RebootToBootloaderCommand{
-		ctx: ctx,
-		svc: svc,
-	}
-}
-
-func (c *RebootToBootloaderCommand) Execute(log *log.Logger) error {
-	log.Printf("Start RebootToBootloaderCommand Execute")
-	if osImage := c.svc.OS; osImage != nil && osImage.ImagePath.GsPath != "" {
-		if err := rebootToBootloader(c.ctx, c.svc.DUT, "adb"); err != nil {
-			log.Printf("RebootToBootloaderCommand failed: %v", err)
-			return err
-		}
-	}
-	log.Printf("RebootToBootloaderCommand Success")
-	return nil
-}
-
-func (c *RebootToBootloaderCommand) Revert() error {
-	return nil
-}
-
-func (c *RebootToBootloaderCommand) GetErrorMessage() string {
-	return "failed to reboot to bootloader"
-}
-
-func (c *RebootToBootloaderCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_PROVISIONING_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/reboot_to_bootloader_command_test.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/reboot_to_bootloader_command_test.go
deleted file mode 100644
index 45ce0f8..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/reboot_to_bootloader_command_test.go
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright 2023 The ChromiumOS Authors.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"context"
-	"os"
-	"testing"
-
-	"github.com/golang/mock/gomock"
-	"go.chromium.org/chromiumos/config/go/test/api"
-
-	. "github.com/smartystreets/goconvey/convey"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/service"
-	mock_common_utils "go.chromium.org/chromiumos/test/provision/v2/mock-common-utils"
-)
-
-func TestRebootToBootloaderCommand(t *testing.T) {
-	t.Parallel()
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-	Convey("RebootToBootloaderCommand", t, func() {
-		associatedHost := mock_common_utils.NewMockServiceAdapterInterface(ctrl)
-		svc, _ := service.NewAndroidServiceFromExistingConnection(
-			associatedHost,
-			"dutSerialNumber",
-			nil,
-			nil,
-		)
-		provisionDir, _ := os.MkdirTemp("", "testCleanup")
-		defer os.RemoveAll(provisionDir)
-		log, _ := common.SetUpLog(provisionDir)
-		cmd := NewRebootToBootloaderCommand(context.Background(), svc)
-
-		Convey("Execute", func() {
-			svc.OS = &service.AndroidOS{
-				ImagePath: &service.ImagePath{
-					GsPath: "gs://gs_bucket/folder/image",
-				},
-			}
-			rebootArgs := []string{"-s", "dutSerialNumber", "reboot", "bootloader"}
-			waitArgs := []string{"devices", "|", "grep", "-sw", "dutSerialNumber", "|", "awk", "'{print $2}'"}
-			gomock.InOrder(
-				associatedHost.EXPECT().RunCmd(gomock.Any(), gomock.Eq("adb"), gomock.Eq(rebootArgs)).Return("", nil).Times(1),
-				associatedHost.EXPECT().RunCmd(gomock.Any(), gomock.Eq("fastboot"), gomock.Eq(waitArgs)).Return("fastboot", nil).Times(1),
-			)
-			So(cmd.Execute(log), ShouldBeNil)
-		})
-		Convey("Execute - Nothing to provision", func() {
-			log, _ := common.SetUpLog(provisionDir)
-			svc.OS = nil
-			associatedHost.EXPECT().RunCmd(gomock.Any(), gomock.Eq("adb"), gomock.Any()).Times(0)
-			associatedHost.EXPECT().RunCmd(gomock.Any(), gomock.Eq("fastboot"), gomock.Any()).Times(0)
-			So(cmd.Execute(log), ShouldBeNil)
-		})
-		Convey("Revert", func() {
-			So(cmd.Revert(), ShouldBeNil)
-		})
-		Convey("GetErrorMessage", func() {
-			So(cmd.GetErrorMessage(), ShouldEqual, "failed to reboot to bootloader")
-		})
-		Convey("GetStatus", func() {
-			So(cmd.GetStatus(), ShouldEqual, api.InstallResponse_STATUS_PROVISIONING_FAILED)
-		})
-	})
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/resolve_cipd_package_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/resolve_cipd_package_command.go
deleted file mode 100644
index db5c708..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/resolve_cipd_package_command.go
+++ /dev/null
@@ -1,118 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"context"
-	"fmt"
-	"log"
-	"path/filepath"
-	"strings"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"go.chromium.org/luci/common/errors"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common/cipd"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/service"
-)
-
-type ResolveCIPDPackageCommand struct {
-	ctx  context.Context
-	svc  *service.AndroidService
-	cipd cipd.CIPDClient
-}
-
-func NewResolveCIPDPackageCommand(ctx context.Context, svc *service.AndroidService) *ResolveCIPDPackageCommand {
-	return &ResolveCIPDPackageCommand{
-		ctx:  ctx,
-		svc:  svc,
-		cipd: cipd.NewCIPDClient(ctx),
-	}
-}
-
-func (c *ResolveCIPDPackageCommand) Execute(log *log.Logger) error {
-	log.Printf("Start ResolveCIPDPackageCommand Execute")
-	for _, pkg := range c.svc.ProvisionPackages {
-		cipdPkg := pkg.CIPDPackage
-		if cipdPkg.PackageProto.GetName() == "" {
-			// CIPD package name is not specified in the provision request.
-			// It will be resolved from the Android package name.
-			// e.g. "com.google.android.gms" -> "chromiumos/infra/skylab/third_party/gmscore/gmscore_prodsc_arm64_alldpi_release_apk"
-			if err := c.resolvePackageName(cipdPkg.PackageProto); err != nil {
-				log.Printf("ResolveCIPDPackageCommand Failure: %v", err)
-				return err
-			}
-		}
-		d, err := c.cipd.Describe(cipdPkg.PackageProto, true, false)
-		if err != nil {
-			log.Printf("ResolveCIPDPackageCommand Failure: %v", err)
-			return err
-		}
-		var versionCodeTag string
-		for _, t := range d.Tags {
-			if s := strings.SplitN(t.Tag, ":", 2); s[0] == common.CIPDVersionCodeTagName {
-				versionCodeTag = s[1]
-				break
-			}
-		}
-		if versionCodeTag == "" {
-			err = fmt.Errorf("%s tag is empty or does not exist", common.CIPDVersionCodeTagName)
-			log.Printf("ResolveCIPDPackageCommand Failure: %v", err)
-			return err
-		}
-		cipdPkg.PackageName = d.InstanceInfo.Pin.PackageName
-		cipdPkg.InstanceId = d.InstanceInfo.Pin.InstanceID
-		cipdPkg.VersionCode = versionCodeTag
-		log.Printf("Resolved CIPD package: %s, instance ID=%s, version=%s", cipdPkg.PackageName, cipdPkg.PackageName, cipdPkg.VersionCode)
-	}
-	log.Printf("ResolveCIPDPackageCommand Success")
-	return nil
-}
-
-func (c *ResolveCIPDPackageCommand) Revert() error {
-	return nil
-}
-
-func (c *ResolveCIPDPackageCommand) GetErrorMessage() string {
-	return "failed to resolve CIPD package"
-}
-
-func (c *ResolveCIPDPackageCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_CIPD_PACKAGE_LOOKUP_FAILED
-}
-
-// getPackageName uses AndroidPackage proto for CIPD package resolution.
-func (c *ResolveCIPDPackageCommand) resolvePackageName(cipdPackageProto *api.CIPDPackage) error {
-	switch p := cipdPackageProto.GetAndroidPackage(); p {
-	case api.AndroidPackage_GMS_CORE:
-		var osVersion string
-		if os := c.svc.OS; os != nil && os.UpdatedBuildInfo != nil {
-			osVersion = os.UpdatedBuildInfo.OsVersion
-		}
-		if osVersion == "" {
-			// Read OS version from DUT.
-			v, err := getOSVersion(c.ctx, c.svc.DUT)
-			if err != nil {
-				return err
-			}
-			osVersion = v
-		}
-		platform := common.OSVersionToGMSCorePlatformMap[osVersion]
-		if platform == "" {
-			return errors.Reason("missing GMSCore package platform for Android OS v.%s", osVersion).Err()
-		}
-		dpi := "alldpi"
-		if apkDetails := cipdPackageProto.GetApkDetails(); apkDetails != nil {
-			if apkDetails.GetDensity() == api.ApkDetails_XXHDPI {
-				dpi = "xxhdpi"
-			}
-		}
-		cipdPackageProto.Name = filepath.Join(common.GMSCoreCIPDPath, fmt.Sprintf("gmscore_%s_arm64_%s_release_apk", platform, dpi))
-	default:
-		return errors.Reason("failed to resolve CIPD package from unsupported Android package: %s", p.String()).Err()
-	}
-	return nil
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/resolve_cipd_package_command_test.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/resolve_cipd_package_command_test.go
deleted file mode 100644
index 5f3b1e9..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/resolve_cipd_package_command_test.go
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"context"
-	"os"
-	"testing"
-
-	"github.com/golang/mock/gomock"
-	"go.chromium.org/chromiumos/config/go/test/api"
-	luci_cipd "go.chromium.org/luci/cipd/client/cipd"
-	luci_cipd_common "go.chromium.org/luci/cipd/common"
-
-	. "github.com/smartystreets/goconvey/convey"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common/cipd"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/service"
-	mock_common_utils "go.chromium.org/chromiumos/test/provision/v2/mock-common-utils"
-)
-
-func TestResolveCIPDPackageCommand(t *testing.T) {
-	t.Parallel()
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-	Convey("ResolveCIPDPackageCommand", t, func() {
-		pkgProto := &api.CIPDPackage{
-			VersionOneof: &api.CIPDPackage_InstanceId{
-				InstanceId: "instanceId",
-			},
-			AndroidPackage: api.AndroidPackage_GMS_CORE,
-		}
-		associatedHost := mock_common_utils.NewMockServiceAdapterInterface(ctrl)
-		svc, _ := service.NewAndroidServiceFromExistingConnection(
-			associatedHost,
-			"dutSerialNumber",
-			nil,
-			[]*api.CIPDPackage{pkgProto},
-		)
-		provisionPkg := svc.ProvisionPackages[0]
-		provisionDir, _ := os.MkdirTemp("", "testCleanup")
-		defer os.RemoveAll(provisionDir)
-
-		cmd := NewResolveCIPDPackageCommand(context.Background(), svc)
-
-		Convey("Execute", func() {
-			log, _ := common.SetUpLog(provisionDir)
-			mockCIPDClient := cipd.NewMockCIPDClientInterface(ctrl)
-			cmd.cipd = mockCIPDClient
-			Convey("New Android Package", func() {
-				provisionPkg.CIPDPackage.PackageProto.Name = "cipd_path/cipd_package_name"
-				pin := luci_cipd_common.Pin{PackageName: "resolved_cipd_package_name", InstanceID: "resolvedInstanceId"}
-				tags := []luci_cipd.TagInfo{{Tag: "arch:arm64"}, {Tag: "build_type:prodrvc"}, {Tag: "dpi:alldpi"}, {Tag: "version_code:222615037"}}
-				d := &luci_cipd.InstanceDescription{InstanceInfo: luci_cipd.InstanceInfo{Pin: pin}, Tags: tags}
-				mockCIPDClient.EXPECT().Describe(gomock.Eq(pkgProto), gomock.Eq(true), gomock.Eq(false)).Return(d, nil).Times(1)
-				So(cmd.Execute(log), ShouldBeNil)
-				So(provisionPkg.CIPDPackage.PackageProto.Name, ShouldEqual, "cipd_path/cipd_package_name")
-				So(provisionPkg.CIPDPackage.PackageName, ShouldEqual, "resolved_cipd_package_name")
-				So(provisionPkg.CIPDPackage.InstanceId, ShouldEqual, "resolvedInstanceId")
-				So(provisionPkg.CIPDPackage.VersionCode, ShouldEqual, "222615037")
-			})
-			Convey("Resolve CIPD package name", func() {
-				provisionPkg.CIPDPackage.PackageProto.Name = ""
-				pin := luci_cipd_common.Pin{PackageName: "resolved_cipd_package_name", InstanceID: "resolvedInstanceId"}
-				tags := []luci_cipd.TagInfo{{Tag: "arch:arm64"}, {Tag: "build_type:prodrvc"}, {Tag: "dpi:alldpi"}, {Tag: "version_code:222615037"}}
-				d := &luci_cipd.InstanceDescription{InstanceInfo: luci_cipd.InstanceInfo{Pin: pin}, Tags: tags}
-				versionArgs := []string{"-s", "dutSerialNumber", "shell", "getprop", "ro.build.version.release"}
-				associatedHost.EXPECT().RunCmd(gomock.Any(), gomock.Eq("adb"), versionArgs).Return("12", nil).Times(1)
-				mockCIPDClient.EXPECT().Describe(gomock.Eq(pkgProto), gomock.Eq(true), gomock.Eq(false)).Return(d, nil).Times(1)
-				So(cmd.Execute(log), ShouldBeNil)
-				So(provisionPkg.CIPDPackage.PackageProto.Name, ShouldEqual, "chromiumos/infra/skylab/third_party/gmscore/gmscore_prodsc_arm64_alldpi_release_apk")
-				So(provisionPkg.CIPDPackage.PackageName, ShouldEqual, "resolved_cipd_package_name")
-				So(provisionPkg.CIPDPackage.InstanceId, ShouldEqual, "resolvedInstanceId")
-				So(provisionPkg.CIPDPackage.VersionCode, ShouldEqual, "222615037")
-			})
-		})
-		Convey("Revert", func() {
-			So(cmd.Revert(), ShouldBeNil)
-		})
-		Convey("GetErrorMessage", func() {
-			So(cmd.GetErrorMessage(), ShouldEqual, "failed to resolve CIPD package")
-		})
-		Convey("GetStatus", func() {
-			So(cmd.GetStatus(), ShouldEqual, api.InstallResponse_STATUS_CIPD_PACKAGE_LOOKUP_FAILED)
-		})
-	})
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/resolve_image_path_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/resolve_image_path_command.go
deleted file mode 100644
index f4d72b8..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/resolve_image_path_command.go
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright 2023 The ChromiumOS Authors.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"context"
-	"log"
-	"strings"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common/gsstorage"
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"go.chromium.org/luci/common/errors"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/service"
-)
-
-type ResolveImagePathCommand struct {
-	ctx context.Context
-	svc *service.AndroidService
-}
-
-func NewResolveImagePathCommand(ctx context.Context, svc *service.AndroidService) *ResolveImagePathCommand {
-	return &ResolveImagePathCommand{
-		ctx: ctx,
-		svc: svc,
-	}
-}
-
-func (c *ResolveImagePathCommand) Execute(log *log.Logger) error {
-	log.Printf("Start ResolveImagePathCommand Execute")
-	if c.svc.OS != nil {
-		if boardToBuildId := c.svc.OS.ImagePath.BoardToBuildID; boardToBuildId != nil {
-			board := c.svc.DUT.Board
-			buildId, ok := boardToBuildId[board]
-			if !ok {
-				err := errors.Reason("Android image not found for %s board", board).Err()
-				log.Printf("ResolveImagePathCommand Failure: %v", err)
-				return err
-			}
-			if buildId != c.svc.OS.BuildInfo.Id {
-				// DUT has a different Android OS build. Proceeding with provision.
-				c.svc.OS.ImagePath.GsPath = gsstorage.GetGsPath("", buildId, board)
-			}
-		} else if gsPath := c.svc.OS.ImagePath.GsPath; strings.HasPrefix(gsPath, "gs://"+common.GSImageBucketName+"/") {
-			s := strings.Split(strings.TrimSuffix(gsPath, "/"), "/")
-			if len(s) == 5 {
-				buildId, board := s[3], s[4]
-				if board != c.svc.DUT.Board {
-					err := errors.Reason("Invalid provision request - %s image for %s board", board, c.svc.DUT.Board).Err()
-					log.Printf("ResolveImagePathCommand Failure: %v", err)
-					return err
-				}
-				if buildId == c.svc.OS.BuildInfo.Id {
-					// DUT has the same Android OS build. Skipping provision.
-					c.svc.OS.ImagePath.GsPath = ""
-				}
-			}
-		}
-	}
-	log.Printf("ResolveImagePathCommand Success")
-	return nil
-}
-
-func (c *ResolveImagePathCommand) Revert() error {
-	return nil
-}
-
-func (c *ResolveImagePathCommand) GetErrorMessage() string {
-	return "failed to resolve GS image path"
-}
-
-func (c *ResolveImagePathCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_PRE_PROVISION_SETUP_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/resolve_image_path_command_test.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/resolve_image_path_command_test.go
deleted file mode 100644
index 2fb0f70..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/resolve_image_path_command_test.go
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright 2023 The ChromiumOS Authors.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"context"
-	"os"
-	"testing"
-
-	"github.com/golang/mock/gomock"
-	"go.chromium.org/chromiumos/config/go/test/api"
-
-	. "github.com/smartystreets/goconvey/convey"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/service"
-	mock_common_utils "go.chromium.org/chromiumos/test/provision/v2/mock-common-utils"
-)
-
-func TestResolveImagePathCommand(t *testing.T) {
-	t.Parallel()
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-	Convey("ResolveImagePathCommand", t, func() {
-		associatedHost := mock_common_utils.NewMockServiceAdapterInterface(ctrl)
-		pkgProto := &api.CIPDPackage{
-			AndroidPackage: api.AndroidPackage_GMS_CORE,
-		}
-		svc, _ := service.NewAndroidServiceFromExistingConnection(
-			associatedHost,
-			"dutSerialNumber",
-			&api.AndroidOsImage{LocationOneof: &api.AndroidOsImage_OsVersion{OsVersion: "12"}},
-			[]*api.CIPDPackage{pkgProto},
-		)
-		provisionDir, _ := os.MkdirTemp("", "testCleanup")
-		defer os.RemoveAll(provisionDir)
-
-		cmd := NewResolveImagePathCommand(context.Background(), svc)
-
-		Convey("Execute", func() {
-			svc.DUT.Board = "barbet"
-			svc.OS.BuildInfo = &service.OsBuildInfo{Id: "QD4A.200805.003"}
-			log, _ := common.SetUpLog(provisionDir)
-			expectedGSPath := "gs://android-provisioning-images/SQ3A.220705.003.A1/barbet/"
-			So(cmd.Execute(log), ShouldBeNil)
-			So(svc.OS.ImagePath.GsPath, ShouldEqual, expectedGSPath)
-		})
-		Convey("Execute - DUT has the same build", func() {
-			svc.DUT.Board = "barbet"
-			svc.OS.BuildInfo = &service.OsBuildInfo{Id: "SQ3A.220705.003.A1"}
-			log, _ := common.SetUpLog(provisionDir)
-			expectedGSPath := ""
-			So(cmd.Execute(log), ShouldBeNil)
-			So(svc.OS.ImagePath.GsPath, ShouldEqual, expectedGSPath)
-		})
-		Convey("Execute - missing board build", func() {
-			svc.DUT.Board = "next_board"
-			log, _ := common.SetUpLog(provisionDir)
-			So(cmd.Execute(log), ShouldNotBeNil)
-		})
-		Convey("Revert", func() {
-			So(cmd.Revert(), ShouldBeNil)
-		})
-		Convey("GetErrorMessage", func() {
-			So(cmd.GetErrorMessage(), ShouldEqual, "failed to resolve GS image path")
-		})
-		Convey("GetStatus", func() {
-			So(cmd.GetStatus(), ShouldEqual, api.InstallResponse_STATUS_PRE_PROVISION_SETUP_FAILED)
-		})
-	})
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/restart_adb_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/restart_adb_command.go
deleted file mode 100644
index acf40fa..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/restart_adb_command.go
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"context"
-	"fmt"
-	"log"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/service"
-)
-
-type RestartADBCommand struct {
-	ctx context.Context
-	svc *service.AndroidService
-}
-
-func NewRestartADBCommand(ctx context.Context, svc *service.AndroidService) *RestartADBCommand {
-	return &RestartADBCommand{
-		ctx: ctx,
-		svc: svc,
-	}
-}
-
-func (c *RestartADBCommand) Execute(log *log.Logger) error {
-	log.Printf("Start RestartADBCommand Execute")
-	dut := c.svc.DUT
-	if _, err := dut.AssociatedHost.RunCmd(c.ctx, "adb", []string{"kill-server"}); err != nil {
-		log.Printf("RestartADBCommand failed: %v", err)
-		return err
-	}
-	if err := dut.AssociatedHost.CreateDirectories(c.ctx, []string{common.ADBUnixSocketMountDirectory}); err != nil {
-		log.Printf("RestartADBCommand failed: %v", err)
-		return err
-	}
-	cmd := fmt.Sprintf("ADB_VENDOR_KEYS=%s adb", common.ADBVendorKeys)
-	if _, err := dut.AssociatedHost.RunCmd(c.ctx, cmd, []string{"start-server"}); err != nil {
-		log.Printf("RestartADBCommand failed: %v", err)
-		return err
-	}
-	log.Printf("RestartADBCommand Success")
-	return nil
-}
-
-func (c *RestartADBCommand) Revert() error {
-	return nil
-}
-
-func (c *RestartADBCommand) GetErrorMessage() string {
-	return "failed to restart ADB service"
-}
-
-func (c *RestartADBCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_DUT_UNREACHABLE_PRE_PROVISION
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/restart_adb_command_test.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/restart_adb_command_test.go
deleted file mode 100644
index 8cd1484..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/restart_adb_command_test.go
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"context"
-	"os"
-	"testing"
-
-	"github.com/golang/mock/gomock"
-	"go.chromium.org/chromiumos/config/go/test/api"
-
-	. "github.com/smartystreets/goconvey/convey"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/service"
-	mock_common_utils "go.chromium.org/chromiumos/test/provision/v2/mock-common-utils"
-)
-
-func TestRestartADBCommand(t *testing.T) {
-	t.Parallel()
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-	Convey("RestartADBCommand", t, func() {
-		associatedHost := mock_common_utils.NewMockServiceAdapterInterface(ctrl)
-		svc, _ := service.NewAndroidServiceFromExistingConnection(
-			associatedHost,
-			"dutSerialNumber",
-			nil,
-			[]*api.CIPDPackage{{}},
-		)
-		provisionDir, _ := os.MkdirTemp("", "testCleanup")
-		defer os.RemoveAll(provisionDir)
-
-		cmd := NewRestartADBCommand(context.Background(), svc)
-
-		Convey("Execute", func() {
-			log, _ := common.SetUpLog(provisionDir)
-			gomock.InOrder(
-				associatedHost.EXPECT().RunCmd(gomock.Any(), gomock.Eq("adb"), gomock.Eq([]string{"kill-server"})).Return("", nil).Times(1),
-				associatedHost.EXPECT().CreateDirectories(gomock.Any(), gomock.Eq([]string{"/run/arc/adb"})).Return(nil).Times(1),
-				associatedHost.EXPECT().RunCmd(gomock.Any(), gomock.Eq("ADB_VENDOR_KEYS=/var/lib/android_keys adb"), gomock.Eq([]string{"start-server"})).Return("", nil),
-			)
-			So(cmd.Execute(log), ShouldBeNil)
-		})
-		Convey("Revert", func() {
-			So(cmd.Revert(), ShouldBeNil)
-		})
-		Convey("GetErrorMessage", func() {
-			So(cmd.GetErrorMessage(), ShouldEqual, "failed to restart ADB service")
-		})
-		Convey("GetStatus", func() {
-			So(cmd.GetStatus(), ShouldEqual, api.InstallResponse_STATUS_DUT_UNREACHABLE_PRE_PROVISION)
-		})
-	})
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/restart_app_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/restart_app_command.go
deleted file mode 100644
index 4eba020..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/restart_app_command.go
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright 2023 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"context"
-	"log"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common"
-	"go.chromium.org/chromiumos/config/go/test/api"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/service"
-)
-
-type RestartAppCommand struct {
-	ctx context.Context
-	svc *service.AndroidService
-}
-
-func NewRestartAppCommand(ctx context.Context, svc *service.AndroidService) *RestartAppCommand {
-	return &RestartAppCommand{
-		ctx: ctx,
-		svc: svc,
-	}
-}
-
-func (c *RestartAppCommand) Execute(log *log.Logger) error {
-	log.Printf("Start RestartAppCommand Execute")
-	dut := c.svc.DUT
-	for _, pkg := range c.svc.ProvisionPackages {
-		if androidPkg := pkg.AndroidPackage; androidPkg != nil && androidPkg.UpdatedVersionCode != "" {
-			switch p := androidPkg.PackageName; p {
-			case common.GMSCorePackageName:
-				intent := "com.google.android.gms.INITIALIZE"
-				args := [2][]string{
-					{"-s", dut.SerialNumber, "shell", "am", "force-stop", p},
-					{"-s", dut.SerialNumber, "shell", "am", "broadcast", "-a", intent}}
-				for _, arg := range args {
-					if _, err := dut.AssociatedHost.RunCmd(c.ctx, "adb", arg); err != nil {
-						log.Printf("RestartAppCommand failed: %v", err)
-						return err
-					}
-				}
-			}
-		}
-	}
-	log.Printf("RestartAppCommand Success")
-	return nil
-}
-
-func (c *RestartAppCommand) Revert() error {
-	return nil
-}
-
-func (c *RestartAppCommand) GetErrorMessage() string {
-	return "failed to restart application"
-}
-
-func (c *RestartAppCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_POST_PROVISION_SETUP_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/restart_app_command_test.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/restart_app_command_test.go
deleted file mode 100644
index 6c0261c..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/restart_app_command_test.go
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright 2023 The ChromiumOS Authors.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"context"
-	"os"
-	"testing"
-
-	"github.com/golang/mock/gomock"
-	"go.chromium.org/chromiumos/config/go/test/api"
-
-	. "github.com/smartystreets/goconvey/convey"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/service"
-	mock_common_utils "go.chromium.org/chromiumos/test/provision/v2/mock-common-utils"
-)
-
-func TestRestartAppCommand(t *testing.T) {
-	t.Parallel()
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-	Convey("RestartAppCommand", t, func() {
-		associatedHost := mock_common_utils.NewMockServiceAdapterInterface(ctrl)
-		svc, _ := service.NewAndroidServiceFromExistingConnection(
-			associatedHost,
-			"dutSerialNumber",
-			nil,
-			[]*api.CIPDPackage{{}},
-		)
-		provisionPkg := svc.ProvisionPackages[0]
-		provisionPkg.APKFile = &service.PkgFile{
-			Name:    "apkName.apk",
-			GsPath:  "gs_path",
-			DutPath: "/tmp/instanceId/apkName.apk",
-		}
-		provisionPkg.AndroidPackage = &service.AndroidPackage{
-			PackageName: common.GMSCorePackageName,
-		}
-		provisionDir, _ := os.MkdirTemp("", "testCleanup")
-		defer os.RemoveAll(provisionDir)
-
-		cmd := NewRestartAppCommand(context.Background(), svc)
-
-		Convey("Execute", func() {
-			provisionPkg.AndroidPackage.UpdatedVersionCode = "224312037"
-			log, _ := common.SetUpLog(provisionDir)
-			gomock.InOrder(
-				associatedHost.EXPECT().RunCmd(gomock.Any(), gomock.Eq("adb"), gomock.Eq([]string{"-s", "dutSerialNumber", "shell", "am", "force-stop", "com.google.android.gms"})).Return("", nil).Times(1),
-				associatedHost.EXPECT().RunCmd(gomock.Any(), gomock.Eq("adb"), gomock.Eq([]string{"-s", "dutSerialNumber", "shell", "am", "broadcast", "-a", "com.google.android.gms.INITIALIZE"})).Return("", nil).Times(1),
-			)
-			So(cmd.Execute(log), ShouldBeNil)
-		})
-		Convey("Execute - nothing installed", func() {
-			provisionPkg.AndroidPackage.UpdatedVersionCode = ""
-			log, _ := common.SetUpLog(provisionDir)
-			associatedHost.EXPECT().RunCmd(gomock.Any(), gomock.Any(), gomock.Any()).Times(0)
-			So(cmd.Execute(log), ShouldBeNil)
-		})
-		Convey("Revert", func() {
-			So(cmd.Revert(), ShouldBeNil)
-		})
-		Convey("GetErrorMessage", func() {
-			So(cmd.GetErrorMessage(), ShouldEqual, "failed to restart application")
-		})
-		Convey("GetStatus", func() {
-			So(cmd.GetStatus(), ShouldEqual, api.InstallResponse_STATUS_POST_PROVISION_SETUP_FAILED)
-		})
-	})
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/upload_apk_to_gs_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/upload_apk_to_gs_command.go
deleted file mode 100644
index 454e04e..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/upload_apk_to_gs_command.go
+++ /dev/null
@@ -1,203 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"context"
-	"fmt"
-	"log"
-	"net/http"
-	"os"
-	"path/filepath"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"go.chromium.org/luci/common/errors"
-	"google.golang.org/api/googleapi"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common/gsstorage"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/service"
-)
-
-type UploadAPKToGSCommand struct {
-	ctx context.Context
-	svc *service.AndroidService
-	gs  gsstorage.GsClient
-}
-
-func NewUploadAPKToGSCommand(ctx context.Context, svc *service.AndroidService) *UploadAPKToGSCommand {
-	return &UploadAPKToGSCommand{
-		ctx: ctx,
-		svc: svc,
-		gs:  gsstorage.NewGsClient(common.GSPackageBucketName),
-	}
-}
-
-func (c *UploadAPKToGSCommand) Execute(log *log.Logger) error {
-	log.Printf("Start UploadAPKToGSCommand Execute")
-	for _, pkg := range c.svc.ProvisionPackages {
-		if cipdPkg := pkg.CIPDPackage; cipdPkg.FilePath != "" {
-			dstPath := filepath.Join(c.svc.ProvisionDir, cipdPkg.InstanceId)
-			if _, err := os.Stat(dstPath); os.IsNotExist(err) {
-				continue
-			}
-			apkName, err := c.getApkName(cipdPkg.PackageProto)
-			if err != nil {
-				log.Printf("UploadAPKToGSCommand Failure: %v", err)
-				return err
-			}
-			apkPath := filepath.Join(dstPath, apkName)
-			if _, err = os.Stat(apkPath); os.IsNotExist(err) {
-				err = errors.Reason("APK file is missing from CIPD package: %s", apkName).Err()
-				log.Printf("UploadAPKToGSCommand Failure: %v", err)
-				return err
-			}
-			apkRemotePath := cipdPkg.InstanceId + "/" + apkName
-			if err := c.gs.Upload(c.ctx, apkPath, apkRemotePath); err != nil {
-				switch e := err.(type) {
-				case *googleapi.Error:
-					// If file already exists we do nothing.
-					if e.Code != http.StatusPreconditionFailed {
-						log.Printf("UploadAPKToGSCommand Failure: %v", err)
-						return err
-					}
-				default:
-					log.Printf("UploadAPKToGSCommand Failure: %v", err)
-					return err
-				}
-			}
-			gspath := "gs://" + common.GSPackageBucketName + "/" + apkRemotePath
-			pkg.APKFile = &service.PkgFile{
-				Name:   apkName,
-				GsPath: gspath,
-			}
-		}
-	}
-	log.Printf("UploadAPKToGSCommand Success")
-	return nil
-}
-
-func (c *UploadAPKToGSCommand) Revert() error {
-	return nil
-}
-
-func (c *UploadAPKToGSCommand) GetErrorMessage() string {
-	return "failed to extract APK file"
-}
-
-func (c *UploadAPKToGSCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_GS_UPLOAD_FAILED
-}
-
-func (c *UploadAPKToGSCommand) getApkName(cipdPkgProto *api.CIPDPackage) (string, error) {
-	switch p := cipdPkgProto.GetAndroidPackage(); p {
-	case api.AndroidPackage_GMS_CORE:
-		apkDetails := cipdPkgProto.GetApkDetails()
-		if apkDetails != nil {
-			archProto := apkDetails.GetArchitecture()
-			buildProto := apkDetails.GetBuildType()
-			if archProto != api.ApkDetails_ARCHITECTURE_UNSPECIFIED && buildProto != api.ApkDetails_BUILD_TYPE_UNSPECIFIED {
-				// Resolve APK name from input proto.
-				return c.getGmsCoreApkNameFromProto(apkDetails)
-			}
-		}
-		return c.resolveGmsCoreApkName(apkDetails)
-	default:
-		return "", errors.Reason("unsupported Android package: %s", p.String()).Err()
-	}
-}
-
-func (c *UploadAPKToGSCommand) getGmsCoreApkNameFromProto(apkDetails *api.ApkDetails) (string, error) {
-	var arch, bt, dpi, bp string
-	switch archEnum := apkDetails.GetArchitecture(); archEnum {
-	case api.ApkDetails_ARM64:
-		arch = "arm64"
-	case api.ApkDetails_X86_64:
-		arch = "x86_64"
-	case api.ApkDetails_ARMV7:
-		arch = "arm7"
-	case api.ApkDetails_X86:
-		arch = "x86"
-	default:
-		return "", errors.Reason("unsupported APK architecture: %s", archEnum.String()).Err()
-	}
-	switch btEnum := apkDetails.GetBuildType(); btEnum {
-	case api.ApkDetails_PHONE_PRE_LMP:
-		bt = "prod"
-	case api.ApkDetails_PHONE_LMP:
-		bt = "prodlmp"
-	case api.ApkDetails_PHONE_MNC:
-		bt = "prodmnc"
-	case api.ApkDetails_PHONE_PI:
-		bt = "prodpi"
-	case api.ApkDetails_PHONE_RVC:
-		bt = "prodrvc"
-	case api.ApkDetails_PHONE_SC:
-		bt = "prodsc"
-	case api.ApkDetails_PHONE_NEXT:
-		bt = "prodnext"
-	case api.ApkDetails_PHONE_GO:
-		bt = "prodgo"
-	case api.ApkDetails_PHONE_GO_R:
-		bt = "prodgor"
-	case api.ApkDetails_PHONE_GO_S:
-		bt = "prodgos"
-	default:
-		return "", errors.Reason("unsupported APK build type: %s", btEnum.String()).Err()
-	}
-	switch dpiEnum := apkDetails.GetDensity(); dpiEnum {
-	case api.ApkDetails_MDPI:
-		dpi = "mdpi"
-	case api.ApkDetails_HDPI:
-		dpi = "hdpi"
-	case api.ApkDetails_XHDPI:
-		dpi = "xhdpi"
-	case api.ApkDetails_XXHDPI:
-		dpi = "xxhdpi"
-	case api.ApkDetails_ALLDPI, api.ApkDetails_DENSITY_UNSPECIFIED:
-		// Default value.
-		dpi = "alldpi"
-	default:
-		return "", errors.Reason("unsupported APK density: %s", dpiEnum.String()).Err()
-	}
-	switch bpEnum := apkDetails.GetBuildPurpose(); bpEnum {
-	case api.ApkDetails_RAW:
-		bp = "raw"
-	case api.ApkDetails_RELEASE, api.ApkDetails_BUILD_PURPOSE_UNSPECIFIED:
-		// Default value.
-		bp = "release"
-	case api.ApkDetails_DEBUG:
-		bp = "debug"
-	case api.ApkDetails_DEBUG_SHRUNK:
-		bp = "debug_shrunk"
-	default:
-		return "", errors.Reason("unsupported APK build purpose: %s", bpEnum.String()).Err()
-	}
-	return fmt.Sprintf("gmscore_%s_%s_%s_%s.apk", bt, arch, dpi, bp), nil
-}
-
-func (c *UploadAPKToGSCommand) resolveGmsCoreApkName(apkDetails *api.ApkDetails) (string, error) {
-	var osVersion string
-	if os := c.svc.OS; os != nil && os.UpdatedBuildInfo != nil {
-		osVersion = os.UpdatedBuildInfo.OsVersion
-	}
-	if osVersion == "" {
-		// Read OS version from DUT.
-		v, err := getOSVersion(c.ctx, c.svc.DUT)
-		if err != nil {
-			return "", err
-		}
-		osVersion = v
-	}
-	platform := common.OSVersionToGMSCorePlatformMap[osVersion]
-	if platform == "" {
-		return "", errors.Reason("missing GMSCore package platform for Android OS v.%s", osVersion).Err()
-	}
-	dpi := "alldpi"
-	if apkDetails != nil && apkDetails.GetDensity() == api.ApkDetails_XXHDPI {
-		dpi = "xxhdpi"
-	}
-	return fmt.Sprintf("gmscore_%s_arm64_%s_release.apk", platform, dpi), nil
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/upload_apk_to_gs_command_test.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/upload_apk_to_gs_command_test.go
deleted file mode 100644
index f22ce01..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands/upload_apk_to_gs_command_test.go
+++ /dev/null
@@ -1,94 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"context"
-	"os"
-	"path/filepath"
-	"testing"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common/gsstorage"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/service"
-	mock_common_utils "go.chromium.org/chromiumos/test/provision/v2/mock-common-utils"
-
-	"github.com/golang/mock/gomock"
-	. "github.com/smartystreets/goconvey/convey"
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-func TestUploadApkToGsCommand(t *testing.T) {
-	t.Parallel()
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-	Convey("UploadApkToGsCommand", t, func() {
-		pkgProto := &api.CIPDPackage{
-			Name: "cipd_path/cipd_package_name",
-			VersionOneof: &api.CIPDPackage_InstanceId{
-				InstanceId: "instanceId",
-			},
-			AndroidPackage: api.AndroidPackage_GMS_CORE,
-		}
-		associatedHost := mock_common_utils.NewMockServiceAdapterInterface(ctrl)
-		svc, _ := service.NewAndroidServiceFromExistingConnection(
-			associatedHost,
-			"dutSerialNumber",
-			nil,
-			[]*api.CIPDPackage{pkgProto},
-		)
-		// Default apkName.
-		apkName := "gmscore_prodsc_arm64_alldpi_release.apk"
-		// Create provision dir and cleanup.
-		provisionDir, _ := os.MkdirTemp("", "testCleanup")
-		defer os.RemoveAll(provisionDir)
-		// Create InstanceId dir.
-		d := filepath.Join(provisionDir, "instanceId")
-		err := os.Mkdir(d, 0755)
-		if err != nil {
-			t.Fatalf("TestUploadApkToGsCommand Failure: %v", err)
-		}
-		apkPath := filepath.Join(d, apkName)
-		// Create apk file.
-		_, err = os.Create(apkPath)
-		if err != nil {
-			t.Fatalf("TestUploadApkToGsCommand Failure: %v", err)
-		}
-		svc.ProvisionDir = provisionDir
-		provisionPkg := svc.ProvisionPackages[0]
-		cipdPkg := &service.CIPDPackage{
-			PackageProto: pkgProto,
-			FilePath:     filepath.Join(provisionDir, "/instanceId/cipd_package_name.zip"),
-			PackageName:  "cipd_package_name",
-			InstanceId:   "instanceId",
-			VersionCode:  "1234567890",
-		}
-		provisionPkg.CIPDPackage = cipdPkg
-		mockGsClient := gsstorage.NewMockGsClient(ctrl)
-		cmd := NewUploadAPKToGSCommand(context.Background(), svc)
-		cmd.gs = mockGsClient
-		Convey("Execute", func() {
-			log, _ := common.SetUpLog(provisionDir)
-			Convey("Upload Android package", func() {
-				gsPath := "gs://android-provisioning-apks/instanceId/" + apkName
-				fetchOSReleaseVersionArgs := []string{"-s", "dutSerialNumber", "shell", "getprop", "ro.build.version.release"}
-				associatedHost.EXPECT().RunCmd(gomock.Any(), gomock.Eq("adb"), gomock.Eq(fetchOSReleaseVersionArgs)).Return("12", nil).Times(1)
-				mockGsClient.EXPECT().Upload(gomock.Eq(context.Background()), gomock.Eq(apkPath), gomock.Eq("instanceId/"+apkName)).Return(nil).Times(1)
-				So(cmd.Execute(log), ShouldBeNil)
-				So(provisionPkg.APKFile.Name, ShouldEqual, apkName)
-				So(provisionPkg.APKFile.GsPath, ShouldEqual, gsPath)
-			})
-		})
-		Convey("Revert", func() {
-			So(cmd.Revert(), ShouldBeNil)
-		})
-		Convey("GetErrorMessage", func() {
-			So(cmd.GetErrorMessage(), ShouldEqual, "failed to extract APK file")
-		})
-		Convey("GetStatus", func() {
-			So(cmd.GetStatus(), ShouldEqual, api.InstallResponse_STATUS_GS_UPLOAD_FAILED)
-		})
-	})
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/os_fetch_state.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/os_fetch_state.go
deleted file mode 100644
index 178565d..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/os_fetch_state.go
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2023 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package state_machine
-
-import (
-	"context"
-	"fmt"
-	"log"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"go.chromium.org/luci/common/errors"
-	"google.golang.org/protobuf/types/known/anypb"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/service"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands"
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-)
-
-type OSFetchState struct {
-	svc *service.AndroidService
-}
-
-func (s OSFetchState) Execute(ctx context.Context, log *log.Logger) (*anypb.Any, api.InstallResponse_Status, error) {
-	log.Println("State: Execute AndroidOSFetchState")
-	ctx = context.WithValue(ctx, common.StageCtxKey, common.OSFetch)
-	cmds := []common_utils.CommandInterface{
-		commands.NewResolveImagePathCommand(ctx, s.svc),
-		commands.NewCopyDataCommand(ctx, s.svc),
-	}
-	for i, c := range cmds {
-		if err := c.Execute(log); err != nil {
-			log.Printf("State: Execute AndroidOSFetchState failure %s\n", err)
-			log.Println("State: Revert AndroidOSFetchState")
-			for ; i >= 0; i-- {
-				if e := cmds[i].Revert(); e != nil {
-					err = errors.Annotate(err, "failure while reverting %s", e).Err()
-					break
-				}
-			}
-			return nil, c.GetStatus(), fmt.Errorf("%s: %s", c.GetErrorMessage(), err)
-		}
-	}
-	log.Println("State: AndroidOSFetchState Completed")
-	return nil, api.InstallResponse_STATUS_SUCCESS, nil
-}
-
-func (s OSFetchState) Next() common_utils.ServiceState {
-	return OSInstallState(s)
-}
-
-func (s OSFetchState) Name() string {
-	return "Android OS Fetch State"
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/os_install_state.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/os_install_state.go
deleted file mode 100644
index cbf432d..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/os_install_state.go
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2023 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package state_machine
-
-import (
-	"context"
-	"fmt"
-	"log"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"go.chromium.org/luci/common/errors"
-	"google.golang.org/protobuf/types/known/anypb"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/service"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands"
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-)
-
-type OSInstallState struct {
-	svc *service.AndroidService
-}
-
-func (s OSInstallState) Execute(ctx context.Context, log *log.Logger) (*anypb.Any, api.InstallResponse_Status, error) {
-	log.Println("State: Execute AndroidOSInstallState")
-	ctx = context.WithValue(ctx, common.StageCtxKey, common.OSInstall)
-	cmds := []common_utils.CommandInterface{
-		commands.NewRebootToBootloaderCommand(ctx, s.svc),
-		commands.NewFlashOsCommand(ctx, s.svc),
-		commands.NewCleanupCommand(ctx, s.svc),
-	}
-	for i, c := range cmds {
-		if err := c.Execute(log); err != nil {
-			log.Printf("State: Execute AndroidOSInstallState failure %s\n", err)
-			log.Println("State: Revert AndroidOSInstallState")
-			for ; i >= 0; i-- {
-				if e := cmds[i].Revert(); e != nil {
-					err = errors.Annotate(err, "failure while reverting %s", e).Err()
-					break
-				}
-			}
-			return nil, c.GetStatus(), fmt.Errorf("%s: %s", c.GetErrorMessage(), err)
-		}
-	}
-	log.Println("State: AndroidOSInstallState Completed")
-	return nil, api.InstallResponse_STATUS_SUCCESS, nil
-}
-
-func (s OSInstallState) Next() common_utils.ServiceState {
-	return PackageFetchState(s)
-}
-
-func (s OSInstallState) Name() string {
-	return "Android OS Install State"
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/package_fetch_state.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/package_fetch_state.go
deleted file mode 100644
index ddc02cb..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/package_fetch_state.go
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package state_machine
-
-import (
-	"context"
-	"fmt"
-	"log"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"go.chromium.org/luci/common/errors"
-	"google.golang.org/protobuf/types/known/anypb"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/service"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands"
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-)
-
-type PackageFetchState struct {
-	svc *service.AndroidService
-}
-
-func (s PackageFetchState) Execute(ctx context.Context, log *log.Logger) (*anypb.Any, api.InstallResponse_Status, error) {
-	log.Println("State: Execute AndroidPackageFetchState")
-	ctx = context.WithValue(ctx, common.StageCtxKey, common.PackageFetch)
-	cmds := []common_utils.CommandInterface{
-		commands.NewResolveCIPDPackageCommand(ctx, s.svc),
-		commands.NewFetchCIPDPackageCommand(ctx, s.svc),
-		commands.NewExtractZipCommand(ctx, s.svc),
-		commands.NewUploadAPKToGSCommand(ctx, s.svc),
-		commands.NewCopyDataCommand(ctx, s.svc),
-	}
-	for i, c := range cmds {
-		if err := c.Execute(log); err != nil {
-			log.Printf("State: Execute AndroidPackageFetchState failure %s\n", err)
-			log.Println("State: Revert AndroidPackageFetchState")
-			for ; i >= 0; i-- {
-				if e := cmds[i].Revert(); e != nil {
-					err = errors.Annotate(err, "failure while reverting %s", e).Err()
-					break
-				}
-			}
-			return nil, c.GetStatus(), fmt.Errorf("%s: %s", c.GetErrorMessage(), err)
-		}
-	}
-	log.Println("State: AndroidPackageFetchState Completed")
-	return nil, api.InstallResponse_STATUS_SUCCESS, nil
-}
-
-func (s PackageFetchState) Next() common_utils.ServiceState {
-	return PackageInstallState(s)
-}
-
-func (s PackageFetchState) Name() string {
-	return "Android Package Fetch State"
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/package_install_state.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/package_install_state.go
deleted file mode 100644
index 8939e2b..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/package_install_state.go
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package state_machine
-
-import (
-	"context"
-	"fmt"
-	"log"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"go.chromium.org/luci/common/errors"
-	"google.golang.org/protobuf/types/known/anypb"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/service"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands"
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-)
-
-type PackageInstallState struct {
-	svc *service.AndroidService
-}
-
-func (s PackageInstallState) Execute(ctx context.Context, log *log.Logger) (*anypb.Any, api.InstallResponse_Status, error) {
-	log.Println("State: Execute AndroidPackageInstallState")
-	ctx = context.WithValue(ctx, common.StageCtxKey, common.PackageInstall)
-	cmds := []common_utils.CommandInterface{
-		commands.NewInstallAPKCommand(ctx, s.svc),
-		commands.NewRestartAppCommand(ctx, s.svc),
-		commands.NewCleanupCommand(ctx, s.svc),
-	}
-	for i, c := range cmds {
-		if err := c.Execute(log); err != nil {
-			log.Printf("State: Execute AndroidPackageInstallState failure %s\n", err)
-			log.Println("State: Revert AndroidPackageInstallState")
-			for ; i >= 0; i-- {
-				if e := cmds[i].Revert(); e != nil {
-					err = errors.Annotate(err, "failure while reverting %s", e).Err()
-					break
-				}
-			}
-			resp, _ := s.svc.MarshalResponseMetadata()
-			return resp, c.GetStatus(), fmt.Errorf("%s: %s", c.GetErrorMessage(), err)
-		}
-	}
-	log.Println("State: AndroidPackageInstallState Completed")
-	return nil, api.InstallResponse_STATUS_SUCCESS, nil
-}
-
-func (s PackageInstallState) Next() common_utils.ServiceState {
-	return PostInstallState(s)
-}
-
-func (s PackageInstallState) Name() string {
-	return "Android Package Install State"
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/post_install_state.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/post_install_state.go
deleted file mode 100644
index 7977af1..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/post_install_state.go
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2023 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package state_machine
-
-import (
-	"context"
-	"log"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"google.golang.org/protobuf/types/known/anypb"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/service"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands"
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-)
-
-type PostInstallState struct {
-	svc *service.AndroidService
-}
-
-func (s PostInstallState) Execute(ctx context.Context, log *log.Logger) (*anypb.Any, api.InstallResponse_Status, error) {
-	log.Println("State: Execute AndroidPostInstallState")
-	ctx = context.WithValue(ctx, common.StageCtxKey, common.PostInstall)
-	cmds := []common_utils.CommandInterface{
-		commands.NewCleanupCommand(ctx, s.svc),
-	}
-	for _, c := range cmds {
-		// Ignore errors. Don't fail provisioning due to cleanup errors.
-		c.Execute(log)
-	}
-	log.Println("State: AndroidPostInstallState Completed")
-	// Return metadata with provisioned OS and packages.
-	resp, _ := s.svc.MarshalResponseMetadata()
-	return resp, api.InstallResponse_STATUS_SUCCESS, nil
-}
-
-func (s PostInstallState) Next() common_utils.ServiceState {
-	return nil
-}
-
-func (s PostInstallState) Name() string {
-	return "Android Post Install State"
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/prepare_state.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/prepare_state.go
deleted file mode 100644
index 942bd38..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/prepare_state.go
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package state_machine
-
-import (
-	"context"
-	"fmt"
-	"log"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"go.chromium.org/luci/common/errors"
-	"google.golang.org/protobuf/types/known/anypb"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/service"
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/state-machine/commands"
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-)
-
-type PrepareState struct {
-	svc *service.AndroidService
-}
-
-func NewPrepareState(s *service.AndroidService) common_utils.ServiceState {
-	return PrepareState{
-		svc: s,
-	}
-}
-
-func (s PrepareState) Execute(ctx context.Context, log *log.Logger) (*anypb.Any, api.InstallResponse_Status, error) {
-	log.Println("State: Execute AndroidPrepareState")
-	ctx = context.WithValue(ctx, common.StageCtxKey, common.Prepare)
-	cmds := []common_utils.CommandInterface{
-		commands.NewRestartADBCommand(ctx, s.svc),
-		commands.NewFetchDutInfoCommand(ctx, s.svc),
-	}
-	for i, c := range cmds {
-		if err := c.Execute(log); err != nil {
-			log.Printf("State: Execute AndroidPrepareState failure %s\n", err)
-			log.Println("State: Revert AndroidPrepareState")
-			for ; i >= 0; i-- {
-				if e := cmds[i].Revert(); e != nil {
-					err = errors.Annotate(err, "failure while reverting %s", e).Err()
-					break
-				}
-			}
-			return nil, c.GetStatus(), fmt.Errorf("%s: %s", c.GetErrorMessage(), err)
-		}
-	}
-	log.Println("State: AndroidPrepareState Completed")
-	return nil, api.InstallResponse_STATUS_SUCCESS, nil
-}
-
-func (s PrepareState) Next() common_utils.ServiceState {
-	return OSFetchState(s)
-}
-
-func (s PrepareState) Name() string {
-	return "Android Prepare State"
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/test/README.md b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/test/README.md
deleted file mode 100644
index b2c6ac3..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/test/README.md
+++ /dev/null
@@ -1,50 +0,0 @@
-# End-to-End testing instruction:
-
-## Requirements:
-To run end-to-end testing locally, you will need <b>cipd access</b> on your machine and <b>drone service account</b> (or direct access to `android-provisioning/android-provisioning-apks` gs bucket).</br>
-You will also need a valid ssh config to connect to the labstation (see ssh config section).
-
-## Testing:
-End to end testing is done over ssh tunneling to labstation (dutServer).
-
-1. Establish the ssh tunnel:
-
- `ssh -f -N -L 2500:<dut_ip>:22 root@<host>`
-
-2. In ‘common/constants.go’ change the `DroneServiceAccountCreds` to the local path to drone service account.
-
-3. Fill out the `input_example.json` to meet your requirements.
-- "dut" // DUT information. Required.
-  - "id" // DUT id, needed for output file. Required.
-  - "android" // DUT type. Required.
-    - "associatedHostname" // Hostname of the device that the Android DUT is attached to. Optional.
-    - "name" // DUT name. Optional.
-    - "serialNumber" // string created by adb to uniquely identify the device. Required.
-  - "cacheServer" // Cache server for downloading artifacts. Optional.
-- "provisionState" // List of packages to install. Required.
-  - "id": {"value": "provision_state_id"} // Provision state id (string). Required.
-  - "cipdPackages" // List of CIPD packages to install. Required.
-    - "name" // CIPD package name. Required.
-    - "instanceId" // CIPD package ID. Required.
-    - "serviceUrl" // CIPD service URL. Optional. chrome-infra-packages.appspot.com by default.
-    - "androidPackage" // Type of the package (1 - GMS Core). Required.
-    - "apkDetails" // Package details. Optional.
-- "dutServer" // Address of the DUT server. Required.
-
-4. `./android-provision cli -input input_example.json -output output.json`
-
-## Notes:
-- Make sure the dutServer field is set to `127.0.0.1` and the port used in the ssh tunnel corresponds to the port in your input file. Passing `127.0.0.1` as the address will automatically start the application in testing mode and use the ssh connection to reach the host.
-- Because this implementation focuses on testing `android-provision` service, we are not doing any caching. Instead, apk files are downloaded locally and copied remotely to labstation everytime the service is run. Depending on the size of the apk, this step alone could take 7-10 minutes.
-
-## ssh config:
-- connect to [labstation](https://yaqs.corp.google.com/eng/q/4714681670647676928).
-- connect to localhost:
-```
-Host 127.0.0.1 localhost
-  CanonicalizeHostname yes
-  PreferredAuthentications publickey
-  StrictHostKeyChecking no
-  User root
-  IdentityFile %d/.ssh/testing_rsa
-```
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/test/input_example.json b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/test/input_example.json
deleted file mode 100644
index 6719e14..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/test/input_example.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
-	"dut": {
-		"id": {
-			"value": ""
-		},
-		"android": {
-			"name": "",
-			"serialNumber": "",
-			"dutModel": {
-				"buildTarget": "",
-				"modelName": ""
-			}
-		},
-		"cacheServer": {
-			"address": {
-				"address": "",
-				"port": 0
-			}
-		}
-	},
-	"provisionState": {
-		"id": {},
-		"cipdPackages": [{
-			"name": "",
-			"instanceId": "",
-			"serviceUrl": "",
-			"androidPackage": 1,
-			"apkDetails": {}
-		}]
-	},
-	"dutServer": {
-		"address": "127.0.0.1",
-		"port": 2500
-	}
-}
-
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/test/local_service_adapter.go b/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/test/local_service_adapter.go
deleted file mode 100644
index 6222796..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/android-provision/test/local_service_adapter.go
+++ /dev/null
@@ -1,218 +0,0 @@
-// Copyright 2023 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package test
-
-import (
-	"bytes"
-	"context"
-	"errors"
-	"fmt"
-	"io"
-	"os"
-	"strings"
-	"time"
-
-	"go.chromium.org/chromiumos/test/provision/v2/android-provision/common"
-	"cloud.google.com/go/storage"
-
-	"go.chromium.org/chromiumos/config/go/test/lab/api"
-	"go.chromium.org/luci/common/retry"
-	"go.chromium.org/luci/common/retry/transient"
-	"golang.org/x/crypto/ssh"
-)
-
-const (
-	privateKeyFile             = "testing_rsa"
-	sshUser                    = "root"
-	retryCountOnTransientError = 5
-)
-
-// LocalDutServiceAdapter implements Service Adapter interface and used to
-// substitute DUT Service in local testing.
-type LocalDutServiceAdapter struct {
-	client *ssh.Client
-}
-
-// parsePrivateKey gets private key for ssh authentication.
-func parsePrivateKey() (ssh.Signer, error) {
-	keyPath := fmt.Sprintf("%s/.ssh/%s", os.Getenv("HOME"), privateKeyFile)
-	buff, _ := os.ReadFile(keyPath)
-	return ssh.ParsePrivateKey(buff)
-}
-
-// createSshConfig creates ssh client config for our connection.
-func createSshConfig() (*ssh.ClientConfig, error) {
-	key, err := parsePrivateKey()
-	if err != nil {
-		return nil, err
-	}
-	return &ssh.ClientConfig{
-		User: sshUser,
-		Auth: []ssh.AuthMethod{
-			ssh.PublicKeys(key),
-		},
-		HostKeyCallback: ssh.InsecureIgnoreHostKey(),
-	}, nil
-}
-
-// retryParams defines retry strategy for handling transient errors.
-func retryParams() retry.Iterator {
-	return &retry.ExponentialBackoff{
-		Limited: retry.Limited{
-			Delay:    3 * time.Second,
-			Retries:  retryCountOnTransientError,
-			MaxTotal: 1 * time.Minute,
-		},
-		Multiplier: 2,
-	}
-}
-
-func NewLocalDutServiceAdapter(endPoint *api.IpEndpoint) (*LocalDutServiceAdapter, error) {
-	cfg, err := createSshConfig()
-	if err != nil {
-		return nil, err
-	}
-	client, err := ssh.Dial("tcp", fmt.Sprintf("%s:%d", endPoint.GetAddress(), endPoint.GetPort()), cfg)
-	if err != nil {
-		return nil, err
-	}
-	return &LocalDutServiceAdapter{
-		client: client,
-	}, nil
-}
-
-func (s LocalDutServiceAdapter) RunCmd(ctx context.Context, cmd string, args []string) (string, error) {
-	var session *ssh.Session
-	err := retry.Retry(ctx, transient.Only(retryParams), func() error {
-		var err error
-		session, err = s.client.NewSession()
-		return err
-	}, retry.LogCallback(ctx, "ssh-connect"))
-	if err != nil {
-		return "", err
-	}
-	defer session.Close()
-	var b bytes.Buffer
-	// get output
-	session.Stdout = &b
-	// Run the command
-	err = session.Run(cmd + " " + strings.Join(args[:], " "))
-	return b.String(), err
-}
-
-func (s LocalDutServiceAdapter) Restart(ctx context.Context) error {
-	return errors.New("not implemented")
-}
-
-func (s LocalDutServiceAdapter) PathExists(ctx context.Context, path string) (bool, error) {
-	return false, errors.New("not implemented")
-}
-
-func (s LocalDutServiceAdapter) PipeData(ctx context.Context, sourceUrl string, pipeCommand string) error {
-	return errors.New("not implemented")
-}
-
-func (s LocalDutServiceAdapter) FetchFile(ctx context.Context, path string) (io.ReadCloser, error) {
-	return nil, errors.New("not implemented")
-}
-
-// CopyData mocks the caching service functionality.
-// It downloads the apk file from GCP to current directory and copy it remotely to the host.
-func (s LocalDutServiceAdapter) CopyData(ctx context.Context, sourceUrl string, destPath string) error {
-	fp := strings.Split(sourceUrl, "/")
-	apk := fp[len(fp)-1]
-	dir := fp[len(fp)-2]
-	gsPath := dir + "/" + apk
-
-	err := downloadFile(ctx, gsPath, apk)
-	if err != nil {
-		return err
-	}
-
-	// Copy file to remote.
-	var session *ssh.Session
-	err = retry.Retry(ctx, transient.Only(retryParams), func() error {
-		var err error
-		session, err = s.client.NewSession()
-		return err
-	}, retry.LogCallback(ctx, "ssh-connect"))
-	if err != nil {
-		return err
-	}
-	file, err := os.Open(apk)
-	if err != nil {
-		return err
-	}
-	defer file.Close()
-	stat, err := file.Stat()
-	if err != nil {
-		return err
-	}
-	go func() {
-		hostIn, _ := session.StdinPipe()
-		defer hostIn.Close()
-		fmt.Fprintf(hostIn, "C0664 %d %s\n", stat.Size(), apk)
-		io.Copy(hostIn, file)
-		fmt.Fprint(hostIn, "\x00")
-	}()
-	// -t option indicates sink mode. Accepting files sent from current ssh connection.
-	err = session.Run(fmt.Sprintf("/usr/bin/scp -t /tmp/%s/", dir))
-	if err != nil {
-		return err
-	}
-	return nil
-}
-
-func (s LocalDutServiceAdapter) CreateDirectories(ctx context.Context, dirs []string) error {
-	if _, err := s.RunCmd(ctx, "mkdir", append([]string{"-p"}, dirs...)); err != nil {
-		return fmt.Errorf("could not create directory, %w", err)
-	}
-	return nil
-}
-
-func (s LocalDutServiceAdapter) DeleteDirectory(ctx context.Context, dir string) error {
-	if _, err := s.RunCmd(ctx, "rm", []string{"-rf", dir}); err != nil {
-		return fmt.Errorf("could not delete directory, %w", err)
-	}
-	return nil
-}
-
-func (s LocalDutServiceAdapter) ForceReconnectWithBackoff(ctx context.Context) error {
-	return errors.New("not implemented")
-}
-
-// downloadFile downloads a GCP object.
-func downloadFile(ctx context.Context, object string, destFileName string) error {
-	client, err := storage.NewClient(ctx)
-	if err != nil {
-		return fmt.Errorf("storage.NewClient: %v", err)
-	}
-	defer client.Close()
-
-	ctx, cancel := context.WithTimeout(ctx, time.Minute*5)
-	defer cancel()
-
-	f, err := os.Create(destFileName)
-	if err != nil {
-		return fmt.Errorf("os.Create: %v", err)
-	}
-
-	rc, err := client.Bucket(common.GSPackageBucketName).Object(object).NewReader(ctx)
-	if err != nil {
-		return fmt.Errorf("Object(%q).NewReader: %v", object, err)
-	}
-	defer rc.Close()
-
-	if _, err := io.Copy(f, rc); err != nil {
-		return fmt.Errorf("io.Copy: %v", err)
-	}
-
-	if err = f.Close(); err != nil {
-		return fmt.Errorf("f.Close: %v", err)
-	}
-	fmt.Fprintf(f, "Blob %v downloaded to local file %v\n", object, destFileName)
-	return nil
-
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/ash_provision_test.go b/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/ash_provision_test.go
deleted file mode 100644
index a5ab22f..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/ash_provision_test.go
+++ /dev/null
@@ -1,254 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package main
-
-import (
-	"go.chromium.org/chromiumos/test/provision/v2/ash-provision/cli"
-	"go.chromium.org/chromiumos/test/provision/v2/ash-provision/constants"
-	"go.chromium.org/chromiumos/test/provision/v2/ash-provision/service"
-	state_machine "go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine"
-	mock_common_utils "go.chromium.org/chromiumos/test/provision/v2/mock-common-utils"
-	"context"
-	"errors"
-	"testing"
-
-	"github.com/golang/mock/gomock"
-	conf "go.chromium.org/chromiumos/config/go"
-)
-
-type PathExistsCommandStructure struct {
-	Path string
-}
-
-type RunCommandStructure struct {
-	Command string
-	Args    []string
-}
-
-type CopyCommandStructure struct {
-	Source string
-	Dest   string
-}
-
-type PipeCommandStructure struct {
-	Source  string
-	Command string
-}
-
-type CreateDirsStructure struct {
-	Dirs []string
-}
-
-type DeleteDirStructure struct {
-	Dir string
-}
-
-// GENRAL COMMANDS
-var (
-	cleanUpDir                 = DeleteDirStructure{Dir: "/tmp/_provisioning_service_chrome_deploy"}
-	createStagingDir           = CreateDirsStructure{Dirs: []string{"/tmp/_provisioning_service_chrome_deploy"}}
-	copyImage                  = PipeCommandStructure{Source: "path/to/image", Command: "tar --ignore-command-error --overwrite --preserve-permissions --directory=/tmp/_provisioning_service_chrome_deploy -xf -"}
-	createBinDirs              = CreateDirsStructure{Dirs: []string{"/opt/google/chrome", "/usr/local/autotest/deps/chrome_test/test_src/out/Release/", "/usr/local/libexec/chrome-binary-tests/"}}
-	stopUI                     = RunCommandStructure{Command: "stop", Args: []string{"ui"}}
-	lsofChrome                 = RunCommandStructure{Command: "lsof", Args: []string{"/opt/google/chrome/chrome"}}
-	pkillChrome                = RunCommandStructure{Command: "pkill", Args: []string{"'chrome|session_manager'"}}
-	mountRoot                  = RunCommandStructure{Command: "mount", Args: []string{"-o", "remount,rw", "/"}}
-	checkAShShellExists        = PathExistsCommandStructure{Path: "/tmp/_provisioning_service_chrome_deploy/ash_shell"}
-	checkAuraDemoExists        = PathExistsCommandStructure{Path: "/tmp/_provisioning_service_chrome_deploy/aura_demo"}
-	checkChromeExists          = PathExistsCommandStructure{Path: "/tmp/_provisioning_service_chrome_deploy/chrome"}
-	checkChromeWrapperExists   = PathExistsCommandStructure{Path: "/tmp/_provisioning_service_chrome_deploy/chrome-wrapper"}
-	checkChromePakExists       = PathExistsCommandStructure{Path: "/tmp/_provisioning_service_chrome_deploy/chrome.pak"}
-	checkChrome100Exists       = PathExistsCommandStructure{Path: "/tmp/_provisioning_service_chrome_deploy/chrome_100_percent.pak"}
-	checkChrome200Exists       = PathExistsCommandStructure{Path: "/tmp/_provisioning_service_chrome_deploy/chrome_200_percent.pak"}
-	checkContentShellExists    = PathExistsCommandStructure{Path: "/tmp/_provisioning_service_chrome_deploy/content_shell"}
-	checkContentShellPakExists = PathExistsCommandStructure{Path: "/tmp/_provisioning_service_chrome_deploy/content_shell.pak"}
-	checkExtensionsExists      = PathExistsCommandStructure{Path: "/tmp/_provisioning_service_chrome_deploy/extensions/"}
-	checkStarSOExists          = PathExistsCommandStructure{Path: "/tmp/_provisioning_service_chrome_deploy/lib/*.so"}
-	checkLibFFExists           = PathExistsCommandStructure{Path: "/tmp/_provisioning_service_chrome_deploy/libffmpegsumo.so"}
-	checkLibPDFExists          = PathExistsCommandStructure{Path: "/tmp/_provisioning_service_chrome_deploy/libpdf.so"}
-	checkLibPPExists           = PathExistsCommandStructure{Path: "/tmp/_provisioning_service_chrome_deploy/libppGoogleNaClPluginChrome.so"}
-	checkLibOSExists           = PathExistsCommandStructure{Path: "/tmp/_provisioning_service_chrome_deploy/libosmesa.so"}
-	checkLibWideAdapterExists  = PathExistsCommandStructure{Path: "/tmp/_provisioning_service_chrome_deploy/libwidevinecdmadapter.so"}
-	checkLibWideExists         = PathExistsCommandStructure{Path: "/tmp/_provisioning_service_chrome_deploy/libwidevinecdm.so"}
-	checkLocalesExists         = PathExistsCommandStructure{Path: "/tmp/_provisioning_service_chrome_deploy/locales/"}
-	checkNaclBootstrapExists   = PathExistsCommandStructure{Path: "/tmp/_provisioning_service_chrome_deploy/nacl_helper_bootstrap"}
-	checkNaclIrtExists         = PathExistsCommandStructure{Path: "/tmp/_provisioning_service_chrome_deploy/nacl_irt_*.nexe"}
-	checkNaclHelperExists      = PathExistsCommandStructure{Path: "/tmp/_provisioning_service_chrome_deploy/nacl_helper"}
-	checkResourcesExists       = PathExistsCommandStructure{Path: "/tmp/_provisioning_service_chrome_deploy/resources/"}
-	checkResourcesPakExists    = PathExistsCommandStructure{Path: "/tmp/_provisioning_service_chrome_deploy/resources.pak"}
-	checkXDGExists             = PathExistsCommandStructure{Path: "/tmp/_provisioning_service_chrome_deploy/xdg-settings"}
-	checkStarPNGExists         = PathExistsCommandStructure{Path: "/tmp/_provisioning_service_chrome_deploy/*.png"}
-	checkStarTestExists        = PathExistsCommandStructure{Path: "/tmp/_provisioning_service_chrome_deploy/*test"}
-	checkStarTestsExists       = PathExistsCommandStructure{Path: "/tmp/_provisioning_service_chrome_deploy/*tests"}
-	rsyncAuraShell             = RunCommandStructure{Command: "rsync", Args: []string{"-av", "/tmp/_provisioning_service_chrome_deploy/ash_shell", "/opt/google/chrome"}}
-	rsyncExtensions            = RunCommandStructure{Command: "rsync", Args: []string{"-av", "/tmp/_provisioning_service_chrome_deploy/extensions/", "/opt/google/chrome/extensions"}}
-	rsyncTestRelease           = RunCommandStructure{Command: "rsync", Args: []string{"-av", "/tmp/_provisioning_service_chrome_deploy/*test", "/usr/local/autotest/deps/chrome_test/test_src/out/Release"}}
-	rsyncTestBin               = RunCommandStructure{Command: "rsync", Args: []string{"-av", "/tmp/_provisioning_service_chrome_deploy/*test", "/usr/local/libexec/chrome-binary-tests"}}
-	killAll                    = RunCommandStructure{Command: "killall", Args: []string{"-HUP", "dbus-daemon"}}
-	startUi                    = RunCommandStructure{Command: "start", Args: []string{"ui"}}
-	deleteStagingDir           = DeleteDirStructure{Dir: "/tmp/_provisioning_service_chrome_deploy"}
-)
-
-func TestStateTransitions(t *testing.T) {
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-
-	sam := mock_common_utils.NewMockServiceAdapterInterface(ctrl)
-	ls := service.NewAShServiceFromExistingConnection(
-		sam,
-		&conf.StoragePath{
-			HostType: conf.StoragePath_GS,
-			Path:     "path/to/image",
-		},
-		nil)
-
-	ctx := context.Background()
-	log, _ := cli.SetUpLog(constants.DefaultLogDirectory)
-
-	// INIT STATE
-	st := state_machine.NewAShInitState(&ls)
-
-	gomock.InOrder(
-		getDeleteDirCommand(sam, cleanUpDir).Return(nil),
-		getCreateDirCommand(sam, createStagingDir).Return(nil),
-		getPipeDataCommand(sam, copyImage).Return(nil),
-		getCreateDirCommand(sam, createBinDirs).Return(nil),
-		getRunCmdCommand(sam, stopUI).Return("", nil),
-		getRunCmdCommand(sam, lsofChrome).Return("", errors.New("chrome is in use")),
-		getRunCmdCommand(sam, pkillChrome).Return("", nil),
-		// Make first kill soft fail so we test retry:
-		getRunCmdCommand(sam, lsofChrome).Return("", errors.New("chrome is in use")),
-		getRunCmdCommand(sam, pkillChrome).Return("", nil),
-		// Now we let it progress
-		getRunCmdCommand(sam, lsofChrome).Return("", nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed init state: %v", err)
-	}
-	// INSTALL
-	st = st.Next()
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, mountRoot).Return("", nil),
-		getPathExistsCommand(sam, checkAShShellExists).Return(true, nil),
-		getRunCmdCommand(sam, rsyncAuraShell).Return("", nil),
-		// For all items after we make them exist so we don't need to double every item (we assume that the test isn't breakable here):
-		getPathExistsCommand(sam, checkAuraDemoExists).Return(false, nil),
-		getPathExistsCommand(sam, checkChromeExists).Return(false, nil),
-		getPathExistsCommand(sam, checkChromeWrapperExists).Return(false, nil),
-		getPathExistsCommand(sam, checkChromePakExists).Return(false, nil),
-		getPathExistsCommand(sam, checkChrome100Exists).Return(false, nil),
-		getPathExistsCommand(sam, checkChrome200Exists).Return(false, nil),
-		getPathExistsCommand(sam, checkContentShellExists).Return(false, nil),
-		getPathExistsCommand(sam, checkContentShellPakExists).Return(false, nil),
-		// Testing this one specifically as it should map to the designated folder rather than the top-most:
-		getPathExistsCommand(sam, checkExtensionsExists).Return(true, nil),
-		getRunCmdCommand(sam, rsyncExtensions).Return("", nil),
-		getPathExistsCommand(sam, checkStarSOExists).Return(false, nil),
-		getPathExistsCommand(sam, checkLibFFExists).Return(false, nil),
-		getPathExistsCommand(sam, checkLibPDFExists).Return(false, nil),
-		getPathExistsCommand(sam, checkLibPPExists).Return(false, nil),
-		getPathExistsCommand(sam, checkLibOSExists).Return(false, nil),
-		getPathExistsCommand(sam, checkLibWideAdapterExists).Return(false, nil),
-		getPathExistsCommand(sam, checkLibWideExists).Return(false, nil),
-		getPathExistsCommand(sam, checkLocalesExists).Return(false, nil),
-		getPathExistsCommand(sam, checkNaclBootstrapExists).Return(false, nil),
-		getPathExistsCommand(sam, checkNaclIrtExists).Return(false, nil),
-		getPathExistsCommand(sam, checkNaclHelperExists).Return(false, nil),
-		getPathExistsCommand(sam, checkResourcesExists).Return(false, nil),
-		getPathExistsCommand(sam, checkResourcesPakExists).Return(false, nil),
-		getPathExistsCommand(sam, checkXDGExists).Return(false, nil),
-		getPathExistsCommand(sam, checkStarPNGExists).Return(false, nil),
-
-		getPathExistsCommand(sam, checkStarTestExists).Return(true, nil),
-		getRunCmdCommand(sam, rsyncTestRelease).Return("", nil),
-		getPathExistsCommand(sam, checkStarTestExists).Return(true, nil),
-		getRunCmdCommand(sam, rsyncTestBin).Return("", nil),
-		getPathExistsCommand(sam, checkStarTestsExists).Return(false, nil),
-		getPathExistsCommand(sam, checkStarTestsExists).Return(false, nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed install state: %v", err)
-	}
-
-	// POST INSTALL
-	st = st.Next()
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, killAll).Return("", nil),
-		getRunCmdCommand(sam, startUi).Return("", nil),
-		getDeleteDirCommand(sam, deleteStagingDir).Return(nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed post-install state: %v", err)
-	}
-
-	// Check state completion
-	if st.Next() != nil {
-		t.Fatalf("post-install should be the last step")
-	}
-}
-
-func TestPkillRunsOnlyForTenSeconds(t *testing.T) {
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-
-	sam := mock_common_utils.NewMockServiceAdapterInterface(ctrl)
-	ls := service.NewAShServiceFromExistingConnection(
-		sam,
-		&conf.StoragePath{
-			HostType: conf.StoragePath_GS,
-			Path:     "path/to/image",
-		},
-		nil)
-
-	ctx := context.Background()
-	log, _ := cli.SetUpLog(constants.DefaultLogDirectory)
-
-	// INIT STATE
-	st := state_machine.NewAShInitState(&ls)
-
-	gomock.InOrder(
-		getDeleteDirCommand(sam, cleanUpDir).Return(nil),
-		getCreateDirCommand(sam, createStagingDir).Return(nil),
-		getPipeDataCommand(sam, copyImage).Return(nil),
-		getCreateDirCommand(sam, createBinDirs).Return(nil),
-		getRunCmdCommand(sam, stopUI).Return("", nil),
-	)
-
-	getRunCmdCommand(sam, lsofChrome).Return("", errors.New("chrome is in use!")).AnyTimes()
-	getRunCmdCommand(sam, pkillChrome).Return("", nil).AnyTimes()
-
-	if _, _, err := st.Execute(ctx, log); err == nil {
-		t.Fatalf("init state should have failed!")
-	}
-}
-
-func getPathExistsCommand(sam *mock_common_utils.MockServiceAdapterInterface, s PathExistsCommandStructure) *gomock.Call {
-	return sam.EXPECT().PathExists(gomock.Any(), gomock.Eq(s.Path))
-}
-
-func getCreateDirCommand(sam *mock_common_utils.MockServiceAdapterInterface, s CreateDirsStructure) *gomock.Call {
-	return sam.EXPECT().CreateDirectories(gomock.Any(), gomock.Eq(s.Dirs))
-}
-
-func getDeleteDirCommand(sam *mock_common_utils.MockServiceAdapterInterface, s DeleteDirStructure) *gomock.Call {
-	return sam.EXPECT().DeleteDirectory(gomock.Any(), gomock.Eq(s.Dir))
-}
-
-func getCopyDataCommand(sam *mock_common_utils.MockServiceAdapterInterface, s CopyCommandStructure) *gomock.Call {
-	return sam.EXPECT().CopyData(gomock.Any(), gomock.Eq(s.Source), gomock.Eq(s.Dest))
-}
-
-func getPipeDataCommand(sam *mock_common_utils.MockServiceAdapterInterface, s PipeCommandStructure) *gomock.Call {
-	return sam.EXPECT().PipeData(gomock.Any(), gomock.Eq(s.Source), gomock.Eq(s.Command))
-}
-
-func getRunCmdCommand(sam *mock_common_utils.MockServiceAdapterInterface, s RunCommandStructure) *gomock.Call {
-	return sam.EXPECT().RunCmd(gomock.Any(), gomock.Eq(s.Command), gomock.Eq(s.Args))
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/cli/abstract_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/cli/abstract_command.go
deleted file mode 100644
index b2ba175..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/cli/abstract_command.go
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Responsible for the abstraction layer representing each command grouping
-package cli
-
-import (
-	"errors"
-	"fmt"
-	"io"
-	"log"
-	"os"
-	"path/filepath"
-)
-
-// AbstractCommand represents a CLI grouping (e.g.: run as server, run as CLI, etc)
-type AbstractCommand interface {
-	// Run runs the command
-	Run() error
-
-	// Is checks if the string is representative of the command
-	Is(string) bool
-
-	// Init is an initializer for the command given the trailing args
-	Init([]string) error
-
-	// Name is the command name (for debugging)
-	Name() string
-}
-
-// SetUpLog sets up the logging for the CLI
-func SetUpLog(dir string) (*log.Logger, error) {
-	if err := os.MkdirAll(dir, 0755); err != nil {
-		return nil, fmt.Errorf("failed to create directory %v: %v", dir, err)
-	}
-	lfp := filepath.Join(dir, "log.txt")
-	lf, err := os.Create(lfp)
-	if err != nil {
-		return nil, fmt.Errorf("failed to create file %v: %v", lfp, err)
-	}
-	newLog := log.New(io.MultiWriter(lf, os.Stderr), "<ash-provision>", log.LstdFlags|log.LUTC)
-	newLog.SetFlags(log.LstdFlags | log.Lshortfile | log.Lmsgprefix)
-	return newLog, nil
-}
-
-// ParseInputs is a helper method which parses input arguments. It is
-// effectively a factory method.
-func ParseInputs() (AbstractCommand, error) {
-	if len(os.Args) < 1 {
-		return nil, errors.New("CLI arguments must be specified")
-	}
-
-	cmds := []AbstractCommand{
-		NewServerCommand(),
-		NewCLICommand(),
-	}
-
-	subcommand := os.Args[1]
-	options := []string{}
-
-	for _, cmd := range cmds {
-		options = append(options, cmd.Name())
-		if cmd.Is(subcommand) {
-			if err := cmd.Init(os.Args[2:]); err != nil {
-				return nil, fmt.Errorf("failed to initialize cli command, %s", err)
-			}
-			return cmd, nil
-		}
-	}
-
-	return nil, fmt.Errorf("Unknown subcommand: %s. \nOptions are: [%s]", subcommand, options)
-
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/cli/cli_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/cli/cli_command.go
deleted file mode 100644
index e6ebf41..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/cli/cli_command.go
+++ /dev/null
@@ -1,151 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Represents the CLI command grouping
-package cli
-
-import (
-	"go.chromium.org/chromiumos/test/provision/v2/ash-provision/constants"
-	"go.chromium.org/chromiumos/test/provision/v2/ash-provision/service"
-	state_machine "go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine"
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"context"
-	"errors"
-	"flag"
-	"fmt"
-	"log"
-	"os"
-	"path/filepath"
-	"strings"
-
-	lab_api "go.chromium.org/chromiumos/config/go/test/lab/api"
-	"google.golang.org/protobuf/encoding/protojson"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"google.golang.org/grpc"
-)
-
-// CLI command executed the provisioning as a CLI
-type CLICommand struct {
-	logFileName string
-	log         *log.Logger
-	inputFile   string
-	inputProto  *api.CrosProvisionRequest
-	outputFile  string
-	flagSet     *flag.FlagSet
-}
-
-func NewCLICommand() *CLICommand {
-	cc := &CLICommand{
-		flagSet: flag.NewFlagSet("server", flag.ContinueOnError),
-	}
-
-	cc.flagSet.StringVar(&cc.logFileName, "log-path", constants.DefaultLogDirectory, fmt.Sprintf("Path to record execution logs. Default value is %s", constants.DefaultLogDirectory))
-	cc.flagSet.StringVar(&cc.inputFile, "input", "", "Specify the request jsonproto input file. Provide service paths and ProvisionState.")
-	cc.flagSet.StringVar(&cc.outputFile, "output", "", "Specify the response jsonproto output file. Empty placeholder file to provide result from provisioning the DUT.")
-	return cc
-}
-
-func (cc *CLICommand) Is(group string) bool {
-	return strings.HasPrefix(group, "c")
-}
-
-func (cc *CLICommand) Name() string {
-	return "cli"
-}
-
-func (cc *CLICommand) Init(args []string) error {
-	err := cc.flagSet.Parse(args)
-	if err != nil {
-		return err
-	}
-
-	cc.log, err = SetUpLog(cc.logFileName)
-	if err != nil {
-		return err
-	}
-
-	if err = cc.validate(); err != nil {
-		return err
-	}
-
-	cc.inputProto, err = common_utils.ParseCrosProvisionRequest(cc.inputFile)
-	if err != nil {
-		return fmt.Errorf("unable to parse CrosProvisionRequest proto: %s", err)
-	}
-
-	return nil
-}
-
-// Logger returns the log
-func (cc *CLICommand) Logger() *log.Logger {
-	return cc.log
-}
-
-// validate checks if inputs are ok
-func (cc *CLICommand) validate() error {
-	if cc.inputFile == "" {
-		return errors.New("input file not specified")
-	}
-
-	if cc.outputFile == "" {
-		return errors.New("output file not specified")
-	}
-	return nil
-}
-
-func (cc *CLICommand) Run() error {
-	cc.log.Printf("Running CLI Mode:")
-	dutAddr := fmt.Sprintf("%s:%d", cc.inputProto.GetDutServer().GetAddress(), cc.inputProto.GetDutServer().GetPort())
-	dutConn, err := grpc.Dial(dutAddr, grpc.WithInsecure())
-	if err != nil {
-		return fmt.Errorf("failed to connect to dut-service, %s", err)
-	}
-	defer dutConn.Close()
-	for _, pkg := range cc.inputProto.GetProvisionState().GetPackages() {
-		cs := service.NewAShServiceFromCrOSProvisionRequest(api.NewDutServiceClient(dutConn), cc.inputProto, pkg)
-
-		out := &api.CrosProvisionResponse{
-			Id: &lab_api.Dut_Id{
-				Value: cc.inputProto.GetDut().GetId().GetValue(),
-			},
-			Outcome: &api.CrosProvisionResponse_Success{},
-		}
-
-		defer saveCLIOutput(cc.outputFile, out)
-		if _, _, err = common_utils.ExecuteStateMachine(context.Background(), state_machine.NewAShInitState(cs), cc.log); err != nil {
-			out.Outcome = &api.CrosProvisionResponse_Failure{
-				Failure: &api.InstallFailure{
-					Reason: api.InstallFailure_Reason(api.InstallResponse_STATUS_PROVISIONING_FAILED),
-				},
-			}
-			return fmt.Errorf("failed to provision, %s", err)
-		}
-	}
-	log.Println("Finished Successfuly!")
-	return nil
-}
-
-// saveCLIOutput saves response to the output file.
-func saveCLIOutput(outputPath string, out *api.CrosProvisionResponse) error {
-	if outputPath != "" && out != nil {
-		dir := filepath.Dir(outputPath)
-		// Create the directory if it doesn't exist.
-		if err := os.MkdirAll(dir, 0777); err != nil {
-			return fmt.Errorf("save output: fail to create directory for %q", outputPath)
-		}
-		w, err := os.Create(outputPath)
-		if err != nil {
-			return fmt.Errorf("save output: failed to create file %q", outputPath)
-		}
-		defer w.Close()
-
-		if json, err := protojson.Marshal(out); err != nil {
-			return fmt.Errorf("save output: failed to marshal output")
-		} else {
-			w.Write(json)
-		}
-	}
-	return nil
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/cli/server_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/cli/server_command.go
deleted file mode 100644
index 09b83b0..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/cli/server_command.go
+++ /dev/null
@@ -1,114 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Represents the server command grouping
-package cli
-
-import (
-	"go.chromium.org/chromiumos/test/provision/v2/ash-provision/constants"
-	"go.chromium.org/chromiumos/test/provision/v2/ash-provision/executor"
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"go.chromium.org/chromiumos/test/provision/v2/common-utils/metadata"
-	"go.chromium.org/chromiumos/test/provision/v2/common-utils/server"
-	"errors"
-	"flag"
-	"fmt"
-	"strings"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-// ServerCommand executed the provisioning as a Server
-type ServerCommand struct {
-	metadata     *metadata.ServerMetadata
-	logFileName  string
-	metadataFile string
-	flagSet      *flag.FlagSet
-}
-
-func NewServerCommand() *ServerCommand {
-	sc := &ServerCommand{
-		flagSet:  flag.NewFlagSet("server", flag.ContinueOnError),
-		metadata: &metadata.ServerMetadata{},
-	}
-
-	sc.flagSet.IntVar(&sc.metadata.Port, "port", constants.DefaultPort, fmt.Sprintf("Specify the port for the server. Default value %d.", constants.DefaultPort))
-	sc.flagSet.StringVar(&sc.logFileName, "log-path", constants.DefaultLogDirectory, fmt.Sprintf("Path to record execution logs. Default value is %s", constants.DefaultLogDirectory))
-	sc.flagSet.StringVar(&sc.metadataFile, "metadata", "", "Specify the request jsonproto input file. Provide service paths and ProvisionState.")
-	return sc
-}
-
-func (sc *ServerCommand) Is(group string) bool {
-	return strings.HasPrefix(group, "s")
-}
-
-func (sc *ServerCommand) Name() string {
-	return "server"
-}
-
-func (sc *ServerCommand) Init(args []string) error {
-	err := sc.flagSet.Parse(args)
-	if err != nil {
-		return err
-	}
-
-	sc.metadata.Log, err = SetUpLog(sc.logFileName)
-	if err != nil {
-		return fmt.Errorf("unable to set up logs: %s", err)
-	}
-
-	if err = sc.validateCLIInputs(); err != nil {
-		return err
-	}
-
-	if sc.metadataFile != "" {
-		sc.metadata.Log.Println("warning: CLI arg 'metadata' is deprecated, please use the StartUp RPC instead.")
-		cpp, err := common_utils.ParseCrosProvisionRequest(sc.metadataFile)
-		if err != nil {
-			return fmt.Errorf("unable to parse CrosProvisionRequest proto: %s", err)
-		}
-
-		if err = sc.validateProtoInputs(cpp); err != nil {
-			return err
-		}
-		sc.metadata.Dut = cpp.GetDut()
-		sc.metadata.DutAddress = fmt.Sprintf("%s:%d", cpp.GetDutServer().GetAddress(), cpp.GetDutServer().GetPort())
-	}
-
-	return nil
-}
-
-// validateCLIInputs ensures the CLI input values are valid
-func (cc *ServerCommand) validateCLIInputs() error {
-	return nil
-}
-
-// validateProtoInputs ensures the proto part of the CLI input is valid
-func (cc *ServerCommand) validateProtoInputs(cpp *api.CrosProvisionRequest) error {
-	if cpp.GetDut() == nil || cpp.GetDut().GetId().GetValue() == "" {
-		return errors.New("dut id is not specified in input file")
-	}
-	if cpp.GetDutServer() == nil || cpp.DutServer.GetAddress() == "" || cpp.DutServer.GetPort() <= 0 {
-		return errors.New("dut server address is no specified or incorrect in input file")
-	}
-	return nil
-}
-
-func (sc *ServerCommand) Run() error {
-	sc.metadata.Log.Printf("running server mode:")
-
-	ps, closer, err := server.NewProvisionServer(sc.metadata, &executor.AShProvisionExecutor{})
-	defer closer()
-	if err != nil {
-		sc.metadata.Log.Fatalln("failed to create provision: ", err)
-		return err
-	}
-
-	if err := ps.Start(); err != nil {
-		sc.metadata.Log.Fatalln("failed server execution: ", err)
-		return err
-	}
-
-	return nil
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/constants/cli_defaults.go b/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/constants/cli_defaults.go
deleted file mode 100644
index 4ff8087..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/constants/cli_defaults.go
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Local constants to AShProvision CLI
-package constants
-
-const (
-	DefaultPort         = 80
-	DefaultLogDirectory = "/tmp/provision/"
-)
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/executor/ash_service_executor.go b/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/executor/ash_service_executor.go
deleted file mode 100644
index 6d7d30a..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/executor/ash_service_executor.go
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package executor
-
-import (
-	"errors"
-
-	"go.chromium.org/chromiumos/test/provision/v2/ash-provision/service"
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	lab_api "go.chromium.org/chromiumos/config/go/test/lab/api"
-
-	state_machine "go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine"
-)
-
-type AShProvisionExecutor struct {
-}
-
-func (c *AShProvisionExecutor) GetFirstState(dut *lab_api.Dut, dutClient api.DutServiceClient, _ string, req *api.InstallRequest) (common_utils.ServiceState, error) {
-	cs, err := service.NewAShService(dut, dutClient, req)
-	if err != nil {
-		return nil, err
-	}
-	return state_machine.NewAShInitState(cs), nil
-}
-
-// Validate ensures the ProvisionStartupRequest meets specified requirements.
-func (c *AShProvisionExecutor) Validate(req *api.ProvisionStartupRequest) error {
-	if req.GetDut() == nil || req.GetDut().GetId().GetValue() == "" {
-		return errors.New("dut id is not specified in input file")
-	}
-	if req.GetDutServer() == nil || req.DutServer.GetAddress() == "" || req.DutServer.GetPort() <= 0 {
-		return errors.New("dut server address is no specified or incorrect in input file")
-	}
-	return nil
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/service/ash_service.go b/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/service/ash_service.go
deleted file mode 100644
index 42ddd88..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/service/ash_service.go
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Container for the CrOSProvision state machine
-package service
-
-import (
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-
-	conf "go.chromium.org/chromiumos/config/go"
-	"go.chromium.org/chromiumos/config/go/test/api"
-	lab_api "go.chromium.org/chromiumos/config/go/test/lab/api"
-)
-
-// AShService inherits ServiceInterface
-type AShService struct {
-	Connection       common_utils.ServiceAdapterInterface
-	ImagePath        *conf.StoragePath
-	OverwritePayload *conf.StoragePath
-}
-
-func NewAShService(dut *lab_api.Dut, dutClient api.DutServiceClient, req *api.InstallRequest) (*AShService, error) {
-	return &AShService{
-		Connection:       common_utils.NewServiceAdapter(dutClient, req.GetPreventReboot()),
-		ImagePath:        req.ImagePath,
-		OverwritePayload: req.OverwritePayload,
-	}, nil
-}
-
-func NewAShServiceFromCrOSProvisionRequest(dutClient api.DutServiceClient, req *api.CrosProvisionRequest, pkg *api.ProvisionState_Package) *AShService {
-	return &AShService{
-		Connection:       common_utils.NewServiceAdapter(dutClient, req.ProvisionState.GetPreventReboot()),
-		ImagePath:        pkg.GetPackagePath(),
-		OverwritePayload: req.GetProvisionState().GetSystemImage().GetOverwritePayload(),
-	}
-}
-
-// NewAShServiceFromExistingConnection is equivalent to the above constructor,
-// but recycles a ServiceAdapter. Generally useful for tests.
-func NewAShServiceFromExistingConnection(conn common_utils.ServiceAdapterInterface, imagePath *conf.StoragePath, overwritePayload *conf.StoragePath) AShService {
-	return AShService{
-		Connection:       conn,
-		ImagePath:        imagePath,
-		OverwritePayload: overwritePayload,
-	}
-}
-
-// CleanupOnFailure is called if one of service's states failes to Execute() and
-// should clean up the temporary files, and undo the execution, if feasible.
-func (c *AShService) CleanupOnFailure(states []common_utils.ServiceState, executionErr error) error {
-	// TODO: evaluate whether cleanup is needed.
-	return nil
-}
-
-func (c *AShService) GetStagingDirectory() string {
-	return "/tmp/_provisioning_service_chrome_deploy"
-}
-
-func (c *AShService) GetTargetDir() string {
-	return "/opt/google/chrome"
-}
-func (c *AShService) GetAutotestDir() string {
-	return "/usr/local/autotest/deps/chrome_test/test_src/out/Release/"
-}
-func (c *AShService) GetTastDir() string {
-	return "/usr/local/libexec/chrome-binary-tests/"
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/commands/cleanup_staging_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/commands/cleanup_staging_command.go
deleted file mode 100644
index e004d1a..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/commands/cleanup_staging_command.go
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"go.chromium.org/chromiumos/test/provision/v2/ash-provision/service"
-	"context"
-	"log"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type CleanUpStagingCommand struct {
-	ctx context.Context
-	cs  *service.AShService
-}
-
-func NewCleanUpStagingCommand(ctx context.Context, cs *service.AShService) *CleanUpStagingCommand {
-	return &CleanUpStagingCommand{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *CleanUpStagingCommand) Execute(log *log.Logger) error {
-	return c.cs.Connection.DeleteDirectory(c.ctx, c.cs.GetStagingDirectory())
-}
-
-func (c *CleanUpStagingCommand) Revert() error {
-	return nil
-}
-
-func (c *CleanUpStagingCommand) GetErrorMessage() string {
-	return "failed to clean up staging directory"
-}
-
-func (c *CleanUpStagingCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_PROVISIONING_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/commands/copy_image_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/commands/copy_image_command.go
deleted file mode 100644
index 2891cf5..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/commands/copy_image_command.go
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// CopyImage downloads the metadata file locally
-package commands
-
-import (
-	"go.chromium.org/chromiumos/test/provision/v2/ash-provision/service"
-	"context"
-	"fmt"
-	"log"
-
-	conf "go.chromium.org/chromiumos/config/go"
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type CopyImageCommand struct {
-	ctx context.Context
-	cs  *service.AShService
-}
-
-func NewCopyImageCommand(ctx context.Context, cs *service.AShService) *CopyImageCommand {
-	return &CopyImageCommand{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *CopyImageCommand) Execute(log *log.Logger) error {
-	switch c.cs.ImagePath.HostType {
-	case conf.StoragePath_GS:
-		return c.cs.Connection.PipeData(c.ctx, c.cs.ImagePath.GetPath(), fmt.Sprintf("tar --ignore-command-error --overwrite --preserve-permissions --directory=%s -xf -", c.cs.GetStagingDirectory()))
-	default:
-		return fmt.Errorf("only GS copying is implemented")
-	}
-}
-
-func (c *CopyImageCommand) Revert() error {
-	return nil
-}
-
-func (c *CopyImageCommand) GetErrorMessage() string {
-	return "failed to copy image"
-}
-
-func (c *CopyImageCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_PROVISIONING_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/commands/create_binary_dirs_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/commands/create_binary_dirs_command.go
deleted file mode 100644
index 3f1a0f5..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/commands/create_binary_dirs_command.go
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"go.chromium.org/chromiumos/test/provision/v2/ash-provision/service"
-	"context"
-	"log"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type CreateBinaryDirsCommand struct {
-	ctx context.Context
-	cs  *service.AShService
-}
-
-func NewCreateBinaryDirsCommand(ctx context.Context, cs *service.AShService) *CreateBinaryDirsCommand {
-	return &CreateBinaryDirsCommand{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *CreateBinaryDirsCommand) Execute(log *log.Logger) error {
-	return c.cs.Connection.CreateDirectories(c.ctx, []string{c.cs.GetTargetDir(), c.cs.GetAutotestDir(), c.cs.GetTastDir()})
-}
-
-func (c *CreateBinaryDirsCommand) Revert() error {
-	return nil
-}
-
-func (c *CreateBinaryDirsCommand) GetErrorMessage() string {
-	return "failed to create binary directories"
-}
-
-func (c *CreateBinaryDirsCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_PROVISIONING_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/commands/create_new_staging_dirs_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/commands/create_new_staging_dirs_command.go
deleted file mode 100644
index cfc8f19..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/commands/create_new_staging_dirs_command.go
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"go.chromium.org/chromiumos/test/provision/v2/ash-provision/service"
-	"context"
-	"log"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type CreateNewStagingDirsCommand struct {
-	ctx context.Context
-	cs  *service.AShService
-}
-
-func NewCreateNewStagingDirsCommand(ctx context.Context, cs *service.AShService) *CreateNewStagingDirsCommand {
-	return &CreateNewStagingDirsCommand{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *CreateNewStagingDirsCommand) Execute(log *log.Logger) error {
-	return c.cs.Connection.CreateDirectories(c.ctx, []string{c.cs.GetStagingDirectory()})
-}
-
-func (c *CreateNewStagingDirsCommand) Revert() error {
-	return nil
-}
-
-func (c *CreateNewStagingDirsCommand) GetErrorMessage() string {
-	return "failed to create new staging directories"
-}
-
-func (c *CreateNewStagingDirsCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_PROVISIONING_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/commands/deploy_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/commands/deploy_command.go
deleted file mode 100644
index 5196a16..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/commands/deploy_command.go
+++ /dev/null
@@ -1,110 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Deploy rsyncs files to the desired locations for installation
-package commands
-
-import (
-	"go.chromium.org/chromiumos/test/provision/v2/ash-provision/service"
-	"context"
-	"fmt"
-	"log"
-	"path/filepath"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-// binaries to be copied in installation
-var copyPaths = [...]string{
-	"ash_shell",
-	"aura_demo",
-	"chrome",
-	"chrome-wrapper",
-	"chrome.pak",
-	"chrome_100_percent.pak",
-	"chrome_200_percent.pak",
-	"content_shell",
-	"content_shell.pak",
-	"extensions/",
-	"lib/*.so",
-	"libffmpegsumo.so",
-	"libpdf.so",
-	"libppGoogleNaClPluginChrome.so",
-	"libosmesa.so",
-	"libwidevinecdmadapter.so",
-	"libwidevinecdm.so",
-	"locales/",
-	"nacl_helper_bootstrap",
-	"nacl_irt_*.nexe",
-	"nacl_helper",
-	"resources/",
-	"resources.pak",
-	"xdg-settings",
-	"*.png",
-}
-
-// test binaries to be copied in installation
-var testPaths = [...]string{
-	"*test",
-	"*tests",
-}
-
-type DeployCommand struct {
-	ctx context.Context
-	cs  *service.AShService
-}
-
-func NewDeployCommand(ctx context.Context, cs *service.AShService) *DeployCommand {
-	return &DeployCommand{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *DeployCommand) Execute(log *log.Logger) error {
-	for _, file := range copyPaths {
-
-		if err := c.deployFile(c.ctx, file, c.cs.GetTargetDir()); err != nil {
-			return fmt.Errorf("could not deploy copy file, %w", err)
-		}
-	}
-	for _, file := range testPaths {
-		if err := c.deployFile(c.ctx, file, c.cs.GetAutotestDir()); err != nil {
-			return fmt.Errorf("could not deploy autotest file, %w", err)
-		}
-		if err := c.deployFile(c.ctx, file, c.cs.GetTastDir()); err != nil {
-			return fmt.Errorf("could not deploy tast file, %w", err)
-		}
-	}
-	return nil
-}
-
-func (c *DeployCommand) Revert() error {
-	return nil
-}
-
-func (c *DeployCommand) GetErrorMessage() string {
-	return "failed to deploy ASh files"
-}
-
-// deployFile rsyncs one specific file to the desired bin dir
-func (c *DeployCommand) deployFile(ctx context.Context, file string, destination string) error {
-	source := fmt.Sprintf("%s/%s", c.cs.GetStagingDirectory(), file)
-	target := filepath.Dir(fmt.Sprintf("%s/%s", destination, file))
-
-	if exists, err := c.cs.Connection.PathExists(ctx, source); err != nil {
-		return fmt.Errorf("failed to determine file existance, %s", err)
-	} else if !exists {
-		return nil
-	}
-
-	if _, err := c.cs.Connection.RunCmd(ctx, "rsync", []string{"-av", source, target}); err != nil {
-		return fmt.Errorf("failed run rsync, %s", err)
-	}
-	return nil
-}
-
-func (c *DeployCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_PROVISIONING_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/commands/kill_chrome_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/commands/kill_chrome_command.go
deleted file mode 100644
index e366b7a..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/commands/kill_chrome_command.go
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"go.chromium.org/chromiumos/test/provision/v2/ash-provision/service"
-	"context"
-	"fmt"
-	"log"
-	"time"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-// Time specific consts
-const (
-	twoSeconds = 2 * time.Second
-	tenSeconds = 10 * time.Second
-)
-
-type KillChromeCommand struct {
-	ctx context.Context
-	cs  *service.AShService
-}
-
-func NewKillChromeCommand(ctx context.Context, cs *service.AShService) *KillChromeCommand {
-	return &KillChromeCommand{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *KillChromeCommand) Execute(log *log.Logger) error {
-	for start := time.Now(); time.Since(start) < tenSeconds; time.Sleep(twoSeconds) {
-		if !c.isChromeInUse() {
-			return nil
-		}
-		log.Printf("chrome binary is still running, killing...")
-		if _, err := c.cs.Connection.RunCmd(c.ctx, "pkill", []string{"'chrome|session_manager'"}); err != nil {
-			return err
-		}
-	}
-	return fmt.Errorf("pkill did not kill chrome in the designated time")
-}
-
-func (c *KillChromeCommand) Revert() error {
-	return nil
-}
-
-func (c *KillChromeCommand) GetErrorMessage() string {
-	return "failed to kill chrome"
-}
-
-// isChromeInUse determines if chrome is currently running
-func (c *KillChromeCommand) isChromeInUse() bool {
-	_, err := c.cs.Connection.RunCmd(c.ctx, "lsof", []string{fmt.Sprintf("%s/chrome", c.cs.GetTargetDir())})
-	return err != nil
-}
-
-func (c *KillChromeCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_PROVISIONING_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/commands/mount_rootfs_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/commands/mount_rootfs_command.go
deleted file mode 100644
index 1af47a3..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/commands/mount_rootfs_command.go
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"go.chromium.org/chromiumos/test/provision/v2/ash-provision/service"
-	"context"
-	"log"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type MountRootFSCommand struct {
-	ctx context.Context
-	cs  *service.AShService
-}
-
-func NewMountRootFSCommand(ctx context.Context, cs *service.AShService) *MountRootFSCommand {
-	return &MountRootFSCommand{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *MountRootFSCommand) Execute(log *log.Logger) error {
-	if _, err := c.cs.Connection.RunCmd(c.ctx, "mount", []string{"-o", "remount,rw", "/"}); err != nil {
-		return err
-	}
-	return nil
-}
-
-func (c *MountRootFSCommand) Revert() error {
-	return nil
-}
-
-func (c *MountRootFSCommand) GetErrorMessage() string {
-	return "failed to mount root file system"
-}
-
-func (c *MountRootFSCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_PROVISIONING_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/commands/reload_bus_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/commands/reload_bus_command.go
deleted file mode 100644
index 0b32711..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/commands/reload_bus_command.go
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// ReloadBus kill the bus daemon with a SIGHUP
-package commands
-
-import (
-	"go.chromium.org/chromiumos/test/provision/v2/ash-provision/service"
-	"context"
-	"log"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type ReloadBusCommand struct {
-	ctx context.Context
-	cs  *service.AShService
-}
-
-func NewReloadBusCommand(ctx context.Context, cs *service.AShService) *ReloadBusCommand {
-	return &ReloadBusCommand{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *ReloadBusCommand) Execute(log *log.Logger) error {
-	if _, err := c.cs.Connection.RunCmd(c.ctx, "killall", []string{"-HUP", "dbus-daemon"}); err != nil {
-		return err
-	}
-	return nil
-}
-
-func (c *ReloadBusCommand) Revert() error {
-	return nil
-}
-
-func (c *ReloadBusCommand) GetErrorMessage() string {
-	return "failed to reload bus"
-}
-
-func (c *ReloadBusCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_PROVISIONING_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/commands/start_chrome_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/commands/start_chrome_command.go
deleted file mode 100644
index 7b10da5..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/commands/start_chrome_command.go
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"go.chromium.org/chromiumos/test/provision/v2/ash-provision/service"
-	"context"
-	"log"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type StartChromeCommand struct {
-	ctx context.Context
-	cs  *service.AShService
-}
-
-func NewStartChromeCommand(ctx context.Context, cs *service.AShService) *StartChromeCommand {
-	return &StartChromeCommand{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *StartChromeCommand) Execute(log *log.Logger) error {
-	if _, err := c.cs.Connection.RunCmd(c.ctx, "start", []string{"ui"}); err != nil {
-		return err
-	}
-	return nil
-}
-
-func (c *StartChromeCommand) Revert() error {
-	return nil
-}
-
-func (c *StartChromeCommand) GetErrorMessage() string {
-	return "failed to start chrome"
-}
-
-func (c *StartChromeCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_PROVISIONING_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/commands/stop_chrome_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/commands/stop_chrome_command.go
deleted file mode 100644
index 4ca7c19..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/commands/stop_chrome_command.go
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"go.chromium.org/chromiumos/test/provision/v2/ash-provision/service"
-	"context"
-	"log"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type StopChromeCommand struct {
-	ctx context.Context
-	cs  *service.AShService
-}
-
-func NewStopChromeCommand(ctx context.Context, cs *service.AShService) *StopChromeCommand {
-	return &StopChromeCommand{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *StopChromeCommand) Execute(log *log.Logger) error {
-	if _, err := c.cs.Connection.RunCmd(c.ctx, "stop", []string{"ui"}); err != nil {
-		// stop ui returns error when UI is terminated, so ignore error here
-		log.Printf("failed to stop chrome, %s", err)
-	}
-	return nil
-}
-
-func (c *StopChromeCommand) Revert() error {
-	return nil
-}
-
-func (c *StopChromeCommand) GetErrorMessage() string {
-	return "failed to stop chrome"
-}
-
-func (c *StopChromeCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_PROVISIONING_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/init_state.go b/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/init_state.go
deleted file mode 100644
index 3d1f15f..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/init_state.go
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// First step of the CrOSInit State Machine. Responsible for initialization.
-package state_machine
-
-import (
-	"go.chromium.org/chromiumos/test/provision/v2/ash-provision/service"
-	"go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/commands"
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"context"
-	"fmt"
-	"log"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"google.golang.org/protobuf/types/known/anypb"
-)
-
-// AShInitState can be thought of as the constructor state, which initializes
-// variables in CrOSService
-type AShInitState struct {
-	service *service.AShService
-}
-
-func NewAShInitState(service *service.AShService) common_utils.ServiceState {
-	return AShInitState{
-		service: service,
-	}
-}
-
-func (s AShInitState) Execute(ctx context.Context, log *log.Logger) (*anypb.Any, api.InstallResponse_Status, error) {
-	fmt.Printf("Executing %s State:\n", s.Name())
-	comms := []common_utils.CommandInterface{
-		commands.NewCleanUpStagingCommand(ctx, s.service),
-		commands.NewCreateNewStagingDirsCommand(ctx, s.service),
-		commands.NewCopyImageCommand(ctx, s.service),
-		commands.NewCreateBinaryDirsCommand(ctx, s.service),
-		commands.NewStopChromeCommand(ctx, s.service),
-		commands.NewKillChromeCommand(ctx, s.service),
-	}
-
-	for _, comm := range comms {
-		err := comm.Execute(log)
-		if err != nil {
-			return nil, comm.GetStatus(), fmt.Errorf("%s, %s", comm.GetErrorMessage(), err)
-		}
-	}
-
-	return nil, api.InstallResponse_STATUS_SUCCESS, nil
-}
-
-func (s AShInitState) Next() common_utils.ServiceState {
-	return AShInstallState{
-		service: s.service,
-	}
-}
-
-func (s AShInitState) Name() string {
-	return "ASh Init"
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/install_state.go b/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/install_state.go
deleted file mode 100644
index b61d144..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/install_state.go
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Second step of AShInstall State Machine. Responsible for partition and install
-package state_machine
-
-import (
-	"go.chromium.org/chromiumos/test/provision/v2/ash-provision/service"
-	"go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/commands"
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"context"
-	"fmt"
-	"log"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"google.golang.org/protobuf/types/known/anypb"
-)
-
-type AShInstallState struct {
-	service *service.AShService
-}
-
-func (s AShInstallState) Execute(ctx context.Context, log *log.Logger) (*anypb.Any, api.InstallResponse_Status, error) {
-	fmt.Printf("Executing %s State:\n", s.Name())
-	comms := []common_utils.CommandInterface{
-		commands.NewMountRootFSCommand(ctx, s.service),
-		commands.NewDeployCommand(ctx, s.service),
-	}
-
-	for i, comm := range comms {
-		err := comm.Execute(log)
-		if err != nil {
-			for ; i >= 0; i-- {
-				if innerErr := comms[i].Revert(); innerErr != nil {
-					return nil, comm.GetStatus(), fmt.Errorf("failure while reverting, %s: %s", err, innerErr)
-				}
-			}
-			return nil, comm.GetStatus(), fmt.Errorf("%s, %s", comm.GetErrorMessage(), err)
-		}
-	}
-
-	return nil, api.InstallResponse_STATUS_SUCCESS, nil
-}
-
-func (s AShInstallState) Next() common_utils.ServiceState {
-	return AShPostInstallState{
-		service: s.service,
-	}
-}
-
-func (s AShInstallState) Name() string {
-	return "ASh Install"
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/post_install_state.go b/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/post_install_state.go
deleted file mode 100644
index b239e73..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/post_install_state.go
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Second step of AShPostInstall State Machine. Responsible for partition and install
-package state_machine
-
-import (
-	"go.chromium.org/chromiumos/test/provision/v2/ash-provision/service"
-	"go.chromium.org/chromiumos/test/provision/v2/ash-provision/state-machine/commands"
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"context"
-	"fmt"
-	"log"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"google.golang.org/protobuf/types/known/anypb"
-)
-
-type AShPostInstallState struct {
-	service *service.AShService
-}
-
-func (s AShPostInstallState) Execute(ctx context.Context, log *log.Logger) (*anypb.Any, api.InstallResponse_Status, error) {
-	fmt.Printf("Executing %s State:\n", s.Name())
-	comms := []common_utils.CommandInterface{
-		commands.NewReloadBusCommand(ctx, s.service),
-		commands.NewStartChromeCommand(ctx, s.service),
-		commands.NewCleanUpStagingCommand(ctx, s.service),
-	}
-
-	for i, comm := range comms {
-		err := comm.Execute(log)
-		if err != nil {
-			for ; i >= 0; i-- {
-				if innerErr := comms[i].Revert(); innerErr != nil {
-					return nil, comm.GetStatus(), fmt.Errorf("failure while reverting, %s: %s", err, innerErr)
-				}
-			}
-			return nil, comm.GetStatus(), fmt.Errorf("%s, %s", comm.GetErrorMessage(), err)
-		}
-	}
-
-	return nil, api.InstallResponse_STATUS_SUCCESS, nil
-}
-
-func (s AShPostInstallState) Next() common_utils.ServiceState {
-	return nil
-}
-
-func (s AShPostInstallState) Name() string {
-	return "ASh PostInstall"
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/cross-over/cross_over_init_state.go b/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/cross-over/cross_over_init_state.go
deleted file mode 100644
index 9a7d69c..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/cross-over/cross_over_init_state.go
+++ /dev/null
@@ -1,70 +0,0 @@
-// 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.
-
-// DLC constants and helpers
-package cross_over
-
-import (
-	"context"
-	"log"
-	"strings"
-	"time"
-
-	storage_path "go.chromium.org/chromiumos/config/go"
-	lab_api "go.chromium.org/chromiumos/config/go/test/lab/api"
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"google.golang.org/protobuf/types/known/anypb"
-)
-
-const (
-	servoSSHPort          = ":22"
-	satlab                = "satlab"
-	bootWaitRetryCount    = 18
-	bootWaitRetryInterval = 5 * time.Second
-	jobRunning            = "Job is already running"
-)
-
-type CrossOverParameters struct {
-	Dut                *lab_api.Dut
-	TargetImagePath    *storage_path.StoragePath
-	DutClient          api.DutServiceClient
-	PostProvisionState common_utils.ServiceState
-	ServoNexusClient   api.ServodServiceClient
-	PrevError          string
-	StopServo          bool
-	PartnerMetadata    *api.PartnerMetadata
-}
-
-// CrossOverInitState starts the servod process.
-type CrossOverInitState struct {
-	params *CrossOverParameters
-}
-
-func NewCrossOverInitState(params *CrossOverParameters) common_utils.ServiceState {
-	return &CrossOverInitState{
-		params: params,
-	}
-}
-
-func (s CrossOverInitState) Execute(ctx context.Context, log *log.Logger) (*anypb.Any, api.InstallResponse_Status, error) {
-	err := startServod(ctx, log, s.params.ServoNexusClient, s.params.Dut)
-	stopServo := true
-	if err != nil && strings.Contains(err.Error(), jobRunning) {
-		stopServo = false
-	} else if err != nil {
-		return common_utils.WrapStringInAny("INFRA: unable to start servod process"), api.InstallResponse_STATUS_PRE_PROVISION_SETUP_FAILED, err
-	}
-	s.params.StopServo = stopServo
-	return nil, api.InstallResponse_STATUS_SUCCESS, nil
-}
-
-func (s CrossOverInitState) Next() common_utils.ServiceState {
-	return NewSetupUSBState(s.params)
-}
-
-func (s CrossOverInitState) Name() string {
-	return "Cross Over Init State"
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/cross-over/cross_over_terminate_state.go b/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/cross-over/cross_over_terminate_state.go
deleted file mode 100644
index 1c18888..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/cross-over/cross_over_terminate_state.go
+++ /dev/null
@@ -1,63 +0,0 @@
-// 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.
-
-// DLC constants and helpers
-package cross_over
-
-import (
-	"context"
-	"log"
-	"strings"
-
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"google.golang.org/protobuf/types/known/anypb"
-)
-
-// CrossOverTerminateState stops the servod process and downloads the servod logs.
-type CrossOverTerminateState struct {
-	params *CrossOverParameters
-}
-
-func NewCrossOverTerminateState(params *CrossOverParameters) common_utils.ServiceState {
-	return &CrossOverTerminateState{
-		params: params,
-	}
-}
-
-func (s CrossOverTerminateState) Execute(ctx context.Context, log *log.Logger) (*anypb.Any, api.InstallResponse_Status, error) {
-	log.Println("Executing " + s.Name())
-	var successMsg string
-	if strings.Contains(s.params.TargetImagePath.GetPath(), "android-build") {
-		successMsg = "INFRA: cross-over provision to ANDROID successful"
-	} else {
-		successMsg = "INFRA: cross-over provision to CROS successful"
-	}
-	if s.params.StopServo {
-		req := &api.StopServodRequest{}
-		req.ServodPort = s.params.Dut.GetChromeos().GetServo().GetServodAddress().GetPort()
-		req.ServoHostPath = s.params.Dut.GetChromeos().GetServo().GetServodAddress().GetAddress() + servoSSHPort
-		if strings.Contains(req.ServoHostPath, satlab) {
-			req.ServodDockerContainerName = s.params.Dut.GetChromeos().GetServo().GetServodAddress().GetAddress()
-		}
-		log.Printf("\nCalling stop servod with request %v.", req)
-		_, err := s.params.ServoNexusClient.StopServod(ctx, req)
-		if err != nil {
-			log.Println("Warning: failed to stop servod", err)
-			saveServoLogs(ctx, log, s.params.ServoNexusClient, s.params.Dut)
-			return common_utils.WrapStringInAny(successMsg), api.InstallResponse_STATUS_SUCCESS, nil
-		}
-		log.Printf("\nStopped servod process")
-	}
-	return common_utils.WrapStringInAny(successMsg), api.InstallResponse_STATUS_SUCCESS, nil
-}
-
-func (s CrossOverTerminateState) Next() common_utils.ServiceState {
-	return s.params.PostProvisionState
-}
-
-func (s CrossOverTerminateState) Name() string {
-	return "Cross Over Terminate State"
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/cross-over/full_os_image_state.go b/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/cross-over/full_os_image_state.go
deleted file mode 100644
index 46b8b62..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/cross-over/full_os_image_state.go
+++ /dev/null
@@ -1,266 +0,0 @@
-// 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.
-
-// DLC constants and helpers
-package cross_over
-
-import (
-	"context"
-	"errors"
-	"fmt"
-	"log"
-	"regexp"
-	"strings"
-	"time"
-
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"golang.org/x/crypto/ssh"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"google.golang.org/protobuf/types/known/anypb"
-)
-
-const (
-	// sshMsgIgnore is the SSH global message sent to ping the host.
-	// See RFC 4253 11.2, "Ignored Data Message".
-	sshMsgIgnore    = "SSH_MSG_IGNORE"
-	pingTimeout     = time.Second
-	pingRetryDelay  = 2 * time.Second
-	pingRetryCount  = 20
-	networkWaitTime = 1 * time.Minute
-	powerResetDelay = 10 * time.Second
-	networkErrMsg   = "Network is unreachable"
-	cpuUartCapture  = "cpu_uart_capture"
-	engImg          = "-eng"
-	androidBuild    = "android-build"
-)
-
-var launchTargetPatterns = []*regexp.Regexp{
-	regexp.MustCompile(`build_details/P?[0-9]+/([a-z_\-]+)`),
-	regexp.MustCompile(`artifacts_list/P?[0-9]+/([a-z_\-]+)`)}
-
-var buildIdPatterns = []*regexp.Regexp{
-	regexp.MustCompile(`build_details/(P?[0-9]+)/`),
-	regexp.MustCompile(`artifacts_list/(P?[0-9]+)/`)}
-
-// FullOSImageState copies the full Android/Cros image onto DUT disk.
-type FullOSImageState struct {
-	params *CrossOverParameters
-}
-
-func NewFullOSImageState(params *CrossOverParameters) common_utils.ServiceState {
-	return &FullOSImageState{
-		params: params,
-	}
-}
-
-func (s FullOSImageState) Execute(ctx context.Context, log *log.Logger) (*anypb.Any, api.InstallResponse_Status, error) {
-	log.Println("Executing " + s.Name())
-	dutAddress := fmt.Sprintf("%s:%v", s.params.Dut.GetChromeos().GetSsh().GetAddress(), s.params.Dut.GetChromeos().GetSsh().GetPort())
-	var client *ssh.Client
-	if client = checkSSH(log, dutAddress, bootWaitRetryCount, bootWaitRetryInterval); client == nil {
-		setPDRole(ctx, log, "src", s.params)
-		errMsg := "cannot SSH onto DUT booted from USB common provision image"
-		return common_utils.WrapStringInAny(s.errStatus(errMsg)), api.InstallResponse_STATUS_PRE_PROVISION_SETUP_FAILED, errors.New(errMsg)
-	}
-	defer client.Close()
-	setPDRole(ctx, log, "src", s.params)
-
-	cacheServer := s.params.Dut.GetCacheServer().GetAddress()
-	ipFunc := func() {
-		log.Println("IP info")
-		var session *ssh.Session
-		session, err := client.NewSession()
-		if err != nil {
-			log.Println("Failed to create session: ", err)
-			return
-		}
-
-		// Jumble the command, we don't care what fails or not, any output, simply print it.
-		const ipCmd = "set -e; ip rule show; ip route show table all; route; ifconfig eth0; echo 'All commands succeeded'"
-		if output, err := session.CombinedOutput(ipCmd); err != nil {
-			log.Println("Warning: failed to run IP info commands: ", ipCmd, err)
-			log.Println(string(output))
-		} else {
-			log.Println(string(output))
-		}
-	}
-	networkWaitFunc := func() error {
-		shorterCtx, cancel := context.WithTimeout(ctx, 30*time.Second)
-		defer cancel()
-		networkCheckCmd := fmt.Sprintf("curl --max-time 5 -s -o/dev/null http://%s:%v/check_health", cacheServer.GetAddress(), cacheServer.GetPort())
-		for {
-			var session *ssh.Session
-			session, err := client.NewSession()
-			if err != nil {
-				log.Println("Failed to create session: ", err)
-				return err
-			}
-
-			select {
-			case <-shorterCtx.Done():
-				return errors.New("Failed while waiting for network connection.")
-			default:
-				if err := session.Run(networkCheckCmd); err != nil {
-					ipFunc()
-					// Retry w/ delay.
-					time.Sleep(time.Second)
-					continue
-				}
-				return nil
-			}
-		}
-	}
-	if err := networkWaitFunc(); err != nil {
-		log.Println(err)
-	}
-
-	installCommand := ""
-	targetImgPath := s.params.TargetImagePath.GetPath()
-	if strings.Contains(targetImgPath, androidBuild) {
-		fwBuildPath := ""
-		if partnerGCSBucket := s.params.PartnerMetadata.GetPartnerGcsBucket(); partnerGCSBucket != "" {
-			// Set the Firmware blob path for the given model (b/379953281)
-			fwBuildPath = fmt.Sprintf("%s/provision_images/al-fw-blobs", partnerGCSBucket)
-		}
-		buildId, err := targetBuild(targetImgPath)
-		if err != nil {
-			return common_utils.WrapStringInAny(s.errStatus("INFRA: unable to parse image path from target")), api.InstallResponse_STATUS_INVALID_REQUEST, err
-		}
-		launchTarget, err := extractTargetLaunch(targetImgPath)
-		if err != nil {
-			return common_utils.WrapStringInAny(s.errStatus("INFRA: unable to parse image path from target")), api.InstallResponse_STATUS_INVALID_REQUEST, err
-		}
-		if strings.Contains(launchTarget, engImg) {
-			// Uart logs are only enabled in -eng img.
-			callServodSET(ctx, log, cpuUartCapture, on, s.params)
-		}
-		installCommand = fmt.Sprintf("al-install android-build/builds/%s/%s/attempts/latest/artifacts/android-desktop_image.bin.gz %s %s", buildId, launchTarget, cacheServer.GetAddress(), fwBuildPath)
-	} else {
-		installCommand = fmt.Sprintf("cros-install %s %s", targetImgPath[5:], cacheServer.GetAddress())
-	}
-	if err := installCommandWithRetry(client, installCommand, log); err != nil {
-		log.Println("Failed to run installCommand: ", installCommand, err)
-		collectUARTLogs(ctx, log, s.params)
-		return common_utils.WrapStringInAny(s.errStatus("FAILED TO RUN CROSOVER INSTALL COMMAND")), api.InstallResponse_STATUS_DOWNLOADING_IMAGE_FAILED, err
-	}
-	errStatus, responseStatus, err := s.handleReboot(ctx, client, log)
-	if err != nil {
-		collectUARTLogs(ctx, log, s.params)
-	}
-	return errStatus, responseStatus, err
-}
-
-func (s FullOSImageState) errStatus(curErr string) string {
-	if s.params.PrevError != "" {
-		return fmt.Sprintf("Flash and OTA failed: %s", s.params.PrevError)
-	}
-	return curErr
-}
-
-func (s FullOSImageState) Next() common_utils.ServiceState {
-	return NewValidateState(s.params)
-}
-
-func (s FullOSImageState) Name() string {
-	return "Full OS Image State"
-}
-
-func (s FullOSImageState) handleReboot(ctx context.Context, sshClient *ssh.Client, log *log.Logger) (*anypb.Any, api.InstallResponse_Status, error) {
-	if err := callServodRetry(ctx, log, "power_state", "off", s.params); err != nil {
-		return common_utils.WrapStringInAny("INFRA: unable to set turn off power via servo"), api.InstallResponse_STATUS_PROVISIONING_FAILED, err
-	}
-	if err := sshFailWait(sshClient, log); err != nil {
-		return common_utils.WrapStringInAny("INFRA: dut did not power off post provision image installation"), api.InstallResponse_STATUS_PROVISIONING_FAILED, err
-	}
-	log.Println("Device successfully powered off.")
-	if err := callServodRetry(ctx, log, "image_usbkey_direction", "servo_sees_usbkey", s.params); err != nil {
-		return common_utils.WrapStringInAny("INFRA: unable to set usb direction via servo"), api.InstallResponse_STATUS_PROVISIONING_FAILED, err
-	}
-	log.Printf("\nWaiting for the image_usbkey_direction.")
-	// TODO: Instead of fixed wait time, use a poll based status checker. Refer WaitForPowerStates and GetECSystemPowerState in firmware code.
-	time.Sleep(10 * time.Second)
-
-	if err := callServodRetry(ctx, log, "power_state", "on", s.params); err != nil {
-		// reset might be needed if power on failed: b/381982169
-		log.Println("Warning: unable to set turn on power via servo ", err)
-		log.Println("Waiting for 10 seconds before trying power resetting.")
-		time.Sleep(powerResetDelay)
-		if err := callServodRetry(ctx, log, "power_state", "reset", s.params); err != nil {
-			return common_utils.WrapStringInAny("INFRA: unable to reset power via servo"), api.InstallResponse_STATUS_PROVISIONING_FAILED, err
-		}
-	}
-	return nil, api.InstallResponse_STATUS_SUCCESS, nil
-}
-
-func installCommandWithRetry(client *ssh.Client, installCommand string, log *log.Logger) error {
-	log.Println("Running command on host now ", installCommand)
-	retryCount := 3
-	for ; retryCount >= 0; retryCount-- {
-		var session *ssh.Session
-		session, err := client.NewSession()
-		if err != nil {
-			log.Println("Failed to create session: ", err)
-			return err
-		}
-		output, err := session.CombinedOutput(installCommand)
-		log.Println(string(output))
-		if err == nil {
-			return nil
-		}
-		if !strings.Contains(string(output), networkErrMsg) {
-			return err
-		}
-		log.Println("Got error " + networkErrMsg + " while running install command. Will Retry...")
-	}
-	return fmt.Errorf("Failed to run installCommand")
-}
-
-// sshFailWait return nil, if the device cannot be sshed within 40 seconds.
-// If the device is alive even after 40 seconds, it returns error.
-func sshFailWait(sshClient *ssh.Client, log *log.Logger) error {
-	for attemp := 1; attemp < pingRetryCount; attemp++ {
-		log.Println("pinging device to check if its offline...")
-		if err := ping(sshClient, pingTimeout); err != nil {
-			return nil
-		}
-		time.Sleep(pingRetryDelay)
-	}
-	return errors.New("dut failed to become unreachable")
-}
-
-func ping(sshClient *ssh.Client, timeout time.Duration) error {
-	ch := make(chan error, 1)
-	go func() {
-		_, _, err := sshClient.SendRequest(sshMsgIgnore, true, []byte{})
-		ch <- err
-	}()
-
-	select {
-	case err := <-ch:
-		return err
-	case <-time.After(timeout):
-		return errors.New("timed out")
-	}
-}
-
-func extractTargetLaunch(path string) (string, error) {
-	for _, re := range launchTargetPatterns {
-		matches := re.FindStringSubmatch(path)
-		if len(matches) == 2 {
-			return matches[1], nil
-		}
-	}
-	return "", fmt.Errorf("could not extract launch from %s", path)
-}
-
-func targetBuild(imagePath string) (string, error) {
-	for _, re := range buildIdPatterns {
-		matches := re.FindStringSubmatch(imagePath)
-		if len(matches) == 2 {
-			return matches[1], nil
-		}
-	}
-	return "", fmt.Errorf("could not extract buildId from %s", imagePath)
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/cross-over/reboot_from_usb_state.go b/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/cross-over/reboot_from_usb_state.go
deleted file mode 100644
index 0f141f6..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/cross-over/reboot_from_usb_state.go
+++ /dev/null
@@ -1,56 +0,0 @@
-// 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.
-
-// DLC constants and helpers
-package cross_over
-
-import (
-	"context"
-	"log"
-	"time"
-
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"google.golang.org/protobuf/types/known/anypb"
-)
-
-const waitForPowerOff = 30 * time.Second
-
-// RebootFromUSBState sets the DUT power off and bring it back up in rec mode.
-type RebootFromUSBState struct {
-	params *CrossOverParameters
-}
-
-func NewRebootFromUSBState(params *CrossOverParameters) common_utils.ServiceState {
-	return &RebootFromUSBState{
-		params: params,
-	}
-}
-
-func (s RebootFromUSBState) Execute(ctx context.Context, log *log.Logger) (*anypb.Any, api.InstallResponse_Status, error) {
-	log.Println("Executing " + s.Name())
-	if err := callServodRetry(ctx, log, "power_state", "off", s.params); err != nil {
-		setPDRole(ctx, log, "src", s.params)
-		return common_utils.WrapStringInAny("INFRA: unable to set turn off USB"), api.InstallResponse_STATUS_PROVISIONING_FAILED, err
-	}
-	log.Printf("\nWaiting for the power state to turn off.")
-	// TODO: Instead of fixed wait time, use a poll based status checker. Refer WaitForPowerStates and GetECSystemPowerState in firmware code.
-	time.Sleep(waitForPowerOff)
-	if err := callServodRetry(ctx, log, "power_state", "rec", s.params); err != nil {
-		setPDRole(ctx, log, "src", s.params)
-		// A hard failure isn't necessary at this point, as subsequent checks will identify servod call failures and system state problems.
-		log.Printf("Letting passthrough from failed rec mode boot: %s", err)
-	}
-
-	return nil, api.InstallResponse_STATUS_SUCCESS, nil
-}
-
-func (s RebootFromUSBState) Next() common_utils.ServiceState {
-	return NewFullOSImageState(s.params)
-}
-
-func (s RebootFromUSBState) Name() string {
-	return "Reboot from USB State"
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/cross-over/setup_usb_state.go b/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/cross-over/setup_usb_state.go
deleted file mode 100644
index f6b8eb6..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/cross-over/setup_usb_state.go
+++ /dev/null
@@ -1,74 +0,0 @@
-// 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.
-
-// DLC constants and helpers
-package cross_over
-
-import (
-	"context"
-	"fmt"
-	"log"
-	"time"
-
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"google.golang.org/protobuf/types/known/anypb"
-)
-
-// TODO: Optimize so that we dont have to write to USB every single time.
-// TODO: Set provisionOSImagePath when its ready. Currently using a cros test image as a placeholder.
-// TODO: Post 9/23 deadline, remove provisionOSImagePath hardcoding here and input from provision request.
-const (
-	dutSeesUsbkeyWait = time.Second * 5
-)
-
-// SetupUSBState downloads the bootable provision image onto USB.
-type SetupUSBState struct {
-	params *CrossOverParameters
-}
-
-func NewSetupUSBState(params *CrossOverParameters) common_utils.ServiceState {
-	return &SetupUSBState{
-		params: params,
-	}
-}
-
-func (s SetupUSBState) Execute(ctx context.Context, log *log.Logger) (*anypb.Any, api.InstallResponse_Status, error) {
-	log.Println("Executing " + s.Name())
-	provisionOSImagePath := s.getProvisionOSImagePath(ctx, log)
-	// TODO: Instead of passing cache server url, we should pass gs path and cros-servod should build cache url from it.
-	provisionImgCacheServerPath := fmt.Sprintf("http://%s:%v/download/%s", s.params.Dut.GetCacheServer().GetAddress().GetAddress(), s.params.Dut.GetCacheServer().GetAddress().GetPort(), provisionOSImagePath[5:])
-	// TODO: Move these two calls to servod into cros-servod as a composite API SetupUSBKey.
-	// TODO: Deprecate primitive callServod and Exec API.
-	if err := callServodRetry(ctx, log, "download_image_to_usb_dev", provisionImgCacheServerPath, s.params); err != nil {
-		return common_utils.WrapStringInAny("INFRA: unable to download image to usb"), api.InstallResponse_STATUS_DOWNLOADING_IMAGE_FAILED, err
-	}
-	if err := callServodRetry(ctx, log, "image_usbkey_mux", "dut_sees_usbkey", s.params); err != nil {
-		return common_utils.WrapStringInAny("INFRA: unable to set USB to DUT"), api.InstallResponse_STATUS_DOWNLOADING_IMAGE_FAILED, err
-	}
-	// Wait for some time for the dut_sees_usbkey to take affect.
-	time.Sleep(dutSeesUsbkeyWait)
-	return nil, api.InstallResponse_STATUS_SUCCESS, nil
-}
-
-func (s SetupUSBState) getProvisionOSImagePath(ctx context.Context, log *log.Logger) string {
-	board := s.params.Dut.GetChromeos().GetDutModel().GetBuildTarget()
-	// TODO: chromeos-throw-away-bucket/kimjae is a private GCS bucket, we need a new home to
-	// store provision images.
-	imageFileName := fmt.Sprintf("%s-provision-v6.0.6.bin", board)
-	provisionOSImagePath := fmt.Sprintf("gs://chromeos-throw-away-bucket/kimjae/%s", imageFileName)
-	if partnerGCSBucket := s.params.PartnerMetadata.GetPartnerGcsBucket(); partnerGCSBucket != "" {
-		provisionOSImagePath = fmt.Sprintf("gs://%s/provision_images/%s", partnerGCSBucket, imageFileName)
-	}
-	return provisionOSImagePath
-}
-
-func (s SetupUSBState) Next() common_utils.ServiceState {
-	return NewRebootFromUSBState(s.params)
-}
-
-func (s SetupUSBState) Name() string {
-	return "Setup USB State"
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/cross-over/ssh_keys.go b/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/cross-over/ssh_keys.go
deleted file mode 100644
index 6b62e13..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/cross-over/ssh_keys.go
+++ /dev/null
@@ -1,107 +0,0 @@
-// 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 cross_over
-
-import (
-	"fmt"
-	"io/ioutil"
-	"os"
-	"time"
-
-	"golang.org/x/crypto/ssh"
-)
-
-// Copied from dut/cmd/cros-dut/dutssh/ssh_keys.go
-// TODO: Dedupe this and dut/cmd/cros-dut/dutssh/ssh_keys.go
-
-// The provided key is copied from
-// https://chromium.googlesource.com/chromiumos/chromite/+/HEAD/ssh_keys/testing_rsa
-// It's a well known "private" key used widely in Chrome OS testing.
-const sshKeyContent = `
------BEGIN RSA PRIVATE KEY-----
-MIIEoAIBAAKCAQEAvsNpFdK5lb0GfKx+FgsrsM/2+aZVFYXHMPdvGtTz63ciRhq0
-Jnw7nln1SOcHraSz3/imECBg8NHIKV6rA+B9zbf7pZXEv20x5Ul0vrcPqYWC44PT
-tgsgvi8s0KZUZN93YlcjZ+Q7BjQ/tuwGSaLWLqJ7hnHALMJ3dbEM9fKBHQBCrG5H
-OaWD2gtXj7jp04M/WUnDDdemq/KMg6E9jcrJOiQ39IuTpas4hLQzVkKAKSrpl6MY
-2etHyoNarlWhcOwitArEDwf3WgnctwKstI/MTKB5BTpO2WXUNUv4kXzA+g8/l1al
-jIG13vtd9A/IV3KFVx/sLkkjuZ7z2rQXyNKuJwIBIwKCAQA79EWZJPh/hI0CnJyn
-16AEXp4T8nKDG2p9GpCiCGnq6u2Dvz/u1pZk97N9T+x4Zva0GvJc1vnlST7objW/
-Y8/ET8QeGSCT7x5PYDqiVspoemr3DCyYTKPkADKn+cLAngDzBXGHDTcfNP4U6xfr
-Qc5JK8BsFR8kApqSs/zCU4eqBtp2FVvPbgUOv3uUrFnjEuGs9rb1QZ0K6o08L4Cq
-N+e2nTysjp78blakZfqlurqTY6iJb0ImU2W3T8sV6w5GP1NT7eicXLO3WdIRB15a
-evogPeqtMo8GcO62wU/D4UCvq4GNEjvYOvFmPzXHvhTxsiWv5KEACtleBIEYmWHA
-POwrAoGBAOKgNRgxHL7r4bOmpLQcYK7xgA49OpikmrebXCQnZ/kZ3QsLVv1QdNMH
-Rx/ex7721g8R0oWslM14otZSMITCDCMWTYVBNM1bqYnUeEu5HagFwxjQ2tLuSs8E
-SBzEr96JLfhwuBhDH10sQqn+OQG1yj5acs4Pt3L4wlYwMx0vs1BxAoGBANd9Owro
-5ONiJXfKNaNY/cJYuLR+bzGeyp8oxToxgmM4UuA4hhDU7peg4sdoKJ4XjB9cKMCz
-ZGU5KHKKxNf95/Z7aywiIJEUE/xPRGNP6tngRunevp2QyvZf4pgvACvk1tl9B3HH
-7J5tY/GRkT4sQuZYpx3YnbdP5Y6Kx33BF7QXAoGAVCzghVQR/cVT1QNhvz29gs66
-iPIrtQnwUtNOHA6i9h+MnbPBOYRIpidGTaqEtKTTKisw79JjJ78X6TR4a9ML0oSg
-c1K71z9NmZgPbJU25qMN80ZCph3+h2f9hwc6AjLz0U5wQ4alP909VRVIX7iM8paf
-q59wBiHhyD3J16QAxhsCgYBu0rCmhmcV2rQu+kd4lCq7uJmBZZhFZ5tny9MlPgiK
-zIJkr1rkFbyIfqCDzyrU9irOTKc+iCUA25Ek9ujkHC4m/aTU3lnkNjYp/OFXpXF3
-XWZMY+0Ak5uUpldG85mwLIvATu3ivpbyZCTFYM5afSm4StmaUiU5tA+oZKEcGily
-jwKBgBdFLg+kTm877lcybQ04G1kIRMf5vAXcConzBt8ry9J+2iX1ddlu2K2vMroD
-1cP/U/EmvoCXSOGuetaI4UNQwE/rGCtkpvNj5y4twVLh5QufSOl49V0Ut0mwjPXw
-HfN/2MoO07vQrjgsFylvrw9A79xItABaqKndlmqlwMZWc9Ne
------END RSA PRIVATE KEY-----
-`
-
-// readPrivateKey reads and decodes a passphraseless private SSH key from path.
-// rok is true if the key data was read successfully off disk and false if it wasn't.
-// Note that err may be set while rok is true if the key was malformed or passphrase-protected.
-func readPrivateKey(path string) (s ssh.Signer, err error) {
-	k, err := ioutil.ReadFile(path)
-	if err != nil {
-		return nil, err
-	}
-	s, err = ssh.ParsePrivateKey(k)
-	return s, err
-}
-
-var testingSSHMethods []ssh.AuthMethod
-
-func init() {
-	testingSSHMethods = make([]ssh.AuthMethod, 0)
-	setSigners := func(ks []ssh.Signer) {
-		testingSSHMethods = append(testingSSHMethods, ssh.PublicKeys(ks...))
-	}
-	var err error
-	keySigners := make([]ssh.Signer, 0)
-	testingSSHSigner, err := ssh.ParsePrivateKey([]byte(sshKeyContent))
-	if err != nil {
-		panic(fmt.Sprintf("The well known RSA key: %v", err.Error()))
-	}
-	keySigners = append(keySigners, testingSSHSigner)
-	p := "/~/.ssh/partner_testing_rsa"
-	if _, err := os.Stat(p); os.IsNotExist(err) {
-		setSigners(keySigners)
-		return
-	}
-
-	s, err := readPrivateKey(p)
-	if err != nil {
-		setSigners(keySigners)
-		return
-	}
-	keySigners = append(keySigners, s)
-	setSigners(keySigners)
-
-}
-
-// GetSSHConfig construct a static ssh config
-func GetSSHConfig() *ssh.ClientConfig {
-	return &ssh.ClientConfig{
-		User: "root",
-		// We don't care about the host key for DUTs.
-		// Attackers intercepting our connections to DUTs is not part
-		// of our attack profile.
-		HostKeyCallback: ssh.InsecureIgnoreHostKey(),
-		Timeout:         5 * time.Second,
-		// Use the well known testing RSA key as the default SSH auth
-		// method.
-		Auth: testingSSHMethods,
-	}
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/cross-over/utils.go b/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/cross-over/utils.go
deleted file mode 100644
index 1d8994c..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/cross-over/utils.go
+++ /dev/null
@@ -1,288 +0,0 @@
-// 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.
-
-// DLC constants and helpers
-package cross_over
-
-import (
-	"context"
-	"fmt"
-	"log"
-	"strings"
-	"time"
-
-	"go.chromium.org/chromiumos/config/go/api/test/xmlrpc"
-	"go.chromium.org/chromiumos/config/go/test/api"
-	lab_api "go.chromium.org/chromiumos/config/go/test/lab/api"
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"go.chromium.org/chromiumos/test/util/adb"
-	"go.chromium.org/chromiumos/test/util/common"
-	"golang.org/x/crypto/ssh"
-)
-
-type OS_TYPE int
-
-const (
-	ANDROID OS_TYPE = iota
-	CROS
-	UNKNOWN
-)
-
-const (
-	connectionResetErr = "connection reset by peer"
-	servoNexusLogPath  = "/tmp/servod/"
-	off                = "off"
-	on                 = "on"
-)
-
-func connectWithTimeout(addr string, config *ssh.ClientConfig, timeout time.Duration) (*ssh.Client, error) {
-	result := make(chan *ssh.Client)
-	errChan := make(chan error)
-
-	go func() {
-		client, err := ssh.Dial("tcp", addr, config)
-		if err != nil {
-			errChan <- err
-		} else {
-			result <- client
-		}
-	}()
-
-	select {
-	case client := <-result:
-		return client, nil
-	case err := <-errChan:
-		return nil, err
-	case <-time.After(timeout):
-		return nil, fmt.Errorf("SSH timed out")
-	}
-}
-
-func checkSSH(logger *log.Logger, dutAddress string, retryCount int, retryInterval time.Duration) *ssh.Client {
-	logger.Println("Checking for ssh connection. w. retry count: ", retryCount)
-	config := GetSSHConfig()
-	for ; retryCount >= 0; retryCount-- {
-		logger.Println("attempting to SSH dail the device")
-
-		client, err := connectWithTimeout(dutAddress, config, 5*time.Second)
-		if err == nil {
-			logger.Println("SSH dail the device successfull")
-			return client
-		}
-		logger.Println("Got error while ssh. Retrying...:", retryInterval)
-		time.Sleep(retryInterval)
-	}
-	return nil
-}
-
-func checkADB(logger *log.Logger, dutAddress string, timeout time.Duration) bool {
-	logger.Println("Checking for adb connection. w/ timeout: ", timeout)
-	err := adb.RetrySetupAdb(logger, dutAddress, timeout)
-	if err != nil {
-		return false
-	}
-	if err := adb.TeardownAdb(logger, dutAddress); err != nil {
-		logger.Println("Warning: TeardownAdb failed: ", err)
-	}
-	return true
-}
-
-func IsCROS(ctx context.Context, logger *log.Logger, dutClient api.DutServiceClient) bool {
-	logger.Println("Checking if /etc/lsb-release is present, if it does it means its CROS.")
-	for attempt := 1; attempt <= 2; attempt++ {
-		_, err := common.RunCmd(ctx, "ls", []string{"/etc/lsb-release"}, dutClient)
-		if err == nil {
-			return true
-		} else if attempt == 1 {
-			logger.Println("Got error while checking if /etc/lsb-release is present. Will retry.", err)
-		}
-	}
-	logger.Println("Check for /etc/lsb-release presence failed. Its probably a Android device.")
-	return false
-}
-
-func DetectOS(logger *log.Logger, dutAddress string) (OS_TYPE, error) {
-	logger.Println("Detecting OS type")
-	// Perform fast connection check.
-	if client := checkSSH(logger, dutAddress, 2, 2*time.Second); client != nil {
-		defer client.Close()
-		return CROS, nil
-	}
-	if checkADB(logger, dutAddress, 5*time.Second) {
-		return ANDROID, nil
-	}
-
-	// Perform long connection check.
-	if client := checkSSH(logger, dutAddress, 5, 10*time.Second); client != nil {
-		defer client.Close()
-		return CROS, nil
-	}
-	if checkADB(logger, dutAddress, 15*time.Second) {
-		return ANDROID, nil
-	}
-	return UNKNOWN, fmt.Errorf("could not detect underlining os for dut")
-}
-
-func callServodRetry(ctx context.Context, log *log.Logger, key, value string, params *CrossOverParameters) error {
-	err := callServodSET(ctx, log, key, value, params)
-	if err != nil && strings.Contains(err.Error(), connectionResetErr) {
-		log.Println("Got connection reset error in CallServod, restarting servod process and trying again. ", err)
-		if err = startServod(ctx, log, params.ServoNexusClient, params.Dut); err != nil && !strings.Contains(err.Error(), jobRunning) {
-			return fmt.Errorf("failed to restart servod %v", err)
-		}
-		params.StopServo = true
-		return callServodSET(ctx, log, key, value, params)
-	}
-	return err
-}
-
-func callServodSET(ctx context.Context, log *log.Logger, key, value string, params *CrossOverParameters) error {
-	log.Println("Making CallServo with key " + key + " and value " + value)
-	req := &api.CallServodRequest{}
-	req.Method = api.CallServodRequest_SET
-	req.Args = []*xmlrpc.Value{
-		{
-			ScalarOneof: &xmlrpc.Value_String_{
-				String_: key,
-			},
-		},
-		{
-			ScalarOneof: &xmlrpc.Value_String_{
-				String_: value,
-			},
-		},
-	}
-	req.ServoHostPath = params.Dut.GetChromeos().GetServo().GetServodAddress().GetAddress() + servoSSHPort
-	if strings.Contains(req.ServoHostPath, satlab) {
-		req.ServodDockerContainerName = params.Dut.GetChromeos().GetServo().GetServodAddress().GetAddress()
-	}
-	req.ServodPort = params.Dut.GetChromeos().GetServo().GetServodAddress().GetPort()
-	log.Printf("\nMaking CallServod Call with req %v", req)
-	response, err := params.ServoNexusClient.CallServod(ctx, req)
-	if err != nil {
-		saveServoLogs(ctx, log, params.ServoNexusClient, params.Dut)
-		return err
-	}
-	switch result := response.GetResult().(type) {
-	case *api.CallServodResponse_Failure_:
-		saveServoLogs(ctx, log, params.ServoNexusClient, params.Dut)
-		return fmt.Errorf("Call Servod failed error: %s", result.Failure.ErrorMessage)
-	case *api.CallServodResponse_Success_:
-		log.Printf("\nCallServod Call succeeded with response %v", response)
-		return nil
-	default:
-		return fmt.Errorf("unexpected result type for long running operation")
-	}
-}
-
-func startServod(ctx context.Context, log *log.Logger, servoNexusClient api.ServodServiceClient, dut *lab_api.Dut) error {
-	req := &api.StartServodRequest{}
-	req.Board = dut.GetChromeos().GetDutModel().GetBuildTarget()
-	req.Model = dut.GetChromeos().GetDutModel().GetModelName()
-	req.SerialName = dut.GetChromeos().GetServo().GetSerial()
-	req.ServodPort = dut.GetChromeos().GetServo().GetServodAddress().GetPort()
-	req.ServoHostPath = dut.GetChromeos().GetServo().GetServodAddress().GetAddress() + servoSSHPort
-	if strings.Contains(req.ServoHostPath, satlab) {
-		req.ServodDockerContainerName = dut.GetChromeos().GetServo().GetServodAddress().GetAddress()
-	}
-	log.Printf("\nCalling start servod with request %v.", req)
-	op, err := servoNexusClient.StartServod(ctx, req)
-	if err != nil {
-		saveServoLogs(ctx, log, servoNexusClient, dut)
-		return err
-	}
-	ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
-	defer cancel()
-	_, err = common_utils.WaitLongRunningOp(ctx, log, op)
-	return err
-}
-
-// Sets the servo_pd_role.
-//
-// This is a workaround for a power issue on certain devices (b/376928189)
-// where the power needs to be turned off from the source before booting
-// into recovery.
-//
-// This is not required for most devices and is not a critical dependency
-// for provisioning. Therefore, failures in this function should not
-// block the provisioning process.
-func setPDRole(ctx context.Context, log *log.Logger, val string, params *CrossOverParameters) error {
-	err := callServodSET(ctx, log, "servo_pd_role", val, params)
-	if err != nil {
-		log.Println("Warning failed to set servo_pd_role to", val)
-	}
-	return err
-}
-
-func saveServoLogs(ctx context.Context, log *log.Logger, servoNexusClient api.ServodServiceClient, dut *lab_api.Dut) error {
-	host := dut.GetChromeos().GetServo().GetServodAddress().GetAddress()
-	if strings.Contains(host, satlab) {
-		log.Println("Warning: Saving servo logs on satlab not supported.")
-		return nil
-	}
-	req := &api.SaveLogsRequest{}
-	req.ServodPorts = []int32{dut.GetChromeos().GetServo().GetServodAddress().GetPort()}
-	req.ServoHostPath = host + servoSSHPort
-	req.Dest = servoNexusLogPath
-	_, err := servoNexusClient.SaveLogs(ctx, req)
-	if err != nil {
-		log.Println("Warning: failed to save servo logs ", err)
-		return err
-	}
-	log.Println("Saved logs successfully")
-	return nil
-}
-
-func callServodGET(ctx context.Context, log *log.Logger, key string, params *CrossOverParameters) (string, error) {
-	log.Println("Making CallServo with key " + key)
-	req := &api.CallServodRequest{}
-	req.Method = api.CallServodRequest_GET
-	req.Args = []*xmlrpc.Value{
-		{
-			ScalarOneof: &xmlrpc.Value_String_{
-				String_: key,
-			},
-		},
-	}
-	req.ServoHostPath = params.Dut.GetChromeos().GetServo().GetServodAddress().GetAddress() + servoSSHPort
-	if strings.Contains(req.ServoHostPath, satlab) {
-		req.ServodDockerContainerName = params.Dut.GetChromeos().GetServo().GetServodAddress().GetAddress()
-	}
-	req.ServodPort = params.Dut.GetChromeos().GetServo().GetServodAddress().GetPort()
-	log.Printf("\nMaking CallServod Call with req %v", req)
-	response, err := params.ServoNexusClient.CallServod(ctx, req)
-	if err != nil {
-		return "", err
-	}
-	switch result := response.GetResult().(type) {
-	case *api.CallServodResponse_Failure_:
-		return "", fmt.Errorf("Call Servod failed error: " + result.Failure.ErrorMessage)
-	case *api.CallServodResponse_Success_:
-		output := result.Success.GetResult().GetString_()
-		replacer := strings.NewReplacer(`\n`, "\n", `\r`, "\r", `\t`, "\t")
-		output = replacer.Replace(output)
-		return output, nil
-	default:
-		return "", fmt.Errorf("unexpected result type for long running operation")
-	}
-}
-
-func collectUARTLogs(ctx context.Context, log *log.Logger, params *CrossOverParameters) {
-	// Uart logs are only enabled in ANDROID -eng img.
-	targetImgPath := params.TargetImagePath.GetPath()
-	if !strings.Contains(targetImgPath, androidBuild) || !strings.Contains(targetImgPath, engImg) {
-		log.Printf("info: UART logs are not outputted on the image %s", targetImgPath)
-		return
-	}
-	if err := callServodSET(ctx, log, cpuUartCapture, off, params); err != nil {
-		// Eat the error. Collecting logs is non critical.
-		log.Println("Warning: cpu_uart_capture off failed ", err)
-		return
-	}
-	output, err := callServodGET(ctx, log, "cpu_uart_stream", params)
-	if err != nil {
-		log.Println("Warning: Error while calling cpu_uart_stream ", err)
-	}
-	log.Println("Printing UART logs : ", output)
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/cross-over/validate_state.go b/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/cross-over/validate_state.go
deleted file mode 100644
index f60194b..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/cross-over/validate_state.go
+++ /dev/null
@@ -1,152 +0,0 @@
-// 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 cross_over
-
-import (
-	"context"
-	"fmt"
-	"io/ioutil"
-	"log"
-	"regexp"
-	"strings"
-	"time"
-
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"go.chromium.org/chromiumos/test/util/adb"
-	"go.chromium.org/chromiumos/test/util/common"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"google.golang.org/protobuf/types/known/anypb"
-)
-
-const (
-	adbInterval = 3 * time.Minute
-	adbTimeout  = 15 * time.Minute
-)
-
-// ValidateState checks if the correct version was provisioned or not.
-type ValidateState struct {
-	params *CrossOverParameters
-}
-
-func NewValidateState(params *CrossOverParameters) common_utils.ServiceState {
-	return &ValidateState{
-		params: params,
-	}
-}
-
-func (s ValidateState) Execute(ctx context.Context, log *log.Logger) (*anypb.Any, api.InstallResponse_Status, error) {
-	// TODO: Refactor verfication logic into tow separate commands one for Android and another one for cros.
-	log.Println("Executing " + s.Name())
-
-	// TODO: Use TargetImagePath's HostType to identify installation type.
-	if strings.Contains(s.params.TargetImagePath.GetPath(), "android-build") {
-		log.Println("Performing validation check for AL.")
-		// Refer to b/382122013 for more details on why such a high timeout is needed.
-		dutAddress := fmt.Sprintf("%s:%v", s.params.Dut.GetChromeos().GetSsh().GetAddress(), "5555")
-		adbCtx, cancel := context.WithTimeout(ctx, adbTimeout)
-		defer cancel()
-	adbLoop:
-		for {
-			select {
-			case <-adbCtx.Done():
-				collectUARTLogs(ctx, log, s.params)
-				return common_utils.WrapStringInAny("PLATFORM: unable to connect to device post al-install"), api.InstallResponse_STATUS_POST_PROVISION_SETUP_FAILED, fmt.Errorf("adb timeout into device=%s", dutAddress)
-			default:
-				if adberr := adb.RetrySetupAdb(log, dutAddress, adbInterval); adberr != nil {
-					log.Println("Error while testing adb connection ", adberr)
-					// Hard off followed by on to refresh the device boot state.
-					// Sometimes the networking services don't seem to be always providing a valid connection.
-					if err := callServodRetry(ctx, log, "power_state", "off", s.params); err != nil {
-						log.Println("Error while powering off via servo")
-					}
-					if err := callServodRetry(ctx, log, "power_state", "on", s.params); err != nil {
-						log.Println("Error while powering on via servo")
-					}
-				} else {
-					break adbLoop
-				}
-			}
-		}
-		collectUARTLogs(ctx, log, s.params)
-		// As soon as we get the ADB connection, immediately set the keep awake settings.
-		c1, err := adb.AdbShellCmd([]string{"svc", "power", "stayon", "true"}, dutAddress, log)
-		if err != nil {
-			log.Println("Unable to set stay awake:", c1)
-			return common_utils.WrapStringInAny("PLATFORM: setting stay awake failed"), api.InstallResponse_STATUS_POST_PROVISION_SETUP_FAILED, err
-		}
-		c2, err := adb.AdbShellCmd([]string{"settings", "put", "global", "stay_on_while_plugged_in", "7"}, dutAddress, log)
-		if err != nil {
-			log.Println("Unable to set stay awake:", c2)
-			return common_utils.WrapStringInAny("PLATFORM: setting stay awake failed"), api.InstallResponse_STATUS_POST_PROVISION_SETUP_FAILED, err
-		}
-
-		dutVersion, err := adb.AdbShellCmd([]string{"getprop", "ro.system.build.version.incremental"}, dutAddress, log)
-		if err != nil {
-			return common_utils.WrapStringInAny("PLATFORM: unable to get build from device post install"), api.InstallResponse_STATUS_POST_PROVISION_SETUP_FAILED, err
-		}
-		dutVersion = strings.Trim(dutVersion, " \n")
-		targetBuild, err := targetBuild(s.params.TargetImagePath.GetPath())
-		if err != nil {
-			return nil, api.InstallResponse_STATUS_INVALID_REQUEST, err
-		}
-		if targetBuild != dutVersion {
-			err := fmt.Errorf("post provision verification failed. Installed version on dut is %s but want %s", dutVersion, targetBuild)
-			return common_utils.WrapStringInAny("PLATFORM: device version not correct post al-install"), api.InstallResponse_STATUS_POST_PROVISION_SETUP_FAILED, err
-		}
-		if err := adb.TeardownAdb(log, dutAddress); err != nil {
-			log.Println("Warning: TeardownAdb failed in ValidateState ", err)
-		}
-	} else {
-		log.Println("Calling force connect on cros-dut")
-		if err := retryForceReconnect(ctx, log, s.params.DutClient, bootWaitRetryCount, bootWaitRetryInterval); err != nil {
-			return common_utils.WrapStringInAny("PLATFORM: unable to connect to device post cros-install"), api.InstallResponse_STATUS_POST_PROVISION_SETUP_FAILED, err
-		}
-		osReleaseFile, err := common.GetFile(ctx, "/etc/os-release", s.params.DutClient)
-		if err != nil {
-			log.Printf("Could not fetch /etc/os-release : %s\n", err)
-			return common_utils.WrapStringInAny("PLATFORM: unable to obtain /etc/os-release post cros-install"), api.InstallResponse_STATUS_POST_PROVISION_SETUP_FAILED, err
-		}
-		contentBytes, err := ioutil.ReadFile(osReleaseFile)
-		if err != nil {
-			log.Printf("Could not read %v : %s\n", osReleaseFile, err)
-			return common_utils.WrapStringInAny("PLATFORM: unable to read /etc/os-release post cros-install"), api.InstallResponse_STATUS_POST_PROVISION_SETUP_FAILED, err
-		}
-		content := string(contentBytes)
-		log.Println("Content of /etc/os-release ", content)
-		buildIDRegex := regexp.MustCompile("BUILD_ID=(.*)")
-		buildIDResult := buildIDRegex.FindStringSubmatch(content)
-		if len(buildIDResult) == 0 {
-			return common_utils.WrapStringInAny("PLATFORM: device version not correct post cros-install"), api.InstallResponse_STATUS_POST_PROVISION_SETUP_FAILED, fmt.Errorf("could not find buildId")
-		}
-		targetImgPath := s.params.TargetImagePath.GetPath()
-		if !strings.Contains(targetImgPath, buildIDResult[1]) {
-			err = fmt.Errorf("expected version %s but got %s", targetImgPath, buildIDResult[1])
-			return common_utils.WrapStringInAny("PLATFORM: device version not correct post cros-install"), api.InstallResponse_STATUS_POST_PROVISION_SETUP_FAILED, err
-		}
-	}
-	return nil, api.InstallResponse_STATUS_SUCCESS, nil
-}
-
-func (s ValidateState) Next() common_utils.ServiceState {
-	return NewCrossOverTerminateState(s.params)
-}
-
-func (s ValidateState) Name() string {
-	return "Validate State"
-}
-
-func retryForceReconnect(ctx context.Context, log *log.Logger, dutClient api.DutServiceClient, retryCount int, retryInterval time.Duration) error {
-	log.Println("Trying out ForceReconnect with retry count: ", retryCount)
-	var err error
-	for ; retryCount >= 0; retryCount-- {
-		_, err = dutClient.ForceReconnect(ctx, &api.ForceReconnectRequest{})
-		if err == nil {
-			return nil
-		}
-		time.Sleep(retryInterval)
-	}
-	return err
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/dlcinfo.go b/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/dlcinfo.go
deleted file mode 100644
index d8ec4ad..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/dlcinfo.go
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// DLC constants and helpers
-package common_utils
-
-const (
-	DlcCacheDir    = "/var/cache/dlc"
-	DlcImage       = "dlc.img"
-	DlcLibDir      = "/var/lib/dlcservice/dlc"
-	DlcPackage     = "package"
-	DlcVerified    = "verified"
-	DlcserviceUtil = "dlcservice_util"
-)
-
-const (
-	dlcSlotA string = "dlc_a"
-	dlcSlotB string = "dlc_b"
-)
-
-var ActiveDlcMap = map[string]string{PartitionNumRootA: dlcSlotA, PartitionNumRootB: dlcSlotA}
-var InactiveDlcMap = map[string]string{PartitionNumRootA: dlcSlotB, PartitionNumRootB: dlcSlotB}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/firmware_info.go b/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/firmware_info.go
deleted file mode 100644
index 2cec4f8..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/firmware_info.go
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Firmware constants and common types
-package common_utils
-
-const (
-	FirmwareUpdaterPath              = "/usr/sbin/chromeos-firmwareupdate"
-	CrossystemCurrentFirmwareSlotKey = "mainfw_act"
-	CrossystemNextFirmwareSlotKey    = "fw_try_next"
-)
-
-type FirmwareManifest map[string]FirmwareManifestData
-
-type FirmwareManifestData struct {
-	Host struct {
-		Versions struct {
-			Ro string `json:"ro"`
-			Rw string `json:"rw"`
-		} `json:"versions"`
-		Keys struct {
-			Root     string `json:"root"`
-			Recovery string `json:"recovery"`
-		} `json:"keys"`
-		Image string `json:"image"`
-	} `json:"host"`
-	Ec struct {
-		Versions struct {
-			Ro string `json:"ro"`
-			Rw string `json:"rw"`
-		} `json:"versions"`
-		Image string `json:"image"`
-	} `json:"ec"`
-	SignatureId string `json:"signature_id"`
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/helpers.go b/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/helpers.go
deleted file mode 100644
index a27336c..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/helpers.go
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Common helper methods
-package common_utils
-
-import (
-	"context"
-	stderrors "errors"
-	"fmt"
-	"io"
-	"log"
-	"os"
-	"path"
-	"path/filepath"
-	"strings"
-
-	"go.chromium.org/chromiumos/test/execution/errors"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"google.golang.org/protobuf/types/known/anypb"
-	"google.golang.org/protobuf/types/known/wrapperspb"
-)
-
-// BucketJoin is equivalent to Path.Join(), but for gs buckets.
-// This is necessary as the BUF removes double-slashes, which mangles the URI.
-// Returns the bucket and append as a formed bucket URI.
-func BucketJoin(bucket string, append string) string {
-	if strings.HasPrefix(bucket, "gs://") {
-		bucket = bucket[5:]
-	}
-	return fmt.Sprintf("gs://%s", path.Join(bucket, append))
-}
-
-func WrapStringInAny(s string) *anypb.Any {
-	stringValue := wrapperspb.String(s)
-
-	// Pack the StringValue into an Any
-	anyValue, err := anypb.New(stringValue)
-	if err != nil {
-		return nil
-	}
-	return anyValue
-}
-
-// ExecuteStateMachine runs a specific state machine
-func ExecuteStateMachine(ctx context.Context, cs ServiceState, log *log.Logger) (api.InstallResponse_Status, *anypb.Any, error) {
-	if cs == nil {
-		msg := "input State cannot be empty in ExecuteStateMachine"
-		return api.InstallResponse_STATUS_PROVISIONING_FAILED, nil, stderrors.New(msg)
-	}
-	for {
-		md, status, err := cs.Execute(ctx, log)
-		if err != nil {
-			return status, md, fmt.Errorf("failed provisioning on %s step, %w", cs.Name(), err)
-		}
-		cs = cs.Next()
-		if cs == nil {
-			return api.InstallResponse_STATUS_SUCCESS, md, nil
-		}
-	}
-}
-
-// CreateLogFile creates a file and its parent directory for logging purpose.
-func CreateLogFile(fullPath string) (*os.File, error) {
-	if err := os.MkdirAll(fullPath, 0755); err != nil {
-		return nil, errors.NewStatusError(errors.IOCreateError,
-			fmt.Errorf("failed to create directory %v: %w", fullPath, err))
-	}
-
-	logFullPathName := filepath.Join(fullPath, "log.txt")
-
-	// Log the full output of the command to disk.
-	logFile, err := os.Create(logFullPathName)
-	if err != nil {
-		return nil, errors.NewStatusError(errors.IOCreateError,
-			fmt.Errorf("failed to create file %v: %w", fullPath, err))
-	}
-	return logFile, nil
-}
-
-// NewLogger creates a logger. Using go default logger for now.
-func NewLogger(logFile *os.File) *log.Logger {
-	mw := io.MultiWriter(logFile, os.Stderr)
-	return log.New(mw, "", log.LstdFlags|log.LUTC)
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/metadata/machine_metadata.go b/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/metadata/machine_metadata.go
deleted file mode 100644
index 07a8a35..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/metadata/machine_metadata.go
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Plain Old Go Object repo for machine metadata
-package metadata
-
-// MachineMetadata stores DUT specific information
-type MachineMetadata struct {
-	RootInfo *RootInfo
-	Board    string
-	Version  string
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/metadata/root_info.go b/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/metadata/root_info.go
deleted file mode 100644
index 8356491..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/metadata/root_info.go
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Plain Old Go Object for root disk information
-package metadata
-
-import common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-
-// RootInfo stores Root information pertaining to a DUT
-type RootInfo struct {
-	Root          string
-	RootDisk      string
-	RootPartNum   string
-	PartitionInfo *common_utils.PartitionInfo
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/metadata/server_metadata.go b/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/metadata/server_metadata.go
deleted file mode 100644
index ff391e3..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/metadata/server_metadata.go
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Plain Old Go Object for persisting Server information
-package metadata
-
-import (
-	"log"
-
-	lab_api "go.chromium.org/chromiumos/config/go/test/lab/api"
-)
-
-// ServerMetadata stores server specific information for a DUT
-type ServerMetadata struct {
-	Port       int
-	Log        *log.Logger
-	Dut        *lab_api.Dut
-	DutAddress string
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/partitioninfo.go b/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/partitioninfo.go
deleted file mode 100644
index 95c6f09..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/partitioninfo.go
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Partition constants and helpers
-package common_utils
-
-import (
-	"fmt"
-	"strings"
-)
-
-const (
-	PartitionNumStateful = "1"
-	PartitionNumKernelA  = "2"
-	PartitionNumKernelB  = "4"
-	PartitionNumRootA    = "3"
-	PartitionNumRootB    = "5"
-	PartitionNumMiniOSA  = "9"
-	PartitionNumMiniOSB  = "10"
-)
-
-const (
-	MiniOSUnsupportedGUIDPartition = "09845860-705F-4BB5-B16C-8A8A099CAF52"
-)
-
-const (
-	StatefulPath           = "/mnt/stateful_partition"
-	UpdateStatefulFilePath = StatefulPath + "/.update_available"
-	// ProvisionMarker - This file acts as a flag to signal failed provisions.
-	// As we create the file in stateful, that means that if provision
-	// is successful it will be overwritten, meaning that the fact it exists
-	// beyond a provision run means it must have failed.
-	// This file should be created on every OS provision start.
-	ProvisionMarker = "/var/tmp/provision_failed"
-)
-
-// partitionsInfo holds active/inactive root + kernel partition information.
-type PartitionInfo struct {
-	// The active + inactive kernel device partitions (e.g. /dev/nvme0n1p2).
-	ActiveKernel      string
-	ActiveKernelNum   string
-	InactiveKernel    string
-	InactiveKernelNum string
-	// The active + inactive root device partitions (e.g. /dev/nvme0n1p3).
-	ActiveRoot   string
-	InactiveRoot string
-	// The A + B miniOS device partitions.
-	MiniOSA string
-	MiniOSB string
-	// The stateful partition path.
-	Stateful string
-}
-
-// GetPartitionInfo retrieves relevant kernel and root info for a specific root
-func GetPartitionInfo(root string, rootDisk string, rootPartNum string) PartitionInfo {
-	// Determine the next kernel and root.
-	rootDiskPartDelim := rootDisk + strings.TrimSuffix(strings.TrimPrefix(root, rootDisk), rootPartNum)
-	switch rootPartNum {
-	case PartitionNumRootA:
-		return PartitionInfo{
-			ActiveKernel:    rootDiskPartDelim + PartitionNumKernelA,
-			ActiveKernelNum: PartitionNumKernelA,
-			InactiveKernel:  rootDiskPartDelim + PartitionNumKernelB,
-			ActiveRoot:      rootDiskPartDelim + PartitionNumRootA,
-			InactiveRoot:    rootDiskPartDelim + PartitionNumRootB,
-			MiniOSA:         rootDiskPartDelim + PartitionNumMiniOSA,
-			MiniOSB:         rootDiskPartDelim + PartitionNumMiniOSB,
-			Stateful:        rootDiskPartDelim + PartitionNumStateful,
-		}
-	case PartitionNumRootB:
-		return PartitionInfo{
-			ActiveKernel:    rootDiskPartDelim + PartitionNumKernelB,
-			ActiveKernelNum: PartitionNumKernelB,
-			InactiveKernel:  rootDiskPartDelim + PartitionNumKernelA,
-			ActiveRoot:      rootDiskPartDelim + PartitionNumRootB,
-			InactiveRoot:    rootDiskPartDelim + PartitionNumRootA,
-			MiniOSA:         rootDiskPartDelim + PartitionNumMiniOSB,
-			MiniOSB:         rootDiskPartDelim + PartitionNumMiniOSA,
-			Stateful:        rootDiskPartDelim + PartitionNumStateful,
-		}
-	default:
-		panic(fmt.Sprintf("Unexpected root partition number of %s", rootPartNum))
-	}
-}
-
-// GetMiniOSPartitions returns the partition numbers for miniOS
-func GetMiniOSPartitions() []string {
-	return []string{PartitionNumMiniOSA, PartitionNumMiniOSB}
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/proto.go b/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/proto.go
deleted file mode 100644
index 24e226d..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/proto.go
+++ /dev/null
@@ -1,89 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package common_utils
-
-import (
-	"os"
-
-	"github.com/golang/protobuf/jsonpb"
-	"github.com/pkg/errors"
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-// ParseCrosProvisionRequest parses CrosProvisionRequest input request data from
-// the input file.
-func ParseCrosProvisionRequest(path string) (*api.CrosProvisionRequest, error) {
-	in := &api.CrosProvisionRequest{}
-	r, err := os.Open(path)
-	if err != nil {
-		return nil, errors.Wrapf(err, "open file %q", path)
-	}
-
-	umrsh := jsonpb.Unmarshaler{}
-	umrsh.AllowUnknownFields = true
-	err = umrsh.Unmarshal(r, in)
-	if err != nil {
-		return nil, errors.Wrapf(err, "invalid json in %q", path)
-	}
-
-	return in, nil
-}
-
-// ParseAndroidProvisionRequest parses AndroidProvisionRequest input request data from
-// the input file.
-func ParseAndroidProvisionRequest(path string) (*api.AndroidProvisionRequest, error) {
-	in := &api.AndroidProvisionRequest{}
-	r, err := os.Open(path)
-	if err != nil {
-		return nil, errors.Wrapf(err, "open file %q", path)
-	}
-
-	umrsh := jsonpb.Unmarshaler{}
-	umrsh.AllowUnknownFields = true
-	err = umrsh.Unmarshal(r, in)
-	if err != nil {
-		return nil, errors.Wrapf(err, "invalid json in %q", path)
-	}
-
-	return in, nil
-}
-
-// ParseInstallRequest parses InstallRequest input request data from
-// the input file.
-func ParseInstallRequest(path string) (*api.InstallRequest, error) {
-	in := &api.InstallRequest{}
-	r, err := os.Open(path)
-	if err != nil {
-		return nil, errors.Wrapf(err, "open file %q", path)
-	}
-
-	umrsh := jsonpb.Unmarshaler{}
-	umrsh.AllowUnknownFields = false
-	err = umrsh.Unmarshal(r, in)
-	if err != nil {
-		return nil, errors.Wrapf(err, "invalid json in %q", path)
-	}
-
-	return in, nil
-}
-
-// ParseProvisionStartupRequest parses ProvisionStartupRequest input request data from
-// the input file.
-func ParseProvisionStartupRequest(path string) (*api.ProvisionStartupRequest, error) {
-	in := &api.ProvisionStartupRequest{}
-	r, err := os.Open(path)
-	if err != nil {
-		return nil, errors.Wrapf(err, "open file %q", path)
-	}
-
-	umrsh := jsonpb.Unmarshaler{}
-	umrsh.AllowUnknownFields = false
-	err = umrsh.Unmarshal(r, in)
-	if err != nil {
-		return nil, errors.Wrapf(err, "invalid json in %q", path)
-	}
-
-	return in, nil
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/server/provision_executor.go b/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/server/provision_executor.go
deleted file mode 100644
index 2de30f2..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/server/provision_executor.go
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Executor defines a state initializer for each state. Usable by server to start.
-// Under normal conditions this would be part of service, but go being go, it
-// would create an impossible cycle
-package server
-
-import (
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	lab_api "go.chromium.org/chromiumos/config/go/test/lab/api"
-)
-
-type ProvisionExecutor interface {
-	GetFirstState(dut *lab_api.Dut, dutClient api.DutServiceClient, servoNexusAddr string, req *api.InstallRequest) (common_utils.ServiceState, error)
-	Validate(req *api.ProvisionStartupRequest) error
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/server/provision_server.go b/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/server/provision_server.go
deleted file mode 100644
index 671aa60..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/server/provision_server.go
+++ /dev/null
@@ -1,154 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// GRPC Server impl
-package server
-
-import (
-	"errors"
-
-	"go.chromium.org/chromiumos/lro"
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"go.chromium.org/chromiumos/test/provision/v2/common-utils/metadata"
-	"go.chromium.org/chromiumos/test/util/portdiscovery"
-
-	"context"
-	"fmt"
-	"net"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-
-	"go.chromium.org/chromiumos/config/go/longrunning"
-	"google.golang.org/grpc"
-	"google.golang.org/protobuf/types/known/anypb"
-	"google.golang.org/protobuf/types/known/wrapperspb"
-)
-
-type ProvisionServer struct {
-	options        *metadata.ServerMetadata
-	dutClient      api.DutServiceClient
-	manager        *lro.Manager
-	executor       ProvisionExecutor
-	conns          []*grpc.ClientConn
-	servoNexusAddr string
-}
-
-func NewProvisionServer(options *metadata.ServerMetadata, executor ProvisionExecutor) (*ProvisionServer, func(), error) {
-	ps := &ProvisionServer{
-		options:  options,
-		executor: executor,
-		conns:    []*grpc.ClientConn{},
-	}
-
-	if options.DutAddress != "" {
-		dutConn, err := grpc.Dial(options.DutAddress, grpc.WithInsecure())
-		if err != nil {
-			return nil, ps.closeProvisionServer, fmt.Errorf("failed to connect to dut-service, %s", err)
-		}
-		ps.conns = append(ps.conns, dutConn)
-		ps.dutClient = api.NewDutServiceClient(dutConn)
-	}
-
-	return ps, ps.closeProvisionServer, nil
-}
-
-func (ps *ProvisionServer) closeProvisionServer() {
-	for _, conn := range ps.conns {
-		conn.Close()
-	}
-	ps.conns = nil
-}
-
-func (ps *ProvisionServer) Start() error {
-	l, err := net.Listen("tcp", fmt.Sprintf(":%d", ps.options.Port))
-	if err != nil {
-		return fmt.Errorf("failed to create listener at %d", ps.options.Port)
-	}
-
-	// Write port number to ~/.cftmeta for go/cft-port-discovery
-	err = portdiscovery.WriteServiceMetadata("provision", l.Addr().String(), ps.options.Log)
-	if err != nil {
-		ps.options.Log.Println("Warning: error when writing to metadata file: ", err)
-	}
-
-	ps.manager = lro.New()
-	defer ps.manager.Close()
-	server := grpc.NewServer()
-	api.RegisterGenericProvisionServiceServer(server, ps)
-	longrunning.RegisterOperationsServer(server, ps.manager)
-	ps.options.Log.Println("provisionservice listen to request at ", l.Addr().String())
-	return server.Serve(l)
-}
-
-// StartUp handles the initialization of the GenericProvisionService by passing in parameters through the ProvisionStartupRequest.
-func (ps *ProvisionServer) StartUp(ctx context.Context, req *api.ProvisionStartupRequest) (*api.ProvisionStartupResponse, error) {
-	ps.options.Log.Println("Received api.ProvisionStartupRequest: ", req)
-	response := api.ProvisionStartupResponse{}
-
-	if err := ps.executor.Validate(req); err != nil {
-		response.Status = api.ProvisionStartupResponse_STATUS_INVALID_REQUEST
-		return &response, err
-	}
-	if req.GetServoNexusAddr() != nil {
-		ps.servoNexusAddr = fmt.Sprintf("%v:%v", req.GetServoNexusAddr().GetAddress(), req.GetServoNexusAddr().GetPort())
-	}
-	ps.options.Dut = req.Dut
-	ps.options.DutAddress = fmt.Sprintf("%s:%d", req.GetDutServer().GetAddress(), req.GetDutServer().GetPort())
-	dutConn, err := grpc.Dial(ps.options.DutAddress, grpc.WithInsecure())
-	if err != nil {
-		response.Status = api.ProvisionStartupResponse_STATUS_STARTUP_FAILED
-		return &response, fmt.Errorf("failed to connect to dut-service, %s", err)
-	}
-	ps.conns = append(ps.conns, dutConn)
-	ps.dutClient = api.NewDutServiceClient(dutConn)
-
-	response.Status = api.ProvisionStartupResponse_STATUS_SUCCESS
-	return &response, nil
-}
-
-func (ps *ProvisionServer) Install(ctx context.Context, req *api.InstallRequest) (*longrunning.Operation, error) {
-	ps.options.Log.Println("Received api.InstallCrosRequest: ", req)
-	op := ps.manager.NewOperation()
-	response := api.InstallResponse{}
-
-	installResp, md, err := ps.installTarget(ctx, req)
-	if err != nil && installResp != api.InstallResponse_STATUS_SUCCESS {
-		ps.options.Log.Printf("failed provision, %s", err)
-	}
-
-	ps.options.Log.Printf("Raw Status: %s", md)
-	fv := ""
-	stringValue := &wrapperspb.StringValue{}
-	if err := md.UnmarshalTo(stringValue); err != nil {
-		ps.options.Log.Printf("Error unmarshalling:", err)
-		fv = "No Status"
-	} else {
-		fv = stringValue.GetValue()
-	}
-
-	response.Status = installResp
-	response.Message = fv
-	ps.manager.SetResult(op.Name, &response)
-	ps.options.Log.Printf("Provision set OP Response to:%s ", &response)
-	// Note: Do not return the err here, as it causes the op response to not be set.
-	// Since the op will carry the failure reason, just set the op.
-	return op, nil
-}
-
-// installTarget installs a specified version of the software on the target, along
-// with any specified DLCs.
-func (ps *ProvisionServer) installTarget(ctx context.Context, req *api.InstallRequest) (api.InstallResponse_Status, *anypb.Any, error) {
-	ps.options.Log.Println("Received api.InstallRequest: ", req)
-
-	if ps.dutClient == nil {
-		return api.InstallResponse_STATUS_PRE_PROVISION_SETUP_FAILED, nil, errors.New("error: no dut client found")
-	}
-
-	fs, err := ps.executor.GetFirstState(ps.options.Dut, ps.dutClient, ps.servoNexusAddr, req)
-	if err != nil {
-		return api.InstallResponse_STATUS_INVALID_REQUEST, nil, err
-	}
-
-	return common_utils.ExecuteStateMachine(ctx, fs, ps.options.Log)
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/service_adapter_interface.go b/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/service_adapter_interface.go
deleted file mode 100644
index 9b6a4f4..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/service_adapter_interface.go
+++ /dev/null
@@ -1,350 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Files here concern a service adapter to communicate with CrosDUT
-
-package common_utils
-
-import (
-	"context"
-	"fmt"
-	"io"
-	"log"
-	"os"
-	"time"
-
-	"go.chromium.org/chromiumos/test/util/common"
-
-	"github.com/pkg/errors"
-	"go.chromium.org/chromiumos/config/go/longrunning"
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-const (
-	defaulTimeout = 5 * time.Minute
-)
-
-// ServiceAdapters are used to interface with a DUT
-// All methods here are proxies to cros-dut (with some additions for simplicity)
-type ServiceAdapterInterface interface {
-	// RunCmd takes a command and argument and executes it remotely in the DUT,
-	// returning the stdout as the string result and any execution error as the error.
-	// The args are not quoted in any way, so beware of spaces and shell variables.
-	RunCmd(ctx context.Context, cmd string, args []string) (string, error)
-	// Restart restarts a DUT (allowing cros-dut to reconnect for connection caching).
-	Restart(ctx context.Context) error
-	// PathExists is a simple wrapper for RunCmd for the sake of simplicity. If
-	// the path exists True is returned, else False. An error implies a
-	// a communication failure.
-	PathExists(ctx context.Context, path string) (bool, error)
-	// PipeData uses the caching infrastructure to bring an image into the lab.
-	// Contrary to CopyData, the data here is pipeable to whatever is fed into
-	// pipeCommand, rather than directly placed locally.
-	PipeData(ctx context.Context, sourceUrl string, pipeCommand string) error
-	// CopyData uses the caching infrastructure to copy a remote image to
-	// the local path specified by destPath.
-	CopyData(ctx context.Context, sourceUrl string, destPath string) error
-	// DeleteDirectory is a simple wrapper for RunCmd for the sake of simplicity.
-	DeleteDirectory(ctx context.Context, dir string) error
-	// CreateDirectory is a simple wrapper for RunCmd for the sake of simplicity.
-	// All directories specified in the array will be created.
-	// As this uses "-p" option, subdirs are created regardless of whether parents
-	// exist or not.
-	CreateDirectories(ctx context.Context, dirs []string) error
-	// FetchFile downloads a file from the DUT.
-	FetchFile(ctx context.Context, path string) (io.ReadCloser, error)
-	// ForceReconnectWithBackoff waits for the DUT to come back up/reconnect.
-	ForceReconnectWithBackoff(ctx context.Context) error
-}
-
-type execCmdResult struct {
-	response string
-	err      error
-}
-
-type ServiceAdapter struct {
-	dutClient api.DutServiceClient
-	noReboot  bool
-}
-
-func NewServiceAdapter(dutClient api.DutServiceClient, noReboot bool) ServiceAdapter {
-	return ServiceAdapter{
-		dutClient: dutClient,
-		noReboot:  noReboot,
-	}
-}
-
-// RunCmd runs a command in a remote DUT
-func (s ServiceAdapter) RunCmd(ctx context.Context, cmd string, args []string) (string, error) {
-	log.Printf("<cros-provision> Run cmd: %s, %s\n", cmd, args)
-	var timeout time.Duration
-	if deadline, ok := ctx.Deadline(); ok {
-		timeout = time.Until(deadline)
-	} else {
-		timeout = defaulTimeout
-	}
-
-	// Channel used to receive the result from ExecCommand function.
-	ch := make(chan execCmdResult, 1)
-
-	// Create a context with the specified timeout.
-	ctxTimeout, cancel := context.WithTimeout(ctx, timeout)
-	defer cancel()
-
-	// Start the execCmd function.
-	go s.execCmd(ctxTimeout, cmd, args, ch)
-
-	select {
-	case <-ctxTimeout.Done():
-		return "", fmt.Errorf("<cros-provision> Timeout %s reached", timeout)
-	case result := <-ch:
-		return result.response, result.err
-	}
-}
-
-func (s ServiceAdapter) execCmd(ctx context.Context, cmd string, args []string, ch chan execCmdResult) {
-	req := api.ExecCommandRequest{
-		Command: cmd,
-		Args:    args,
-		Stdout:  api.Output_OUTPUT_PIPE,
-		Stderr:  api.Output_OUTPUT_PIPE,
-	}
-	stream, err := s.dutClient.ExecCommand(ctx, &req)
-	if err != nil {
-		log.Printf("<cros-provision> Run cmd FAILED: %s\n", err)
-		ch <- execCmdResult{response: "", err: fmt.Errorf("execution fail: %w", err)}
-		return
-	}
-	// Expecting single stream result
-	execCmdResponse, err := stream.Recv()
-	if err != nil {
-		ch <- execCmdResult{response: "", err: fmt.Errorf("execution single stream result: %w", err)}
-		return
-	}
-	if execCmdResponse.ExitInfo.Status != 0 {
-		err = fmt.Errorf("status: %v message: %v STDOUT: %v STDERR :%v", execCmdResponse.ExitInfo.Status, execCmdResponse.ExitInfo.ErrorMessage, execCmdResponse.Stdout, execCmdResponse.Stderr)
-	}
-	if string(execCmdResponse.Stderr) != "" {
-		log.Printf("<cros-provision> execution finished with stderr: %s\n", string(execCmdResponse.Stderr))
-	}
-	ch <- execCmdResult{response: string(execCmdResponse.Stdout), err: err}
-}
-
-// FetchFile downloads a file from the DUT.
-func (s ServiceAdapter) FetchFile(ctx context.Context, path string) (io.ReadCloser, error) {
-	log.Printf("Running FetchFile cmd: %s\n", path)
-	filename, err := common.GetFile(ctx, path, s.dutClient)
-	if err != nil {
-		return nil, errors.Wrap(err, "fetch file failed")
-	}
-
-	log.Printf("Local filename: %s\n", filename)
-	return os.Open(filename)
-}
-
-// Restart restarts a DUT
-func (s ServiceAdapter) Restart(ctx context.Context) error {
-	if s.noReboot {
-		return nil
-	}
-	log.Printf("<cros-provision>: ServiceAdaptor: Restart Start")
-
-	req := api.RestartRequest{
-		Args: []string{},
-		Retry: &api.RestartRequest_ReconnectRetry{
-			Times:      50,
-			IntervalMs: 10000,
-		},
-	}
-
-	ctx, cancel := context.WithTimeout(ctx, 500*time.Second)
-	defer cancel()
-
-	op, err := s.dutClient.Restart(ctx, &req)
-	if err != nil {
-		log.Printf("<cros-provision>: ServiceAdaptor: Restart ERROR %s", err)
-		return err
-	}
-
-	for !op.Done {
-		log.Printf("<cros-provision>: ServiceAdaptor: Restart !op.Done")
-		time.Sleep(1 * time.Second)
-	}
-
-	switch x := op.Result.(type) {
-	case *longrunning.Operation_Error:
-		log.Printf("<cros-provision>: ServiceAdaptor: Restart LRO ERROR %s", x.Error.Message)
-		return fmt.Errorf(x.Error.Message)
-	case *longrunning.Operation_Response:
-		log.Printf("<cros-provision>: ServiceAdaptor: Restart LRO RESPONSE")
-
-		return nil
-	}
-
-	log.Printf("<cros-provision>: ServiceAdaptor: Restart Success")
-
-	return nil
-}
-
-// PathExists determines if a path exists in a DUT
-func (s ServiceAdapter) PathExists(ctx context.Context, path string) (bool, error) {
-	exists, err := s.RunCmd(ctx, "", []string{"[", "-e", path, "]", "&&", "echo", "-n", "1", "||", "echo", "-n", "0"})
-	if err != nil {
-		return false, fmt.Errorf("path exists: failed to check if %s exists, %s", path, err)
-	}
-	return exists == "1", nil
-}
-
-// PipeData uses the caching infrastructure to bring a file locally,
-// allowing a user to pipe the result to any desired application.
-func (s ServiceAdapter) PipeData(ctx context.Context, sourceUrl string, pipeCommand string) error {
-	log.Printf("Piping %s with command %s\n", sourceUrl, pipeCommand)
-
-	req := api.CacheRequest{
-		Source: &api.CacheRequest_GsFile{
-			GsFile: &api.CacheRequest_GSFile{
-				SourcePath: sourceUrl,
-			},
-		},
-		Destination: &api.CacheRequest_Pipe_{
-			Pipe: &api.CacheRequest_Pipe{
-				Commands: pipeCommand,
-			},
-		},
-		Retry: &api.CacheRequest_Retry{
-			Times:      3,
-			IntervalMs: 5000,
-		},
-	}
-
-	op, err := s.dutClient.Cache(ctx, &req)
-	if err != nil {
-		return fmt.Errorf("execution failure: %v", err)
-	}
-
-	for !op.Done {
-		time.Sleep(1 * time.Second)
-	}
-
-	switch x := op.Result.(type) {
-	case *longrunning.Operation_Error:
-		return fmt.Errorf(x.Error.Message)
-	case *longrunning.Operation_Response:
-		return nil
-	}
-
-	return nil
-}
-
-// CopyData caches a file for a DUT locally from a GS url.
-func (s ServiceAdapter) CopyData(ctx context.Context, sourceUrl string, destPath string) error {
-	log.Printf("Copy data from: %s, to: %s\n", sourceUrl, destPath)
-
-	req := api.CacheRequest{
-		Source: &api.CacheRequest_GsFile{
-			GsFile: &api.CacheRequest_GSFile{
-				SourcePath: sourceUrl,
-			},
-		},
-		Destination: &api.CacheRequest_File{
-			File: &api.CacheRequest_LocalFile{
-				Path: destPath,
-			},
-		},
-		Retry: &api.CacheRequest_Retry{
-			Times:      3,
-			IntervalMs: 5000,
-		},
-	}
-
-	op, err := s.dutClient.Cache(ctx, &req)
-	if err != nil {
-		return fmt.Errorf("execution failure: %v", err)
-	}
-
-	for !op.Done {
-		time.Sleep(1 * time.Second)
-	}
-
-	switch x := op.Result.(type) {
-	case *longrunning.Operation_Error:
-		return fmt.Errorf(x.Error.Message)
-	case *longrunning.Operation_Response:
-		return nil
-	}
-
-	return nil
-}
-
-// DeleteDirectory is a thin wrapper around an rm command. Done here as it is
-// expected to be reused often by many services.
-func (s ServiceAdapter) DeleteDirectory(ctx context.Context, dir string) error {
-	if _, err := s.RunCmd(ctx, "rm", []string{"-rf", fmt.Sprintf("'%s'", dir)}); err != nil {
-		return fmt.Errorf("could not delete directory, %w", err)
-	}
-	return nil
-}
-
-// Create directories is a thin wrapper around an mkdir command. Done here as it
-// is expected to be reused often by many services.
-func (s ServiceAdapter) CreateDirectories(ctx context.Context, dirs []string) error {
-	if _, err := s.RunCmd(ctx, "mkdir", append([]string{"-p"}, dirs...)); err != nil {
-		return fmt.Errorf("could not create directory, %w", err)
-	}
-	return nil
-}
-
-// ForceReconnectWithBackoff is a thin wrapper around DUT service's ForceReconnectWithBackoff.
-func (s ServiceAdapter) ForceReconnectWithBackoff(ctx context.Context) error {
-	log.Printf("<cros-provision>: ServiceAdaptor: ForceReconnectWithBackoff Start")
-
-	ctx, cancel := context.WithTimeout(ctx, 500*time.Second)
-	defer cancel()
-
-	expDelay := 1
-loop:
-	for {
-		select {
-		case <-ctx.Done():
-			return fmt.Errorf("could not force reconnect with backoff")
-		default:
-			f := func() error {
-				op, err := s.dutClient.ForceReconnect(ctx, &api.ForceReconnectRequest{})
-				if err != nil {
-					log.Printf("<cros-provision>: ServiceAdaptor: ForceReconnectWithBackoff ERROR %s", err)
-					return err
-				}
-
-				for !op.Done {
-					log.Printf("<cros-provision>: ServiceAdaptor: ForceReconnectWithBackoff !op.Done")
-					time.Sleep(1 * time.Second)
-				}
-
-				switch x := op.Result.(type) {
-				case *longrunning.Operation_Error:
-					log.Printf("<cros-provision>: ServiceAdaptor: ForceReconnectWithBackoff ignoring LRO ERROR %s", x.Error.Message)
-					return fmt.Errorf(x.Error.Message)
-				case *longrunning.Operation_Response:
-					log.Printf("<cros-provision>: ServiceAdaptor: ForceReconnectWithBackoff LRO RESPONSE")
-					return nil
-				default:
-					return fmt.Errorf("unknown longrunniong operation")
-				}
-			}
-			if err := f(); err == nil {
-				// Break out the loop now.
-				break loop
-			}
-		}
-		delay := expDelay
-		if delay < 16 {
-			expDelay = expDelay * 2
-		}
-		time.Sleep(time.Duration(delay) * time.Second)
-	}
-
-	log.Printf("<cros-provision>: ServiceAdaptor: ForceReconnectWithBackoff Success")
-
-	return nil
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/state_machine_interface.go b/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/state_machine_interface.go
deleted file mode 100644
index 7f3842f..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/state_machine_interface.go
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Service interfaces bases for state-machine construction
-package common_utils
-
-import (
-	"context"
-	"log"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"google.golang.org/protobuf/types/known/anypb"
-)
-
-// CommandInterface executes a specific step in a state. Note commands are
-//
-//	intended to interact with a ServiceInterface and as such will have
-//	side-effects.
-type CommandInterface interface {
-	//Execute runs the command
-	Execute(log *log.Logger) error
-
-	// Revert reverts the command
-	Revert() error
-
-	// GetErrorMessage returns a crafted error message in case of failure
-	GetErrorMessage() string
-
-	// GetStatus returns the proto status response for the message
-	GetStatus() api.InstallResponse_Status
-}
-
-// ServiceState is a single state representation.
-type ServiceState interface {
-	// Execute Runs the state
-	Execute(ctx context.Context, log *log.Logger) (*anypb.Any, api.InstallResponse_Status, error)
-	// Next gets the next state in the state machine
-	Next() ServiceState
-	// Name gets the fully qualified name of this state
-	Name() string
-}
-
-// ServiceInterface represents the state machine for this specific service installation.
-// It holds installation metadata and provides helpers, including the generator
-// of the first state for that installation.
-type ServiceInterface interface {
-	// GetFirstState returns the first state in this state machine
-	GetFirstState() ServiceState
-
-	// CleanupOnFailure "undoes" the service execution to the extent possible,
-	// removing temporary files, and, if feasible, reverting the run commands.
-	// CleanupOnFailure function will be called if any ServiceState returns an
-	// error when running Execute().
-	// |states| will include all ServiceStates that were run; naturally, all of
-	// them but last one would have succeeded to Execute().
-	// |executionErr| is the error returned by Execute() of the last (failed)
-	// ServiceState.
-	CleanupOnFailure(states []ServiceState, executionErr error) error
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/utils.go b/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/utils.go
deleted file mode 100644
index 00f154e..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/common-utils/utils.go
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2023 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// General utility related bits for provisioning.
-package common_utils
-
-import (
-	"context"
-	"fmt"
-	"log"
-	"time"
-
-	"go.chromium.org/chromiumos/config/go/longrunning"
-	"google.golang.org/protobuf/types/known/anypb"
-)
-
-const (
-	KvmDevicePath           = "/dev/kvm"
-	longrunningWaitInterval = time.Second * 1
-)
-
-func WaitLongRunningOp(ctx context.Context, log *log.Logger, operation *longrunning.Operation) (*anypb.Any, error) {
-	for !operation.GetDone() {
-		var err error
-		if err = ctx.Err(); err != nil {
-			return nil, fmt.Errorf("context deadline: %w", err)
-		}
-		log.Printf("\nPolling long running operation %v.", operation.GetName())
-		time.Sleep(longrunningWaitInterval)
-	}
-	switch result := operation.GetResult().(type) {
-	case *longrunning.Operation_Error:
-		return nil, fmt.Errorf(result.Error.Message)
-	case *longrunning.Operation_Response:
-		return result.Response, nil
-	default:
-		return nil, fmt.Errorf("unexpected result type for long running operation")
-	}
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/OWNERS b/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/OWNERS
deleted file mode 100644
index ea8fde6..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/OWNERS
+++ /dev/null
@@ -1,2 +0,0 @@
-jbettis@chromium.org
-tij@google.com
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/README.md b/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/README.md
deleted file mode 100644
index 8848642..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/README.md
+++ /dev/null
@@ -1,254 +0,0 @@
-# cros-fw-provision
-
-This directory contains cros-fw-provision: a service for preparing
-devices-under-test with specific application processor ("AP") and embedded
-controller ("EC") firmware ("fw") builds. Preparing devices with specific builds
-is called "provisioning".
-
-See go/cft-fw-provision-v2 for background.
-
-## Input proto
-
-The request to provision comes in as a chromiumos.test.api.InstallRequest with
-the metadata field populated with
-chromiumos.test.api.FirmwareProvisionInstallMetadata. The fields in
-firmware_config can be populated in these configurations:
-
-*   main_ro_payload - The AP RO and AP RW A/B will be updated with this image.
-    As a side effect, the EC RW will also be updated to the version embedded in
-    the AP RW image. The EC RO will remain untouched.
-*   main_rw_payload - The AP RW A/B will be updated with this image. As a side
-    effect, the EC RW will also be updated to the version embedded in the AP RW
-    image. The AP & EC RO will remain untouched.
-*   ec_ro_payload - The EC RO will be updated with this image. The AP RO/RW & EC
-    RW will be left untouched.
-*   ec_rw_payload - The EC RW from this image will be embedded into the AP RW
-    for A and B, and flashed to AP RW A/B.
-
-Here are some common combinations, and where the image comes from:
-
-Payloads                          | AP RO   | EC RO | AP RW   | EC RW   | Note
---------------------------------- | ------- | ----- | ------- | ------- | ----
-main_ro + ec_ro                   | main_ro | ec_ro | main_ro | main_ro | Typical for faft tests w/o EC branch
-main_ro + ec_ro + main_rw         | main_ro | ec_ro | main_rw | main_rw | Typical for FW Qual w/o EC branch
-main_ro + ec_ro + main_rw + ec_rw | main_ro | ec_ro | main_rw | ec_rw   | Typical for FW Qual w/ EC branch
-main_ro + ec_ro + ec_rw           | main_ro | ec_ro | main_ro | ec_rw   | Typical for faft tests w/ EC branch
-main_rw                           | -       | -     | main_rw | main_rw |
-main_rw + ec_rw                   | -       | -     | main_rw | ec_rw   |
-
-After the firmware is updated, the version numbers will be checked to ensure the
-update was successful. The AP firmware version for the inactive bank (A or B)
-will not be checked, only the active firmware.
-
-### Paths
-
-The paths in the payload fields above should be a gs path to the archive
-containing the image for the correct model. However, if the image is a
-firmware_from_source archive, the code will look first for a model specific file
-in the `gs://firmware-image-archive` bucket. I.e. If you are flashing a
-brya/omnigul DUT, then a url like
-`gs://chromeos-image-archive/firmware-brya-14505.B-branch/R100-14505.832.0-1-8730368903603296945/brya/firmware_from_source.tar.bz2`
-will search for
-`gs://firmware-image-archive/firmware-brya-14505.B/14505.832.0/omnigul.14505.832.0.tar.bz2`
-first, and if it is not found, extract `image-omnigul.bin` from the giant
-`firmware_from_source.tar.bz2` archive.
-
-## Launching
-
-A prebuilt cros-fw-provision will be available in the chroot. To launch it,
-execute, `cros-fw-provision server` or `cros-fw-provision cli`. `server` spins
-up a service and waits for a gRPC request to come over the network before
-provisioning starts. `cli` immediately executes the request, which is required
-to be passed in during launch.
-
-### Building locally
-
-See also go/cft-fw-provision-local-guide.
-
-To build and run locally:
-
-These example assume some vars are set in your shell:
-
-```
-BOARD=myBoard
-MODEL=myModel
-DUT_HOSTNAME=192.168.0.0
-D=localhost:2222 # Forwarded ssh port
-```
-
-Run the cros-dut server in the chroot
-
-```
-CACHE_SERVER=192.168.100.1
-~/chromiumos/src/platform/dev/fast_build.sh -b go.chromium.org/chromiumos/test/dut/cmd/cros-dut -o ~/go/bin/cros-dut && \
-~/go/bin/cros-dut -cache_address ${CACHE_SERVER?}:8082 -dut_address ${D?} -port 8123
-```
-
-Run the servo-nexus server from infra repo (outside chroot)
-
-```
-eval `~/infra/infra/go/env.py` && \
-cd ~/infra/infra/go/src/infra && \
-export CGO_ENABLED=0 && \
-go install go.chromium.org/infra/cros/cmd/cft/dut/cros-servod && \
-~/infra/infra/go/bin/cros-servod server -server_port 8124
-```
-
-If you are running with a local dut, you will need a cache server. Then set the
-CACHE_SERVER variable below with your IP as seen from the DUT, otherwise set the
-CACHE_SERVER variable to any cache server that is visible from the DUT.
-
-```
-docker run -d --rm -P --cap-add=NET_RAW --name visible-cache-server --expose 8082 -p 8082:8082 --volume $HOME/.config/:/root/.config --volume /tmp/local-cft/cacheserver:/tmp/cacheserver us-docker.pkg.dev/cros-registry/test-services/cacheserver:prod cacheserver -location /tmp/cacheserver -port 8082
-```
-
-Alternatively, you can build the cache server from source and run it.
-
-```
-sudo ufw allow 8082 # Open the port in the linux firewall.
-~/chromiumos/src/platform/dev/fast_build.sh -b go.chromium.org/chromiumos/prototytpe/cache/cmd/cacheserver -o ~/go/bin/cacheserver && ~/go/bin/cacheserver -port 8082
-```
-
-To find the cache server on a lab machine:
-
-```
-ssh $DUT_HOSTNAME 'for devserver in 192.168.100.1 100.115.168.190 10.128.176.210 100.115.21.212 100.115.245.199 100.115.245.200 100.115.219.131 100.115.219.132 100.115.219.133 100.115.219.134 100.115.219.137; do if curl -f --connect-timeout 3 "http://${devserver?}:8082/check_health" >/dev/null ; then echo CACHE_SERVER=${devserver?} ; fi; done'
-```
-
-Run cros-fw-provision inside chroot
-
-```
-CACHE_SERVER=192.168.100.1
-FW_IMAGE=$(gsutil ls -l gs://chromeos-image-archive/firmware-{brya,glados,oak,reef,${BOARD?}}*-branch/*/${BOARD?}/firmware_from_source.tar.bz2 | grep -v TOTAL | sort -k2 | tail -1 | awk '{print $3}')
-EC_BRANCH=$(gsutil ls -d gs://firmware-image-archive/firmware-ec-R* | tail -1)
-EC_IMAGE=$(gsutil ls -l ${EC_BRANCH}*/${BOARD}/firmware_from_source.tar.bz2 | grep -v TOTAL | sort -k2 | tail -1 | awk '{print $3}')
-cat >startup.json <<STARTUP
-{
-        "dut": {
-                "chromeos": {
-                        "dut_model": {
-                                "build_target": "${BOARD?}",
-                                "model_name": "${MODEL?}"
-                        },
-                        "servo": {
-                                "present": true,
-                                "servodAddress": {
-                                        "address": "localhost:${LOCAL_SERVO_SSH_PORT?}",
-                                        "port": ${SERVO_PORT?}
-                                },
-                                "serial": "${SERVO_SERIAL?}"
-                        }
-                },
-                "cache_server": {
-                        "address": {
-                                "address": "${CACHE_SERVER?}",
-                                "port": 8082
-                        }
-                }
-        },
-        "dut_server": {
-                "address": "localhost",
-                "port": 8123
-        },
-        "servoNexusAddr": {
-                "address": "localhost",
-                "port": 8124
-        }
-}
-STARTUP
-# Typical case for tip of branch testing
-cat >install.json <<INSTALL
-{
-        "metadata": {
-                "@type": "chromiumos.test.api.FirmwareProvisionInstallMetadata",
-                "firmware_config": {
-                        "mainRoPayload": {
-                                "firmwareImagePath": {
-                                        "hostType": "GS",
-                                        "path": "${FW_IMAGE?}"
-                                }
-                        },
-                        "ecRoPayload": {
-                                "firmwareImagePath": {
-                                        "hostType": "GS",
-                                        "path": "${EC_IMAGE?}"
-                                }
-                        },
-                        "ecRwPayload": {
-                                "firmwareImagePath": {
-                                        "hostType": "GS",
-                                        "path": "${EC_IMAGE?}"
-                                }
-                        }
-                }
-        }
-}
-INSTALL
-# Typical case for legacy devices
-cat >install.json <<INSTALL
-{
-        "metadata": {
-                "@type": "chromiumos.test.api.FirmwareProvisionInstallMetadata",
-                "firmware_config": {
-                        "mainRoPayload": {
-                                "firmwareImagePath": {
-                                        "hostType": "GS",
-                                        "path": "${FW_IMAGE?}"
-                                }
-                        },
-                        "ecRoPayload": {
-                                "firmwareImagePath": {
-                                        "hostType": "GS",
-                                        "path": "${FW_IMAGE?}"
-                                }
-                        }
-                }
-        }
-}
-INSTALL
-~/chromiumos/src/platform/dev/fast_build.sh -b go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision \
-        -o ~/go/bin/cros-fw-provision && \
-        ~/go/bin/cros-fw-provision cli -startup startup.json -install install.json
-```
-
-If you want to test specific versions like a firmware qual would, this command
-should help you find the path:
-
-```
-BOARD=rex
-VERSION=16151.2.19
-gsutil ls -d gs://{firmware,chromeos}-image-archive/firmware-{ec,${BOARD}}*/*${VERSION}*
-```
-
-## Dependencies
-
-cros-fw-provision expects cros-cache, and either cros-dut or cros-servod, to be
-running.
-
-In the lab, the cache server should already be up. Local runs of
-cros-fw-provision will need the cache server started.
-
-`cros-dut` is needed if provisioning directly.
-
-`cros-servod` is needed if provisioning over
-[servo]("https://chromium.googlesource.com/chromiumos/third_party/hdctools/+/HEAD/README.md").
-
-## Testing
-
-Run the test with fast_build.sh:
-
-```
-~/chromiumos/src/platform/dev/fast_build.sh -t go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/...
-```
-
-### Generate coverage report
-
-Build the ebuild with coverage enabled:
-
-```
-cros workon --host start cros-fw-provision
-sudo USE="coverage" FEATURES="test noclean" emerge cros-fw-provision
-```
-
-Then open the html file at
-`/var/lib/chromeos/package-artifacts/dev-util/cros-fw-provision-9999/cros-artifacts/coverage_logs/cros-fw-provision.html`
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/cli/abstract_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/cli/abstract_command.go
deleted file mode 100644
index 1b6c4bf..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/cli/abstract_command.go
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Responsible for the abstraction layer representing each command grouping
-package cli
-
-import (
-	"errors"
-	"fmt"
-	"io"
-	"log"
-	"os"
-	"path/filepath"
-)
-
-// AbstractCommand represents a CLI grouping (e.g.: run as server, run as CLI, etc)
-type AbstractCommand interface {
-	// Run runs the command
-	Run() error
-
-	// Is checks if the string is representative of the command
-	Is(string) bool
-
-	// Init is an initializer for the command given the trailing args
-	Init([]string) error
-
-	// Name is the command name (for debugging)
-	Name() string
-}
-
-// SetUpLog sets up the golang default logging, and returns the logger
-func SetUpLog(dir string) (*log.Logger, error) {
-	if err := os.MkdirAll(dir, 0755); err != nil {
-		return nil, fmt.Errorf("failed to create directory %v: %v", dir, err)
-	}
-	lfp := filepath.Join(dir, "log.txt")
-	lf, err := os.Create(lfp)
-	if err != nil {
-		return nil, fmt.Errorf("failed to create file %v: %v", lfp, err)
-	}
-	newLog := log.Default()
-	newLog.SetOutput(io.MultiWriter(lf, os.Stderr))
-	newLog.SetPrefix("<cros-fw-provision>")
-	newLog.SetFlags(log.LstdFlags | log.Lshortfile | log.Lmsgprefix)
-	return newLog, nil
-}
-
-// ParseInputs is a helper method which parses input arguments. It is
-// effectively a factory method.
-func ParseInputs() (AbstractCommand, error) {
-	if len(os.Args) < 1 {
-		return nil, errors.New("CLI arguments must be specified")
-	}
-
-	cmds := []AbstractCommand{
-		NewServerCommand(),
-		NewCLICommand(),
-	}
-
-	subcommand := ""
-	if len(os.Args) > 1 {
-		subcommand = os.Args[1]
-	}
-	options := []string{}
-
-	for _, cmd := range cmds {
-		options = append(options, cmd.Name())
-		if cmd.Is(subcommand) {
-			if err := cmd.Init(os.Args[2:]); err != nil {
-				return nil, fmt.Errorf("failed to initialize cli command, %s", err)
-			}
-			return cmd, nil
-		}
-	}
-
-	return nil, fmt.Errorf("unknown subcommand: %s. \nOptions are: [%s]", subcommand, options)
-
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/cli/cft-service-connect.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/cli/cft-service-connect.go
deleted file mode 100644
index 9d8e92b..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/cli/cft-service-connect.go
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Provides functionality to connect to other CFT services.
-package cli
-
-import (
-	"github.com/pkg/errors"
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"google.golang.org/grpc"
-)
-
-func connectToDutServer(dutServAddr string) (api.DutServiceClient, error) {
-	dutConn, err := grpc.Dial(dutServAddr, grpc.WithInsecure())
-	if err != nil {
-		return nil, errors.Wrap(err, "failed to connect to Dut Server")
-	}
-	return api.NewDutServiceClient(dutConn), nil
-}
-
-func connectToCrosServod(crosServodAddr string) (api.ServodServiceClient, error) {
-	servodConn, err := grpc.Dial(crosServodAddr, grpc.WithInsecure())
-	if err != nil {
-		return nil, errors.Wrap(err, "failed to connect to cros-servod")
-	}
-	servodServiceClient := api.NewServodServiceClient(servodConn)
-	return servodServiceClient, nil
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/cli/cli_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/cli/cli_command.go
deleted file mode 100644
index b36aaa1..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/cli/cli_command.go
+++ /dev/null
@@ -1,151 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Represents the CLI command grouping
-package cli
-
-import (
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"context"
-	"flag"
-	"fmt"
-	"log"
-	"strings"
-
-	"github.com/pkg/errors"
-
-	"go.chromium.org/chromiumos/config/go/longrunning"
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-const (
-	// version is the version info of this command. It is filled in during emerge.
-	version             = "<unknown>"
-	defaultLogDirectory = "/tmp/cros-fw-provision/"
-	defaultPort         = 80
-)
-
-// CLI command executed the provisioning as a CLI
-type CLICommand struct {
-	logFileName string
-	log         *log.Logger
-	startupFile string
-	installFile string
-	flagSet     *flag.FlagSet
-}
-
-func NewCLICommand() *CLICommand {
-	cc := &CLICommand{
-		flagSet: flag.NewFlagSet("cli", flag.ContinueOnError),
-	}
-
-	cc.flagSet.StringVar(&cc.logFileName, "log-path", defaultLogDirectory, fmt.Sprintf("Path to record execution logs. Default value is %s", defaultLogDirectory))
-	cc.flagSet.StringVar(&cc.startupFile, "startup", "", "Specify the StartUp ProvisionStartupRequest jsonproto input file.")
-	cc.flagSet.StringVar(&cc.installFile, "install", "", "Specify the Install InstallRequest jsonproto input file.")
-	return cc
-}
-
-func (cc *CLICommand) Is(group string) bool {
-	return strings.HasPrefix(group, "cli")
-}
-
-func (cc *CLICommand) Name() string {
-	return "cli"
-}
-
-func (cc *CLICommand) Init(args []string) error {
-	err := cc.flagSet.Parse(args)
-	if err != nil {
-		return err
-	}
-
-	cc.log, err = SetUpLog(cc.logFileName)
-	if err != nil {
-		return err
-	}
-
-	if err = cc.validate(); err != nil {
-		return err
-	}
-
-	return nil
-}
-
-// Logger returns the log
-func (cc *CLICommand) Logger() *log.Logger {
-	return cc.log
-}
-
-// validate checks if inputs are ok
-func (cc *CLICommand) validate() error {
-	if cc.startupFile == "" {
-		return errors.New("startup file not specified, use -startup")
-	}
-
-	if cc.installFile == "" {
-		return errors.New("install file not specified, use -install")
-	}
-	return nil
-}
-
-// Run starts the firmware provision and does a single provision.
-func (cc *CLICommand) Run() error {
-	cc.log.Printf("Running CLI Mode (V2) - Firmware Provision:")
-
-	ps, closer, err := NewFWProvisionServer(0, cc.log)
-	defer closer()
-	if err != nil {
-		cc.log.Println("Failed to create provision server: ", err)
-		return err
-	}
-
-	startupProto, err := common_utils.ParseProvisionStartupRequest(cc.startupFile)
-	if err != nil {
-		return errors.Wrap(err, "unable to parse ProvisionStartupRequest proto")
-	}
-	installProto, err := common_utils.ParseInstallRequest(cc.installFile)
-	if err != nil {
-		return errors.Wrap(err, "unable to parse InstallRequest proto")
-	}
-
-	ctx := context.Background()
-	startupRes, err := ps.StartUp(ctx, startupProto)
-	if err != nil {
-		return errors.Wrap(err, "failed to call StartUp")
-	}
-	cc.log.Printf("StartUp complete - %s", startupRes.String())
-
-	op, err := ps.Install(ctx, installProto)
-	if err != nil {
-		return errors.Wrap(err, "failed to call Install")
-	}
-	cc.log.Printf("Install LRO - %s", op.String())
-	op, err = ps.manager.WaitOperation(ctx, &longrunning.WaitOperationRequest{
-		Name: op.Name,
-	})
-	if err != nil {
-		return errors.Wrap(err, "failed to wait operation")
-	}
-	cc.log.Printf("Install complete - %s", op.String())
-	if !op.Done {
-		return errors.Errorf("operation not done: %s", op.String())
-	}
-	if op.GetError() != nil {
-		return errors.Errorf("installed failed: %s", op.GetError().String())
-	}
-	if op.GetResponse() == nil {
-		return errors.Errorf("no response returned: %s", op)
-	}
-	installResp := new(api.InstallResponse)
-	if !op.GetResponse().MessageIs(installResp) {
-		return errors.Errorf("unexpected response: %s", op.GetResponse().String())
-	}
-	if err := op.GetResponse().UnmarshalTo(installResp); err != nil {
-		return errors.Wrap(err, "failed to unmarshal response")
-	}
-	if installResp.Status != api.InstallResponse_STATUS_SUCCESS {
-		return errors.Errorf("install failed: %v", installResp.Status)
-	}
-	return nil
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/cli/server.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/cli/server.go
deleted file mode 100644
index d64a984..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/cli/server.go
+++ /dev/null
@@ -1,260 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// GRPC Server impl
-package cli
-
-import (
-	"context"
-	"fmt"
-	"log"
-	"net"
-	"net/url"
-	"runtime/debug"
-
-	"go.chromium.org/chromiumos/lro"
-	"go.chromium.org/chromiumos/test/util/portdiscovery"
-
-	"github.com/pkg/errors"
-	"go.chromium.org/chromiumos/config/go/test/api"
-	api1 "go.chromium.org/chromiumos/config/go/test/lab/api"
-
-	firmwareservice "go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/service"
-	state_machine "go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/state-machine"
-
-	"go.chromium.org/chromiumos/config/go/longrunning"
-	"google.golang.org/grpc"
-	"google.golang.org/protobuf/types/known/anypb"
-)
-
-// FWProvisionServer is the top level class for the firmware provisioning server.
-type FWProvisionServer struct {
-	// dutServer provides an interface to manipulate DUT via cros-dut
-	// service. Its address may be specified either when server is created,
-	// or later in user's ProvisionFirmwareRequest
-	dutServer api.DutServiceClient
-
-	// servoClient provides an interface to manipulate DUT via cros-servod
-	// service. Its address may be specified either when server is created,
-	// or later in user's ProvisionFirmwareRequest
-	servoClient api.ServodServiceClient
-	servoConfig *api1.Servo
-
-	log        *log.Logger
-	listenPort int
-
-	manager *lro.Manager
-
-	cacheServer url.URL
-
-	board string
-	model string
-}
-
-func ipEndpointToHostPort(i *api1.IpEndpoint) (string, error) {
-	if len(i.GetAddress()) == 0 {
-		return "", errors.New("IpEndpoint missing address")
-	}
-	if i.GetPort() == 0 {
-		return "", errors.New("IpEndpoint missing port")
-	}
-	return fmt.Sprintf("%v:%v", i.GetAddress(), i.GetPort()), nil
-}
-
-// NewFWProvisionServer returns a new FWProvisionServer, a closer function, and an error.
-func NewFWProvisionServer(listenPort int, log *log.Logger) (*FWProvisionServer, func(), error) {
-	manager := lro.New()
-	return &FWProvisionServer{
-		listenPort: listenPort,
-		log:        log,
-		manager:    manager,
-	}, manager.Close, nil
-}
-
-// Start starts the grpc server.
-func (ps *FWProvisionServer) Start() error {
-	l, err := net.Listen("tcp", fmt.Sprintf(":%d", ps.listenPort))
-	if err != nil {
-		return fmt.Errorf("failed to create listener at %d", ps.listenPort)
-	}
-	server := grpc.NewServer()
-	api.RegisterGenericProvisionServiceServer(server, ps)
-	longrunning.RegisterOperationsServer(server, ps.manager)
-	ps.log.Println("provisionservice listen to request at ", l.Addr().String())
-
-	// Write port number to ~/.cftmeta for go/cft-port-discovery
-	err = portdiscovery.WriteServiceMetadata("provision", l.Addr().String(), ps.log)
-	if err != nil {
-		ps.log.Println("Warning: error when writing to metadata file: ", err)
-	}
-
-	return server.Serve(l)
-}
-
-// StartUp handles the initialization of the GenericProvisionService by passing in parameters through the ProvisionStartupRequest.
-func (ps *FWProvisionServer) StartUp(ctx context.Context, req *api.ProvisionStartupRequest) (*api.ProvisionStartupResponse, error) {
-	ps.log.Println("Received api.ProvisionStartupRequest: ", req)
-	response := api.ProvisionStartupResponse{}
-
-	if err := ps.validateStartupRequest(req); err != nil {
-		response.Status = api.ProvisionStartupResponse_STATUS_INVALID_REQUEST
-		return &response, err
-	}
-
-	ps.board = req.Dut.GetChromeos().DutModel.BuildTarget
-	ps.model = req.Dut.GetChromeos().DutModel.ModelName
-
-	dutServAddr, err := ipEndpointToHostPort(req.DutServer)
-	if err != nil {
-		response.Status = api.ProvisionStartupResponse_STATUS_INVALID_REQUEST
-		return &response, errors.Wrap(err, "failed to parse IpEndpoint of Dut Server")
-	}
-	dutServer, err := connectToDutServer(dutServAddr)
-	if err != nil {
-		response.Status = api.ProvisionStartupResponse_STATUS_STARTUP_FAILED
-		return &response, errors.Wrap(err, "connect to dut server")
-	}
-	ps.dutServer = dutServer
-
-	cacheServerAddr, err := ipEndpointToHostPort(req.Dut.GetCacheServer().GetAddress())
-	if err != nil {
-		response.Status = api.ProvisionStartupResponse_STATUS_INVALID_REQUEST
-		return &response, errors.Wrap(err, "failed to parse IpEndpoint of cache server")
-	}
-	ps.cacheServer.Scheme = "http"
-	ps.cacheServer.Host = cacheServerAddr
-	if req.Dut.GetCacheServer().GetAddress().Address == "localhost" {
-		response.Status = api.ProvisionStartupResponse_STATUS_INVALID_REQUEST
-		return &response, errors.New("ProvisionStartupRequest: cache_server_address must be visible from DUT, i.e. no localhost")
-	}
-
-	if req.ServoNexusAddr != nil && req.GetDut().GetChromeos().GetServo().GetPresent() {
-		servoServerAddr, err := ipEndpointToHostPort(req.ServoNexusAddr)
-		if err != nil {
-			response.Status = api.ProvisionStartupResponse_STATUS_INVALID_REQUEST
-			return &response, errors.Wrap(err, "failed to parse IpEndpoint of Servo Nexus")
-		}
-		servoClient, err := connectToCrosServod(servoServerAddr)
-		if err != nil {
-			response.Status = api.ProvisionStartupResponse_STATUS_STARTUP_FAILED
-			return &response, errors.Wrap(err, "connect to Servo Nexus")
-		}
-		ps.servoClient = servoClient
-		ps.servoConfig = req.GetDut().GetChromeos().GetServo()
-	}
-
-	response.Status = api.ProvisionStartupResponse_STATUS_SUCCESS
-	return &response, nil
-}
-
-func (ps *FWProvisionServer) validateStartupRequest(req *api.ProvisionStartupRequest) error {
-	if req == nil {
-		return errors.New("ProvisionStartupRequest is required")
-	}
-	if req.Dut == nil {
-		return errors.New("ProvisionStartupRequest: dut is required")
-	}
-	if req.Dut.GetChromeos() == nil {
-		return errors.New("ProvisionStartupRequest: dut.chromeos is required")
-	}
-	if req.Dut.GetChromeos().DutModel == nil {
-		return errors.New("ProvisionStartupRequest: dut.chromeos.dut_model is required")
-	}
-	if req.Dut.GetChromeos().DutModel.BuildTarget == "" {
-		return errors.New("ProvisionStartupRequest: dut.chromeos.dut_model.build_target is required")
-	}
-	if req.Dut.GetChromeos().DutModel.ModelName == "" {
-		return errors.New("ProvisionStartupRequest: dut.chromeos.dut_model.model_name is required")
-	}
-	if req.DutServer == nil {
-		return errors.New("ProvisionStartupRequest: dut_server is required")
-	}
-	if req.Dut.GetCacheServer() == nil {
-		return errors.New("ProvisionStartupRequest: dut.cache_server is required")
-	}
-	if req.Dut.GetCacheServer().GetAddress() == nil {
-		return errors.New("ProvisionStartupRequest: dut.cache_server.address is required")
-	}
-	if req.Dut.GetCacheServer().GetAddress().Address == "" {
-		return errors.New("ProvisionStartupRequest: dut.cache_server.address.address is required")
-	}
-	if req.Dut.GetCacheServer().GetAddress().Port == 0 {
-		return errors.New("ProvisionStartupRequest: dut.cache_server.address.port is required")
-	}
-	return nil
-}
-
-// Install starts the firmware provisioning in the background, and returns a long running operation or an error.
-func (ps *FWProvisionServer) Install(ctx context.Context, req *api.InstallRequest) (*longrunning.Operation, error) {
-	ps.log.Println("Received api.InstallCrosRequest: ", req)
-	op := ps.manager.NewOperation()
-
-	go ps.doProvision(context.Background(), req, op.Name)
-
-	return op, nil
-}
-
-func (ps *FWProvisionServer) doProvision(ctx context.Context, req *api.InstallRequest, lroName string) {
-	response := api.InstallResponse{}
-	defer func() {
-		if r := recover(); r != nil {
-			stack := string(debug.Stack())
-			ps.log.Printf("Panic detected: %+v stack: %s", r, stack)
-			response.Status = api.InstallResponse_STATUS_UPDATE_FIRMWARE_FAILED
-			err, ok := r.(error)
-			if ok {
-				response.Message = err.Error()
-			} else {
-				response.Message = fmt.Sprintf("panic: %+v", r)
-			}
-		}
-		ps.manager.SetResult(lroName, &response)
-		ps.log.Printf("Provision set OP Response to:%s ", response.String())
-	}()
-
-	fwService, err := firmwareservice.NewFirmwareService(ctx, ps.dutServer, ps.servoClient, ps.cacheServer,
-		ps.board, ps.model, false, req, ps.servoConfig)
-	if err != nil {
-		ps.log.Printf("Failed to initialize Firmware Service: %v", err)
-		provError, ok := err.(*firmwareservice.FirmwareProvisionError)
-		if ok {
-			response.Status = provError.Status
-			response.Message = provError.Err.Error()
-		} else {
-			response.Status = api.InstallResponse_STATUS_INVALID_REQUEST
-			response.Message = err.Error()
-		}
-		return
-	}
-	// Clean up the temporary directories on the DUT.
-	defer fwService.DeleteArchiveDirectories()
-
-	response.Status = api.InstallResponse_STATUS_SUCCESS
-	var firmwareResponse *api.FirmwareProvisionResponse
-	// Execute state machine
-	cs := state_machine.NewFirmwarePrepareState(fwService)
-	for cs != nil {
-		var metadata *api.FirmwareProvisionResponse
-		metadata, response.Status, err = cs.Execute(ctx, ps.log)
-		if metadata != nil {
-			firmwareResponse = metadata
-		}
-		if err != nil {
-			ps.log.Printf("State machine failed: %v", err)
-			break
-		}
-		cs = cs.Next()
-	}
-	// If the state machine didn't return metadata, get one from the fwService.
-	if firmwareResponse == nil {
-		firmwareResponse = fwService.GetVersions()
-	}
-	if err != nil {
-		response.Message = err.Error()
-	}
-	response.Metadata, err = anypb.New(firmwareResponse)
-	if err != nil {
-		ps.log.Printf("Failed to create AnyPb: %v", err)
-	}
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/cli/server_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/cli/server_command.go
deleted file mode 100644
index f937fd8..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/cli/server_command.go
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Represents the server command grouping
-package cli
-
-import (
-	"flag"
-	"fmt"
-	"log"
-	"strings"
-)
-
-const (
-	DefaultPort         = 8080
-	DefaultLogDirectory = "/tmp/cros-fw-provision/"
-)
-
-// ServerCommand executed the provisioning as a Server
-type ServerCommand struct {
-	log         *log.Logger
-	logFilename string
-
-	port int
-
-	flagSet *flag.FlagSet
-}
-
-func NewServerCommand() *ServerCommand {
-	sc := &ServerCommand{
-		flagSet: flag.NewFlagSet("server", flag.ContinueOnError),
-	}
-
-	sc.flagSet.IntVar(&sc.port, "port", DefaultPort, fmt.Sprintf("Specify the port for the server. Default value %d.", DefaultPort))
-	sc.flagSet.StringVar(&sc.logFilename, "log-path", DefaultLogDirectory, fmt.Sprintf("Path to record execution logs. Default value is %s", DefaultLogDirectory))
-	return sc
-}
-
-func (sc *ServerCommand) Is(group string) bool {
-	return strings.HasPrefix(group, "server")
-}
-
-func (sc *ServerCommand) Name() string {
-	return "server"
-}
-
-func (sc *ServerCommand) Init(args []string) error {
-	err := sc.flagSet.Parse(args)
-	if err != nil {
-		return err
-	}
-
-	sc.log, err = SetUpLog(sc.logFilename)
-	if err != nil {
-		return fmt.Errorf("unable to set up logs: %s", err)
-	}
-
-	if err = sc.validateCLIInputs(); err != nil {
-		return err
-	}
-
-	return nil
-}
-
-// validateCLIInputs ensures the CLI input values are valid
-func (cc *ServerCommand) validateCLIInputs() error {
-	return nil
-}
-
-func (sc *ServerCommand) Run() error {
-	sc.log.Printf("running server mode:")
-
-	ps, closer, err := NewFWProvisionServer(sc.port, sc.log)
-	defer closer()
-	if err != nil {
-		sc.log.Println("failed to create provision: ", err)
-		return err
-	}
-
-	if err := ps.Start(); err != nil {
-		sc.log.Println("failed server execution: ", err)
-		return err
-	}
-
-	return nil
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/cros_fw_provision_test.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/cros_fw_provision_test.go
deleted file mode 100644
index 8baf66a..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/cros_fw_provision_test.go
+++ /dev/null
@@ -1,680 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package main
-
-import (
-	"context"
-	"fmt"
-	"io"
-	"log"
-	"net/url"
-	"os"
-	"os/exec"
-	"path"
-	"strings"
-	"testing"
-
-	longrunning "go.chromium.org/chromiumos/config/go/longrunning"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/cli"
-	firmwareservice "go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/service"
-	state_machine "go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/state-machine"
-	"go.chromium.org/chromiumos/test/provision/v2/mock_api"
-
-	"github.com/golang/mock/gomock"
-	conf "go.chromium.org/chromiumos/config/go"
-	build_api "go.chromium.org/chromiumos/config/go/build/api"
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"google.golang.org/grpc"
-	"google.golang.org/protobuf/encoding/prototext"
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/types/known/anypb"
-)
-
-type curlMatcher struct {
-	target      string
-	fileMatcher gomock.Matcher
-	log         *log.Logger
-}
-
-func newCurlMatcher(target string, fileMatcher gomock.Matcher, log *log.Logger) curlMatcher {
-	return curlMatcher{
-		target:      target,
-		fileMatcher: fileMatcher,
-		log:         log,
-	}
-}
-func (c curlMatcher) Matches(x interface{}) bool {
-	req, ok := x.(*api.ExecCommandRequest)
-	if ok {
-		if req.Command != "curl" {
-			return false
-		}
-		if len(req.Args) != 5 {
-			return false
-		}
-		if req.Args[0] != "-f" || req.Args[1] != "-S" || req.Args[2] != "-o" || req.Args[3] != c.target {
-			return false
-		}
-		idx := strings.Index(req.Args[4], "?file=")
-		if idx < 0 {
-			return false
-		}
-		filename, err := url.QueryUnescape(req.Args[4][idx+6:])
-		if err != nil {
-			panic(err)
-		}
-		// Remove trailing quote
-		filename = filename[:len(filename)-1]
-		return c.fileMatcher.Matches(filename)
-	}
-	return false
-}
-
-func (c curlMatcher) String() string {
-	return fmt.Sprintf("curl -f -S -o %s url?file=(%s)", c.target, c.fileMatcher)
-}
-
-type rpcMsg struct {
-	msg proto.Message
-}
-
-func (r *rpcMsg) Matches(msg interface{}) bool {
-	m, ok := msg.(proto.Message)
-	if !ok {
-		return false
-	}
-	return proto.Equal(m, r.msg)
-}
-
-func (r *rpcMsg) String() string {
-	return fmt.Sprintf("is %s", prototext.Format(r.msg))
-}
-
-func (r *rpcMsg) Got(got interface{}) string {
-	return prototext.Format(got.(proto.Message))
-}
-
-type dutServiceExecCommandClient struct {
-	Response *api.ExecCommandResponse
-	grpc.ClientStream
-}
-
-func (x *dutServiceExecCommandClient) Recv() (*api.ExecCommandResponse, error) {
-	if x.Response != nil {
-		tmp := x.Response
-		x.Response = nil
-		return tmp, nil
-	}
-	return nil, io.EOF
-}
-
-func newResponse(pb *api.ExecCommandResponse) *dutServiceExecCommandClient {
-	return &dutServiceExecCommandClient{
-		Response: pb,
-	}
-}
-
-type dutServiceFetchFileClient struct {
-	Response *api.File
-	grpc.ClientStream
-}
-
-func (x *dutServiceFetchFileClient) Recv() (*api.File, error) {
-	if x.Response != nil {
-		tmp := x.Response
-		x.Response = nil
-		return tmp, nil
-	}
-	return nil, io.EOF
-}
-
-func newFileResponse(pb *api.File) *dutServiceFetchFileClient {
-	return &dutServiceFetchFileClient{
-		Response: pb,
-	}
-}
-
-func TestDetailedRequestSSHStates(t *testing.T) {
-	fakeGSPath := "gs://chromeos-image-archive/board-firmware-branch/R123-12345.0.0/board/firmware_from_source.tar.bz2"
-
-	makeRequest := func(main_rw, main_ro, ec_ro, ec_rw bool) *api.InstallRequest {
-		fakePayload := &build_api.FirmwarePayload{FirmwareImage: &build_api.FirmwarePayload_FirmwareImagePath{FirmwareImagePath: &conf.StoragePath{HostType: conf.StoragePath_GS, Path: fakeGSPath}}}
-		FirmwareConfig := build_api.FirmwareConfig{}
-		if main_rw {
-			FirmwareConfig.MainRwPayload = fakePayload
-		}
-		if main_ro {
-			FirmwareConfig.MainRoPayload = fakePayload
-		}
-		if ec_ro {
-			FirmwareConfig.EcRoPayload = fakePayload
-		}
-		if ec_rw {
-			FirmwareConfig.EcRwPayload = fakePayload
-		}
-		any, err := anypb.New(&api.FirmwareProvisionInstallMetadata{
-			FirmwareConfig: &FirmwareConfig,
-		})
-		if err != nil {
-			t.Fatal("any.new failed: ", err)
-		}
-
-		req := &api.InstallRequest{
-			Metadata: any,
-		}
-
-		return req
-	}
-
-	checkStateName := func(st state_machine.ServiceState, expectedStateName string) {
-		if st == nil {
-			if len(expectedStateName) > 0 {
-				t.Fatalf("expected state %v. got: nil state", expectedStateName)
-			}
-			return
-		}
-		stateName := st.Name()
-		if stateName != expectedStateName {
-			t.Fatalf("expected state %v. got: %v", expectedStateName, stateName)
-		}
-	}
-
-	type TestCase struct {
-		// inputs
-		mainRw, mainRo, ecRo, ecRw bool
-		configYAML                 string
-		// These are the first files that will exist in the archive.
-		apImageWithinArchive   string
-		ecImageWithinArchive   string
-		npcxImageWithinArchive string
-		ecConfigWithinArchive  string
-		// expected outputs
-		updateRw, updateRo     bool
-		expectConstructorError bool
-		expectedResponse       *api.FirmwareProvisionResponse
-	}
-
-	fullVersion := &api.FirmwareProvisionResponse{
-		ApRoVersion: "roversion",
-		ApRwVersion: "rwversion",
-		EcRoVersion: "ecroversion",
-		EcRwVersion: "ecrwversion",
-	}
-	roOnlyVersion := &api.FirmwareProvisionResponse{
-		ApRoVersion: "roversion",
-		ApRwVersion: "roversioninrw",
-		EcRoVersion: "ecroversion",
-		EcRwVersion: "ecroversioninrw",
-	}
-
-	testCases := []TestCase{
-		{ /*in*/ false, false, false, false, "", "image.bin", "ec.bin", "npcx_monitor.bin", "ec.config" /*out*/, false, false /*err*/, true, fullVersion},
-		{ /*in*/ true, false, false, false, "", "image.bin", "ec.bin", "npcx_monitor.bin", "ec.config" /*out*/, true, false /*err*/, false, fullVersion},
-		{ /*in*/ false, true, false, false, "", "image.bin", "ec.bin", "npcx_monitor.bin", "ec.config" /*out*/, false, true /*err*/, false, roOnlyVersion},
-		{ /*in*/ false, false, true, false, "", "image.bin", "ec.bin", "npcx_monitor.bin", "ec.config" /*out*/, false, true /*err*/, false, roOnlyVersion},
-		{ /*in*/ false, true, true, false, "", "image.bin", "ec.bin", "npcx_monitor.bin", "ec.config" /*out*/, false, true /*err*/, false, roOnlyVersion},
-		{ /*in*/ true, true, true, false, "", "image.bin", "ec.bin", "npcx_monitor.bin", "ec.config" /*out*/, true, true /*err*/, false, fullVersion},
-		{ /*in*/ true, true, false, false, "", "image.bin", "ec.bin", "npcx_monitor.bin", "ec.config" /*out*/, true, true /*err*/, false, fullVersion},
-		{ /*in*/ true, true, true, false, `{
-			"chromeos": {
-				"configs": [{
-					"firmware": {
-						"build-targets": {
-							"coreboot": "fromcoreboot",
-							"ec": "fromec",
-							"zephyr-ec": "fromzephyr"
-						},
-						"image-name": "fromimagename"
-					},
-					"name": "test_model"
-				}]
-			}
-		}`, "image-fromcoreboot.bin", "fromcoreboot/ec.bin", "fromcoreboot/npcx_monitor.bin", "fromcoreboot/ec.config" /*out*/, true, true /*err*/, false, fullVersion},
-	}
-
-	log, _ := cli.SetUpLog(cli.DefaultLogDirectory)
-
-	for _, testCase := range testCases {
-		// Set up the mock.
-		ctrl := gomock.NewController(t)
-		dsc := mock_api.NewMockDutServiceClient(ctrl)
-
-		// Create FirmwareService.
-		ctx := context.Background()
-		req := makeRequest(testCase.mainRw, testCase.mainRo, testCase.ecRo, testCase.ecRw)
-		log.Printf("  Test Case: %#v\n  Request: {%s}", testCase, req.String())
-		cacheServer := url.URL{
-			Scheme: "http",
-			Host:   "1.2.3.4:5678",
-		}
-		fws, err := firmwareservice.NewFirmwareService(
-			ctx,
-			dsc,
-			nil,
-			cacheServer,
-			"test_board",
-			"test_model",
-			false,
-			req, nil,
-		)
-		// Check if init error is expected/got.
-		if err != nil {
-			if testCase.expectConstructorError {
-				continue
-			}
-			t.Fatalf("failed to create FirmwareService with test case %#v: %v", testCase, err)
-		}
-		if err == nil && testCase.expectConstructorError {
-			t.Fatalf("expected constructor error for test case %#v. got: %v", testCase, err)
-		}
-		// Check expected states.
-		if testCase.updateRo != fws.UpdateRo() {
-			t.Fatalf("test case %#v expects updateRo to be %v. got: %v.", testCase, testCase.updateRo, fws.UpdateRo())
-		}
-		if testCase.updateRw != fws.UpdateRw() {
-			t.Fatalf("test case %#v expects updateRw to be %v. got: %v.", testCase, testCase.updateRw, fws.UpdateRw())
-		}
-
-		// Start with the first state of the service.
-		st := state_machine.NewFirmwarePrepareState(fws)
-		// Confirm state name is Prepare.
-		checkStateName(st, state_machine.PrepareStateName)
-
-		// Set mock expectations.
-		if testCase.configYAML == "" {
-			gomock.InOrder(
-				dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-					Command: "true",
-				}}).MinTimes(1).Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{}}), nil),
-				dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-					Command: "crosid",
-				}}).MinTimes(1).Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{}}), nil),
-				dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-					Args: []string{"[", "-e", "/usr/share/chromeos-config/yaml/config.yaml", "]", "&&", "echo", "-n", "1", "||", "echo", "-n", "0"},
-				}}).MinTimes(1).Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{}, Stdout: []byte("0")}), nil),
-			)
-		} else {
-			td := t.TempDir()
-			t.Logf("Writing %s", path.Join(td, "config.yaml"))
-			if err := os.WriteFile(path.Join(td, "config.yaml"), []byte(testCase.configYAML), 0666); err != nil {
-				t.Fatal("Failed to write config.yaml: ", err)
-			}
-			if out, err := exec.Command("tar", "-c", "--mode=a+rw", "--gzip", "-C", td, "-f", path.Join(td, "config.yaml.tar.gz"), "config.yaml").CombinedOutput(); err != nil {
-				t.Fatalf("Failed to tar -config.yaml: %v\n%s", err, string(out))
-			}
-			yamlTar, err := os.ReadFile(path.Join(td, "config.yaml.tar.gz"))
-			if err != nil {
-				t.Fatal("Failed to read config.yaml.tar.gz: ", err)
-			}
-			gomock.InOrder(
-				dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-					Command: "true",
-				}}).MinTimes(1).Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{}}), nil),
-				dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-					Command: "crosid",
-				}}).MinTimes(1).Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{}}), nil),
-				dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-					Args: []string{"[", "-e", "/usr/share/chromeos-config/yaml/config.yaml", "]", "&&", "echo", "-n", "1", "||", "echo", "-n", "0"},
-				}}).Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{}, Stdout: []byte("1")}), nil),
-				dsc.EXPECT().FetchFile(gomock.Any(), &api.FetchFileRequest{
-					File: "/usr/share/chromeos-config/yaml/config.yaml",
-				}).Return(newFileResponse(&api.File{File: yamlTar}), nil),
-			)
-		}
-		stagingURL := "'http://1.2.3.4:5678/stage/?archive_url=gs%3A%2Fchromeos-image-archive%2Fboard-firmware-branch%2FR123-12345.0.0%2Fboard&files=firmware_from_source.tar.bz2'"
-		mkdirCall := dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-			Command: "mktemp",
-			Args:    []string{"-d", "--tmpdir=/var/tmp", "'cros-fw-provision.XXXXXXXXX.board'"},
-		}}).Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{}, Stdout: []byte("/var/tmp/some TempDir\n")}), nil)
-
-		if testCase.ecRo {
-			dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-				Command: "ectool",
-				Args:    []string{"flashprotect"},
-			}}).Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{Status: 0}, Stdout: []byte("Flash protect flags: 0x0\n")}), nil)
-			dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-				Command: "mkdir",
-				Args:    []string{"-p", "'/var/tmp/some TempDir'"},
-			}}).Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{}}), nil)
-			dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-				Command: "test",
-				Args:    []string{"-f", "'/var/tmp/some TempDir/ec.bin'"},
-			}}).Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{Status: 1}}), nil)
-			stagingCall := dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-				Command: "curl",
-				Args:    []string{"-f", "-S", stagingURL},
-			}}).MinTimes(1).Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{}}), nil)
-			dsc.EXPECT().ExecCommand(gomock.Any(), newCurlMatcher("'/var/tmp/some TempDir/ec.bin'", gomock.Eq("test_board/ec.bin"), log)).
-				After(stagingCall).After(mkdirCall).MaxTimes(1).
-				Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{Status: 1}, Stderr: []byte("The requested URL returned error: 404\n")}), nil)
-			dsc.EXPECT().ExecCommand(gomock.Any(), newCurlMatcher("'/var/tmp/some TempDir/ec.bin'", gomock.Eq("test_model/ec.bin"), log)).
-				After(stagingCall).After(mkdirCall).MaxTimes(1).
-				Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{Status: 1}, Stderr: []byte("The requested URL returned error: 404\n")}), nil)
-			dsc.EXPECT().ExecCommand(gomock.Any(), newCurlMatcher("'/var/tmp/some TempDir/ec.bin'", gomock.Eq(testCase.ecImageWithinArchive), log)).
-				After(stagingCall).After(mkdirCall).Times(1).
-				Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{}}), nil)
-			dsc.EXPECT().ExecCommand(gomock.Any(), newCurlMatcher("'/var/tmp/some TempDir/npcx_monitor.bin'", gomock.Eq(testCase.npcxImageWithinArchive), log)).
-				After(stagingCall).After(mkdirCall).Times(1).
-				Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{}}), nil)
-			dsc.EXPECT().ExecCommand(gomock.Any(), newCurlMatcher("'/var/tmp/some TempDir/ec.config'", gomock.Eq(testCase.ecConfigWithinArchive), log)).
-				After(stagingCall).After(mkdirCall).Times(1).
-				Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{}}), nil)
-		}
-		if testCase.mainRo {
-			dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-				Command: "which",
-				Args:    []string{"ifdtool"},
-			}}).MinTimes(1).Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{Status: 1}}), nil)
-			stagingCall := dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-				Command: "curl",
-				Args:    []string{"-f", "-S", stagingURL},
-			}}).MinTimes(1).Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{}}), nil)
-			dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-				Command: "test",
-				Args:    []string{"-f", "'/var/tmp/some TempDir/bios.bin'"},
-			}}).Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{Status: 1}}), nil)
-			dsc.EXPECT().ExecCommand(gomock.Any(), newCurlMatcher("'/var/tmp/some TempDir/bios.bin'", gomock.Eq("image-test_model.bin"), log)).
-				After(stagingCall).After(mkdirCall).MaxTimes(1).
-				Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{Status: 1}, Stderr: []byte("The requested URL returned error: 404\n")}), nil)
-			dsc.EXPECT().ExecCommand(gomock.Any(), newCurlMatcher("'/var/tmp/some TempDir/bios.bin'", gomock.Eq("image-test_board.bin"), log)).
-				After(stagingCall).After(mkdirCall).MaxTimes(1).
-				Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{Status: 1}, Stderr: []byte("The requested URL returned error: 404\n")}), nil)
-			dsc.EXPECT().ExecCommand(gomock.Any(), newCurlMatcher("'/var/tmp/some TempDir/bios.bin'", gomock.Eq(testCase.apImageWithinArchive), log)).
-				After(stagingCall).After(mkdirCall).Times(1).
-				Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{}}), nil)
-		}
-		if testCase.mainRw {
-			stagingCall := dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-				Command: "curl",
-				Args:    []string{"-f", "-S", stagingURL},
-			}}).MinTimes(1).Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{}}), nil)
-			dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-				Command: "test",
-				Args:    []string{"-f", "'/var/tmp/some TempDir/bios.bin'"},
-			}}).Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{Status: 1}}), nil)
-			dsc.EXPECT().ExecCommand(gomock.Any(), newCurlMatcher("'/var/tmp/some TempDir/bios.bin'", gomock.Eq("image-test_model.bin"), log)).
-				After(stagingCall).After(mkdirCall).MaxTimes(1).
-				Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{Status: 1}, Stderr: []byte("The requested URL returned error: 404\n")}), nil)
-			dsc.EXPECT().ExecCommand(gomock.Any(), newCurlMatcher("'/var/tmp/some TempDir/bios.bin'", gomock.Eq("image-test_board.bin"), log)).
-				After(stagingCall).After(mkdirCall).MaxTimes(1).
-				Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{Status: 1}, Stderr: []byte("The requested URL returned error: 404\n")}), nil)
-			dsc.EXPECT().ExecCommand(gomock.Any(), newCurlMatcher("'/var/tmp/some TempDir/bios.bin'", gomock.Eq(testCase.apImageWithinArchive), log)).
-				After(stagingCall).After(mkdirCall).Times(1).
-				Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{}}), nil)
-		}
-		if testCase.ecRw {
-			stagingCall := dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-				Command: "curl",
-				Args:    []string{"-f", "-S", stagingURL},
-			}}).MinTimes(1).Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{}}), nil)
-			dsc.EXPECT().ExecCommand(gomock.Any(), newCurlMatcher("'/var/tmp/some TempDir/ec.bin'", gomock.Eq("test_board/ec.bin"), log)).
-				After(stagingCall).After(mkdirCall).MaxTimes(1).
-				Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{Status: 1}, Stderr: []byte("The requested URL returned error: 404\n")}), nil)
-			dsc.EXPECT().ExecCommand(gomock.Any(), newCurlMatcher("'/var/tmp/some TempDir/ec.bin'", gomock.Eq("test_model/ec.bin"), log)).
-				After(stagingCall).After(mkdirCall).MaxTimes(1).
-				Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{Status: 1}, Stderr: []byte("The requested URL returned error: 404\n")}), nil)
-			dsc.EXPECT().ExecCommand(gomock.Any(), newCurlMatcher("'/var/tmp/some TempDir/ec.bin'", gomock.Eq(testCase.ecImageWithinArchive), log)).
-				After(stagingCall).After(mkdirCall).Times(1).
-				Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{}}), nil)
-			dsc.EXPECT().ExecCommand(gomock.Any(), newCurlMatcher("'/var/tmp/some TempDir/npcx_monitor.bin'", gomock.Eq(testCase.npcxImageWithinArchive), log)).
-				After(stagingCall).After(mkdirCall).Times(1).
-				Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{}}), nil)
-			dsc.EXPECT().ExecCommand(gomock.Any(), newCurlMatcher("'/var/tmp/some TempDir/ec.config'", gomock.Eq(testCase.ecConfigWithinArchive), log)).
-				After(stagingCall).After(mkdirCall).Times(1).
-				Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{}}), nil)
-		}
-
-		unexpected := dsc.EXPECT().ExecCommand(gomock.Any(), gomock.Any()).AnyTimes().Do(func(ctx context.Context, in *api.ExecCommandRequest, opts ...grpc.CallOption) interface{} {
-			t.Fatalf("Unexpected ExecCommand: %s", in.String())
-			return newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{Status: 1}, Stderr: []byte("Unmocked call\n"), Stdout: []byte("Unmocked call\n")})
-		})
-
-		// Execute the state and proceed.
-		_, _, err = st.Execute(ctx, log)
-		if err != nil {
-			t.Fatal(err)
-		}
-		st = st.Next()
-
-		unexpected.Times(0)
-
-		if testCase.updateRo {
-			// Confirm state name is RO.
-			checkStateName(st, state_machine.UpdateRoStateName)
-
-			// Set mock expectations.
-			expectedFutilityArgs := []string{"update", "--mode=recovery"}
-			expectedFutilityPyArgs := "'update', '--mode=recovery'"
-			expectedFutilityImageArgs := []string{}
-			if testCase.ecRo {
-				expectedFutilityImageArgs = append(expectedFutilityImageArgs, "'--ec_image=/var/tmp/some TempDir/ec.bin'")
-				expectedFutilityPyArgs += ", '--ec_image=/var/tmp/some TempDir/ec.bin'"
-			}
-			if testCase.mainRo {
-				expectedFutilityImageArgs = append(expectedFutilityImageArgs, "'--image=/var/tmp/some TempDir/bios.bin'")
-				expectedFutilityPyArgs += ", '--image=/var/tmp/some TempDir/bios.bin'"
-			}
-			expectedFutilityArgs = append(expectedFutilityArgs, expectedFutilityImageArgs...)
-			expectedFutilityArgs = append(expectedFutilityArgs, "--wp=0")
-			expectedFutilityPyArgs += ", '--wp=0'"
-			expectedFutilityManifestArgs := append([]string{"update", "--manifest"}, expectedFutilityImageArgs...)
-			gomock.InOrder(
-				dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-					Command: "futility",
-					Args:    expectedFutilityManifestArgs,
-				}}).Times(1).Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{}, Stdout: []byte(`{
-					"default": {
-						"host": {
-							"versions": { "ro": "roversion", "rw": "roversioninrw" }
-						},
-						"ec": {
-							"versions": { "ro": "ecroversion", "rw": "ecroversioninrw" }
-						}
-					}
-				}`)}), nil),
-			)
-			if testCase.mainRo {
-				gomock.InOrder(
-					dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-						Command: "cbfstool",
-						Args:    []string{"'/var/tmp/some TempDir/bios.bin'", "extract", "-r", "FW_MAIN_A", "-n", "ecrw.hash", "-f", "'/var/tmp/some TempDir/bios.bin-ecrw.hash'"},
-					}}).Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{}}), nil),
-					dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-						Command: "od",
-						Args:    []string{"-A", "n", "-t", "x1", "'/var/tmp/some TempDir/bios.bin-ecrw.hash'"},
-					}}).Return(newResponse(&api.ExecCommandResponse{
-						ExitInfo: &api.ExecCommandResponse_ExitInfo{}, Stdout: []byte(" 38 73 52 6f 4f f3 af 90 62 68 7c 30 91 13 09 ee\n 12 a5 ce ec 23 55 19 a8 ba f6 cd be 63 61 ba 92\n")}), nil),
-				)
-			}
-			if testCase.ecRo {
-				gomock.InOrder(
-					dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-						Command: "cat",
-						Args:    []string{">", "'/var/tmp/some TempDir/futility.py'"},
-						Stdin: []byte(fmt.Sprintf("#!/usr/bin/env python3\n\nimport subprocess\n\n"+
-							"with open(\"/var/tmp/some TempDir/futility.log\", \"wb\", buffering=0) as outFile:\n"+
-							"  rc = subprocess.run([\"futility\", %s], stdout=outFile, stderr=outFile, check=False, bufsize=0)\n"+
-							"  outFile.write(f\"EXIT CODE: {rc.returncode}\\n\".encode(\"utf-8\"))\n  outFile.flush()\n"+
-							"  subprocess.run([\"sync\", \"-d\", \"/var/tmp\", \"/usr/local/tmp\"])\n  subprocess.run([\"reboot\"])\n", expectedFutilityPyArgs)),
-					}}).Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{}}), nil),
-					dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-						Command: "bash",
-						Args:    []string{"-c", "'nohup python3 '\"'\"'/var/tmp/some TempDir/futility.py'\"'\"' </dev/null >&'\"'\"'/var/tmp/some TempDir/futility.start'\"'\"' & exit'"},
-					}}).Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{}}), nil),
-					dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-						Command: "cat",
-						Args:    []string{"'/var/tmp/some TempDir/futility.log'"},
-					}}).Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{}, Stdout: []byte("EXIT CODE: 0\n")}), nil),
-					dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-						Command: "rm",
-						Args:    []string{"-f", "'/var/tmp/some TempDir/futility.log'"},
-					}}).Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{}}), nil),
-				)
-			} else {
-				gomock.InOrder(
-					dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-						Command: "futility",
-						Args:    expectedFutilityArgs,
-					}}).Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{}}), nil),
-				)
-			}
-
-			// Execute the state and proceed.
-			_, _, err := st.Execute(ctx, log)
-			if err != nil {
-				t.Fatal(err)
-			}
-			st = st.Next()
-		}
-
-		if testCase.updateRw {
-			// Confirm state name is RW.
-			checkStateName(st, state_machine.UpdateRwStateName)
-
-			// Set mock expectations.
-			expectedFutilityArgs := []string{"update", "--mode=recovery", "'--image=/var/tmp/some TempDir/bios.bin'", "--wp=1"}
-			expectedFutilityManifestArgs := []string{"update", "--manifest", "'--image=/var/tmp/some TempDir/bios.bin'"}
-			gomock.InOrder(
-				dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-					Command: "futility",
-					Args:    expectedFutilityManifestArgs,
-				}}).Times(1).Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{}, Stdout: []byte(`{
-					"default": {
-						"host": {
-							"versions": { "ro": "wrongro", "rw": "rwversion" }
-						}
-					}
-				}`)}), nil),
-				dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-					Command: "cbfstool",
-					Args:    []string{"'/var/tmp/some TempDir/bios.bin'", "extract", "-r", "FW_MAIN_A", "-n", "ecrw.hash", "-f", "'/var/tmp/some TempDir/bios.bin-ecrw.hash'"},
-				}}).Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{}}), nil),
-				dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-					Command: "od",
-					Args:    []string{"-A", "n", "-t", "x1", "'/var/tmp/some TempDir/bios.bin-ecrw.hash'"},
-				}}).Return(newResponse(&api.ExecCommandResponse{
-					ExitInfo: &api.ExecCommandResponse_ExitInfo{}, Stdout: []byte(" 38 73 52 6f 4f f3 af 90 62 68 7c 30 91 13 09 ee\n 12 a5 ce ec 23 55 19 a8 ba f6 cd be 63 61 ba 92\n")}), nil),
-				dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-					Command: "futility",
-					Args:    expectedFutilityArgs,
-				}}).Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{}}), nil),
-			)
-
-			/* OD output:
-			    38 73 52 6f 4f f3 af 90 62 68 7c 30 91 13 09 ee
-			    12 a5 ce ec 23 55 19 a8 ba f6 cd be 63 61 ba 92
-
-			    ectool output:
-			   status:  done
-			   type:    SHA-256
-			   offset:  0x00040000
-			   size:    0x00033b80
-			   hash:    3873526f4ff3af9062687c30911309ee12a5ceec235519a8baf6cdbe6361ba92
-			*/
-
-			// Execute the state and proceed.
-			_, _, err := st.Execute(ctx, log)
-			if err != nil {
-				t.Fatal(err)
-			}
-			st = st.Next()
-		}
-
-		// Confirm state name is postinstall.
-		checkStateName(st, state_machine.PostInstallStateName)
-		// Set mock expectations.
-		gomock.InOrder(
-			dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-				Command: "rm",
-				Args:    []string{"-rf", "'/var/tmp/some TempDir'"},
-			}}).Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{}}), nil),
-		)
-		if !testCase.ecRo || testCase.updateRw {
-			gomock.InOrder(
-				dsc.EXPECT().Restart(gomock.Any(), gomock.Any()).Return(&longrunning.Operation{Done: true}, nil),
-				dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-					Command: "true",
-				}}).Return(nil, fmt.Errorf("ssh timeout")),
-				dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-					Command: "true",
-				}}).Return(newResponse(&api.ExecCommandResponse{ExitInfo: &api.ExecCommandResponse_ExitInfo{}}), nil),
-			)
-		}
-		if testCase.updateRo && testCase.updateRw {
-			gomock.InOrder(
-				dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-					Command: "crossystem",
-					Args:    []string{"ro_fwid", "fwid"},
-				}}).Return(newResponse(&api.ExecCommandResponse{
-					ExitInfo: &api.ExecCommandResponse_ExitInfo{}, Stdout: []byte("roversion rwversion")}), nil),
-				dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-					Command: "ectool",
-					Args:    []string{"version"},
-				}}).Return(newResponse(&api.ExecCommandResponse{
-					ExitInfo: &api.ExecCommandResponse_ExitInfo{}, Stdout: []byte("RO version: ecroversion\nRW version: ecrwversion\n")}), nil),
-				dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-					Command: "ectool",
-					Args:    []string{"echash"},
-				}}).Return(newResponse(&api.ExecCommandResponse{
-					ExitInfo: &api.ExecCommandResponse_ExitInfo{}, Stdout: []byte("status:  done\ntype:    SHA-256\noffset:  0x00040000\nsize:    0x00033b80\nhash:    3873526f4ff3af9062687c30911309ee12a5ceec235519a8baf6cdbe6361ba92\n")}), nil),
-			)
-		} else if testCase.updateRo {
-			gomock.InOrder(
-				dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-					Command: "crossystem",
-					Args:    []string{"ro_fwid", "fwid"},
-				}}).Return(newResponse(&api.ExecCommandResponse{
-					ExitInfo: &api.ExecCommandResponse_ExitInfo{}, Stdout: []byte("roversion roversioninrw")}), nil),
-				dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-					Command: "ectool",
-					Args:    []string{"version"},
-				}}).Return(newResponse(&api.ExecCommandResponse{
-					ExitInfo: &api.ExecCommandResponse_ExitInfo{}, Stdout: []byte("RO version: ecroversion\nRW version: ecroversioninrw\n")}), nil),
-				dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-					Command: "ectool",
-					Args:    []string{"echash"},
-				}}).Return(newResponse(&api.ExecCommandResponse{
-					ExitInfo: &api.ExecCommandResponse_ExitInfo{}, Stdout: []byte("status:  done\ntype:    SHA-256\noffset:  0x00040000\nsize:    0x00033b80\nhash:    3873526f4ff3af9062687c30911309ee12a5ceec235519a8baf6cdbe6361ba92\n")}), nil),
-			)
-		} else if testCase.updateRw {
-			gomock.InOrder(
-				dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-					Command: "crossystem",
-					Args:    []string{"ro_fwid", "fwid"},
-				}}).Return(newResponse(&api.ExecCommandResponse{
-					ExitInfo: &api.ExecCommandResponse_ExitInfo{}, Stdout: []byte("roversion rwversion")}), nil),
-				dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-					Command: "ectool",
-					Args:    []string{"version"},
-				}}).Return(newResponse(&api.ExecCommandResponse{
-					ExitInfo: &api.ExecCommandResponse_ExitInfo{}, Stdout: []byte("RO version: ecroversion\nRW version: ecrwversion\n")}), nil),
-				dsc.EXPECT().ExecCommand(gomock.Any(), &rpcMsg{msg: &api.ExecCommandRequest{
-					Command: "ectool",
-					Args:    []string{"echash"},
-				}}).Return(newResponse(&api.ExecCommandResponse{
-					ExitInfo: &api.ExecCommandResponse_ExitInfo{}, Stdout: []byte("status:  done\ntype:    SHA-256\noffset:  0x00040000\nsize:    0x00033b80\nhash:    3873526f4ff3af9062687c30911309ee12a5ceec235519a8baf6cdbe6361ba92\n")}), nil),
-			)
-		}
-		// Execute the state and proceed.
-		response, _, err := st.Execute(ctx, log)
-		if err != nil {
-			t.Fatal(err)
-		}
-		st = st.Next()
-
-		// Confirm no states left.
-		checkStateName(st, "")
-
-		// Check for missing mock calls.
-		ctrl.Finish()
-
-		if response == nil {
-			response = fws.GetVersions()
-		}
-		if !proto.Equal(response, testCase.expectedResponse) {
-			t.Fatalf("Expected response, got %s, want %s", response.String(), testCase.expectedResponse.String())
-		}
-	}
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/main.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/main.go
index 9cea900..ee8a31d 100644
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/main.go
+++ b/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/main.go
@@ -5,20 +5,9 @@
 package main
 
 import (
-	"go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/cli"
 	"fmt"
-	"os"
 )
 
 func main() {
-	opt, err := cli.ParseInputs()
-	if err != nil {
-		fmt.Printf("unable to parse inputs: %s\n", err)
-		os.Exit(2)
-	}
-	err = opt.Run()
-	if err != nil {
-		fmt.Printf("cros-fw-provision failed: %v\n", err)
-		os.Exit(1)
-	}
+	fmt.Println("Code has been migrated to infra/infra. Please reach out to who/juahurta for any questions.")
 }
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/service/common.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/service/common.go
deleted file mode 100644
index 339ae82..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/service/common.go
+++ /dev/null
@@ -1,392 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-package firmwareservice
-
-import (
-	"context"
-	"fmt"
-	"log"
-	"net/url"
-	"path"
-	"regexp"
-	"strings"
-	"time"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-
-	"github.com/pkg/errors"
-)
-
-const curlExtractTimeout = 20 * time.Minute
-const futilityReadTimeout = 10 * time.Minute
-const swapEcRwTimeout = 5 * time.Minute
-
-// ImageArchiveMetadata will be the value of the map in which the key is the
-// gsPath, so we can avoid downloading/reprocessing same archives.
-type ImageArchiveMetadata struct {
-	ArchiveDir string
-}
-
-// GetFlashECScript finds flash_ec script locally and returns path to it.
-// If flash_ec is not found, download the latest version with git to |prefix|,
-// and return path to downloaded flash_ec.
-func GetFlashECScript(ctx context.Context, s common_utils.ServiceAdapterInterface, prefix string) (string, error) {
-	// flash_ec within checkout will have access to the dependencies/config files
-	preferredFlashEC := "~/chromiumos/src/platform/ec/util/flash_ec"
-	if preferredExists, err := s.PathExists(ctx, preferredFlashEC); preferredExists && err == nil {
-		return preferredFlashEC, nil
-	}
-
-	// find any other flash_ec
-	flashEC, err := s.RunCmd(ctx, "which", []string{"flash_ec"})
-	if len(flashEC) > 0 && err == nil {
-		// `which` found the script
-		return strings.TrimRight(flashEC, "\n"), nil
-	}
-
-	// donwload the platform/ec repo to get the flash_ec script
-	log.Println("flash_ec script not found, downloading")
-	_, err = s.RunCmd(ctx, "", []string{"cd " + prefix + ";", "git", "clone",
-		"https://chromium.googlesource.com/chromiumos/platform/ec", "ec-repo"})
-	if err != nil {
-		return "", errors.Wrap(err, "falied to checkout platform/ec repo")
-	}
-
-	// TODO: mv ec-repo to some location and try it before downloading.
-
-	return path.Join(prefix, "ec-repo", "util", "flash_ec"), nil
-}
-
-var curlErrorRe *regexp.Regexp = regexp.MustCompile(`The requested URL returned error: (\d+)`)
-
-// Escape escapes a string so it can be safely included as an argument in a shell command line.
-// The string is not modified if it can already be safely included.
-func Escape(s string) string {
-	if safeRE.MatchString(s) {
-		return s
-	}
-	return "'" + strings.Replace(s, "'", `'"'"'`, -1) + "'"
-}
-
-// RunDUTCommand runs a command on the DUT and returns stdout, stderr, and an error if it failed.
-// CAUTION: The args are concatenated with no quoting, so beware of spaces and shell chars in filenames.
-func RunDUTCommand(ctx context.Context, dut api.DutServiceClient, timeout time.Duration, cmd string, args []string, stdin []byte) (string, string, error) {
-	type execCmdResult struct {
-		response string
-		stderr   string
-		err      error
-	}
-
-	// Channel used to receive the result from ExecCommand function.
-	ch := make(chan execCmdResult, 1)
-
-	// Create a context with the specified timeout.
-	ctxTimeout, cancel := context.WithTimeout(ctx, timeout)
-	defer cancel()
-
-	log.Printf("RunDUTCommand START: %s %s", cmd, args)
-
-	// Start the execCmd function.
-	go func() {
-		req := api.ExecCommandRequest{
-			Command: cmd,
-			Args:    args,
-			Stdout:  api.Output_OUTPUT_PIPE,
-			Stderr:  api.Output_OUTPUT_PIPE,
-			Stdin:   stdin,
-		}
-		stream, err := dut.ExecCommand(ctx, &req)
-		if err != nil {
-			ch <- execCmdResult{err: fmt.Errorf("execution fail: %w", err)}
-			return
-		}
-		// Expecting single stream result
-		execCmdResponse, err := stream.Recv()
-		if err != nil {
-			ch <- execCmdResult{err: fmt.Errorf("execution single stream result: %w", err)}
-			return
-		}
-		if execCmdResponse.ExitInfo.Status != 0 {
-			err = fmt.Errorf("status:%v message:%v", execCmdResponse.ExitInfo.Status, execCmdResponse.ExitInfo.ErrorMessage)
-		}
-		ch <- execCmdResult{response: string(execCmdResponse.Stdout), stderr: string(execCmdResponse.Stderr), err: err}
-	}()
-
-	select {
-	case <-ctxTimeout.Done():
-		return "", "", fmt.Errorf("timeout %s reached", timeout)
-	case result := <-ch:
-		return result.response, result.stderr, result.err
-	}
-}
-
-// ExtractFile calls the cache server to extract a file to the DUT, and retries on 5xx http errors.
-// Returns false, nil on 404 errors. Returns an error on all other errors.
-func ExtractFile(ctx context.Context, dut api.DutServiceClient, url, destPath string) (bool, error) {
-	err := errors.New("unknown error")
-	for i := 1; i <= 5; i++ {
-		var stderr string
-		_, stderr, err = RunDUTCommand(ctx, dut, curlExtractTimeout, "curl", []string{"-f", "-S", "-o", fmt.Sprintf("'%s'", destPath), fmt.Sprintf("'%s'", url)}, nil)
-
-		if err != nil {
-			log.Printf("Failed to download %q: %s", url, string(stderr))
-			m := curlErrorRe.FindStringSubmatch(stderr)
-			log.Printf("result.stderr: %v", stderr)
-			log.Printf("Regex matched: %v", m)
-			if m != nil && len(m[1]) == 3 && m[1][0] == '5' {
-				// retry on 5xx errors
-				continue
-			}
-			if m != nil && string(m[1]) == "404" {
-				// return false on 404 errors
-				return false, nil
-			}
-			// Fail on all other errors
-			return false, errors.Wrapf(err, "curl failed: %s", stderr)
-		}
-		log.Printf("Extracted %q as %q", url, destPath)
-		return true, nil
-	}
-	return false, err
-}
-
-type ImageCandidate struct {
-	GSURL     string
-	Filenames []string
-}
-
-// A url like gs://chromeos-image-archive/firmware-brya-14505.B-branch/R100-14505.832.0-1-8730368903603296945/brya/firmware_from_source.tar.bz2
-// becomes gs://firmware-image-archive/firmware-brya-14505.B/14505.832.0/omnigul.14505.832.0.tar.bz2
-var legacyUrlRe = regexp.MustCompile(`gs://(?:chromeos|firmware)-image-archive/(firmware-\S+-[\d\.]+\.B)(?:-branch(?:-firmware)?)?/(?:R\d+-)?(\d+\.\d+\.\d+)[-\d]*/.*`)
-
-// The legacy builder (i.e. firmware-brya-14505.B) creates files using the coreboot name
-// gs://firmware-image-archive/firmware-brya-14505.B/14505.846.0/omnigul.14505.846.0.tar.bz2
-// gs://firmware-image-archive/firmware-brya-14505.B/14505.846.0/omnigul.EC.14505.846.0.tar.bz2
-
-// GetAPCandidateURLs returns a list of urls and files to extract. Try them in order.
-func GetAPCandidateURLs(ctx context.Context, gsPath string, fws *FirmwareService) ([]ImageCandidate, error) {
-	candidates := []ImageCandidate{}
-
-	// If the url matches legacyUrlRe, and we have a coreboot name, try the single target tarfile
-	m := legacyUrlRe.FindStringSubmatch(gsPath)
-	if m != nil && fws.CorebootName != "" {
-		candidates = append(candidates, ImageCandidate{
-			GSURL:     fmt.Sprintf("gs://firmware-image-archive/%[1]s/%[2]s/%[3]s.%[2]s.tar.bz2", m[1], m[2], fws.CorebootName),
-			Filenames: []string{fmt.Sprintf("image-%v.bin", fws.CorebootName)},
-		})
-	}
-
-	// Then fallback to the giant tarball.
-	filenames := []string{}
-	if fws.CorebootName != "" {
-		filenames = append(filenames, fmt.Sprintf("image-%v.bin", fws.CorebootName))
-	}
-	if len(fws.GetModel()) > 0 {
-		filenames = append(filenames, fmt.Sprintf("image-%v.bin", fws.GetModel()))
-	}
-	if len(fws.GetBoard()) > 0 {
-		filenames = append(filenames, fmt.Sprintf("image-%v.bin", fws.GetBoard()))
-	}
-	filenames = append(filenames, "image.bin")
-	filenames = append(filenames, "bios.bin")
-	candidates = append(candidates, ImageCandidate{
-		GSURL:     gsPath,
-		Filenames: filenames,
-	})
-	return candidates, nil
-}
-
-// GetECCandidateURLs returns a list of urls and files to extract. Try them in order.
-func GetECCandidateURLs(ctx context.Context, gsPath string, fws *FirmwareService) ([]ImageCandidate, error) {
-	candidates := []ImageCandidate{}
-
-	// If the url matches legacyUrlRe, and we have a legacy ec name, try the single target tarfile
-	m := legacyUrlRe.FindStringSubmatch(gsPath)
-	if m != nil && fws.LegacyECName != "" {
-		candidates = append(candidates, ImageCandidate{
-			GSURL:     fmt.Sprintf("gs://firmware-image-archive/%[1]s/%[2]s/%[3]s.EC.%[2]s.tar.bz2", m[1], m[2], fws.LegacyECName),
-			Filenames: []string{"ec.bin"},
-		})
-	}
-
-	// Then fallback to the giant tarball.
-	filenames := []string{}
-	if fws.LegacyECName != "" {
-		filenames = append(filenames, path.Join(fws.LegacyECName, "ec.bin"))
-	}
-	if len(fws.GetModel()) > 0 {
-		filenames = append(filenames, path.Join(fws.GetModel(), "ec.bin"))
-	}
-	if len(fws.GetBoard()) > 0 {
-		filenames = append(filenames, path.Join(fws.GetBoard(), "ec.bin"))
-	}
-	filenames = append(filenames, "ec.bin")
-	candidates = append(candidates, ImageCandidate{
-		GSURL:     gsPath,
-		Filenames: filenames,
-	})
-	return candidates, nil
-}
-
-// PickAndExtractMainImage uses provided list of |filesInArchive| to pick a main
-// image to use, extracts only it, and returns a path to extracted image.
-// board and model(aka variant) are optional.
-func PickAndExtractMainImage(ctx context.Context, dut api.DutServiceClient, imageMetadata ImageArchiveMetadata, gsPath string, fws *FirmwareService) (string, error) {
-	// Short circuit if we already downloaded the image
-	destPath := fmt.Sprintf("%s/bios.bin", imageMetadata.ArchiveDir)
-	_, _, err := RunDUTCommand(ctx, dut, curlExtractTimeout, "test", []string{"-f", fmt.Sprintf("'%s'", destPath)}, nil)
-	if err == nil {
-		log.Printf("File already downloaded: %s", destPath)
-		return destPath, nil
-	}
-	candidates, err := GetAPCandidateURLs(ctx, gsPath, fws)
-	if err != nil {
-		log.Printf("Failed to calculate candidates: %v", err)
-		return "", errors.Wrap(err, "failed to calculate candidates")
-	}
-	for _, candidate := range candidates {
-		log.Printf("Staging %q", candidate.GSURL)
-		url := createStageURL(ctx, candidate.GSURL, fws.CacheServer)
-		args := []string{"-f", "-S", fmt.Sprintf("'%s'", url.String())}
-		_, out, err := RunDUTCommand(ctx, dut, curlExtractTimeout, "curl", args, nil)
-		if err != nil {
-			log.Printf("Failed to stage %q: %v\n%s", candidate.GSURL, err, string(out))
-			return "", errors.Wrapf(err, "failed to stage %q", url.String())
-		}
-		log.Printf("Stage of %q success: %s", candidate.GSURL, string(out))
-		for _, filename := range candidate.Filenames {
-			log.Printf("Trying %q", filename)
-			url, err := createExtractURL(ctx, candidate.GSURL, filename, fws.CacheServer)
-			if err != nil {
-				return "", errors.Wrapf(err, "no url for %q", filename)
-			}
-			if ok, err := ExtractFile(ctx, dut, url.String(), destPath); err != nil {
-				return "", errors.Wrapf(err, "extract %q", filename)
-			} else if !ok {
-				log.Printf("%q not found", filename)
-				continue
-			}
-			return destPath, nil
-		}
-	}
-
-	return "", fmt.Errorf(`could not find an AP image in any of: %v.
-Specifying board and model may help`, candidates)
-}
-
-// PickAndExtractECImage uses provided list of |filesInArchive| to pick an EC
-// image to use, extracts only it, and returns a path to extracted image.
-// board and model(aka variant) are optional.
-func PickAndExtractECImage(ctx context.Context, dut api.DutServiceClient, imageMetadata ImageArchiveMetadata, gsPath string, fws *FirmwareService) (string, error) {
-	// Short circuit if we already downloaded the image
-	destPath := fmt.Sprintf("%s/ec.bin", imageMetadata.ArchiveDir)
-	_, _, err := RunDUTCommand(ctx, dut, curlExtractTimeout, "test", []string{"-f", fmt.Sprintf("'%s'", destPath)}, nil)
-	if err == nil {
-		log.Printf("File already downloaded: %s", destPath)
-		return destPath, nil
-	}
-	candidates, err := GetECCandidateURLs(ctx, gsPath, fws)
-	if err != nil {
-		log.Printf("Failed to calculate candidates: %v", err)
-		return "", errors.Wrap(err, "failed to calculate candidates")
-	}
-	for _, candidate := range candidates {
-		log.Printf("Staging %q", candidate.GSURL)
-		url := createStageURL(ctx, candidate.GSURL, fws.CacheServer)
-		args := []string{"-f", "-S", fmt.Sprintf("'%s'", url.String())}
-		_, out, err := RunDUTCommand(ctx, dut, curlExtractTimeout, "curl", args, nil)
-		if err != nil {
-			log.Printf("Failed to stage %q: %s", candidate.GSURL, string(out))
-			return "", errors.Wrapf(err, "failed to stage %q", url.String())
-		}
-		log.Printf("Stage of %q success: %s", candidate.GSURL, string(out))
-		for _, filename := range candidate.Filenames {
-			log.Printf("Trying %q", filename)
-			url, err := createExtractURL(ctx, candidate.GSURL, filename, fws.CacheServer)
-			if err != nil {
-				return "", errors.Wrapf(err, "no url for %q", filename)
-			}
-			if ok, err := ExtractFile(ctx, dut, url.String(), destPath); err != nil {
-				return "", errors.Wrapf(err, "extract %q", filename)
-			} else if !ok {
-				log.Printf("%q not found", filename)
-				continue
-			}
-			// Try to get npcx_monitor.bin also
-			npcxCandidate := strings.Replace(filename, "ec.bin", "npcx_monitor.bin", 1)
-			log.Printf("Trying %q", npcxCandidate)
-			url, err = createExtractURL(ctx, candidate.GSURL, npcxCandidate, fws.CacheServer)
-			if err != nil {
-				return "", errors.Wrapf(err, "no url for %q", npcxCandidate)
-			}
-			npcxPath := fmt.Sprintf("%s/npcx_monitor.bin", imageMetadata.ArchiveDir)
-			if ok, err := ExtractFile(ctx, dut, url.String(), npcxPath); err != nil {
-				return "", errors.Wrapf(err, "extract %q", npcxCandidate)
-			} else if !ok {
-				log.Printf("%q not found", npcxCandidate)
-			}
-			// Try to get ec.config also
-			ecConfigCandidate := strings.Replace(filename, "ec.bin", "ec.config", 1)
-			log.Printf("Trying %q", ecConfigCandidate)
-			url, err = createExtractURL(ctx, candidate.GSURL, ecConfigCandidate, fws.CacheServer)
-			if err != nil {
-				return "", errors.Wrapf(err, "no url for %q", ecConfigCandidate)
-			}
-			ecConfigPath := fmt.Sprintf("%s/ec.config", imageMetadata.ArchiveDir)
-			if ok, err := ExtractFile(ctx, dut, url.String(), ecConfigPath); err != nil {
-				return "", errors.Wrapf(err, "extract %q", ecConfigCandidate)
-			} else if !ok {
-				log.Printf("%q not found", ecConfigCandidate)
-			}
-			return destPath, nil
-		}
-	}
-	return "", fmt.Errorf(`could not find an EC image named any of: %v.
-Specifying board and model may help`, candidates)
-}
-
-// createStageURL returns the URL to stage a gsPath. Pass to curl on the DUT.
-func createStageURL(ctx context.Context, gsPath string, cacheServer url.URL) url.URL {
-	stagingURL := cacheServer
-	stagingURL.Path = "/stage/"
-	v := url.Values{}
-	v.Set("archive_url", path.Dir(gsPath))
-	v.Set("files", path.Base(gsPath))
-	stagingURL.RawQuery = v.Encode()
-	return stagingURL
-}
-
-// createExtractURL returns the URL to extract a file from a gsPath. Pass to curl on the DUT.
-func createExtractURL(ctx context.Context, gsPath, fileInArchive string, cacheServer url.URL) (url.URL, error) {
-	gsPathURL, err := url.Parse(gsPath)
-	if err != nil {
-		return url.URL{}, errors.Wrapf(err, "failed to parse %q", gsPath)
-	}
-	extractURL := cacheServer
-	extractURL.Path = fmt.Sprintf("/extract/%s%s", gsPathURL.Host, gsPathURL.Path)
-	v := url.Values{}
-	v.Set("file", fileInArchive)
-	extractURL.RawQuery = v.Encode()
-	return extractURL, nil
-}
-
-// SwapECRWImage switches the EC RW in the AP image with the specified image.
-// If the AP image path is blank, this will read the firmware from the flash.
-// Returns the path to the AP image.
-func SwapECRWImage(ctx context.Context, dut api.DutServiceClient, apImagePath, ecImagePath string) (string, error) {
-	if apImagePath == "" {
-		apImagePath = path.Join(path.Dir(ecImagePath), "swapped_bios.bin")
-		stdout, stderr, err := RunDUTCommand(ctx, dut, futilityReadTimeout, "futility", []string{"read", apImagePath}, nil)
-		if err != nil {
-			return "", errors.Wrapf(err, "futility read failed: %s %s", stdout, stderr)
-		}
-	}
-	stdout, stderr, err := RunDUTCommand(ctx, dut, swapEcRwTimeout, "/usr/share/vboot/bin/swap_ec_rw", []string{"--image", apImagePath, "--ec", ecImagePath}, nil)
-	if err != nil {
-		return "", errors.Wrapf(err, "swap_ec_rw failed: %s %s", stdout, stderr)
-	}
-
-	return apImagePath, nil
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/service/common_test.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/service/common_test.go
deleted file mode 100644
index 629fffb..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/service/common_test.go
+++ /dev/null
@@ -1,195 +0,0 @@
-// 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 firmwareservice
-
-import (
-	"context"
-	"testing"
-)
-
-func TestGetCandidateURLs(t *testing.T) {
-	// smallUrlPrefix := "gs://firmware-image-archive/firmware-brya-14505.B/14505.832.0"
-
-	type TestCase struct {
-		inputGsUrl           string
-		board                string
-		model                string
-		corebootName         string // firmware.build-targets.coreboot || firmware.image-name
-		legacyECName         string // firmware.build-targets.ec || firmware.build-targets.coreboot
-		standaloneECName     string // firmware.build-targets.ec || firmware.build-targets.zephyr-ec
-		expectedAPCandidates []ImageCandidate
-		expectedECCandidates []ImageCandidate
-	}
-
-	testCases := []TestCase{
-		{
-			inputGsUrl:       "gs://chromeos-image-archive/firmware-brya-14505.B-branch/R100-14505.832.0-1-8730368903603296945/brya/firmware_from_source.tar.bz2",
-			board:            "brya",
-			model:            "omniknight",
-			corebootName:     "omnigul",
-			legacyECName:     "omnigul",
-			standaloneECName: "omnigul",
-			expectedAPCandidates: []ImageCandidate{
-				{
-					GSURL:     "gs://firmware-image-archive/firmware-brya-14505.B/14505.832.0/omnigul.14505.832.0.tar.bz2",
-					Filenames: []string{"image-omnigul.bin"},
-				},
-				{
-					GSURL:     "gs://chromeos-image-archive/firmware-brya-14505.B-branch/R100-14505.832.0-1-8730368903603296945/brya/firmware_from_source.tar.bz2",
-					Filenames: []string{"image-omnigul.bin", "image-omniknight.bin", "image-brya.bin", "image.bin", "bios.bin"},
-				},
-			},
-			expectedECCandidates: []ImageCandidate{
-				{
-					GSURL:     "gs://firmware-image-archive/firmware-brya-14505.B/14505.832.0/omnigul.EC.14505.832.0.tar.bz2",
-					Filenames: []string{"ec.bin"},
-				},
-				{
-					GSURL:     "gs://chromeos-image-archive/firmware-brya-14505.B-branch/R100-14505.832.0-1-8730368903603296945/brya/firmware_from_source.tar.bz2",
-					Filenames: []string{"omnigul/ec.bin", "omniknight/ec.bin", "brya/ec.bin", "ec.bin"},
-				},
-			},
-		},
-		{
-			inputGsUrl:       "gs://firmware-image-archive/firmware-ec-R134-16181.3.B/16181.3.14/rex/firmware_from_source.tar.bz2",
-			board:            "rex",
-			model:            "karis",
-			corebootName:     "karis",
-			legacyECName:     "karis",
-			standaloneECName: "karis",
-			expectedAPCandidates: []ImageCandidate{
-				{
-					GSURL:     "gs://firmware-image-archive/firmware-ec-R134-16181.3.B/16181.3.14/karis.16181.3.14.tar.bz2",
-					Filenames: []string{"image-karis.bin"},
-				},
-				{
-					GSURL:     "gs://firmware-image-archive/firmware-ec-R134-16181.3.B/16181.3.14/rex/firmware_from_source.tar.bz2",
-					Filenames: []string{"image-karis.bin", "image-karis.bin", "image-rex.bin", "image.bin", "bios.bin"},
-				},
-			},
-			expectedECCandidates: []ImageCandidate{
-				{
-					GSURL:     "gs://firmware-image-archive/firmware-ec-R134-16181.3.B/16181.3.14/karis.EC.16181.3.14.tar.bz2",
-					Filenames: []string{"ec.bin"},
-				},
-				{
-					GSURL:     "gs://firmware-image-archive/firmware-ec-R134-16181.3.B/16181.3.14/rex/firmware_from_source.tar.bz2",
-					Filenames: []string{"karis/ec.bin", "karis/ec.bin", "rex/ec.bin", "ec.bin"},
-				},
-			},
-		},
-		{
-			inputGsUrl:       "gs://firmware-image-archive/firmware-ec-R134-16181.3.B/16181.3.14/karis.16181.3.14.tar.bz2",
-			board:            "rex",
-			model:            "karis",
-			corebootName:     "karis",
-			legacyECName:     "karis",
-			standaloneECName: "karis",
-			expectedAPCandidates: []ImageCandidate{
-				{
-					GSURL:     "gs://firmware-image-archive/firmware-ec-R134-16181.3.B/16181.3.14/karis.16181.3.14.tar.bz2",
-					Filenames: []string{"image-karis.bin"},
-				},
-				{
-					GSURL:     "gs://firmware-image-archive/firmware-ec-R134-16181.3.B/16181.3.14/karis.16181.3.14.tar.bz2",
-					Filenames: []string{"image-karis.bin", "image-karis.bin", "image-rex.bin", "image.bin", "bios.bin"},
-				},
-			},
-			expectedECCandidates: []ImageCandidate{
-				{
-					GSURL:     "gs://firmware-image-archive/firmware-ec-R134-16181.3.B/16181.3.14/karis.EC.16181.3.14.tar.bz2",
-					Filenames: []string{"ec.bin"},
-				},
-				{
-					GSURL:     "gs://firmware-image-archive/firmware-ec-R134-16181.3.B/16181.3.14/karis.16181.3.14.tar.bz2",
-					Filenames: []string{"karis/ec.bin", "karis/ec.bin", "rex/ec.bin", "ec.bin"},
-				},
-			},
-		},
-		{
-			inputGsUrl:       "gs://chromeos-image-archive/firmware-rex-15709.B-branch-firmware/R122-15709.59.0/rex/firmware_from_source.tar.bz2",
-			board:            "rex",
-			model:            "karis",
-			corebootName:     "karis",
-			legacyECName:     "karis",
-			standaloneECName: "karis",
-			expectedAPCandidates: []ImageCandidate{
-				{
-					GSURL:     "gs://firmware-image-archive/firmware-rex-15709.B/15709.59.0/karis.15709.59.0.tar.bz2",
-					Filenames: []string{"image-karis.bin"},
-				},
-				{
-					GSURL:     "gs://chromeos-image-archive/firmware-rex-15709.B-branch-firmware/R122-15709.59.0/rex/firmware_from_source.tar.bz2",
-					Filenames: []string{"image-karis.bin", "image-karis.bin", "image-rex.bin", "image.bin", "bios.bin"},
-				},
-			},
-			expectedECCandidates: []ImageCandidate{
-				{
-					GSURL:     "gs://firmware-image-archive/firmware-rex-15709.B/15709.59.0/karis.EC.15709.59.0.tar.bz2",
-					Filenames: []string{"ec.bin"},
-				},
-				{
-					GSURL:     "gs://chromeos-image-archive/firmware-rex-15709.B-branch-firmware/R122-15709.59.0/rex/firmware_from_source.tar.bz2",
-					Filenames: []string{"karis/ec.bin", "karis/ec.bin", "rex/ec.bin", "ec.bin"},
-				},
-			},
-		},
-	}
-	for _, testCase := range testCases {
-		t.Logf("Running testCase %+v", testCase)
-		actualCandidates, err := GetAPCandidateURLs(context.Background(), testCase.inputGsUrl, &FirmwareService{
-			board:            testCase.board,
-			model:            testCase.model,
-			CorebootName:     testCase.corebootName,
-			StandaloneECName: testCase.standaloneECName,
-			LegacyECName:     testCase.legacyECName,
-		})
-		if err != nil {
-			t.Errorf("GetAPCandidateURLs failed: %v", err)
-			continue
-		}
-		compareCandiates(t, "AP", actualCandidates, testCase.expectedAPCandidates)
-		actualCandidates, err = GetECCandidateURLs(context.Background(), testCase.inputGsUrl, &FirmwareService{
-			board:            testCase.board,
-			model:            testCase.model,
-			CorebootName:     testCase.corebootName,
-			StandaloneECName: testCase.standaloneECName,
-			LegacyECName:     testCase.legacyECName,
-		})
-		if err != nil {
-			t.Errorf("GetECCandidateURLs failed: %v", err)
-			continue
-		}
-		compareCandiates(t, "EC", actualCandidates, testCase.expectedECCandidates)
-	}
-}
-
-func compareCandiates(t *testing.T, imageType string, actualCandidates, expectedCandidates []ImageCandidate) {
-	for i, expected := range expectedCandidates {
-		if len(actualCandidates) <= i {
-			t.Errorf("[%s %d]: Missing candidate %v", imageType, i, expected)
-			continue
-		}
-		actual := actualCandidates[i]
-		if expected.GSURL != actual.GSURL {
-			t.Errorf("[%s %d]: Incorrect GSURL, got %q, want %q", imageType, i, actual.GSURL, expected.GSURL)
-		}
-		for f, expectedFilename := range expected.Filenames {
-			if len(actual.Filenames) <= f {
-				t.Errorf("[%s %d.%d]: Missing filename %v", imageType, i, f, expectedFilename)
-				continue
-			}
-			actualFilename := actual.Filenames[f]
-			if actualFilename != expectedFilename {
-				t.Errorf("[%s %d.%d]: Incorrect filename, got %q, want %q", imageType, i, f, actualFilename, expectedFilename)
-			}
-		}
-		for f := len(expected.Filenames); f < len(actual.Filenames); f += 1 {
-			t.Errorf("[%s %d.%d]: Extra filename %v", imageType, i, f, actual.Filenames[f])
-		}
-	}
-	for i := len(expectedCandidates); i < len(actualCandidates); i += 1 {
-		t.Errorf("[%s %d]: Extra candidate %v", imageType, i, actualCandidates[i])
-	}
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/service/errors.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/service/errors.go
deleted file mode 100644
index 7e810b5..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/service/errors.go
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-package firmwareservice
-
-import (
-	"fmt"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type FirmwareProvisionError struct {
-	Status api.InstallResponse_Status
-	Err    error
-}
-
-func (fe *FirmwareProvisionError) Error() string {
-	return fmt.Sprintf("%v: %v", fe.Status.String(), fe.Err)
-}
-
-func InvalidRequestErr(err error) *FirmwareProvisionError {
-	return &FirmwareProvisionError{
-		Status: api.InstallResponse_STATUS_INVALID_REQUEST,
-		Err:    err,
-	}
-}
-
-func UnreachablePreProvisionErr(err error) *FirmwareProvisionError {
-	return &FirmwareProvisionError{
-		Status: api.InstallResponse_STATUS_DUT_UNREACHABLE_PRE_PROVISION,
-		Err:    err,
-	}
-}
-
-func UpdateFirmwareFailedErr(err error) *FirmwareProvisionError {
-	return &FirmwareProvisionError{
-		Status: api.InstallResponse_STATUS_UPDATE_FIRMWARE_FAILED,
-		Err:    err,
-	}
-}
-
-func FirmwareMismatchPostProvisionErr(err error) *FirmwareProvisionError {
-	return &FirmwareProvisionError{
-		Status: api.InstallResponse_STATUS_FIRMWARE_MISMATCH_POST_FIRMWARE_UPDATE,
-		Err:    err,
-	}
-}
-
-func UnreachablePostProvisionErr(err error) *FirmwareProvisionError {
-	return &FirmwareProvisionError{
-		Status: api.InstallResponse_STATUS_DUT_UNREACHABLE_POST_FIRMWARE_UPDATE,
-		Err:    err,
-	}
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/service/firmwareservice.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/service/firmwareservice.go
deleted file mode 100644
index 90f6f91..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/service/firmwareservice.go
+++ /dev/null
@@ -1,968 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package firmwareservice
-
-import (
-	"bufio"
-	"context"
-	"fmt"
-	"log"
-	"net/url"
-	"path"
-	"path/filepath"
-	"regexp"
-	"strconv"
-	"strings"
-	"time"
-	"unicode"
-
-	"go.chromium.org/chromiumos/test/provision/lib/servo_lib"
-	"go.chromium.org/chromiumos/test/provision/lib/servoadapter"
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-
-	"github.com/pkg/errors"
-	conf "go.chromium.org/chromiumos/config/go"
-	"go.chromium.org/chromiumos/config/go/test/api"
-	labapi "go.chromium.org/chromiumos/config/go/test/lab/api"
-	"gopkg.in/yaml.v3"
-)
-
-// FirmwareVersions holds the ro and rw versions read from a firmware binary.
-type FirmwareVersions struct {
-	AP struct {
-		Versions struct {
-			RO string `yaml:"ro"`
-			RW string `yaml:"rw"`
-			// The EC version embedded within the AP-RW image.
-			ECRW string `yaml:"ecrw"`
-		} `yaml:"versions"`
-	} `yaml:"host"`
-	EC struct {
-		Versions struct {
-			RO     string `yaml:"ro"`
-			RW     string `yaml:"rw"`
-			RWHash string
-		} `yaml:"versions"`
-	} `yaml:"ec"`
-}
-
-// FirmwareService implements ServiceInterface
-type FirmwareService struct {
-	// In case of flashing over SSH, |connection| connects to the DUT.
-	// In case of flashing over Servo, |connection| connects to the ServoHost.
-	connection common_utils.ServiceAdapterInterface
-
-	// DetailedRequest fields
-	mainRwPath *conf.StoragePath
-	mainRoPath *conf.StoragePath
-	ecRoPath   *conf.StoragePath
-	ecRwPath   *conf.StoragePath
-
-	board, model string
-	// The name of the model's fw binary from config.yaml
-	CorebootName string
-	// StandaloneECName is the name of the ec binary for standalone (i.e. firmware-ec-Rxxx branches) builds.
-	StandaloneECName string
-	// LegacyECName is the name of the ec binary for legacy_fw (i.e. firmware-board branches) builds.
-	LegacyECName string
-
-	force bool
-
-	ecChip string
-
-	// imagesMetadata is a map from gspath -> ImageArchiveMetadata.
-	// Allows to avoid redownloading/reprocessing archives.
-	imagesMetadata map[string]ImageArchiveMetadata
-
-	// DUTServer is the gRPC connection to the DUT.
-	DUTServer api.DutServiceClient
-	// servoClient is the gRPC connection to the Servo Nexus.
-	servoClient api.ServodServiceClient
-	servoConfig *labapi.Servo
-
-	useServo bool
-	// wrapper around servoClient connection with extra servod-related functions
-	servoConnection servoadapter.ServoHostInterface
-	servoPort       int
-
-	CacheServer      url.URL
-	ExpectedVersions FirmwareVersions
-
-	// RestartRequired indicates that a firmware update was performed, but the DUT has not yet rebooted.
-	RestartRequired bool
-}
-
-type versionJSON struct {
-	Default FirmwareVersions `yaml:"default"`
-}
-
-// NewFirmwareService initializes a FirmwareService.
-func NewFirmwareService(ctx context.Context, dutServer api.DutServiceClient,
-	servoClient api.ServodServiceClient, cacheServer url.URL, board, model string,
-	useServo bool, req *api.InstallRequest, servoConfig *labapi.Servo) (*FirmwareService, error) {
-	metadata := new(api.FirmwareProvisionInstallMetadata)
-	if req.GetMetadata().MessageIs(metadata) {
-		if err := req.GetMetadata().UnmarshalTo(metadata); err != nil {
-			return nil, InvalidRequestErr(errors.Wrap(err, "unmarshalling metadata"))
-		}
-	} else {
-		return nil, InvalidRequestErr(errors.Errorf("FirmwareProvisionInstallMetadata is required, got %s", req.String()))
-	}
-	detailedRequest := metadata.FirmwareConfig
-	dutAdapter := common_utils.NewServiceAdapter(dutServer, false /*noReboot*/)
-
-	fws := FirmwareService{
-		connection:     dutAdapter,
-		DUTServer:      dutServer,
-		servoClient:    servoClient,
-		servoConfig:    servoConfig,
-		board:          board,
-		model:          model,
-		force:          false,
-		useServo:       useServo,
-		imagesMetadata: make(map[string]ImageArchiveMetadata),
-		CacheServer:    cacheServer,
-	}
-
-	// Firmware may be updated in write-protected mode, where only 'rw' regions
-	// would be update, or write-protection may be disabled (dangerous) in order
-	// to update 'ro' regions.
-	//
-	// The only 'rw' firmware is the main one, aka AP firmware, which also syncs
-	// EC 'rw'. It will be flashed with write protection turned on.
-	fws.mainRwPath = detailedRequest.MainRwPayload.GetFirmwareImagePath()
-
-	// Read-only firmware images include AP, EC, and PD firmware, and will be
-	// flashed with write protection turned off.
-	fws.mainRoPath = detailedRequest.MainRoPayload.GetFirmwareImagePath()
-	fws.ecRoPath = detailedRequest.EcRoPayload.GetFirmwareImagePath()
-	fws.ecRwPath = detailedRequest.EcRwPayload.GetFirmwareImagePath()
-
-	if useServo {
-		fws.prepareServoConnection(ctx, servoClient)
-	}
-
-	fws.PrintRequestInfo()
-
-	if !fws.UpdateRo() && !fws.UpdateRw() {
-		return nil, InvalidRequestErr(errors.New("no paths to images specified"))
-	}
-
-	return &fws, nil
-}
-
-// Confirms that cros-servod connection is functional, and fills the following
-// fields in FirmwareService:
-//   - servoConnection
-//   - ecChip
-//   - servoPort
-func (fws *FirmwareService) prepareServoConnection(ctx context.Context, servoClient api.ServodServiceClient) error {
-	if servoClient == nil {
-		return InvalidRequestErr(errors.New("servo use is requested, but servo client not provided"))
-	}
-
-	// Note: dut.GetChromeos().Servo.ServodAddress.Port is the port of cros-servod
-	// service, we seem to be missing port of servod itself.
-	// Always use default servod port 9999 for now.
-	if fws.servoPort == 0 {
-		fws.servoPort = 9999
-	}
-
-	fws.servoConnection = servoadapter.NewServoHostAdapterFromExecCmder(fws.board,
-		fws.model,
-		fws.servoPort,
-		servoClient)
-
-	// Ask servod for servo_type. This implicitly checks if servod is running
-	// and servo connection is working.
-	servoTypeStr, err := fws.servoConnection.GetVariable(ctx, "servo_type")
-	if err != nil {
-		return UnreachablePreProvisionErr(errors.Wrapf(err, "failed to get servo_type. "+
-			"Is servod running on port %v and connected to the DUT?",
-			fws.servoPort)) // TODO(sfrolov): add UnreachableCrosServodErr
-	}
-
-	// ask servod for serial number of the connected DUT.
-	servoType := servo_lib.NewServoType(servoTypeStr)
-
-	if servoType.IsMultipleServos() {
-		// Handle dual servo.
-		// We need CCD if ec_ro is set, otherwise, servo_micro will be faster.
-		preferCCD := false
-		if fws.ecRoPath != nil {
-			preferCCD = true
-		}
-		servoSubtypeStr := servoType.PickServoSubtype(preferCCD)
-		servoType = servo_lib.NewServoType(servoSubtypeStr)
-	}
-
-	fws.ecChip, err = fws.servoConnection.GetVariable(ctx, "ec_chip")
-	if err != nil {
-		return UnreachablePreProvisionErr(errors.Wrap(err, "failed to get ec_chip variable")) // TODO: cros-servod is unreachable
-	}
-	return nil
-}
-
-// PrintRequestInfo logs details of the provisioning operation.
-func (fws *FirmwareService) PrintRequestInfo() {
-	informationString := "provisioning "
-
-	images := []string{}
-	if fws.mainRwPath != nil {
-		images = append(images, "AP(RW)")
-	}
-	if fws.mainRoPath != nil {
-		images = append(images, "AP(RO)")
-	}
-	if fws.ecRoPath != nil {
-		images = append(images, "EC(RO)")
-	}
-	if fws.ecRwPath != nil {
-		images = append(images, "EC(RW)")
-	}
-	informationString += strings.Join(images, " and ") + " firmware"
-
-	flashMode := "SSH"
-	informationString += " over " + flashMode + ". "
-
-	informationString += "Board: " + fws.board + ". "
-
-	informationString += "Model: " + fws.model + ". "
-
-	informationString += fmt.Sprintf("Force: %v.", fws.force)
-
-	log.Println("[FW Provisioning]", informationString)
-}
-
-// UpdateRw returns whether the read/write firmware is being operated on.
-func (fws *FirmwareService) UpdateRw() bool {
-	// If AP RW was specified, or EC RW without AP RO
-	return fws.mainRwPath != nil || (fws.ecRwPath != nil && fws.mainRoPath == nil)
-}
-
-// UpdateRo returns whether the read-only firmware is being operated on.
-func (fws *FirmwareService) UpdateRo() bool {
-	return (fws.mainRoPath != nil) || (fws.ecRoPath != nil)
-}
-
-// GetBoard returns board of the DUT to provision. Returns empty string if board is not known.
-func (fws *FirmwareService) GetBoard() string {
-	return fws.board
-}
-
-// WaitForReconnect attempts to ssh to the DUT until it connects
-func (fws *FirmwareService) WaitForReconnect(ctx context.Context) error {
-	// Attempts to run `true` on the DUT over SSH until |reconnectRetries| attempts.
-	const reconnectRetries = 10
-	const reconnectAttemptWait = 10 * time.Second
-	const reconnectFailPause = 10 * time.Second
-	var connectErr error
-	for i := 0; i < reconnectRetries; i++ {
-		reconnectCtx, reconnCancel := context.WithTimeout(ctx, reconnectAttemptWait)
-		defer reconnCancel()
-		_, connectErr = fws.connection.RunCmd(reconnectCtx, "true", nil)
-		if connectErr == nil {
-			return nil
-		}
-		time.Sleep(reconnectFailPause)
-	}
-	log.Printf("Timed out waiting for DUT to connect: %v\n", connectErr)
-	return connectErr
-}
-
-// RestartDut restarts the DUT using one of the available mechanisms.
-// Preferred restart method is to send "power_state:reset" command to servod.
-// If servod restarting failed/not available in the environment,
-// then this function will try to SSH to the DUT and run `restart`,
-// if |requireServoReset| is false. If |requireServoReset| is True, restart over
-// SSH will not be attempted, and the function will return an error.
-func (fws *FirmwareService) RestartDut(ctx context.Context, requireServoReset bool) error {
-	if requireServoReset && fws.servoConnection == nil {
-		return errors.New("servo restart is required but servo connection not available")
-	}
-	// over Servo first
-	if fws.servoConnection != nil {
-		log.Printf("[FW Provisioning: Restart DUT] restarting DUT with \"dut-control power_state:reset\" over servo.\n")
-		servoRestartErr := fws.servoConnection.RunDutControl(ctx, []string{"power_state:reset"})
-		if servoRestartErr == nil {
-			if fws.connection != nil {
-				// If SSH connection to DUT was available, wait until it's back up again.
-				return fws.WaitForReconnect(ctx)
-			}
-			waitDuration := 30 * time.Second
-			log.Printf("[FW Provisioning: Restart DUT] waiting for %v for DUT to finish rebooting.\n", waitDuration.String())
-			time.Sleep(waitDuration)
-			powerState, getPowerStateErr := fws.servoConnection.GetVariable(ctx, "ec_system_powerstate")
-			if getPowerStateErr != nil {
-				log.Printf("[FW Provisioning: Restart DUT] failed to get power state after reboot: %v\n", getPowerStateErr)
-			} else {
-				log.Printf("[FW Provisioning: Restart DUT] DUT power state after reboot: %v\n", powerState)
-			}
-			return getPowerStateErr
-		}
-		log.Printf("[FW Provisioning: Restart DUT] failed to restart DUT via Servo: %v.\n", servoRestartErr)
-		if requireServoReset {
-			return servoRestartErr
-		}
-	}
-
-	// over SSH if allowed by |requireServoReset|
-	if fws.connection != nil {
-		log.Printf("[FW Provisioning: Restart DUT] restarting DUT over SSH.")
-		fws.connection.Restart(ctx)
-		return fws.WaitForReconnect(ctx)
-	}
-	return errors.New("failed to restart: no SSH connection to the DUT")
-}
-
-// GetModel returns model of the DUT to provision. Returns empty string if model is not known.
-func (fws *FirmwareService) GetModel() string {
-	return fws.model
-}
-
-// DeleteArchiveDirectories deletes files on the servo host or DUT.
-func (fws *FirmwareService) DeleteArchiveDirectories() error {
-	var cleanedDevice common_utils.ServiceAdapterInterface
-	if fws.useServo {
-		// If servo is used, the files will be located on the ServoHost.
-		cleanedDevice = fws.servoConnection
-	} else {
-		// If SSH is used, the files will be located on the DUT in /tmp/
-		// It's not strictly necessary to delete them before reboot.
-		cleanedDevice = fws.connection
-	}
-
-	var allErrors []string
-	for _, imgMetadata := range fws.imagesMetadata {
-		err := cleanedDevice.DeleteDirectory(context.Background(), imgMetadata.ArchiveDir)
-		if err != nil {
-			allErrors = append(allErrors, fmt.Sprintf("failed to delete %v: %v", imgMetadata.ArchiveDir, err))
-		}
-	}
-
-	if len(allErrors) > 0 {
-		return errors.New(strings.Join(allErrors, ". "))
-	}
-
-	return nil
-}
-
-// ServoHostPath returns the ServoHostPath to pass to servoClient
-func (fws *FirmwareService) ServoHostPath() string {
-	host := fws.servoConfig.GetServodAddress().GetAddress()
-	if strings.Contains(host, ":") {
-		return host
-	}
-	if strings.HasSuffix(host, "-docker_servod") {
-		return ""
-	}
-	return fmt.Sprintf("%s:22", host)
-}
-
-// ServodDockerContainerName returns the ServodDockerContainerName to pass to servoClient
-func (fws *FirmwareService) ServodDockerContainerName() string {
-	host := fws.servoConfig.GetServodAddress().GetAddress()
-	if strings.HasSuffix(host, "-docker_servod") {
-		return host
-	}
-	return ""
-}
-
-// FlashWithFutility flashes the DUT using "futility" tool.
-// futility will be run with "--mode=recovery".
-// if |rwOnly| is true, futility will flash only RW regions.
-// if |rwOnly| is false, futility will flash both RW and RO regions.
-// futilityArgs must include argument(s) that provide path(s) to the images.
-// apImagePath is the path to the AP image.
-// ecImagePath is the path to the EC image.
-//
-// If flashing over ssh, simply calls runFutility().
-// If flashing over servo, also runs pre- and post-flashing dut-controls.
-func (fws *FirmwareService) FlashWithFutility(ctx context.Context, rwOnly bool, futilityImageArgs []string, apImagePath, ecImagePath string) error {
-	// TODO: Remove this and move to call sites.
-	if err := fws.ExtractFirmwareVersions(ctx, rwOnly, futilityImageArgs, apImagePath); err != nil {
-		return errors.Wrap(err, "extract versions")
-	}
-
-	err := fws.sshFlash(ctx, rwOnly, futilityImageArgs, ecImagePath)
-	if err != nil && strings.Contains(err.Error(), "CSME_LOCKED") {
-		if fws.servoClient != nil {
-			log.Printf("Attempting to unlock CSME via servo")
-			op, err := fws.servoClient.StartServod(ctx, &api.StartServodRequest{
-				ServoHostPath:             fws.ServoHostPath(),
-				ServodDockerContainerName: fws.ServodDockerContainerName(),
-				ServodPort:                fws.servoConfig.GetServodAddress().GetPort(),
-				SerialName:                fws.servoConfig.GetSerial(),
-				Board:                     fws.board,
-				Model:                     fws.model,
-			})
-			if err != nil {
-				return errors.Wrap(err, "failed to start servod")
-			}
-			waitCtx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
-			defer cancel()
-			opAny, err := common_utils.WaitLongRunningOp(waitCtx, log.Default(), op)
-			if err != nil {
-				return errors.Wrap(err, "failed to start servod (lro)")
-			}
-			startResponse := new(api.StartServodResponse)
-			if err := opAny.UnmarshalTo(startResponse); err != nil {
-				return errors.Wrap(err, "failed to start servod (anypb)")
-			}
-			if startResponse.GetFailure() != nil {
-				return errors.Wrapf(err, "failed to start servod: %s", startResponse.GetFailure().GetErrorMessage())
-			}
-			tmpName := fmt.Sprintf("/var/tmp/bios_%d.bin", fws.servoConfig.GetServodAddress().GetPort())
-			defer func() {
-				out, err := fws.servoClient.ExecCmd(ctx, &api.ExecCmdRequest{
-					ServoHostPath:             fws.ServoHostPath(),
-					ServodDockerContainerName: fws.ServodDockerContainerName(),
-					Command:                   fmt.Sprintf("rm %s", tmpName),
-				})
-				if err != nil {
-					log.Printf("Failed to rm temp file: %s, exit code %d: %s", err, out.GetExitInfo().GetStatus(), out.GetStderr())
-				} else if out.GetExitInfo().GetStatus() != 0 {
-					log.Printf("Failed to rm temp file, exit code %d: %s", out.GetExitInfo().GetStatus(), out.GetStderr())
-				}
-			}()
-			log.Printf("Reading BIOS")
-			out, err := fws.servoClient.ExecCmd(ctx, &api.ExecCmdRequest{
-				ServoHostPath:             fws.ServoHostPath(),
-				ServodDockerContainerName: fws.ServodDockerContainerName(),
-				Command:                   fmt.Sprintf("futility read --servo_port=%d %s", fws.servoConfig.GetServodAddress().GetPort(), tmpName),
-			})
-			if err != nil {
-				return errors.Wrapf(err, "backup fw failed, exit code %d: %s", out.GetExitInfo().GetStatus(), out.GetStderr())
-			} else if out.GetExitInfo().GetStatus() != 0 {
-				return errors.Errorf("backup fw failed, exit code %d: %s", out.GetExitInfo().GetStatus(), out.GetStderr())
-			}
-			log.Printf("Writing BIOS")
-			out, err = fws.servoClient.ExecCmd(ctx, &api.ExecCmdRequest{
-				ServoHostPath:             fws.ServoHostPath(),
-				ServodDockerContainerName: fws.ServodDockerContainerName(),
-				Command:                   fmt.Sprintf("futility update --servo_port=%d --quirks=unlock_csme -i %s --mode=recovery --wp=0", fws.servoConfig.GetServodAddress().GetPort(), tmpName),
-			})
-			if err != nil {
-				return errors.Wrapf(err, "update fw failed, exit code %d: %s", out.GetExitInfo().GetStatus(), out.GetStderr())
-			} else if out.GetExitInfo().GetStatus() != 0 {
-				return errors.Errorf("update fw failed, exit code %d: %s", out.GetExitInfo().GetStatus(), out.GetStderr())
-			}
-			// Try the ssh flash again
-			return fws.sshFlash(ctx, rwOnly, futilityImageArgs, ecImagePath)
-		}
-	}
-	return err
-}
-
-// ExtractFirmwareVersions uses futility to get the version numbers from the images.
-func (fws *FirmwareService) ExtractFirmwareVersions(ctx context.Context, rwOnly bool, futilityImageArgs []string, apImagePath string) error {
-	if len(futilityImageArgs) == 0 {
-		return errors.New("unable to gte version: no futility Image args provided")
-	}
-
-	futilityArgs := futilityImageArgs
-	futilityArgs = append([]string{"update", "--manifest"}, futilityArgs...)
-
-	connection := fws.GetConnectionToFlashingDevice()
-	for i, a := range futilityArgs {
-		futilityArgs[i] = Escape(a)
-	}
-	out, err := connection.RunCmd(ctx, "futility", futilityArgs)
-	if err != nil {
-		return errors.Wrap(err, "failed to exec futility")
-	}
-
-	// b/360198909: Sometimes the output contains control characters.
-	out = strings.ReplaceAll(out, "\x01", "")
-	log.Printf("Manifest: %s", out)
-
-	versions := versionJSON{}
-	err = yaml.Unmarshal([]byte(out), &versions)
-	if err != nil {
-		return errors.Wrapf(err, "failed to parse futility manifest: %q", out)
-	}
-
-	if !rwOnly && versions.Default.AP.Versions.RO != "" {
-		fws.ExpectedVersions.AP.Versions.RO = versions.Default.AP.Versions.RO
-	}
-	if versions.Default.AP.Versions.RW != "" {
-		fws.ExpectedVersions.AP.Versions.RW = versions.Default.AP.Versions.RW
-	}
-	if !rwOnly && versions.Default.EC.Versions.RO != "" {
-		fws.ExpectedVersions.EC.Versions.RO = versions.Default.EC.Versions.RO
-	}
-	if versions.Default.AP.Versions.ECRW != "" && fws.board != "drallion" && fws.board != "sarien" {
-		fws.ExpectedVersions.EC.Versions.RW = versions.Default.AP.Versions.ECRW
-		fws.ExpectedVersions.EC.Versions.RWHash = ""
-	}
-
-	// If there is no EC RW version, get the EC RW hash from the AP image.
-	if versions.Default.AP.Versions.ECRW == "" && apImagePath != "" && fws.board != "drallion" && fws.board != "sarien" {
-		ecImagePath := fmt.Sprintf("%s-ecrw.hash", apImagePath)
-		_, err = connection.RunCmd(ctx, "cbfstool", []string{fmt.Sprintf("'%s'", apImagePath), "extract", "-r", "FW_MAIN_A", "-n", "ecrw.hash", "-f", fmt.Sprintf("'%s'", ecImagePath)})
-		if err != nil {
-			return errors.Wrap(err, "failed to extract ecrw.hash")
-		}
-		out, err = connection.RunCmd(ctx, "od", []string{"-A", "n", "-t", "x1", fmt.Sprintf("'%s'", ecImagePath)})
-		if err != nil {
-			return errors.Wrap(err, "failed to get ecrw hash")
-		}
-		fws.ExpectedVersions.EC.Versions.RWHash = strings.Join(strings.FieldsFunc(out, unicode.IsSpace), "")
-	}
-	log.Printf("fws.ExpectedVersions: %+v", fws.ExpectedVersions)
-	return nil
-}
-
-// GetVersions returns a FirmwareProvisionResponse with the expected firmware versions
-func (fws *FirmwareService) GetVersions() *api.FirmwareProvisionResponse {
-	r := new(api.FirmwareProvisionResponse)
-	r.ApRoVersion = fws.ExpectedVersions.AP.Versions.RO
-	r.ApRwVersion = fws.ExpectedVersions.AP.Versions.RW
-	r.EcRoVersion = fws.ExpectedVersions.EC.Versions.RO
-	r.EcRwVersion = fws.ExpectedVersions.EC.Versions.RW
-	return r
-}
-
-// ActiveFirmwareVersions returns the firmware versions currently running on the DUT.
-func (fws *FirmwareService) ActiveFirmwareVersions(ctx context.Context) (*FirmwareVersions, error) {
-	var versions FirmwareVersions
-	// Run crossystem ro_fwid fwid to get AP versions
-	out, err := fws.connection.RunCmd(ctx, "crossystem", []string{"ro_fwid", "fwid"})
-	if err != nil {
-		return nil, errors.Wrap(err, "crossystem failed")
-	}
-	apVers := strings.SplitN(out, " ", 2)
-	if len(apVers) != 2 {
-		return nil, errors.Errorf("incorrect crossystem output: %q", out)
-	}
-	versions.AP.Versions.RO = apVers[0]
-	versions.AP.Versions.RW = apVers[1]
-
-	// Run ectool version to get EC versions
-	out, stderr, err := RunDUTCommand(ctx, fws.DUTServer, time.Minute, "ectool", []string{"version"}, nil)
-	if err != nil {
-		// Wilco, etc.
-		if strings.Contains(stderr, "Very likely this board doesn't have a Chromium EC") {
-			return &versions, nil
-		}
-		return nil, errors.Wrap(err, "ectool failed")
-	}
-	roRE, err := regexp.Compile(`RO version:\s*(\S+)\s*\n`)
-	if err != nil {
-		return nil, errors.Wrap(err, "invalid roRE")
-	}
-	rwRE, err := regexp.Compile(`RW version:\s*(\S+)\s*\n`)
-	if err != nil {
-		return nil, errors.Wrap(err, "invalid rwRE")
-	}
-	if m := roRE.FindStringSubmatch(out); m != nil {
-		versions.EC.Versions.RO = m[1]
-	} else {
-		return nil, errors.Errorf("EC RO version not found in %q", out)
-	}
-	if m := rwRE.FindStringSubmatch(out); m != nil {
-		versions.EC.Versions.RW = m[1]
-	} else {
-		return nil, errors.Errorf("EC RW version not found in %q", out)
-	}
-
-	// Run ectool echash to get EC RW hash
-	out, stderr, err = RunDUTCommand(ctx, fws.DUTServer, time.Minute, "ectool", []string{"echash"}, nil)
-	if err != nil {
-		// Wilco, etc.
-		if strings.Contains(stderr, "Very likely this board doesn't have a Chromium EC") {
-			return &versions, nil
-		}
-		return nil, errors.Wrap(err, "ectool failed")
-	}
-	statusRE, err := regexp.Compile(`status:\s*(\S+)\s*\n`)
-	if err != nil {
-		return nil, errors.Wrap(err, "invalid statusRE")
-	}
-	hashRE, err := regexp.Compile(`hash:\s*(\S+)\s*\n`)
-	if err != nil {
-		return nil, errors.Wrap(err, "invalid hashRE")
-	}
-	if m := statusRE.FindStringSubmatch(out); m == nil || m[1] != "done" {
-		return nil, errors.Errorf("EC hash not done in %q", out)
-	}
-	if m := hashRE.FindStringSubmatch(out); m != nil {
-		versions.EC.Versions.RWHash = m[1]
-	} else {
-		return nil, errors.Errorf("EC RW hash not found in %q", out)
-	}
-	return &versions, nil
-}
-
-func (fws *FirmwareService) sshFlash(ctx context.Context, rwOnly bool, futilityImageArgs []string, ecImagePath string) error {
-	return fws.runFutility(ctx, rwOnly, futilityImageArgs, ecImagePath)
-}
-
-const (
-	// The character class \w is equivalent to [0-9A-Za-z_]. Leading equals sign is unsafe in zsh,
-	// see http://zsh.sourceforge.net/Doc/Release/Expansion.html#g_t_0060_003d_0027-expansion.
-	leadingSafeChars  = `-\w@%+:,./`
-	trailingSafeChars = leadingSafeChars + "="
-)
-
-// safeRE matches an argument that can be literally included in a shell
-// command line without requiring escaping.
-var safeRE = regexp.MustCompile(fmt.Sprintf("^[%s][%s]*$", leadingSafeChars, trailingSafeChars))
-
-func (fws *FirmwareService) runFutility(ctx context.Context, rwOnly bool, futilityImageArgs []string, ecImagePath string) error {
-	if len(futilityImageArgs) == 0 {
-		return errors.New("unable to flash: no futility Image args provided")
-	}
-
-	futilityArgs := futilityImageArgs
-	futilityArgs = append([]string{"update", "--mode=recovery"}, futilityArgs...)
-
-	if rwOnly {
-		futilityArgs = append(futilityArgs, "--wp=1")
-	} else {
-		futilityArgs = append(futilityArgs, "--wp=0")
-	}
-
-	if fws.force {
-		futilityArgs = append(futilityArgs, "--force")
-	}
-
-	fws.RestartRequired = true
-	connection := fws.GetConnectionToFlashingDevice()
-	if ecImagePath != "" {
-		// If we are flashing EC, we might lose SSH access, so use nohup to run futility in a temporary python script, and poll for results
-		logFile := path.Join(path.Dir(ecImagePath), "futility.log")
-		startupLogFile := path.Join(path.Dir(ecImagePath), "futility.start")
-		pyScript := path.Join(path.Dir(ecImagePath), "futility.py")
-		var scriptBody strings.Builder
-		scriptBody.WriteString(`#!/usr/bin/env python3
-
-import subprocess
-
-with open("`)
-		scriptBody.WriteString(logFile)
-		scriptBody.WriteString(`", "wb", buffering=0) as outFile:
-  rc = subprocess.run(["futility"`)
-		for _, arg := range futilityArgs {
-			scriptBody.WriteString(", '")
-			scriptBody.WriteString(arg)
-			scriptBody.WriteString("'")
-		}
-		scriptBody.WriteString(`], stdout=outFile, stderr=outFile, check=False, bufsize=0)
-  outFile.write(f"EXIT CODE: {rc.returncode}\n".encode("utf-8"))
-  outFile.flush()
-  subprocess.run(["sync", "-d", "/var/tmp", "/usr/local/tmp"])
-  subprocess.run(["reboot"])
-`)
-		_, _, err := RunDUTCommand(ctx, fws.DUTServer, time.Minute, "cat", []string{">", fmt.Sprintf("'%s'", pyScript)}, []byte(scriptBody.String()))
-		if err != nil {
-			return errors.Wrap(err, "failed to create futility.py")
-		}
-		defer connection.RunCmd(ctx, "rm", []string{"-f", fmt.Sprintf("'%s'", logFile)})
-
-		_, err = connection.RunCmd(ctx, "bash", []string{"-c", Escape(fmt.Sprintf("nohup python3 '%s' </dev/null >&'%s' & exit", pyScript, startupLogFile))})
-		if err != nil {
-			return errors.Wrap(err, "failed to run nohup")
-		}
-		startTime := time.Now()
-		exitCodeRe := regexp.MustCompile(`EXIT CODE: (-?\d+)`)
-		csmeLockedRe := regexp.MustCompile(`The CSME was already locked`)
-		logfileLen := 0
-
-		// Poll every 10s for the log file to appear and have the "EXIT CODE:" string in it.
-		for time.Since(startTime) < 10*time.Minute {
-			time.Sleep(10 * time.Second)
-			catCtx, cancel := context.WithTimeout(ctx, 10*time.Second)
-			defer cancel()
-			buf, err := connection.RunCmd(catCtx, "cat", []string{fmt.Sprintf("'%s'", logFile)})
-			if err != nil {
-				log.Printf("failed to download %q: %v", logFile, err)
-				catCtx, cancel := context.WithTimeout(ctx, 10*time.Second)
-				defer cancel()
-				buf, err = connection.RunCmd(catCtx, "cat", []string{fmt.Sprintf("'%s'", startupLogFile)})
-				if err != nil {
-					log.Printf("failed to download %q: %v", startupLogFile, err)
-					continue
-				} else {
-					log.Printf("Futility startup:\n%s", buf)
-				}
-			} else {
-				if logfileLen > len(buf) {
-					log.Printf("Logfile shrank! Might be an EC crash. Was %d, now %d", logfileLen, len(buf))
-					log.Printf("Futility output:\n%s", buf)
-					logfileLen = len(buf)
-				} else {
-					log.Printf("Futility output:\n%s", buf[logfileLen:])
-					logfileLen = len(buf)
-				}
-			}
-			m := csmeLockedRe.FindStringSubmatch(buf)
-			if m != nil {
-				log.Printf("Futility output:\n%s", buf)
-				return errors.Errorf("CSME_LOCKED: %q", buf)
-			}
-			m = exitCodeRe.FindStringSubmatch(buf)
-			if m != nil {
-				log.Printf("Futility output:\n%s", buf)
-				if m[1] == "0" {
-					fws.RestartRequired = false
-					return nil
-				}
-				return errors.Errorf("futility failed: %q", buf)
-			}
-		}
-		return errors.New("Timeout waiting for futility")
-	} else {
-		for i, a := range futilityArgs {
-			futilityArgs[i] = Escape(a)
-		}
-
-		if _, err := connection.RunCmd(ctx, "futility", futilityArgs); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-// CheckForCSMESections looks at the image at imagePath, and returns true if csme_unlock is supported.
-func (fws *FirmwareService) CheckForCSMESections(ctx context.Context, imagePath string) (bool, error) {
-	// futility needs CONFIG_IFD_CHIPSET to be set in the config file in cbfs or the board to be nissa.
-	// Also the idftool must exist.
-
-	out, err := fws.connection.RunCmd(ctx, "which", []string{"ifdtool"})
-	if err != nil {
-		log.Printf("idftool not found:%s", string(out))
-		return false, nil
-	}
-	// Extract the config file
-	configFile := imagePath + "-config"
-	out, err = fws.connection.RunCmd(ctx, "cbfstool", []string{Escape(imagePath), "extract", "-n", "config", "-f", configFile})
-	if err != nil {
-		return false, errors.Wrapf(err, "command output: %s", string(out))
-	}
-	reader, err := fws.connection.FetchFile(ctx, configFile)
-	if err != nil {
-		return false, errors.Wrap(err, "downloading file")
-	}
-	// Look for CONFIG_IFD_CHIPSET or the same special case for nissa that futility uses.
-	sc := bufio.NewScanner(reader)
-	for sc.Scan() {
-		cfg, value, _ := strings.Cut(sc.Text(), "=")
-		if cfg == "CONFIG_IFD_CHIPSET" || (cfg == "CONFIG_IFD_BIN_PATH" && strings.Contains(value, "/nissa/")) {
-			log.Printf("Image %s has %s\n", imagePath, cfg)
-			return true, nil
-		}
-	}
-	log.Printf("Image %s has no CONFIG_IFD_CHIPSET\n", imagePath)
-	return false, nil
-}
-
-// GetConnectionToFlashingDevice returns connection to the device that stores the
-// firmware image and runs futility.
-// Returns connection to ServoHost if fws.useServo, connection to DUT otherwise.
-func (fws *FirmwareService) GetConnectionToFlashingDevice() common_utils.ServiceAdapterInterface {
-	if fws.useServo {
-		return fws.servoConnection
-	}
-	return fws.connection
-}
-
-// IsServoUsed returns whether servo is used during the provisioning.
-func (fws *FirmwareService) IsServoUsed() bool {
-	return fws.useServo
-}
-
-// IsForceUpdate returns whether an update is forced during the provisioning.
-func (fws *FirmwareService) IsForceUpdate() bool {
-	return fws.force
-}
-
-// GetMainRwPath returns the path of the read/write part of the AP firmware.
-func (fws *FirmwareService) GetMainRwPath() string {
-	return fws.mainRwPath.GetPath()
-}
-
-// GetMainRoPath returns the path of readonly part of the AP firmware.
-func (fws *FirmwareService) GetMainRoPath() string {
-	return fws.mainRoPath.GetPath()
-}
-
-// GetEcRoPath returns the path for the readonly portion of the EC firmware.
-func (fws *FirmwareService) GetEcRoPath() string {
-	return fws.ecRoPath.GetPath()
-}
-
-// GetEcRwPath returns the path for the read/write portion of the EC firmware.
-func (fws *FirmwareService) GetEcRwPath() string {
-	return fws.ecRwPath.GetPath()
-}
-
-type configData struct {
-	ChromeOS struct {
-		Configs []struct {
-			Firmware struct {
-				BuildTargets struct {
-					// AP image name, if missing fallback to ImageName
-					Coreboot string `yaml:"coreboot"`
-					EC       string `yaml:"ec"`
-					ZephyrEC string `yaml:"zephyr-ec"`
-				} `yaml:"build-targets"`
-				ImageName string `yaml:"image-name"`
-			} `yaml:"firmware"`
-			Name     string `yaml:"name"`
-			Identity struct {
-				SKUID int `yaml:"sku-id"`
-			} `yaml:"identity"`
-		}
-	}
-}
-
-// ReadConfigYAML downloads config.yaml from the DUT and find the firmware binary names that should be used.
-func (fws *FirmwareService) ReadConfigYAML(ctx context.Context) error {
-	out, err := fws.connection.RunCmd(ctx, "crosid", nil)
-	if err != nil {
-		return errors.Wrap(err, "failed to run crosid")
-	}
-	re, err := regexp.Compile(`^SKU='([^']*)'`)
-	if err != nil {
-		return errors.Wrap(err, "sku regex failed")
-	}
-	m := re.FindStringSubmatch(out)
-	sku := -1
-	if m != nil && m[1] != "none" {
-		sku, err = strconv.Atoi(m[1])
-		if err != nil {
-			return errors.Wrapf(err, "parse of SKU %q failed", m[1])
-		}
-		log.Printf("DUT sku = %d", sku)
-	}
-
-	yamlPath := "/usr/share/chromeos-config/yaml/config.yaml"
-	ok, err := fws.connection.PathExists(ctx, yamlPath)
-	if err != nil {
-		return errors.Wrap(err, "failed to check config.yaml")
-	} else if !ok {
-		log.Printf("No config.yaml found on DUT at %q", yamlPath)
-		return nil
-	}
-
-	config, err := fws.connection.FetchFile(ctx, yamlPath)
-	if err != nil {
-		return errors.Wrapf(err, "failed to read %q", yamlPath)
-	}
-	defer config.Close()
-	configYaml := configData{}
-	parser := yaml.NewDecoder(config)
-	err = parser.Decode(&configYaml)
-	if err != nil {
-		return errors.Wrap(err, "failed to parse config.yaml")
-	}
-	model := fws.GetModel()
-	for _, config := range configYaml.ChromeOS.Configs {
-		// Wilco devices have _signed suffixes on the model name.
-		if config.Name == model || config.Name == model+"_signed" {
-			// Treat config.Identity.SKUID <= 0 as a wildcard that matches any SKU.
-			if sku >= 0 && config.Identity.SKUID > 0 && config.Identity.SKUID != sku {
-				log.Printf("Incorrect SKU: sku=%+v config.Identity.SKUID=%+v", sku, config.Identity.SKUID)
-				continue
-			}
-			log.Printf("config entry: %+v", config)
-			thisAPName := config.Firmware.BuildTargets.Coreboot
-			if thisAPName == "" {
-				thisAPName = config.Firmware.ImageName
-			}
-			if thisAPName != "" {
-				if fws.CorebootName != "" && fws.CorebootName != thisAPName {
-					return errors.Errorf("ambiguous AP name for model %q sku %d, could be %q or %q", model, sku, fws.CorebootName, thisAPName)
-				}
-				fws.CorebootName = thisAPName
-			}
-			var thisECName string
-			var legacyECName string
-			// Bizarrely, zephyr builders use the coreboot name for the ec.bin file.
-			if config.Firmware.BuildTargets.ZephyrEC != "" {
-				thisECName = config.Firmware.BuildTargets.ZephyrEC
-				legacyECName = thisAPName
-			} else {
-				thisECName = config.Firmware.BuildTargets.EC
-				legacyECName = config.Firmware.BuildTargets.EC
-			}
-			if thisECName != "" {
-				if fws.StandaloneECName != "" && fws.StandaloneECName != thisECName {
-					return errors.Errorf("ambiguous EC name for model %q sku %d, could be %q or %q", model, sku, fws.StandaloneECName, thisECName)
-				}
-				fws.StandaloneECName = thisECName
-			}
-			if legacyECName != "" {
-				if fws.LegacyECName != "" && fws.LegacyECName != legacyECName {
-					return errors.Errorf("ambiguous legacy EC name for model %q sku %d, could be %q or %q", model, sku, fws.LegacyECName, legacyECName)
-				}
-				fws.LegacyECName = legacyECName
-			}
-		}
-	}
-	// Special case for reef boards. See b/398900326
-	if fws.CorebootName != fws.LegacyECName && fws.LegacyECName == "reef" {
-		log.Printf("Overriding EC name to '%q", fws.CorebootName)
-		fws.LegacyECName = fws.CorebootName
-	}
-	log.Printf("config.yaml image names AP: %s EC(legacy): %s EC(standalone): %s", fws.CorebootName, fws.LegacyECName, fws.StandaloneECName)
-	return nil
-}
-
-// DownloadAndProcess gets ready to extract the selected archive.
-// It doesn't actually do any downloading and should be renamed.
-func (fws *FirmwareService) DownloadAndProcess(ctx context.Context, gsPath string) error {
-	connection := fws.GetConnectionToFlashingDevice()
-	if _, alreadyProcessed := fws.imagesMetadata[gsPath]; !alreadyProcessed {
-		// Infer names for the local files and folders from basename of gsPath.
-		archiveFilename := filepath.Base(gsPath)
-
-		// Try to get a descriptive name for the temporary folder.
-		archiveSubfolder := archiveFilename
-		if strings.HasPrefix(archiveSubfolder, "firmware_from_source") {
-			splitGsPath := strings.Split(gsPath, "/")
-			nameIdx := len(splitGsPath) - 2
-			if nameIdx < 0 {
-				nameIdx = 0
-			}
-			archiveSubfolder = splitGsPath[nameIdx]
-		}
-
-		// Use mktemp to safely create a unique temp directory in /var/tmp so that it survives reboots.
-		archiveDir, err := connection.RunCmd(ctx, "mktemp", []string{"-d", "--tmpdir=/var/tmp", fmt.Sprintf("'cros-fw-provision.XXXXXXXXX.%s'", archiveSubfolder)})
-		if err != nil {
-			return errors.Wrap(err, "remote mktemp failed")
-		}
-		archiveDir = strings.Trim(archiveDir, "\n")
-
-		fws.imagesMetadata[gsPath] = ImageArchiveMetadata{
-			ArchiveDir: archiveDir,
-		}
-	}
-	return nil
-}
-
-// GetImageMetadata returns (ImageArchiveMetadata, IsImageMetadataPresent)
-func (fws *FirmwareService) GetImageMetadata(gspath string) (ImageArchiveMetadata, bool) {
-	metadata, ok := fws.imagesMetadata[gspath]
-	return metadata, ok
-}
-
-// ProvisionWithFlashEC flashes EC image using flash_ec script.
-func (fws *FirmwareService) ProvisionWithFlashEC(ctx context.Context, ecImage, flashECScriptPath string) error {
-	customBitbangRate := ""
-	if fws.ecChip == "stm32" {
-		customBitbangRate = "--bitbang_rate=57600"
-	}
-	flashCmdArgs := fmt.Sprintf("--ro --chip=%s --board=%s --image='%s' --port=%v %s --verify --verbose",
-		fws.ecChip, fws.model, ecImage, fws.servoPort, customBitbangRate)
-	output, err := fws.GetConnectionToFlashingDevice().RunCmd(ctx, flashECScriptPath, strings.Split(flashCmdArgs, " "))
-	if err != nil {
-		log.Println(output)
-		return err
-	}
-	return nil
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/state-machine/interface.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/state-machine/interface.go
deleted file mode 100644
index 9531d34..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/state-machine/interface.go
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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 state_machine
-
-import (
-	"context"
-	"log"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-// ServiceState is a single state representation.
-// TODO: Get rid of this state machine.
-type ServiceState interface {
-	// Execute Runs the state
-	Execute(ctx context.Context, log *log.Logger) (*api.FirmwareProvisionResponse, api.InstallResponse_Status, error)
-	// Next gets the next state in the state machine
-	Next() ServiceState
-	// Name gets the fully qualified name of this state
-	Name() string
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/state-machine/postinstallstate.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/state-machine/postinstallstate.go
deleted file mode 100644
index 87d2dec..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/state-machine/postinstallstate.go
+++ /dev/null
@@ -1,94 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Last step of FirmwareService State Machine.
-// Cleans up temporary folders and reboots the DUT.
-package state_machine
-
-import (
-	"context"
-	"log"
-
-	firmwareservice "go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/service"
-
-	"github.com/pkg/errors"
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-// FirmwarePostInstallState cleans up temporary folders and reboots the DUT.
-type FirmwarePostInstallState struct {
-	service *firmwareservice.FirmwareService
-}
-
-// Execute deletes all folders with firmware image archives.
-func (s FirmwarePostInstallState) Execute(ctx context.Context, log *log.Logger) (*api.FirmwareProvisionResponse, api.InstallResponse_Status, error) {
-	fwMetadata := s.service.GetVersions()
-	s.service.DeleteArchiveDirectories()
-	if s.service.RestartRequired {
-		err := s.service.RestartDut(ctx, false)
-		if err != nil {
-			return fwMetadata, api.InstallResponse_STATUS_DUT_UNREACHABLE_POST_FIRMWARE_UPDATE, firmwareservice.UnreachablePostProvisionErr(err)
-		}
-	}
-
-	versions, err := s.service.ActiveFirmwareVersions(ctx)
-	if err != nil {
-		return nil, api.InstallResponse_STATUS_DUT_UNREACHABLE_POST_FIRMWARE_UPDATE, firmwareservice.FirmwareMismatchPostProvisionErr(err)
-	}
-	log.Printf("[FW Provisioning: Post Install] want firmware version ap:%+v ec:%+v\n", s.service.ExpectedVersions.AP.Versions, s.service.ExpectedVersions.EC.Versions)
-	log.Printf("[FW Provisioning: Post Install]  got firmware version ap:%+v ec:%+v\n", versions.AP.Versions, versions.EC.Versions)
-	if fwMetadata.ApRoVersion == "" {
-		fwMetadata.ApRoVersion = versions.AP.Versions.RO
-	}
-	if fwMetadata.ApRwVersion == "" {
-		fwMetadata.ApRwVersion = versions.AP.Versions.RW
-	}
-	if fwMetadata.EcRoVersion == "" {
-		fwMetadata.EcRoVersion = versions.EC.Versions.RO
-	}
-	if fwMetadata.EcRwVersion == "" {
-		fwMetadata.EcRwVersion = versions.EC.Versions.RW
-	}
-
-	if s.service.ExpectedVersions.AP.Versions.RO != "" && s.service.ExpectedVersions.AP.Versions.RO != versions.AP.Versions.RO {
-		return fwMetadata, api.InstallResponse_STATUS_FIRMWARE_MISMATCH_POST_FIRMWARE_UPDATE,
-			firmwareservice.FirmwareMismatchPostProvisionErr(errors.Errorf(
-				"incorrect ap ro version got %q, want %q", versions.AP.Versions.RO, s.service.ExpectedVersions.AP.Versions.RO))
-	}
-	if s.service.ExpectedVersions.EC.Versions.RO != "" && s.service.ExpectedVersions.EC.Versions.RO != versions.EC.Versions.RO {
-		return fwMetadata, api.InstallResponse_STATUS_FIRMWARE_MISMATCH_POST_FIRMWARE_UPDATE,
-			firmwareservice.FirmwareMismatchPostProvisionErr(errors.Errorf(
-				"incorrect ec ro version got %q, want %q", versions.EC.Versions.RO, s.service.ExpectedVersions.EC.Versions.RO))
-	}
-	if s.service.ExpectedVersions.AP.Versions.RW != "" && s.service.ExpectedVersions.AP.Versions.RW != versions.AP.Versions.RW {
-		return fwMetadata, api.InstallResponse_STATUS_FIRMWARE_MISMATCH_POST_FIRMWARE_UPDATE,
-			firmwareservice.FirmwareMismatchPostProvisionErr(errors.Errorf(
-				"incorrect ap rw version got %q, want %q", versions.AP.Versions.RW, s.service.ExpectedVersions.AP.Versions.RW))
-	}
-	if s.service.ExpectedVersions.EC.Versions.RWHash != "" && s.service.ExpectedVersions.EC.Versions.RWHash != versions.EC.Versions.RWHash {
-		return fwMetadata, api.InstallResponse_STATUS_FIRMWARE_MISMATCH_POST_FIRMWARE_UPDATE,
-			firmwareservice.FirmwareMismatchPostProvisionErr(errors.Errorf(
-				"incorrect ec rw hash got %q, want %q", versions.EC.Versions.RWHash, s.service.ExpectedVersions.EC.Versions.RWHash))
-	}
-	// If the hash is present, then don't check the RW version at all, because it's unreliable as it comes from the ec.bin, but the actual binary comes from the AP RW cbfs.
-	if s.service.ExpectedVersions.EC.Versions.RWHash == "" && s.service.ExpectedVersions.EC.Versions.RW != "" && s.service.ExpectedVersions.EC.Versions.RW != versions.EC.Versions.RW {
-		return fwMetadata, api.InstallResponse_STATUS_FIRMWARE_MISMATCH_POST_FIRMWARE_UPDATE,
-			firmwareservice.FirmwareMismatchPostProvisionErr(errors.Errorf(
-				"incorrect ec rw version got %q, want %q", versions.EC.Versions.RW, s.service.ExpectedVersions.EC.Versions.RW))
-	}
-	// Since the EC RWHash was verified, overwrite the expected EC RW version with the actual version, just in case we had the wrong one.
-	fwMetadata.EcRwVersion = versions.EC.Versions.RW
-
-	return fwMetadata, api.InstallResponse_STATUS_SUCCESS, nil
-}
-
-func (s FirmwarePostInstallState) Next() ServiceState {
-	return nil
-}
-
-const PostInstallStateName = "Post Install (cleanup/reboot)"
-
-func (s FirmwarePostInstallState) Name() string {
-	return PostInstallStateName
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/state-machine/preparestate.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/state-machine/preparestate.go
deleted file mode 100644
index 60f3ae3..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/state-machine/preparestate.go
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package state_machine
-
-import (
-	"context"
-	"log"
-
-	firmwareservice "go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/service"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type FirmwarePrepareState struct {
-	service *firmwareservice.FirmwareService
-}
-
-func NewFirmwarePrepareState(service *firmwareservice.FirmwareService) ServiceState {
-	return FirmwarePrepareState{
-		service: service,
-	}
-}
-
-// FirmwarePrepareState downloads and extracts every image from the request.
-// The already downloaded images will not be downloaded and extracted again.
-func (s FirmwarePrepareState) Execute(ctx context.Context, log *log.Logger) (*api.FirmwareProvisionResponse, api.InstallResponse_Status, error) {
-	firmwareImageDestination := "DUT"
-	if s.service.IsServoUsed() {
-		firmwareImageDestination = "ServoHost"
-	}
-	log.Printf("[FW Provisioning: Prepare FW] preparing for %v\n", firmwareImageDestination)
-	if err := s.service.WaitForReconnect(ctx); err != nil {
-		return nil, api.InstallResponse_STATUS_DUT_UNREACHABLE_PRE_PROVISION, firmwareservice.UpdateFirmwareFailedErr(err)
-	}
-	if err := s.service.ReadConfigYAML(ctx); err != nil {
-		return nil, api.InstallResponse_STATUS_UPDATE_FIRMWARE_FAILED, firmwareservice.UpdateFirmwareFailedErr(err)
-	}
-	if mainRw := s.service.GetMainRwPath(); len(mainRw) > 0 {
-		if err := s.service.DownloadAndProcess(ctx, mainRw); err != nil {
-			return nil, api.InstallResponse_STATUS_UPDATE_FIRMWARE_FAILED, firmwareservice.UpdateFirmwareFailedErr(err)
-		}
-	}
-	if mainRo := s.service.GetMainRoPath(); len(mainRo) > 0 {
-		if err := s.service.DownloadAndProcess(ctx, mainRo); err != nil {
-			return nil, api.InstallResponse_STATUS_UPDATE_FIRMWARE_FAILED, firmwareservice.UpdateFirmwareFailedErr(err)
-		}
-	}
-	if ecRoPath := s.service.GetEcRoPath(); len(ecRoPath) > 0 {
-		if err := s.service.DownloadAndProcess(ctx, ecRoPath); err != nil {
-			return nil, api.InstallResponse_STATUS_UPDATE_FIRMWARE_FAILED, firmwareservice.UpdateFirmwareFailedErr(err)
-		}
-	}
-	if ecRwPath := s.service.GetEcRwPath(); len(ecRwPath) > 0 {
-		if err := s.service.DownloadAndProcess(ctx, ecRwPath); err != nil {
-			return nil, api.InstallResponse_STATUS_UPDATE_FIRMWARE_FAILED, firmwareservice.UpdateFirmwareFailedErr(err)
-		}
-	}
-	return nil, api.InstallResponse_STATUS_SUCCESS, nil
-}
-
-func (s FirmwarePrepareState) Next() ServiceState {
-	if s.service.UpdateRo() {
-		return FirmwareUpdateRoState(s)
-	} else {
-		return FirmwareUpdateRwState(s)
-	}
-}
-
-const PrepareStateName = "Firmware Prepare (download/extract archives)"
-
-func (s FirmwarePrepareState) Name() string {
-	return PrepareStateName
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/state-machine/updaterostate.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/state-machine/updaterostate.go
deleted file mode 100644
index 918168e..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/state-machine/updaterostate.go
+++ /dev/null
@@ -1,148 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// First step of FirmwareService State Machine. Installs RW firmware.
-package state_machine
-
-import (
-	"context"
-	"fmt"
-	"log"
-	"regexp"
-	"time"
-
-	"github.com/pkg/errors"
-	firmwareservice "go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/service"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-// FirmwareUpdateRoState updates firmware with write protection disabled.
-type FirmwareUpdateRoState struct {
-	service *firmwareservice.FirmwareService
-}
-
-// Execute flashes firmware with write-protection disabled using futility.
-func (s FirmwareUpdateRoState) Execute(ctx context.Context, log *log.Logger) (*api.FirmwareProvisionResponse, api.InstallResponse_Status, error) {
-	connection := s.service.GetConnectionToFlashingDevice()
-
-	// form futility command args based on the request
-	var futilityImageArgs []string
-	// Detailed Request
-	var mainRoPath, ecRoPath, ecRwPath string
-	var err error
-	board := s.service.GetBoard()
-	ecRoMetadata, ok := s.service.GetImageMetadata(s.service.GetEcRoPath())
-	// Skip EC provisioning on Wilco duts that don't have Chrome ECs. Since there are only 2,
-	// hard code them here.
-	if ok && board != "drallion" && board != "sarien" {
-		// Check for RO_AT_BOOT before downloading images, as /var/tmp may be cleared on reboot.
-		out, _, err := firmwareservice.RunDUTCommand(ctx, s.service.DUTServer, time.Minute, "ectool", []string{"flashprotect"}, nil)
-		log.Printf("flashprotect: %s %v", out, err)
-		roAtBootRe := regexp.MustCompile("Flash protect flags:.*ro_at_boot")
-		if roAtBootRe.MatchString(out) {
-			log.Printf("RO_AT_BOOT is not clear: Rebooting EC")
-			// Ignore the err, because the ssh connection is expected to break
-			firmwareservice.RunDUTCommand(ctx, s.service.DUTServer, time.Minute, "ectool", []string{"reboot_ec"}, nil)
-			for i := 0; i < 20; i++ {
-				_, _, err := firmwareservice.RunDUTCommand(ctx, s.service.DUTServer, time.Minute, "true", nil, nil)
-				if err == nil {
-					break
-				}
-				log.Printf("%s", err)
-				time.Sleep(10 * time.Second)
-			}
-			out, _, err := firmwareservice.RunDUTCommand(ctx, s.service.DUTServer, time.Minute, "ectool", []string{"flashprotect", "now", "disable"}, nil)
-			log.Printf("flashprotect after reboot: %s %s", out, err)
-		}
-		log.Printf("[FW Provisioning: Update RO] extracting EC image to flash\n")
-
-		_, _, err = firmwareservice.RunDUTCommand(ctx, s.service.DUTServer, time.Minute, "mkdir", []string{"-p", firmwareservice.Escape(ecRoMetadata.ArchiveDir)}, nil)
-		if err != nil {
-			return nil, api.InstallResponse_STATUS_UPDATE_FIRMWARE_FAILED, firmwareservice.UpdateFirmwareFailedErr(err)
-		}
-
-		ecRoPath, err = firmwareservice.PickAndExtractECImage(ctx, s.service.DUTServer, ecRoMetadata, s.service.GetEcRoPath(), s.service)
-		if err != nil {
-			return nil, api.InstallResponse_STATUS_UPDATE_FIRMWARE_FAILED, firmwareservice.UpdateFirmwareFailedErr(err)
-		}
-		if s.service.IsServoUsed() {
-			log.Printf("[FW Provisioning: Update RO] separately flashing EC over Servo with flash_ec\n")
-			// futility refuses to flash EC over servod as a separate image and only
-			// accepts single image: http://shortn/_dtaO92HvqW. So, for servod, we
-			// use flash_ec script that to flash the EC separately.
-			flashECScript, err := firmwareservice.GetFlashECScript(ctx, connection, ecRoMetadata.ArchiveDir)
-			if err != nil {
-				return nil, api.InstallResponse_STATUS_UPDATE_FIRMWARE_FAILED, firmwareservice.UpdateFirmwareFailedErr(err)
-			}
-			err = s.service.ProvisionWithFlashEC(ctx, ecRoPath, flashECScript)
-			if err != nil {
-				return nil, api.InstallResponse_STATUS_UPDATE_FIRMWARE_FAILED, firmwareservice.UpdateFirmwareFailedErr(err)
-			}
-		} else {
-			// For SSH, we can simply run `futility ... --ec-image=$EC_IMAGE ...`
-			futilityImageArgs = append(futilityImageArgs, []string{fmt.Sprint("--ec_image=", ecRoPath)}...)
-		}
-	}
-
-	mainRoMetadata, ok := s.service.GetImageMetadata(s.service.GetMainRoPath())
-	if ok {
-		log.Printf("[FW Provisioning: Update RO] extracting AP image to flash\n")
-		mainRoPath, err = firmwareservice.PickAndExtractMainImage(ctx, s.service.DUTServer, mainRoMetadata, s.service.GetMainRoPath(), s.service)
-		if err != nil {
-			return nil, api.InstallResponse_STATUS_UPDATE_FIRMWARE_FAILED, firmwareservice.UpdateFirmwareFailedErr(err)
-		}
-		futilityImageArgs = append(futilityImageArgs, []string{fmt.Sprint("--image=", mainRoPath)}...)
-		hasCSME, err := s.service.CheckForCSMESections(ctx, mainRoPath)
-		if err != nil {
-			return nil, api.InstallResponse_STATUS_UPDATE_FIRMWARE_FAILED, firmwareservice.UpdateFirmwareFailedErr(err)
-		}
-		if hasCSME {
-			futilityImageArgs = append(futilityImageArgs, "--quirks", "unlock_csme")
-		}
-	}
-
-	// If EC RW is present, but AP RW is not, and we were going to flash the AP anyway, then run swap_ec_rw on mainRoPath
-	// Unless EC-RW is the same image as AP-RO
-	ecRwMetadata, ok := s.service.GetImageMetadata(s.service.GetEcRwPath())
-	if mainRoPath != "" && s.service.GetMainRwPath() == "" && ok && board != "drallion" && board != "sarien" &&
-		s.service.GetMainRoPath() != s.service.GetEcRwPath() {
-		log.Printf("[FW Provisioning: Update RO] extracting EC-RW image to flash\n")
-		ecRwPath, err = firmwareservice.PickAndExtractECImage(ctx, s.service.DUTServer, ecRwMetadata, s.service.GetEcRwPath(), s.service)
-		if err != nil {
-			return nil, api.InstallResponse_STATUS_UPDATE_FIRMWARE_FAILED, firmwareservice.UpdateFirmwareFailedErr(err)
-		}
-		newMainPath, err := firmwareservice.SwapECRWImage(ctx, s.service.DUTServer, mainRoPath, ecRwPath)
-		if err != nil {
-			return nil, api.InstallResponse_STATUS_UPDATE_FIRMWARE_FAILED, firmwareservice.UpdateFirmwareFailedErr(err)
-		}
-		if newMainPath != mainRoPath {
-			return nil, api.InstallResponse_STATUS_UPDATE_FIRMWARE_FAILED, errors.Errorf("newMainPath unexpected, got %q, want %q", newMainPath, mainRoPath)
-		}
-	}
-
-	// TODO: Call fws.ExtractFirmwareVersions & fws.ActiveFirmwareVersions, and if they match, then skip flashing.
-	// TODO: Remove fws.ExtractFirmwareVersions from fws.FlashWithFutility
-	log.Printf("[FW Provisioning: Update RO] flashing RO/RW firmware with futility\n")
-	err = s.service.FlashWithFutility(ctx, false /* WP */, futilityImageArgs, mainRoPath, ecRoPath)
-	if err != nil {
-		return nil, api.InstallResponse_STATUS_UPDATE_FIRMWARE_FAILED, firmwareservice.UpdateFirmwareFailedErr(err)
-	}
-
-	return nil, api.InstallResponse_STATUS_SUCCESS, nil
-}
-
-func (s FirmwareUpdateRoState) Next() ServiceState {
-	if s.service.UpdateRw() {
-		return FirmwareUpdateRwState(s)
-	} else {
-		return FirmwarePostInstallState(s)
-	}
-}
-
-const UpdateRoStateName = "Firmware Update RO"
-
-func (s FirmwareUpdateRoState) Name() string {
-	return UpdateRoStateName
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/state-machine/updaterwstate.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/state-machine/updaterwstate.go
deleted file mode 100644
index cf95f62..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/state-machine/updaterwstate.go
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// First step of FirmwareService State Machine. Installs RW firmware.
-package state_machine
-
-import (
-	"context"
-	"fmt"
-	"log"
-
-	firmwareservice "go.chromium.org/chromiumos/test/provision/v2/cros-fw-provision/service"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-// FirmwareUpdateRwState updates firmware with write protection disabled.
-type FirmwareUpdateRwState struct {
-	service *firmwareservice.FirmwareService
-}
-
-// Execute flashes firmware using futility with write-protection enabled.
-func (s FirmwareUpdateRwState) Execute(ctx context.Context, log *log.Logger) (*api.FirmwareProvisionResponse, api.InstallResponse_Status, error) {
-	// form futility command args based on the request
-	var futilityImageArgs []string
-	var mainRwPath, ecRwPath string
-	var err error
-
-	// Get AP Image
-	mainRwMetadata, ok := s.service.GetImageMetadata(s.service.GetMainRwPath())
-	if ok {
-		log.Printf("[FW Provisioning: Update RW] extracting AP image to flash\n")
-		mainRwPath, err = firmwareservice.PickAndExtractMainImage(ctx, s.service.DUTServer, mainRwMetadata, s.service.GetMainRwPath(), s.service)
-		if err != nil {
-			return nil, api.InstallResponse_STATUS_UPDATE_FIRMWARE_FAILED, firmwareservice.UpdateFirmwareFailedErr(err)
-		}
-		futilityImageArgs = []string{fmt.Sprint("--image=", mainRwPath)}
-	}
-
-	// Get EC Image
-	ecRwMetadata, ok := s.service.GetImageMetadata(s.service.GetEcRwPath())
-	if ok {
-		log.Printf("[FW Provisioning: Update RW] extracting EC-RW image to flash\n")
-		ecRwPath, err = firmwareservice.PickAndExtractECImage(ctx, s.service.DUTServer, ecRwMetadata, s.service.GetEcRwPath(), s.service)
-		if err != nil {
-			return nil, api.InstallResponse_STATUS_UPDATE_FIRMWARE_FAILED, firmwareservice.UpdateFirmwareFailedErr(err)
-		}
-
-		newMainPath, err := firmwareservice.SwapECRWImage(ctx, s.service.DUTServer, mainRwPath, ecRwPath)
-		if err != nil {
-			return nil, api.InstallResponse_STATUS_UPDATE_FIRMWARE_FAILED, firmwareservice.UpdateFirmwareFailedErr(err)
-		}
-		if newMainPath != mainRwPath {
-			mainRwPath = newMainPath
-			futilityImageArgs = []string{fmt.Sprint("--image=", mainRwPath)}
-		}
-	}
-
-	// TODO: Call fws.ExtractFirmwareVersions & fws.ActiveFirmwareVersions, and if they match, then skip flashing.
-	// TODO: Remove fws.ExtractFirmwareVersions from fws.FlashWithFutility
-	log.Printf("[FW Provisioning: Update RW] flashing RW firmware with futility\n")
-	err = s.service.FlashWithFutility(ctx, true /* WP */, futilityImageArgs, mainRwPath, "")
-	if err != nil {
-		return nil, api.InstallResponse_STATUS_UPDATE_FIRMWARE_FAILED, firmwareservice.UpdateFirmwareFailedErr(err)
-	}
-
-	return nil, api.InstallResponse_STATUS_SUCCESS, nil
-}
-
-func (s FirmwareUpdateRwState) Next() ServiceState {
-	return FirmwarePostInstallState(s)
-}
-
-const UpdateRwStateName = "Firmware Update RW"
-
-func (s FirmwareUpdateRwState) Name() string {
-	return UpdateRwStateName
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/cli/abstract_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/cli/abstract_command.go
deleted file mode 100644
index 9565c38..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/cli/abstract_command.go
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Responsible for the abstraction layer representing each command grouping
-package cli
-
-import (
-	"errors"
-	"fmt"
-	"io"
-	"log"
-	"os"
-	"path/filepath"
-)
-
-// AbstractCommand represents a CLI grouping (e.g.: run as server, run as CLI, etc)
-type AbstractCommand interface {
-	// Run runs the command
-	Run() error
-
-	// Is checks if the string is representative of the command
-	Is(string) bool
-
-	// Init is an initializer for the command given the trailing args
-	Init([]string) error
-
-	// Name is the command name (for debugging)
-	Name() string
-}
-
-// SetUpLog sets up the logging for the CLI
-func SetUpLog(dir string) (*log.Logger, error) {
-	if err := os.MkdirAll(dir, 0755); err != nil {
-		return nil, fmt.Errorf("failed to create directory %v: %v", dir, err)
-	}
-	lfp := filepath.Join(dir, "log.txt")
-	lf, err := os.Create(lfp)
-	if err != nil {
-		return nil, fmt.Errorf("failed to create file %v: %v", lfp, err)
-	}
-	newLog := log.New(io.MultiWriter(lf, os.Stderr), "<cros-provision>", log.LstdFlags|log.LUTC)
-	newLog.SetFlags(log.LstdFlags | log.Lshortfile | log.Lmsgprefix)
-	return newLog, nil
-}
-
-// ParseInputs is a helper method which parses input arguments. It is
-// effectively a factory method.
-func ParseInputs() (AbstractCommand, error) {
-	if len(os.Args) < 1 {
-		return nil, errors.New("CLI arguments must be specified")
-	}
-
-	cmds := []AbstractCommand{
-		NewServerCommand(),
-		NewCLICommand(),
-	}
-
-	subcommand := os.Args[1]
-	options := []string{}
-
-	for _, cmd := range cmds {
-		options = append(options, cmd.Name())
-		if cmd.Is(subcommand) {
-			if err := cmd.Init(os.Args[2:]); err != nil {
-				return nil, fmt.Errorf("failed to initialize cli command, %s", err)
-			}
-			return cmd, nil
-		}
-	}
-
-	return nil, fmt.Errorf("unknown subcommand: %s. \nOptions are: [%s]", subcommand, options)
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/cli/cli_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/cli/cli_command.go
deleted file mode 100644
index 874b7c2..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/cli/cli_command.go
+++ /dev/null
@@ -1,186 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Represents the CLI command grouping
-package cli
-
-import (
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/constants"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	state_machine "go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine"
-	"context"
-	"errors"
-	"flag"
-	"fmt"
-	"log"
-	"os"
-	"path/filepath"
-	"strings"
-
-	lab_api "go.chromium.org/chromiumos/config/go/test/lab/api"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"google.golang.org/grpc"
-	"google.golang.org/protobuf/encoding/protojson"
-)
-
-var statusToResult = map[api.InstallResponse_Status]api.InstallFailure_Reason{
-	api.InstallResponse_STATUS_INVALID_REQUEST:                        api.InstallFailure_REASON_INVALID_REQUEST,
-	api.InstallResponse_STATUS_DUT_UNREACHABLE_PRE_PROVISION:          api.InstallFailure_REASON_DUT_UNREACHABLE_PRE_PROVISION,
-	api.InstallResponse_STATUS_DOWNLOADING_IMAGE_FAILED:               api.InstallFailure_REASON_DOWNLOADING_IMAGE_FAILED,
-	api.InstallResponse_STATUS_PROVISIONING_TIMEDOUT:                  api.InstallFailure_REASON_PROVISIONING_TIMEDOUT,
-	api.InstallResponse_STATUS_PROVISIONING_FAILED:                    api.InstallFailure_REASON_PROVISIONING_FAILED,
-	api.InstallResponse_STATUS_DUT_UNREACHABLE_POST_PROVISION:         api.InstallFailure_REASON_DUT_UNREACHABLE_POST_PROVISION,
-	api.InstallResponse_STATUS_UPDATE_FIRMWARE_FAILED:                 api.InstallFailure_REASON_UPDATE_FIRMWARE_FAILED,
-	api.InstallResponse_STATUS_FIRMWARE_MISMATCH_POST_FIRMWARE_UPDATE: api.InstallFailure_REASON_FIRMWARE_MISMATCH_POST_FIRMWARE_UPDATE,
-	api.InstallResponse_STATUS_DUT_UNREACHABLE_POST_FIRMWARE_UPDATE:   api.InstallFailure_REASON_DUT_UNREACHABLE_POST_FIRMWARE_UPDATE,
-	api.InstallResponse_STATUS_UPDATE_MINIOS_FAILED:                   api.InstallFailure_REASON_UPDATE_MINIOS_FAILED,
-	api.InstallResponse_STATUS_POST_PROVISION_SETUP_FAILED:            api.InstallFailure_REASON_POST_PROVISION_SETUP_FAILED,
-	api.InstallResponse_STATUS_CLEAR_TPM_FAILED:                       api.InstallFailure_REASON_CLEAR_TPM_FAILED,
-	api.InstallResponse_STATUS_STABLIZE_DUT_FAILED:                    api.InstallFailure_REASON_STABLIZE_DUT_FAILED,
-	api.InstallResponse_STATUS_INSTALL_DLC_FAILED:                     api.InstallFailure_REASON_INSTALL_DLC_FAILED,
-	api.InstallResponse_STATUS_PRE_PROVISION_SETUP_FAILED:             api.InstallFailure_REASON_PRE_PROVISION_SETUP_FAILED,
-	api.InstallResponse_STATUS_IMAGE_MISMATCH_POST_PROVISION_UPDATE:   api.InstallFailure_REASON_IMAGE_MISMATCH_POST_PROVISION_UPDATE,
-}
-
-// CLI command executed the provisioning as a CLI
-type CLICommand struct {
-	logFileName string
-	log         *log.Logger
-	inputFile   string
-	inputProto  *api.CrosProvisionRequest
-	outputFile  string
-	flagSet     *flag.FlagSet
-}
-
-func NewCLICommand() *CLICommand {
-	cc := &CLICommand{
-		flagSet: flag.NewFlagSet("server", flag.ContinueOnError),
-	}
-
-	cc.flagSet.StringVar(&cc.logFileName, "log-path", constants.DefaultLogDirectory, fmt.Sprintf("Path to record execution logs. Default value is %s", constants.DefaultLogDirectory))
-	cc.flagSet.StringVar(&cc.inputFile, "input", "", "Specify the request jsonproto input file. Provide service paths and ProvisionState.")
-	cc.flagSet.StringVar(&cc.outputFile, "output", "", "Specify the response jsonproto output file. Empty placeholder file to provide result from provisioning the DUT.")
-	return cc
-}
-
-func (cc *CLICommand) Is(group string) bool {
-	return strings.HasPrefix(group, "c")
-}
-
-func (cc *CLICommand) Name() string {
-	return "cli"
-}
-
-func (cc *CLICommand) Init(args []string) error {
-	err := cc.flagSet.Parse(args)
-	if err != nil {
-		return err
-	}
-
-	cc.log, err = SetUpLog(cc.logFileName)
-	if err != nil {
-		return err
-	}
-
-	if err = cc.validate(); err != nil {
-		return err
-	}
-
-	cc.inputProto, err = common_utils.ParseCrosProvisionRequest(cc.inputFile)
-	if err != nil {
-		return fmt.Errorf("unable to parse CrosProvisionRequest proto: %s", err)
-	}
-
-	return nil
-}
-
-// Logger returns the log
-func (cc *CLICommand) Logger() *log.Logger {
-	return cc.log
-}
-
-// validate checks if inputs are ok
-func (cc *CLICommand) validate() error {
-	if cc.inputFile == "" {
-		return errors.New("input file not specified")
-	}
-
-	if cc.outputFile == "" {
-		return errors.New("output file not specified")
-	}
-	return nil
-}
-
-func (cc *CLICommand) Run() error {
-	cc.log.Printf("Running CLI Mode (V2):")
-	dutAddr := fmt.Sprintf("%s:%d", cc.inputProto.GetDutServer().GetAddress(), cc.inputProto.GetDutServer().GetPort())
-	cc.log.Printf("DutAddr found %s", dutAddr)
-
-	dutConn, err := grpc.Dial(dutAddr, grpc.WithInsecure())
-	if err != nil {
-		cc.log.Printf("DutConn Failed!")
-		return fmt.Errorf("failed to connect to dut-service, %s", err)
-	}
-	cc.log.Printf("Dut Conn Established")
-
-	defer dutConn.Close()
-	cs := service.NewCrOSServiceFromCrOSProvisionRequest(api.NewDutServiceClient(dutConn), cc.inputProto)
-	cc.log.Printf("New CS Created")
-
-	out := &api.CrosProvisionResponse{
-		Id: &lab_api.Dut_Id{
-			Value: cc.inputProto.GetDut().GetId().GetValue(),
-		},
-		Outcome: &api.CrosProvisionResponse_Success{},
-	}
-
-	defer saveCLIOutput(cc.outputFile, out, cc.log)
-	cc.log.Printf("State Machine Start.")
-
-	if respStatus, _, err := common_utils.ExecuteStateMachine(context.Background(), state_machine.NewCrOSPreInitState(cs), cc.log); err != nil {
-		cc.log.Printf("State Machine Failed, setting err to PROVISION_FAILED.")
-		translatedStatus := statusToResult[respStatus]
-		out.Outcome = &api.CrosProvisionResponse_Failure{
-			Failure: &api.InstallFailure{
-				Reason: api.InstallFailure_Reason(translatedStatus),
-			},
-		}
-		cc.log.Printf("State Machine Failed %s.", err)
-		return fmt.Errorf("failed to provision, %s", err)
-	}
-	cc.log.Printf("Finished Successfuly!")
-	return nil
-}
-
-// saveCLIOutput saves response to the output file.
-func saveCLIOutput(outputPath string, out *api.CrosProvisionResponse, log *log.Logger) error {
-	log.Printf("saveCLIOutput out:%s\n", out)
-	if outputPath != "" && out != nil {
-		log.Printf("saveCLIOutput outputPath:%s\n", outputPath)
-		dir := filepath.Dir(outputPath)
-		// Create the directory if it doesn't exist.
-		if err := os.MkdirAll(dir, 0777); err != nil {
-			log.Printf("MKDIR Error.")
-			return fmt.Errorf("save output: fail to create directory for %q", outputPath)
-		}
-		w, err := os.Create(outputPath)
-		if err != nil {
-			log.Printf("Save File Error")
-			return fmt.Errorf("save output: failed to create file %q", outputPath)
-		}
-		defer w.Close()
-
-		if json, err := protojson.Marshal(out); err != nil {
-			log.Printf("Marshal Error")
-			return fmt.Errorf("save output: failed to marshal output")
-		} else {
-			w.Write(json)
-		}
-	} else {
-		log.Printf("saveCLIOutput NO OUTPATH")
-	}
-	return nil
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/cli/server_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/cli/server_command.go
deleted file mode 100644
index 101e8a1..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/cli/server_command.go
+++ /dev/null
@@ -1,115 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Represents the server command grouping
-package cli
-
-import (
-	"errors"
-	"flag"
-	"fmt"
-	"strings"
-
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"go.chromium.org/chromiumos/test/provision/v2/common-utils/metadata"
-	"go.chromium.org/chromiumos/test/provision/v2/common-utils/server"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/constants"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/executor"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-// ServerCommand executed the provisioning as a Server
-type ServerCommand struct {
-	metadata     *metadata.ServerMetadata
-	logFileName  string
-	metadataFile string
-	flagSet      *flag.FlagSet
-}
-
-func NewServerCommand() *ServerCommand {
-	sc := &ServerCommand{
-		flagSet:  flag.NewFlagSet("server", flag.ContinueOnError),
-		metadata: &metadata.ServerMetadata{},
-	}
-
-	sc.flagSet.IntVar(&sc.metadata.Port, "port", constants.DefaultPort, fmt.Sprintf("Specify the port for the server. Default value %d.", constants.DefaultPort))
-	sc.flagSet.StringVar(&sc.logFileName, "log-path", constants.DefaultLogDirectory, fmt.Sprintf("Path to record execution logs. Default value is %s", constants.DefaultLogDirectory))
-	sc.flagSet.StringVar(&sc.metadataFile, "metadata", "", "Specify the request jsonproto input file. Provide service paths and ProvisionState.")
-	return sc
-}
-
-func (sc *ServerCommand) Is(group string) bool {
-	return strings.HasPrefix(group, "s")
-}
-
-func (sc *ServerCommand) Name() string {
-	return "server"
-}
-
-func (sc *ServerCommand) Init(args []string) error {
-	err := sc.flagSet.Parse(args)
-	if err != nil {
-		return err
-	}
-
-	sc.metadata.Log, err = SetUpLog(sc.logFileName)
-	if err != nil {
-		return fmt.Errorf("unable to set up logs: %s", err)
-	}
-
-	if err = sc.validateCLIInputs(); err != nil {
-		return err
-	}
-
-	if sc.metadataFile != "" {
-		sc.metadata.Log.Println("warning: CLI arg 'metadata' is deprecated, please use the StartUp RPC instead.")
-		cpp, err := common_utils.ParseCrosProvisionRequest(sc.metadataFile)
-		if err != nil {
-			return fmt.Errorf("unable to parse CrosProvisionRequest proto: %s", err)
-		}
-
-		if err = sc.validateProtoInputs(cpp); err != nil {
-			return err
-		}
-		sc.metadata.Dut = cpp.GetDut()
-		sc.metadata.DutAddress = fmt.Sprintf("%s:%d", cpp.GetDutServer().GetAddress(), cpp.GetDutServer().GetPort())
-	}
-
-	return nil
-}
-
-// validateCLIInputs ensures the CLI input values are valid
-func (cc *ServerCommand) validateCLIInputs() error {
-	return nil
-}
-
-// validateProtoInputs ensures the proto part of the CLI input is valid
-func (cc *ServerCommand) validateProtoInputs(cpp *api.CrosProvisionRequest) error {
-	if cpp.GetDut() == nil || cpp.GetDut().GetId().GetValue() == "" {
-		return errors.New("dut id is not specified in input file")
-	}
-	if cpp.GetDutServer() == nil || cpp.DutServer.GetAddress() == "" || cpp.DutServer.GetPort() <= 0 {
-		return errors.New("dut server address is no specified or incorrect in input file")
-	}
-	return nil
-}
-
-func (sc *ServerCommand) Run() error {
-	sc.metadata.Log.Printf("running server mode:")
-
-	ps, closer, err := server.NewProvisionServer(sc.metadata, &executor.CrOSProvisionExecutor{Logger: sc.metadata.Log})
-	defer closer()
-	if err != nil {
-		sc.metadata.Log.Fatalln("failed to create provision: ", err)
-		return err
-	}
-
-	if err := ps.Start(); err != nil {
-		sc.metadata.Log.Fatalln("failed server execution: ", err)
-		return err
-	}
-
-	return nil
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/constants/cli_defaults.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/constants/cli_defaults.go
deleted file mode 100644
index 961ccb5..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/constants/cli_defaults.go
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Local constants to CrosProvision CLI
-package constants
-
-const (
-	DefaultPort         = 80
-	DefaultLogDirectory = "/tmp/provisionservice/"
-)
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/cros_provision_test.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/cros_provision_test.go
deleted file mode 100644
index 18c559c..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/cros_provision_test.go
+++ /dev/null
@@ -1,1688 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package main
-
-import (
-	"context"
-	"errors"
-	"fmt"
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/cli"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/constants"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	state_machine "go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine"
-	mock_common_utils "go.chromium.org/chromiumos/test/provision/v2/mock-common-utils"
-	"testing"
-
-	"github.com/golang/mock/gomock"
-	conf "go.chromium.org/chromiumos/config/go"
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-const (
-	deviceDisk                        = "/dev/nvme0n1"
-	deviceDiskPartition               = deviceDisk + "p"
-	deviceDiskStateful                = deviceDiskPartition + common_utils.PartitionNumStateful
-	deviceDiskKernelB                 = deviceDiskPartition + common_utils.PartitionNumKernelB
-	deviceDiskRootA                   = deviceDiskPartition + common_utils.PartitionNumRootA
-	deviceDiskRootB                   = deviceDiskPartition + common_utils.PartitionNumRootB
-	deviceDiskMiniA                   = deviceDiskPartition + common_utils.PartitionNumMiniOSA
-	deviceDiskMiniB                   = deviceDiskPartition + common_utils.PartitionNumMiniOSB
-	mockedValidCrosidStdout           = "SKU=33\nCONFIG_INDEX=9\nFIRMWARE_MANIFEST_KEY='babytiger'\n"
-	mockedValidFirmwareManifestStdout = "{\n  \"babytiger\": {\n    \"host\": { \"versions\": { \"ro\": \"Google_Coral.10068.113.0\", \"rw\": \"Google_Coral.10068.113.0\" },\n      \"keys\": { \"root\": \"b11d74edd286c144e1135b49e7f0bc20cf041f10\", \"recovery\": \"c14bd720b70d97394257e3e826bd8f43de48d4ed\" },\n      \"image\": \"images/bios-coral.ro-10068-113-0.rw-10068-113-0.bin\" },\n    \"ec\": { \"versions\": { \"ro\": \"coral_v1.1.7302-d2b56e247\", \"rw\": \"coral_v1.1.7302-d2b56e247\" },\n      \"image\": \"images/ec-coral.ro-1-1-7302.rw-1-1-7302.bin\" },\n    \"signature_id\": \"babytiger\"\n  }\n}\n"
-)
-
-type PathExistsCommandStructure struct {
-	Path string
-}
-
-type RunCommandStructure struct {
-	Command string
-	Args    []string
-}
-
-type CopyCommandStructure struct {
-	Source string
-	Dest   string
-}
-
-type PipeCommandStructure struct {
-	Source  string
-	Command string
-}
-
-type CreateDirsStructure struct {
-	Dirs []string
-}
-
-type DeleteDirStructure struct {
-	Dir string
-}
-
-// GENERAL COMMANDS
-var (
-	createProvisionMarker     = RunCommandStructure{Command: "touch", Args: []string{"/var/tmp/provision_failed"}}
-	rootDevPartition          = RunCommandStructure{Command: "rootdev", Args: []string{"-s"}}
-	rootDevDisk               = RunCommandStructure{Command: "rootdev", Args: []string{"-s", "-d"}}
-	getBoard                  = RunCommandStructure{Command: "cat", Args: []string{"/etc/lsb-release"}}
-	getVersion                = RunCommandStructure{Command: "cat", Args: []string{"/etc/lsb-release"}}
-	stopUI                    = RunCommandStructure{Command: "stop", Args: []string{"ui"}}
-	stopUpdateEngine          = RunCommandStructure{Command: "stop", Args: []string{"update-engine"}}
-	kvmDevicePathExists       = PathExistsCommandStructure{Path: common_utils.KvmDevicePath}
-	stopDLCservice            = RunCommandStructure{Command: "stop", Args: []string{"dlcservice"}}
-	startDLCservice           = RunCommandStructure{Command: "start", Args: []string{"dlcservice"}}
-	copyKernel                = PipeCommandStructure{Source: "gs://path/to/image/full_dev_part_KERN.bin.gz", Command: "gzip -d | dd of=" + deviceDiskKernelB + " obs=2M \npipestatus=(\"${PIPESTATUS[@]}\")\nif [[ \"${pipestatus[0]}\" -ne 0 ]]; then\n  echo \"$(date --rfc-3339=seconds) ERROR: Fetching path/to/image failed.\" >&2\n  exit 1\nelif [[ \"${pipestatus[1]}\" -ne 0 ]]; then\n  echo \"$(date --rfc-3339=seconds) ERROR: Decompressing path/to/image failed.\" >&2\n  exit 1\nelif [[ \"${pipestatus[2]}\" -ne 0 ]]; then\n  echo \"$(date --rfc-3339=seconds) ERROR: Writing to " + deviceDiskKernelB + " failed.\" >&2\n  exit 1\nfi"}
-	copyZstKernel             = PipeCommandStructure{Source: "gs://path/to/image/full_KERN.bin.zst", Command: "zstdcat | dd of=" + deviceDiskKernelB + " obs=2M \npipestatus=(\"${PIPESTATUS[@]}\")\nif [[ \"${pipestatus[0]}\" -ne 0 ]]; then\n  echo \"$(date --rfc-3339=seconds) ERROR: Fetching path/to/image failed.\" >&2\n  exit 1\nelif [[ \"${pipestatus[1]}\" -ne 0 ]]; then\n  echo \"$(date --rfc-3339=seconds) ERROR: Decompressing path/to/image failed.\" >&2\n  exit 1\nelif [[ \"${pipestatus[2]}\" -ne 0 ]]; then\n  echo \"$(date --rfc-3339=seconds) ERROR: Writing to " + deviceDiskKernelB + " failed.\" >&2\n  exit 1\nfi"}
-	copyRoot                  = PipeCommandStructure{Source: "gs://path/to/image/full_dev_part_ROOT.bin.gz", Command: "gzip -d | dd of=" + deviceDiskRootB + " obs=2M \npipestatus=(\"${PIPESTATUS[@]}\")\nif [[ \"${pipestatus[0]}\" -ne 0 ]]; then\n  echo \"$(date --rfc-3339=seconds) ERROR: Fetching path/to/image failed.\" >&2\n  exit 1\nelif [[ \"${pipestatus[1]}\" -ne 0 ]]; then\n  echo \"$(date --rfc-3339=seconds) ERROR: Decompressing path/to/image failed.\" >&2\n  exit 1\nelif [[ \"${pipestatus[2]}\" -ne 0 ]]; then\n  echo \"$(date --rfc-3339=seconds) ERROR: Writing to " + deviceDiskRootB + " failed.\" >&2\n  exit 1\nfi"}
-	copyZstRoot               = PipeCommandStructure{Source: "gs://path/to/image/full_ROOT.bin.zst", Command: "zstdcat | dd of=" + deviceDiskRootB + " obs=2M \npipestatus=(\"${PIPESTATUS[@]}\")\nif [[ \"${pipestatus[0]}\" -ne 0 ]]; then\n  echo \"$(date --rfc-3339=seconds) ERROR: Fetching path/to/image failed.\" >&2\n  exit 1\nelif [[ \"${pipestatus[1]}\" -ne 0 ]]; then\n  echo \"$(date --rfc-3339=seconds) ERROR: Decompressing path/to/image failed.\" >&2\n  exit 1\nelif [[ \"${pipestatus[2]}\" -ne 0 ]]; then\n  echo \"$(date --rfc-3339=seconds) ERROR: Writing to " + deviceDiskRootB + " failed.\" >&2\n  exit 1\nfi"}
-	makeTemp                  = RunCommandStructure{Command: "mktemp", Args: []string{"-d"}}
-	mountTemp                 = RunCommandStructure{Command: "mount", Args: []string{"-o", "ro", deviceDiskRootB, "temporary_dir"}}
-	postInstTemp              = RunCommandStructure{Command: "temporary_dir/postinst", Args: []string{deviceDiskRootB}}
-	umountTemp                = RunCommandStructure{Command: "umount", Args: []string{"temporary_dir"}}
-	deleteTemp                = RunCommandStructure{Command: "rmdir", Args: []string{"temporary_dir"}}
-	crosSystem                = RunCommandStructure{Command: "crossystem", Args: []string{"clear_tpm_owner_request=1"}}
-	waitforStabilize          = RunCommandStructure{Command: "status", Args: []string{"system-services"}}
-	cleanPostInstall          = RunCommandStructure{Command: "rm", Args: []string{"-rf", "/mnt/stateful_partition/.update_available", "/mnt/stateful_partition/var_new", "/mnt/stateful_partition/dev_image_new"}}
-	copyStateful              = PipeCommandStructure{Source: "gs://path/to/image/stateful.tgz", Command: "tar --ignore-command-error --overwrite --directory=/mnt/stateful_partition --selinux -xzf -"}
-	copyZstStateful           = PipeCommandStructure{Source: "gs://path/to/image/stateful.zst", Command: "tar --ignore-command-error --overwrite --directory=/mnt/stateful_partition --selinux --zstd -xf -"}
-	createUpdateAvailableFile = RunCommandStructure{Command: "echo", Args: []string{"-n", "clobber", ">", "/mnt/stateful_partition/.update_available"}}
-	dlcAVerifiedExists        = PathExistsCommandStructure{Path: "/var/lib/dlcservice/dlc/1/dlc_a/verified"}
-	createDLCDir              = CreateDirsStructure{Dirs: []string{"/var/cache/dlc/1/package/dlc_a"}}
-	chownDLCs                 = RunCommandStructure{Command: "chown", Args: []string{"-R", "dlcservice:dlcservice", "/var/cache/dlc"}}
-	chmodDLCs                 = RunCommandStructure{Command: "chmod", Args: []string{"-R", "0755", "/var/cache/dlc"}}
-	cgptRoot9                 = RunCommandStructure{Command: "cgpt", Args: []string{"show", "-t", deviceDisk, "-i", "9"}}
-	cgptRoot10                = RunCommandStructure{Command: "cgpt", Args: []string{"show", "-t", deviceDisk, "-i", "10"}}
-	cgptRepairCheck           = RunCommandStructure{Command: "cgpt", Args: []string{"repair", deviceDisk}}
-	cgptStickyCheck           = RunCommandStructure{Command: "cgpt", Args: []string{"show", "-S", "-i", "2", deviceDisk}}
-	copyMiniOS9               = PipeCommandStructure{Source: "gs://path/to/image/full_dev_part_MINIOS.bin.gz", Command: "gzip -d | dd of=" + deviceDiskMiniA + " obs=2M \npipestatus=(\"${PIPESTATUS[@]}\")\nif [[ \"${pipestatus[0]}\" -ne 0 ]]; then\n  echo \"$(date --rfc-3339=seconds) ERROR: Fetching path/to/image failed.\" >&2\n  exit 1\nelif [[ \"${pipestatus[1]}\" -ne 0 ]]; then\n  echo \"$(date --rfc-3339=seconds) ERROR: Decompressing path/to/image failed.\" >&2\n  exit 1\nelif [[ \"${pipestatus[2]}\" -ne 0 ]]; then\n  echo \"$(date --rfc-3339=seconds) ERROR: Writing to " + deviceDiskMiniA + " failed.\" >&2\n  exit 1\nfi"}
-	copyMiniOS10              = PipeCommandStructure{Source: "gs://path/to/image/full_dev_part_MINIOS.bin.gz", Command: "gzip -d | dd of=" + deviceDiskMiniB + " obs=2M \npipestatus=(\"${PIPESTATUS[@]}\")\nif [[ \"${pipestatus[0]}\" -ne 0 ]]; then\n  echo \"$(date --rfc-3339=seconds) ERROR: Fetching path/to/image failed.\" >&2\n  exit 1\nelif [[ \"${pipestatus[1]}\" -ne 0 ]]; then\n  echo \"$(date --rfc-3339=seconds) ERROR: Decompressing path/to/image failed.\" >&2\n  exit 1\nelif [[ \"${pipestatus[2]}\" -ne 0 ]]; then\n  echo \"$(date --rfc-3339=seconds) ERROR: Writing to " + deviceDiskMiniB + " failed.\" >&2\n  exit 1\nfi"}
-	checkFirmwareUpdater      = PathExistsCommandStructure{Path: common_utils.FirmwareUpdaterPath}
-	updateFirmware            = RunCommandStructure{Command: common_utils.FirmwareUpdaterPath, Args: []string{"--wp=1", "--mode=autoupdate"}}
-	currentFirmwareSlot       = RunCommandStructure{Command: "crossystem", Args: []string{common_utils.CrossystemCurrentFirmwareSlotKey}}
-	nextFirmwareSlot          = RunCommandStructure{Command: "crossystem", Args: []string{common_utils.CrossystemNextFirmwareSlotKey}}
-	firmwareManifest          = RunCommandStructure{Command: common_utils.FirmwareUpdaterPath, Args: []string{"--manifest"}}
-	getCrosid                 = RunCommandStructure{Command: "crosid", Args: []string{}}
-	getCurrentFirmware        = RunCommandStructure{Command: "crossystem", Args: []string{"fwid"}}
-	hwsecID                   = RunCommandStructure{Command: "hwsec-ownership-id", Args: []string{"id"}}
-	chargeLimitEnabled        = RunCommandStructure{Command: "echo", Args: []string{"\"1\"", ">", "/var/lib/power_manager/charge_limit_enabled"}}
-	chargePercentHold         = RunCommandStructure{Command: "echo", Args: []string{"\"3\"", ">", "/var/lib/power_manager/adaptive_charging_hold_delta_percent"}}
-	stopPowerd                = RunCommandStructure{Command: "stop", Args: []string{"powerd", "2>&1"}}
-	startPowerd               = RunCommandStructure{Command: "start", Args: []string{"powerd", "2>&1"}}
-	getForceProvisionMarker   = PathExistsCommandStructure{Path: "/mnt/stateful_partition/.force_provision"}
-	bootIDCheck               = RunCommandStructure{Command: "/bin/cat", Args: []string{"/proc/sys/kernel/random/boot_id"}}
-	sysrqTrigger              = RunCommandStructure{Command: "/bin/echo", Args: []string{"\"b\"", ">", "/proc/sysrq-trigger"}}
-)
-
-// WIPE STATEFUL CONSTANTS + COMMANDS
-const (
-	wsTmp = "ws_temporary_dir"
-)
-
-var (
-	absMkTemp        = RunCommandStructure{Command: "/usr/bin/mktemp", Args: []string{"-d"}}
-	create512MibZero = RunCommandStructure{Command: "/bin/dd", Args: []string{"if=/dev/zero", fmt.Sprintf("of=%s/fs", wsTmp), "bs=512M", "count=1"}}
-	mkfsExt4         = RunCommandStructure{Command: "/sbin/mkfs.ext4", Args: []string{"-O", "none,has_journal", wsTmp + "/fs"}}
-	mkMnt            = RunCommandStructure{Command: "/bin/mkdir", Args: []string{wsTmp + "/mnt"}}
-	mountFsToMnt     = RunCommandStructure{Command: "/bin/mount", Args: []string{wsTmp + "/fs", wsTmp + "/mnt"}}
-	markFsFastWipe   = RunCommandStructure{Command: "/bin/echo", Args: []string{"-n", "\"fast safe keepimg\"", ">", wsTmp + "/mnt/factory_install_reset"}}
-	umountMnt        = RunCommandStructure{Command: "/bin/umount", Args: []string{wsTmp + "/mnt"}}
-	freezeStateful   = RunCommandStructure{Command: "/sbin/fsfreeze", Args: []string{"-f", "/mnt/stateful_partition"}}
-	hackStateful     = RunCommandStructure{Command: "/bin/dd", Args: []string{fmt.Sprintf("if=%s/fs", wsTmp), fmt.Sprintf("of=%s", deviceDiskStateful), "bs=1M", "conv=fsync"}}
-)
-
-// REVERT COMMANDS
-var (
-	cleanPostInstallRevert = RunCommandStructure{Command: "rm", Args: []string{"-rf", "/mnt/stateful_partition/var_new", "/mnt/stateful_partition/dev_image_new", "/mnt/stateful_partition/.update_available"}}
-	postInstRevert         = RunCommandStructure{Command: "/postinst", Args: []string{deviceDiskRootA, "2>&1"}}
-)
-
-// OVERWRITE COMMANDS
-var (
-	copyOverwritePayload = PipeCommandStructure{Source: "path/to/image/overwite.tar", Command: "tar xf - -C /"}
-)
-
-func TestStateTransitions(t *testing.T) {
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-
-	sam := mock_common_utils.NewMockServiceAdapterInterface(ctrl)
-	log, _ := cli.SetUpLog(constants.DefaultLogDirectory)
-	cs := service.NewCrOSServiceFromExistingConnection(
-		sam,
-		&conf.StoragePath{
-			HostType: conf.StoragePath_GS,
-			Path:     "path/to/image",
-		},
-		nil,
-		false,
-		[]*api.CrOSProvisionMetadata_DLCSpec{{Id: "1"}},
-		true, // FirmwareUpdate enabled.
-	)
-
-	ctx := context.Background()
-
-	// PRE INIT STATE
-	st := state_machine.NewCrOSPreInitState(&cs)
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, getBoard).Return("CHROMEOS_RELEASE_BOARD=(not_reven)", nil),
-		getRunCmdCommand(sam, getVersion).Return("CHROMEOS_RELEASE_BUILDER_PATH=drallion-release/R110-15278.35.0", nil),
-		getPathExistsCommand(sam, getForceProvisionMarker).Return(false, nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed pre-init state: %v", err)
-	}
-
-	// INIT STATE
-	st = st.Next()
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, createProvisionMarker).Return("", nil),
-		getRunCmdCommand(sam, rootDevPartition).Return(deviceDiskRootA, nil),
-		getRunCmdCommand(sam, rootDevDisk).Return(deviceDisk, nil),
-		getPathExistsCommand(sam, kvmDevicePathExists).Return(true, nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed init state: %v", err)
-	}
-
-	// INSTALL
-	st = st.Next()
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, stopUI).Return("", nil),
-		getRunCmdCommand(sam, stopUpdateEngine).Return("", nil),
-		getPipeDataCommand(sam, copyZstKernel).Return(nil),
-		getPipeDataCommand(sam, copyZstRoot).Return(nil),
-		getRunCmdCommand(sam, makeTemp).Return("temporary_dir", nil),
-		getRunCmdCommand(sam, mountTemp).Return("", nil),
-		getRunCmdCommand(sam, postInstTemp).Return("", nil),
-		getRunCmdCommand(sam, umountTemp).Return("", nil),
-		getRunCmdCommand(sam, deleteTemp).Return("", nil),
-		getRunCmdCommand(sam, crosSystem).Return("", nil),
-		getRunCmdCommand(sam, absMkTemp).Return(wsTmp, nil),
-		getRunCmdCommand(sam, create512MibZero).Return("", nil),
-		getRunCmdCommand(sam, mkfsExt4).Return("", nil),
-		getRunCmdCommand(sam, mkMnt).Return("", nil),
-		getRunCmdCommand(sam, mountFsToMnt).Return("", nil),
-		getRunCmdCommand(sam, markFsFastWipe).Return("", nil),
-		getRunCmdCommand(sam, umountMnt).Return("", nil),
-		getRunCmdCommand(sam, freezeStateful).Return("", nil),
-		getRunCmdCommand(sam, hackStateful).Return("", nil),
-		getRunCmdCommand(sam, bootIDCheck).Return("rand-foo", nil),
-		getRunCmdCommand(sam, sysrqTrigger).Return("", nil),
-		getForceReconnectWithBackoffCommand(sam).Return(nil),
-		getRunCmdCommand(sam, bootIDCheck).Return("rand-bar", nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed install state: %v", err)
-	}
-
-	// UPDATE FIRMWARE
-	st = st.Next()
-
-	gomock.InOrder(
-		getPathExistsCommand(sam, checkFirmwareUpdater).Return(true, nil),
-		getRunCmdCommand(sam, waitforStabilize).Return("start/running", nil),
-		getRunCmdCommand(sam, updateFirmware).Return("", nil),
-		getRunCmdCommand(sam, currentFirmwareSlot).Return("A", nil),
-		getRunCmdCommand(sam, nextFirmwareSlot).Return("B", nil),
-		getRestartCommand(sam).Return(nil),
-		getRunCmdCommand(sam, firmwareManifest).Return(mockedValidFirmwareManifestStdout, nil),
-		getRunCmdCommand(sam, getCrosid).Return(mockedValidCrosidStdout, nil),
-		getRunCmdCommand(sam, getCurrentFirmware).Return("Google_Coral.10068.113.0", nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed firmware-update state: %v", err)
-	}
-
-	// POST INSTALL
-	st = st.Next()
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, waitforStabilize).Return("start/running", nil),
-		getRunCmdCommand(sam, rootDevPartition).Return(deviceDiskRootA, nil),
-		getRunCmdCommand(sam, rootDevDisk).Return(deviceDisk, nil),
-		getRunCmdCommand(sam, cgptRepairCheck).Return("", nil),
-		getRunCmdCommand(sam, cgptStickyCheck).Return("1", nil),
-		getRunCmdCommand(sam, stopUI).Return("", nil),
-		getRunCmdCommand(sam, stopUpdateEngine).Return("", nil),
-		getRunCmdCommand(sam, cleanPostInstall).Return("", nil),
-		getPipeDataCommand(sam, copyZstStateful).Return(nil),
-		getRunCmdCommand(sam, createUpdateAvailableFile).Return("", nil),
-		getRunCmdCommand(sam, crosSystem).Return("", nil),
-		getRestartCommand(sam).Return(nil),
-		getRunCmdCommand(sam, rootDevPartition).Return(deviceDiskRootA, nil),
-		getRunCmdCommand(sam, rootDevDisk).Return(deviceDisk, nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed post-install state: %v", err)
-	}
-	// VERIFY
-	st = st.Next()
-	gomock.InOrder(
-		getRunCmdCommand(sam, getVersion).Return("CHROMEOS_RELEASE_BUILDER_PATH=path/to/image", nil),
-		getRunCmdCommand(sam, chargeLimitEnabled).Return("", nil),
-		getRunCmdCommand(sam, chargePercentHold).Return("", nil),
-		getRunCmdCommand(sam, stopPowerd).Return("", nil),
-		getRunCmdCommand(sam, startPowerd).Return("", nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed verify state: %v", err)
-	}
-
-	// INSTALL DLCS
-	st = st.Next()
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, stopDLCservice).Return("", nil),
-	)
-	// Concurrent Portion
-	// Return not verfied so we can test full case:
-	getPathExistsCommand(sam, dlcAVerifiedExists).Return(false, nil)
-	getCreateDirCommand(sam, createDLCDir).Return(nil)
-	sam.EXPECT().CopyData(gomock.Any(), gomock.Any(), gomock.Eq("/var/cache/dlc/1/package/dlc_a/dlc.img")).Return(nil)
-	getRunCmdCommand(sam, startDLCservice).Times(1).Return("", nil)
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, chownDLCs).Return("", nil),
-		getRunCmdCommand(sam, chmodDLCs).Return("", nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed install DLCs state: %v", err)
-	}
-
-	// INSTALL MINIOS
-	st = st.Next()
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, cgptRoot9).Return("09845860-705F-4BB5-B16C-8A8A099CAF52", nil),
-		getRunCmdCommand(sam, cgptRoot10).Return("09845860-705F-4BB5-B16C-8A8A099CAF52", nil),
-		getPipeDataCommand(sam, copyMiniOS9).Return(nil),
-		getPipeDataCommand(sam, copyMiniOS10).Return(nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed install MiniOS state: %v", err)
-	}
-
-	// Check state completion
-	if st.Next() != nil {
-		t.Fatalf("install minios should be the last step")
-	}
-}
-
-func TestStateTransitionsInstallationFallback(t *testing.T) {
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-
-	sam := mock_common_utils.NewMockServiceAdapterInterface(ctrl)
-	log, _ := cli.SetUpLog(constants.DefaultLogDirectory)
-	cs := service.NewCrOSServiceFromExistingConnection(
-		sam,
-		&conf.StoragePath{
-			HostType: conf.StoragePath_GS,
-			Path:     "path/to/image",
-		},
-		nil,
-		false,
-		[]*api.CrOSProvisionMetadata_DLCSpec{{Id: "1"}},
-		true, // FirmwareUpdate enabled.
-	)
-
-	ctx := context.Background()
-
-	// PRE INIT STATE
-	st := state_machine.NewCrOSPreInitState(&cs)
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, getBoard).Return("CHROMEOS_RELEASE_BOARD=(not_reven)", nil),
-		getRunCmdCommand(sam, getVersion).Return("CHROMEOS_RELEASE_BUILDER_PATH=drallion-release/R110-15278.35.0", nil),
-		getPathExistsCommand(sam, getForceProvisionMarker).Return(false, nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed pre-init state: %v", err)
-	}
-
-	// INIT STATE
-	st = st.Next()
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, createProvisionMarker).Return("", nil),
-		getRunCmdCommand(sam, rootDevPartition).Return(deviceDiskRootA, nil),
-		getRunCmdCommand(sam, rootDevDisk).Return(deviceDisk, nil),
-		getPathExistsCommand(sam, kvmDevicePathExists).Return(true, nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed init state: %v", err)
-	}
-
-	// INSTALL
-	st = st.Next()
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, stopUI).Return("", nil),
-		getRunCmdCommand(sam, stopUpdateEngine).Return("", nil),
-		getPipeDataCommand(sam, copyZstKernel).Return(errors.New("")),
-		getPipeDataCommand(sam, copyKernel).Return(nil),
-		getPipeDataCommand(sam, copyZstRoot).Return(errors.New("")),
-		getPipeDataCommand(sam, copyRoot).Return(nil),
-		getRunCmdCommand(sam, makeTemp).Return("temporary_dir", nil),
-		getRunCmdCommand(sam, mountTemp).Return("", nil),
-		getRunCmdCommand(sam, postInstTemp).Return("", nil),
-		getRunCmdCommand(sam, umountTemp).Return("", nil),
-		getRunCmdCommand(sam, deleteTemp).Return("", nil),
-		getRunCmdCommand(sam, crosSystem).Return("", nil),
-		getRunCmdCommand(sam, absMkTemp).Return(wsTmp, nil),
-		getRunCmdCommand(sam, create512MibZero).Return("", nil),
-		getRunCmdCommand(sam, mkfsExt4).Return("", nil),
-		getRunCmdCommand(sam, mkMnt).Return("", nil),
-		getRunCmdCommand(sam, mountFsToMnt).Return("", nil),
-		getRunCmdCommand(sam, markFsFastWipe).Return("", nil),
-		getRunCmdCommand(sam, umountMnt).Return("", nil),
-		getRunCmdCommand(sam, freezeStateful).Return("", nil),
-		getRunCmdCommand(sam, hackStateful).Return("", nil),
-		getRunCmdCommand(sam, bootIDCheck).Return("rand-foo", nil),
-		getRunCmdCommand(sam, sysrqTrigger).Return("", nil),
-		getForceReconnectWithBackoffCommand(sam).Return(nil),
-		getRunCmdCommand(sam, bootIDCheck).Return("rand-bar", nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed install state: %v", err)
-	}
-
-	// UPDATE FIRMWARE
-	st = st.Next()
-
-	gomock.InOrder(
-		getPathExistsCommand(sam, checkFirmwareUpdater).Return(true, nil),
-		getRunCmdCommand(sam, waitforStabilize).Return("start/running", nil),
-		getRunCmdCommand(sam, updateFirmware).Return("", nil),
-		getRunCmdCommand(sam, currentFirmwareSlot).Return("A", nil),
-		getRunCmdCommand(sam, nextFirmwareSlot).Return("B", nil),
-		getRestartCommand(sam).Return(nil),
-		getRunCmdCommand(sam, firmwareManifest).Return(mockedValidFirmwareManifestStdout, nil),
-		getRunCmdCommand(sam, getCrosid).Return(mockedValidCrosidStdout, nil),
-		getRunCmdCommand(sam, getCurrentFirmware).Return("Google_Coral.10068.113.0", nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed firmware-update state: %v", err)
-	}
-
-	// POST INSTALL
-	st = st.Next()
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, waitforStabilize).Return("start/running", nil),
-		getRunCmdCommand(sam, rootDevPartition).Return(deviceDiskRootA, nil),
-		getRunCmdCommand(sam, rootDevDisk).Return(deviceDisk, nil),
-		getRunCmdCommand(sam, cgptRepairCheck).Return("", nil),
-		getRunCmdCommand(sam, cgptStickyCheck).Return("1", nil),
-		getRunCmdCommand(sam, stopUI).Return("", nil),
-		getRunCmdCommand(sam, stopUpdateEngine).Return("", nil),
-		getRunCmdCommand(sam, cleanPostInstall).Return("", nil),
-		getPipeDataCommand(sam, copyZstStateful).Return(nil),
-		getRunCmdCommand(sam, createUpdateAvailableFile).Return("", nil),
-		getRunCmdCommand(sam, crosSystem).Return("", nil),
-		getRestartCommand(sam).Return(nil),
-		getRunCmdCommand(sam, rootDevPartition).Return(deviceDiskRootA, nil),
-		getRunCmdCommand(sam, rootDevDisk).Return(deviceDisk, nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed post-install state: %v", err)
-	}
-	// VERIFY
-	st = st.Next()
-	gomock.InOrder(
-		getRunCmdCommand(sam, getVersion).Return("CHROMEOS_RELEASE_BUILDER_PATH=path/to/image", nil),
-		getRunCmdCommand(sam, chargeLimitEnabled).Return("", nil),
-		getRunCmdCommand(sam, chargePercentHold).Return("", nil),
-		getRunCmdCommand(sam, stopPowerd).Return("", nil),
-		getRunCmdCommand(sam, startPowerd).Return("", nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed verify state: %v", err)
-	}
-
-	// INSTALL DLCS
-	st = st.Next()
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, stopDLCservice).Return("", nil),
-	)
-	// Concurrent Portion
-	// Return not verfied so we can test full case:
-	getPathExistsCommand(sam, dlcAVerifiedExists).Return(false, nil)
-	getCreateDirCommand(sam, createDLCDir).Return(nil)
-	sam.EXPECT().CopyData(gomock.Any(), gomock.Any(), gomock.Eq("/var/cache/dlc/1/package/dlc_a/dlc.img")).Return(nil)
-	getRunCmdCommand(sam, startDLCservice).Times(1).Return("", nil)
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, chownDLCs).Return("", nil),
-		getRunCmdCommand(sam, chmodDLCs).Return("", nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed install DLCs state: %v", err)
-	}
-
-	// INSTALL MINIOS
-	st = st.Next()
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, cgptRoot9).Return("09845860-705F-4BB5-B16C-8A8A099CAF52", nil),
-		getRunCmdCommand(sam, cgptRoot10).Return("09845860-705F-4BB5-B16C-8A8A099CAF52", nil),
-		getPipeDataCommand(sam, copyMiniOS9).Return(nil),
-		getPipeDataCommand(sam, copyMiniOS10).Return(nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed install MiniOS state: %v", err)
-	}
-
-	// Check state completion
-	if st.Next() != nil {
-		t.Fatalf("install minios should be the last step")
-	}
-}
-
-func TestMismatchPostInstall(t *testing.T) {
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-
-	sam := mock_common_utils.NewMockServiceAdapterInterface(ctrl)
-	log, _ := cli.SetUpLog(constants.DefaultLogDirectory)
-	cs := service.NewCrOSServiceFromExistingConnection(
-		sam,
-		&conf.StoragePath{
-			HostType: conf.StoragePath_GS,
-			Path:     "path/to/image",
-		},
-		nil,
-		false,
-		[]*api.CrOSProvisionMetadata_DLCSpec{{Id: "1"}},
-		true, // FirmwareUpdate enabled.
-	)
-
-	ctx := context.Background()
-
-	// PRE INIT STATE
-	st := state_machine.NewCrOSPreInitState(&cs)
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, getBoard).Return("CHROMEOS_RELEASE_BOARD=(not_reven)", nil),
-		getRunCmdCommand(sam, getVersion).Return("CHROMEOS_RELEASE_BUILDER_PATH=drallion-release/R110-15278.35.0", nil),
-		getPathExistsCommand(sam, getForceProvisionMarker).Return(false, nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed pre-init state: %v", err)
-	}
-
-	// INIT STATE
-	st = st.Next()
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, createProvisionMarker).Return("", nil),
-		getRunCmdCommand(sam, rootDevPartition).Return(deviceDiskRootA, nil),
-		getRunCmdCommand(sam, rootDevDisk).Return(deviceDisk, nil),
-		getPathExistsCommand(sam, kvmDevicePathExists).Return(true, nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed init state: %v", err)
-	}
-
-	// INSTALL
-	st = st.Next()
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, stopUI).Return("", nil),
-		getRunCmdCommand(sam, stopUpdateEngine).Return("", nil),
-		getPipeDataCommand(sam, copyZstKernel).Return(nil),
-		getPipeDataCommand(sam, copyZstRoot).Return(nil),
-		getRunCmdCommand(sam, makeTemp).Return("temporary_dir", nil),
-		getRunCmdCommand(sam, mountTemp).Return("", nil),
-		getRunCmdCommand(sam, postInstTemp).Return("", nil),
-		getRunCmdCommand(sam, umountTemp).Return("", nil),
-		getRunCmdCommand(sam, deleteTemp).Return("", nil),
-		getRunCmdCommand(sam, crosSystem).Return("", nil),
-		getRunCmdCommand(sam, absMkTemp).Return(wsTmp, nil),
-		getRunCmdCommand(sam, create512MibZero).Return("", nil),
-		getRunCmdCommand(sam, mkfsExt4).Return("", nil),
-		getRunCmdCommand(sam, mkMnt).Return("", nil),
-		getRunCmdCommand(sam, mountFsToMnt).Return("", nil),
-		getRunCmdCommand(sam, markFsFastWipe).Return("", nil),
-		getRunCmdCommand(sam, umountMnt).Return("", nil),
-		getRunCmdCommand(sam, freezeStateful).Return("", nil),
-		getRunCmdCommand(sam, hackStateful).Return("", nil),
-		getRunCmdCommand(sam, bootIDCheck).Return("rand-foo", nil),
-		getRunCmdCommand(sam, sysrqTrigger).Return("", nil),
-		getForceReconnectWithBackoffCommand(sam).Return(nil),
-		getRunCmdCommand(sam, bootIDCheck).Return("rand-bar", nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed install state: %v", err)
-	}
-
-	// UPDATE FIRMWARE
-	st = st.Next()
-
-	gomock.InOrder(
-		getPathExistsCommand(sam, checkFirmwareUpdater).Return(true, nil),
-		getRunCmdCommand(sam, waitforStabilize).Return("start/running", nil),
-		getRunCmdCommand(sam, updateFirmware).Return("", nil),
-		getRunCmdCommand(sam, currentFirmwareSlot).Return("A", nil),
-		getRunCmdCommand(sam, nextFirmwareSlot).Return("B", nil),
-		getRestartCommand(sam).Return(nil),
-		getRunCmdCommand(sam, firmwareManifest).Return(mockedValidFirmwareManifestStdout, nil),
-		getRunCmdCommand(sam, getCrosid).Return(mockedValidCrosidStdout, nil),
-		getRunCmdCommand(sam, getCurrentFirmware).Return("Google_Coral.10068.113.0", nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed firmware-update state: %v", err)
-	}
-
-	// POST INSTALL
-	st = st.Next()
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, waitforStabilize).Return("start/running", nil),
-		getRunCmdCommand(sam, rootDevPartition).Return(deviceDiskRootA, nil),
-		getRunCmdCommand(sam, rootDevDisk).Return(deviceDisk, nil),
-		getRunCmdCommand(sam, cgptRepairCheck).Return("", nil),
-		getRunCmdCommand(sam, cgptStickyCheck).Return("1", nil),
-		getRunCmdCommand(sam, stopUI).Return("", nil),
-		getRunCmdCommand(sam, stopUpdateEngine).Return("", nil),
-		getRunCmdCommand(sam, cleanPostInstall).Return("", nil),
-		getPipeDataCommand(sam, copyZstStateful).Return(nil),
-		getRunCmdCommand(sam, createUpdateAvailableFile).Return("", nil),
-		getRunCmdCommand(sam, crosSystem).Return("", nil),
-		getRestartCommand(sam).Return(nil),
-		getRunCmdCommand(sam, rootDevPartition).Return(deviceDiskRootA, nil),
-		getRunCmdCommand(sam, rootDevDisk).Return(deviceDisk, nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed post-install state: %v", err)
-	}
-
-	// VERIFY
-	st = st.Next()
-	gomock.InOrder(
-		getRunCmdCommand(sam, getVersion).Return("CHROMEOS_RELEASE_BUILDER_PATH=a/differentto/image", nil),
-	)
-	if _, _, err := st.Execute(ctx, log); err.Error() != "image could not be validated as correct post install, post install version does not match target image" {
-		t.Fatalf("expected specific error, instead got: %v", err)
-	}
-}
-
-func TestSkipInstall(t *testing.T) {
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-
-	sam := mock_common_utils.NewMockServiceAdapterInterface(ctrl)
-	log, _ := cli.SetUpLog(constants.DefaultLogDirectory)
-	cs := service.NewCrOSServiceFromExistingConnection(
-		sam,
-		&conf.StoragePath{
-			HostType: conf.StoragePath_GS,
-			Path:     "gs://chromeos-image-archive/drallion-release/R110-15278.35.0/",
-		},
-		nil,
-		false,
-		[]*api.CrOSProvisionMetadata_DLCSpec{{Id: "1"}},
-		true, // FirmwareUpdate enabled.
-	)
-
-	ctx := context.Background()
-
-	// PRE INIT STATE
-	st := state_machine.NewCrOSPreInitState(&cs)
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, getBoard).Return("CHROMEOS_RELEASE_BOARD=(not_reven)", nil),
-		getRunCmdCommand(sam, getVersion).Return("CHROMEOS_RELEASE_BUILDER_PATH=drallion-release/R110-15278.35.0", nil),
-		getPathExistsCommand(sam, getForceProvisionMarker).Return(false, nil),
-		getRunCmdCommand(sam, hwsecID).Return("53EB5A855F8E57624F3F6803B13E4592BCEC0DB7F0D3785617E46A80AF70B902", nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed pre-init state: %v", err)
-	}
-
-	// Check state completion
-	if st.Next() != nil {
-		t.Fatalf("pre_init_state should be the last step")
-	}
-}
-
-func TestForceInstall(t *testing.T) {
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-
-	sam := mock_common_utils.NewMockServiceAdapterInterface(ctrl)
-	log, _ := cli.SetUpLog(constants.DefaultLogDirectory)
-	cs := service.NewCrOSServiceFromExistingConnection(
-		sam,
-		&conf.StoragePath{
-			HostType: conf.StoragePath_GS,
-			Path:     "gs://chromeos-image-archive/drallion-release/R110-15278.35.0/",
-		},
-		nil,
-		false,
-		[]*api.CrOSProvisionMetadata_DLCSpec{{Id: "1"}},
-		true, // FirmwareUpdate enabled.
-	)
-
-	ctx := context.Background()
-
-	// PRE INIT STATE
-	st := state_machine.NewCrOSPreInitState(&cs)
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, getBoard).Return("CHROMEOS_RELEASE_BOARD=(not_reven)", nil),
-		getRunCmdCommand(sam, getVersion).Return("CHROMEOS_RELEASE_BUILDER_PATH=drallion-release/R110-15278.35.0", nil),
-		getPathExistsCommand(sam, getForceProvisionMarker).Return(true, nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed pre-init state: %v", err)
-	}
-
-	// Check state completion
-	if st.Next() == nil {
-		t.Fatalf("pre_init_state should not be the last step")
-	}
-}
-
-func TestSkipInstallOnRevenNoTpmClear(t *testing.T) {
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-
-	sam := mock_common_utils.NewMockServiceAdapterInterface(ctrl)
-	log, _ := cli.SetUpLog(constants.DefaultLogDirectory)
-	cs := service.NewCrOSServiceFromExistingConnection(
-		sam,
-		&conf.StoragePath{
-			HostType: conf.StoragePath_GS,
-			Path:     "gs://chromeos-image-archive/drallion-release/R110-15278.35.0/",
-		},
-		nil,
-		false,
-		[]*api.CrOSProvisionMetadata_DLCSpec{{Id: "1"}},
-		true, // FirmwareUpdate enabled.
-	)
-
-	ctx := context.Background()
-
-	// PRE INIT STATE
-	st := state_machine.NewCrOSPreInitState(&cs)
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, getBoard).Return("CHROMEOS_RELEASE_BOARD=reven", nil),
-		getRunCmdCommand(sam, getVersion).Return("CHROMEOS_RELEASE_BUILDER_PATH=drallion-release/R110-15278.35.0", nil),
-		getPathExistsCommand(sam, getForceProvisionMarker).Return(false, nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed pre-init state: %v", err)
-	}
-
-	// Check state completion
-	if st.Next() != nil {
-		t.Fatalf("pre_init_state should be the last step")
-	}
-}
-
-func TestSkipInstallAndResetDeviceState(t *testing.T) {
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-
-	sam := mock_common_utils.NewMockServiceAdapterInterface(ctrl)
-	log, _ := cli.SetUpLog(constants.DefaultLogDirectory)
-	cs := service.NewCrOSServiceFromExistingConnection(
-		sam,
-		&conf.StoragePath{
-			HostType: conf.StoragePath_GS,
-			Path:     "gs://chromeos-image-archive/drallion-release/R110-15278.35.0/",
-		},
-		nil,
-		false,
-		[]*api.CrOSProvisionMetadata_DLCSpec{{Id: "1"}},
-		true, // FirmwareUpdate enabled.
-	)
-
-	ctx := context.Background()
-
-	// PRE INIT STATE
-	st := state_machine.NewCrOSPreInitState(&cs)
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, getBoard).Return("CHROMEOS_RELEASE_BOARD=(not_reven)", nil),
-		getRunCmdCommand(sam, getVersion).Return("CHROMEOS_RELEASE_BUILDER_PATH=drallion-release/R110-15278.35.0", nil),
-		getPathExistsCommand(sam, getForceProvisionMarker).Return(false, nil),
-		getRunCmdCommand(sam, hwsecID).Return("NO_LOCKOUT_PASSWORD", nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed pre-init state: %v", err)
-	}
-
-	// RESET DEVICE
-	st = st.Next()
-
-	drallionCopyZstStateful := PipeCommandStructure{Source: "gs://chromeos-image-archive/drallion-release/R110-15278.35.0/stateful.zst", Command: "tar --ignore-command-error --overwrite --directory=/mnt/stateful_partition --selinux --zstd -xf -"}
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, stopUI).Return("", nil),
-		getRunCmdCommand(sam, stopUpdateEngine).Return("", nil),
-		getRunCmdCommand(sam, cleanPostInstall).Return("", nil),
-		getPipeDataCommand(sam, drallionCopyZstStateful).Return(nil),
-		getRunCmdCommand(sam, createUpdateAvailableFile).Return("", nil),
-		getRunCmdCommand(sam, crosSystem).Return("", nil),
-		getRestartCommand(sam).Return(nil),
-		getRunCmdCommand(sam, chargeLimitEnabled).Return("", nil),
-		getRunCmdCommand(sam, chargePercentHold).Return("", nil),
-		getRunCmdCommand(sam, stopPowerd).Return("", nil),
-		getRunCmdCommand(sam, startPowerd).Return("", nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed reset device state: %v", err)
-	}
-
-	if st.Next() != nil {
-		t.Fatalf("reset_device should be the last step")
-	}
-}
-
-func TestSkipInstallAndResetDeviceStateZstFailure(t *testing.T) {
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-
-	sam := mock_common_utils.NewMockServiceAdapterInterface(ctrl)
-	log, _ := cli.SetUpLog(constants.DefaultLogDirectory)
-	cs := service.NewCrOSServiceFromExistingConnection(
-		sam,
-		&conf.StoragePath{
-			HostType: conf.StoragePath_GS,
-			Path:     "gs://chromeos-image-archive/drallion-release/R110-15278.35.0/",
-		},
-		nil,
-		false,
-		[]*api.CrOSProvisionMetadata_DLCSpec{{Id: "1"}},
-		true, // FirmwareUpdate enabled.
-	)
-
-	ctx := context.Background()
-
-	// PRE INIT STATE
-	st := state_machine.NewCrOSPreInitState(&cs)
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, getBoard).Return("CHROMEOS_RELEASE_BOARD=(not_reven)", nil),
-		getRunCmdCommand(sam, getVersion).Return("CHROMEOS_RELEASE_BUILDER_PATH=drallion-release/R110-15278.35.0", nil),
-		getPathExistsCommand(sam, getForceProvisionMarker).Return(false, nil),
-		getRunCmdCommand(sam, hwsecID).Return("NO_LOCKOUT_PASSWORD", nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed pre-init state: %v", err)
-	}
-
-	// RESET DEVICE
-	st = st.Next()
-
-	drallionCopyZstStateful := PipeCommandStructure{Source: "gs://chromeos-image-archive/drallion-release/R110-15278.35.0/stateful.zst", Command: "tar --ignore-command-error --overwrite --directory=/mnt/stateful_partition --selinux --zstd -xf -"}
-	drallionCopyStateful := PipeCommandStructure{Source: "gs://chromeos-image-archive/drallion-release/R110-15278.35.0/stateful.tgz", Command: "tar --ignore-command-error --overwrite --directory=/mnt/stateful_partition --selinux -xzf -"}
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, stopUI).Return("", nil),
-		getRunCmdCommand(sam, stopUpdateEngine).Return("", nil),
-		getRunCmdCommand(sam, cleanPostInstall).Return("", nil),
-		getPipeDataCommand(sam, drallionCopyZstStateful).Return(fmt.Errorf("some err")),
-		getPipeDataCommand(sam, drallionCopyStateful).Return(nil),
-		getRunCmdCommand(sam, createUpdateAvailableFile).Return("", nil),
-		getRunCmdCommand(sam, crosSystem).Return("", nil),
-		getRestartCommand(sam).Return(nil),
-		getRunCmdCommand(sam, chargeLimitEnabled).Return("", nil),
-		getRunCmdCommand(sam, chargePercentHold).Return("", nil),
-		getRunCmdCommand(sam, stopPowerd).Return("", nil),
-		getRunCmdCommand(sam, startPowerd).Return("", nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed reset device state: %v", err)
-	}
-
-	if st.Next() != nil {
-		t.Fatalf("reset_device should be the last step")
-	}
-}
-
-func TestDontSkipInstallCqImage(t *testing.T) {
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-
-	sam := mock_common_utils.NewMockServiceAdapterInterface(ctrl)
-	log, _ := cli.SetUpLog(constants.DefaultLogDirectory)
-	cs := service.NewCrOSServiceFromExistingConnection(
-		sam,
-		&conf.StoragePath{
-			HostType: conf.StoragePath_GS,
-			Path:     "gs://chromeos-image-archive/drallion-cq/R110-15278.36.0/",
-		},
-		nil,
-		false,
-		[]*api.CrOSProvisionMetadata_DLCSpec{{Id: "1"}},
-		true, // FirmwareUpdate enabled.
-	)
-
-	ctx := context.Background()
-
-	// INIT STATE
-	st := state_machine.NewCrOSPreInitState(&cs)
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, getBoard).Return("CHROMEOS_RELEASE_BOARD=(not_reven)", nil),
-		getRunCmdCommand(sam, getVersion).Return("CHROMEOS_RELEASE_BUILDER_PATH=drallion-cq/R110-15278.35.0", nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed init state: %v", err)
-	}
-
-	// Check state completion
-	if st.Next() == nil {
-		t.Fatalf("pre_init_state should not be the last step")
-	}
-}
-
-func TestDontSkipInstall(t *testing.T) {
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-
-	sam := mock_common_utils.NewMockServiceAdapterInterface(ctrl)
-	log, _ := cli.SetUpLog(constants.DefaultLogDirectory)
-	cs := service.NewCrOSServiceFromExistingConnection(
-		sam,
-		&conf.StoragePath{
-			HostType: conf.StoragePath_GS,
-			Path:     "gs://chromeos-image-archive/drallion-release/R110-15278.36.0/",
-		},
-		nil,
-		false,
-		[]*api.CrOSProvisionMetadata_DLCSpec{{Id: "1"}},
-		true, // FirmwareUpdate enabled.
-	)
-
-	ctx := context.Background()
-
-	// INIT STATE
-	st := state_machine.NewCrOSPreInitState(&cs)
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, getBoard).Return("CHROMEOS_RELEASE_BOARD=(not_reven)", nil),
-		getRunCmdCommand(sam, getVersion).Return("CHROMEOS_RELEASE_BUILDER_PATH=drallion-release/R110-15278.35.0", nil),
-		getPathExistsCommand(sam, getForceProvisionMarker).Return(false, nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed init state: %v", err)
-	}
-
-	// Check state completion
-	if st.Next() == nil {
-		t.Fatalf("pre_init_state should not be the last step")
-	}
-}
-
-func TestInstallPostInstallFailureCausesReversal(t *testing.T) {
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-
-	sam := mock_common_utils.NewMockServiceAdapterInterface(ctrl)
-	log, _ := cli.SetUpLog(constants.DefaultLogDirectory)
-	cs := service.NewCrOSServiceFromExistingConnection(
-		sam,
-		&conf.StoragePath{
-			HostType: conf.StoragePath_GS,
-			Path:     "path/to/image",
-		},
-		nil,
-		false,
-		[]*api.CrOSProvisionMetadata_DLCSpec{{Id: "1"}},
-		false,
-	)
-
-	ctx := context.Background()
-
-	// PRE INIT STATE
-	st := state_machine.NewCrOSPreInitState(&cs)
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, getBoard).Return("CHROMEOS_RELEASE_BOARD=(not_reven)", nil),
-		getRunCmdCommand(sam, getVersion).Return("CHROMEOS_RELEASE_BUILDER_PATH=drallion-release/R110-15278.35.0", nil),
-		getPathExistsCommand(sam, getForceProvisionMarker).Return(false, nil),
-	)
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed pre-init state: %v", err)
-	}
-	st.Next()
-
-	// INIT STATE
-	st = state_machine.NewCrOSInitState(&cs)
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, createProvisionMarker).Return("", nil),
-		getRunCmdCommand(sam, rootDevPartition).Return(deviceDiskRootA, nil),
-		getRunCmdCommand(sam, rootDevDisk).Return(deviceDisk, nil),
-		getPathExistsCommand(sam, kvmDevicePathExists).Return(true, nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed init state: %v", err)
-	}
-
-	// INSTALL
-	st = st.Next()
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, stopUI).Return("", nil),
-		getRunCmdCommand(sam, stopUpdateEngine).Return("", nil),
-		getPipeDataCommand(sam, copyZstKernel).Return(nil),
-		getPipeDataCommand(sam, copyZstRoot).Return(nil),
-		getRunCmdCommand(sam, makeTemp).Return("temporary_dir", nil),
-		getRunCmdCommand(sam, mountTemp).Return("", nil),
-		getRunCmdCommand(sam, postInstTemp).Return("", nil),
-		getRunCmdCommand(sam, umountTemp).Return("", nil),
-		getRunCmdCommand(sam, deleteTemp).Return("", fmt.Errorf("postinstall error")),
-		getRunCmdCommand(sam, cleanPostInstallRevert).Return("", nil),
-		getRunCmdCommand(sam, postInstRevert).Return("", nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err.Error() != "failed to post install, failed to remove temporary directory, postinstall error" {
-		t.Fatalf("expected specific error, instead got: %v", err)
-	}
-}
-
-func TestInstallClearTPMFailureCausesReversal(t *testing.T) {
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-
-	sam := mock_common_utils.NewMockServiceAdapterInterface(ctrl)
-	log, _ := cli.SetUpLog(constants.DefaultLogDirectory)
-	cs := service.NewCrOSServiceFromExistingConnection(
-		sam,
-		&conf.StoragePath{
-			HostType: conf.StoragePath_GS,
-			Path:     "path/to/image",
-		},
-		nil,
-		false,
-		[]*api.CrOSProvisionMetadata_DLCSpec{{Id: "1"}},
-		false,
-	)
-
-	ctx := context.Background()
-
-	// PRE INIT STATE
-	st := state_machine.NewCrOSPreInitState(&cs)
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, getBoard).Return("CHROMEOS_RELEASE_BOARD=(not_reven)", nil),
-		getRunCmdCommand(sam, getVersion).Return("CHROMEOS_RELEASE_BUILDER_PATH=drallion-release/R110-15278.35.0", nil),
-		getPathExistsCommand(sam, getForceProvisionMarker).Return(false, nil),
-	)
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed pre-init state: %v", err)
-	}
-	st.Next()
-
-	// INIT STATE
-	st = state_machine.NewCrOSInitState(&cs)
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, createProvisionMarker).Return("", nil),
-		getRunCmdCommand(sam, rootDevPartition).Return(deviceDiskRootA, nil),
-		getRunCmdCommand(sam, rootDevDisk).Return(deviceDisk, nil),
-		getPathExistsCommand(sam, kvmDevicePathExists).Return(true, nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed init state: %v", err)
-	}
-
-	// INSTALL
-	st = st.Next()
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, stopUI).Return("", nil),
-		getRunCmdCommand(sam, stopUpdateEngine).Return("", nil),
-		getPipeDataCommand(sam, copyZstKernel).Return(nil),
-		getPipeDataCommand(sam, copyZstRoot).Return(nil),
-		getRunCmdCommand(sam, makeTemp).Return("temporary_dir", nil),
-		getRunCmdCommand(sam, mountTemp).Return("", nil),
-		getRunCmdCommand(sam, postInstTemp).Return("", nil),
-		getRunCmdCommand(sam, umountTemp).Return("", nil),
-		getRunCmdCommand(sam, deleteTemp).Return("", nil),
-		getRunCmdCommand(sam, crosSystem).Return("", fmt.Errorf("clear TPM error")),
-		getRunCmdCommand(sam, cleanPostInstallRevert).Return("", nil),
-		getRunCmdCommand(sam, postInstRevert).Return("", nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err.Error() != "failed to clear TPM, clear TPM error" {
-		t.Fatalf("expected specific error, instead got: %v", err)
-	}
-}
-
-func TestFirmwareUpdateStateSkippedDueToNoUpdaterExist(t *testing.T) {
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-
-	sam := mock_common_utils.NewMockServiceAdapterInterface(ctrl)
-	log, _ := cli.SetUpLog(constants.DefaultLogDirectory)
-	cs := service.NewCrOSServiceFromExistingConnection(
-		sam,
-		&conf.StoragePath{
-			HostType: conf.StoragePath_GS,
-			Path:     "path/to/image",
-		},
-		nil,
-		false,
-		[]*api.CrOSProvisionMetadata_DLCSpec{{Id: "1"}},
-		true,
-	)
-
-	ctx := context.Background()
-
-	// PRE INIT STATE
-	st := state_machine.NewCrOSPreInitState(&cs)
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, getBoard).Return("CHROMEOS_RELEASE_BOARD=(not_reven)", nil),
-		getRunCmdCommand(sam, getVersion).Return("CHROMEOS_RELEASE_BUILDER_PATH=drallion-release/R110-15278.35.0", nil),
-		getPathExistsCommand(sam, getForceProvisionMarker).Return(false, nil),
-	)
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed pre-init state: %v", err)
-	}
-	st.Next()
-
-	// INIT STATE
-	st = state_machine.NewCrOSInitState(&cs)
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, createProvisionMarker).Return("", nil),
-		getRunCmdCommand(sam, rootDevPartition).Return(deviceDiskRootA, nil),
-		getRunCmdCommand(sam, rootDevDisk).Return(deviceDisk, nil),
-		getPathExistsCommand(sam, kvmDevicePathExists).Return(true, nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed init state: %v", err)
-	}
-
-	// -> INSTALL -> FIRMWARE-UPDATE
-	st = st.Next().Next()
-
-	gomock.InOrder(
-		getPathExistsCommand(sam, checkFirmwareUpdater).Return(true, nil),
-		getRunCmdCommand(sam, waitforStabilize).Return("start/running", nil),
-		getRunCmdCommand(sam, updateFirmware).Return("", nil),
-		getRunCmdCommand(sam, currentFirmwareSlot).Return("A", nil),
-		getRunCmdCommand(sam, nextFirmwareSlot).Return("A", nil),
-		getRunCmdCommand(sam, firmwareManifest).Return(mockedValidFirmwareManifestStdout, nil),
-		getRunCmdCommand(sam, getCrosid).Return(mockedValidCrosidStdout, nil),
-		getRunCmdCommand(sam, getCurrentFirmware).Return("Google_Coral.10068.113.0", nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed firmware-update state: %v", err)
-	}
-}
-
-func TestFirmwareUpdateStateWithNoChange(t *testing.T) {
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-
-	sam := mock_common_utils.NewMockServiceAdapterInterface(ctrl)
-	log, _ := cli.SetUpLog(constants.DefaultLogDirectory)
-	cs := service.NewCrOSServiceFromExistingConnection(
-		sam,
-		&conf.StoragePath{
-			HostType: conf.StoragePath_GS,
-			Path:     "path/to/image",
-		},
-		nil,
-		false,
-		[]*api.CrOSProvisionMetadata_DLCSpec{{Id: "1"}},
-		true,
-	)
-
-	ctx := context.Background()
-
-	// PRE INIT STATE
-	st := state_machine.NewCrOSPreInitState(&cs)
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, getBoard).Return("CHROMEOS_RELEASE_BOARD=(not_reven)", nil),
-		getRunCmdCommand(sam, getVersion).Return("CHROMEOS_RELEASE_BUILDER_PATH=drallion-release/R110-15278.35.0", nil),
-		getPathExistsCommand(sam, getForceProvisionMarker).Return(false, nil),
-	)
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed pre-init state: %v", err)
-	}
-	st.Next()
-
-	// INIT STATE
-	st = state_machine.NewCrOSInitState(&cs)
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, createProvisionMarker).Return("", nil),
-		getRunCmdCommand(sam, rootDevPartition).Return(deviceDiskRootA, nil),
-		getRunCmdCommand(sam, rootDevDisk).Return(deviceDisk, nil),
-		getPathExistsCommand(sam, kvmDevicePathExists).Return(true, nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed init state: %v", err)
-	}
-
-	// -> INSTALL -> FIRMWARE-UPDATE
-	st = st.Next().Next()
-
-	gomock.InOrder(
-		getPathExistsCommand(sam, checkFirmwareUpdater).Return(false, nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed firmware-update state: %v", err)
-	}
-}
-
-func TestPostInstallStatePreservesStatefulWhenRequested(t *testing.T) {
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-
-	sam := mock_common_utils.NewMockServiceAdapterInterface(ctrl)
-	log, _ := cli.SetUpLog(constants.DefaultLogDirectory)
-	cs := service.NewCrOSServiceFromExistingConnection(
-		sam,
-		&conf.StoragePath{
-			HostType: conf.StoragePath_GS,
-			Path:     "path/to/image",
-		},
-		nil,
-		true, // <- preserve stateful
-		[]*api.CrOSProvisionMetadata_DLCSpec{{Id: "1"}},
-		false,
-	)
-
-	ctx := context.Background()
-
-	// PRE INIT STATE
-	st := state_machine.NewCrOSPreInitState(&cs)
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, getBoard).Return("CHROMEOS_RELEASE_BOARD=(not_reven)", nil),
-		getRunCmdCommand(sam, getVersion).Return("CHROMEOS_RELEASE_BUILDER_PATH=drallion-release/R110-15278.35.0", nil),
-		getPathExistsCommand(sam, getForceProvisionMarker).Return(false, nil),
-	)
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed pre-init state: %v", err)
-	}
-	st.Next()
-
-	// INIT STATE
-	st = state_machine.NewCrOSInitState(&cs)
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, createProvisionMarker).Return("", nil),
-		getRunCmdCommand(sam, rootDevPartition).Return(deviceDiskRootA, nil),
-		getRunCmdCommand(sam, rootDevDisk).Return(deviceDisk, nil),
-		getPathExistsCommand(sam, kvmDevicePathExists).Return(true, nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed init state: %v", err)
-	}
-
-	// -> INSTALL -> FIRMWARE-UPDATE -> POST-INSTALL
-	st = st.Next().Next().Next()
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, waitforStabilize).Return("start/running", nil),
-		getRunCmdCommand(sam, rootDevPartition).Return(deviceDiskRootA, nil),
-		getRunCmdCommand(sam, rootDevDisk).Return(deviceDisk, nil),
-		getRunCmdCommand(sam, cgptRepairCheck).Return("", nil),
-		getRunCmdCommand(sam, cgptStickyCheck).Return("1", nil),
-		// Delete steps elided due to preserve stateful
-		getRunCmdCommand(sam, stopUI).Return("", nil),
-		getRunCmdCommand(sam, stopUpdateEngine).Return("", nil),
-		getRunCmdCommand(sam, cleanPostInstall).Return("", nil),
-		getPipeDataCommand(sam, copyZstStateful).Return(nil),
-		getRunCmdCommand(sam, createUpdateAvailableFile).Return("", nil),
-		getRunCmdCommand(sam, crosSystem).Return("", nil),
-
-		getRestartCommand(sam).Return(nil),
-		getRunCmdCommand(sam, rootDevPartition).Return(deviceDiskRootA, nil),
-		getRunCmdCommand(sam, rootDevDisk).Return(deviceDisk, nil),
-	)
-
-	// Nothing should be run, so no need to use mock expect
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed post-install state: %v", err)
-	}
-}
-
-func TestPostInstallStatefulFailsGetsReversed(t *testing.T) {
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-
-	sam := mock_common_utils.NewMockServiceAdapterInterface(ctrl)
-	log, _ := cli.SetUpLog(constants.DefaultLogDirectory)
-	cs := service.NewCrOSServiceFromExistingConnection(
-		sam,
-		&conf.StoragePath{
-			HostType: conf.StoragePath_GS,
-			Path:     "path/to/image",
-		},
-		nil,
-		true, // <- preserve stateful
-		[]*api.CrOSProvisionMetadata_DLCSpec{{Id: "1"}},
-		false,
-	)
-
-	ctx := context.Background()
-
-	// PRE INIT STATE
-	st := state_machine.NewCrOSPreInitState(&cs)
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, getBoard).Return("CHROMEOS_RELEASE_BOARD=(not_reven)", nil),
-		getRunCmdCommand(sam, getVersion).Return("CHROMEOS_RELEASE_BUILDER_PATH=drallion-release/R110-15278.35.0", nil),
-		getPathExistsCommand(sam, getForceProvisionMarker).Return(false, nil),
-	)
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed pre-init state: %v", err)
-	}
-	st.Next()
-
-	// INIT STATE
-	st = state_machine.NewCrOSInitState(&cs)
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, createProvisionMarker).Return("", nil),
-		getRunCmdCommand(sam, rootDevPartition).Return(deviceDiskRootA, nil),
-		getRunCmdCommand(sam, rootDevDisk).Return(deviceDisk, nil),
-		getPathExistsCommand(sam, kvmDevicePathExists).Return(true, nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed init state: %v", err)
-	}
-
-	// -> INSTALL -> FIRMWARE-UPDATE -> POST-INSTALL
-	st = st.Next().Next().Next()
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, waitforStabilize).Return("start/running", nil),
-		getRunCmdCommand(sam, rootDevPartition).Return(deviceDiskRootA, nil),
-		getRunCmdCommand(sam, rootDevDisk).Return(deviceDisk, nil),
-		getRunCmdCommand(sam, cgptRepairCheck).Return("", nil),
-		getRunCmdCommand(sam, cgptStickyCheck).Return("1", nil),
-		// Delete steps elided due to preserve stateful
-		getRunCmdCommand(sam, stopUI).Return("", nil),
-		getRunCmdCommand(sam, stopUpdateEngine).Return("", nil),
-		getRunCmdCommand(sam, cleanPostInstall).Return("", nil),
-		// Simulated error:
-		getPipeDataCommand(sam, copyZstStateful).Return(fmt.Errorf("copy error")),
-		getPipeDataCommand(sam, copyStateful).Return(fmt.Errorf("copy error")),
-		getRunCmdCommand(sam, cleanPostInstallRevert).Return("", nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err.Error() != "failed to provision stateful, copy error" {
-		t.Fatalf("Post install should've failed with specific error, instead got: %v", err)
-	}
-}
-
-func TestProvisionDLCWithEmptyDLCsDoesNotExecute(t *testing.T) {
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-
-	sam := mock_common_utils.NewMockServiceAdapterInterface(ctrl)
-	log, _ := cli.SetUpLog(constants.DefaultLogDirectory)
-	cs := service.NewCrOSServiceFromExistingConnection(
-		sam,
-		&conf.StoragePath{
-			HostType: conf.StoragePath_GS,
-			Path:     "path/to/image",
-		},
-		nil,
-		false,
-		[]*api.CrOSProvisionMetadata_DLCSpec{}, // <- empty
-		false,
-	)
-
-	ctx := context.Background()
-
-	// PRE INIT STATE
-	st := state_machine.NewCrOSPreInitState(&cs)
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, getBoard).Return("CHROMEOS_RELEASE_BOARD=(not_reven)", nil),
-		getRunCmdCommand(sam, getVersion).Return("CHROMEOS_RELEASE_BUILDER_PATH=drallion-release/R110-15278.35.0", nil),
-		getPathExistsCommand(sam, getForceProvisionMarker).Return(false, nil),
-	)
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed pre-init state: %v", err)
-	}
-	st.Next()
-
-	// INIT STATE
-	st = state_machine.NewCrOSInitState(&cs)
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, createProvisionMarker).Return("", nil),
-		getRunCmdCommand(sam, rootDevPartition).Return(deviceDiskRootA, nil),
-		getRunCmdCommand(sam, rootDevDisk).Return(deviceDisk, nil),
-		getPathExistsCommand(sam, kvmDevicePathExists).Return(true, nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed init state: %v", err)
-	}
-
-	// -> INSTALL -> FIRMWARE-UPDATE -> POST-INSTALL -> VERIFY -> DLC
-	st = st.Next().Next().Next().Next().Next()
-
-	// Nothing should be run, so no need to use mock expect
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed provision-dlc state: %v", err)
-	}
-}
-
-func TestProvisionDLCWhenVerifyIsTrueDoesNotExecuteInstall(t *testing.T) {
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-
-	sam := mock_common_utils.NewMockServiceAdapterInterface(ctrl)
-	log, _ := cli.SetUpLog(constants.DefaultLogDirectory)
-	cs := service.NewCrOSServiceFromExistingConnection(
-		sam,
-		&conf.StoragePath{
-			HostType: conf.StoragePath_GS,
-			Path:     "path/to/image",
-		},
-		nil,
-		false,
-		[]*api.CrOSProvisionMetadata_DLCSpec{{Id: "1"}},
-		false,
-	)
-
-	ctx := context.Background()
-
-	// PRE INIT STATE
-	st := state_machine.NewCrOSPreInitState(&cs)
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, getBoard).Return("CHROMEOS_RELEASE_BOARD=(not_reven)", nil),
-		getRunCmdCommand(sam, getVersion).Return("CHROMEOS_RELEASE_BUILDER_PATH=drallion-release/R110-15278.35.0", nil),
-		getPathExistsCommand(sam, getForceProvisionMarker).Return(false, nil),
-	)
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed pre-init state: %v", err)
-	}
-	st.Next()
-
-	// INIT STATE
-	st = state_machine.NewCrOSInitState(&cs)
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, createProvisionMarker).Return("", nil),
-		getRunCmdCommand(sam, rootDevPartition).Return(deviceDiskRootA, nil),
-		getRunCmdCommand(sam, rootDevDisk).Return(deviceDisk, nil),
-		getPathExistsCommand(sam, kvmDevicePathExists).Return(true, nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed init state: %v", err)
-	}
-
-	// -> INSTALL -> FIRMWARE-UPDATE -> POST-INSTALL -> VERIFY -> DLC
-	st = st.Next().Next().Next().Next().Next()
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, stopDLCservice).Return("", nil),
-	)
-	// Concurrent Portion
-	// Return verfied so install stops here:
-	getPathExistsCommand(sam, dlcAVerifiedExists).Return(true, nil)
-	getRunCmdCommand(sam, startDLCservice).Times(1).Return("", nil)
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, chownDLCs).Return("", nil),
-		getRunCmdCommand(sam, chmodDLCs).Return("", nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed provision-dlc state: %v", err)
-	}
-}
-
-func TestPostInstallOverwriteWhenSpecified(t *testing.T) {
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-	log, _ := cli.SetUpLog(constants.DefaultLogDirectory)
-	sam := mock_common_utils.NewMockServiceAdapterInterface(ctrl)
-	cs := service.NewCrOSServiceFromExistingConnection(
-		sam,
-		&conf.StoragePath{
-			HostType: conf.StoragePath_GS,
-			Path:     "path/to/image",
-		},
-		&conf.StoragePath{
-			HostType: conf.StoragePath_GS,
-			Path:     "path/to/image/overwite.tar",
-		},
-		false,
-		[]*api.CrOSProvisionMetadata_DLCSpec{{Id: "1"}},
-		false,
-	)
-
-	ctx := context.Background()
-
-	// PRE INIT STATE
-	st := state_machine.NewCrOSPreInitState(&cs)
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, getBoard).Return("CHROMEOS_RELEASE_BOARD=(not_reven)", nil),
-		getRunCmdCommand(sam, getVersion).Return("CHROMEOS_RELEASE_BUILDER_PATH=drallion-release/R110-15278.35.0", nil),
-		getPathExistsCommand(sam, getForceProvisionMarker).Return(false, nil),
-	)
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed pre-init state: %v", err)
-	}
-	st.Next()
-
-	// INIT STATE
-	st = state_machine.NewCrOSInitState(&cs)
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, createProvisionMarker).Return("", nil),
-		getRunCmdCommand(sam, rootDevPartition).Return(deviceDiskRootA, nil),
-		getRunCmdCommand(sam, rootDevDisk).Return(deviceDisk, nil),
-		getPathExistsCommand(sam, kvmDevicePathExists).Return(true, nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed init state: %v", err)
-	}
-
-	// -> INSTALL -> FIRMWARE-UPDATE -> POST-INSTALL
-	st = st.Next().Next().Next()
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, waitforStabilize).Return("start/running", nil),
-		getRunCmdCommand(sam, rootDevPartition).Return(deviceDiskRootA, nil),
-		getRunCmdCommand(sam, rootDevDisk).Return(deviceDisk, nil),
-		getRunCmdCommand(sam, cgptRepairCheck).Return("", nil),
-		getRunCmdCommand(sam, cgptStickyCheck).Return("1", nil),
-		getRunCmdCommand(sam, stopUI).Return("", nil),
-		getRunCmdCommand(sam, stopUpdateEngine).Return("", nil),
-		getRunCmdCommand(sam, cleanPostInstall).Return("", nil),
-		getPipeDataCommand(sam, copyZstStateful).Return(nil),
-		getRunCmdCommand(sam, createUpdateAvailableFile).Return("", nil),
-		getRunCmdCommand(sam, crosSystem).Return("", nil),
-
-		getRestartCommand(sam).Return(nil),
-		getPipeDataCommand(sam, copyOverwritePayload).Return(nil),
-		getRestartCommand(sam).Return(nil),
-		getRunCmdCommand(sam, rootDevPartition).Return(deviceDiskRootA, nil),
-		getRunCmdCommand(sam, rootDevDisk).Return(deviceDisk, nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed post-install state: %v", err)
-	}
-}
-
-func TestKvmDevicePathMissing(t *testing.T) {
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-
-	sam := mock_common_utils.NewMockServiceAdapterInterface(ctrl)
-	log, _ := cli.SetUpLog(constants.DefaultLogDirectory)
-	cs := service.NewCrOSServiceFromExistingConnection(
-		sam,
-		&conf.StoragePath{
-			HostType: conf.StoragePath_GS,
-			Path:     "path/to/image",
-		},
-		nil,
-		true, // <- preserve stateful
-		[]*api.CrOSProvisionMetadata_DLCSpec{{Id: "1"}},
-		false,
-	)
-
-	ctx := context.Background()
-
-	// PRE INIT STATE
-	st := state_machine.NewCrOSPreInitState(&cs)
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, getBoard).Return("CHROMEOS_RELEASE_BOARD=(not_reven)", nil),
-		getRunCmdCommand(sam, getVersion).Return("CHROMEOS_RELEASE_BUILDER_PATH=drallion-release/R110-15278.35.0", nil),
-		getPathExistsCommand(sam, getForceProvisionMarker).Return(false, nil),
-	)
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed pre-init state: %v", err)
-	}
-	st.Next()
-
-	// INIT STATE
-	st = state_machine.NewCrOSInitState(&cs)
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, createProvisionMarker).Return("", nil),
-		getRunCmdCommand(sam, rootDevPartition).Return(deviceDiskRootA, nil),
-		getRunCmdCommand(sam, rootDevDisk).Return(deviceDisk, nil),
-		getPathExistsCommand(sam, kvmDevicePathExists).Return(false, nil),
-	)
-
-	if _, _, err := st.Execute(ctx, log); err.Error() != "failed check KVM enabled, KVM device path does not exist" {
-		t.Fatalf("check KVM enabled should have failed with specific error, instead got: %v", err)
-	}
-}
-
-func TestKvmDevicePathForLabstationDevice(t *testing.T) {
-	ctrl := gomock.NewController(t)
-	defer ctrl.Finish()
-
-	sam := mock_common_utils.NewMockServiceAdapterInterface(ctrl)
-	log, _ := cli.SetUpLog(constants.DefaultLogDirectory)
-	cs := service.NewCrOSServiceFromExistingConnection(
-		sam,
-		&conf.StoragePath{
-			HostType: conf.StoragePath_GS,
-			Path:     "path/to/image",
-		},
-		nil,
-		true, // <- preserve stateful
-		[]*api.CrOSProvisionMetadata_DLCSpec{{Id: "1"}},
-		false,
-	)
-
-	ctx := context.Background()
-
-	// PRE INIT STATE
-	st := state_machine.NewCrOSPreInitState(&cs)
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, getBoard).Return("CHROMEOS_RELEASE_BOARD=some-labstation", nil),
-		getRunCmdCommand(sam, getVersion).Return("CHROMEOS_RELEASE_BUILDER_PATH=drallion-release/R110-15278.35.0", nil),
-		getPathExistsCommand(sam, getForceProvisionMarker).Return(false, nil),
-	)
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed pre-init state: %v", err)
-	}
-	st.Next()
-
-	// INIT STATE
-	st = state_machine.NewCrOSInitState(&cs)
-
-	gomock.InOrder(
-		getRunCmdCommand(sam, createProvisionMarker).Return("", nil),
-		getRunCmdCommand(sam, rootDevPartition).Return(deviceDiskRootA, nil),
-		getRunCmdCommand(sam, rootDevDisk).Return(deviceDisk, nil),
-	)
-	// Explicit check.
-	getPathExistsCommand(sam, kvmDevicePathExists).Times(0)
-
-	if _, _, err := st.Execute(ctx, log); err != nil {
-		t.Fatalf("failed init state: %v", err)
-	}
-}
-
-func getPathExistsCommand(sam *mock_common_utils.MockServiceAdapterInterface, s PathExistsCommandStructure) *gomock.Call {
-	return sam.EXPECT().PathExists(gomock.Any(), gomock.Eq(s.Path))
-}
-
-func getCreateDirCommand(sam *mock_common_utils.MockServiceAdapterInterface, s CreateDirsStructure) *gomock.Call {
-	return sam.EXPECT().CreateDirectories(gomock.Any(), gomock.Eq(s.Dirs))
-}
-
-func getPipeDataCommand(sam *mock_common_utils.MockServiceAdapterInterface, s PipeCommandStructure) *gomock.Call {
-	return sam.EXPECT().PipeData(gomock.Any(), gomock.Eq(s.Source), gomock.Eq(s.Command))
-}
-
-func getRunCmdCommand(sam *mock_common_utils.MockServiceAdapterInterface, s RunCommandStructure) *gomock.Call {
-	return sam.EXPECT().RunCmd(gomock.Any(), gomock.Eq(s.Command), gomock.Eq(s.Args))
-}
-
-func getForceReconnectWithBackoffCommand(sam *mock_common_utils.MockServiceAdapterInterface) *gomock.Call {
-	return sam.EXPECT().ForceReconnectWithBackoff(gomock.Any())
-}
-
-func getRestartCommand(sam *mock_common_utils.MockServiceAdapterInterface) *gomock.Call {
-	return sam.EXPECT().Restart(gomock.Any())
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/executor/cros_service_executor.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/executor/cros_service_executor.go
deleted file mode 100644
index acb0dc4..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/executor/cros_service_executor.go
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Executor defines a state initializer for each state. Usable by server to start.
-// Under normal conditions this would be part of service, but go being go, it
-// would create an impossible cycle
-package executor
-
-import (
-	"context"
-	"errors"
-	"fmt"
-	"log"
-
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	cross_over "go.chromium.org/chromiumos/test/provision/v2/common-utils/cross-over"
-	"google.golang.org/grpc"
-
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	state_machine "go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	lab_api "go.chromium.org/chromiumos/config/go/test/lab/api"
-)
-
-type CrOSProvisionExecutor struct {
-	Logger *log.Logger
-}
-
-func (c *CrOSProvisionExecutor) GetFirstState(dut *lab_api.Dut, dutClient api.DutServiceClient, servoNexusAddr string, req *api.InstallRequest) (common_utils.ServiceState, error) {
-	cs, err := service.NewCrOSService(dut, dutClient, req)
-	if err != nil {
-		return nil, err
-	}
-	crosProvisionState := state_machine.NewCrOSPreInitState(cs)
-	if !cross_over.IsCROS(context.Background(), c.Logger, dutClient) {
-		c.Logger.Println("DUT not on CROS, will perform crossOver(ANDROID->CROS) provisioning.")
-		if servoNexusAddr == "" {
-			return nil, fmt.Errorf("servoNexusAdd required for crossover provision")
-		}
-		conn, err := grpc.Dial(servoNexusAddr, grpc.WithInsecure())
-		if err != nil {
-			return nil, err
-		}
-		servoNexusClient := api.NewServodServiceClient(conn)
-		params := &cross_over.CrossOverParameters{
-			DutClient:          dutClient,
-			Dut:                dut,
-			TargetImagePath:    req.GetImagePath(),
-			PostProvisionState: crosProvisionState,
-			ServoNexusClient:   servoNexusClient,
-			PartnerMetadata:    req.GetPartnerMetadata(),
-		}
-		return cross_over.NewCrossOverInitState(params), nil
-	}
-	c.Logger.Println("CROS Detected, will perform CROS -> CROS provisioning.")
-	return crosProvisionState, nil
-}
-
-// Validate ensures the ProvisionStartupRequest meets specified requirements.
-func (c *CrOSProvisionExecutor) Validate(req *api.ProvisionStartupRequest) error {
-	if req.GetDut() == nil || req.GetDut().GetId().GetValue() == "" {
-		return errors.New("dut id is not specified in input file")
-	}
-	if req.GetDutServer() == nil || req.DutServer.GetAddress() == "" || req.DutServer.GetPort() <= 0 {
-		return errors.New("dut server address is no specified or incorrect in input file")
-	}
-	return nil
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/main.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/main.go
index 878252e..ee8a31d 100644
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/main.go
+++ b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/main.go
@@ -5,16 +5,9 @@
 package main
 
 import (
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/cli"
 	"fmt"
-	"os"
 )
 
 func main() {
-	opt, err := cli.ParseInputs()
-	if err != nil {
-		fmt.Printf("unable to parse inputs: %s", err)
-		os.Exit(2)
-	}
-	opt.Run()
+	fmt.Println("Code has been migrated to infra/infra. Please reach out to who/juahurta for any questions.")
 }
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/service/cros_service.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/service/cros_service.go
deleted file mode 100644
index 6f788a7..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/service/cros_service.go
+++ /dev/null
@@ -1,146 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Container for the CrOSProvision state machine
-package service
-
-import (
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"go.chromium.org/chromiumos/test/provision/v2/common-utils/metadata"
-	"context"
-	"fmt"
-
-	conf "go.chromium.org/chromiumos/config/go"
-	"go.chromium.org/chromiumos/config/go/test/api"
-	lab_api "go.chromium.org/chromiumos/config/go/test/lab/api"
-)
-
-// CrOSService inherits ServiceInterface
-type CrOSService struct {
-	Connection       common_utils.ServiceAdapterInterface
-	MachineMetadata  metadata.MachineMetadata
-	ImagePath        *conf.StoragePath
-	OverwritePayload *conf.StoragePath
-	PreserveStateful bool
-	DlcSpecs         []*api.CrOSProvisionMetadata_DLCSpec
-	UpdateFirmware   bool
-	UpdateCros       bool
-	QuickResetDevice bool
-}
-
-func NewCrOSService(dut *lab_api.Dut, dutClient api.DutServiceClient, req *api.InstallRequest) (*CrOSService, error) {
-	m, err := unpackMetadata(req)
-	if err != nil {
-		return nil, err
-	}
-	return &CrOSService{
-		Connection:       common_utils.NewServiceAdapter(dutClient, req.GetPreventReboot()),
-		ImagePath:        req.ImagePath,
-		OverwritePayload: req.OverwritePayload,
-		PreserveStateful: m.PreserveStateful,
-		DlcSpecs:         m.DlcSpecs,
-		MachineMetadata:  metadata.MachineMetadata{},
-		UpdateFirmware:   m.UpdateFirmware,
-		UpdateCros:       true, // Force this true by default
-	}, nil
-}
-
-func NewCrOSServiceFromCrOSProvisionRequest(dutClient api.DutServiceClient, req *api.CrosProvisionRequest) *CrOSService {
-	var dlcSpecs []*api.CrOSProvisionMetadata_DLCSpec
-	for _, id := range req.GetProvisionState().GetSystemImage().GetDlcs() {
-		dlcSpec := &api.CrOSProvisionMetadata_DLCSpec{
-			Id: id.Value,
-		}
-		dlcSpecs = append(dlcSpecs, dlcSpec)
-	}
-	return &CrOSService{
-		Connection:       common_utils.NewServiceAdapter(dutClient, req.GetProvisionState().GetPreventReboot()),
-		ImagePath:        req.GetProvisionState().SystemImage.SystemImagePath,
-		OverwritePayload: req.GetProvisionState().GetSystemImage().GetOverwritePayload(),
-		PreserveStateful: false,
-		DlcSpecs:         dlcSpecs,
-		MachineMetadata:  metadata.MachineMetadata{},
-		UpdateFirmware:   req.GetProvisionState().UpdateFirmware,
-		UpdateCros:       true, // Force this true by default
-
-	}
-}
-
-// NewCrOSServiceFromExistingConnection is equivalent to the above constructor,
-// but recycles a ServiceAdapter. Generally useful for tests.
-func NewCrOSServiceFromExistingConnection(conn common_utils.ServiceAdapterInterface, imagePath *conf.StoragePath, overwritePayload *conf.StoragePath, preserverStateful bool, dlcSpecs []*api.CrOSProvisionMetadata_DLCSpec, updateFirmware bool) CrOSService {
-	return CrOSService{
-		Connection:       conn,
-		ImagePath:        imagePath,
-		OverwritePayload: overwritePayload,
-		PreserveStateful: preserverStateful,
-		DlcSpecs:         dlcSpecs,
-		MachineMetadata:  metadata.MachineMetadata{},
-		UpdateFirmware:   updateFirmware,
-		UpdateCros:       true, // Force this true by default
-
-	}
-}
-
-// CleanupOnFailure is called if one of service's states fails to Execute() and
-// should clean up the temporary files, and undo the execution, if feasible.
-func (c *CrOSService) CleanupOnFailure(states []common_utils.ServiceState, executionErr error) error {
-	// TODO: evaluate whether cleanup is needed.
-	return nil
-}
-
-const pipeStatusHandler = `
-pipestatus=("${PIPESTATUS[@]}")
-if [[ "${pipestatus[0]}" -ne 0 ]]; then
-  echo "$(date --rfc-3339=seconds) ERROR: Fetching %[1]s failed." >&2
-  exit 1
-elif [[ "${pipestatus[1]}" -ne 0 ]]; then
-  echo "$(date --rfc-3339=seconds) ERROR: Decompressing %[1]s failed." >&2
-  exit 1
-elif [[ "${pipestatus[2]}" -ne 0 ]]; then
-  echo "$(date --rfc-3339=seconds) ERROR: Writing to %[2]s failed." >&2
-  exit 1
-fi`
-
-// TODO(kimjae): Refactor InstallZippedImage/InstallZstdCompressedFile into a single entity such as InstallCompressedFile, with additional options to select the compression method.
-
-// InstallZippedImage installs a remote zipped image to disk.
-func (c *CrOSService) InstallZippedImage(ctx context.Context, remoteImagePath string, outputFile string) error {
-	if c.ImagePath.HostType == conf.StoragePath_LOCAL || c.ImagePath.HostType == conf.StoragePath_HOSTTYPE_UNSPECIFIED {
-		return fmt.Errorf("only GS copying is implemented")
-	}
-	err := c.Connection.PipeData(ctx,
-		common_utils.BucketJoin(c.ImagePath.GetPath(), remoteImagePath),
-		fmt.Sprintf("gzip -d | %s %s", fmt.Sprintf("dd of=%s obs=2M", outputFile), fmt.Sprintf(pipeStatusHandler, c.ImagePath.GetPath(), outputFile)),
-	)
-	if err != nil {
-		return fmt.Errorf("failed to install image, %w", err)
-	}
-	return nil
-}
-
-// InstallZstdCompressedFile installs a compressed (zstd) file to target.
-func (c *CrOSService) InstallZstdCompressedFile(ctx context.Context, remoteImagePath string, outputPath string) error {
-	if c.ImagePath.HostType == conf.StoragePath_LOCAL || c.ImagePath.HostType == conf.StoragePath_HOSTTYPE_UNSPECIFIED {
-		return fmt.Errorf("only GS copying is implemented")
-	}
-	err := c.Connection.PipeData(ctx,
-		common_utils.BucketJoin(c.ImagePath.GetPath(), remoteImagePath),
-		// Fine to reuse the pipe status handler for now.
-		fmt.Sprintf("zstdcat | %s %s", fmt.Sprintf("dd of=%s obs=2M", outputPath), fmt.Sprintf(pipeStatusHandler, c.ImagePath.GetPath(), outputPath)),
-	)
-	if err != nil {
-		return fmt.Errorf("failed to install image, %w", err)
-	}
-	return nil
-}
-
-// unpackMetadata unpacks the Any metadata field into CrOSProvisionMetadata
-func unpackMetadata(req *api.InstallRequest) (*api.CrOSProvisionMetadata, error) {
-	m := api.CrOSProvisionMetadata{}
-	if err := req.Metadata.UnmarshalTo(&m); err != nil {
-		return &m, fmt.Errorf("improperly formatted input proto metadata, %s", err)
-	}
-	return &m, nil
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/check_firmware_slot_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/check_firmware_slot_command.go
deleted file mode 100644
index 9aa8a90..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/check_firmware_slot_command.go
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	"context"
-	"fmt"
-	"log"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type CheckFirmwareSlotCommand struct {
-	ctx            context.Context
-	cs             *service.CrOSService
-	RebootRequired bool
-}
-
-func NewCheckFirmwareSlotCommand(ctx context.Context, cs *service.CrOSService) *CheckFirmwareSlotCommand {
-	return &CheckFirmwareSlotCommand{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *CheckFirmwareSlotCommand) Execute(log *log.Logger) error {
-	log.Printf("Start CheckFirmwareSlotCommand Execute")
-
-	current, err := c.cs.Connection.RunCmd(c.ctx, "crossystem", []string{common_utils.CrossystemCurrentFirmwareSlotKey})
-	if err != nil {
-		return fmt.Errorf("check current firmware slot: %s", err)
-	}
-	log.Printf("Current firmware slot: %s", current)
-
-	next, err := c.cs.Connection.RunCmd(c.ctx, "crossystem", []string{common_utils.CrossystemNextFirmwareSlotKey})
-
-	if err != nil {
-		return fmt.Errorf("check next firmware slot: %s", err)
-	}
-	log.Printf("Next firmware slot: %s", next)
-
-	c.RebootRequired = current != next
-
-	log.Printf("CheckFirmwareSlotCommand Success")
-
-	return nil
-}
-
-func (c *CheckFirmwareSlotCommand) Revert() error {
-	return nil
-}
-
-func (c *CheckFirmwareSlotCommand) GetErrorMessage() string {
-	return "failed to check if firmware slot changed"
-}
-
-func (c *CheckFirmwareSlotCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_PROVISIONING_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/check_firmware_updater_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/check_firmware_updater_command.go
deleted file mode 100644
index a46e547..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/check_firmware_updater_command.go
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	"context"
-	"log"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type CheckFirmwareUpdaterCommand struct {
-	ctx          context.Context
-	cs           *service.CrOSService
-	UpdaterExist bool
-}
-
-func NewCheckFirmwareUpdaterCommand(ctx context.Context, cs *service.CrOSService) *CheckFirmwareUpdaterCommand {
-	return &CheckFirmwareUpdaterCommand{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *CheckFirmwareUpdaterCommand) Execute(log *log.Logger) error {
-	log.Printf("Start CheckFirmwareUpdaterCommand Execute")
-
-	exist, err := c.cs.Connection.PathExists(c.ctx, common_utils.FirmwareUpdaterPath)
-	if err != nil {
-		return err
-	}
-	c.UpdaterExist = exist
-
-	log.Printf("CheckFirmwareUpdaterCommand Success")
-
-	return nil
-}
-
-func (c *CheckFirmwareUpdaterCommand) Revert() error {
-	return nil
-}
-
-func (c *CheckFirmwareUpdaterCommand) GetErrorMessage() string {
-	return "failed to check firmware updater exist"
-}
-
-func (c *CheckFirmwareUpdaterCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_UPDATE_FIRMWARE_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/check_install_needed.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/check_install_needed.go
deleted file mode 100644
index d6a72f8..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/check_install_needed.go
+++ /dev/null
@@ -1,134 +0,0 @@
-// Copyright 2023 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	"context"
-	"fmt"
-	"log"
-	"net/url"
-	"path"
-	"regexp"
-	"strings"
-	"unicode/utf8"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-// CheckInstallNeeded is the commands interface struct.
-type CheckInstallNeeded struct {
-	ctx context.Context
-	cs  *service.CrOSService
-}
-
-// NewCheckInstallNeeded is the commands interface to CheckInstallNeeded
-func NewCheckInstallNeeded(ctx context.Context, cs *service.CrOSService) *CheckInstallNeeded {
-	return &CheckInstallNeeded{
-		ctx: ctx,
-		cs:  cs,
-	}
-
-}
-
-// Execute is the executor for the command. Will check if the current DUT version == target, if so set the skip install flag.
-func (c *CheckInstallNeeded) Execute(log *log.Logger) error {
-	log.Printf("RUNNING CheckInstallNeeded Execute")
-	targetBuilderPath, err := getTargetBuilderPath(c.cs.ImagePath.GetPath())
-	if err != nil {
-		return err
-	}
-
-	// Long term, we might want to consider a flag to be used here, as someone might provision a CQ image locally and be ok with a skip.
-	isCq, err := isCQImage(targetBuilderPath)
-	if err != nil || isCq {
-		// TODO, investigate following TLS logic for only provisioing stateful
-		log.Printf("Forcing provision on CQ build.")
-		c.cs.UpdateCros = true
-	} else if exists, _ := c.cs.Connection.PathExists(c.ctx, "/mnt/stateful_partition/.force_provision"); exists {
-		log.Printf("Forcing provision as requested per provision marker.")
-		c.cs.UpdateCros = true
-	} else if c.cs.MachineMetadata.Version == targetBuilderPath {
-		log.Printf("SKIPPING PROVISION AS TARGET VERSION MATCHES CURRENT")
-		c.cs.UpdateCros = false
-	} else {
-		c.cs.UpdateCros = true
-	}
-
-	if !c.cs.UpdateCros && c.canClearTPM(c.ctx) {
-		oid, err := c.cs.Connection.RunCmd(c.ctx, "hwsec-ownership-id", []string{"id"})
-		oid = strings.TrimSpace(oid)
-		if err != nil {
-			// We need to reinstall the stateful image for the missing utils.
-			log.Printf("Missing test utils.")
-			c.cs.QuickResetDevice = true
-		} else if !isHexDigest(oid) {
-			// The device is not in a correct state, we should clear the TPM.
-			log.Printf("Need to clear the TPM: %v", oid)
-			c.cs.QuickResetDevice = true
-		}
-	}
-
-	log.Printf("RUNNING CheckInstallNeeded Success")
-
-	return nil
-}
-
-// CanClearTPM determines whether the current board can clear TPM
-func (c *CheckInstallNeeded) canClearTPM(ctx context.Context) bool {
-	return !strings.HasPrefix(c.cs.MachineMetadata.Board, "reven")
-}
-
-func isCQImage(imageName string) (bool, error) {
-	return regexp.MatchString(`.*-cq/.*`, imageName)
-}
-
-func isHexDigest(data string) bool {
-	isHex, err := regexp.MatchString(`^[0-9a-fA-F]+$`, data)
-	return err != nil || isHex
-}
-
-// Revert interface command. None needed as nothing has happened yet.
-func (c *CheckInstallNeeded) Revert() error {
-	// Thought this method has side effects to the service it does not to the OS,
-	// as such Revert here is unneeded
-	return nil
-}
-
-// GetErrorMessage provides the failed to check install err string.
-func (c *CheckInstallNeeded) GetErrorMessage() string {
-	return "failed to check if install is needed."
-}
-
-// GetStatus provides API Error reason.
-func (c *CheckInstallNeeded) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_PRE_PROVISION_SETUP_FAILED
-}
-
-func trimFirst(s string) string {
-	_, i := utf8.DecodeRuneInString(s)
-	return s[i:]
-}
-
-func trimPath(s string) string {
-	// Sometimes parse has a leading slash, remove it if present.
-	if strings.HasPrefix(s, "/") {
-		return trimFirst(s)
-	}
-	return s
-
-}
-
-func getTargetBuilderPath(targetPath string) (string, error) {
-	u, uErr := url.Parse(targetPath)
-	if uErr != nil {
-		return "", fmt.Errorf("failed to parse image path, %s", uErr)
-	}
-	p := trimPath(u.Path)
-
-	d, version := path.Split(p)
-	targetBuilderPath := path.Join(d, version)
-	return targetBuilderPath, nil
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/check_kvm_enabled.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/check_kvm_enabled.go
deleted file mode 100644
index d18a0cc..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/check_kvm_enabled.go
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright 2023 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	"context"
-	"errors"
-	"log"
-	"strings"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-// CheckKvmEnabled is the commands interface struct.
-type CheckKvmEnabled struct {
-	ctx context.Context
-	cs  *service.CrOSService
-}
-
-// NewCheckKvmEnabled is the commands interface to CheckKvmEnabled
-func NewCheckKvmEnabled(ctx context.Context, cs *service.CrOSService) *CheckKvmEnabled {
-	return &CheckKvmEnabled{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-// Execute is the executor for the command. Will check KVM is enabled by validating against device path for KVM.
-func (c *CheckKvmEnabled) Execute(log *log.Logger) error {
-	log.Printf("RUNNING CheckKvmEnabled Execute")
-
-	if strings.Contains(c.cs.MachineMetadata.Board, "labstation") {
-		log.Printf("CheckKvmEnabled skipping labstation boards")
-	} else {
-		exist, err := c.cs.Connection.PathExists(c.ctx, common_utils.KvmDevicePath)
-		if err != nil {
-			return err
-		}
-		if !exist {
-			return errors.New("KVM device path does not exist")
-		}
-	}
-
-	log.Printf("RUNNING CheckKvmEnabled Success")
-
-	return nil
-}
-
-// Revert interface command. None needed as nothing has happened yet.
-func (c *CheckKvmEnabled) Revert() error {
-	// Thought this method has side effects to the service it does not to the OS,
-	// as such Revert here is unneeded
-	return nil
-}
-
-// GetErrorMessage provides the failed to check KVM enabled string.
-func (c *CheckKvmEnabled) GetErrorMessage() string {
-	return "failed check KVM enabled"
-}
-
-// GetStatus provides API Error reason.
-func (c *CheckKvmEnabled) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_PROVISIONING_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/check_version_matches.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/check_version_matches.go
deleted file mode 100644
index cfa1932..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/check_version_matches.go
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright 2023 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	"context"
-	"errors"
-	"log"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-// CheckVersionMatches is the commands interface struct.
-type CheckVersionMatches struct {
-	ctx context.Context
-	cs  *service.CrOSService
-}
-
-// NewCheckVersionMatches is the commands interface to CheckVersionMatches
-func NewCheckVersionMatches(ctx context.Context, cs *service.CrOSService) *CheckVersionMatches {
-	return &CheckVersionMatches{
-		ctx: ctx,
-		cs:  cs,
-	}
-
-}
-
-// Execute is the executor for the command. Will check if the current DUT version == target, if so set the skip install flag.
-func (c *CheckVersionMatches) Execute(log *log.Logger) error {
-	log.Printf("RUNNING CheckVersionMatches Execute")
-	targetBuilderPath, err := getTargetBuilderPath(c.cs.ImagePath.GetPath())
-	if err != nil {
-		return err
-	}
-	if c.cs.MachineMetadata.Version == targetBuilderPath {
-		log.Printf("POST INSTALL VERSION MATCHES")
-		c.cs.UpdateCros = false
-	} else {
-		log.Printf("POST INSTALL DOES NOT MATCH.")
-		return errors.New("post install version does not match target image")
-	}
-	log.Printf("RUNNING CheckVersionMatches Success")
-
-	return nil
-}
-
-// Revert interface command. None needed as nothing has happened yet.
-func (c *CheckVersionMatches) Revert() error {
-	// Thought this method has side effects to the service it does not to the OS,
-	// as such Revert here is unneeded
-	return nil
-}
-
-// GetErrorMessage provides the failed to check install err string.
-func (c *CheckVersionMatches) GetErrorMessage() string {
-	return "image could not be validated as correct post install"
-}
-
-// GetStatus provides API Error reason.
-func (c *CheckVersionMatches) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_IMAGE_MISMATCH_POST_PROVISION_UPDATE
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/clear_dlc_artifacts_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/clear_dlc_artifacts_command.go
deleted file mode 100644
index 526baf6..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/clear_dlc_artifacts_command.go
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	"context"
-	"fmt"
-	"log"
-	"path"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type ClearDLCArtifactsCommand struct {
-	ctx context.Context
-	cs  *service.CrOSService
-}
-
-func NewClearDLCArtifactsCommand(ctx context.Context, cs *service.CrOSService) *ClearDLCArtifactsCommand {
-	return &ClearDLCArtifactsCommand{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *ClearDLCArtifactsCommand) Execute(log *log.Logger) error {
-	log.Printf("Start ClearDLCArtifactsCommand Execute")
-	exists, err := c.cs.Connection.PathExists(c.ctx, common_utils.DlcLibDir)
-	if err != nil {
-		return fmt.Errorf("failed path existance, %s", err)
-	}
-	if !exists {
-		return fmt.Errorf("DLC path does not exist")
-	}
-
-	// Stop dlcservice daemon in order to not interfere with clearing inactive verified DLCs.
-	if _, err := c.cs.Connection.RunCmd(c.ctx, "stop", []string{"dlcservice"}); err != nil {
-		log.Printf("ClearDLCArtifactsCommand failed to stop dlcservice daemon, %s", err)
-	}
-	defer func() {
-		if _, err := c.cs.Connection.RunCmd(c.ctx, "start", []string{"dlcservice"}); err != nil {
-			log.Printf("ClearDLCArtifactsCommandfailed to start dlcservice daemon, %s", err)
-		}
-	}()
-
-	inactiveSlot := common_utils.InactiveDlcMap[c.cs.MachineMetadata.RootInfo.RootPartNum]
-	if inactiveSlot == "" {
-		return fmt.Errorf("invalid root partition number: %s", c.cs.MachineMetadata.RootInfo.RootPartNum)
-	}
-	_, err = c.cs.Connection.RunCmd(c.ctx, "rm", []string{"-f", path.Join(common_utils.DlcCacheDir, "*", "*", string(inactiveSlot), common_utils.DlcVerified)})
-	if err != nil {
-		return fmt.Errorf("failed remove inactive verified DLCs, %s", err)
-	}
-	log.Printf("ClearDLCArtifactsCommand Success")
-
-	return nil
-}
-
-func (c *ClearDLCArtifactsCommand) Revert() error {
-	return nil
-}
-
-func (c *ClearDLCArtifactsCommand) GetErrorMessage() string {
-	return "Failed to clear DLC artifacts"
-}
-
-func (c *ClearDLCArtifactsCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_PROVISIONING_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/clear_tpm_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/clear_tpm_command.go
deleted file mode 100644
index 191fb64..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/clear_tpm_command.go
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	"context"
-	"log"
-	"strings"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type ClearTPMCommand struct {
-	ctx context.Context
-	cs  *service.CrOSService
-}
-
-func NewClearTPMCommand(ctx context.Context, cs *service.CrOSService) *ClearTPMCommand {
-	return &ClearTPMCommand{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *ClearTPMCommand) Execute(log *log.Logger) error {
-	log.Printf("Start ClearTPMCommand Execute")
-
-	if c.canClearTPM(c.ctx) {
-		if _, err := c.cs.Connection.RunCmd(c.ctx, "crossystem", []string{"clear_tpm_owner_request=1"}); err != nil {
-			return err
-		}
-	}
-	log.Printf("ClearTPMCommand Success")
-
-	return nil
-}
-
-// CanClearTPM determines whether the current board can clear TPM
-func (c *ClearTPMCommand) canClearTPM(ctx context.Context) bool {
-	return !strings.HasPrefix(c.cs.MachineMetadata.Board, "reven")
-}
-
-func (c *ClearTPMCommand) Revert() error {
-	return nil
-}
-
-func (c *ClearTPMCommand) GetErrorMessage() string {
-	return "failed to clear TPM"
-}
-
-func (c *ClearTPMCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_CLEAR_TPM_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/correct_dlc_permissions_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/correct_dlc_permissions_command.go
deleted file mode 100644
index 306f41c..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/correct_dlc_permissions_command.go
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	"context"
-	"fmt"
-	"log"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type CorrectDLCPermissionsCommand struct {
-	ctx context.Context
-	cs  *service.CrOSService
-}
-
-func NewCorrectDLCPermissionsCommand(ctx context.Context, cs *service.CrOSService) *CorrectDLCPermissionsCommand {
-	return &CorrectDLCPermissionsCommand{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *CorrectDLCPermissionsCommand) Execute(log *log.Logger) error {
-	// CorrectDLCPermissions changes the permission and ownership of DLC cache to
-	// the correct one. As part of the transition to using tmpfiles.d, dlcservice
-	// paths must have correct permissions/owners set. Simply starting the
-	// dlcservice daemon will not fix this due to security concerns.
-	log.Printf("Start CorrectDLCPermissionsCommand Execute")
-
-	if _, err := c.cs.Connection.RunCmd(c.ctx, "chown", []string{"-R", "dlcservice:dlcservice", common_utils.DlcCacheDir}); err != nil {
-		return fmt.Errorf("unable to set owner for DLC cache (%s), %s", common_utils.DlcCacheDir, err)
-	}
-	log.Printf("CorrectDLCPermissionsCommand chown completed")
-
-	if _, err := c.cs.Connection.RunCmd(c.ctx, "chmod", []string{"-R", "0755", common_utils.DlcCacheDir}); err != nil {
-		return fmt.Errorf("unable to set permissions for DLC cache (%s), %s", common_utils.DlcCacheDir, err)
-	}
-	log.Printf("CorrectDLCPermissionsCommand Success")
-
-	return nil
-}
-
-func (c *CorrectDLCPermissionsCommand) Revert() error {
-	return nil
-}
-
-func (c *CorrectDLCPermissionsCommand) GetErrorMessage() string {
-	return "failed to correct DLC permissions"
-}
-
-func (c *CorrectDLCPermissionsCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_PROVISIONING_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/create_provision_marker_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/create_provision_marker_command.go
deleted file mode 100644
index ab0a9f1..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/create_provision_marker_command.go
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	"context"
-	"log"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type CreateProvisionMarkerCommand struct {
-	ctx context.Context
-	cs  *service.CrOSService
-}
-
-func NewCreateProvisionMarkerCommand(ctx context.Context, cs *service.CrOSService) *CreateProvisionMarkerCommand {
-	return &CreateProvisionMarkerCommand{
-		ctx: ctx,
-		cs:  cs,
-	}
-
-}
-
-func (c *CreateProvisionMarkerCommand) Execute(log *log.Logger) error {
-	log.Printf("Start CreateProvisionMarkerCommand Execute")
-	if _, err := c.cs.Connection.RunCmd(c.ctx, "touch", []string{common_utils.ProvisionMarker}); err != nil {
-		log.Printf("CreateProvisionMarkerCommand touch marker errord")
-		return err
-	}
-	log.Printf("CreateProvisionMarkerCommand Success")
-	return nil
-}
-
-func (c *CreateProvisionMarkerCommand) Revert() error {
-	return nil
-}
-
-func (c *CreateProvisionMarkerCommand) GetErrorMessage() string {
-	return "failed to create provision marker"
-}
-
-func (c *CreateProvisionMarkerCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_DUT_UNREACHABLE_PRE_PROVISION
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/enable_charge_limit_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/enable_charge_limit_command.go
deleted file mode 100644
index e7b4b68..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/enable_charge_limit_command.go
+++ /dev/null
@@ -1,94 +0,0 @@
-// Copyright 2023 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	"context"
-	"fmt"
-	"log"
-	"strings"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type EnableChargeLimitCommand struct {
-	ctx context.Context
-	cs  *service.CrOSService
-}
-
-func NewEnableChargeLimitCommand(ctx context.Context, cs *service.CrOSService) *EnableChargeLimitCommand {
-	return &EnableChargeLimitCommand{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *EnableChargeLimitCommand) Execute(log *log.Logger) error {
-	log.Printf("Start EnableChargeLimitCommand Execute")
-
-	// If this is run on a DUT without a battery (or even just a backup battery
-	// for Chromebases), this will effectively do nothing.
-	if _, err := c.cs.Connection.RunCmd(c.ctx, "echo", []string{"\"1\"", ">", "/var/lib/power_manager/charge_limit_enabled"}); err != nil {
-		return fmt.Errorf("failed to create charge_limit_enabled pref, %s", err)
-	}
-
-	if _, err := c.cs.Connection.RunCmd(c.ctx, "echo", []string{"\"3\"", ">", "/var/lib/power_manager/adaptive_charging_hold_delta_percent"}); err != nil {
-		return fmt.Errorf("failed to create adaptive_charging_hold_delta_percent pref, %s", err)
-	}
-
-	if stdout, err := c.cs.Connection.RunCmd(c.ctx, "stop", []string{"powerd", "2>&1"}); err != nil {
-		// Typical failure is that powerd is not running, which is fine. We
-		// only need to ensure that it starts after we wrote the above prefs.
-		if !strings.Contains(stdout, "stop: Unknown instance") {
-			return fmt.Errorf("failed to stop powerd: %s: %s", err, stdout)
-		}
-	}
-
-	if stdout, err := c.cs.Connection.RunCmd(c.ctx, "start", []string{"powerd", "2>&1"}); err != nil {
-		// If the job is already running, somebody else probably started it between
-		// the time we stopped it and when we tried to start it again. In that case
-		// the goal has succeeded, because it was restarted.
-		if !strings.Contains(stdout, "start: Job is already running") {
-			return fmt.Errorf("failed to start powerd: %s: %s", err, stdout)
-		}
-	}
-
-	log.Printf("EnableChargeLimitCommand Success")
-
-	return nil
-}
-
-func (c *EnableChargeLimitCommand) Revert() error {
-	log.Printf("Start EnableChargeLimitCommand Revert")
-
-	if _, err := c.cs.Connection.RunCmd(c.ctx, "rm", []string{"/var/lib/power_manager/charge_limit_enabled"}); err != nil {
-		return fmt.Errorf("failed to remove charge_limit_enabled pref, %s", err)
-	}
-
-	if _, err := c.cs.Connection.RunCmd(c.ctx, "rm", []string{"/var/lib/power_manager/adaptive_charging_hold_delta_percent"}); err != nil {
-		return fmt.Errorf("failed to remove adaptive_charging_hold_delta_percent pref, %s", err)
-	}
-
-	if _, err := c.cs.Connection.RunCmd(c.ctx, "stop", []string{"powerd"}); err != nil {
-		log.Printf("failed to stop powerd, %s", err)
-	}
-
-	if _, err := c.cs.Connection.RunCmd(c.ctx, "start", []string{"powerd"}); err != nil {
-		return fmt.Errorf("failed to start powerd, %s", err)
-	}
-
-	log.Printf("EnableChargeLimitCommand Revert Success")
-
-	return nil
-}
-
-func (c *EnableChargeLimitCommand) GetErrorMessage() string {
-	return "failed to get enable Charge Limit"
-}
-
-func (c *EnableChargeLimitCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_PROVISIONING_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/get_board_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/get_board_command.go
deleted file mode 100644
index 8e71a02..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/get_board_command.go
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	"context"
-	"fmt"
-	"log"
-	"regexp"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-var reBoard = regexp.MustCompile(`CHROMEOS_RELEASE_BOARD=(.*)`)
-
-type GetBoardCommand struct {
-	ctx context.Context
-	cs  *service.CrOSService
-}
-
-func NewGetBoardCommand(ctx context.Context, cs *service.CrOSService) *GetBoardCommand {
-	return &GetBoardCommand{
-		ctx: ctx,
-		cs:  cs,
-	}
-
-}
-
-func (c *GetBoardCommand) Execute(log *log.Logger) error {
-	log.Printf("RUNNING GetBoardCommand Execute")
-	board, err := c.getBoard()
-	if err != nil {
-		return fmt.Errorf("failed to get board, %s", err)
-	}
-
-	c.cs.MachineMetadata.Board = board
-	log.Printf("RUNNING GetBoardCommand Success")
-
-	return nil
-}
-
-func (c *GetBoardCommand) Revert() error {
-	// Thought this method has side effects to the service it does not to the OS,
-	// as such Revert here is unneded
-	return nil
-}
-
-// getBoard returns the name of the current board
-func (c *GetBoardCommand) getBoard() (string, error) {
-	lsbRelease, err := c.cs.Connection.RunCmd(c.ctx, "cat", []string{"/etc/lsb-release"})
-	if err != nil {
-		return "", fmt.Errorf("failed to read lsb-release")
-	}
-
-	match := reBoard.FindStringSubmatch(lsbRelease)
-	if match == nil {
-		return "", fmt.Errorf("no match found in lsb-release for %s", reBoard.String())
-	}
-	return match[1], nil
-}
-
-func (c *GetBoardCommand) GetErrorMessage() string {
-	return "failed to get board"
-}
-
-func (c *GetBoardCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_PROVISIONING_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/get_root_info.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/get_root_info.go
deleted file mode 100644
index 405d04f..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/get_root_info.go
+++ /dev/null
@@ -1,118 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"go.chromium.org/chromiumos/test/provision/v2/common-utils/metadata"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	"context"
-	"fmt"
-	"log"
-	"regexp"
-	"strings"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type GetRootInfoCommand struct {
-	ctx context.Context
-	cs  *service.CrOSService
-}
-
-func NewGetRootInfoCommand(ctx context.Context, cs *service.CrOSService) *GetRootInfoCommand {
-	return &GetRootInfoCommand{
-		ctx: ctx,
-		cs:  cs,
-	}
-
-}
-
-func (c *GetRootInfoCommand) Execute(log *log.Logger) error {
-	log.Printf("Start GetRootInfoCommand Execute")
-	root, err := c.getRoot()
-	if err != nil {
-		return fmt.Errorf("failed to get root, %s", err)
-	}
-	log.Printf("GetRootInfoCommand got root")
-	rootDisk, err := c.getRootDisk()
-	if err != nil {
-		return fmt.Errorf("failed to get root disk, %s", err)
-	}
-	log.Printf("GetRootInfoCommand got root disk")
-	rootPartNum, err := c.getRootPartNumber(root)
-	if err != nil {
-		return fmt.Errorf("failed to get root part number, %s", err)
-	}
-	log.Printf("GetRootInfoCommand got part number")
-
-	pi := common_utils.GetPartitionInfo(root, rootDisk, rootPartNum)
-	log.Printf("GetRootInfoCommand got partition info")
-
-	c.cs.MachineMetadata.RootInfo = &metadata.RootInfo{
-		Root:          root,
-		RootDisk:      rootDisk,
-		RootPartNum:   rootPartNum,
-		PartitionInfo: &pi,
-	}
-	log.Printf("GetRootInfoCommand Success")
-	return nil
-}
-
-func (c *GetRootInfoCommand) Revert() error {
-	// Thought this method has side effects to the service it does not to the OS,
-	// as such Revert here is unneded
-	return nil
-}
-
-// GetRoot returns the rootdev outoput for root
-func (c *GetRootInfoCommand) getRoot() (string, error) {
-	// Example 1: "/dev/nvme0n1p3"
-	// Example 2: "/dev/sda3"
-	curRoot, err := c.cs.Connection.RunCmd(c.ctx, "rootdev", []string{"-s"})
-	if err != nil {
-		return "", fmt.Errorf("failed to get current root, %s", err)
-	}
-	return strings.TrimSpace(curRoot), nil
-}
-
-// GetRootDisk returns the rootdev output for disk
-func (c *GetRootInfoCommand) getRootDisk() (string, error) {
-	// Example 1: "/dev/nvme0n1"
-	// Example 2: "/dev/sda"
-	rootDisk, err := c.cs.Connection.RunCmd(c.ctx, "rootdev", []string{"-s", "-d"})
-	if err != nil {
-		return "", fmt.Errorf("failed to get root disk, %s", err)
-	}
-	return strings.TrimSpace(rootDisk), nil
-}
-
-// GetRootPartNumber parses the root number for a specific root
-func (c *GetRootInfoCommand) getRootPartNumber(root string) (string, error) {
-	// Handle /dev/mmcblk0pX, /dev/sdaX, etc style partitions.
-	// Example 1: "3"
-	// Example 2: "3"
-	match := regexp.MustCompile(`.*([0-9]+)`).FindStringSubmatch(root)
-	if match == nil {
-		return "", fmt.Errorf("failed to match partition number from %s", root)
-	}
-
-	switch match[1] {
-	case common_utils.PartitionNumRootA, common_utils.PartitionNumRootB:
-		break
-	default:
-		return "", fmt.Errorf("invalid partition number %s", match[1])
-	}
-
-	return match[1], nil
-}
-
-func (c *GetRootInfoCommand) GetErrorMessage() string {
-	return "failed to get root info"
-}
-
-func (c *GetRootInfoCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_PROVISIONING_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/get_version_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/get_version_command.go
deleted file mode 100644
index 4e04269..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/get_version_command.go
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright 2023 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	"context"
-	"fmt"
-	"log"
-	"regexp"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-var reVersion = regexp.MustCompile(`CHROMEOS_RELEASE_BUILDER_PATH=(.*)`)
-
-// GetVersionCommand is the commands interface struct.
-type GetVersionCommand struct {
-	ctx context.Context
-	cs  *service.CrOSService
-}
-
-// NewGetVersionCommand is the commands interface to GetVersionCommand
-func NewGetVersionCommand(ctx context.Context, cs *service.CrOSService) *GetVersionCommand {
-	return &GetVersionCommand{
-		ctx: ctx,
-		cs:  cs,
-	}
-
-}
-
-// Execute is the executor for the command. Will get the OS version from the DUT.
-func (c *GetVersionCommand) Execute(log *log.Logger) error {
-	log.Printf("RUNNING GetVersionCommand Execute")
-	version, err := c.getVersion()
-	if err != nil {
-		return fmt.Errorf("failed to get board, %s", err)
-	}
-
-	log.Printf("Retrieved version=%s", version)
-	c.cs.MachineMetadata.Version = version
-	log.Printf("RUNNING GetVersionCommand Success")
-
-	return nil
-}
-
-// Revert interface command. None needed as nothing has happened yet.
-func (c *GetVersionCommand) Revert() error {
-	// Thought this method has side effects to the service it does not to the OS,
-	// as such Revert here is unneeded
-	return nil
-}
-
-// getVersion returns the name of the current board
-func (c *GetVersionCommand) getVersion() (string, error) {
-	lsbRelease, err := c.cs.Connection.RunCmd(c.ctx, "cat", []string{"/etc/lsb-release"})
-	if err != nil {
-		return "", fmt.Errorf("failed to read lsb-release")
-	}
-
-	match := reVersion.FindStringSubmatch(lsbRelease)
-	if match == nil {
-		return "", fmt.Errorf("no match found in lsb-release for %s", reVersion.String())
-	}
-	return match[1], nil
-}
-
-// GetErrorMessage provides the failed to check install err string.
-func (c *GetVersionCommand) GetErrorMessage() string {
-	return "failed to get board"
-}
-
-// GetStatus provides API Error reason.
-func (c *GetVersionCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_PRE_PROVISION_SETUP_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/install_dlcs_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/install_dlcs_command.go
deleted file mode 100644
index 78f9bbf..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/install_dlcs_command.go
+++ /dev/null
@@ -1,105 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	"context"
-	"fmt"
-	"log"
-	"path"
-
-	conf "go.chromium.org/chromiumos/config/go"
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type InstallDLCsCommand struct {
-	ctx context.Context
-	cs  *service.CrOSService
-}
-
-func NewInstallDLCsCommand(ctx context.Context, cs *service.CrOSService) *InstallDLCsCommand {
-	return &InstallDLCsCommand{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *InstallDLCsCommand) Execute(log *log.Logger) error {
-	log.Printf("Start InstallDLCsCommand Execute")
-	activeSlot := common_utils.ActiveDlcMap[c.cs.MachineMetadata.RootInfo.RootPartNum]
-	var err error
-	errCh := make(chan error)
-	for _, spec := range c.cs.DlcSpecs {
-		go func(spec *api.CrOSProvisionMetadata_DLCSpec) {
-			errCh <- c.installDLC(c.ctx, spec, activeSlot)
-		}(spec)
-	}
-	log.Printf("InstallDLCsCommand installDLC completed")
-
-	for range c.cs.DlcSpecs {
-		errTmp := <-errCh
-		if errTmp == nil {
-			continue
-		}
-		err = fmt.Errorf("%s, %s", err, errTmp)
-	}
-	log.Printf("InstallDLCsCommand Success")
-	return err
-}
-
-func (c *InstallDLCsCommand) Revert() error {
-	return nil
-}
-
-// installDLC installs all relevant DLCs
-func (c *InstallDLCsCommand) installDLC(ctx context.Context, spec *api.CrOSProvisionMetadata_DLCSpec, slot string) error {
-	dlcID := spec.GetId()
-	dlcOutputDir := path.Join(common_utils.DlcCacheDir, dlcID, common_utils.DlcPackage)
-	verified, err := c.isDLCVerified(ctx, spec.GetId(), slot)
-	if err != nil {
-		return fmt.Errorf("failed is DLC verified check, %s", err)
-	}
-
-	// Skip installing the DLC if already verified.
-	if verified {
-		log.Printf("provision DLC %s skipped as already verified", dlcID)
-		return nil
-	}
-
-	if c.cs.ImagePath.HostType == conf.StoragePath_LOCAL || c.cs.ImagePath.HostType == conf.StoragePath_HOSTTYPE_UNSPECIFIED {
-		return fmt.Errorf("only GS copying is implemented")
-	}
-	dlcURL := path.Join(c.cs.ImagePath.GetPath(), "dlc", dlcID, common_utils.DlcPackage, common_utils.DlcImage)
-
-	dlcOutputSlotDir := path.Join(dlcOutputDir, string(slot))
-	dlcOutputImage := path.Join(dlcOutputSlotDir, common_utils.DlcImage)
-	if err := c.cs.Connection.CreateDirectories(ctx, []string{dlcOutputSlotDir}); err != nil {
-		return fmt.Errorf("failed to create DLC directories %s, %s", dlcID, err)
-	}
-	if err := c.cs.Connection.CopyData(ctx, dlcURL, dlcOutputImage); err != nil {
-		return fmt.Errorf("failed to download DLCs, %s", err)
-	}
-
-	return nil
-}
-
-// isDLCVerified checks if the desired DLC already exists within the system
-func (c *InstallDLCsCommand) isDLCVerified(ctx context.Context, dlcID, slot string) (bool, error) {
-	verified, err := c.cs.Connection.PathExists(ctx, path.Join(common_utils.DlcLibDir, dlcID, slot, common_utils.DlcVerified))
-	if err != nil {
-		return false, fmt.Errorf("failed to check if DLC %s is verified, %s", dlcID, err)
-	}
-	return verified, nil
-}
-
-func (c *InstallDLCsCommand) GetErrorMessage() string {
-	return "failed to install DLCs"
-}
-
-func (c *InstallDLCsCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_INSTALL_DLC_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/install_minios_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/install_minios_command.go
deleted file mode 100644
index 47899f9..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/install_minios_command.go
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	"context"
-	"fmt"
-	"log"
-	"strings"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type InstallMiniOSCommand struct {
-	ctx context.Context
-	cs  *service.CrOSService
-}
-
-func NewInstallMiniOSCommand(ctx context.Context, cs *service.CrOSService) *InstallMiniOSCommand {
-	return &InstallMiniOSCommand{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *InstallMiniOSCommand) Execute(log *log.Logger) error {
-	log.Printf("Start InstallMiniOSCommand Execute")
-	for _, rootPart := range common_utils.GetMiniOSPartitions() {
-		if isSupported, err := c.isMiniOSPartitionSupported(rootPart); err == nil && !isSupported {
-			log.Printf("InstallMiniOSCommand device does not support MiniOS, skipping installation.")
-			return nil
-		} else if err != nil {
-			return fmt.Errorf("failed to determine miniOS suport, %s", err)
-		}
-	}
-	log.Printf("InstallMiniOSCommand Running Install")
-
-	return c.installMiniOS(log)
-}
-
-func (c *InstallMiniOSCommand) Revert() error {
-	return nil
-}
-
-// IsMiniOSPartitionSupported determines whether the device has the partitions
-func (c *InstallMiniOSCommand) isMiniOSPartitionSupported(rootPart string) (bool, error) {
-	guidPartition, err := c.cs.Connection.RunCmd(c.ctx, "cgpt", []string{"show", "-t", c.cs.MachineMetadata.RootInfo.RootDisk, "-i", rootPart})
-	if err != nil {
-		return false, fmt.Errorf("failed to get partition type, %s\n %s", err, guidPartition)
-	}
-
-	return strings.TrimSpace(guidPartition) == common_utils.MiniOSUnsupportedGUIDPartition, nil
-}
-
-// InstallMiniOS downloads and installs the minios images
-func (c *InstallMiniOSCommand) installMiniOS(log *log.Logger) error {
-	if err := c.cs.InstallZippedImage(c.ctx, "full_dev_part_MINIOS.bin.gz", c.cs.MachineMetadata.RootInfo.PartitionInfo.MiniOSA); err != nil {
-		return fmt.Errorf("install MiniOS A: %s", err)
-	}
-	log.Printf("InstallMiniOSCommand installed full_dev_part_MINIOS MiniOSA")
-	if err := c.cs.InstallZippedImage(c.ctx, "full_dev_part_MINIOS.bin.gz", c.cs.MachineMetadata.RootInfo.PartitionInfo.MiniOSB); err != nil {
-		return fmt.Errorf("install MiniOS B: %s", err)
-	}
-	log.Printf("InstallMiniOSCommand installed full_dev_part_MINIOS MiniOSB")
-	log.Printf("InstallMiniOSCommand Success")
-	return nil
-}
-
-func (c *InstallMiniOSCommand) GetErrorMessage() string {
-	return "failed to install MiniOS"
-}
-
-func (c *InstallMiniOSCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_UPDATE_MINIOS_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/install_partitions_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/install_partitions_command.go
deleted file mode 100644
index e5e867b..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/install_partitions_command.go
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	"context"
-	"fmt"
-	"log"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type InstallPartitionsCommand struct {
-	ctx context.Context
-	cs  *service.CrOSService
-}
-
-func NewInstallPartitionsCommand(ctx context.Context, cs *service.CrOSService) *InstallPartitionsCommand {
-	return &InstallPartitionsCommand{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *InstallPartitionsCommand) Execute(log *log.Logger) error {
-	log.Printf("Start InstallPartitionsCommand Execute")
-
-	var err error
-
-	err = c.cs.InstallZstdCompressedFile(c.ctx, "full_KERN.bin.zst", c.cs.MachineMetadata.RootInfo.PartitionInfo.InactiveKernel)
-	if err == nil {
-		log.Printf("InstallPartitionsCommand full_KERN.bin.zst COMPLETED")
-	} else {
-		log.Printf("InstallPartitionsCommand full_KERN.bin.zst failed CONTINUING")
-		err = c.cs.InstallZippedImage(c.ctx, "full_dev_part_KERN.bin.gz", c.cs.MachineMetadata.RootInfo.PartitionInfo.InactiveKernel)
-		if err != nil {
-			return fmt.Errorf("install kernel: %s", err)
-		}
-		log.Printf("InstallPartitionsCommand full_dev_part_KERN.bin.gz COMPLETED")
-	}
-
-	err = c.cs.InstallZstdCompressedFile(c.ctx, "full_ROOT.bin.zst", c.cs.MachineMetadata.RootInfo.PartitionInfo.InactiveRoot)
-	if err == nil {
-		log.Printf("InstallPartitionsCommand full_ROOT.bin.zst COMPLETED")
-	} else {
-		log.Printf("InstallPartitionsCommand full_ROOT.bin.zst failed CONTINUING")
-		err := c.cs.InstallZippedImage(c.ctx, "full_dev_part_ROOT.bin.gz", c.cs.MachineMetadata.RootInfo.PartitionInfo.InactiveRoot)
-		if err != nil {
-			return fmt.Errorf("install root: %s", err)
-		}
-		log.Printf("InstallPartitionsCommand full_dev_part_ROOT.bin.gz COMPLETED")
-	}
-
-	log.Printf("InstallPartitionsCommand Success")
-	return nil
-}
-
-func (c *InstallPartitionsCommand) Revert() error {
-	return nil
-}
-
-func (c *InstallPartitionsCommand) GetErrorMessage() string {
-	return "failed to install partitions"
-}
-
-func (c *InstallPartitionsCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_DOWNLOADING_IMAGE_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/overwrite_install_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/overwrite_install_command.go
deleted file mode 100644
index 043fa63..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/overwrite_install_command.go
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	"context"
-	"fmt"
-	"log"
-
-	conf "go.chromium.org/chromiumos/config/go"
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type OverwriteInstalCommand struct {
-	ctx context.Context
-	cs  *service.CrOSService
-}
-
-func NewOverwriteInstalCommand(ctx context.Context, cs *service.CrOSService) *OverwriteInstalCommand {
-	return &OverwriteInstalCommand{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *OverwriteInstalCommand) Execute(log *log.Logger) error {
-	log.Printf("Start OverwriteInstalCommand Execute")
-
-	if c.cs.OverwritePayload == nil {
-		log.Printf("skipping overwrite install, because none was specified.")
-		return nil
-	}
-	log.Printf("OverwriteInstalCommand OverwritePayload Completed")
-
-	if c.cs.OverwritePayload.HostType == conf.StoragePath_LOCAL || c.cs.OverwritePayload.HostType == conf.StoragePath_HOSTTYPE_UNSPECIFIED {
-		return fmt.Errorf("only GS copying is implemented")
-	}
-
-	err := c.cs.Connection.PipeData(c.ctx, c.cs.OverwritePayload.GetPath(), "tar xf - -C /")
-	if err != nil {
-		return fmt.Errorf("failed to download and untar file, %s", err)
-	}
-	log.Printf("OverwriteInstalCommand OverwritePayload.GetPath() Completed")
-
-	if err := c.cs.Connection.Restart(c.ctx); err != nil {
-		return fmt.Errorf("failed to restart dut, %s", err)
-	}
-	log.Printf("OverwriteInstalCommand Restart Completed")
-	log.Printf("InstallPartitionsCommand Success")
-	return nil
-}
-
-func (c *OverwriteInstalCommand) Revert() error {
-	return nil
-}
-
-func (c *OverwriteInstalCommand) GetErrorMessage() string {
-	return "failed to overwrite install"
-}
-
-func (c *OverwriteInstalCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_PROVISIONING_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/post_install_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/post_install_command.go
deleted file mode 100644
index dc3a268..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/post_install_command.go
+++ /dev/null
@@ -1,93 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	"context"
-	"fmt"
-	"log"
-	"path"
-	"strings"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type PostInstallCommand struct {
-	ctx context.Context
-	cs  *service.CrOSService
-}
-
-func NewPostInstallCommand(ctx context.Context, cs *service.CrOSService) *PostInstallCommand {
-	return &PostInstallCommand{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *PostInstallCommand) Execute(log *log.Logger) error {
-	log.Printf("Start PostInstallCommand Execute")
-
-	tmpMnt, err := c.cs.Connection.RunCmd(c.ctx, "mktemp", []string{"-d"})
-	if err != nil {
-		return fmt.Errorf("failed to create temporary directory, %s", err)
-	}
-	log.Printf("PostInstallCommand mktemp Completed")
-
-	tmpMnt = strings.TrimSpace(tmpMnt)
-	if _, err := c.cs.Connection.RunCmd(c.ctx, "mount", []string{"-o", "ro", c.cs.MachineMetadata.RootInfo.PartitionInfo.InactiveRoot, tmpMnt}); err != nil {
-		return fmt.Errorf("failed to mount inactive root, %s", err)
-	}
-	log.Printf("PostInstallCommand mount Completed")
-
-	if _, err := c.cs.Connection.RunCmd(c.ctx, fmt.Sprintf("%s/postinst", tmpMnt), []string{c.cs.MachineMetadata.RootInfo.PartitionInfo.InactiveRoot}); err != nil {
-		return fmt.Errorf("failed to postinst from inactive root, %s", err)
-	}
-	log.Printf("PostInstallCommand postinst Completed")
-
-	if _, err := c.cs.Connection.RunCmd(c.ctx, "umount", []string{tmpMnt}); err != nil {
-		return fmt.Errorf("failed to umount temporary directory, %s", err)
-	}
-	log.Printf("PostInstallCommand umount Completed")
-
-	if _, err := c.cs.Connection.RunCmd(c.ctx, "rmdir", []string{tmpMnt}); err != nil {
-		return fmt.Errorf("failed to remove temporary directory, %s", err)
-	}
-	log.Printf("PostInstallCommand rmdir Completed")
-	log.Printf("PostInstallCommand Success")
-	return nil
-}
-
-func (c *PostInstallCommand) Revert() error {
-	c.revertStatefulInstall()
-	c.revertPostInstall()
-	return nil
-}
-
-// RevertStatefulInstall literally reverses a stateful installation
-func (c *PostInstallCommand) revertStatefulInstall() {
-	varNewPath := path.Join(common_utils.StatefulPath, "var_new")
-	devImageNewPath := path.Join(common_utils.StatefulPath, "dev_image_new")
-	_, err := c.cs.Connection.RunCmd(c.ctx, "rm", []string{"-rf", varNewPath, devImageNewPath, common_utils.UpdateStatefulFilePath})
-	if err != nil {
-		log.Printf("revert stateful install: failed to revert stateful installation, %s", err)
-	}
-}
-
-// RevertPostInstall literally reverses a PostInstall
-func (c *PostInstallCommand) revertPostInstall() {
-	if _, err := c.cs.Connection.RunCmd(c.ctx, "/postinst", []string{c.cs.MachineMetadata.RootInfo.PartitionInfo.ActiveRoot, "2>&1"}); err != nil {
-		log.Printf("revert post install: failed to revert postinst, %s", err)
-	}
-}
-
-func (c *PostInstallCommand) GetErrorMessage() string {
-	return "failed to post install"
-}
-
-func (c *PostInstallCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_POST_PROVISION_SETUP_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/provision_stateful_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/provision_stateful_command.go
deleted file mode 100644
index cf96b98..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/provision_stateful_command.go
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"go.chromium.org/chromiumos/test/provision/cmd/provisionserver/bootstrap/info"
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	"context"
-	"fmt"
-	"log"
-	"path"
-
-	conf "go.chromium.org/chromiumos/config/go"
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type ProvisionStatefulCommand struct {
-	ctx context.Context
-	cs  *service.CrOSService
-}
-
-func NewProvisionStatefulCommand(ctx context.Context, cs *service.CrOSService) *ProvisionStatefulCommand {
-	return &ProvisionStatefulCommand{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *ProvisionStatefulCommand) Execute(log *log.Logger) error {
-	log.Printf("Start ProvisionStatefulCommand Execute")
-
-	if c.cs.ImagePath.HostType == conf.StoragePath_LOCAL || c.cs.ImagePath.HostType == conf.StoragePath_HOSTTYPE_UNSPECIFIED {
-		return fmt.Errorf("only GS copying is implemented")
-	}
-
-	if _, err := c.cs.Connection.RunCmd(c.ctx, "rm", []string{
-		"-rf", info.UpdateStatefulFilePath, path.Join(info.StatefulPath, "var_new"), path.Join(info.StatefulPath, "dev_image_new"),
-	}); err != nil {
-		log.Printf("ProvisionStatefulCommand rm FAILED")
-		return err
-	}
-	log.Printf("ProvisionStatefulCommand rm Completed")
-
-	if err := c.cs.Connection.PipeData(c.ctx,
-		common_utils.BucketJoin(c.cs.ImagePath.GetPath(), "stateful.zst"),
-		fmt.Sprintf("tar --ignore-command-error --overwrite --directory=%s --selinux --zstd -xf -", info.StatefulPath)); err != nil {
-		log.Printf("ProvisionStatefulCommand PipeData zst failed CONTINUING")
-		// Continue here, we need the fallback below.
-		if err := c.cs.Connection.PipeData(c.ctx,
-			common_utils.BucketJoin(c.cs.ImagePath.GetPath(), "stateful.tgz"),
-			fmt.Sprintf("tar --ignore-command-error --overwrite --directory=%s --selinux -xzf -", info.StatefulPath)); err != nil {
-			log.Printf("ProvisionStatefulCommand PipeData FAILED")
-			return err
-		}
-	}
-
-	log.Printf("ProvisionStatefulCommand PipeData Completed")
-
-	if _, err := c.cs.Connection.RunCmd(c.ctx, "echo", []string{"-n", "clobber", ">", info.UpdateStatefulFilePath}); err != nil {
-		log.Printf("ProvisionStatefulCommand UpdateStatefulFilePath FAILED")
-		return err
-	}
-	log.Printf("ProvisionStatefulCommand UpdateStatefulFilePath Completed")
-	log.Printf("ProvisionStatefulCommand Success")
-	return nil
-}
-
-func (c *ProvisionStatefulCommand) Revert() error {
-	varNewPath := path.Join(info.StatefulPath, "var_new")
-	devImageNewPath := path.Join(info.StatefulPath, "dev_image_new")
-	_, err := c.cs.Connection.RunCmd(c.ctx, "rm", []string{"-rf", varNewPath, devImageNewPath, info.UpdateStatefulFilePath})
-	if err != nil {
-		log.Printf("revert stateful install: failed to revert stateful installation, %s", err)
-	}
-	return nil
-}
-
-func (c *ProvisionStatefulCommand) GetErrorMessage() string {
-	return "failed to provision stateful"
-}
-
-func (c *ProvisionStatefulCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_PROVISIONING_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/reboot_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/reboot_command.go
deleted file mode 100644
index b34a323..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/reboot_command.go
+++ /dev/null
@@ -1,104 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	"context"
-	"fmt"
-	"log"
-	"time"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type OptionalRebootArgs struct {
-	// force the reboot over a clean reboot.
-	Force bool
-}
-
-type RebootCommand struct {
-	timeout *time.Duration
-	ctx     context.Context
-	cs      *service.CrOSService
-	force   bool
-}
-
-func getForce(optRebootArgs ...OptionalRebootArgs) bool {
-	if len(optRebootArgs) > 0 {
-		return optRebootArgs[0].Force
-	}
-	// Default.
-	return false
-}
-
-func NewRebootWithTimeoutCommand(timeout time.Duration, ctx context.Context, cs *service.CrOSService, optRebootArgs ...OptionalRebootArgs) *RebootCommand {
-	return &RebootCommand{
-		timeout: &timeout,
-		ctx:     ctx,
-		cs:      cs,
-		force:   getForce(optRebootArgs...),
-	}
-}
-
-func NewRebootCommand(ctx context.Context, cs *service.CrOSService, optRebootArgs ...OptionalRebootArgs) *RebootCommand {
-	return &RebootCommand{
-		timeout: nil,
-		ctx:     ctx,
-		cs:      cs,
-		force:   getForce(optRebootArgs...),
-	}
-}
-
-func (c *RebootCommand) Execute(log *log.Logger) error {
-	log.Printf("Start RebootCommand Execute")
-
-	ctx := c.ctx
-	var cancel context.CancelFunc
-	if c.timeout != nil {
-		ctx, cancel = context.WithTimeout(context.Background(), *c.timeout)
-		defer cancel()
-	}
-	if c.force {
-		log.Printf("Performing forced reboot")
-		bootID, err := c.cs.Connection.RunCmd(ctx, "/bin/cat", []string{"/proc/sys/kernel/random/boot_id"})
-		if err != nil {
-			return err
-		}
-
-		// Ignore errors.
-		c.cs.Connection.RunCmd(ctx, "/bin/echo", []string{"\"b\"", ">", "/proc/sysrq-trigger"})
-
-		if err = c.cs.Connection.ForceReconnectWithBackoff(ctx); err != nil {
-			return err
-		}
-
-		// Force waiting for changed boot ID.
-		bootIDPostForcedReboot, err := c.cs.Connection.RunCmd(ctx, "/bin/cat", []string{"/proc/sys/kernel/random/boot_id"})
-		if err != nil {
-			return err
-		}
-
-		if bootID == bootIDPostForcedReboot {
-			return fmt.Errorf("boot ID did not change from: %s", bootID)
-		}
-	} else if err := c.cs.Connection.Restart(ctx); err != nil {
-		return err
-	}
-	log.Printf("RebootCommand Success")
-	return nil
-}
-
-func (c *RebootCommand) Revert() error {
-	return nil
-}
-
-func (c *RebootCommand) GetErrorMessage() string {
-	return "failed to reboot DUT"
-}
-
-func (c *RebootCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_DUT_UNREACHABLE_POST_PROVISION
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/start_dlc_service_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/start_dlc_service_command.go
deleted file mode 100644
index df477e3..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/start_dlc_service_command.go
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	"context"
-	"log"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type StartDLCServiceCommand struct {
-	ctx context.Context
-	cs  *service.CrOSService
-}
-
-func NewStartDLCServiceCommand(ctx context.Context, cs *service.CrOSService) *StartDLCServiceCommand {
-	return &StartDLCServiceCommand{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *StartDLCServiceCommand) Execute(log *log.Logger) error {
-	log.Printf("Start StartDLCServiceCommand Execute")
-
-	if _, err := c.cs.Connection.RunCmd(c.ctx, "start", []string{"dlcservice"}); err != nil {
-		log.Printf("StartDLCServiceCommand start FAILED NON FATAL")
-
-		log.Printf("%s, %s", c.GetErrorMessage(), err)
-	}
-	log.Printf("StartDLCServiceCommand Success")
-
-	return nil
-}
-
-func (c *StartDLCServiceCommand) Revert() error {
-	return nil
-}
-
-func (c *StartDLCServiceCommand) GetErrorMessage() string {
-	return "failed to start DLC service"
-}
-
-func (c *StartDLCServiceCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_PROVISIONING_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/stop_dlc_service_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/stop_dlc_service_command.go
deleted file mode 100644
index 6520ed6..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/stop_dlc_service_command.go
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	"context"
-	"log"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type StopDLCServiceCommand struct {
-	ctx context.Context
-	cs  *service.CrOSService
-}
-
-func NewStopDLCServiceCommand(ctx context.Context, cs *service.CrOSService) *StopDLCServiceCommand {
-	return &StopDLCServiceCommand{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *StopDLCServiceCommand) Execute(log *log.Logger) error {
-	log.Printf("Start StopDLCServiceCommand Execute")
-	if _, err := c.cs.Connection.RunCmd(c.ctx, "stop", []string{"dlcservice"}); err != nil {
-		log.Printf("StopDLCServiceCommand stop FAILED NON FATAL")
-		log.Printf("%s, %s", c.GetErrorMessage(), err)
-	}
-	log.Printf("StopDLCServiceCommand Success")
-	return nil
-}
-
-func (c *StopDLCServiceCommand) Revert() error {
-	return nil
-}
-
-func (c *StopDLCServiceCommand) GetErrorMessage() string {
-	return "failed to stop DLC service"
-}
-
-func (c *StopDLCServiceCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_PROVISIONING_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/stop_system_daemons_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/stop_system_daemons_command.go
deleted file mode 100644
index 0149bb4..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/stop_system_daemons_command.go
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	"context"
-	"log"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type StopSystemDaemonsCommand struct {
-	ctx context.Context
-	cs  *service.CrOSService
-}
-
-func NewStopSystemDaemonsCommand(ctx context.Context, cs *service.CrOSService) *StopSystemDaemonsCommand {
-	return &StopSystemDaemonsCommand{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *StopSystemDaemonsCommand) Execute(log *log.Logger) error {
-	log.Printf("Start StopSystemDaemonsCommand Execute")
-	if _, err := c.cs.Connection.RunCmd(c.ctx, "stop", []string{"ui"}); err != nil {
-		log.Printf("StopSystemDaemonsCommand stop ui FAILED NON FATAL")
-		log.Printf("Failed to stop UI daemon, %s", err)
-	}
-	if _, err := c.cs.Connection.RunCmd(c.ctx, "stop", []string{"update-engine"}); err != nil {
-		log.Printf("StopSystemDaemonsCommand stop update-engine FAILED NON FATAL")
-		log.Printf("Failed to stop update-engine daemon, %s", err)
-	}
-	log.Printf("StopSystemDaemonsCommand Success")
-	return nil
-}
-
-func (c *StopSystemDaemonsCommand) Revert() error {
-	return nil
-}
-
-func (c *StopSystemDaemonsCommand) GetErrorMessage() string {
-	return "failed to stop system daemons"
-}
-
-func (c *StopSystemDaemonsCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_PROVISIONING_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/swap_stateful_partition_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/swap_stateful_partition_command.go
deleted file mode 100644
index 8522036..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/swap_stateful_partition_command.go
+++ /dev/null
@@ -1,99 +0,0 @@
-// 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 commands
-
-import (
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	"context"
-	"fmt"
-	"log"
-	"strings"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type SwapStatefulPartitionCommand struct {
-	ctx context.Context
-	cs  *service.CrOSService
-}
-
-func NewSwapStatefulPartitionCommand(ctx context.Context, cs *service.CrOSService) *SwapStatefulPartitionCommand {
-	return &SwapStatefulPartitionCommand{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *SwapStatefulPartitionCommand) Execute(log *log.Logger) error {
-	log.Printf("Start SwapStatefulPartitionCommand Execute")
-	defer log.Printf("SwapStatefulPartitionCommand Complete")
-
-	if c.cs.PreserveStateful {
-		log.Printf("Skipping SwapStatefulPartitionCommand due to preservation.")
-		return nil
-	}
-
-	tmpMnt, err := c.cs.Connection.RunCmd(c.ctx, "/usr/bin/mktemp", []string{"-d"})
-	if err != nil {
-		return fmt.Errorf("failed to create temporary directory, %s", err)
-	}
-	tmpMnt = strings.TrimSpace(tmpMnt)
-
-	_, err = c.cs.Connection.RunCmd(c.ctx, "/bin/dd", []string{"if=/dev/zero", fmt.Sprintf("of=%s/fs", tmpMnt), "bs=512M", "count=1"})
-	if err != nil {
-		return fmt.Errorf("failed to create zero file, %s", err)
-	}
-
-	_, err = c.cs.Connection.RunCmd(c.ctx, "/sbin/mkfs.ext4", []string{"-O", "none,has_journal", tmpMnt + "/fs"})
-	if err != nil {
-		return fmt.Errorf("failed to create powerwash filesystem, %s", err)
-	}
-
-	_, err = c.cs.Connection.RunCmd(c.ctx, "/bin/mkdir", []string{tmpMnt + "/mnt"})
-	if err != nil {
-		return fmt.Errorf("failed to create mount directory, %s", err)
-	}
-
-	_, err = c.cs.Connection.RunCmd(c.ctx, "/bin/mount", []string{tmpMnt + "/fs", tmpMnt + "/mnt"})
-	if err != nil {
-		return fmt.Errorf("failed to mount powerwash filesystem, %s", err)
-	}
-
-	_, err = c.cs.Connection.RunCmd(c.ctx, "/bin/echo", []string{"-n", "\"fast safe keepimg\"", ">", tmpMnt + "/mnt/factory_install_reset"})
-	if err != nil {
-		return fmt.Errorf("failed to write reset file, %s", err)
-	}
-
-	_, err = c.cs.Connection.RunCmd(c.ctx, "/bin/umount", []string{tmpMnt + "/mnt"})
-	if err != nil {
-		return fmt.Errorf("failed to unmount powerwash filesystem, %s", err)
-	}
-
-	_, err = c.cs.Connection.RunCmd(c.ctx, "/sbin/fsfreeze", []string{"-f", "/mnt/stateful_partition"})
-	if err != nil {
-		return fmt.Errorf("failed to freeze stateful filesystem, %s", err)
-	}
-
-	pi := common_utils.GetPartitionInfo(c.cs.MachineMetadata.RootInfo.Root, c.cs.MachineMetadata.RootInfo.RootDisk, c.cs.MachineMetadata.RootInfo.RootPartNum)
-	_, err = c.cs.Connection.RunCmd(c.ctx, "/bin/dd", []string{fmt.Sprintf("if=%s/fs", tmpMnt), fmt.Sprintf("of=%s", pi.Stateful), "bs=1M", "conv=fsync"})
-	if err != nil {
-		return fmt.Errorf("failed to unmount powerwash filesystem, %s", err)
-	}
-
-	return nil
-}
-
-func (c *SwapStatefulPartitionCommand) Revert() error {
-	return nil
-}
-
-func (c *SwapStatefulPartitionCommand) GetErrorMessage() string {
-	return "failed to wipe(swap) stateful"
-}
-
-func (c *SwapStatefulPartitionCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_PROVISIONING_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/update_firmware_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/update_firmware_command.go
deleted file mode 100644
index 625d90c..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/update_firmware_command.go
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	"context"
-	"fmt"
-	"log"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type RunFirmwareUpdaterCommand struct {
-	ctx context.Context
-	cs  *service.CrOSService
-}
-
-func NewRunFirmwareUpdaterCommand(ctx context.Context, cs *service.CrOSService) *RunFirmwareUpdaterCommand {
-	return &RunFirmwareUpdaterCommand{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *RunFirmwareUpdaterCommand) Execute(log *log.Logger) error {
-	log.Printf("Start RunFirmwareUpdaterCommand Execute")
-
-	if _, err := c.cs.Connection.RunCmd(c.ctx, common_utils.FirmwareUpdaterPath, []string{"--wp=1", "--mode=autoupdate"}); err != nil {
-		return fmt.Errorf("run firmware updater: %s", err)
-	}
-
-	log.Printf("RunFirmwareUpdaterCommand Success")
-
-	return nil
-}
-
-func (c *RunFirmwareUpdaterCommand) Revert() error {
-	return nil
-}
-
-func (c *RunFirmwareUpdaterCommand) GetErrorMessage() string {
-	return "failed to run firmware updater"
-}
-
-func (c *RunFirmwareUpdaterCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_UPDATE_FIRMWARE_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/verify_firmware_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/verify_firmware_command.go
deleted file mode 100644
index 7acf08e..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/verify_firmware_command.go
+++ /dev/null
@@ -1,112 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	"context"
-	"encoding/json"
-	"fmt"
-	"log"
-	"regexp"
-	"strings"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-var firmwareManifestRegexp = regexp.MustCompile("FIRMWARE_MANIFEST_KEY='(.*)'")
-
-type VerifyFirmwareCommand struct {
-	ctx context.Context
-	cs  *service.CrOSService
-}
-
-func NewVerifyFirmwareCommand(ctx context.Context, cs *service.CrOSService) *VerifyFirmwareCommand {
-	return &VerifyFirmwareCommand{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *VerifyFirmwareCommand) Execute(log *log.Logger) error {
-	log.Printf("Start VerifyFirmwareCommand Execute")
-
-	expected, err := c.getAvailableFirmwareVersion()
-	if err != nil {
-		log.Printf("VerifyFirmwareCommand FAILED NON FATAL, %s", err)
-		return nil
-	}
-	log.Printf("expected firmware %s", expected)
-	actual, err := c.getCurrentFirmwareVersion()
-	if err != nil {
-		log.Printf("VerifyFirmwareCommand FAILED NON FATAL, %s", err)
-		return nil
-	}
-	log.Printf("actual firmware %s", actual)
-	if expected != actual {
-		return fmt.Errorf("firmware version mismatch after update, expected: %s, actual: %s", expected, actual)
-	}
-
-	log.Printf("VerifyFirmwareCommand Success")
-
-	return nil
-}
-
-// getAvailableFirmwareVersion read firmware manifest from current OS and extract available firmware version based on model.
-func (c *VerifyFirmwareCommand) getAvailableFirmwareVersion() (string, error) {
-	out, err := c.cs.Connection.RunCmd(c.ctx, common_utils.FirmwareUpdaterPath, []string{"--manifest"})
-	if err != nil {
-		return "", fmt.Errorf("getAvailableFirmwareVersion: failed to get firmware manifest, %s", err)
-	}
-	var manifest common_utils.FirmwareManifest
-	if err := json.Unmarshal([]byte(out), &manifest); err != nil {
-		return "", fmt.Errorf("getAvailableFirmwareVersion: failed to unmarshal firmware manifest, %s", err)
-	}
-	fwModel, err := c.getFirmwareTarget()
-	if err != nil {
-		return "", fmt.Errorf("getAvailableFirmwareVersion: failed to get firmware target %s", err)
-	}
-	if data, ok := manifest[fwModel]; ok {
-		log.Printf("Available firmware from the new OS: %s.", data.Host.Versions.Rw)
-		return data.Host.Versions.Rw, nil
-	}
-	return "", fmt.Errorf("getAvailableFirmwareVersion: failed to get firmware data of key %s from manifest, %s", fwModel, err)
-}
-
-// getFirmwareTarget returns firmware target of the DUT, which will be used to as key to fetch expected firmware from manifest.
-func (c *VerifyFirmwareCommand) getFirmwareTarget() (string, error) {
-	out, err := c.cs.Connection.RunCmd(c.ctx, "crosid", []string{})
-	if err != nil {
-		return "", err
-	}
-	fwLine := firmwareManifestRegexp.FindString(out)
-	if fwLine != "" {
-		return strings.TrimPrefix(strings.TrimSuffix(fwLine, "'"), "FIRMWARE_MANIFEST_KEY='"), nil
-	}
-	return "", fmt.Errorf("getFirmwareTarget: unable to parse FIRMWARE_MANIFEST_KEY from crosid")
-}
-
-// getCurrentFirmwareVersion read current system firmware version on the DUT.
-func (c *VerifyFirmwareCommand) getCurrentFirmwareVersion() (string, error) {
-	out, err := c.cs.Connection.RunCmd(c.ctx, "crossystem", []string{"fwid"})
-	if err != nil {
-		return "", fmt.Errorf("getCurrentFirmwareVersion: failed to read current system firmware, %s", err)
-	}
-	log.Printf("Current firmware on DUT: %s.", out)
-	return out, nil
-}
-
-func (c *VerifyFirmwareCommand) Revert() error {
-	return nil
-}
-
-func (c *VerifyFirmwareCommand) GetErrorMessage() string {
-	return "firmware installed does not match with OS bundled firmware"
-}
-
-func (c *VerifyFirmwareCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_FIRMWARE_MISMATCH_POST_FIRMWARE_UPDATE
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/wait_for_dut_to_stabilize_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/wait_for_dut_to_stabilize_command.go
deleted file mode 100644
index ea29cb3..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/wait_for_dut_to_stabilize_command.go
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	"context"
-	"errors"
-	"log"
-	"strings"
-	"time"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type WaitForDutToStabilizeCommand struct {
-	ctx context.Context
-	cs  *service.CrOSService
-}
-
-func NewWaitForDutToStabilizeCommand(ctx context.Context, cs *service.CrOSService) *WaitForDutToStabilizeCommand {
-	return &WaitForDutToStabilizeCommand{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *WaitForDutToStabilizeCommand) Execute(log *log.Logger) error {
-	log.Printf("Start WaitForDutToStabilizeCommand Execute")
-
-	// Note in CLI mode the context is not built with a timeout, thus we need to check on loop.
-	for start := time.Now(); time.Since(start) < 5 * time.Minute; time.Sleep(2 * time.Second) {
-		select {
-		case <-c.ctx.Done():
-			return errors.New("failed to wait for UI to stablize, likely a bad image")
-		default:
-			status, err := c.cs.Connection.RunCmd(c.ctx, "status", []string{"system-services"})
-			if err != nil {
-				log.Printf("WaitForDutToStabilizeCommand could not get UI status, %s", err)
-			} else if !strings.Contains(status, "start/running") {
-				log.Printf("WaitForDutToStabilizeCommand UI has not stabilized yet")
-			} else {
-				log.Printf("WaitForDutToStabilizeCommand UI is running")
-				log.Printf("WaitForDutToStabilizeCommand Success")
-				return nil
-			}
-		}
-	}
-	return errors.New("failed to wait for UI to stablize, likely a bad image")
-}
-
-func (c *WaitForDutToStabilizeCommand) Revert() error {
-	return nil
-}
-
-func (c *WaitForDutToStabilizeCommand) GetErrorMessage() string {
-	return "failed to wait for DUT to stabilize"
-}
-
-func (c *WaitForDutToStabilizeCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_STABLIZE_DUT_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/wait_for_kernel_sticky.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/wait_for_kernel_sticky.go
deleted file mode 100644
index 5c7de98..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands/wait_for_kernel_sticky.go
+++ /dev/null
@@ -1,80 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package commands
-
-import (
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-
-	"context"
-	"errors"
-	"fmt"
-	"log"
-	"strings"
-	"time"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type WaitForStickyKernel struct {
-	ctx context.Context
-	cs  *service.CrOSService
-}
-
-func NewWaitForStickyKernel(ctx context.Context, cs *service.CrOSService) *WaitForStickyKernel {
-	return &WaitForStickyKernel{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *WaitForStickyKernel) Execute(log *log.Logger) error {
-	log.Printf("Start WaitForStickyKernel Execute")
-
-	pi := common_utils.GetPartitionInfo(c.cs.MachineMetadata.RootInfo.Root,
-		c.cs.MachineMetadata.RootInfo.RootDisk,
-		c.cs.MachineMetadata.RootInfo.RootPartNum)
-
-	kernalNum := pi.ActiveKernelNum
-	// Timeout is determined by 4x delay to mark new kernel successful + 10 seconds fuzz.
-	stickyTimeout := (45 * 4 + 10) * time.Second
-	stickyKernelCtx, cancel := context.WithTimeout(c.ctx, stickyTimeout)
-	defer cancel()
-	if _, err := c.cs.Connection.RunCmd(c.ctx, "cgpt", []string{"repair", c.cs.MachineMetadata.RootInfo.RootDisk}); err != nil {
-		return fmt.Errorf("failed to repair GPT headers and tables: %s", err)
-	}
-
-	// Note in CLI mode the context is not built with a timeout, thus we need to check on loop.
-	for {
-		select {
-		case <-stickyKernelCtx.Done():
-			return errors.New("kernel never became sticky within timeout")
-		default:
-			kernelSuccess, err := c.cs.Connection.RunCmd(c.ctx, "cgpt", []string{"show", "-S", "-i", kernalNum, c.cs.MachineMetadata.RootInfo.RootDisk})
-			if err != nil {
-				log.Printf("WaitForStickyKernel kernel status, %s", err)
-			} else if strings.TrimSpace(kernelSuccess) != "1" {
-				log.Printf("WaitForStickyKernel kernel not yet sticky")
-			} else {
-				log.Printf("WaitForStickyKernel kernel is sticky")
-				log.Printf("WaitForStickyKernel Success")
-				return nil
-			}
-			time.Sleep(2 * time.Second)
-		}
-	}
-}
-
-func (c *WaitForStickyKernel) Revert() error {
-	return nil
-}
-
-func (c *WaitForStickyKernel) GetErrorMessage() string {
-	return "failed to wait for kernel to be sticky"
-}
-
-func (c *WaitForStickyKernel) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_STABLIZE_DUT_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/init_state.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/init_state.go
deleted file mode 100644
index 6eb8222..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/init_state.go
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// First step of the CrOSInstall State Machine. Responsible for initialization.
-package state_machine
-
-import (
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands"
-	"context"
-	"fmt"
-	"log"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"google.golang.org/protobuf/types/known/anypb"
-)
-
-// CrosInitState can be thought of as the constructor state, which initializes
-// variables in CrOSService
-type CrOSInitState struct {
-	service *service.CrOSService
-}
-
-func NewCrOSInitState(service *service.CrOSService) common_utils.ServiceState {
-	return CrOSInitState{
-		service: service,
-	}
-}
-
-func (s CrOSInitState) Execute(ctx context.Context, log *log.Logger) (*anypb.Any, api.InstallResponse_Status, error) {
-	log.Printf("State: Execute CrOSInitState")
-	comms := []common_utils.CommandInterface{
-		commands.NewCreateProvisionMarkerCommand(ctx, s.service),
-		commands.NewGetRootInfoCommand(ctx, s.service),
-		commands.NewCheckKvmEnabled(ctx, s.service),
-	}
-
-	for _, comm := range comms {
-		err := comm.Execute(log)
-		if err != nil {
-			return nil, comm.GetStatus(), fmt.Errorf("%s, %s", comm.GetErrorMessage(), err)
-		}
-	}
-	log.Printf("State: CrOSInitState Completed")
-	return nil, api.InstallResponse_STATUS_SUCCESS, nil
-}
-
-func (s CrOSInitState) Next() common_utils.ServiceState {
-	return CrOSInstallState(s)
-}
-
-func (s CrOSInitState) Name() string {
-	return "CrOS Init"
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/install_minios_state.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/install_minios_state.go
deleted file mode 100644
index 88a7294..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/install_minios_state.go
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Sixth and final step in the CrOSInstall State Machine. Installs MiniOS
-package state_machine
-
-import (
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands"
-	"context"
-	"fmt"
-	"log"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"google.golang.org/protobuf/types/known/anypb"
-)
-
-type CrOSInstallMiniOSState struct {
-	service *service.CrOSService
-}
-
-func (s CrOSInstallMiniOSState) Execute(ctx context.Context, log *log.Logger) (*anypb.Any, api.InstallResponse_Status, error) {
-	log.Printf("State: Execute CrOSInstallMiniOSState")
-	comms := []common_utils.CommandInterface{
-		commands.NewInstallMiniOSCommand(ctx, s.service),
-	}
-
-	for i, comm := range comms {
-		err := comm.Execute(log)
-		if err != nil {
-			for ; i >= 0; i-- {
-				if innerErr := comms[i].Revert(); innerErr != nil {
-					return nil, comm.GetStatus(), fmt.Errorf("failure while reverting, %s: %s", err, innerErr)
-				}
-			}
-			return nil, comm.GetStatus(), fmt.Errorf("%s, %s", comm.GetErrorMessage(), err)
-		}
-	}
-	log.Printf("State: CrOSInstallMiniOSState Completed")
-	return nil, api.InstallResponse_STATUS_SUCCESS, nil
-}
-
-func (s CrOSInstallMiniOSState) Next() common_utils.ServiceState {
-	return nil
-}
-
-func (s CrOSInstallMiniOSState) Name() string {
-	return "CrOS Install MiniOS"
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/install_state.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/install_state.go
deleted file mode 100644
index 194ca0a..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/install_state.go
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Second step of CrOSInstall State Machine. Responsible for partition and install
-package state_machine
-
-import (
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands"
-	"context"
-	"fmt"
-	"log"
-	"time"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"google.golang.org/protobuf/types/known/anypb"
-)
-
-type CrOSInstallState struct {
-	service *service.CrOSService
-}
-
-func (s CrOSInstallState) Execute(ctx context.Context, log *log.Logger) (*anypb.Any, api.InstallResponse_Status, error) {
-	log.Printf("State: Execute CrOSInstallState")
-	comms := []common_utils.CommandInterface{
-		commands.NewStopSystemDaemonsCommand(ctx, s.service),
-		commands.NewInstallPartitionsCommand(ctx, s.service),
-		commands.NewPostInstallCommand(ctx, s.service),
-		commands.NewClearTPMCommand(ctx, s.service),
-		commands.NewSwapStatefulPartitionCommand(ctx, s.service),
-		// Install reboot may take longer, so we issue a longer timeout
-		commands.NewRebootWithTimeoutCommand(500*time.Second, ctx, s.service, commands.OptionalRebootArgs{Force: true}),
-	}
-
-	for i, comm := range comms {
-		err := comm.Execute(log)
-		if err != nil {
-			for ; i >= 0; i-- {
-				log.Printf("CrOSInstallState REVERT CALLED")
-				if innerErr := comms[i].Revert(); innerErr != nil {
-					return nil, comm.GetStatus(), fmt.Errorf("failure while reverting, %s: %s", err, innerErr)
-				}
-			}
-			log.Printf("- Execute CrOSInstallState failure %s\n", err)
-			return nil, comm.GetStatus(), fmt.Errorf("%s, %s", comm.GetErrorMessage(), err)
-
-		}
-	}
-	log.Printf("State: CrOSInstallState Completed")
-	return nil, api.InstallResponse_STATUS_SUCCESS, nil
-}
-
-func (s CrOSInstallState) Next() common_utils.ServiceState {
-	return CrosUpdateFirmwareState(s)
-}
-
-func (s CrOSInstallState) Name() string {
-	return "CrOS Install"
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/post_install_state.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/post_install_state.go
deleted file mode 100644
index c649316..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/post_install_state.go
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Third step of CrOSInstall State Machine. Responsible for stateful provisioning
-package state_machine
-
-import (
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands"
-	"context"
-	"fmt"
-	"log"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"google.golang.org/protobuf/types/known/anypb"
-)
-
-type CrOSPostInstallState struct {
-	service *service.CrOSService
-}
-
-func (s CrOSPostInstallState) Execute(ctx context.Context, log *log.Logger) (*anypb.Any, api.InstallResponse_Status, error) {
-	log.Printf("State: Execute CrOSPostInstallState")
-
-	comms := []common_utils.CommandInterface{
-		commands.NewWaitForDutToStabilizeCommand(ctx, s.service),
-		commands.NewGetRootInfoCommand(ctx, s.service),
-		commands.NewWaitForStickyKernel(ctx, s.service),
-		commands.NewStopSystemDaemonsCommand(ctx, s.service),
-		commands.NewProvisionStatefulCommand(ctx, s.service),
-		commands.NewClearTPMCommand(ctx, s.service),
-		commands.NewRebootCommand(ctx, s.service),
-		commands.NewOverwriteInstalCommand(ctx, s.service),
-		commands.NewGetRootInfoCommand(ctx, s.service),
-	}
-
-	for i, comm := range comms {
-		err := comm.Execute(log)
-		if err != nil {
-			for ; i >= 0; i-- {
-				log.Printf("CrOSPostInstallState REVERT CALLED")
-				if innerErr := comms[i].Revert(); innerErr != nil {
-					return nil, comm.GetStatus(), fmt.Errorf("failure while reverting, %s: %s", err, innerErr)
-				}
-			}
-			return nil, comm.GetStatus(), fmt.Errorf("%s, %s", comm.GetErrorMessage(), err)
-		}
-	}
-	log.Printf("State: CrOSPostInstallState Completed")
-
-	return nil, api.InstallResponse_STATUS_SUCCESS, nil
-}
-
-func (s CrOSPostInstallState) Next() common_utils.ServiceState {
-	return CrOSVerifyState(s)
-}
-
-func (s CrOSPostInstallState) Name() string {
-	return "CrOS Post-Install"
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/pre_init_state.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/pre_init_state.go
deleted file mode 100644
index ed41bc9..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/pre_init_state.go
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright 2023 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Package state_machine - Pre check for CrOSInstall State Machine. Responsible for checking image status and possibly skipping provision.
-package state_machine
-
-import (
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands"
-	"context"
-	"fmt"
-	"log"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"google.golang.org/protobuf/types/known/anypb"
-)
-
-// CrOSPreInitState can be thought of as the constructor state, which initializes
-// variables in CrOSService
-type CrOSPreInitState struct {
-	service    *service.CrOSService
-}
-
-// NewCrOSPreInitState provides an interface to CrOSPreInitState.
-func NewCrOSPreInitState(service *service.CrOSService) common_utils.ServiceState {
-	return CrOSPreInitState{
-		service: service,
-	}
-}
-
-// Execute executes the steps needed to support CrOSPreInitState. Xheck if the chromeOS target == current, if so skip install.
-func (s CrOSPreInitState) Execute(ctx context.Context, log *log.Logger) (*anypb.Any, api.InstallResponse_Status, error) {
-	log.Printf("State: Execute CrOSPreInitState")
-	comms := []common_utils.CommandInterface{
-		commands.NewGetBoardCommand(ctx, s.service),
-		commands.NewGetVersionCommand(ctx, s.service),
-		commands.NewCheckInstallNeeded(ctx, s.service),
-	}
-
-	for _, comm := range comms {
-		err := comm.Execute(log)
-		if err != nil {
-			return nil, comm.GetStatus(), fmt.Errorf("%s, %s", comm.GetErrorMessage(), err)
-		}
-	}
-
-	log.Printf("State: CrOSPreInitState Completed")
-	return nil, api.InstallResponse_STATUS_SUCCESS, nil
-}
-
-// Next provides the interface to the CrosInitState if the install flag is set.
-func (s CrOSPreInitState) Next() common_utils.ServiceState {
-	if s.service.UpdateCros {
-		return CrOSInitState(s)
-	} else if s.service.QuickResetDevice {
-		return CrOSResetDeviceState(s)
-	}
-	return nil
-}
-
-// Name of the step.
-func (s CrOSPreInitState) Name() string {
-	return "CrOS Init"
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/provision_dlc_state.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/provision_dlc_state.go
deleted file mode 100644
index bd11a1d..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/provision_dlc_state.go
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Fifth step in the CrOSInstall State Machine. Installs DLCs
-package state_machine
-
-import (
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands"
-	"context"
-	"fmt"
-	"log"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"google.golang.org/protobuf/types/known/anypb"
-)
-
-type CrOSProvisionDLCState struct {
-	service *service.CrOSService
-}
-
-func (s CrOSProvisionDLCState) Execute(ctx context.Context, log *log.Logger) (*anypb.Any, api.InstallResponse_Status, error) {
-	log.Printf("State: Execute CrOSProvisionDLCState")
-	if len(s.service.DlcSpecs) == 0 {
-		return nil, api.InstallResponse_STATUS_SUCCESS, nil
-	}
-	commands.NewStopDLCServiceCommand(ctx, s.service).Execute(log)
-	defer commands.NewStartDLCServiceCommand(ctx, s.service).Execute(log)
-
-	if err := commands.NewInstallDLCsCommand(ctx, s.service).Execute(log); err != nil {
-		return nil, commands.NewInstallDLCsCommand(ctx, s.service).GetStatus(), fmt.Errorf("failed to install the following DLCs (%s)", err)
-	}
-
-	if err := commands.NewCorrectDLCPermissionsCommand(ctx, s.service).Execute(log); err != nil {
-		return nil, commands.NewCorrectDLCPermissionsCommand(ctx, s.service).GetStatus(), fmt.Errorf("failed to correct DLC permissions, %s", err)
-	}
-	log.Printf("State: CrOSProvisionDLCState Completed")
-
-	return nil, api.InstallResponse_STATUS_SUCCESS, nil
-}
-
-func (s CrOSProvisionDLCState) Next() common_utils.ServiceState {
-	return CrOSInstallMiniOSState(s)
-}
-
-func (s CrOSProvisionDLCState) Name() string {
-	return "CrOS Provision DLC"
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/reset_device_state.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/reset_device_state.go
deleted file mode 100644
index f28ca1c..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/reset_device_state.go
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright 2023 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Package state_machine - Pre check for CrOSInstall State Machine. Responsible for checking image status and possibly skipping provision.
-package state_machine
-
-import (
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands"
-	"context"
-	"fmt"
-	"log"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"google.golang.org/protobuf/types/known/anypb"
-)
-
-// CrOSResetDeviceState can be thought of as the constructor state, which initializes
-// variables in CrOSService
-type CrOSResetDeviceState struct {
-	service    *service.CrOSService
-}
-
-// NewCrOSResetDeviceState provides an interface to CrOSResetDeviceState.
-func NewCrOSResetDeviceState(service *service.CrOSService) common_utils.ServiceState {
-	return CrOSResetDeviceState{
-		service: service,
-	}
-}
-
-// Execute executes the steps needed to support CrOSResetDeviceState.
-func (s CrOSResetDeviceState) Execute(ctx context.Context, log *log.Logger) (*anypb.Any, api.InstallResponse_Status, error) {
-	log.Printf("State: Execute CrOSResetDeviceState")
-	comms := []common_utils.CommandInterface{
-		commands.NewStopSystemDaemonsCommand(ctx, s.service),
-		commands.NewProvisionStatefulCommand(ctx, s.service),
-		commands.NewClearTPMCommand(ctx, s.service),
-		commands.NewRebootCommand(ctx, s.service),
-		commands.NewEnableChargeLimitCommand(ctx, s.service),
-	}
-
-	for _, comm := range comms {
-		err := comm.Execute(log)
-		if err != nil {
-			return nil, comm.GetStatus(), fmt.Errorf("%s, %s", comm.GetErrorMessage(), err)
-		}
-	}
-
-	log.Printf("State: CrOSResetDeviceState Completed")
-	return nil, api.InstallResponse_STATUS_SUCCESS, nil
-}
-
-// Nothing to do for Next.
-func (s CrOSResetDeviceState) Next() common_utils.ServiceState {
-	return nil
-}
-
-// Name of the step.
-func (s CrOSResetDeviceState) Name() string {
-	return "CrOS Init"
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/update_firmware_state.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/update_firmware_state.go
deleted file mode 100644
index 91f8da7..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/update_firmware_state.go
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Third step of CrOSInstall State Machine. Responsible for update firmware
-package state_machine
-
-import (
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands"
-	"context"
-	"fmt"
-	"log"
-	"time"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"google.golang.org/protobuf/types/known/anypb"
-)
-
-type CrosUpdateFirmwareState struct {
-	service *service.CrOSService
-}
-
-func (s CrosUpdateFirmwareState) Execute(ctx context.Context, log *log.Logger) (*anypb.Any, api.InstallResponse_Status, error) {
-	if !s.service.UpdateFirmware {
-		log.Printf("State: Skip CrosUpdateFirmwareState by request")
-		return nil, api.InstallResponse_STATUS_SUCCESS, nil
-	}
-	// Some type of build(e.g. public build) doesn't have built-in firmware updater, so skip the firmware update in this case.
-	checkUpdaterComm := commands.NewCheckFirmwareUpdaterCommand(ctx, s.service)
-	if err := checkUpdaterComm.Execute(log); err != nil {
-		return nil, checkUpdaterComm.GetStatus(), fmt.Errorf("%s, %s", checkUpdaterComm.GetErrorMessage(), err)
-	}
-	if !checkUpdaterComm.UpdaterExist {
-		log.Printf("State: Skip CrosUpdateFirmwareState as firmware updater does not exist on the build")
-		return nil, api.InstallResponse_STATUS_SUCCESS, nil
-	}
-
-	log.Printf("State: Execute CrosUpdateFirmwareState")
-
-	comms := []common_utils.CommandInterface{
-		commands.NewWaitForDutToStabilizeCommand(ctx, s.service),
-		commands.NewRunFirmwareUpdaterCommand(ctx, s.service),
-	}
-	checkFirmwareSlotComm := commands.NewCheckFirmwareSlotCommand(ctx, s.service)
-	comms = append(comms, checkFirmwareSlotComm)
-
-	for i, comm := range comms {
-		err := comm.Execute(log)
-		if err != nil {
-			for ; i >= 0; i-- {
-				log.Printf("CrosUpdateFirmwareState REVERT CALLED")
-				if innerErr := comm.Revert(); innerErr != nil {
-					return nil, comm.GetStatus(), fmt.Errorf("failure while reverting, %s: %s", err, innerErr)
-				}
-			}
-			return nil, comm.GetStatus(), fmt.Errorf("%s, %s", comm.GetErrorMessage(), err)
-		}
-	}
-	// Reboot if firmware slot changed.
-	if checkFirmwareSlotComm.RebootRequired {
-		// Post firmware update reboot could take longer time, so give it 300 seconds timeout here.
-		rebootComm := commands.NewRebootWithTimeoutCommand(300*time.Second, ctx, s.service)
-		if err := rebootComm.Execute(log); err != nil {
-			return nil, rebootComm.GetStatus(), fmt.Errorf("%s, %s", rebootComm.GetErrorMessage(), err)
-		}
-	} else {
-		log.Printf("no firmware slot change detected, skip post firmware update reboot.")
-	}
-	verifyFirmwareComm := commands.NewVerifyFirmwareCommand(ctx, s.service)
-	if err := verifyFirmwareComm.Execute(log); err != nil {
-		return nil, verifyFirmwareComm.GetStatus(), fmt.Errorf("%s, %s", verifyFirmwareComm.GetErrorMessage(), err)
-	}
-
-	log.Printf("State: CrosUpdateFirmwareState Completed")
-
-	return nil, api.InstallResponse_STATUS_SUCCESS, nil
-}
-
-func (s CrosUpdateFirmwareState) Next() common_utils.ServiceState {
-	return CrOSPostInstallState(s)
-}
-
-func (s CrosUpdateFirmwareState) Name() string {
-	return "CrOS Update Firmware"
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/verify_state.go b/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/verify_state.go
deleted file mode 100644
index e6c27ae..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/verify_state.go
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Fourth step in the CrOSInstall State Machine. Currently a noop, to be implemented
-package state_machine
-
-import (
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/service"
-	"go.chromium.org/chromiumos/test/provision/v2/cros-provision/state-machine/commands"
-	"context"
-	"fmt"
-	"log"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"google.golang.org/protobuf/types/known/anypb"
-)
-
-type CrOSVerifyState struct {
-	service *service.CrOSService
-}
-
-func (s CrOSVerifyState) Execute(ctx context.Context, log *log.Logger) (*anypb.Any, api.InstallResponse_Status, error) {
-	log.Printf("State: Execute CrOSVerfiyState")
-	comms := []common_utils.CommandInterface{
-		commands.NewGetVersionCommand(ctx, s.service),
-		commands.NewCheckVersionMatches(ctx, s.service),
-		commands.NewEnableChargeLimitCommand(ctx, s.service),
-	}
-
-	for _, comm := range comms {
-		err := comm.Execute(log)
-		if err != nil {
-			return nil, comm.GetStatus(), fmt.Errorf("%s, %s", comm.GetErrorMessage(), err)
-		}
-	}
-
-	log.Printf("State: CrOSVerfiyState Completed")
-	return nil, api.InstallResponse_STATUS_SUCCESS, nil
-}
-
-func (s CrOSVerifyState) Next() common_utils.ServiceState {
-	return CrOSProvisionDLCState(s)
-}
-
-func (s CrOSVerifyState) Name() string {
-	return "CrOS Verify"
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/cli/abstract_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/cli/abstract_command.go
deleted file mode 100644
index ded72da..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/cli/abstract_command.go
+++ /dev/null
@@ -1,73 +0,0 @@
-// 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.
-
-// Responsible for the abstraction layer representing each command grouping
-package cli
-
-import (
-	"errors"
-	"fmt"
-	"io"
-	"log"
-	"os"
-	"path/filepath"
-)
-
-// AbstractCommand represents a CLI grouping (e.g.: run as server, run as CLI, etc)
-type AbstractCommand interface {
-	// Run runs the command
-	Run() error
-
-	// Is checks if the string is representative of the command
-	Is(string) bool
-
-	// Init is an initializer for the command given the trailing args
-	Init([]string) error
-
-	// Name is the command name (for debugging)
-	Name() string
-}
-
-// SetUpLog sets up the logging for the CLI
-func SetUpLog(dir string) (*log.Logger, error) {
-	if err := os.MkdirAll(dir, 0755); err != nil {
-		return nil, fmt.Errorf("failed to create directory %v: %v", dir, err)
-	}
-	lfp := filepath.Join(dir, "log.txt")
-	lf, err := os.Create(lfp)
-	if err != nil {
-		return nil, fmt.Errorf("failed to create file %v: %v", lfp, err)
-	}
-	newLog := log.New(io.MultiWriter(lf, os.Stderr), "<foil-provision>", log.LstdFlags|log.LUTC)
-	newLog.SetFlags(log.LstdFlags | log.Lshortfile | log.Lmsgprefix)
-	return newLog, nil
-}
-
-// ParseInputs is a helper method which parses input arguments. It is
-// effectively a factory method.
-func ParseInputs() (AbstractCommand, error) {
-	if len(os.Args) < 1 {
-		return nil, errors.New("CLI arguments must be specified")
-	}
-
-	cmds := []AbstractCommand{
-		NewServerCommand(),
-	}
-
-	subcommand := os.Args[1]
-	options := []string{}
-
-	for _, cmd := range cmds {
-		options = append(options, cmd.Name())
-		if cmd.Is(subcommand) {
-			if err := cmd.Init(os.Args[2:]); err != nil {
-				return nil, fmt.Errorf("failed to initialize cli command, %s", err)
-			}
-			return cmd, nil
-		}
-	}
-
-	return nil, fmt.Errorf("Unknown subcommand: %s. \nOptions are: [%s]", subcommand, options)
-
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/cli/server_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/cli/server_command.go
deleted file mode 100644
index 1ed72ca..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/cli/server_command.go
+++ /dev/null
@@ -1,90 +0,0 @@
-// 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.
-
-// Represents the server command grouping
-package cli
-
-import (
-	"flag"
-	"fmt"
-	"strings"
-
-	"go.chromium.org/chromiumos/test/provision/v2/common-utils/metadata"
-	"go.chromium.org/chromiumos/test/provision/v2/common-utils/server"
-	"go.chromium.org/chromiumos/test/provision/v2/foil-provision/constants"
-	"go.chromium.org/chromiumos/test/provision/v2/foil-provision/executor"
-)
-
-// ServerCommand executed the provisioning as a Server
-type ServerCommand struct {
-	metadata     *metadata.ServerMetadata
-	logFileName  string
-	metadataFile string
-	flagSet      *flag.FlagSet
-}
-
-func NewServerCommand() *ServerCommand {
-	sc := &ServerCommand{
-		flagSet:  flag.NewFlagSet("server", flag.ContinueOnError),
-		metadata: &metadata.ServerMetadata{},
-	}
-
-	sc.flagSet.IntVar(&sc.metadata.Port, "port", constants.DefaultPort, fmt.Sprintf("Specify the port for the server. Default value %d.", constants.DefaultPort))
-	sc.flagSet.StringVar(&sc.logFileName, "log-path", constants.DefaultLogDirectory, fmt.Sprintf("Path to record execution logs. Default value is %s", constants.DefaultLogDirectory))
-	sc.flagSet.StringVar(&sc.metadataFile, "metadata", "", "Specify the request jsonproto input file. Provide service paths and ProvisionState.")
-	return sc
-}
-
-func (sc *ServerCommand) Is(group string) bool {
-	return strings.HasPrefix(group, "s")
-}
-
-func (sc *ServerCommand) Name() string {
-	return "server"
-}
-
-func (sc *ServerCommand) Init(args []string) error {
-	err := sc.flagSet.Parse(args)
-	if err != nil {
-		return err
-	}
-
-	sc.metadata.Log, err = SetUpLog(sc.logFileName)
-	if err != nil {
-		return fmt.Errorf("unable to set up logs: %s", err)
-	}
-
-	if err = sc.validateCLIInputs(); err != nil {
-		return err
-	}
-
-	return nil
-}
-
-// validateCLIInputs ensures the CLI input values are valid
-func (cc *ServerCommand) validateCLIInputs() error {
-	return nil
-}
-
-func (sc *ServerCommand) Run() error {
-	sc.metadata.Log.Printf("running server mode:")
-	foilProvisionExecutor, err := executor.NewFoilProvisionExecutor(sc.metadata.Log)
-	if err != nil {
-		sc.metadata.Log.Fatalln("failed to create FoilProvisionExecutor: ", err)
-		return err
-	}
-	ps, closer, err := server.NewProvisionServer(sc.metadata, foilProvisionExecutor)
-	defer closer()
-	if err != nil {
-		sc.metadata.Log.Fatalln("failed to create provision: ", err)
-		return err
-	}
-
-	if err := ps.Start(); err != nil {
-		sc.metadata.Log.Fatalln("failed server execution: ", err)
-		return err
-	}
-
-	return nil
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/constants/cli_defaults.go b/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/constants/cli_defaults.go
deleted file mode 100644
index e67395a..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/constants/cli_defaults.go
+++ /dev/null
@@ -1,11 +0,0 @@
-// 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.
-
-// Local constants to FoilProvision CLI
-package constants
-
-const (
-	DefaultPort         = 80
-	DefaultLogDirectory = "/tmp/provisionservice/"
-)
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/executor/foil_service_executor.go b/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/executor/foil_service_executor.go
deleted file mode 100644
index 04eb2ae..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/executor/foil_service_executor.go
+++ /dev/null
@@ -1,137 +0,0 @@
-// 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.
-
-// Executor defines a state initializer for each state. Usable by server to start.
-// Under normal conditions this would be part of service, but go being go, it
-// would create an impossible cycle
-package executor
-
-import (
-	"fmt"
-	"log"
-	"strconv"
-	"time"
-
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	cross_over "go.chromium.org/chromiumos/test/provision/v2/common-utils/cross-over"
-	"go.chromium.org/chromiumos/test/provision/v2/foil-provision/service"
-	state_machine "go.chromium.org/chromiumos/test/provision/v2/foil-provision/state-machine"
-	"go.chromium.org/chromiumos/test/util/adb"
-	"google.golang.org/grpc"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	lab_api "go.chromium.org/chromiumos/config/go/test/lab/api"
-)
-
-type FoilProvisionExecutor struct {
-	Logger *log.Logger
-}
-
-func NewFoilProvisionExecutor(logger *log.Logger) (*FoilProvisionExecutor, error) {
-	return &FoilProvisionExecutor{
-		Logger: logger,
-	}, nil
-}
-
-func (c *FoilProvisionExecutor) GetFirstState(dut *lab_api.Dut, dutClient api.DutServiceClient, servoNexusAddr string, req *api.InstallRequest) (common_utils.ServiceState, error) {
-	crossOverRequired := c.crossOverRequired(dut, req)
-	if crossOverRequired {
-		state, err := crossOverProvisionState(dut, dutClient, servoNexusAddr, req)
-		if err != nil {
-			c.Logger.Println("Unable to perform crossover due to ", err)
-		} else {
-			return state, err
-		}
-	}
-
-	c.Logger.Println("Attempting OTA update.")
-
-	cs, err := service.NewFoilService(dut, req, dutClient, servoNexusAddr)
-	if err != nil {
-		return nil, err
-	}
-	return state_machine.NewFoilPreInitState(cs), nil
-}
-
-func crossOverProvisionState(dut *lab_api.Dut, dutClient api.DutServiceClient, servoNexusAddr string, req *api.InstallRequest) (common_utils.ServiceState, error) {
-	if servoNexusAddr == "" {
-		return nil, fmt.Errorf("servoNexusAdd required for crossover provision")
-	}
-	conn, err := grpc.Dial(servoNexusAddr, grpc.WithInsecure())
-	if err != nil {
-		return nil, err
-	}
-	servoNexusClient := api.NewServodServiceClient(conn)
-	params := &cross_over.CrossOverParameters{
-		Dut:              dut,
-		TargetImagePath:  req.GetImagePath(),
-		ServoNexusClient: servoNexusClient,
-		PartnerMetadata:  req.GetPartnerMetadata(),
-	}
-	return cross_over.NewCrossOverInitState(params), nil
-}
-
-func (c *FoilProvisionExecutor) crossOverRequired(dut *lab_api.Dut, req *api.InstallRequest) bool {
-	// Due to ongoing OTA issues; force the flash for now. b/378974495
-	return true
-	osType, err := cross_over.DetectOS(c.Logger, fmt.Sprintf("%v:%v", dut.GetChromeos().GetSsh().GetAddress(), dut.GetChromeos().GetSsh().GetPort()))
-	if err != nil {
-		c.Logger.Println("Could not detect the OS. Will perform CrossOver provision.")
-		return true
-	} else if osType == cross_over.ANDROID {
-		c.Logger.Println("setting up adb")
-		err := adb.RetrySetupAdb(c.Logger, dut.GetChromeos().GetSsh().GetAddress(), 10*time.Second)
-		if err != nil {
-			c.Logger.Println("ADB could not connect after detection. Suspected flaky device. Forcing the flash.")
-			return true
-		}
-		c.Logger.Println("Trying to check target version")
-		if targetOlder(dut.GetChromeos().GetSsh().GetAddress(), req.GetImagePath().GetPath(), c.Logger) == true {
-			c.Logger.Println("Android Detected. However, current image is newer than target, flashing.")
-			return true
-		} else {
-			c.Logger.Println("Android Detected. Will OTA")
-			// Cleanup ADB before the provision so that it can start from a good known state.
-			if err := adb.TeardownAdb(c.Logger, dut.GetChromeos().GetSsh().GetAddress()); err != nil {
-				c.Logger.Println("Warning: TeardownAdb failed: ", err)
-			}
-		}
-	} else {
-		c.Logger.Println("CROS Detected")
-		return true
-	}
-	return false
-}
-
-func targetOlder(dutAddr string, path string, log *log.Logger) bool {
-	currentBuild, err := adb.GetBuildVersion(dutAddr, log)
-	if err != nil {
-		log.Println("error getting image, force the flash")
-		return true
-	}
-	log.Println("Current build ID!", currentBuild)
-	currentBuildInt, err := strconv.Atoi(currentBuild)
-	if err != nil {
-		log.Println("unable to parse current image, forcing a flash.")
-		return true
-	}
-	targetBuild, err := service.TargetBuild(path)
-	if err != nil {
-		log.Println("unable to parse target image, forcing a flash.")
-		return true
-	}
-	targetBuildInt, err := strconv.Atoi(targetBuild)
-	if err != nil {
-		log.Println("unable to parse current image, forcing a flash.")
-		return true
-	}
-	log.Printf("Current build: %v, Target build: %v\n", currentBuildInt, targetBuildInt)
-
-	return targetBuildInt < currentBuildInt
-}
-
-// Validate ensures the ProvisionStartupRequest meets specified requirements.
-func (c *FoilProvisionExecutor) Validate(req *api.ProvisionStartupRequest) error {
-	return nil
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/main.go b/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/main.go
index 39372a9..b5127db 100644
--- a/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/main.go
+++ b/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/main.go
@@ -6,16 +6,8 @@
 
 import (
 	"fmt"
-	"os"
-
-	"go.chromium.org/chromiumos/test/provision/v2/foil-provision/cli"
 )
 
 func main() {
-	opt, err := cli.ParseInputs()
-	if err != nil {
-		fmt.Printf("unable to parse inputs: %s", err)
-		os.Exit(2)
-	}
-	opt.Run()
+	fmt.Println("Code has been migrated to infra/infra. Please reach out to who/juahurta for any questions.")
 }
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/service/foil_service.go b/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/service/foil_service.go
deleted file mode 100644
index 1c52e24..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/service/foil_service.go
+++ /dev/null
@@ -1,104 +0,0 @@
-// 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.
-
-// Container for the FoilProvision state machine
-package service
-
-import (
-	"fmt"
-	"net/url"
-	"regexp"
-
-	api1 "go.chromium.org/chromiumos/config/go/test/lab/api"
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	cross_over "go.chromium.org/chromiumos/test/provision/v2/common-utils/cross-over"
-	"go.chromium.org/chromiumos/test/provision/v2/common-utils/metadata"
-
-	conf "go.chromium.org/chromiumos/config/go"
-	"go.chromium.org/chromiumos/config/go/test/api"
-	lab_api "go.chromium.org/chromiumos/config/go/test/lab/api"
-)
-
-var buildIdPatterns = []*regexp.Regexp{
-	regexp.MustCompile(`build_details/(P?[0-9]+)/`),
-	regexp.MustCompile(`artifacts_list/(P?[0-9]+)/`)}
-
-// FoilService inherits ServiceInterface
-type FoilService struct {
-	Connection      common_utils.ServiceAdapterInterface
-	MachineMetadata metadata.MachineMetadata
-	// ImagePath is the android build explorer path.
-	// example1: android-build/build_explorer/build_details/P78687640/brya-trunk_staging-userdebug/android-desktop-ota-packages.zip
-	// example2: android-build/build_explorer/artifacts_list/12330924/brya-trunk_staging-userdebug/brya-ota-12330924.zip
-	ImagePath        *conf.StoragePath
-	OverwritePayload *conf.StoragePath
-	SkipUpdate       bool
-	QuickResetDevice bool
-	DutIp            string
-	UpdateEnginePid  string
-	CurrentBuild     string
-	TargetBuild      string
-	CacheServerUrl   url.URL
-	DutClient        api.DutServiceClient
-	ServoNexusAddr   string
-	Dut              *lab_api.Dut
-	Req              *api.InstallRequest
-	CrossOver        bool
-	Params           *cross_over.CrossOverParameters
-}
-
-func NewFoilService(dut *lab_api.Dut, req *api.InstallRequest, dutClient api.DutServiceClient, servoNexusAddr string) (*FoilService, error) {
-	cacheServerAddr, err := ipEndpointToHostPort(dut.GetCacheServer().GetAddress())
-	if err != nil {
-		return nil, fmt.Errorf("invalid cache server address %v", err)
-	}
-	var cacheUrl url.URL
-	cacheUrl.Scheme = "http"
-	cacheUrl.Host = cacheServerAddr
-	// TODO: Verify that the req.ImagePath.HostType is Android_build.
-	imagePath := req.GetImagePath().GetPath()
-	build, err := TargetBuild(imagePath)
-	if err != nil {
-		return nil, err
-	}
-	return &FoilService{
-		DutIp:          dut.GetChromeos().GetSsh().GetAddress(),
-		TargetBuild:    build,
-		CacheServerUrl: cacheUrl,
-		ImagePath: &conf.StoragePath{
-			Path: imagePath,
-		},
-		DutClient:      dutClient,
-		ServoNexusAddr: servoNexusAddr,
-		Dut:            dut,
-		Req:            req,
-	}, nil
-}
-
-func TargetBuild(imagePath string) (string, error) {
-	for _, re := range buildIdPatterns {
-		matches := re.FindStringSubmatch(imagePath)
-		if len(matches) == 2 {
-			return matches[1], nil
-		}
-	}
-	return "", fmt.Errorf("could not extract buildId from %s", imagePath)
-}
-
-// CleanupOnFailure is called if one of service's states fails to Execute() and
-// should clean up the temporary files, and undo the execution, if feasible.
-func (c *FoilService) CleanupOnFailure(states []common_utils.ServiceState, executionErr error) error {
-	// TODO: evaluate whether cleanup is needed.
-	return nil
-}
-
-func ipEndpointToHostPort(i *api1.IpEndpoint) (string, error) {
-	if len(i.GetAddress()) == 0 {
-		return "", fmt.Errorf("IpEndpoint missing address")
-	}
-	if i.GetPort() == 0 {
-		return "", fmt.Errorf("IpEndpoint missing port")
-	}
-	return fmt.Sprintf("%v:%v", i.GetAddress(), i.GetPort()), nil
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/state-machine/commands/adb_root_setup_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/state-machine/commands/adb_root_setup_command.go
deleted file mode 100644
index 7bc7e8e..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/state-machine/commands/adb_root_setup_command.go
+++ /dev/null
@@ -1,58 +0,0 @@
-// 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 commands
-
-import (
-	"context"
-	"log"
-	"time"
-
-	"go.chromium.org/chromiumos/test/provision/v2/foil-provision/service"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-
-	"go.chromium.org/chromiumos/test/util/adb"
-)
-
-const (
-	retryTimeout = 15 * time.Second
-)
-
-type AdbRoot struct {
-	ctx            context.Context
-	cs             *service.FoilService
-	RebootRequired bool
-}
-
-func NewAdbRootSetup(ctx context.Context, cs *service.FoilService) *AdbRoot {
-	return &AdbRoot{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *AdbRoot) Execute(log *log.Logger) error {
-	log.Printf("Start AdbRoot Execute, with reboot")
-
-	addr := c.cs.DutIp
-	adb.RetrySetupAdb(log, addr, retryTimeout)
-
-	_, err := adb.AdbCmd([]string{"-s", adb.FmtAddr(addr), "root"}, log)
-	if err != nil {
-		return err
-	}
-	return adb.RetrySetupAdb(log, addr, retryTimeout)
-}
-func (c *AdbRoot) Revert() error {
-	return nil
-}
-
-func (c *AdbRoot) GetErrorMessage() string {
-	return "failed to establish adb Root."
-}
-
-func (c *AdbRoot) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_PRE_PROVISION_SETUP_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/state-machine/commands/check_for_skip_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/state-machine/commands/check_for_skip_command.go
deleted file mode 100644
index b6d5e2f..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/state-machine/commands/check_for_skip_command.go
+++ /dev/null
@@ -1,48 +0,0 @@
-// 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 commands
-
-import (
-	"context"
-	"log"
-	"strings"
-
-	"go.chromium.org/chromiumos/test/provision/v2/foil-provision/service"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type CheckForSkip struct {
-	ctx            context.Context
-	cs             *service.FoilService
-	RebootRequired bool
-}
-
-func NewCheckForSkipCommand(ctx context.Context, cs *service.FoilService) *CheckForSkip {
-	return &CheckForSkip{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *CheckForSkip) Execute(log *log.Logger) error {
-	log.Printf("Start CheckForSkip Execute")
-	// Currently hard coded as there is no actual build fetching avaliable yet.
-	c.cs.SkipUpdate = strings.Contains(c.cs.CurrentBuild, c.cs.TargetBuild)
-
-	log.Println("SKIP LOGIC CHECKING: Current: vs Target:", c.cs.CurrentBuild, c.cs.TargetBuild)
-	return nil
-}
-func (c *CheckForSkip) Revert() error {
-	return nil
-}
-
-func (c *CheckForSkip) GetErrorMessage() string {
-	return "failed to the checking version pre-provision"
-}
-
-func (c *CheckForSkip) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_PROVISIONING_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/state-machine/commands/get_engine_pid.go b/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/state-machine/commands/get_engine_pid.go
deleted file mode 100644
index b031c88..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/state-machine/commands/get_engine_pid.go
+++ /dev/null
@@ -1,54 +0,0 @@
-// 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 commands
-
-import (
-	"context"
-	"log"
-	"strings"
-
-	"go.chromium.org/chromiumos/test/provision/v2/foil-provision/service"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-
-	"go.chromium.org/chromiumos/test/util/adb"
-)
-
-type GetEnginePid struct {
-	ctx            context.Context
-	cs             *service.FoilService
-	RebootRequired bool
-}
-
-func NewGetEnginePidSetup(ctx context.Context, cs *service.FoilService) *GetEnginePid {
-	return &GetEnginePid{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *GetEnginePid) Execute(log *log.Logger) error {
-	log.Printf("Start GetEnginePid Execute, with reboot")
-	pidOut, _ := adb.AdbShellCmd([]string{"pgrep", "update_engine"}, c.cs.DutIp, log)
-
-	pf := strings.ReplaceAll(strings.ReplaceAll(pidOut, " ", ""), "\n", "")
-	log.Println("PID FOUND: ", pf)
-
-	c.cs.UpdateEnginePid = pf
-
-	return nil
-}
-
-func (c *GetEnginePid) Revert() error {
-	return nil
-}
-
-func (c *GetEnginePid) GetErrorMessage() string {
-	return "failed to Update Engine GetEnginePid"
-}
-
-func (c *GetEnginePid) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_PRE_PROVISION_SETUP_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/state-machine/commands/get_version_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/state-machine/commands/get_version_command.go
deleted file mode 100644
index 1a1dcab..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/state-machine/commands/get_version_command.go
+++ /dev/null
@@ -1,50 +0,0 @@
-// 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 commands
-
-import (
-	"context"
-	"log"
-
-	"go.chromium.org/chromiumos/test/provision/v2/foil-provision/service"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-
-	"go.chromium.org/chromiumos/test/util/adb"
-)
-
-type GetVersion struct {
-	ctx            context.Context
-	cs             *service.FoilService
-	RebootRequired bool
-}
-
-func NewGetVersionSetup(ctx context.Context, cs *service.FoilService) *GetVersion {
-	return &GetVersion{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *GetVersion) Execute(log *log.Logger) error {
-	out, err := adb.GetBuildVersion(c.cs.DutIp, log)
-	if err != nil {
-		return err
-	}
-	c.cs.CurrentBuild = out
-	return nil
-}
-
-func (c *GetVersion) Revert() error {
-	return nil
-}
-
-func (c *GetVersion) GetErrorMessage() string {
-	return "failed to GetVersion from device"
-}
-
-func (c *GetVersion) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_PRE_PROVISION_SETUP_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/state-machine/commands/install.go b/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/state-machine/commands/install.go
deleted file mode 100644
index cc5e12d..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/state-machine/commands/install.go
+++ /dev/null
@@ -1,232 +0,0 @@
-// 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 commands
-
-import (
-	"bufio"
-	"context"
-	"fmt"
-	"io"
-	"log"
-	"net/http"
-	"os"
-	"os/exec"
-	"path/filepath"
-	"regexp"
-	"strings"
-	"sync"
-
-	"go.chromium.org/chromiumos/test/provision/v2/foil-provision/service"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-
-	"go.chromium.org/chromiumos/test/util/adb"
-)
-
-var launchTargetPatterns = []*regexp.Regexp{
-	regexp.MustCompile(`build_details/P?[0-9]+/([a-z_\-]+)`),
-	regexp.MustCompile(`artifacts_list/P?[0-9]+/([a-z_\-]+)`)}
-
-type Install struct {
-	ctx            context.Context
-	cs             *service.FoilService
-	RebootRequired bool
-	helperStatus   string
-}
-
-func NewInstall(ctx context.Context, cs *service.FoilService) *Install {
-	return &Install{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *Install) Execute(log *log.Logger) error {
-
-	log.Printf("Start Install Execute, with reboot changed")
-	localImagePath, err := c.pullFromCache(log, c.cs.ImagePath.GetPath())
-	if err != nil {
-		return fmt.Errorf("Unable to pull image from cache %v", err)
-	}
-	defer os.Remove(localImagePath)
-	log.Println("Image pulled from cache and stored at ", localImagePath)
-	status, installErr := install(log, c.cs.UpdateEnginePid, c.cs.DutIp, localImagePath)
-
-	if installErr != nil {
-		c.helperStatus = fmt.Sprintf("OTA EXIT STATUS: %s", status)
-		return fmt.Errorf("Unable to install over 1 atempts.")
-	}
-	return nil
-}
-
-// function to extract the launch from the android build path.
-// Example it will return brya-trunk_staging-userdebug from
-// android-build/build_explorer/build_details/P78687640/brya-trunk_staging-userdebug/android-desktop-ota-packages.zip
-// android-build/build_explorer/artifacts_list/12330924/brya-trunk_staging-userdebug/brya-ota-12330924.zip
-func extractTargetLaunch(path string) (string, error) {
-	for _, re := range launchTargetPatterns {
-		matches := re.FindStringSubmatch(path)
-		if len(matches) == 2 {
-			return matches[1], nil
-		}
-	}
-	return "", fmt.Errorf("could not extract launch from %s", path)
-}
-
-// pullFromCache downloads the imge from cache server on cft container and
-// returns the local path.
-func (c *Install) pullFromCache(log *log.Logger, path string) (string, error) {
-	targetLaunch, err := extractTargetLaunch(path)
-	if err != nil {
-		return "", err
-	}
-	var client http.Client
-	cacheUrl := c.cs.CacheServerUrl
-	cacheUrl.Path = filepath.Join("download", "android-build", "builds", c.cs.TargetBuild, targetLaunch, "attempts", "latest", "artifacts", filepath.Base(path))
-	log.Println("pulling from cache url : ", cacheUrl.String())
-	resp, err := client.Get(cacheUrl.String())
-	if err != nil {
-		c.helperStatus = fmt.Sprintf("failed to pull from cache: %s", err)
-		return "", fmt.Errorf("FLEET: failed to pull from cache server %v", err)
-	}
-	defer resp.Body.Close()
-	if resp.StatusCode != http.StatusOK {
-		c.helperStatus = fmt.Sprintf("FLEET: error code while download: %v", resp.StatusCode)
-		return "", fmt.Errorf("error %s to download %q", resp.Status, cacheUrl.String())
-	}
-	out, err := os.CreateTemp(os.TempDir(), "image-*")
-	if err != nil {
-		c.helperStatus = "INFRA: unable to make tempfile on host"
-		return "", fmt.Errorf("failed to create a temp file %v", err)
-	}
-	log.Printf("created tmp file %v to store the pulled file", out.Name())
-
-	defer out.Close()
-	_, err = io.Copy(out, resp.Body)
-	if err != nil {
-		c.helperStatus = "INFRA: unable to copy cache to tempfile"
-		return "", fmt.Errorf("failed to copy request data to temp file %v", err)
-	}
-	return out.Name(), nil
-}
-
-func (c *Install) Revert() error {
-	return nil
-}
-
-func (c *Install) GetErrorMessage() string {
-	return c.helperStatus
-}
-
-func (c *Install) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_PROVISIONING_FAILED
-}
-
-func TestScanner(stream io.Reader, logger *log.Logger, harness string) (bool, string) {
-	const maxCapacity = 4096 * 1024
-	scanner := bufio.NewScanner(stream)
-	completion := false
-	errStr := "OTA completed"
-	// Expand the buffer size to avoid deadlocks on heavy logs
-	buf := make([]byte, maxCapacity)
-	scanner.Buffer(buf, maxCapacity)
-	scanner.Split(bufio.ScanLines)
-	for scanner.Scan() {
-
-		txt := scanner.Text()
-		logger.Printf("[%v] %v", harness, txt)
-		if strings.Contains(txt, "onPayloadApplicationComplete(ErrorCode::kSuccess") {
-			logger.Println("found status in: ", txt)
-			completion = true
-		} else if strings.Contains(txt, "onPayloadApplicationComplete(ErrorCode::") {
-			logger.Println("found status in2: ", txt)
-			completion = false
-			re := regexp.MustCompile(`ErrorCode::(.*?) `)
-			// Find the matching substring
-			match := re.FindStringSubmatch(txt)
-			if len(match) > 1 {
-				errStr = match[1]
-			} else {
-				errStr = "unknown error during OTA"
-			}
-		}
-	}
-	if scanner.Err() != nil {
-		logger.Println("Failed to read pipe: ", scanner.Err())
-	}
-	logger.Println("Final completion status: ", completion)
-	return completion, errStr
-}
-
-func logcat(log *log.Logger, pid string, addr string) {
-	outStr, _ := adb.AdbCmd([]string{"-s", addr, "logcat", "-d", "--pid", pid}, log)
-
-	log.Println("Finished co")
-	log.Println("logcat out", outStr)
-
-	return
-}
-
-// Helper function to read output from a pipe
-func readOutput(r io.Reader, ch chan string) {
-	scanner := bufio.NewScanner(r)
-	for scanner.Scan() {
-		ch <- scanner.Text()
-	}
-	close(ch)
-}
-
-func install(log *log.Logger, lcpid string, addr, localImagePath string) (string, error) {
-	log.Printf("Install start")
-	// logcmd, logchan, err := logcat()
-
-	cmd := exec.Command("python3", []string{"/usr/local/update_device.py", localImagePath, "-s", adb.FmtAddr(addr)}...)
-
-	log.Println("Running ADB OTA: ", cmd.String())
-
-	stderr, err := cmd.StderrPipe()
-	if err != nil {
-		return "", fmt.Errorf("StderrPipe failed")
-	}
-	stdout, err := cmd.StdoutPipe()
-	if err != nil {
-		return "", fmt.Errorf("StdoutPipe failed")
-	}
-	if err := cmd.Start(); err != nil {
-		return "", fmt.Errorf("failed to run Cmd: %v", err)
-	}
-	var wg sync.WaitGroup
-	wg.Add(2)
-
-	const maxCapacity = 4096 * 1024
-	found1 := false
-	found2 := false
-	status := ""
-	go func() {
-		defer wg.Done()
-		found1, status = TestScanner(stderr, log, "foil-prov:")
-	}()
-
-	go func() {
-		defer wg.Done()
-		found2, status = TestScanner(stdout, log, "foil-prov")
-	}()
-	wg.Wait()
-
-	if err := cmd.Wait(); err != nil {
-		log.Println("Failed to run ADB UPDATE: ", err)
-	}
-	log.Printf("DONE. Checking completion status")
-
-	logcat(log, lcpid, addr)
-	log.Println("LOGCAT CLOSED!")
-
-	if found1 == true || found2 == true {
-		log.Println("Found success status!")
-		return "", nil
-	}
-
-	return status, fmt.Errorf("unable to find successful status.")
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/state-machine/commands/reboot_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/state-machine/commands/reboot_command.go
deleted file mode 100644
index 97a8912..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/state-machine/commands/reboot_command.go
+++ /dev/null
@@ -1,65 +0,0 @@
-// 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 commands
-
-import (
-	"context"
-	"fmt"
-	"log"
-	"time"
-
-	"go.chromium.org/chromiumos/test/provision/v2/foil-provision/service"
-	"go.chromium.org/chromiumos/test/util/adb"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type OptionalRebootArgs struct {
-	// force the reboot over a clean reboot.
-	Force bool
-}
-
-type RebootCommand struct {
-	ctx   context.Context
-	cs    *service.FoilService
-	force bool
-}
-
-func NewRebootCommand(ctx context.Context, cs *service.FoilService, optRebootArgs ...OptionalRebootArgs) *RebootCommand {
-	return &RebootCommand{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *RebootCommand) Execute(log *log.Logger) error {
-	log.Printf("Start RebootCommand Execute")
-	outStr, err := adb.AdbCmd([]string{"-s", c.cs.DutIp, "reboot"}, log)
-	log.Println(outStr)
-	addr := c.cs.DutIp
-
-	if err != nil {
-		return fmt.Errorf("ADB Start failed. %s: %s", err, outStr)
-	}
-	err = adb.RetrySetupAdb(log, addr, 3*time.Minute)
-	if err != nil {
-		return err
-	}
-
-	log.Printf("RebootCommand Success")
-	return nil
-}
-
-func (c *RebootCommand) Revert() error {
-	return nil
-}
-
-func (c *RebootCommand) GetErrorMessage() string {
-	return "DUT did not boot after OTA"
-}
-
-func (c *RebootCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_DUT_UNREACHABLE_POST_PROVISION
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/state-machine/commands/setup_selinux_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/state-machine/commands/setup_selinux_command.go
deleted file mode 100644
index 544f938..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/state-machine/commands/setup_selinux_command.go
+++ /dev/null
@@ -1,47 +0,0 @@
-// 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 commands
-
-import (
-	"context"
-	"log"
-
-	"go.chromium.org/chromiumos/test/provision/v2/foil-provision/service"
-	"go.chromium.org/chromiumos/test/util/adb"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type SetSelinuxCommand struct {
-	ctx            context.Context
-	cs             *service.FoilService
-	RebootRequired bool
-}
-
-func NewSetSelinuxCommandSetup(ctx context.Context, cs *service.FoilService) *SetSelinuxCommand {
-	return &SetSelinuxCommand{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *SetSelinuxCommand) Execute(log *log.Logger) error {
-	log.Printf("Start SetSelinuxCommand Execute, with reboot")
-	adb.AdbShellCmd([]string{"setenforce", "0"}, c.cs.DutIp, log)
-	adb.AdbShellCmd([]string{"getenforce"}, c.cs.DutIp, log)
-	return nil
-}
-
-func (c *SetSelinuxCommand) Revert() error {
-	return nil
-}
-
-func (c *SetSelinuxCommand) GetErrorMessage() string {
-	return "failed to SetSelinuxCommand"
-}
-
-func (c *SetSelinuxCommand) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_PROVISIONING_FAILED
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/state-machine/commands/verify_install_command.go b/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/state-machine/commands/verify_install_command.go
deleted file mode 100644
index feb8167..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/state-machine/commands/verify_install_command.go
+++ /dev/null
@@ -1,51 +0,0 @@
-// 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 commands
-
-import (
-	"context"
-	"fmt"
-	"log"
-	"strings"
-
-	"go.chromium.org/chromiumos/test/provision/v2/foil-provision/service"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-)
-
-type VerifyInstall struct {
-	ctx            context.Context
-	cs             *service.FoilService
-	RebootRequired bool
-}
-
-func NewVerifyInstallCommand(ctx context.Context, cs *service.FoilService) *VerifyInstall {
-	return &VerifyInstall{
-		ctx: ctx,
-		cs:  cs,
-	}
-}
-
-func (c *VerifyInstall) Execute(log *log.Logger) error {
-	log.Printf("Start VerifyInstall Execute")
-	log.Println("Checking S vs V", c.cs.CurrentBuild, c.cs.TargetBuild)
-
-	if !strings.Contains(c.cs.CurrentBuild, c.cs.TargetBuild) {
-		return fmt.Errorf("Build post install does not match target")
-	}
-
-	return nil
-}
-func (c *VerifyInstall) Revert() error {
-	return nil
-}
-
-func (c *VerifyInstall) GetErrorMessage() string {
-	return "Image incorrect post OTA reboot"
-}
-
-func (c *VerifyInstall) GetStatus() api.InstallResponse_Status {
-	return api.InstallResponse_STATUS_IMAGE_MISMATCH_POST_PROVISION_UPDATE
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/state-machine/install_state.go b/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/state-machine/install_state.go
deleted file mode 100644
index 76d2821..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/state-machine/install_state.go
+++ /dev/null
@@ -1,103 +0,0 @@
-// 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 state_machine
-
-import (
-	"context"
-	"fmt"
-	"log"
-
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	cross_over "go.chromium.org/chromiumos/test/provision/v2/common-utils/cross-over"
-	"go.chromium.org/chromiumos/test/provision/v2/foil-provision/service"
-	"go.chromium.org/chromiumos/test/provision/v2/foil-provision/state-machine/commands"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"google.golang.org/protobuf/types/known/anypb"
-
-	"google.golang.org/grpc"
-)
-
-// FoilInstallState can be thought of as the constructor state, which initializes
-// variables in FoilService
-type FoilInstallState struct {
-	service *service.FoilService
-}
-
-func NewFoilInstallState(service *service.FoilService) common_utils.ServiceState {
-	return FoilInstallState{
-		service: service,
-	}
-}
-
-func (s FoilInstallState) setupForCrosover(ctx context.Context, log *log.Logger, prevErr string) error {
-	if s.service.ServoNexusAddr == "" {
-		log.Println("unable to crosover after OTA due to no servo")
-		return fmt.Errorf("servoNexusAdd required for crossover provision")
-	}
-	conn, err := grpc.Dial(s.service.ServoNexusAddr, grpc.WithInsecure())
-	if err != nil {
-		log.Println("unable to crosover after OTA due to error on dial", err)
-		return fmt.Errorf("unable to connect to servoGRpc")
-
-	}
-	servoNexusClient := api.NewServodServiceClient(conn)
-	s.service.Params = &cross_over.CrossOverParameters{
-		Dut:              s.service.Dut,
-		TargetImagePath:  s.service.Req.GetImagePath(),
-		ServoNexusClient: servoNexusClient,
-		PrevError:        prevErr,
-		PartnerMetadata:  s.service.Req.GetPartnerMetadata(),
-	}
-	return nil
-}
-
-func (s FoilInstallState) Execute(ctx context.Context, log *log.Logger) (*anypb.Any, api.InstallResponse_Status, error) {
-	log.Printf("State: Execute FoilInstallState")
-	comms := []common_utils.CommandInterface{
-
-		commands.NewSetSelinuxCommandSetup(ctx, s.service),
-		commands.NewInstall(ctx, s.service),
-		commands.NewRebootCommand(ctx, s.service),
-	}
-
-	for _, comm := range comms {
-		err := comm.Execute(log)
-		if err != nil {
-			err = s.setupForCrosover(ctx, log, comm.GetErrorMessage())
-			if err != nil {
-				log.Println("Unable to setup for crossover provision after OTA failed. Failing.")
-				return common_utils.WrapStringInAny(comm.GetErrorMessage()), comm.GetStatus(), fmt.Errorf("%s, %s", comm.GetErrorMessage(), err)
-			}
-			s.service.CrossOver = true
-			break
-		}
-	}
-
-	if s.service.CrossOver {
-		log.Println("State: FoilInstallState FAILED. Will try Flash.")
-		// Intentionally not returning an err; as this will prevent next() from being called;
-		return nil, api.InstallResponse_STATUS_SUCCESS, nil
-
-	} else {
-		log.Printf("State: FoilInstallState Completed")
-		return nil, api.InstallResponse_STATUS_SUCCESS, nil
-
-	}
-}
-
-func (s FoilInstallState) Next() common_utils.ServiceState {
-	if s.service.CrossOver {
-		return cross_over.NewCrossOverInitState(s.service.Params)
-	} else {
-		return FoilPostState{
-			service: s.service,
-		}
-	}
-}
-
-func (s FoilInstallState) Name() string {
-	return "Foil Install"
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/state-machine/post_state.go b/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/state-machine/post_state.go
deleted file mode 100644
index 3396431..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/state-machine/post_state.go
+++ /dev/null
@@ -1,56 +0,0 @@
-// 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.
-
-// First step of the State Machine. Responsible for initialization.
-package state_machine
-
-import (
-	"context"
-	"fmt"
-	"log"
-
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"go.chromium.org/chromiumos/test/provision/v2/foil-provision/service"
-	"go.chromium.org/chromiumos/test/provision/v2/foil-provision/state-machine/commands"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"google.golang.org/protobuf/types/known/anypb"
-)
-
-// FoilPostState can be thought of as the constructor state, which initializes
-// variables in FoilService
-type FoilPostState struct {
-	service *service.FoilService
-}
-
-func NewFoilPostState(service *service.FoilService) common_utils.ServiceState {
-	return FoilPostState{
-		service: service,
-	}
-}
-
-func (s FoilPostState) Execute(ctx context.Context, log *log.Logger) (*anypb.Any, api.InstallResponse_Status, error) {
-	log.Printf("State: Execute FoilPostState")
-	comms := []common_utils.CommandInterface{
-		commands.NewGetVersionSetup(ctx, s.service),
-		commands.NewVerifyInstallCommand(ctx, s.service),
-	}
-
-	for _, comm := range comms {
-		err := comm.Execute(log)
-		if err != nil {
-			return common_utils.WrapStringInAny(comm.GetErrorMessage()), comm.GetStatus(), fmt.Errorf("%s, %s", comm.GetErrorMessage(), err)
-		}
-	}
-	log.Printf("State: FoilPostState Completed")
-	return nil, api.InstallResponse_STATUS_SUCCESS, nil
-}
-
-func (s FoilPostState) Next() common_utils.ServiceState {
-	return nil
-}
-
-func (s FoilPostState) Name() string {
-	return "Foil Post Instsll"
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/state-machine/pre_init_state.go b/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/state-machine/pre_init_state.go
deleted file mode 100644
index ad2b64b..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/foil-provision/state-machine/pre_init_state.go
+++ /dev/null
@@ -1,72 +0,0 @@
-// 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 state_machine - Pre check for State Machine. Responsible for checking image status and possibly skipping provision.
-package state_machine
-
-import (
-	"context"
-	"fmt"
-	"log"
-
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"go.chromium.org/chromiumos/test/provision/v2/foil-provision/service"
-	"go.chromium.org/chromiumos/test/provision/v2/foil-provision/state-machine/commands"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"google.golang.org/protobuf/types/known/anypb"
-)
-
-// FoilPreInitState can be thought of as the constructor state, which initializes
-// variables in FoilService
-type FoilPreInitState struct {
-	service    *service.FoilService
-	shouldSkip bool
-}
-
-// NewFoilPreInitState provides an interface to FoilPreInitState.
-func NewFoilPreInitState(service *service.FoilService) common_utils.ServiceState {
-	return FoilPreInitState{
-		service: service,
-	}
-}
-
-// Execute executes the steps needed to support FoilPreInitState. Check if the chromeOS target == current, if so skip install.
-func (s FoilPreInitState) Execute(ctx context.Context, log *log.Logger) (*anypb.Any, api.InstallResponse_Status, error) {
-	log.Printf("State: Execute FoilPreInitState")
-	comms := []common_utils.CommandInterface{
-		commands.NewAdbRootSetup(ctx, s.service),
-		commands.NewGetEnginePidSetup(ctx, s.service),
-		commands.NewGetVersionSetup(ctx, s.service),
-		commands.NewCheckForSkipCommand(ctx, s.service),
-	}
-
-	for _, comm := range comms {
-		err := comm.Execute(log)
-		if err != nil {
-			return common_utils.WrapStringInAny(comm.GetErrorMessage()), comm.GetStatus(), fmt.Errorf("%s: %w", comm.GetErrorMessage(), err)
-		}
-	}
-
-	log.Printf("DONE WITH PRE_INIT")
-	return nil, api.InstallResponse_STATUS_SUCCESS, nil
-}
-
-// Next provides the interface if the install flag is set.
-func (s FoilPreInitState) Next() common_utils.ServiceState {
-	// NOTE: currently a device can be in the right build; but in a broken state (even though it can be reached through the shell)
-	// Thus for now: we must always re-provision.
-	// if s.service.SkipUpdate == true {
-	// 	return nil
-	// }
-	return FoilInstallState{
-		service: s.service,
-	}
-
-}
-
-// Name of the step.
-func (s FoilPreInitState) Name() string {
-	return "Foil Init"
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/mock-common-utils/serviceadaptermock.go b/src/go.chromium.org/chromiumos/test/provision/v2/mock-common-utils/serviceadaptermock.go
deleted file mode 100644
index fb871fe..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/mock-common-utils/serviceadaptermock.go
+++ /dev/null
@@ -1,170 +0,0 @@
-// Copyright 2022 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-//
-
-// Code generated by MockGen. DO NOT EDIT.
-// Source: common-utils/service_adapter_interface.go
-
-// Package mock_common_utils is a generated GoMock package.
-package mock_common_utils
-
-import (
-	context "context"
-	io "io"
-	reflect "reflect"
-
-	gomock "github.com/golang/mock/gomock"
-)
-
-// MockServiceAdapterInterface is a mock of ServiceAdapterInterface interface.
-type MockServiceAdapterInterface struct {
-	ctrl     *gomock.Controller
-	recorder *MockServiceAdapterInterfaceMockRecorder
-}
-
-// MockServiceAdapterInterfaceMockRecorder is the mock recorder for MockServiceAdapterInterface.
-type MockServiceAdapterInterfaceMockRecorder struct {
-	mock *MockServiceAdapterInterface
-}
-
-// NewMockServiceAdapterInterface creates a new mock instance.
-func NewMockServiceAdapterInterface(ctrl *gomock.Controller) *MockServiceAdapterInterface {
-	mock := &MockServiceAdapterInterface{ctrl: ctrl}
-	mock.recorder = &MockServiceAdapterInterfaceMockRecorder{mock}
-	return mock
-}
-
-// EXPECT returns an object that allows the caller to indicate expected use.
-func (m *MockServiceAdapterInterface) EXPECT() *MockServiceAdapterInterfaceMockRecorder {
-	return m.recorder
-}
-
-// CopyData mocks base method.
-func (m *MockServiceAdapterInterface) CopyData(ctx context.Context, sourceUrl, destPath string) error {
-	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "CopyData", ctx, sourceUrl, destPath)
-	ret0, _ := ret[0].(error)
-	return ret0
-}
-
-// CopyData indicates an expected call of CopyData.
-func (mr *MockServiceAdapterInterfaceMockRecorder) CopyData(ctx, sourceUrl, destPath interface{}) *gomock.Call {
-	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CopyData", reflect.TypeOf((*MockServiceAdapterInterface)(nil).CopyData), ctx, sourceUrl, destPath)
-}
-
-// CreateDirectories mocks base method.
-func (m *MockServiceAdapterInterface) CreateDirectories(ctx context.Context, dirs []string) error {
-	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "CreateDirectories", ctx, dirs)
-	ret0, _ := ret[0].(error)
-	return ret0
-}
-
-// CreateDirectories indicates an expected call of CreateDirectories.
-func (mr *MockServiceAdapterInterfaceMockRecorder) CreateDirectories(ctx, dirs interface{}) *gomock.Call {
-	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateDirectories", reflect.TypeOf((*MockServiceAdapterInterface)(nil).CreateDirectories), ctx, dirs)
-}
-
-// DeleteDirectory mocks base method.
-func (m *MockServiceAdapterInterface) DeleteDirectory(ctx context.Context, dir string) error {
-	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "DeleteDirectory", ctx, dir)
-	ret0, _ := ret[0].(error)
-	return ret0
-}
-
-// DeleteDirectory indicates an expected call of DeleteDirectory.
-func (mr *MockServiceAdapterInterfaceMockRecorder) DeleteDirectory(ctx, dir interface{}) *gomock.Call {
-	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteDirectory", reflect.TypeOf((*MockServiceAdapterInterface)(nil).DeleteDirectory), ctx, dir)
-}
-
-// FetchFile mocks base method.
-func (m *MockServiceAdapterInterface) FetchFile(ctx context.Context, path string) (io.ReadCloser, error) {
-	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "FetchFile", ctx, path)
-	ret0, _ := ret[0].(io.ReadCloser)
-	ret1, _ := ret[1].(error)
-	return ret0, ret1
-}
-
-// FetchFile indicates an expected call of FetchFile.
-func (mr *MockServiceAdapterInterfaceMockRecorder) FetchFile(ctx, path interface{}) *gomock.Call {
-	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FetchFile", reflect.TypeOf((*MockServiceAdapterInterface)(nil).FetchFile), ctx, path)
-}
-
-// ForceReconnectWithBackoff mocks base method.
-func (m *MockServiceAdapterInterface) ForceReconnectWithBackoff(ctx context.Context) error {
-	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "ForceReconnectWithBackoff", ctx)
-	ret0, _ := ret[0].(error)
-	return ret0
-}
-
-// ForceReconnectWithBackoff indicates an expected call of ForceReconnectWithBackoff.
-func (mr *MockServiceAdapterInterfaceMockRecorder) ForceReconnectWithBackoff(ctx interface{}) *gomock.Call {
-	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ForceReconnectWithBackoff", reflect.TypeOf((*MockServiceAdapterInterface)(nil).ForceReconnectWithBackoff), ctx)
-}
-
-// PathExists mocks base method.
-func (m *MockServiceAdapterInterface) PathExists(ctx context.Context, path string) (bool, error) {
-	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "PathExists", ctx, path)
-	ret0, _ := ret[0].(bool)
-	ret1, _ := ret[1].(error)
-	return ret0, ret1
-}
-
-// PathExists indicates an expected call of PathExists.
-func (mr *MockServiceAdapterInterfaceMockRecorder) PathExists(ctx, path interface{}) *gomock.Call {
-	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PathExists", reflect.TypeOf((*MockServiceAdapterInterface)(nil).PathExists), ctx, path)
-}
-
-// PipeData mocks base method.
-func (m *MockServiceAdapterInterface) PipeData(ctx context.Context, sourceUrl, pipeCommand string) error {
-	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "PipeData", ctx, sourceUrl, pipeCommand)
-	ret0, _ := ret[0].(error)
-	return ret0
-}
-
-// PipeData indicates an expected call of PipeData.
-func (mr *MockServiceAdapterInterfaceMockRecorder) PipeData(ctx, sourceUrl, pipeCommand interface{}) *gomock.Call {
-	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PipeData", reflect.TypeOf((*MockServiceAdapterInterface)(nil).PipeData), ctx, sourceUrl, pipeCommand)
-}
-
-// Restart mocks base method.
-func (m *MockServiceAdapterInterface) Restart(ctx context.Context) error {
-	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "Restart", ctx)
-	ret0, _ := ret[0].(error)
-	return ret0
-}
-
-// Restart indicates an expected call of Restart.
-func (mr *MockServiceAdapterInterfaceMockRecorder) Restart(ctx interface{}) *gomock.Call {
-	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Restart", reflect.TypeOf((*MockServiceAdapterInterface)(nil).Restart), ctx)
-}
-
-// RunCmd mocks base method.
-func (m *MockServiceAdapterInterface) RunCmd(ctx context.Context, cmd string, args []string) (string, error) {
-	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "RunCmd", ctx, cmd, args)
-	ret0, _ := ret[0].(string)
-	ret1, _ := ret[1].(error)
-	return ret0, ret1
-}
-
-// RunCmd indicates an expected call of RunCmd.
-func (mr *MockServiceAdapterInterfaceMockRecorder) RunCmd(ctx, cmd, args interface{}) *gomock.Call {
-	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RunCmd", reflect.TypeOf((*MockServiceAdapterInterface)(nil).RunCmd), ctx, cmd, args)
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/mock_api/dut_service_client.go b/src/go.chromium.org/chromiumos/test/provision/v2/mock_api/dut_service_client.go
deleted file mode 100644
index 9eb7e2f..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/mock_api/dut_service_client.go
+++ /dev/null
@@ -1,307 +0,0 @@
-// 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.
-//
-
-// Code generated by MockGen. DO NOT EDIT.
-// Source: go.chromium.org/chromiumos/config/go/test/api (interfaces: DutServiceClient,DutService_ExecCommandClient)
-
-// Package mock_api is a generated GoMock package.
-package mock_api
-
-import (
-	context "context"
-	reflect "reflect"
-
-	gomock "github.com/golang/mock/gomock"
-	longrunning "go.chromium.org/chromiumos/config/go/longrunning"
-	api "go.chromium.org/chromiumos/config/go/test/api"
-	grpc "google.golang.org/grpc"
-	metadata "google.golang.org/grpc/metadata"
-)
-
-// MockDutServiceClient is a mock of DutServiceClient interface.
-type MockDutServiceClient struct {
-	ctrl     *gomock.Controller
-	recorder *MockDutServiceClientMockRecorder
-}
-
-// MockDutServiceClientMockRecorder is the mock recorder for MockDutServiceClient.
-type MockDutServiceClientMockRecorder struct {
-	mock *MockDutServiceClient
-}
-
-// NewMockDutServiceClient creates a new mock instance.
-func NewMockDutServiceClient(ctrl *gomock.Controller) *MockDutServiceClient {
-	mock := &MockDutServiceClient{ctrl: ctrl}
-	mock.recorder = &MockDutServiceClientMockRecorder{mock}
-	return mock
-}
-
-// EXPECT returns an object that allows the caller to indicate expected use.
-func (m *MockDutServiceClient) EXPECT() *MockDutServiceClientMockRecorder {
-	return m.recorder
-}
-
-// Cache mocks base method.
-func (m *MockDutServiceClient) Cache(arg0 context.Context, arg1 *api.CacheRequest, arg2 ...grpc.CallOption) (*longrunning.Operation, error) {
-	m.ctrl.T.Helper()
-	varargs := []interface{}{arg0, arg1}
-	for _, a := range arg2 {
-		varargs = append(varargs, a)
-	}
-	ret := m.ctrl.Call(m, "Cache", varargs...)
-	ret0, _ := ret[0].(*longrunning.Operation)
-	ret1, _ := ret[1].(error)
-	return ret0, ret1
-}
-
-// Cache indicates an expected call of Cache.
-func (mr *MockDutServiceClientMockRecorder) Cache(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call {
-	mr.mock.ctrl.T.Helper()
-	varargs := append([]interface{}{arg0, arg1}, arg2...)
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Cache", reflect.TypeOf((*MockDutServiceClient)(nil).Cache), varargs...)
-}
-
-// DetectDeviceConfigId mocks base method.
-func (m *MockDutServiceClient) DetectDeviceConfigId(arg0 context.Context, arg1 *api.DetectDeviceConfigIdRequest, arg2 ...grpc.CallOption) (api.DutService_DetectDeviceConfigIdClient, error) {
-	m.ctrl.T.Helper()
-	varargs := []interface{}{arg0, arg1}
-	for _, a := range arg2 {
-		varargs = append(varargs, a)
-	}
-	ret := m.ctrl.Call(m, "DetectDeviceConfigId", varargs...)
-	ret0, _ := ret[0].(api.DutService_DetectDeviceConfigIdClient)
-	ret1, _ := ret[1].(error)
-	return ret0, ret1
-}
-
-// DetectDeviceConfigId indicates an expected call of DetectDeviceConfigId.
-func (mr *MockDutServiceClientMockRecorder) DetectDeviceConfigId(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call {
-	mr.mock.ctrl.T.Helper()
-	varargs := append([]interface{}{arg0, arg1}, arg2...)
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DetectDeviceConfigId", reflect.TypeOf((*MockDutServiceClient)(nil).DetectDeviceConfigId), varargs...)
-}
-
-// ExecCommand mocks base method.
-func (m *MockDutServiceClient) ExecCommand(arg0 context.Context, arg1 *api.ExecCommandRequest, arg2 ...grpc.CallOption) (api.DutService_ExecCommandClient, error) {
-	m.ctrl.T.Helper()
-	varargs := []interface{}{arg0, arg1}
-	for _, a := range arg2 {
-		varargs = append(varargs, a)
-	}
-	ret := m.ctrl.Call(m, "ExecCommand", varargs...)
-	ret0, _ := ret[0].(api.DutService_ExecCommandClient)
-	ret1, _ := ret[1].(error)
-	return ret0, ret1
-}
-
-// ExecCommand indicates an expected call of ExecCommand.
-func (mr *MockDutServiceClientMockRecorder) ExecCommand(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call {
-	mr.mock.ctrl.T.Helper()
-	varargs := append([]interface{}{arg0, arg1}, arg2...)
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ExecCommand", reflect.TypeOf((*MockDutServiceClient)(nil).ExecCommand), varargs...)
-}
-
-// FetchCrashes mocks base method.
-func (m *MockDutServiceClient) FetchCrashes(arg0 context.Context, arg1 *api.FetchCrashesRequest, arg2 ...grpc.CallOption) (api.DutService_FetchCrashesClient, error) {
-	m.ctrl.T.Helper()
-	varargs := []interface{}{arg0, arg1}
-	for _, a := range arg2 {
-		varargs = append(varargs, a)
-	}
-	ret := m.ctrl.Call(m, "FetchCrashes", varargs...)
-	ret0, _ := ret[0].(api.DutService_FetchCrashesClient)
-	ret1, _ := ret[1].(error)
-	return ret0, ret1
-}
-
-// FetchCrashes indicates an expected call of FetchCrashes.
-func (mr *MockDutServiceClientMockRecorder) FetchCrashes(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call {
-	mr.mock.ctrl.T.Helper()
-	varargs := append([]interface{}{arg0, arg1}, arg2...)
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FetchCrashes", reflect.TypeOf((*MockDutServiceClient)(nil).FetchCrashes), varargs...)
-}
-
-// FetchFile mocks base method.
-func (m *MockDutServiceClient) FetchFile(arg0 context.Context, arg1 *api.FetchFileRequest, arg2 ...grpc.CallOption) (api.DutService_FetchFileClient, error) {
-	m.ctrl.T.Helper()
-	varargs := []interface{}{arg0, arg1}
-	for _, a := range arg2 {
-		varargs = append(varargs, a)
-	}
-	ret := m.ctrl.Call(m, "FetchFile", varargs...)
-	ret0, _ := ret[0].(api.DutService_FetchFileClient)
-	ret1, _ := ret[1].(error)
-	return ret0, ret1
-}
-
-// FetchFile indicates an expected call of FetchFile.
-func (mr *MockDutServiceClientMockRecorder) FetchFile(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call {
-	mr.mock.ctrl.T.Helper()
-	varargs := append([]interface{}{arg0, arg1}, arg2...)
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FetchFile", reflect.TypeOf((*MockDutServiceClient)(nil).FetchFile), varargs...)
-}
-
-// ForceReconnect mocks base method.
-func (m *MockDutServiceClient) ForceReconnect(arg0 context.Context, arg1 *api.ForceReconnectRequest, arg2 ...grpc.CallOption) (*longrunning.Operation, error) {
-	m.ctrl.T.Helper()
-	varargs := []interface{}{arg0, arg1}
-	for _, a := range arg2 {
-		varargs = append(varargs, a)
-	}
-	ret := m.ctrl.Call(m, "ForceReconnect", varargs...)
-	ret0, _ := ret[0].(*longrunning.Operation)
-	ret1, _ := ret[1].(error)
-	return ret0, ret1
-}
-
-// ForceReconnect indicates an expected call of ForceReconnect.
-func (mr *MockDutServiceClientMockRecorder) ForceReconnect(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call {
-	mr.mock.ctrl.T.Helper()
-	varargs := append([]interface{}{arg0, arg1}, arg2...)
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ForceReconnect", reflect.TypeOf((*MockDutServiceClient)(nil).ForceReconnect), varargs...)
-}
-
-// Restart mocks base method.
-func (m *MockDutServiceClient) Restart(arg0 context.Context, arg1 *api.RestartRequest, arg2 ...grpc.CallOption) (*longrunning.Operation, error) {
-	m.ctrl.T.Helper()
-	varargs := []interface{}{arg0, arg1}
-	for _, a := range arg2 {
-		varargs = append(varargs, a)
-	}
-	ret := m.ctrl.Call(m, "Restart", varargs...)
-	ret0, _ := ret[0].(*longrunning.Operation)
-	ret1, _ := ret[1].(error)
-	return ret0, ret1
-}
-
-// Restart indicates an expected call of Restart.
-func (mr *MockDutServiceClientMockRecorder) Restart(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call {
-	mr.mock.ctrl.T.Helper()
-	varargs := append([]interface{}{arg0, arg1}, arg2...)
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Restart", reflect.TypeOf((*MockDutServiceClient)(nil).Restart), varargs...)
-}
-
-// MockDutService_ExecCommandClient is a mock of DutService_ExecCommandClient interface.
-type MockDutService_ExecCommandClient struct {
-	ctrl     *gomock.Controller
-	recorder *MockDutService_ExecCommandClientMockRecorder
-}
-
-// MockDutService_ExecCommandClientMockRecorder is the mock recorder for MockDutService_ExecCommandClient.
-type MockDutService_ExecCommandClientMockRecorder struct {
-	mock *MockDutService_ExecCommandClient
-}
-
-// NewMockDutService_ExecCommandClient creates a new mock instance.
-func NewMockDutService_ExecCommandClient(ctrl *gomock.Controller) *MockDutService_ExecCommandClient {
-	mock := &MockDutService_ExecCommandClient{ctrl: ctrl}
-	mock.recorder = &MockDutService_ExecCommandClientMockRecorder{mock}
-	return mock
-}
-
-// EXPECT returns an object that allows the caller to indicate expected use.
-func (m *MockDutService_ExecCommandClient) EXPECT() *MockDutService_ExecCommandClientMockRecorder {
-	return m.recorder
-}
-
-// CloseSend mocks base method.
-func (m *MockDutService_ExecCommandClient) CloseSend() error {
-	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "CloseSend")
-	ret0, _ := ret[0].(error)
-	return ret0
-}
-
-// CloseSend indicates an expected call of CloseSend.
-func (mr *MockDutService_ExecCommandClientMockRecorder) CloseSend() *gomock.Call {
-	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CloseSend", reflect.TypeOf((*MockDutService_ExecCommandClient)(nil).CloseSend))
-}
-
-// Context mocks base method.
-func (m *MockDutService_ExecCommandClient) Context() context.Context {
-	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "Context")
-	ret0, _ := ret[0].(context.Context)
-	return ret0
-}
-
-// Context indicates an expected call of Context.
-func (mr *MockDutService_ExecCommandClientMockRecorder) Context() *gomock.Call {
-	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Context", reflect.TypeOf((*MockDutService_ExecCommandClient)(nil).Context))
-}
-
-// Header mocks base method.
-func (m *MockDutService_ExecCommandClient) Header() (metadata.MD, error) {
-	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "Header")
-	ret0, _ := ret[0].(metadata.MD)
-	ret1, _ := ret[1].(error)
-	return ret0, ret1
-}
-
-// Header indicates an expected call of Header.
-func (mr *MockDutService_ExecCommandClientMockRecorder) Header() *gomock.Call {
-	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Header", reflect.TypeOf((*MockDutService_ExecCommandClient)(nil).Header))
-}
-
-// Recv mocks base method.
-func (m *MockDutService_ExecCommandClient) Recv() (*api.ExecCommandResponse, error) {
-	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "Recv")
-	ret0, _ := ret[0].(*api.ExecCommandResponse)
-	ret1, _ := ret[1].(error)
-	return ret0, ret1
-}
-
-// Recv indicates an expected call of Recv.
-func (mr *MockDutService_ExecCommandClientMockRecorder) Recv() *gomock.Call {
-	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Recv", reflect.TypeOf((*MockDutService_ExecCommandClient)(nil).Recv))
-}
-
-// RecvMsg mocks base method.
-func (m *MockDutService_ExecCommandClient) RecvMsg(arg0 interface{}) error {
-	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "RecvMsg", arg0)
-	ret0, _ := ret[0].(error)
-	return ret0
-}
-
-// RecvMsg indicates an expected call of RecvMsg.
-func (mr *MockDutService_ExecCommandClientMockRecorder) RecvMsg(arg0 interface{}) *gomock.Call {
-	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RecvMsg", reflect.TypeOf((*MockDutService_ExecCommandClient)(nil).RecvMsg), arg0)
-}
-
-// SendMsg mocks base method.
-func (m *MockDutService_ExecCommandClient) SendMsg(arg0 interface{}) error {
-	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "SendMsg", arg0)
-	ret0, _ := ret[0].(error)
-	return ret0
-}
-
-// SendMsg indicates an expected call of SendMsg.
-func (mr *MockDutService_ExecCommandClientMockRecorder) SendMsg(arg0 interface{}) *gomock.Call {
-	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendMsg", reflect.TypeOf((*MockDutService_ExecCommandClient)(nil).SendMsg), arg0)
-}
-
-// Trailer mocks base method.
-func (m *MockDutService_ExecCommandClient) Trailer() metadata.MD {
-	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "Trailer")
-	ret0, _ := ret[0].(metadata.MD)
-	return ret0
-}
-
-// Trailer indicates an expected call of Trailer.
-func (mr *MockDutService_ExecCommandClientMockRecorder) Trailer() *gomock.Call {
-	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Trailer", reflect.TypeOf((*MockDutService_ExecCommandClient)(nil).Trailer))
-}
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/vm-provision/README.md b/src/go.chromium.org/chromiumos/test/provision/v2/vm-provision/README.md
deleted file mode 100644
index e54df5b..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/vm-provision/README.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# vm_provision
-
-A CFT service which leases a VM for VM testing flow. It communicates with VM leaser service to get host address and port of the VM, lease id etc.
-
-# How to run
-- Requires luci-auth token for authorization for prod endpoint. The service read the token from the file. This token is fetched during docker build step and pasted in a file. For local run make sure the authToken.txt exists. Use `luci-auth token` to generate the token.
-
-- go build to build the binary
-
-- Start the server
-```
-./vm_provision -port=8010 -log=<log path where logs file should be created>
-```
-
-# Output
-```
-Response: name:"operations/d270475f-294f-4bdd-ac3f-6787208828aa"  done:true  response:{[type.googleapis.com/chromiumos.test.api.InstallResponse]:{metadata:{[type.googleapis.com/chromiumos.test.api.LeaseVMResponse]:{lease_id:"vm-dbd34ae8-dce9-41e1-86c7-9a7e045f7512"  vm:{id:"vm-dbd34ae8-dce9-41e1-86c7-9a7e045f7512"  address:{host:"34.29.136.224"  port:22}}}}}}
-```
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/vm-provision/main.go b/src/go.chromium.org/chromiumos/test/provision/v2/vm-provision/main.go
index 6bd462b..d2fe141 100644
--- a/src/go.chromium.org/chromiumos/test/provision/v2/vm-provision/main.go
+++ b/src/go.chromium.org/chromiumos/test/provision/v2/vm-provision/main.go
@@ -5,104 +5,9 @@
 package main
 
 import (
-	"context"
-	"flag"
 	"fmt"
-	"log"
-	"net"
-	"os"
-	"path/filepath"
-	"time"
-
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"google.golang.org/grpc"
-	"google.golang.org/grpc/credentials"
-
-	common_utils "go.chromium.org/chromiumos/test/provision/v2/common-utils"
-	"go.chromium.org/chromiumos/test/util/portdiscovery"
 )
 
-const (
-	defaultRootPath          = "/tmp/vm-provision"
-	vmLeaserEndPoint         = "vmleaser.api.cr.dev:443"
-	defaultAuthTokenFilePath = "/tmp/vm-provision/authToken.txt"
-)
-
-var defaultPort = 8010
-
-type args struct {
-	// Common input params.
-	logPath      string
-	port         int
-	authFilePath string
-}
-
-// startServer is the entry point for running vm-provision in server mode.
-func startServer(d []string) int {
-	a := args{}
-	t := time.Now()
-	defaultLogPath := filepath.Join(defaultRootPath, t.Format("20060102-150405"))
-	fs := flag.NewFlagSet("Run vm-provision", flag.ExitOnError)
-	fs.StringVar(&a.logPath, "log", defaultLogPath, fmt.Sprintf("Path to record finder logs. Default value is %s", defaultLogPath))
-	fs.IntVar(&a.port, "port", defaultPort, fmt.Sprintf("Specify the port for the server. Default value %d.", defaultPort))
-	fs.StringVar(&a.authFilePath, "authFilePath", defaultAuthTokenFilePath, fmt.Sprintf("Path to auth token file. Default is %s", defaultAuthTokenFilePath))
-	fs.Parse(d)
-
-	// Configure log file
-	logFile, err := common_utils.CreateLogFile(a.logPath)
-	if err != nil {
-		log.Fatalln("Failed to create log file", err)
-		return 2
-	}
-	defer logFile.Close()
-	logger := common_utils.NewLogger(logFile)
-
-	// Read and validate auth token required by vm-provision
-	authTokenFilePath := defaultAuthTokenFilePath
-	if a.authFilePath != "" {
-		authTokenFilePath = a.authFilePath
-	}
-
-	// Set up gRPC connection
-	conn, err := grpc.Dial(vmLeaserEndPoint, grpc.WithTransportCredentials(credentials.NewClientTLSFromCert(nil, "")))
-	if err != nil {
-		logger.Fatalln("Failed to connect: ", err)
-	}
-	defer conn.Close()
-
-	// Create gRPC client
-	client := api.NewVMLeaserServiceClient(conn)
-
-	l, err := net.Listen("tcp", fmt.Sprintf(":%d", a.port))
-	if err != nil {
-		logger.Fatalln("Failed to create a net listener: ", err)
-		return 2
-	}
-
-	logger.Println("Starting Service on port ", a.port)
-
-	server, closer := NewServer(client, logger, authTokenFilePath)
-	defer closer()
-
-	// Write port number to ~/.cftmeta for go/cft-port-discovery
-	err = portdiscovery.WriteServiceMetadata("vm-provision", l.Addr().String(), logger)
-	if err != nil {
-		logger.Println("Warning: error when writing to metadata file: ", err)
-	}
-	err = server.Serve(l)
-	if err != nil {
-		logger.Fatalln("Failed to initialize server: ", err)
-		return 2
-	}
-
-	return 0
-}
-
-func mainInternal(ctx context.Context) int {
-
-	return startServer(os.Args[1:])
-}
-
 func main() {
-	os.Exit(mainInternal(context.Background()))
+	fmt.Println("Code has been migrated to infra/infra. Please reach out to who/juahurta for any questions.")
 }
diff --git a/src/go.chromium.org/chromiumos/test/provision/v2/vm-provision/vm_leaser_rpc.go b/src/go.chromium.org/chromiumos/test/provision/v2/vm-provision/vm_leaser_rpc.go
deleted file mode 100644
index 75abf0c..0000000
--- a/src/go.chromium.org/chromiumos/test/provision/v2/vm-provision/vm_leaser_rpc.go
+++ /dev/null
@@ -1,161 +0,0 @@
-// Copyright 2023 The ChromiumOS Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package main
-
-import (
-	"go.chromium.org/chromiumos/lro"
-	"context"
-	"fmt"
-	"log"
-	"os"
-	"strings"
-
-	"go.chromium.org/chromiumos/config/go/longrunning"
-	"go.chromium.org/chromiumos/config/go/test/api"
-	"google.golang.org/grpc"
-	"google.golang.org/grpc/metadata"
-	"google.golang.org/grpc/reflection"
-	"google.golang.org/protobuf/types/known/anypb"
-)
-
-// VMLeaserServiceServer is implementation of vm_leaser.proto
-type VMLeaserServiceServer struct {
-	logger            *log.Logger
-	vmleaserClient    api.VMLeaserServiceClient
-	manager           *lro.Manager
-	authTokenFilePath string
-}
-
-// NewServer creates an execution server
-func NewServer(vmleaserClient api.VMLeaserServiceClient, logger *log.Logger, authTokenFilePath string) (*grpc.Server, func()) {
-	s := &VMLeaserServiceServer{
-		logger:            logger,
-		vmleaserClient:    vmleaserClient,
-		manager:           lro.New(),
-		authTokenFilePath: authTokenFilePath,
-	}
-	server := grpc.NewServer()
-	var conns []*grpc.ClientConn
-	closer := func() {
-		for _, conn := range conns {
-			conn.Close()
-		}
-		conns = nil
-	}
-	api.RegisterGenericProvisionServiceServer(server, s)
-	longrunning.RegisterOperationsServer(server, s.manager)
-	reflection.Register(server)
-
-	return server, closer
-}
-
-func (s *VMLeaserServiceServer) StartUp(ctx context.Context, req *api.ProvisionStartupRequest) (*api.ProvisionStartupResponse, error) {
-	s.logger.Println("Received api.ProvisionStartupRequest: ", req)
-	response := api.ProvisionStartupResponse{}
-	response.Status = api.ProvisionStartupResponse_STATUS_SUCCESS
-	return &response, nil
-}
-
-// Install calls the VMLeaser service endpoints
-func (s *VMLeaserServiceServer) Install(ctx context.Context, req *api.InstallRequest) (*longrunning.Operation, error) {
-	if req == nil || req.Metadata == nil || req.Metadata.TypeUrl == "" {
-		return nil, fmt.Errorf("nnvalid request: empty request or missing metadata type url")
-	}
-
-	op := s.manager.NewOperation()
-	metadataType := req.Metadata.TypeUrl
-
-	switch metadataType {
-	case "type.googleapis.com/chromiumos.test.api.LeaseVMRequest":
-		return s.handleLeaseVMRequest(ctx, op, req)
-	case "type.googleapis.com/chromiumos.test.api.ReleaseVMRequest":
-		return s.handleReleaseVMRequest(ctx, op, req)
-	default:
-		return nil, fmt.Errorf("invalid metadata type: %s in request", metadataType)
-	}
-}
-
-func (s *VMLeaserServiceServer) handleLeaseVMRequest(_ context.Context, op *longrunning.Operation, req *api.InstallRequest) (*longrunning.Operation, error) {
-	var leaseVMReq api.LeaseVMRequest
-	if err := req.Metadata.UnmarshalTo(&leaseVMReq); err != nil {
-		s.logger.Printf("Invalid request: %s", err)
-		return nil, err
-	}
-	s.logger.Printf("Making lease gRPC call")
-	token, err := readAuthToken(s.authTokenFilePath)
-	if err != nil {
-		s.logger.Fatalln("Failed to read auth token: ", err)
-		return nil, err
-	}
-	if token == "" {
-		s.logger.Fatalln("Aborting initialization as token is empty")
-		return nil, err
-	}
-	authorization := "Bearer " + token
-	ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs("Authorization", authorization))
-	resp, err := s.vmleaserClient.LeaseVM(ctx, &leaseVMReq)
-	if err != nil {
-		s.logger.Printf("Failed to make gRPC request: %s", err)
-		return nil, err
-	}
-	anyResp := &anypb.Any{}
-	if err := anyResp.MarshalFrom(resp); err != nil {
-		s.logger.Printf("Failed to marshal response: %s", err)
-		return nil, err
-	}
-	provisionResp := &api.InstallResponse{
-		Metadata: anyResp,
-	}
-	s.logger.Printf("gRPC request succeeded")
-	s.manager.SetResult(op.Name, provisionResp)
-	return op, nil
-}
-
-func (s *VMLeaserServiceServer) handleReleaseVMRequest(_ context.Context, op *longrunning.Operation, req *api.InstallRequest) (*longrunning.Operation, error) {
-	var releaseVMReq api.ReleaseVMRequest
-	if err := req.Metadata.UnmarshalTo(&releaseVMReq); err != nil {
-		s.logger.Printf("Invalid request: %s", err)
-		return nil, err
-	}
-	s.logger.Printf("Making release gRPC call")
-	token, err := readAuthToken(s.authTokenFilePath)
-	if err != nil {
-		s.logger.Fatalln("Failed to read auth token: ", err)
-		return nil, err
-	}
-	if token == "" {
-		s.logger.Fatalln("Aborting initialization as token is empty")
-		return nil, err
-	}
-	authorization := "Bearer " + token
-	ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs("Authorization", authorization))
-	resp, err := s.vmleaserClient.ReleaseVM(ctx, &releaseVMReq)
-	if err != nil {
-		s.logger.Printf("Failed to make gRPC request: %s", err)
-		return nil, err
-	}
-	anyResp := &anypb.Any{}
-	if err := anyResp.MarshalFrom(resp); err != nil {
-		s.logger.Printf("Failed to marshal response: %s", err)
-		return nil, err
-	}
-	provisionResp := &api.InstallResponse{
-		Metadata: anyResp,
-	}
-	s.logger.Printf("gRPC request succeeded")
-	s.manager.SetResult(op.Name, provisionResp)
-	return op, nil
-}
-
-// readAuthToken reads the authorization token required for calling vm leaser service
-func readAuthToken(authTokenFilePath string) (string, error) {
-	content, err := os.ReadFile(authTokenFilePath)
-	if err != nil {
-		return "", err
-	}
-	token := strings.TrimSpace(string(content))
-
-	return token, nil
-}