vmconfig: remove path (use paths always)

Fixes: 190503456
Test: MicrodroidHostTestCases
Change-Id: I083eaacf5057337334467713ab3f8d12813491e2
diff --git a/microdroid/microdroid.json b/microdroid/microdroid.json
index fbbee29..b1ef86a 100644
--- a/microdroid/microdroid.json
+++ b/microdroid/microdroid.json
@@ -5,23 +5,23 @@
       "partitions": [
         {
           "label": "boot_a",
-          "path": "/apex/com.android.virt/etc/fs/microdroid_boot-5.10.img"
+          "paths": ["/apex/com.android.virt/etc/fs/microdroid_boot-5.10.img"]
         },
         {
           "label": "vendor_boot_a",
-          "path": "/apex/com.android.virt/etc/fs/microdroid_vendor_boot-5.10.img"
+          "paths": ["/apex/com.android.virt/etc/fs/microdroid_vendor_boot-5.10.img"]
         },
         {
           "label": "vbmeta_a",
-          "path": "/apex/com.android.virt/etc/fs/microdroid_vbmeta.img"
+          "paths": ["/apex/com.android.virt/etc/fs/microdroid_vbmeta.img"]
         },
         {
           "label": "vbmeta_system_a",
-          "path": "/apex/com.android.virt/etc/fs/microdroid_vbmeta_system.img"
+          "paths": ["/apex/com.android.virt/etc/fs/microdroid_vbmeta_system.img"]
         },
         {
           "label": "super",
-          "path": "/apex/com.android.virt/etc/fs/microdroid_super.img"
+          "paths": ["/apex/com.android.virt/etc/fs/microdroid_super.img"]
         }
       ],
       "writable": false
@@ -30,7 +30,7 @@
       "partitions": [
         {
           "label": "uboot_env",
-          "path": "/apex/com.android.virt/etc/uboot_env.img"
+          "paths": ["/apex/com.android.virt/etc/uboot_env.img"]
         }
       ],
       "writable": false
diff --git a/virtualizationservice/src/payload.rs b/virtualizationservice/src/payload.rs
index 19a6d9f..aaf43e4 100644
--- a/virtualizationservice/src/payload.rs
+++ b/virtualizationservice/src/payload.rs
@@ -102,8 +102,7 @@
     // put metadata at the first partition
     let mut partitions = vec![Partition {
         label: String::from("metadata"),
-        path: Some(metadata_path),
-        paths: vec![],
+        paths: vec![metadata_path],
         writable: false,
     }];
 
@@ -117,9 +116,9 @@
 
         if make_filler(size, &filler_path)? {
             filler_count += 1;
-            Ok(Partition { label, path: None, paths: vec![path, filler_path], writable: false })
+            Ok(Partition { label, paths: vec![path, filler_path], writable: false })
         } else {
-            Ok(Partition { label, path: Some(path), paths: vec![], writable: false })
+            Ok(Partition { label, paths: vec![path], writable: false })
         }
     };
     for (i, apex) in apexes.iter().enumerate() {
diff --git a/vmconfig/src/lib.rs b/vmconfig/src/lib.rs
index e5c8e1b..7b0d2a5 100644
--- a/vmconfig/src/lib.rs
+++ b/vmconfig/src/lib.rs
@@ -121,9 +121,6 @@
     pub label: String,
     /// The filename of the partition image.
     #[serde(default)]
-    pub path: Option<PathBuf>,
-    /// The filename of the partition image.
-    #[serde(default)]
     pub paths: Vec<PathBuf>,
     /// Whether the partition should be writable.
     #[serde(default)]
@@ -132,26 +129,15 @@
 
 impl Partition {
     fn to_parcelable(&self) -> Result<AidlPartition> {
-        if !self.paths.is_empty() {
-            if self.path.is_some() {
-                bail!("Partition {} contains both path/paths", &self.label);
-            }
-            let images = self
-                .paths
-                .iter()
-                .map(|path| open_parcel_file(&path, self.writable))
-                .collect::<Result<Vec<_>, _>>()?;
-            Ok(AidlPartition { images, writable: self.writable, label: self.label.to_owned() })
-        } else {
-            let path = self.path.as_ref().ok_or_else(|| {
-                Error::msg(format!("Partition {} doesn't set path/paths", &self.label))
-            })?;
-            Ok(AidlPartition {
-                images: vec![open_parcel_file(&path, self.writable)?],
-                writable: self.writable,
-                label: self.label.to_owned(),
-            })
+        if self.paths.is_empty() {
+            bail!("Partition {} contains no paths", &self.label);
         }
+        let images = self
+            .paths
+            .iter()
+            .map(|path| open_parcel_file(&path, self.writable))
+            .collect::<Result<Vec<_>, _>>()?;
+        Ok(AidlPartition { images, writable: self.writable, label: self.label.to_owned() })
     }
 }