[VOL-3656]: Implemented StopManagingDevice DMI API

Change-Id: Idce337f229af51a07022878cb32cc49c899fa579
diff --git a/internal/bbsim/dmiserver/dmi_metrics_mgmt.go b/internal/bbsim/dmiserver/dmi_metrics_mgmt.go
index 3f33941..cb88cc7 100755
--- a/internal/bbsim/dmiserver/dmi_metrics_mgmt.go
+++ b/internal/bbsim/dmiserver/dmi_metrics_mgmt.go
@@ -45,7 +45,9 @@
 
 	if req == nil || req.Operation == nil {
 		return &dmi.MetricsConfigurationResponse{
-			Status: dmi.Status_UNDEFINED_STATUS,
+			Status: dmi.Status_ERROR_STATUS,
+			//TODO reason must be INVALID_PARAMS, currently this is available in Device Management interface (DMI),
+			// change below reason with type INVALID_PARAMS once DMI is updated
 			Reason: dmi.Reason_UNDEFINED_REASON,
 		}, status.Errorf(codes.FailedPrecondition, "request is nil")
 	}
@@ -77,10 +79,20 @@
 	if req == nil || req.GetMetricId() < 0 {
 		return &dmi.GetMetricResponse{
 			Status: dmi.Status_ERROR_STATUS,
+			//TODO reason must be INVALID_PARAMS, currently this is available in Device Management interface (DMI),
+			// change below reason with type INVALID_PARAMS once DMI is updated
 			Reason: dmi.Reason_UNDEFINED_REASON,
 			Metric: &dmi.Metric{},
 		}, status.Errorf(codes.FailedPrecondition, "request is nil")
 	}
+
+	if dms.root == nil {
+		return &dmi.GetMetricResponse{
+			Status: dmi.Status_ERROR_STATUS,
+			Reason: dmi.Reason_INTERNAL_ERROR,
+			Metric: &dmi.Metric{},
+		}, status.Errorf(codes.FailedPrecondition, "Device is not managed, please start managing device to get the metric")
+	}
 	comp := findComponent(dms.root.Children, req.MetaData.ComponentUuid.Uuid)
 	metric := getMetric(comp, req.GetMetricId())
 	return &dmi.GetMetricResponse{