buffet: Expose RegistrationStatus over DBus

This new property lets applications monitor Buffet's connection to
cloud services.

BUG=brillo:16
TEST=Unittests, buffet_Registration has been expanded appropriately.
CQ-DEPEND=CL:*199337
Change-Id: I30253e8199cb65068a74dd8b780a8ab0954bf9fa
Reviewed-on: https://chromium-review.googlesource.com/250011
Reviewed-by: Alex Vakulenko <avakulenko@chromium.org>
Tested-by: Christopher Wiley <wiley@chromium.org>
Commit-Queue: Christopher Wiley <wiley@chromium.org>
diff --git a/buffet/dbus_bindings/org.chromium.Buffet.Manager.xml b/buffet/dbus_bindings/org.chromium.Buffet.Manager.xml
index daf1458..ea5e574 100644
--- a/buffet/dbus_bindings/org.chromium.Buffet.Manager.xml
+++ b/buffet/dbus_bindings/org.chromium.Buffet.Manager.xml
@@ -41,5 +41,26 @@
       <arg name="echoed_message" type="s" direction="out"/>
       <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
     </method>
+
+    <property name="Status" type="s" access="read">
+      <tp:docstring>
+        State of Buffet's cloud registration.
+        Possible values include:
+
+        "offline": Buffet has credentials, but no connectivity to the Internet.
+        "cloud_error": Buffet has credentials, but cannot contact cloud services
+                       to verify their validity.  This could indicate that cloud
+                       services are down, or that DNS is not resolving.
+        "invalid_credentials": Buffet has credentials, but they are no longer
+                               valid.
+        "unregistered": Buffet has no credentials, either from an out of
+                        box state, or because those credentials have been
+                        rejected by the cloud service.  Note that we
+                        can unregistered with or without Internet connectivity.
+        "registering": Buffet has been provided with credentials, and is
+                       registering with the cloud.
+        "registered": Buffet is online and registered with cloud services.
+      </tp:docstring>
+    </property>
   </interface>
 </node>