[diagnostics][persistence][core] Start persistence as part of core product.

Change-Id: I3d3d09b1c5e9cb23dfa6a852231290fa609fc2d1
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/511623
Reviewed-by: Chris Phoenix <cphoenix@google.com>
Reviewed-by: Adam Barth <abarth@google.com>
Commit-Queue: Chris Phoenix <cphoenix@google.com>
diff --git a/products/core.gni b/products/core.gni
index caf1954..852a6cd 100644
--- a/products/core.gni
+++ b/products/core.gni
@@ -60,9 +60,11 @@
   "//src/developer/forensics:pkg",
   "//src/developer/forensics/feedback_data:sysmgr_config",
   "//src/developer/forensics/snapshot:pkg",
-  "//src/diagnostics/log-stats:package",
-  "//src/diagnostics/detect:triage-detect",
+  "//src/diagnostics/config/persistence",
   "//src/diagnostics/config/triage:triage-detect",
+  "//src/diagnostics/detect:triage-detect",
+  "//src/diagnostics/persistence:diagnostics-persistence",
+  "//src/diagnostics/log-stats:package",
   "//src/diagnostics/sampler",
   "//src/hwinfo:hwinfo",
   "//src/hwinfo:default_product_config",
diff --git a/src/diagnostics/archivist/configs/default-service-config.json b/src/diagnostics/archivist/configs/default-service-config.json
index 097c170..ad25bff 100644
--- a/src/diagnostics/archivist/configs/default-service-config.json
+++ b/src/diagnostics/archivist/configs/default-service-config.json
@@ -1,6 +1,7 @@
 {
     "service_list": [
         "fuchsia.diagnostics.internal.DetectController",
+        "fuchsia.diagnostics.internal.PersistenceController",
         "fuchsia.diagnostics.internal.LogStatsController",
         "fuchsia.diagnostics.internal.SamplerController"
     ]
diff --git a/src/diagnostics/archivist/configs/no-detect-service-config.json b/src/diagnostics/archivist/configs/no-detect-service-config.json
index 9806541..371ffdf 100644
--- a/src/diagnostics/archivist/configs/no-detect-service-config.json
+++ b/src/diagnostics/archivist/configs/no-detect-service-config.json
@@ -1,5 +1,6 @@
 {
     "service_list": [
+        "fuchsia.diagnostics.internal.PersistenceController",
         "fuchsia.diagnostics.internal.LogStatsController",
         "fuchsia.diagnostics.internal.SamplerController"
     ]
diff --git a/src/diagnostics/archivist/meta/archivist.cml b/src/diagnostics/archivist/meta/archivist.cml
index 9e9703c..7a3666e 100644
--- a/src/diagnostics/archivist/meta/archivist.cml
+++ b/src/diagnostics/archivist/meta/archivist.cml
@@ -31,8 +31,8 @@
                 "fuchsia.boot.ReadOnlyLog",
                 "fuchsia.boot.WriteOnlyLog",
                 "fuchsia.diagnostics.internal.DetectController",
-                "fuchsia.diagnostics.internal.ElephantController",
                 "fuchsia.diagnostics.internal.LogStatsController",
+                "fuchsia.diagnostics.internal.PersistenceController",
                 "fuchsia.diagnostics.internal.SamplerController",
                 "fuchsia.sys.internal.ComponentEventProvider",
                 "fuchsia.sys.internal.LogConnector",
diff --git a/src/sys/bootstrap/meta/bootstrap.cml b/src/sys/bootstrap/meta/bootstrap.cml
index e270445..6b9cb91 100644
--- a/src/sys/bootstrap/meta/bootstrap.cml
+++ b/src/sys/bootstrap/meta/bootstrap.cml
@@ -769,6 +769,7 @@
             protocol: [
                 "fuchsia.diagnostics.internal.DetectController",
                 "fuchsia.diagnostics.internal.LogStatsController",
+                "fuchsia.diagnostics.internal.PersistenceController",
                 "fuchsia.diagnostics.internal.SamplerController",
                 "fuchsia.sys.internal.ComponentEventProvider",
                 "fuchsia.sys.internal.LogConnector",
diff --git a/src/sys/bootstrap/meta/root.cml b/src/sys/bootstrap/meta/root.cml
index f757586..b2279f6 100644
--- a/src/sys/bootstrap/meta/root.cml
+++ b/src/sys/bootstrap/meta/root.cml
@@ -174,6 +174,7 @@
                 "fuchsia.cobalt.LoggerFactory",
                 "fuchsia.diagnostics.internal.DetectController",
                 "fuchsia.diagnostics.internal.LogStatsController",
+                "fuchsia.diagnostics.internal.PersistenceController",
                 "fuchsia.diagnostics.internal.SamplerController",
                 "fuchsia.exception.Handler",
                 "fuchsia.feedback.CrashReporter",
diff --git a/src/sys/core/meta/core.cml b/src/sys/core/meta/core.cml
index 56934aa..49a5f79 100644
--- a/src/sys/core/meta/core.cml
+++ b/src/sys/core/meta/core.cml
@@ -46,6 +46,10 @@
             url: "fuchsia-pkg://fuchsia.com/triage-detect#meta/triage-detect.cm",
         },
         {
+            name: "diagnostics-persistence",
+            url: "fuchsia-pkg://fuchsia.com/diagnostics-persistence#meta/diagnostics-persistence.cm",
+        },
+        {
             name: "http-client",
             url: "fuchsia-pkg://fuchsia.com/http-client#meta/http-client.cm",
         },
@@ -203,7 +207,7 @@
         {
             protocol: "fuchsia.ui.brightness.Control",
             from: "#brightness_manager",
-            to: [ "#appmgr" ],
+            to: "#appmgr",
         },
         {
             protocol: "fuchsia.hardware.serial.NewDeviceProxy",
@@ -372,7 +376,10 @@
         {
             protocol: [ "fuchsia.diagnostics.FeedbackArchiveAccessor" ],
             from: "parent",
-            to: "#detect",
+            to: [
+                "#detect",
+                "#diagnostics-persistence",
+            ],
         },
         {
             protocol: [ "fuchsia.logger.LogSink" ],
@@ -386,6 +393,7 @@
                 "#detect",
                 "#device_settings",
                 "#dhcpd",
+                "#diagnostics-persistence",
                 "#font_provider",
                 "#http-client",
                 "#last_reboot",
@@ -492,6 +500,12 @@
             subdir: "sampler",
         },
         {
+            directory: "config-data",
+            from: "parent",
+            to: "#diagnostics-persistence",
+            subdir: "diagnostics-persistence",
+        },
+        {
             protocol: "fuchsia.developer.remotecontrol.RemoteDiagnosticsBridge",
             from: "#remote-diagnostics-bridge",
             to: "#remote-control",
@@ -539,20 +553,20 @@
         {
             storage: "data",
             from: "self",
-            to: [ "#brightness_manager" ],
+            to: "#brightness_manager",
         },
         {
             directory: "dev",
             from: "parent",
             as: "dev-backlight",
-            to: [ "#brightness_manager" ],
+            to: "#brightness_manager",
             subdir: "class/backlight",
         },
         {
             directory: "dev",
             from: "parent",
             as: "dev-input",
-            to: [ "#brightness_manager" ],
+            to: "#brightness_manager",
             subdir: "class/input",
         },
         {
@@ -820,12 +834,17 @@
         {
             protocol: "fuchsia.media.sounds.Player",
             from: "#soundplayer",
-            to: [ "#appmgr" ],
+            to: "#appmgr",
+        },
+        {
+            storage: "cache",
+            from: "self",
+            to: "#diagnostics-persistence",
         },
         {
             protocol: [ "fuchsia.media.Audio" ],
             from: "#appmgr",
-            to: [ "#soundplayer" ],
+            to: "#soundplayer",
             dependency: "weak_for_migration",
         },
         {
@@ -883,6 +902,10 @@
             from: "#detect",
         },
         {
+            protocol: [ "fuchsia.diagnostics.internal.PersistenceController" ],
+            from: "#diagnostics-persistence",
+        },
+        {
             protocol: [ "fuchsia.diagnostics.internal.LogStatsController" ],
             from: "#log-stats",
         },