Skip to content

Commit 44346c6

Browse files
committed
Use the ImageFile superclass for MetadataImage
Bug: b/472344572
1 parent 6a70be3 commit 44346c6

File tree

6 files changed

+37
-45
lines changed

6 files changed

+37
-45
lines changed

base/cvd/cuttlefish/host/commands/assemble_cvd/assemble_cvd.cc

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ Result<std::set<std::string>> PreservingOnResume(
228228
preserving.insert(FactoryResetProtectedImage::FileName());
229229
preserving.insert(absl::StrCat(MiscImage::kName, ".img"));
230230
preserving.insert("vmmtruststore.img");
231-
preserving.insert(MetadataImage::Name());
231+
preserving.insert(absl::StrCat(MetadataImage::kName, ".img"));
232232
preserving.insert("persistent_vbmeta.img");
233233
preserving.insert("oemlock_secure");
234234
preserving.insert("oemlock_insecure");
@@ -338,14 +338,14 @@ Result<const CuttlefishConfig*> InitFilesystemAndCreateConfig(
338338
// if any device needs to rebuild its composite disk,
339339
// then don't preserve any files and delete everything.
340340
for (const auto& instance : config.Instances()) {
341-
Result<MetadataImage> metadata = MetadataImage::Reuse(instance);
341+
MetadataImage metadata(instance);
342342
MiscImage misc(instance);
343343
Result<std::optional<ChromeOsStateImage>> chrome_os_state =
344344
CF_EXPECT(ChromeOsStateImage::Reuse(instance));
345-
if (chrome_os_state.ok() && metadata.ok()) {
345+
if (chrome_os_state.ok()) {
346346
Result<DiskBuilder> os_builder =
347-
OsCompositeDiskBuilder(config, instance, *chrome_os_state,
348-
*metadata, misc, system_image_dir);
347+
OsCompositeDiskBuilder(config, instance, *chrome_os_state, metadata,
348+
misc, system_image_dir);
349349
if (!os_builder.ok()) {
350350
creating_os_disk = true;
351351
} else {

base/cvd/cuttlefish/host/commands/assemble_cvd/create_dynamic_disk_files.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,8 @@ Result<void> CreateDynamicDiskFiles(
158158
}
159159
}
160160

161-
MetadataImage metadata = CF_EXPECT(MetadataImage::ReuseOrCreate(instance));
161+
MetadataImage metadata(instance);
162+
CF_EXPECT(metadata.Generate());
162163

163164
MiscImage misc(instance);
164165
CF_EXPECT(misc.Generate());

base/cvd/cuttlefish/host/commands/assemble_cvd/disk/BUILD.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,9 +248,9 @@ cf_cc_library(
248248
hdrs = ["metadata_image.h"],
249249
deps = [
250250
"//cuttlefish/common/libs/utils:files",
251+
"//cuttlefish/host/commands/assemble_cvd/disk:image_file",
251252
"//cuttlefish/host/libs/config:cuttlefish_config",
252253
"//cuttlefish/host/libs/config:data_image",
253-
"//cuttlefish/host/libs/image_aggregator",
254254
"//cuttlefish/result",
255255
],
256256
)

base/cvd/cuttlefish/host/commands/assemble_cvd/disk/android_composite_disk_config.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ constexpr struct {
4141
std::string_view boot = "boot";
4242
std::string_view hibernation = "hibernation";
4343
std::string_view init_boot = "init_boot";
44+
std::string_view metadata = "metadata";
4445
std::string_view misc = "misc";
4546
std::string_view super = "super";
4647
std::string_view userdata = "userdata";
@@ -91,6 +92,7 @@ Result<std::vector<ImagePartition>> AndroidCompositeDiskConfig(
9192
const std::map<std::string_view, std::string> primary_paths = {
9293
{kPartitions.boot, instance.new_boot_image()},
9394
{kPartitions.init_boot, instance.init_boot_image()},
95+
{kPartitions.metadata, CF_EXPECT(metadata_image.Path())},
9496
{kPartitions.misc, CF_EXPECT(misc_image.Path())},
9597
{kPartitions.super, instance.new_super_image()},
9698
{kPartitions.userdata, instance.new_data_image()},
@@ -140,8 +142,6 @@ Result<std::vector<ImagePartition>> AndroidCompositeDiskConfig(
140142
}
141143
}
142144

143-
partitions.push_back(metadata_image.Partition());
144-
145145
std::optional<ImagePartition> hibernation_partition =
146146
HibernationImage(system_image_dir, instance);
147147
if (hibernation_partition) {

base/cvd/cuttlefish/host/commands/assemble_cvd/disk/metadata_image.cc

Lines changed: 16 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -23,48 +23,35 @@
2323
#include "cuttlefish/common/libs/utils/files.h"
2424
#include "cuttlefish/host/libs/config/cuttlefish_config.h"
2525
#include "cuttlefish/host/libs/config/data_image.h"
26-
#include "cuttlefish/host/libs/image_aggregator/image_aggregator.h"
2726
#include "cuttlefish/result/result.h"
2827

2928
namespace cuttlefish {
3029

3130
static constexpr size_t kMetadataImageMb = 64;
3231
static constexpr size_t kMetadataImageBytes = kMetadataImageMb << 20;
3332

34-
Result<MetadataImage> MetadataImage::ReuseOrCreate(
35-
const CuttlefishConfig::InstanceSpecific& instance) {
36-
Result<MetadataImage> reused = Reuse(instance);
37-
if (reused.ok()) {
38-
return reused;
39-
}
40-
41-
std::string path = instance.PerInstancePath(Name());
42-
43-
CF_EXPECTF(CreateBlankImage(path, kMetadataImageMb, "none"),
44-
"Failed to create '{}' with size '{}' MB", path, kMetadataImageMb);
45-
46-
return MetadataImage(std::move(path));
33+
MetadataImage::MetadataImage(const CuttlefishConfig::InstanceSpecific& ins) {
34+
path_ = ins.PerInstancePath(kName);
35+
ready_ = FileExists(path_) && FileSize(path_) == kMetadataImageBytes;
4736
}
4837

49-
Result<MetadataImage> MetadataImage::Reuse(
50-
const CuttlefishConfig::InstanceSpecific& instance) {
51-
std::string path = instance.PerInstancePath(Name());
38+
MetadataImage::MetadataImage(std::string path) : path_(std::move(path)) {}
5239

53-
CF_EXPECT(FileExists(path));
54-
CF_EXPECT_EQ(FileSize(path), kMetadataImageBytes);
40+
std::string MetadataImage::Name() const { return std::string(kName); }
5541

56-
return MetadataImage(std::move(path));
42+
Result<std::string> MetadataImage::Path() const {
43+
CF_EXPECT(!!ready_);
44+
return path_;
5745
}
5846

59-
MetadataImage::MetadataImage(std::string path) : path_(std::move(path)) {}
60-
61-
std::string MetadataImage::Name() { return "metadata.img"; }
62-
63-
ImagePartition MetadataImage::Partition() const {
64-
return ImagePartition{
65-
.label = "metadata",
66-
.image_file_path = path_,
67-
};
47+
Result<std::string> MetadataImage::Generate() {
48+
if (!ready_) {
49+
CF_EXPECTF(CreateBlankImage(path_, kMetadataImageMb, "none"),
50+
"Failed to create '{}' with size '{}' MB", path_,
51+
kMetadataImageMb);
52+
ready_ = true;
53+
}
54+
return path_;
6855
}
6956

7057
} // namespace cuttlefish

base/cvd/cuttlefish/host/commands/assemble_cvd/disk/metadata_image.h

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,26 +17,30 @@
1717
#pragma once
1818

1919
#include <string>
20+
#include <string_view>
2021

22+
#include "cuttlefish/host/commands/assemble_cvd/disk/image_file.h"
2123
#include "cuttlefish/host/libs/config/cuttlefish_config.h"
22-
#include "cuttlefish/host/libs/image_aggregator/image_aggregator.h"
2324
#include "cuttlefish/result/result.h"
2425

2526
namespace cuttlefish {
2627

27-
class MetadataImage {
28+
class MetadataImage : public ImageFile {
2829
public:
29-
static Result<MetadataImage> ReuseOrCreate(
30-
const CuttlefishConfig::InstanceSpecific&);
31-
static Result<MetadataImage> Reuse(const CuttlefishConfig::InstanceSpecific&);
30+
static constexpr std::string_view kName = "metadata";
3231

33-
static std::string Name();
32+
MetadataImage(const CuttlefishConfig::InstanceSpecific&);
3433

35-
ImagePartition Partition() const;
34+
std::string Name() const override;
35+
36+
Result<std::string> Generate() override;
37+
38+
Result<std::string> Path() const override;
3639

3740
private:
3841
MetadataImage(std::string);
3942

43+
bool ready_;
4044
std::string path_;
4145
};
4246

0 commit comments

Comments
 (0)