veyron/services/mgmt/device: Add arm and x86 profiles.

Add device profiles for linux-arm and linux-x86 to start testing on
raspberry pi and edison.

Change-Id: I06010b02e7907eb540acf852bb404806a7a782be
diff --git a/services/mgmt/device/deviced/commands.go b/services/mgmt/device/deviced/commands.go
index 1022747..90372cc 100644
--- a/services/mgmt/device/deviced/commands.go
+++ b/services/mgmt/device/deviced/commands.go
@@ -141,5 +141,11 @@
 		return err
 	}
 	fmt.Fprintf(cmd.Stdout(), "Profile: %#v\n", spec)
+	desc, err := impl.Describe()
+	if err != nil {
+		vlog.Errorf("Describe failed: %v", err)
+		return err
+	}
+	fmt.Fprintf(cmd.Stdout(), "Description: %#v\n", desc)
 	return nil
 }
diff --git a/services/mgmt/device/impl/device_service.go b/services/mgmt/device/impl/device_service.go
index f976242..d53a10d 100644
--- a/services/mgmt/device/impl/device_service.go
+++ b/services/mgmt/device/impl/device_service.go
@@ -144,7 +144,7 @@
 }
 
 func (*deviceService) Describe(ipc.ServerContext) (device.Description, error) {
-	return describe()
+	return Describe()
 }
 
 func (*deviceService) IsRunnable(_ ipc.ServerContext, description binary.Description) (bool, error) {
diff --git a/services/mgmt/device/impl/only_for_test.go b/services/mgmt/device/impl/only_for_test.go
index a0fc4a2..082fc25 100644
--- a/services/mgmt/device/impl/only_for_test.go
+++ b/services/mgmt/device/impl/only_for_test.go
@@ -42,7 +42,7 @@
 	}
 	isSetuid = possiblyMockIsSetuid
 
-	describe = func() (descr device.Description, err error) {
+	Describe = func() (descr device.Description, err error) {
 		return device.Description{Profiles: map[string]struct{}{"test-profile": struct{}{}}}, nil
 	}
 }
diff --git a/services/mgmt/device/impl/profile.go b/services/mgmt/device/impl/profile.go
index 4e784af..6410f3a 100644
--- a/services/mgmt/device/impl/profile.go
+++ b/services/mgmt/device/impl/profile.go
@@ -154,7 +154,21 @@
 			OS:          build.Linux,
 			Format:      build.ELF,
 		},
-		// TODO(caprita): Add profiles for Mac, Pi, etc.
+		{
+			Label:       "linux-x86",
+			Description: "",
+			Arch:        build.X86,
+			OS:          build.Linux,
+			Format:      build.ELF,
+		},
+		{
+			Label:       "linux-arm",
+			Description: "",
+			Arch:        build.ARM,
+			OS:          build.Linux,
+			Format:      build.ELF,
+		},
+		// TODO(caprita): Add other profiles for Mac, Pi, etc.
 	}, nil
 
 	// TODO(jsimsa): This function assumes the existence of a profile
@@ -213,10 +227,10 @@
 	return result
 }
 
-// describe returns a Description containing the profile that matches the
+// Describe returns a Description containing the profile that matches the
 // current device.  It's declared as a variable so we can override it for
 // testing.
-var describe = func() (device.Description, error) {
+var Describe = func() (device.Description, error) {
 	empty := device.Description{}
 	deviceProfile, err := ComputeDeviceProfile()
 	if err != nil {
diff --git a/services/mgmt/device/impl/util.go b/services/mgmt/device/impl/util.go
index 09fa70a..b98f4cc 100644
--- a/services/mgmt/device/impl/util.go
+++ b/services/mgmt/device/impl/util.go
@@ -41,7 +41,7 @@
 	stub := repository.ApplicationClient(origin)
 	// TODO(jsimsa): Include logic that computes the set of supported
 	// profiles.
-	profilesSet, err := describe()
+	profilesSet, err := Describe()
 	if err != nil {
 		vlog.Errorf("Failed to obtain profile labels: %v", err)
 		return nil, verror2.Make(ErrOperationFailed, ctx)