VOL-5349 : Enhance DMI to be able to set the log level of the Device Manager implementation

Change-Id: I43324289d3a498519430ec326a29c55f9ac7a250
diff --git a/VERSION b/VERSION
index 15b989e..092afa1 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.16.0
+1.17.0
diff --git a/cpp/dmi/hw_management_service.grpc.pb.cc b/cpp/dmi/hw_management_service.grpc.pb.cc
index c1e9d91..ef057ff 100644
--- a/cpp/dmi/hw_management_service.grpc.pb.cc
+++ b/cpp/dmi/hw_management_service.grpc.pb.cc
@@ -37,6 +37,8 @@
   "/dmi.NativeHWManagementService/GetLogLevel",
   "/dmi.NativeHWManagementService/HeartbeatCheck",
   "/dmi.NativeHWManagementService/RebootDevice",
+  "/dmi.NativeHWManagementService/SetDmLogLevel",
+  "/dmi.NativeHWManagementService/GetDmLogLevel",
 };
 
 std::unique_ptr< NativeHWManagementService::Stub> NativeHWManagementService::NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options) {
@@ -61,6 +63,8 @@
   , rpcmethod_GetLogLevel_(NativeHWManagementService_method_names[12], ::grpc::internal::RpcMethod::NORMAL_RPC, channel)
   , rpcmethod_HeartbeatCheck_(NativeHWManagementService_method_names[13], ::grpc::internal::RpcMethod::NORMAL_RPC, channel)
   , rpcmethod_RebootDevice_(NativeHWManagementService_method_names[14], ::grpc::internal::RpcMethod::NORMAL_RPC, channel)
+  , rpcmethod_SetDmLogLevel_(NativeHWManagementService_method_names[15], ::grpc::internal::RpcMethod::NORMAL_RPC, channel)
+  , rpcmethod_GetDmLogLevel_(NativeHWManagementService_method_names[16], ::grpc::internal::RpcMethod::NORMAL_RPC, channel)
   {}
 
 ::grpc::ClientReader< ::dmi::StartManagingDeviceResponse>* NativeHWManagementService::Stub::StartManagingDeviceRaw(::grpc::ClientContext* context, const ::dmi::ModifiableComponent& request) {
@@ -447,6 +451,62 @@
   return ::grpc_impl::internal::ClientAsyncResponseReaderFactory< ::dmi::RebootDeviceResponse>::Create(channel_.get(), cq, rpcmethod_RebootDevice_, context, request, false);
 }
 
+::grpc::Status NativeHWManagementService::Stub::SetDmLogLevel(::grpc::ClientContext* context, const ::dmi::SetDmLogLevelRequest& request, ::dmi::SetDmLogLevelResponse* response) {
+  return ::grpc::internal::BlockingUnaryCall(channel_.get(), rpcmethod_SetDmLogLevel_, context, request, response);
+}
+
+void NativeHWManagementService::Stub::experimental_async::SetDmLogLevel(::grpc::ClientContext* context, const ::dmi::SetDmLogLevelRequest* request, ::dmi::SetDmLogLevelResponse* response, std::function<void(::grpc::Status)> f) {
+  ::grpc_impl::internal::CallbackUnaryCall(stub_->channel_.get(), stub_->rpcmethod_SetDmLogLevel_, context, request, response, std::move(f));
+}
+
+void NativeHWManagementService::Stub::experimental_async::SetDmLogLevel(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::dmi::SetDmLogLevelResponse* response, std::function<void(::grpc::Status)> f) {
+  ::grpc_impl::internal::CallbackUnaryCall(stub_->channel_.get(), stub_->rpcmethod_SetDmLogLevel_, context, request, response, std::move(f));
+}
+
+void NativeHWManagementService::Stub::experimental_async::SetDmLogLevel(::grpc::ClientContext* context, const ::dmi::SetDmLogLevelRequest* request, ::dmi::SetDmLogLevelResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) {
+  ::grpc_impl::internal::ClientCallbackUnaryFactory::Create(stub_->channel_.get(), stub_->rpcmethod_SetDmLogLevel_, context, request, response, reactor);
+}
+
+void NativeHWManagementService::Stub::experimental_async::SetDmLogLevel(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::dmi::SetDmLogLevelResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) {
+  ::grpc_impl::internal::ClientCallbackUnaryFactory::Create(stub_->channel_.get(), stub_->rpcmethod_SetDmLogLevel_, context, request, response, reactor);
+}
+
+::grpc::ClientAsyncResponseReader< ::dmi::SetDmLogLevelResponse>* NativeHWManagementService::Stub::AsyncSetDmLogLevelRaw(::grpc::ClientContext* context, const ::dmi::SetDmLogLevelRequest& request, ::grpc::CompletionQueue* cq) {
+  return ::grpc_impl::internal::ClientAsyncResponseReaderFactory< ::dmi::SetDmLogLevelResponse>::Create(channel_.get(), cq, rpcmethod_SetDmLogLevel_, context, request, true);
+}
+
+::grpc::ClientAsyncResponseReader< ::dmi::SetDmLogLevelResponse>* NativeHWManagementService::Stub::PrepareAsyncSetDmLogLevelRaw(::grpc::ClientContext* context, const ::dmi::SetDmLogLevelRequest& request, ::grpc::CompletionQueue* cq) {
+  return ::grpc_impl::internal::ClientAsyncResponseReaderFactory< ::dmi::SetDmLogLevelResponse>::Create(channel_.get(), cq, rpcmethod_SetDmLogLevel_, context, request, false);
+}
+
+::grpc::Status NativeHWManagementService::Stub::GetDmLogLevel(::grpc::ClientContext* context, const ::dmi::GetDmLogLevelRequest& request, ::dmi::GetDmLogLevelResponse* response) {
+  return ::grpc::internal::BlockingUnaryCall(channel_.get(), rpcmethod_GetDmLogLevel_, context, request, response);
+}
+
+void NativeHWManagementService::Stub::experimental_async::GetDmLogLevel(::grpc::ClientContext* context, const ::dmi::GetDmLogLevelRequest* request, ::dmi::GetDmLogLevelResponse* response, std::function<void(::grpc::Status)> f) {
+  ::grpc_impl::internal::CallbackUnaryCall(stub_->channel_.get(), stub_->rpcmethod_GetDmLogLevel_, context, request, response, std::move(f));
+}
+
+void NativeHWManagementService::Stub::experimental_async::GetDmLogLevel(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::dmi::GetDmLogLevelResponse* response, std::function<void(::grpc::Status)> f) {
+  ::grpc_impl::internal::CallbackUnaryCall(stub_->channel_.get(), stub_->rpcmethod_GetDmLogLevel_, context, request, response, std::move(f));
+}
+
+void NativeHWManagementService::Stub::experimental_async::GetDmLogLevel(::grpc::ClientContext* context, const ::dmi::GetDmLogLevelRequest* request, ::dmi::GetDmLogLevelResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) {
+  ::grpc_impl::internal::ClientCallbackUnaryFactory::Create(stub_->channel_.get(), stub_->rpcmethod_GetDmLogLevel_, context, request, response, reactor);
+}
+
+void NativeHWManagementService::Stub::experimental_async::GetDmLogLevel(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::dmi::GetDmLogLevelResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) {
+  ::grpc_impl::internal::ClientCallbackUnaryFactory::Create(stub_->channel_.get(), stub_->rpcmethod_GetDmLogLevel_, context, request, response, reactor);
+}
+
+::grpc::ClientAsyncResponseReader< ::dmi::GetDmLogLevelResponse>* NativeHWManagementService::Stub::AsyncGetDmLogLevelRaw(::grpc::ClientContext* context, const ::dmi::GetDmLogLevelRequest& request, ::grpc::CompletionQueue* cq) {
+  return ::grpc_impl::internal::ClientAsyncResponseReaderFactory< ::dmi::GetDmLogLevelResponse>::Create(channel_.get(), cq, rpcmethod_GetDmLogLevel_, context, request, true);
+}
+
+::grpc::ClientAsyncResponseReader< ::dmi::GetDmLogLevelResponse>* NativeHWManagementService::Stub::PrepareAsyncGetDmLogLevelRaw(::grpc::ClientContext* context, const ::dmi::GetDmLogLevelRequest& request, ::grpc::CompletionQueue* cq) {
+  return ::grpc_impl::internal::ClientAsyncResponseReaderFactory< ::dmi::GetDmLogLevelResponse>::Create(channel_.get(), cq, rpcmethod_GetDmLogLevel_, context, request, false);
+}
+
 NativeHWManagementService::Service::Service() {
   AddMethod(new ::grpc::internal::RpcServiceMethod(
       NativeHWManagementService_method_names[0],
@@ -598,6 +658,26 @@
              ::dmi::RebootDeviceResponse* resp) {
                return service->RebootDevice(ctx, req, resp);
              }, this)));
+  AddMethod(new ::grpc::internal::RpcServiceMethod(
+      NativeHWManagementService_method_names[15],
+      ::grpc::internal::RpcMethod::NORMAL_RPC,
+      new ::grpc::internal::RpcMethodHandler< NativeHWManagementService::Service, ::dmi::SetDmLogLevelRequest, ::dmi::SetDmLogLevelResponse>(
+          [](NativeHWManagementService::Service* service,
+             ::grpc_impl::ServerContext* ctx,
+             const ::dmi::SetDmLogLevelRequest* req,
+             ::dmi::SetDmLogLevelResponse* resp) {
+               return service->SetDmLogLevel(ctx, req, resp);
+             }, this)));
+  AddMethod(new ::grpc::internal::RpcServiceMethod(
+      NativeHWManagementService_method_names[16],
+      ::grpc::internal::RpcMethod::NORMAL_RPC,
+      new ::grpc::internal::RpcMethodHandler< NativeHWManagementService::Service, ::dmi::GetDmLogLevelRequest, ::dmi::GetDmLogLevelResponse>(
+          [](NativeHWManagementService::Service* service,
+             ::grpc_impl::ServerContext* ctx,
+             const ::dmi::GetDmLogLevelRequest* req,
+             ::dmi::GetDmLogLevelResponse* resp) {
+               return service->GetDmLogLevel(ctx, req, resp);
+             }, this)));
 }
 
 NativeHWManagementService::Service::~Service() {
@@ -708,6 +788,20 @@
   return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
 }
 
+::grpc::Status NativeHWManagementService::Service::SetDmLogLevel(::grpc::ServerContext* context, const ::dmi::SetDmLogLevelRequest* request, ::dmi::SetDmLogLevelResponse* response) {
+  (void) context;
+  (void) request;
+  (void) response;
+  return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+}
+
+::grpc::Status NativeHWManagementService::Service::GetDmLogLevel(::grpc::ServerContext* context, const ::dmi::GetDmLogLevelRequest* request, ::dmi::GetDmLogLevelResponse* response) {
+  (void) context;
+  (void) request;
+  (void) response;
+  return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+}
+
 
 }  // namespace dmi
 
diff --git a/cpp/dmi/hw_management_service.grpc.pb.h b/cpp/dmi/hw_management_service.grpc.pb.h
index f9f34a4..938264c 100644
--- a/cpp/dmi/hw_management_service.grpc.pb.h
+++ b/cpp/dmi/hw_management_service.grpc.pb.h
@@ -177,6 +177,22 @@
     std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::dmi::RebootDeviceResponse>> PrepareAsyncRebootDevice(::grpc::ClientContext* context, const ::dmi::RebootDeviceRequest& request, ::grpc::CompletionQueue* cq) {
       return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::dmi::RebootDeviceResponse>>(PrepareAsyncRebootDeviceRaw(context, request, cq));
     }
+    // Sets the log level of the Device Manager itself

+    virtual ::grpc::Status SetDmLogLevel(::grpc::ClientContext* context, const ::dmi::SetDmLogLevelRequest& request, ::dmi::SetDmLogLevelResponse* response) = 0;
+    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::dmi::SetDmLogLevelResponse>> AsyncSetDmLogLevel(::grpc::ClientContext* context, const ::dmi::SetDmLogLevelRequest& request, ::grpc::CompletionQueue* cq) {
+      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::dmi::SetDmLogLevelResponse>>(AsyncSetDmLogLevelRaw(context, request, cq));
+    }
+    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::dmi::SetDmLogLevelResponse>> PrepareAsyncSetDmLogLevel(::grpc::ClientContext* context, const ::dmi::SetDmLogLevelRequest& request, ::grpc::CompletionQueue* cq) {
+      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::dmi::SetDmLogLevelResponse>>(PrepareAsyncSetDmLogLevelRaw(context, request, cq));
+    }
+    // Gets the log level at which the Device Manager is running

+    virtual ::grpc::Status GetDmLogLevel(::grpc::ClientContext* context, const ::dmi::GetDmLogLevelRequest& request, ::dmi::GetDmLogLevelResponse* response) = 0;
+    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::dmi::GetDmLogLevelResponse>> AsyncGetDmLogLevel(::grpc::ClientContext* context, const ::dmi::GetDmLogLevelRequest& request, ::grpc::CompletionQueue* cq) {
+      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::dmi::GetDmLogLevelResponse>>(AsyncGetDmLogLevelRaw(context, request, cq));
+    }
+    std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::dmi::GetDmLogLevelResponse>> PrepareAsyncGetDmLogLevel(::grpc::ClientContext* context, const ::dmi::GetDmLogLevelRequest& request, ::grpc::CompletionQueue* cq) {
+      return std::unique_ptr< ::grpc::ClientAsyncResponseReaderInterface< ::dmi::GetDmLogLevelResponse>>(PrepareAsyncGetDmLogLevelRaw(context, request, cq));
+    }
     class experimental_async_interface {
      public:
       virtual ~experimental_async_interface() {}
@@ -369,6 +385,32 @@
       #else
       virtual void RebootDevice(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::dmi::RebootDeviceResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0;
       #endif
+      // Sets the log level of the Device Manager itself

+      virtual void SetDmLogLevel(::grpc::ClientContext* context, const ::dmi::SetDmLogLevelRequest* request, ::dmi::SetDmLogLevelResponse* response, std::function<void(::grpc::Status)>) = 0;
+      virtual void SetDmLogLevel(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::dmi::SetDmLogLevelResponse* response, std::function<void(::grpc::Status)>) = 0;
+      #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+      virtual void SetDmLogLevel(::grpc::ClientContext* context, const ::dmi::SetDmLogLevelRequest* request, ::dmi::SetDmLogLevelResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
+      #else
+      virtual void SetDmLogLevel(::grpc::ClientContext* context, const ::dmi::SetDmLogLevelRequest* request, ::dmi::SetDmLogLevelResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0;
+      #endif
+      #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+      virtual void SetDmLogLevel(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::dmi::SetDmLogLevelResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
+      #else
+      virtual void SetDmLogLevel(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::dmi::SetDmLogLevelResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0;
+      #endif
+      // Gets the log level at which the Device Manager is running

+      virtual void GetDmLogLevel(::grpc::ClientContext* context, const ::dmi::GetDmLogLevelRequest* request, ::dmi::GetDmLogLevelResponse* response, std::function<void(::grpc::Status)>) = 0;
+      virtual void GetDmLogLevel(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::dmi::GetDmLogLevelResponse* response, std::function<void(::grpc::Status)>) = 0;
+      #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+      virtual void GetDmLogLevel(::grpc::ClientContext* context, const ::dmi::GetDmLogLevelRequest* request, ::dmi::GetDmLogLevelResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
+      #else
+      virtual void GetDmLogLevel(::grpc::ClientContext* context, const ::dmi::GetDmLogLevelRequest* request, ::dmi::GetDmLogLevelResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0;
+      #endif
+      #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+      virtual void GetDmLogLevel(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::dmi::GetDmLogLevelResponse* response, ::grpc::ClientUnaryReactor* reactor) = 0;
+      #else
+      virtual void GetDmLogLevel(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::dmi::GetDmLogLevelResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) = 0;
+      #endif
     };
     #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
     typedef class experimental_async_interface async_interface;
@@ -411,6 +453,10 @@
     virtual ::grpc::ClientAsyncResponseReaderInterface< ::dmi::Heartbeat>* PrepareAsyncHeartbeatCheckRaw(::grpc::ClientContext* context, const ::google::protobuf::Empty& request, ::grpc::CompletionQueue* cq) = 0;
     virtual ::grpc::ClientAsyncResponseReaderInterface< ::dmi::RebootDeviceResponse>* AsyncRebootDeviceRaw(::grpc::ClientContext* context, const ::dmi::RebootDeviceRequest& request, ::grpc::CompletionQueue* cq) = 0;
     virtual ::grpc::ClientAsyncResponseReaderInterface< ::dmi::RebootDeviceResponse>* PrepareAsyncRebootDeviceRaw(::grpc::ClientContext* context, const ::dmi::RebootDeviceRequest& request, ::grpc::CompletionQueue* cq) = 0;
+    virtual ::grpc::ClientAsyncResponseReaderInterface< ::dmi::SetDmLogLevelResponse>* AsyncSetDmLogLevelRaw(::grpc::ClientContext* context, const ::dmi::SetDmLogLevelRequest& request, ::grpc::CompletionQueue* cq) = 0;
+    virtual ::grpc::ClientAsyncResponseReaderInterface< ::dmi::SetDmLogLevelResponse>* PrepareAsyncSetDmLogLevelRaw(::grpc::ClientContext* context, const ::dmi::SetDmLogLevelRequest& request, ::grpc::CompletionQueue* cq) = 0;
+    virtual ::grpc::ClientAsyncResponseReaderInterface< ::dmi::GetDmLogLevelResponse>* AsyncGetDmLogLevelRaw(::grpc::ClientContext* context, const ::dmi::GetDmLogLevelRequest& request, ::grpc::CompletionQueue* cq) = 0;
+    virtual ::grpc::ClientAsyncResponseReaderInterface< ::dmi::GetDmLogLevelResponse>* PrepareAsyncGetDmLogLevelRaw(::grpc::ClientContext* context, const ::dmi::GetDmLogLevelRequest& request, ::grpc::CompletionQueue* cq) = 0;
   };
   class Stub final : public StubInterface {
    public:
@@ -526,6 +572,20 @@
     std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::dmi::RebootDeviceResponse>> PrepareAsyncRebootDevice(::grpc::ClientContext* context, const ::dmi::RebootDeviceRequest& request, ::grpc::CompletionQueue* cq) {
       return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::dmi::RebootDeviceResponse>>(PrepareAsyncRebootDeviceRaw(context, request, cq));
     }
+    ::grpc::Status SetDmLogLevel(::grpc::ClientContext* context, const ::dmi::SetDmLogLevelRequest& request, ::dmi::SetDmLogLevelResponse* response) override;
+    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::dmi::SetDmLogLevelResponse>> AsyncSetDmLogLevel(::grpc::ClientContext* context, const ::dmi::SetDmLogLevelRequest& request, ::grpc::CompletionQueue* cq) {
+      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::dmi::SetDmLogLevelResponse>>(AsyncSetDmLogLevelRaw(context, request, cq));
+    }
+    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::dmi::SetDmLogLevelResponse>> PrepareAsyncSetDmLogLevel(::grpc::ClientContext* context, const ::dmi::SetDmLogLevelRequest& request, ::grpc::CompletionQueue* cq) {
+      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::dmi::SetDmLogLevelResponse>>(PrepareAsyncSetDmLogLevelRaw(context, request, cq));
+    }
+    ::grpc::Status GetDmLogLevel(::grpc::ClientContext* context, const ::dmi::GetDmLogLevelRequest& request, ::dmi::GetDmLogLevelResponse* response) override;
+    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::dmi::GetDmLogLevelResponse>> AsyncGetDmLogLevel(::grpc::ClientContext* context, const ::dmi::GetDmLogLevelRequest& request, ::grpc::CompletionQueue* cq) {
+      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::dmi::GetDmLogLevelResponse>>(AsyncGetDmLogLevelRaw(context, request, cq));
+    }
+    std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::dmi::GetDmLogLevelResponse>> PrepareAsyncGetDmLogLevel(::grpc::ClientContext* context, const ::dmi::GetDmLogLevelRequest& request, ::grpc::CompletionQueue* cq) {
+      return std::unique_ptr< ::grpc::ClientAsyncResponseReader< ::dmi::GetDmLogLevelResponse>>(PrepareAsyncGetDmLogLevelRaw(context, request, cq));
+    }
     class experimental_async final :
       public StubInterface::experimental_async_interface {
      public:
@@ -688,6 +748,30 @@
       #else
       void RebootDevice(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::dmi::RebootDeviceResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) override;
       #endif
+      void SetDmLogLevel(::grpc::ClientContext* context, const ::dmi::SetDmLogLevelRequest* request, ::dmi::SetDmLogLevelResponse* response, std::function<void(::grpc::Status)>) override;
+      void SetDmLogLevel(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::dmi::SetDmLogLevelResponse* response, std::function<void(::grpc::Status)>) override;
+      #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+      void SetDmLogLevel(::grpc::ClientContext* context, const ::dmi::SetDmLogLevelRequest* request, ::dmi::SetDmLogLevelResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
+      #else
+      void SetDmLogLevel(::grpc::ClientContext* context, const ::dmi::SetDmLogLevelRequest* request, ::dmi::SetDmLogLevelResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) override;
+      #endif
+      #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+      void SetDmLogLevel(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::dmi::SetDmLogLevelResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
+      #else
+      void SetDmLogLevel(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::dmi::SetDmLogLevelResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) override;
+      #endif
+      void GetDmLogLevel(::grpc::ClientContext* context, const ::dmi::GetDmLogLevelRequest* request, ::dmi::GetDmLogLevelResponse* response, std::function<void(::grpc::Status)>) override;
+      void GetDmLogLevel(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::dmi::GetDmLogLevelResponse* response, std::function<void(::grpc::Status)>) override;
+      #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+      void GetDmLogLevel(::grpc::ClientContext* context, const ::dmi::GetDmLogLevelRequest* request, ::dmi::GetDmLogLevelResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
+      #else
+      void GetDmLogLevel(::grpc::ClientContext* context, const ::dmi::GetDmLogLevelRequest* request, ::dmi::GetDmLogLevelResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) override;
+      #endif
+      #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+      void GetDmLogLevel(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::dmi::GetDmLogLevelResponse* response, ::grpc::ClientUnaryReactor* reactor) override;
+      #else
+      void GetDmLogLevel(::grpc::ClientContext* context, const ::grpc::ByteBuffer* request, ::dmi::GetDmLogLevelResponse* response, ::grpc::experimental::ClientUnaryReactor* reactor) override;
+      #endif
      private:
       friend class Stub;
       explicit experimental_async(Stub* stub): stub_(stub) { }
@@ -732,6 +816,10 @@
     ::grpc::ClientAsyncResponseReader< ::dmi::Heartbeat>* PrepareAsyncHeartbeatCheckRaw(::grpc::ClientContext* context, const ::google::protobuf::Empty& request, ::grpc::CompletionQueue* cq) override;
     ::grpc::ClientAsyncResponseReader< ::dmi::RebootDeviceResponse>* AsyncRebootDeviceRaw(::grpc::ClientContext* context, const ::dmi::RebootDeviceRequest& request, ::grpc::CompletionQueue* cq) override;
     ::grpc::ClientAsyncResponseReader< ::dmi::RebootDeviceResponse>* PrepareAsyncRebootDeviceRaw(::grpc::ClientContext* context, const ::dmi::RebootDeviceRequest& request, ::grpc::CompletionQueue* cq) override;
+    ::grpc::ClientAsyncResponseReader< ::dmi::SetDmLogLevelResponse>* AsyncSetDmLogLevelRaw(::grpc::ClientContext* context, const ::dmi::SetDmLogLevelRequest& request, ::grpc::CompletionQueue* cq) override;
+    ::grpc::ClientAsyncResponseReader< ::dmi::SetDmLogLevelResponse>* PrepareAsyncSetDmLogLevelRaw(::grpc::ClientContext* context, const ::dmi::SetDmLogLevelRequest& request, ::grpc::CompletionQueue* cq) override;
+    ::grpc::ClientAsyncResponseReader< ::dmi::GetDmLogLevelResponse>* AsyncGetDmLogLevelRaw(::grpc::ClientContext* context, const ::dmi::GetDmLogLevelRequest& request, ::grpc::CompletionQueue* cq) override;
+    ::grpc::ClientAsyncResponseReader< ::dmi::GetDmLogLevelResponse>* PrepareAsyncGetDmLogLevelRaw(::grpc::ClientContext* context, const ::dmi::GetDmLogLevelRequest& request, ::grpc::CompletionQueue* cq) override;
     const ::grpc::internal::RpcMethod rpcmethod_StartManagingDevice_;
     const ::grpc::internal::RpcMethod rpcmethod_StopManagingDevice_;
     const ::grpc::internal::RpcMethod rpcmethod_GetManagedDevices_;
@@ -747,6 +835,8 @@
     const ::grpc::internal::RpcMethod rpcmethod_GetLogLevel_;
     const ::grpc::internal::RpcMethod rpcmethod_HeartbeatCheck_;
     const ::grpc::internal::RpcMethod rpcmethod_RebootDevice_;
+    const ::grpc::internal::RpcMethod rpcmethod_SetDmLogLevel_;
+    const ::grpc::internal::RpcMethod rpcmethod_GetDmLogLevel_;
   };
   static std::unique_ptr<Stub> NewStub(const std::shared_ptr< ::grpc::ChannelInterface>& channel, const ::grpc::StubOptions& options = ::grpc::StubOptions());
 
@@ -799,6 +889,10 @@
     virtual ::grpc::Status HeartbeatCheck(::grpc::ServerContext* context, const ::google::protobuf::Empty* request, ::dmi::Heartbeat* response);
     // Performs the reboot of the device

     virtual ::grpc::Status RebootDevice(::grpc::ServerContext* context, const ::dmi::RebootDeviceRequest* request, ::dmi::RebootDeviceResponse* response);
+    // Sets the log level of the Device Manager itself

+    virtual ::grpc::Status SetDmLogLevel(::grpc::ServerContext* context, const ::dmi::SetDmLogLevelRequest* request, ::dmi::SetDmLogLevelResponse* response);
+    // Gets the log level at which the Device Manager is running

+    virtual ::grpc::Status GetDmLogLevel(::grpc::ServerContext* context, const ::dmi::GetDmLogLevelRequest* request, ::dmi::GetDmLogLevelResponse* response);
   };
   template <class BaseClass>
   class WithAsyncMethod_StartManagingDevice : public BaseClass {
@@ -1100,7 +1194,47 @@
       ::grpc::Service::RequestAsyncUnary(14, context, request, response, new_call_cq, notification_cq, tag);
     }
   };
-  typedef WithAsyncMethod_StartManagingDevice<WithAsyncMethod_StopManagingDevice<WithAsyncMethod_GetManagedDevices<WithAsyncMethod_GetPhysicalInventory<WithAsyncMethod_GetHWComponentInfo<WithAsyncMethod_SetHWComponentInfo<WithAsyncMethod_SetLoggingEndpoint<WithAsyncMethod_GetLoggingEndpoint<WithAsyncMethod_SetMsgBusEndpoint<WithAsyncMethod_GetMsgBusEndpoint<WithAsyncMethod_GetLoggableEntities<WithAsyncMethod_SetLogLevel<WithAsyncMethod_GetLogLevel<WithAsyncMethod_HeartbeatCheck<WithAsyncMethod_RebootDevice<Service > > > > > > > > > > > > > > > AsyncService;
+  template <class BaseClass>
+  class WithAsyncMethod_SetDmLogLevel : public BaseClass {
+   private:
+    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
+   public:
+    WithAsyncMethod_SetDmLogLevel() {
+      ::grpc::Service::MarkMethodAsync(15);
+    }
+    ~WithAsyncMethod_SetDmLogLevel() override {
+      BaseClassMustBeDerivedFromService(this);
+    }
+    // disable synchronous version of this method
+    ::grpc::Status SetDmLogLevel(::grpc::ServerContext* /*context*/, const ::dmi::SetDmLogLevelRequest* /*request*/, ::dmi::SetDmLogLevelResponse* /*response*/) override {
+      abort();
+      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+    }
+    void RequestSetDmLogLevel(::grpc::ServerContext* context, ::dmi::SetDmLogLevelRequest* request, ::grpc::ServerAsyncResponseWriter< ::dmi::SetDmLogLevelResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
+      ::grpc::Service::RequestAsyncUnary(15, context, request, response, new_call_cq, notification_cq, tag);
+    }
+  };
+  template <class BaseClass>
+  class WithAsyncMethod_GetDmLogLevel : public BaseClass {
+   private:
+    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
+   public:
+    WithAsyncMethod_GetDmLogLevel() {
+      ::grpc::Service::MarkMethodAsync(16);
+    }
+    ~WithAsyncMethod_GetDmLogLevel() override {
+      BaseClassMustBeDerivedFromService(this);
+    }
+    // disable synchronous version of this method
+    ::grpc::Status GetDmLogLevel(::grpc::ServerContext* /*context*/, const ::dmi::GetDmLogLevelRequest* /*request*/, ::dmi::GetDmLogLevelResponse* /*response*/) override {
+      abort();
+      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+    }
+    void RequestGetDmLogLevel(::grpc::ServerContext* context, ::dmi::GetDmLogLevelRequest* request, ::grpc::ServerAsyncResponseWriter< ::dmi::GetDmLogLevelResponse>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
+      ::grpc::Service::RequestAsyncUnary(16, context, request, response, new_call_cq, notification_cq, tag);
+    }
+  };
+  typedef WithAsyncMethod_StartManagingDevice<WithAsyncMethod_StopManagingDevice<WithAsyncMethod_GetManagedDevices<WithAsyncMethod_GetPhysicalInventory<WithAsyncMethod_GetHWComponentInfo<WithAsyncMethod_SetHWComponentInfo<WithAsyncMethod_SetLoggingEndpoint<WithAsyncMethod_GetLoggingEndpoint<WithAsyncMethod_SetMsgBusEndpoint<WithAsyncMethod_GetMsgBusEndpoint<WithAsyncMethod_GetLoggableEntities<WithAsyncMethod_SetLogLevel<WithAsyncMethod_GetLogLevel<WithAsyncMethod_HeartbeatCheck<WithAsyncMethod_RebootDevice<WithAsyncMethod_SetDmLogLevel<WithAsyncMethod_GetDmLogLevel<Service > > > > > > > > > > > > > > > > > AsyncService;
   template <class BaseClass>
   class ExperimentalWithCallbackMethod_StartManagingDevice : public BaseClass {
    private:
@@ -1779,11 +1913,105 @@
     #endif
       { return nullptr; }
   };
+  template <class BaseClass>
+  class ExperimentalWithCallbackMethod_SetDmLogLevel : public BaseClass {
+   private:
+    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
+   public:
+    ExperimentalWithCallbackMethod_SetDmLogLevel() {
+    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+      ::grpc::Service::
+    #else
+      ::grpc::Service::experimental().
+    #endif
+        MarkMethodCallback(15,
+          new ::grpc_impl::internal::CallbackUnaryHandler< ::dmi::SetDmLogLevelRequest, ::dmi::SetDmLogLevelResponse>(
+            [this](
+    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+                   ::grpc::CallbackServerContext*
+    #else
+                   ::grpc::experimental::CallbackServerContext*
+    #endif
+                     context, const ::dmi::SetDmLogLevelRequest* request, ::dmi::SetDmLogLevelResponse* response) { return this->SetDmLogLevel(context, request, response); }));}
+    void SetMessageAllocatorFor_SetDmLogLevel(
+        ::grpc::experimental::MessageAllocator< ::dmi::SetDmLogLevelRequest, ::dmi::SetDmLogLevelResponse>* allocator) {
+    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(15);
+    #else
+      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::experimental().GetHandler(15);
+    #endif
+      static_cast<::grpc_impl::internal::CallbackUnaryHandler< ::dmi::SetDmLogLevelRequest, ::dmi::SetDmLogLevelResponse>*>(handler)
+              ->SetMessageAllocator(allocator);
+    }
+    ~ExperimentalWithCallbackMethod_SetDmLogLevel() override {
+      BaseClassMustBeDerivedFromService(this);
+    }
+    // disable synchronous version of this method
+    ::grpc::Status SetDmLogLevel(::grpc::ServerContext* /*context*/, const ::dmi::SetDmLogLevelRequest* /*request*/, ::dmi::SetDmLogLevelResponse* /*response*/) override {
+      abort();
+      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+    }
+    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+    virtual ::grpc::ServerUnaryReactor* SetDmLogLevel(
+      ::grpc::CallbackServerContext* /*context*/, const ::dmi::SetDmLogLevelRequest* /*request*/, ::dmi::SetDmLogLevelResponse* /*response*/)
+    #else
+    virtual ::grpc::experimental::ServerUnaryReactor* SetDmLogLevel(
+      ::grpc::experimental::CallbackServerContext* /*context*/, const ::dmi::SetDmLogLevelRequest* /*request*/, ::dmi::SetDmLogLevelResponse* /*response*/)
+    #endif
+      { return nullptr; }
+  };
+  template <class BaseClass>
+  class ExperimentalWithCallbackMethod_GetDmLogLevel : public BaseClass {
+   private:
+    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
+   public:
+    ExperimentalWithCallbackMethod_GetDmLogLevel() {
+    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+      ::grpc::Service::
+    #else
+      ::grpc::Service::experimental().
+    #endif
+        MarkMethodCallback(16,
+          new ::grpc_impl::internal::CallbackUnaryHandler< ::dmi::GetDmLogLevelRequest, ::dmi::GetDmLogLevelResponse>(
+            [this](
+    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+                   ::grpc::CallbackServerContext*
+    #else
+                   ::grpc::experimental::CallbackServerContext*
+    #endif
+                     context, const ::dmi::GetDmLogLevelRequest* request, ::dmi::GetDmLogLevelResponse* response) { return this->GetDmLogLevel(context, request, response); }));}
+    void SetMessageAllocatorFor_GetDmLogLevel(
+        ::grpc::experimental::MessageAllocator< ::dmi::GetDmLogLevelRequest, ::dmi::GetDmLogLevelResponse>* allocator) {
+    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::GetHandler(16);
+    #else
+      ::grpc::internal::MethodHandler* const handler = ::grpc::Service::experimental().GetHandler(16);
+    #endif
+      static_cast<::grpc_impl::internal::CallbackUnaryHandler< ::dmi::GetDmLogLevelRequest, ::dmi::GetDmLogLevelResponse>*>(handler)
+              ->SetMessageAllocator(allocator);
+    }
+    ~ExperimentalWithCallbackMethod_GetDmLogLevel() override {
+      BaseClassMustBeDerivedFromService(this);
+    }
+    // disable synchronous version of this method
+    ::grpc::Status GetDmLogLevel(::grpc::ServerContext* /*context*/, const ::dmi::GetDmLogLevelRequest* /*request*/, ::dmi::GetDmLogLevelResponse* /*response*/) override {
+      abort();
+      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+    }
+    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+    virtual ::grpc::ServerUnaryReactor* GetDmLogLevel(
+      ::grpc::CallbackServerContext* /*context*/, const ::dmi::GetDmLogLevelRequest* /*request*/, ::dmi::GetDmLogLevelResponse* /*response*/)
+    #else
+    virtual ::grpc::experimental::ServerUnaryReactor* GetDmLogLevel(
+      ::grpc::experimental::CallbackServerContext* /*context*/, const ::dmi::GetDmLogLevelRequest* /*request*/, ::dmi::GetDmLogLevelResponse* /*response*/)
+    #endif
+      { return nullptr; }
+  };
   #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
-  typedef ExperimentalWithCallbackMethod_StartManagingDevice<ExperimentalWithCallbackMethod_StopManagingDevice<ExperimentalWithCallbackMethod_GetManagedDevices<ExperimentalWithCallbackMethod_GetPhysicalInventory<ExperimentalWithCallbackMethod_GetHWComponentInfo<ExperimentalWithCallbackMethod_SetHWComponentInfo<ExperimentalWithCallbackMethod_SetLoggingEndpoint<ExperimentalWithCallbackMethod_GetLoggingEndpoint<ExperimentalWithCallbackMethod_SetMsgBusEndpoint<ExperimentalWithCallbackMethod_GetMsgBusEndpoint<ExperimentalWithCallbackMethod_GetLoggableEntities<ExperimentalWithCallbackMethod_SetLogLevel<ExperimentalWithCallbackMethod_GetLogLevel<ExperimentalWithCallbackMethod_HeartbeatCheck<ExperimentalWithCallbackMethod_RebootDevice<Service > > > > > > > > > > > > > > > CallbackService;
+  typedef ExperimentalWithCallbackMethod_StartManagingDevice<ExperimentalWithCallbackMethod_StopManagingDevice<ExperimentalWithCallbackMethod_GetManagedDevices<ExperimentalWithCallbackMethod_GetPhysicalInventory<ExperimentalWithCallbackMethod_GetHWComponentInfo<ExperimentalWithCallbackMethod_SetHWComponentInfo<ExperimentalWithCallbackMethod_SetLoggingEndpoint<ExperimentalWithCallbackMethod_GetLoggingEndpoint<ExperimentalWithCallbackMethod_SetMsgBusEndpoint<ExperimentalWithCallbackMethod_GetMsgBusEndpoint<ExperimentalWithCallbackMethod_GetLoggableEntities<ExperimentalWithCallbackMethod_SetLogLevel<ExperimentalWithCallbackMethod_GetLogLevel<ExperimentalWithCallbackMethod_HeartbeatCheck<ExperimentalWithCallbackMethod_RebootDevice<ExperimentalWithCallbackMethod_SetDmLogLevel<ExperimentalWithCallbackMethod_GetDmLogLevel<Service > > > > > > > > > > > > > > > > > CallbackService;
   #endif
 
-  typedef ExperimentalWithCallbackMethod_StartManagingDevice<ExperimentalWithCallbackMethod_StopManagingDevice<ExperimentalWithCallbackMethod_GetManagedDevices<ExperimentalWithCallbackMethod_GetPhysicalInventory<ExperimentalWithCallbackMethod_GetHWComponentInfo<ExperimentalWithCallbackMethod_SetHWComponentInfo<ExperimentalWithCallbackMethod_SetLoggingEndpoint<ExperimentalWithCallbackMethod_GetLoggingEndpoint<ExperimentalWithCallbackMethod_SetMsgBusEndpoint<ExperimentalWithCallbackMethod_GetMsgBusEndpoint<ExperimentalWithCallbackMethod_GetLoggableEntities<ExperimentalWithCallbackMethod_SetLogLevel<ExperimentalWithCallbackMethod_GetLogLevel<ExperimentalWithCallbackMethod_HeartbeatCheck<ExperimentalWithCallbackMethod_RebootDevice<Service > > > > > > > > > > > > > > > ExperimentalCallbackService;
+  typedef ExperimentalWithCallbackMethod_StartManagingDevice<ExperimentalWithCallbackMethod_StopManagingDevice<ExperimentalWithCallbackMethod_GetManagedDevices<ExperimentalWithCallbackMethod_GetPhysicalInventory<ExperimentalWithCallbackMethod_GetHWComponentInfo<ExperimentalWithCallbackMethod_SetHWComponentInfo<ExperimentalWithCallbackMethod_SetLoggingEndpoint<ExperimentalWithCallbackMethod_GetLoggingEndpoint<ExperimentalWithCallbackMethod_SetMsgBusEndpoint<ExperimentalWithCallbackMethod_GetMsgBusEndpoint<ExperimentalWithCallbackMethod_GetLoggableEntities<ExperimentalWithCallbackMethod_SetLogLevel<ExperimentalWithCallbackMethod_GetLogLevel<ExperimentalWithCallbackMethod_HeartbeatCheck<ExperimentalWithCallbackMethod_RebootDevice<ExperimentalWithCallbackMethod_SetDmLogLevel<ExperimentalWithCallbackMethod_GetDmLogLevel<Service > > > > > > > > > > > > > > > > > ExperimentalCallbackService;
   template <class BaseClass>
   class WithGenericMethod_StartManagingDevice : public BaseClass {
    private:
@@ -2040,6 +2268,40 @@
     }
   };
   template <class BaseClass>
+  class WithGenericMethod_SetDmLogLevel : public BaseClass {
+   private:
+    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
+   public:
+    WithGenericMethod_SetDmLogLevel() {
+      ::grpc::Service::MarkMethodGeneric(15);
+    }
+    ~WithGenericMethod_SetDmLogLevel() override {
+      BaseClassMustBeDerivedFromService(this);
+    }
+    // disable synchronous version of this method
+    ::grpc::Status SetDmLogLevel(::grpc::ServerContext* /*context*/, const ::dmi::SetDmLogLevelRequest* /*request*/, ::dmi::SetDmLogLevelResponse* /*response*/) override {
+      abort();
+      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+    }
+  };
+  template <class BaseClass>
+  class WithGenericMethod_GetDmLogLevel : public BaseClass {
+   private:
+    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
+   public:
+    WithGenericMethod_GetDmLogLevel() {
+      ::grpc::Service::MarkMethodGeneric(16);
+    }
+    ~WithGenericMethod_GetDmLogLevel() override {
+      BaseClassMustBeDerivedFromService(this);
+    }
+    // disable synchronous version of this method
+    ::grpc::Status GetDmLogLevel(::grpc::ServerContext* /*context*/, const ::dmi::GetDmLogLevelRequest* /*request*/, ::dmi::GetDmLogLevelResponse* /*response*/) override {
+      abort();
+      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+    }
+  };
+  template <class BaseClass>
   class WithRawMethod_StartManagingDevice : public BaseClass {
    private:
     void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
@@ -2340,6 +2602,46 @@
     }
   };
   template <class BaseClass>
+  class WithRawMethod_SetDmLogLevel : public BaseClass {
+   private:
+    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
+   public:
+    WithRawMethod_SetDmLogLevel() {
+      ::grpc::Service::MarkMethodRaw(15);
+    }
+    ~WithRawMethod_SetDmLogLevel() override {
+      BaseClassMustBeDerivedFromService(this);
+    }
+    // disable synchronous version of this method
+    ::grpc::Status SetDmLogLevel(::grpc::ServerContext* /*context*/, const ::dmi::SetDmLogLevelRequest* /*request*/, ::dmi::SetDmLogLevelResponse* /*response*/) override {
+      abort();
+      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+    }
+    void RequestSetDmLogLevel(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
+      ::grpc::Service::RequestAsyncUnary(15, context, request, response, new_call_cq, notification_cq, tag);
+    }
+  };
+  template <class BaseClass>
+  class WithRawMethod_GetDmLogLevel : public BaseClass {
+   private:
+    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
+   public:
+    WithRawMethod_GetDmLogLevel() {
+      ::grpc::Service::MarkMethodRaw(16);
+    }
+    ~WithRawMethod_GetDmLogLevel() override {
+      BaseClassMustBeDerivedFromService(this);
+    }
+    // disable synchronous version of this method
+    ::grpc::Status GetDmLogLevel(::grpc::ServerContext* /*context*/, const ::dmi::GetDmLogLevelRequest* /*request*/, ::dmi::GetDmLogLevelResponse* /*response*/) override {
+      abort();
+      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+    }
+    void RequestGetDmLogLevel(::grpc::ServerContext* context, ::grpc::ByteBuffer* request, ::grpc::ServerAsyncResponseWriter< ::grpc::ByteBuffer>* response, ::grpc::CompletionQueue* new_call_cq, ::grpc::ServerCompletionQueue* notification_cq, void *tag) {
+      ::grpc::Service::RequestAsyncUnary(16, context, request, response, new_call_cq, notification_cq, tag);
+    }
+  };
+  template <class BaseClass>
   class ExperimentalWithRawCallbackMethod_StartManagingDevice : public BaseClass {
    private:
     void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
@@ -2910,6 +3212,82 @@
       { return nullptr; }
   };
   template <class BaseClass>
+  class ExperimentalWithRawCallbackMethod_SetDmLogLevel : public BaseClass {
+   private:
+    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
+   public:
+    ExperimentalWithRawCallbackMethod_SetDmLogLevel() {
+    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+      ::grpc::Service::
+    #else
+      ::grpc::Service::experimental().
+    #endif
+        MarkMethodRawCallback(15,
+          new ::grpc_impl::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
+            [this](
+    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+                   ::grpc::CallbackServerContext*
+    #else
+                   ::grpc::experimental::CallbackServerContext*
+    #endif
+                     context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->SetDmLogLevel(context, request, response); }));
+    }
+    ~ExperimentalWithRawCallbackMethod_SetDmLogLevel() override {
+      BaseClassMustBeDerivedFromService(this);
+    }
+    // disable synchronous version of this method
+    ::grpc::Status SetDmLogLevel(::grpc::ServerContext* /*context*/, const ::dmi::SetDmLogLevelRequest* /*request*/, ::dmi::SetDmLogLevelResponse* /*response*/) override {
+      abort();
+      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+    }
+    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+    virtual ::grpc::ServerUnaryReactor* SetDmLogLevel(
+      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)
+    #else
+    virtual ::grpc::experimental::ServerUnaryReactor* SetDmLogLevel(
+      ::grpc::experimental::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)
+    #endif
+      { return nullptr; }
+  };
+  template <class BaseClass>
+  class ExperimentalWithRawCallbackMethod_GetDmLogLevel : public BaseClass {
+   private:
+    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
+   public:
+    ExperimentalWithRawCallbackMethod_GetDmLogLevel() {
+    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+      ::grpc::Service::
+    #else
+      ::grpc::Service::experimental().
+    #endif
+        MarkMethodRawCallback(16,
+          new ::grpc_impl::internal::CallbackUnaryHandler< ::grpc::ByteBuffer, ::grpc::ByteBuffer>(
+            [this](
+    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+                   ::grpc::CallbackServerContext*
+    #else
+                   ::grpc::experimental::CallbackServerContext*
+    #endif
+                     context, const ::grpc::ByteBuffer* request, ::grpc::ByteBuffer* response) { return this->GetDmLogLevel(context, request, response); }));
+    }
+    ~ExperimentalWithRawCallbackMethod_GetDmLogLevel() override {
+      BaseClassMustBeDerivedFromService(this);
+    }
+    // disable synchronous version of this method
+    ::grpc::Status GetDmLogLevel(::grpc::ServerContext* /*context*/, const ::dmi::GetDmLogLevelRequest* /*request*/, ::dmi::GetDmLogLevelResponse* /*response*/) override {
+      abort();
+      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+    }
+    #ifdef GRPC_CALLBACK_API_NONEXPERIMENTAL
+    virtual ::grpc::ServerUnaryReactor* GetDmLogLevel(
+      ::grpc::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)
+    #else
+    virtual ::grpc::experimental::ServerUnaryReactor* GetDmLogLevel(
+      ::grpc::experimental::CallbackServerContext* /*context*/, const ::grpc::ByteBuffer* /*request*/, ::grpc::ByteBuffer* /*response*/)
+    #endif
+      { return nullptr; }
+  };
+  template <class BaseClass>
   class WithStreamedUnaryMethod_StopManagingDevice : public BaseClass {
    private:
     void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
@@ -3233,7 +3611,61 @@
     // replace default version of method with streamed unary
     virtual ::grpc::Status StreamedRebootDevice(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::dmi::RebootDeviceRequest,::dmi::RebootDeviceResponse>* server_unary_streamer) = 0;
   };
-  typedef WithStreamedUnaryMethod_StopManagingDevice<WithStreamedUnaryMethod_GetManagedDevices<WithStreamedUnaryMethod_SetHWComponentInfo<WithStreamedUnaryMethod_SetLoggingEndpoint<WithStreamedUnaryMethod_GetLoggingEndpoint<WithStreamedUnaryMethod_SetMsgBusEndpoint<WithStreamedUnaryMethod_GetMsgBusEndpoint<WithStreamedUnaryMethod_GetLoggableEntities<WithStreamedUnaryMethod_SetLogLevel<WithStreamedUnaryMethod_GetLogLevel<WithStreamedUnaryMethod_HeartbeatCheck<WithStreamedUnaryMethod_RebootDevice<Service > > > > > > > > > > > > StreamedUnaryService;
+  template <class BaseClass>
+  class WithStreamedUnaryMethod_SetDmLogLevel : public BaseClass {
+   private:
+    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
+   public:
+    WithStreamedUnaryMethod_SetDmLogLevel() {
+      ::grpc::Service::MarkMethodStreamed(15,
+        new ::grpc::internal::StreamedUnaryHandler<
+          ::dmi::SetDmLogLevelRequest, ::dmi::SetDmLogLevelResponse>(
+            [this](::grpc_impl::ServerContext* context,
+                   ::grpc_impl::ServerUnaryStreamer<
+                     ::dmi::SetDmLogLevelRequest, ::dmi::SetDmLogLevelResponse>* streamer) {
+                       return this->StreamedSetDmLogLevel(context,
+                         streamer);
+                  }));
+    }
+    ~WithStreamedUnaryMethod_SetDmLogLevel() override {
+      BaseClassMustBeDerivedFromService(this);
+    }
+    // disable regular version of this method
+    ::grpc::Status SetDmLogLevel(::grpc::ServerContext* /*context*/, const ::dmi::SetDmLogLevelRequest* /*request*/, ::dmi::SetDmLogLevelResponse* /*response*/) override {
+      abort();
+      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+    }
+    // replace default version of method with streamed unary
+    virtual ::grpc::Status StreamedSetDmLogLevel(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::dmi::SetDmLogLevelRequest,::dmi::SetDmLogLevelResponse>* server_unary_streamer) = 0;
+  };
+  template <class BaseClass>
+  class WithStreamedUnaryMethod_GetDmLogLevel : public BaseClass {
+   private:
+    void BaseClassMustBeDerivedFromService(const Service* /*service*/) {}
+   public:
+    WithStreamedUnaryMethod_GetDmLogLevel() {
+      ::grpc::Service::MarkMethodStreamed(16,
+        new ::grpc::internal::StreamedUnaryHandler<
+          ::dmi::GetDmLogLevelRequest, ::dmi::GetDmLogLevelResponse>(
+            [this](::grpc_impl::ServerContext* context,
+                   ::grpc_impl::ServerUnaryStreamer<
+                     ::dmi::GetDmLogLevelRequest, ::dmi::GetDmLogLevelResponse>* streamer) {
+                       return this->StreamedGetDmLogLevel(context,
+                         streamer);
+                  }));
+    }
+    ~WithStreamedUnaryMethod_GetDmLogLevel() override {
+      BaseClassMustBeDerivedFromService(this);
+    }
+    // disable regular version of this method
+    ::grpc::Status GetDmLogLevel(::grpc::ServerContext* /*context*/, const ::dmi::GetDmLogLevelRequest* /*request*/, ::dmi::GetDmLogLevelResponse* /*response*/) override {
+      abort();
+      return ::grpc::Status(::grpc::StatusCode::UNIMPLEMENTED, "");
+    }
+    // replace default version of method with streamed unary
+    virtual ::grpc::Status StreamedGetDmLogLevel(::grpc::ServerContext* context, ::grpc::ServerUnaryStreamer< ::dmi::GetDmLogLevelRequest,::dmi::GetDmLogLevelResponse>* server_unary_streamer) = 0;
+  };
+  typedef WithStreamedUnaryMethod_StopManagingDevice<WithStreamedUnaryMethod_GetManagedDevices<WithStreamedUnaryMethod_SetHWComponentInfo<WithStreamedUnaryMethod_SetLoggingEndpoint<WithStreamedUnaryMethod_GetLoggingEndpoint<WithStreamedUnaryMethod_SetMsgBusEndpoint<WithStreamedUnaryMethod_GetMsgBusEndpoint<WithStreamedUnaryMethod_GetLoggableEntities<WithStreamedUnaryMethod_SetLogLevel<WithStreamedUnaryMethod_GetLogLevel<WithStreamedUnaryMethod_HeartbeatCheck<WithStreamedUnaryMethod_RebootDevice<WithStreamedUnaryMethod_SetDmLogLevel<WithStreamedUnaryMethod_GetDmLogLevel<Service > > > > > > > > > > > > > > StreamedUnaryService;
   template <class BaseClass>
   class WithSplitStreamingMethod_StartManagingDevice : public BaseClass {
    private:
@@ -3316,7 +3748,7 @@
     virtual ::grpc::Status StreamedGetHWComponentInfo(::grpc::ServerContext* context, ::grpc::ServerSplitStreamer< ::dmi::HWComponentInfoGetRequest,::dmi::HWComponentInfoGetResponse>* server_split_streamer) = 0;
   };
   typedef WithSplitStreamingMethod_StartManagingDevice<WithSplitStreamingMethod_GetPhysicalInventory<WithSplitStreamingMethod_GetHWComponentInfo<Service > > > SplitStreamedService;
-  typedef WithSplitStreamingMethod_StartManagingDevice<WithStreamedUnaryMethod_StopManagingDevice<WithStreamedUnaryMethod_GetManagedDevices<WithSplitStreamingMethod_GetPhysicalInventory<WithSplitStreamingMethod_GetHWComponentInfo<WithStreamedUnaryMethod_SetHWComponentInfo<WithStreamedUnaryMethod_SetLoggingEndpoint<WithStreamedUnaryMethod_GetLoggingEndpoint<WithStreamedUnaryMethod_SetMsgBusEndpoint<WithStreamedUnaryMethod_GetMsgBusEndpoint<WithStreamedUnaryMethod_GetLoggableEntities<WithStreamedUnaryMethod_SetLogLevel<WithStreamedUnaryMethod_GetLogLevel<WithStreamedUnaryMethod_HeartbeatCheck<WithStreamedUnaryMethod_RebootDevice<Service > > > > > > > > > > > > > > > StreamedService;
+  typedef WithSplitStreamingMethod_StartManagingDevice<WithStreamedUnaryMethod_StopManagingDevice<WithStreamedUnaryMethod_GetManagedDevices<WithSplitStreamingMethod_GetPhysicalInventory<WithSplitStreamingMethod_GetHWComponentInfo<WithStreamedUnaryMethod_SetHWComponentInfo<WithStreamedUnaryMethod_SetLoggingEndpoint<WithStreamedUnaryMethod_GetLoggingEndpoint<WithStreamedUnaryMethod_SetMsgBusEndpoint<WithStreamedUnaryMethod_GetMsgBusEndpoint<WithStreamedUnaryMethod_GetLoggableEntities<WithStreamedUnaryMethod_SetLogLevel<WithStreamedUnaryMethod_GetLogLevel<WithStreamedUnaryMethod_HeartbeatCheck<WithStreamedUnaryMethod_RebootDevice<WithStreamedUnaryMethod_SetDmLogLevel<WithStreamedUnaryMethod_GetDmLogLevel<Service > > > > > > > > > > > > > > > > > StreamedService;
 };
 
 }  // namespace dmi
diff --git a/cpp/dmi/hw_management_service.pb.cc b/cpp/dmi/hw_management_service.pb.cc
index 082e7d4..850ac0e 100644
--- a/cpp/dmi/hw_management_service.pb.cc
+++ b/cpp/dmi/hw_management_service.pb.cc
@@ -111,6 +111,22 @@
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<GetLoggableEntitiesRequest> _instance;
 } _GetLoggableEntitiesRequest_default_instance_;
+class SetDmLogLevelRequestDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<SetDmLogLevelRequest> _instance;
+} _SetDmLogLevelRequest_default_instance_;
+class SetDmLogLevelResponseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<SetDmLogLevelResponse> _instance;
+} _SetDmLogLevelResponse_default_instance_;
+class GetDmLogLevelRequestDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<GetDmLogLevelRequest> _instance;
+} _GetDmLogLevelRequest_default_instance_;
+class GetDmLogLevelResponseDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<GetDmLogLevelResponse> _instance;
+} _GetDmLogLevelResponse_default_instance_;
 class HeartbeatDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<Heartbeat> _instance;
@@ -450,6 +466,62 @@
     {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsGetLoggableEntitiesRequest_dmi_2fhw_5fmanagement_5fservice_2eproto}, {
       &scc_info_Uuid_dmi_2fhw_2eproto.base,}};
 
+static void InitDefaultsSetDmLogLevelRequest_dmi_2fhw_5fmanagement_5fservice_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::dmi::_SetDmLogLevelRequest_default_instance_;
+    new (ptr) ::dmi::SetDmLogLevelRequest();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::dmi::SetDmLogLevelRequest::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_SetDmLogLevelRequest_dmi_2fhw_5fmanagement_5fservice_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsSetDmLogLevelRequest_dmi_2fhw_5fmanagement_5fservice_2eproto}, {}};
+
+static void InitDefaultsSetDmLogLevelResponse_dmi_2fhw_5fmanagement_5fservice_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::dmi::_SetDmLogLevelResponse_default_instance_;
+    new (ptr) ::dmi::SetDmLogLevelResponse();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::dmi::SetDmLogLevelResponse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_SetDmLogLevelResponse_dmi_2fhw_5fmanagement_5fservice_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsSetDmLogLevelResponse_dmi_2fhw_5fmanagement_5fservice_2eproto}, {}};
+
+static void InitDefaultsGetDmLogLevelRequest_dmi_2fhw_5fmanagement_5fservice_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::dmi::_GetDmLogLevelRequest_default_instance_;
+    new (ptr) ::dmi::GetDmLogLevelRequest();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::dmi::GetDmLogLevelRequest::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_GetDmLogLevelRequest_dmi_2fhw_5fmanagement_5fservice_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsGetDmLogLevelRequest_dmi_2fhw_5fmanagement_5fservice_2eproto}, {}};
+
+static void InitDefaultsGetDmLogLevelResponse_dmi_2fhw_5fmanagement_5fservice_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::dmi::_GetDmLogLevelResponse_default_instance_;
+    new (ptr) ::dmi::GetDmLogLevelResponse();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::dmi::GetDmLogLevelResponse::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_GetDmLogLevelResponse_dmi_2fhw_5fmanagement_5fservice_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsGetDmLogLevelResponse_dmi_2fhw_5fmanagement_5fservice_2eproto}, {}};
+
 static void InitDefaultsHeartbeat_dmi_2fhw_5fmanagement_5fservice_2eproto() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
@@ -516,13 +588,17 @@
   ::google::protobuf::internal::InitSCC(&scc_info_GetLogLevelRequest_dmi_2fhw_5fmanagement_5fservice_2eproto.base);
   ::google::protobuf::internal::InitSCC(&scc_info_GetLogLevelResponse_dmi_2fhw_5fmanagement_5fservice_2eproto.base);
   ::google::protobuf::internal::InitSCC(&scc_info_GetLoggableEntitiesRequest_dmi_2fhw_5fmanagement_5fservice_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_SetDmLogLevelRequest_dmi_2fhw_5fmanagement_5fservice_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_SetDmLogLevelResponse_dmi_2fhw_5fmanagement_5fservice_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_GetDmLogLevelRequest_dmi_2fhw_5fmanagement_5fservice_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_GetDmLogLevelResponse_dmi_2fhw_5fmanagement_5fservice_2eproto.base);
   ::google::protobuf::internal::InitSCC(&scc_info_Heartbeat_dmi_2fhw_5fmanagement_5fservice_2eproto.base);
   ::google::protobuf::internal::InitSCC(&scc_info_RebootDeviceRequest_dmi_2fhw_5fmanagement_5fservice_2eproto.base);
   ::google::protobuf::internal::InitSCC(&scc_info_RebootDeviceResponse_dmi_2fhw_5fmanagement_5fservice_2eproto.base);
 }
 
-::google::protobuf::Metadata file_level_metadata_dmi_2fhw_5fmanagement_5fservice_2eproto[25];
-const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors_dmi_2fhw_5fmanagement_5fservice_2eproto[12];
+::google::protobuf::Metadata file_level_metadata_dmi_2fhw_5fmanagement_5fservice_2eproto[29];
+const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors_dmi_2fhw_5fmanagement_5fservice_2eproto[14];
 constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_dmi_2fhw_5fmanagement_5fservice_2eproto = nullptr;
 
 const ::google::protobuf::uint32 TableStruct_dmi_2fhw_5fmanagement_5fservice_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
@@ -701,6 +777,34 @@
   ~0u,  // no _weak_field_map_
   PROTOBUF_FIELD_OFFSET(::dmi::GetLoggableEntitiesRequest, device_uuid_),
   ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::dmi::SetDmLogLevelRequest, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::dmi::SetDmLogLevelRequest, level_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::dmi::SetDmLogLevelResponse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::dmi::SetDmLogLevelResponse, status_),
+  PROTOBUF_FIELD_OFFSET(::dmi::SetDmLogLevelResponse, reason_),
+  PROTOBUF_FIELD_OFFSET(::dmi::SetDmLogLevelResponse, reason_detail_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::dmi::GetDmLogLevelRequest, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::dmi::GetDmLogLevelResponse, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::dmi::GetDmLogLevelResponse, level_),
+  PROTOBUF_FIELD_OFFSET(::dmi::GetDmLogLevelResponse, status_),
+  PROTOBUF_FIELD_OFFSET(::dmi::GetDmLogLevelResponse, reason_),
+  PROTOBUF_FIELD_OFFSET(::dmi::GetDmLogLevelResponse, reason_detail_),
+  ~0u,  // no _has_bits_
   PROTOBUF_FIELD_OFFSET(::dmi::Heartbeat, _internal_metadata_),
   ~0u,  // no _extensions_
   ~0u,  // no _oneof_case_
@@ -744,9 +848,13 @@
   { 151, -1, sizeof(::dmi::GetLogLevelRequest)},
   { 158, -1, sizeof(::dmi::GetLogLevelResponse)},
   { 168, -1, sizeof(::dmi::GetLoggableEntitiesRequest)},
-  { 174, -1, sizeof(::dmi::Heartbeat)},
-  { 180, -1, sizeof(::dmi::RebootDeviceRequest)},
-  { 186, -1, sizeof(::dmi::RebootDeviceResponse)},
+  { 174, -1, sizeof(::dmi::SetDmLogLevelRequest)},
+  { 180, -1, sizeof(::dmi::SetDmLogLevelResponse)},
+  { 188, -1, sizeof(::dmi::GetDmLogLevelRequest)},
+  { 193, -1, sizeof(::dmi::GetDmLogLevelResponse)},
+  { 202, -1, sizeof(::dmi::Heartbeat)},
+  { 208, -1, sizeof(::dmi::RebootDeviceRequest)},
+  { 214, -1, sizeof(::dmi::RebootDeviceResponse)},
 };
 
 static ::google::protobuf::Message const * const file_default_instances[] = {
@@ -772,6 +880,10 @@
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_GetLogLevelRequest_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_GetLogLevelResponse_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_GetLoggableEntitiesRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_SetDmLogLevelRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_SetDmLogLevelResponse_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_GetDmLogLevelRequest_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_GetDmLogLevelResponse_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_Heartbeat_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_RebootDeviceRequest_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_RebootDeviceResponse_default_instance_),
@@ -780,7 +892,7 @@
 ::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_dmi_2fhw_5fmanagement_5fservice_2eproto = {
   {}, AddDescriptors_dmi_2fhw_5fmanagement_5fservice_2eproto, "dmi/hw_management_service.proto", schemas,
   file_default_instances, TableStruct_dmi_2fhw_5fmanagement_5fservice_2eproto::offsets,
-  file_level_metadata_dmi_2fhw_5fmanagement_5fservice_2eproto, 25, file_level_enum_descriptors_dmi_2fhw_5fmanagement_5fservice_2eproto, file_level_service_descriptors_dmi_2fhw_5fmanagement_5fservice_2eproto,
+  file_level_metadata_dmi_2fhw_5fmanagement_5fservice_2eproto, 29, file_level_enum_descriptors_dmi_2fhw_5fmanagement_5fservice_2eproto, file_level_service_descriptors_dmi_2fhw_5fmanagement_5fservice_2eproto,
 };
 
 const char descriptor_table_protodef_dmi_2fhw_5fmanagement_5fservice_2eproto[] =
@@ -887,52 +999,68 @@
   "\020\001\022\022\n\016INTERNAL_ERROR\020\002\022\026\n\022UNKNOWN_LOG_EN"
   "TITY\020\003\022\026\n\022DEVICE_UNREACHABLE\020\004\"<\n\032GetLog"
   "gableEntitiesRequest\022\036\n\013device_uuid\030\001 \001("
-  "\0132\t.dmi.Uuid\"(\n\tHeartbeat\022\033\n\023heartbeat_s"
-  "ignature\030\001 \001(\007\"5\n\023RebootDeviceRequest\022\036\n"
-  "\013device_uuid\030\001 \001(\0132\t.dmi.Uuid\"\367\001\n\024Reboot"
-  "DeviceResponse\022\033\n\006status\030\003 \001(\0162\013.dmi.Sta"
-  "tus\0220\n\006reason\030\004 \001(\0162 .dmi.RebootDeviceRe"
-  "sponse.Reason\022\025\n\rreason_detail\030\005 \001(\t\"y\n\006"
-  "Reason\022\024\n\020UNDEFINED_REASON\020\000\022\022\n\016UNKNOWN_"
-  "DEVICE\020\001\022\022\n\016INTERNAL_ERROR\020\002\022\026\n\022DEVICE_U"
-  "NREACHABLE\020\003\022\031\n\025DEVICE_IN_WRONG_STATE\020\0042"
-  "\256\t\n\031NativeHWManagementService\022S\n\023StartMa"
-  "nagingDevice\022\030.dmi.ModifiableComponent\032 "
-  ".dmi.StartManagingDeviceResponse0\001\022U\n\022St"
-  "opManagingDevice\022\036.dmi.StopManagingDevic"
-  "eRequest\032\037.dmi.StopManagingDeviceRespons"
-  "e\022H\n\021GetManagedDevices\022\026.google.protobuf"
-  ".Empty\032\033.dmi.ManagedDevicesResponse\022W\n\024G"
-  "etPhysicalInventory\022\035.dmi.PhysicalInvent"
-  "oryRequest\032\036.dmi.PhysicalInventoryRespon"
-  "se0\001\022W\n\022GetHWComponentInfo\022\036.dmi.HWCompo"
-  "nentInfoGetRequest\032\037.dmi.HWComponentInfo"
-  "GetResponse0\001\022U\n\022SetHWComponentInfo\022\036.dm"
-  "i.HWComponentInfoSetRequest\032\037.dmi.HWComp"
-  "onentInfoSetResponse\022T\n\022SetLoggingEndpoi"
-  "nt\022\036.dmi.SetLoggingEndpointRequest\032\036.dmi"
-  ".SetRemoteEndpointResponse\022F\n\022GetLogging"
-  "Endpoint\022\017.dmi.HardwareID\032\037.dmi.GetLoggi"
-  "ngEndpointResponse\022R\n\021SetMsgBusEndpoint\022"
-  "\035.dmi.SetMsgBusEndpointRequest\032\036.dmi.Set"
-  "RemoteEndpointResponse\022K\n\021GetMsgBusEndpo"
-  "int\022\026.google.protobuf.Empty\032\036.dmi.GetMsg"
-  "BusEndpointResponse\022P\n\023GetLoggableEntiti"
-  "es\022\037.dmi.GetLoggableEntitiesRequest\032\030.dm"
-  "i.GetLogLevelResponse\022@\n\013SetLogLevel\022\027.d"
-  "mi.SetLogLevelRequest\032\030.dmi.SetLogLevelR"
-  "esponse\022@\n\013GetLogLevel\022\027.dmi.GetLogLevel"
-  "Request\032\030.dmi.GetLogLevelResponse\0228\n\016Hea"
-  "rtbeatCheck\022\026.google.protobuf.Empty\032\016.dm"
-  "i.Heartbeat\022C\n\014RebootDevice\022\030.dmi.Reboot"
-  "DeviceRequest\032\031.dmi.RebootDeviceResponse"
-  "B;Z9github.com/opencord/device-managemen"
-  "t-interface/v3/go/dmib\006proto3"
+  "\0132\t.dmi.Uuid\"4\n\024SetDmLogLevelRequest\022\034\n\005"
+  "level\030\001 \001(\0162\r.dmi.LogLevel\"\311\001\n\025SetDmLogL"
+  "evelResponse\022\033\n\006status\030\001 \001(\0162\013.dmi.Statu"
+  "s\0221\n\006reason\030\002 \001(\0162!.dmi.SetDmLogLevelRes"
+  "ponse.Reason\022\025\n\rreason_detail\030\003 \001(\t\"I\n\006R"
+  "eason\022\024\n\020UNDEFINED_REASON\020\000\022\022\n\016INTERNAL_"
+  "ERROR\020\001\022\025\n\021UNKNOWN_LOG_LEVEL\020\002\"\026\n\024GetDmL"
+  "ogLevelRequest\"\320\001\n\025GetDmLogLevelResponse"
+  "\022\034\n\005level\030\001 \001(\0162\r.dmi.LogLevel\022\033\n\006status"
+  "\030\002 \001(\0162\013.dmi.Status\0221\n\006reason\030\003 \001(\0162!.dm"
+  "i.GetDmLogLevelResponse.Reason\022\025\n\rreason"
+  "_detail\030\004 \001(\t\"2\n\006Reason\022\024\n\020UNDEFINED_REA"
+  "SON\020\000\022\022\n\016INTERNAL_ERROR\020\001\"(\n\tHeartbeat\022\033"
+  "\n\023heartbeat_signature\030\001 \001(\007\"5\n\023RebootDev"
+  "iceRequest\022\036\n\013device_uuid\030\001 \001(\0132\t.dmi.Uu"
+  "id\"\367\001\n\024RebootDeviceResponse\022\033\n\006status\030\003 "
+  "\001(\0162\013.dmi.Status\0220\n\006reason\030\004 \001(\0162 .dmi.R"
+  "ebootDeviceResponse.Reason\022\025\n\rreason_det"
+  "ail\030\005 \001(\t\"y\n\006Reason\022\024\n\020UNDEFINED_REASON\020"
+  "\000\022\022\n\016UNKNOWN_DEVICE\020\001\022\022\n\016INTERNAL_ERROR\020"
+  "\002\022\026\n\022DEVICE_UNREACHABLE\020\003\022\031\n\025DEVICE_IN_W"
+  "RONG_STATE\020\0042\276\n\n\031NativeHWManagementServi"
+  "ce\022S\n\023StartManagingDevice\022\030.dmi.Modifiab"
+  "leComponent\032 .dmi.StartManagingDeviceRes"
+  "ponse0\001\022U\n\022StopManagingDevice\022\036.dmi.Stop"
+  "ManagingDeviceRequest\032\037.dmi.StopManaging"
+  "DeviceResponse\022H\n\021GetManagedDevices\022\026.go"
+  "ogle.protobuf.Empty\032\033.dmi.ManagedDevices"
+  "Response\022W\n\024GetPhysicalInventory\022\035.dmi.P"
+  "hysicalInventoryRequest\032\036.dmi.PhysicalIn"
+  "ventoryResponse0\001\022W\n\022GetHWComponentInfo\022"
+  "\036.dmi.HWComponentInfoGetRequest\032\037.dmi.HW"
+  "ComponentInfoGetResponse0\001\022U\n\022SetHWCompo"
+  "nentInfo\022\036.dmi.HWComponentInfoSetRequest"
+  "\032\037.dmi.HWComponentInfoSetResponse\022T\n\022Set"
+  "LoggingEndpoint\022\036.dmi.SetLoggingEndpoint"
+  "Request\032\036.dmi.SetRemoteEndpointResponse\022"
+  "F\n\022GetLoggingEndpoint\022\017.dmi.HardwareID\032\037"
+  ".dmi.GetLoggingEndpointResponse\022R\n\021SetMs"
+  "gBusEndpoint\022\035.dmi.SetMsgBusEndpointRequ"
+  "est\032\036.dmi.SetRemoteEndpointResponse\022K\n\021G"
+  "etMsgBusEndpoint\022\026.google.protobuf.Empty"
+  "\032\036.dmi.GetMsgBusEndpointResponse\022P\n\023GetL"
+  "oggableEntities\022\037.dmi.GetLoggableEntitie"
+  "sRequest\032\030.dmi.GetLogLevelResponse\022@\n\013Se"
+  "tLogLevel\022\027.dmi.SetLogLevelRequest\032\030.dmi"
+  ".SetLogLevelResponse\022@\n\013GetLogLevel\022\027.dm"
+  "i.GetLogLevelRequest\032\030.dmi.GetLogLevelRe"
+  "sponse\0228\n\016HeartbeatCheck\022\026.google.protob"
+  "uf.Empty\032\016.dmi.Heartbeat\022C\n\014RebootDevice"
+  "\022\030.dmi.RebootDeviceRequest\032\031.dmi.RebootD"
+  "eviceResponse\022F\n\rSetDmLogLevel\022\031.dmi.Set"
+  "DmLogLevelRequest\032\032.dmi.SetDmLogLevelRes"
+  "ponse\022F\n\rGetDmLogLevel\022\031.dmi.GetDmLogLev"
+  "elRequest\032\032.dmi.GetDmLogLevelResponseB;Z"
+  "9github.com/opencord/device-management-i"
+  "nterface/v3/go/dmib\006proto3"
   ;
 ::google::protobuf::internal::DescriptorTable descriptor_table_dmi_2fhw_5fmanagement_5fservice_2eproto = {
   false, InitDefaults_dmi_2fhw_5fmanagement_5fservice_2eproto, 
   descriptor_table_protodef_dmi_2fhw_5fmanagement_5fservice_2eproto,
-  "dmi/hw_management_service.proto", &assign_descriptors_table_dmi_2fhw_5fmanagement_5fservice_2eproto, 5749,
+  "dmi/hw_management_service.proto", &assign_descriptors_table_dmi_2fhw_5fmanagement_5fservice_2eproto, 6386,
 };
 
 void AddDescriptors_dmi_2fhw_5fmanagement_5fservice_2eproto() {
@@ -1239,10 +1367,54 @@
 const GetLogLevelResponse_Reason GetLogLevelResponse::Reason_MAX;
 const int GetLogLevelResponse::Reason_ARRAYSIZE;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
-const ::google::protobuf::EnumDescriptor* RebootDeviceResponse_Reason_descriptor() {
+const ::google::protobuf::EnumDescriptor* SetDmLogLevelResponse_Reason_descriptor() {
   ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_dmi_2fhw_5fmanagement_5fservice_2eproto);
   return file_level_enum_descriptors_dmi_2fhw_5fmanagement_5fservice_2eproto[11];
 }
+bool SetDmLogLevelResponse_Reason_IsValid(int value) {
+  switch (value) {
+    case 0:
+    case 1:
+    case 2:
+      return true;
+    default:
+      return false;
+  }
+}
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const SetDmLogLevelResponse_Reason SetDmLogLevelResponse::UNDEFINED_REASON;
+const SetDmLogLevelResponse_Reason SetDmLogLevelResponse::INTERNAL_ERROR;
+const SetDmLogLevelResponse_Reason SetDmLogLevelResponse::UNKNOWN_LOG_LEVEL;
+const SetDmLogLevelResponse_Reason SetDmLogLevelResponse::Reason_MIN;
+const SetDmLogLevelResponse_Reason SetDmLogLevelResponse::Reason_MAX;
+const int SetDmLogLevelResponse::Reason_ARRAYSIZE;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+const ::google::protobuf::EnumDescriptor* GetDmLogLevelResponse_Reason_descriptor() {
+  ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_dmi_2fhw_5fmanagement_5fservice_2eproto);
+  return file_level_enum_descriptors_dmi_2fhw_5fmanagement_5fservice_2eproto[12];
+}
+bool GetDmLogLevelResponse_Reason_IsValid(int value) {
+  switch (value) {
+    case 0:
+    case 1:
+      return true;
+    default:
+      return false;
+  }
+}
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const GetDmLogLevelResponse_Reason GetDmLogLevelResponse::UNDEFINED_REASON;
+const GetDmLogLevelResponse_Reason GetDmLogLevelResponse::INTERNAL_ERROR;
+const GetDmLogLevelResponse_Reason GetDmLogLevelResponse::Reason_MIN;
+const GetDmLogLevelResponse_Reason GetDmLogLevelResponse::Reason_MAX;
+const int GetDmLogLevelResponse::Reason_ARRAYSIZE;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+const ::google::protobuf::EnumDescriptor* RebootDeviceResponse_Reason_descriptor() {
+  ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_dmi_2fhw_5fmanagement_5fservice_2eproto);
+  return file_level_enum_descriptors_dmi_2fhw_5fmanagement_5fservice_2eproto[13];
+}
 bool RebootDeviceResponse_Reason_IsValid(int value) {
   switch (value) {
     case 0:
@@ -10255,6 +10427,1315 @@
 
 // ===================================================================
 
+void SetDmLogLevelRequest::InitAsDefaultInstance() {
+}
+class SetDmLogLevelRequest::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int SetDmLogLevelRequest::kLevelFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+SetDmLogLevelRequest::SetDmLogLevelRequest()
+  : ::google::protobuf::Message(), _internal_metadata_(nullptr) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:dmi.SetDmLogLevelRequest)
+}
+SetDmLogLevelRequest::SetDmLogLevelRequest(const SetDmLogLevelRequest& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(nullptr) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  level_ = from.level_;
+  // @@protoc_insertion_point(copy_constructor:dmi.SetDmLogLevelRequest)
+}
+
+void SetDmLogLevelRequest::SharedCtor() {
+  level_ = 0;
+}
+
+SetDmLogLevelRequest::~SetDmLogLevelRequest() {
+  // @@protoc_insertion_point(destructor:dmi.SetDmLogLevelRequest)
+  SharedDtor();
+}
+
+void SetDmLogLevelRequest::SharedDtor() {
+}
+
+void SetDmLogLevelRequest::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const SetDmLogLevelRequest& SetDmLogLevelRequest::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_SetDmLogLevelRequest_dmi_2fhw_5fmanagement_5fservice_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void SetDmLogLevelRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:dmi.SetDmLogLevelRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  level_ = 0;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* SetDmLogLevelRequest::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<SetDmLogLevelRequest*>(object);
+  ::google::protobuf::int32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::uint32 tag;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ptr = ::google::protobuf::io::Parse32(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // .dmi.LogLevel level = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val = ::google::protobuf::internal::ReadVarint(&ptr);
+        msg->set_level(static_cast<::dmi::LogLevel>(val));
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        break;
+      }
+      default: {
+      handle_unusual:
+        if ((tag & 7) == 4 || tag == 0) {
+          ctx->EndGroup(tag);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr);
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool SetDmLogLevelRequest::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:dmi.SetDmLogLevelRequest)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // .dmi.LogLevel level = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_level(static_cast< ::dmi::LogLevel >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:dmi.SetDmLogLevelRequest)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:dmi.SetDmLogLevelRequest)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void SetDmLogLevelRequest::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:dmi.SetDmLogLevelRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .dmi.LogLevel level = 1;
+  if (this->level() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      1, this->level(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:dmi.SetDmLogLevelRequest)
+}
+
+::google::protobuf::uint8* SetDmLogLevelRequest::InternalSerializeWithCachedSizesToArray(
+    ::google::protobuf::uint8* target) const {
+  // @@protoc_insertion_point(serialize_to_array_start:dmi.SetDmLogLevelRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .dmi.LogLevel level = 1;
+  if (this->level() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      1, this->level(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:dmi.SetDmLogLevelRequest)
+  return target;
+}
+
+size_t SetDmLogLevelRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:dmi.SetDmLogLevelRequest)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // .dmi.LogLevel level = 1;
+  if (this->level() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->level());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void SetDmLogLevelRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:dmi.SetDmLogLevelRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  const SetDmLogLevelRequest* source =
+      ::google::protobuf::DynamicCastToGenerated<SetDmLogLevelRequest>(
+          &from);
+  if (source == nullptr) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:dmi.SetDmLogLevelRequest)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:dmi.SetDmLogLevelRequest)
+    MergeFrom(*source);
+  }
+}
+
+void SetDmLogLevelRequest::MergeFrom(const SetDmLogLevelRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:dmi.SetDmLogLevelRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.level() != 0) {
+    set_level(from.level());
+  }
+}
+
+void SetDmLogLevelRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:dmi.SetDmLogLevelRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void SetDmLogLevelRequest::CopyFrom(const SetDmLogLevelRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:dmi.SetDmLogLevelRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool SetDmLogLevelRequest::IsInitialized() const {
+  return true;
+}
+
+void SetDmLogLevelRequest::Swap(SetDmLogLevelRequest* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void SetDmLogLevelRequest::InternalSwap(SetDmLogLevelRequest* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(level_, other->level_);
+}
+
+::google::protobuf::Metadata SetDmLogLevelRequest::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_dmi_2fhw_5fmanagement_5fservice_2eproto);
+  return ::file_level_metadata_dmi_2fhw_5fmanagement_5fservice_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void SetDmLogLevelResponse::InitAsDefaultInstance() {
+}
+class SetDmLogLevelResponse::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int SetDmLogLevelResponse::kStatusFieldNumber;
+const int SetDmLogLevelResponse::kReasonFieldNumber;
+const int SetDmLogLevelResponse::kReasonDetailFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+SetDmLogLevelResponse::SetDmLogLevelResponse()
+  : ::google::protobuf::Message(), _internal_metadata_(nullptr) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:dmi.SetDmLogLevelResponse)
+}
+SetDmLogLevelResponse::SetDmLogLevelResponse(const SetDmLogLevelResponse& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(nullptr) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  reason_detail_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.reason_detail().size() > 0) {
+    reason_detail_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.reason_detail_);
+  }
+  ::memcpy(&status_, &from.status_,
+    static_cast<size_t>(reinterpret_cast<char*>(&reason_) -
+    reinterpret_cast<char*>(&status_)) + sizeof(reason_));
+  // @@protoc_insertion_point(copy_constructor:dmi.SetDmLogLevelResponse)
+}
+
+void SetDmLogLevelResponse::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_SetDmLogLevelResponse_dmi_2fhw_5fmanagement_5fservice_2eproto.base);
+  reason_detail_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&status_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&reason_) -
+      reinterpret_cast<char*>(&status_)) + sizeof(reason_));
+}
+
+SetDmLogLevelResponse::~SetDmLogLevelResponse() {
+  // @@protoc_insertion_point(destructor:dmi.SetDmLogLevelResponse)
+  SharedDtor();
+}
+
+void SetDmLogLevelResponse::SharedDtor() {
+  reason_detail_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void SetDmLogLevelResponse::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const SetDmLogLevelResponse& SetDmLogLevelResponse::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_SetDmLogLevelResponse_dmi_2fhw_5fmanagement_5fservice_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void SetDmLogLevelResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:dmi.SetDmLogLevelResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  reason_detail_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&status_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&reason_) -
+      reinterpret_cast<char*>(&status_)) + sizeof(reason_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* SetDmLogLevelResponse::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<SetDmLogLevelResponse*>(object);
+  ::google::protobuf::int32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::uint32 tag;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ptr = ::google::protobuf::io::Parse32(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // .dmi.Status status = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val = ::google::protobuf::internal::ReadVarint(&ptr);
+        msg->set_status(static_cast<::dmi::Status>(val));
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        break;
+      }
+      // .dmi.SetDmLogLevelResponse.Reason reason = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val = ::google::protobuf::internal::ReadVarint(&ptr);
+        msg->set_reason(static_cast<::dmi::SetDmLogLevelResponse_Reason>(val));
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        break;
+      }
+      // string reason_detail = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 26) goto handle_unusual;
+        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("dmi.SetDmLogLevelResponse.reason_detail");
+        object = msg->mutable_reason_detail();
+        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
+          parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
+          goto string_till_end;
+        }
+        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
+        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
+        ptr += size;
+        break;
+      }
+      default: {
+      handle_unusual:
+        if ((tag & 7) == 4 || tag == 0) {
+          ctx->EndGroup(tag);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr);
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+string_till_end:
+  static_cast<::std::string*>(object)->clear();
+  static_cast<::std::string*>(object)->reserve(size);
+  goto len_delim_till_end;
+len_delim_till_end:
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                               {parser_till_end, object}, size);
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool SetDmLogLevelResponse::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:dmi.SetDmLogLevelResponse)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // .dmi.Status status = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_status(static_cast< ::dmi::Status >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .dmi.SetDmLogLevelResponse.Reason reason = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_reason(static_cast< ::dmi::SetDmLogLevelResponse_Reason >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string reason_detail = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (26 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_reason_detail()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->reason_detail().data(), static_cast<int>(this->reason_detail().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "dmi.SetDmLogLevelResponse.reason_detail"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:dmi.SetDmLogLevelResponse)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:dmi.SetDmLogLevelResponse)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void SetDmLogLevelResponse::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:dmi.SetDmLogLevelResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .dmi.Status status = 1;
+  if (this->status() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      1, this->status(), output);
+  }
+
+  // .dmi.SetDmLogLevelResponse.Reason reason = 2;
+  if (this->reason() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      2, this->reason(), output);
+  }
+
+  // string reason_detail = 3;
+  if (this->reason_detail().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->reason_detail().data(), static_cast<int>(this->reason_detail().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "dmi.SetDmLogLevelResponse.reason_detail");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      3, this->reason_detail(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:dmi.SetDmLogLevelResponse)
+}
+
+::google::protobuf::uint8* SetDmLogLevelResponse::InternalSerializeWithCachedSizesToArray(
+    ::google::protobuf::uint8* target) const {
+  // @@protoc_insertion_point(serialize_to_array_start:dmi.SetDmLogLevelResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .dmi.Status status = 1;
+  if (this->status() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      1, this->status(), target);
+  }
+
+  // .dmi.SetDmLogLevelResponse.Reason reason = 2;
+  if (this->reason() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      2, this->reason(), target);
+  }
+
+  // string reason_detail = 3;
+  if (this->reason_detail().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->reason_detail().data(), static_cast<int>(this->reason_detail().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "dmi.SetDmLogLevelResponse.reason_detail");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        3, this->reason_detail(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:dmi.SetDmLogLevelResponse)
+  return target;
+}
+
+size_t SetDmLogLevelResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:dmi.SetDmLogLevelResponse)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string reason_detail = 3;
+  if (this->reason_detail().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->reason_detail());
+  }
+
+  // .dmi.Status status = 1;
+  if (this->status() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->status());
+  }
+
+  // .dmi.SetDmLogLevelResponse.Reason reason = 2;
+  if (this->reason() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->reason());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void SetDmLogLevelResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:dmi.SetDmLogLevelResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  const SetDmLogLevelResponse* source =
+      ::google::protobuf::DynamicCastToGenerated<SetDmLogLevelResponse>(
+          &from);
+  if (source == nullptr) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:dmi.SetDmLogLevelResponse)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:dmi.SetDmLogLevelResponse)
+    MergeFrom(*source);
+  }
+}
+
+void SetDmLogLevelResponse::MergeFrom(const SetDmLogLevelResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:dmi.SetDmLogLevelResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.reason_detail().size() > 0) {
+
+    reason_detail_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.reason_detail_);
+  }
+  if (from.status() != 0) {
+    set_status(from.status());
+  }
+  if (from.reason() != 0) {
+    set_reason(from.reason());
+  }
+}
+
+void SetDmLogLevelResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:dmi.SetDmLogLevelResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void SetDmLogLevelResponse::CopyFrom(const SetDmLogLevelResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:dmi.SetDmLogLevelResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool SetDmLogLevelResponse::IsInitialized() const {
+  return true;
+}
+
+void SetDmLogLevelResponse::Swap(SetDmLogLevelResponse* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void SetDmLogLevelResponse::InternalSwap(SetDmLogLevelResponse* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  reason_detail_.Swap(&other->reason_detail_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(status_, other->status_);
+  swap(reason_, other->reason_);
+}
+
+::google::protobuf::Metadata SetDmLogLevelResponse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_dmi_2fhw_5fmanagement_5fservice_2eproto);
+  return ::file_level_metadata_dmi_2fhw_5fmanagement_5fservice_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void GetDmLogLevelRequest::InitAsDefaultInstance() {
+}
+class GetDmLogLevelRequest::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+GetDmLogLevelRequest::GetDmLogLevelRequest()
+  : ::google::protobuf::Message(), _internal_metadata_(nullptr) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:dmi.GetDmLogLevelRequest)
+}
+GetDmLogLevelRequest::GetDmLogLevelRequest(const GetDmLogLevelRequest& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(nullptr) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:dmi.GetDmLogLevelRequest)
+}
+
+void GetDmLogLevelRequest::SharedCtor() {
+}
+
+GetDmLogLevelRequest::~GetDmLogLevelRequest() {
+  // @@protoc_insertion_point(destructor:dmi.GetDmLogLevelRequest)
+  SharedDtor();
+}
+
+void GetDmLogLevelRequest::SharedDtor() {
+}
+
+void GetDmLogLevelRequest::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const GetDmLogLevelRequest& GetDmLogLevelRequest::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_GetDmLogLevelRequest_dmi_2fhw_5fmanagement_5fservice_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void GetDmLogLevelRequest::Clear() {
+// @@protoc_insertion_point(message_clear_start:dmi.GetDmLogLevelRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* GetDmLogLevelRequest::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<GetDmLogLevelRequest*>(object);
+  ::google::protobuf::int32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::uint32 tag;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ptr = ::google::protobuf::io::Parse32(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      default: {
+        if ((tag & 7) == 4 || tag == 0) {
+          ctx->EndGroup(tag);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr);
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool GetDmLogLevelRequest::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:dmi.GetDmLogLevelRequest)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+  handle_unusual:
+    if (tag == 0) {
+      goto success;
+    }
+    DO_(::google::protobuf::internal::WireFormat::SkipField(
+          input, tag, _internal_metadata_.mutable_unknown_fields()));
+  }
+success:
+  // @@protoc_insertion_point(parse_success:dmi.GetDmLogLevelRequest)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:dmi.GetDmLogLevelRequest)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void GetDmLogLevelRequest::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:dmi.GetDmLogLevelRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:dmi.GetDmLogLevelRequest)
+}
+
+::google::protobuf::uint8* GetDmLogLevelRequest::InternalSerializeWithCachedSizesToArray(
+    ::google::protobuf::uint8* target) const {
+  // @@protoc_insertion_point(serialize_to_array_start:dmi.GetDmLogLevelRequest)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:dmi.GetDmLogLevelRequest)
+  return target;
+}
+
+size_t GetDmLogLevelRequest::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:dmi.GetDmLogLevelRequest)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void GetDmLogLevelRequest::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:dmi.GetDmLogLevelRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  const GetDmLogLevelRequest* source =
+      ::google::protobuf::DynamicCastToGenerated<GetDmLogLevelRequest>(
+          &from);
+  if (source == nullptr) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:dmi.GetDmLogLevelRequest)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:dmi.GetDmLogLevelRequest)
+    MergeFrom(*source);
+  }
+}
+
+void GetDmLogLevelRequest::MergeFrom(const GetDmLogLevelRequest& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:dmi.GetDmLogLevelRequest)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+}
+
+void GetDmLogLevelRequest::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:dmi.GetDmLogLevelRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void GetDmLogLevelRequest::CopyFrom(const GetDmLogLevelRequest& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:dmi.GetDmLogLevelRequest)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool GetDmLogLevelRequest::IsInitialized() const {
+  return true;
+}
+
+void GetDmLogLevelRequest::Swap(GetDmLogLevelRequest* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void GetDmLogLevelRequest::InternalSwap(GetDmLogLevelRequest* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+}
+
+::google::protobuf::Metadata GetDmLogLevelRequest::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_dmi_2fhw_5fmanagement_5fservice_2eproto);
+  return ::file_level_metadata_dmi_2fhw_5fmanagement_5fservice_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
+void GetDmLogLevelResponse::InitAsDefaultInstance() {
+}
+class GetDmLogLevelResponse::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int GetDmLogLevelResponse::kLevelFieldNumber;
+const int GetDmLogLevelResponse::kStatusFieldNumber;
+const int GetDmLogLevelResponse::kReasonFieldNumber;
+const int GetDmLogLevelResponse::kReasonDetailFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+GetDmLogLevelResponse::GetDmLogLevelResponse()
+  : ::google::protobuf::Message(), _internal_metadata_(nullptr) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:dmi.GetDmLogLevelResponse)
+}
+GetDmLogLevelResponse::GetDmLogLevelResponse(const GetDmLogLevelResponse& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(nullptr) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  reason_detail_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.reason_detail().size() > 0) {
+    reason_detail_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.reason_detail_);
+  }
+  ::memcpy(&level_, &from.level_,
+    static_cast<size_t>(reinterpret_cast<char*>(&reason_) -
+    reinterpret_cast<char*>(&level_)) + sizeof(reason_));
+  // @@protoc_insertion_point(copy_constructor:dmi.GetDmLogLevelResponse)
+}
+
+void GetDmLogLevelResponse::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_GetDmLogLevelResponse_dmi_2fhw_5fmanagement_5fservice_2eproto.base);
+  reason_detail_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&level_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&reason_) -
+      reinterpret_cast<char*>(&level_)) + sizeof(reason_));
+}
+
+GetDmLogLevelResponse::~GetDmLogLevelResponse() {
+  // @@protoc_insertion_point(destructor:dmi.GetDmLogLevelResponse)
+  SharedDtor();
+}
+
+void GetDmLogLevelResponse::SharedDtor() {
+  reason_detail_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void GetDmLogLevelResponse::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const GetDmLogLevelResponse& GetDmLogLevelResponse::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_GetDmLogLevelResponse_dmi_2fhw_5fmanagement_5fservice_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void GetDmLogLevelResponse::Clear() {
+// @@protoc_insertion_point(message_clear_start:dmi.GetDmLogLevelResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  reason_detail_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&level_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&reason_) -
+      reinterpret_cast<char*>(&level_)) + sizeof(reason_));
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* GetDmLogLevelResponse::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<GetDmLogLevelResponse*>(object);
+  ::google::protobuf::int32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::uint32 tag;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ptr = ::google::protobuf::io::Parse32(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // .dmi.LogLevel level = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
+        ::google::protobuf::uint64 val = ::google::protobuf::internal::ReadVarint(&ptr);
+        msg->set_level(static_cast<::dmi::LogLevel>(val));
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        break;
+      }
+      // .dmi.Status status = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
+        ::google::protobuf::uint64 val = ::google::protobuf::internal::ReadVarint(&ptr);
+        msg->set_status(static_cast<::dmi::Status>(val));
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        break;
+      }
+      // .dmi.GetDmLogLevelResponse.Reason reason = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val = ::google::protobuf::internal::ReadVarint(&ptr);
+        msg->set_reason(static_cast<::dmi::GetDmLogLevelResponse_Reason>(val));
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        break;
+      }
+      // string reason_detail = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("dmi.GetDmLogLevelResponse.reason_detail");
+        object = msg->mutable_reason_detail();
+        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
+          parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
+          goto string_till_end;
+        }
+        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
+        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
+        ptr += size;
+        break;
+      }
+      default: {
+      handle_unusual:
+        if ((tag & 7) == 4 || tag == 0) {
+          ctx->EndGroup(tag);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr);
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+string_till_end:
+  static_cast<::std::string*>(object)->clear();
+  static_cast<::std::string*>(object)->reserve(size);
+  goto len_delim_till_end;
+len_delim_till_end:
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                               {parser_till_end, object}, size);
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool GetDmLogLevelResponse::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:dmi.GetDmLogLevelResponse)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // .dmi.LogLevel level = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (8 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_level(static_cast< ::dmi::LogLevel >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .dmi.Status status = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (16 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_status(static_cast< ::dmi::Status >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .dmi.GetDmLogLevelResponse.Reason reason = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_reason(static_cast< ::dmi::GetDmLogLevelResponse_Reason >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string reason_detail = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_reason_detail()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->reason_detail().data(), static_cast<int>(this->reason_detail().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "dmi.GetDmLogLevelResponse.reason_detail"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:dmi.GetDmLogLevelResponse)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:dmi.GetDmLogLevelResponse)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void GetDmLogLevelResponse::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:dmi.GetDmLogLevelResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .dmi.LogLevel level = 1;
+  if (this->level() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      1, this->level(), output);
+  }
+
+  // .dmi.Status status = 2;
+  if (this->status() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      2, this->status(), output);
+  }
+
+  // .dmi.GetDmLogLevelResponse.Reason reason = 3;
+  if (this->reason() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      3, this->reason(), output);
+  }
+
+  // string reason_detail = 4;
+  if (this->reason_detail().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->reason_detail().data(), static_cast<int>(this->reason_detail().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "dmi.GetDmLogLevelResponse.reason_detail");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      4, this->reason_detail(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:dmi.GetDmLogLevelResponse)
+}
+
+::google::protobuf::uint8* GetDmLogLevelResponse::InternalSerializeWithCachedSizesToArray(
+    ::google::protobuf::uint8* target) const {
+  // @@protoc_insertion_point(serialize_to_array_start:dmi.GetDmLogLevelResponse)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // .dmi.LogLevel level = 1;
+  if (this->level() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      1, this->level(), target);
+  }
+
+  // .dmi.Status status = 2;
+  if (this->status() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      2, this->status(), target);
+  }
+
+  // .dmi.GetDmLogLevelResponse.Reason reason = 3;
+  if (this->reason() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      3, this->reason(), target);
+  }
+
+  // string reason_detail = 4;
+  if (this->reason_detail().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->reason_detail().data(), static_cast<int>(this->reason_detail().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "dmi.GetDmLogLevelResponse.reason_detail");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        4, this->reason_detail(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:dmi.GetDmLogLevelResponse)
+  return target;
+}
+
+size_t GetDmLogLevelResponse::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:dmi.GetDmLogLevelResponse)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string reason_detail = 4;
+  if (this->reason_detail().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->reason_detail());
+  }
+
+  // .dmi.LogLevel level = 1;
+  if (this->level() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->level());
+  }
+
+  // .dmi.Status status = 2;
+  if (this->status() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->status());
+  }
+
+  // .dmi.GetDmLogLevelResponse.Reason reason = 3;
+  if (this->reason() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->reason());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void GetDmLogLevelResponse::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:dmi.GetDmLogLevelResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  const GetDmLogLevelResponse* source =
+      ::google::protobuf::DynamicCastToGenerated<GetDmLogLevelResponse>(
+          &from);
+  if (source == nullptr) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:dmi.GetDmLogLevelResponse)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:dmi.GetDmLogLevelResponse)
+    MergeFrom(*source);
+  }
+}
+
+void GetDmLogLevelResponse::MergeFrom(const GetDmLogLevelResponse& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:dmi.GetDmLogLevelResponse)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.reason_detail().size() > 0) {
+
+    reason_detail_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.reason_detail_);
+  }
+  if (from.level() != 0) {
+    set_level(from.level());
+  }
+  if (from.status() != 0) {
+    set_status(from.status());
+  }
+  if (from.reason() != 0) {
+    set_reason(from.reason());
+  }
+}
+
+void GetDmLogLevelResponse::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:dmi.GetDmLogLevelResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void GetDmLogLevelResponse::CopyFrom(const GetDmLogLevelResponse& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:dmi.GetDmLogLevelResponse)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool GetDmLogLevelResponse::IsInitialized() const {
+  return true;
+}
+
+void GetDmLogLevelResponse::Swap(GetDmLogLevelResponse* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void GetDmLogLevelResponse::InternalSwap(GetDmLogLevelResponse* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  reason_detail_.Swap(&other->reason_detail_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(level_, other->level_);
+  swap(status_, other->status_);
+  swap(reason_, other->reason_);
+}
+
+::google::protobuf::Metadata GetDmLogLevelResponse::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_dmi_2fhw_5fmanagement_5fservice_2eproto);
+  return ::file_level_metadata_dmi_2fhw_5fmanagement_5fservice_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
 void Heartbeat::InitAsDefaultInstance() {
 }
 class Heartbeat::HasBitSetters {
@@ -11270,6 +12751,18 @@
 template<> PROTOBUF_NOINLINE ::dmi::GetLoggableEntitiesRequest* Arena::CreateMaybeMessage< ::dmi::GetLoggableEntitiesRequest >(Arena* arena) {
   return Arena::CreateInternal< ::dmi::GetLoggableEntitiesRequest >(arena);
 }
+template<> PROTOBUF_NOINLINE ::dmi::SetDmLogLevelRequest* Arena::CreateMaybeMessage< ::dmi::SetDmLogLevelRequest >(Arena* arena) {
+  return Arena::CreateInternal< ::dmi::SetDmLogLevelRequest >(arena);
+}
+template<> PROTOBUF_NOINLINE ::dmi::SetDmLogLevelResponse* Arena::CreateMaybeMessage< ::dmi::SetDmLogLevelResponse >(Arena* arena) {
+  return Arena::CreateInternal< ::dmi::SetDmLogLevelResponse >(arena);
+}
+template<> PROTOBUF_NOINLINE ::dmi::GetDmLogLevelRequest* Arena::CreateMaybeMessage< ::dmi::GetDmLogLevelRequest >(Arena* arena) {
+  return Arena::CreateInternal< ::dmi::GetDmLogLevelRequest >(arena);
+}
+template<> PROTOBUF_NOINLINE ::dmi::GetDmLogLevelResponse* Arena::CreateMaybeMessage< ::dmi::GetDmLogLevelResponse >(Arena* arena) {
+  return Arena::CreateInternal< ::dmi::GetDmLogLevelResponse >(arena);
+}
 template<> PROTOBUF_NOINLINE ::dmi::Heartbeat* Arena::CreateMaybeMessage< ::dmi::Heartbeat >(Arena* arena) {
   return Arena::CreateInternal< ::dmi::Heartbeat >(arena);
 }
diff --git a/cpp/dmi/hw_management_service.pb.h b/cpp/dmi/hw_management_service.pb.h
index 57c82a7..7f502f3 100644
--- a/cpp/dmi/hw_management_service.pb.h
+++ b/cpp/dmi/hw_management_service.pb.h
@@ -45,7 +45,7 @@
     PROTOBUF_SECTION_VARIABLE(protodesc_cold);
   static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
     PROTOBUF_SECTION_VARIABLE(protodesc_cold);
-  static const ::google::protobuf::internal::ParseTable schema[25]
+  static const ::google::protobuf::internal::ParseTable schema[29]
     PROTOBUF_SECTION_VARIABLE(protodesc_cold);
   static const ::google::protobuf::internal::FieldMetadata field_metadata[];
   static const ::google::protobuf::internal::SerializationTable serialization_table[];
@@ -56,6 +56,12 @@
 class EntitiesLogLevel;
 class EntitiesLogLevelDefaultTypeInternal;
 extern EntitiesLogLevelDefaultTypeInternal _EntitiesLogLevel_default_instance_;
+class GetDmLogLevelRequest;
+class GetDmLogLevelRequestDefaultTypeInternal;
+extern GetDmLogLevelRequestDefaultTypeInternal _GetDmLogLevelRequest_default_instance_;
+class GetDmLogLevelResponse;
+class GetDmLogLevelResponseDefaultTypeInternal;
+extern GetDmLogLevelResponseDefaultTypeInternal _GetDmLogLevelResponse_default_instance_;
 class GetLogLevelRequest;
 class GetLogLevelRequestDefaultTypeInternal;
 extern GetLogLevelRequestDefaultTypeInternal _GetLogLevelRequest_default_instance_;
@@ -104,6 +110,12 @@
 class RebootDeviceResponse;
 class RebootDeviceResponseDefaultTypeInternal;
 extern RebootDeviceResponseDefaultTypeInternal _RebootDeviceResponse_default_instance_;
+class SetDmLogLevelRequest;
+class SetDmLogLevelRequestDefaultTypeInternal;
+extern SetDmLogLevelRequestDefaultTypeInternal _SetDmLogLevelRequest_default_instance_;
+class SetDmLogLevelResponse;
+class SetDmLogLevelResponseDefaultTypeInternal;
+extern SetDmLogLevelResponseDefaultTypeInternal _SetDmLogLevelResponse_default_instance_;
 class SetLogLevelRequest;
 class SetLogLevelRequestDefaultTypeInternal;
 extern SetLogLevelRequestDefaultTypeInternal _SetLogLevelRequest_default_instance_;
@@ -132,6 +144,8 @@
 namespace google {
 namespace protobuf {
 template<> ::dmi::EntitiesLogLevel* Arena::CreateMaybeMessage<::dmi::EntitiesLogLevel>(Arena*);
+template<> ::dmi::GetDmLogLevelRequest* Arena::CreateMaybeMessage<::dmi::GetDmLogLevelRequest>(Arena*);
+template<> ::dmi::GetDmLogLevelResponse* Arena::CreateMaybeMessage<::dmi::GetDmLogLevelResponse>(Arena*);
 template<> ::dmi::GetLogLevelRequest* Arena::CreateMaybeMessage<::dmi::GetLogLevelRequest>(Arena*);
 template<> ::dmi::GetLogLevelResponse* Arena::CreateMaybeMessage<::dmi::GetLogLevelResponse>(Arena*);
 template<> ::dmi::GetLoggableEntitiesRequest* Arena::CreateMaybeMessage<::dmi::GetLoggableEntitiesRequest>(Arena*);
@@ -148,6 +162,8 @@
 template<> ::dmi::PhysicalInventoryResponse* Arena::CreateMaybeMessage<::dmi::PhysicalInventoryResponse>(Arena*);
 template<> ::dmi::RebootDeviceRequest* Arena::CreateMaybeMessage<::dmi::RebootDeviceRequest>(Arena*);
 template<> ::dmi::RebootDeviceResponse* Arena::CreateMaybeMessage<::dmi::RebootDeviceResponse>(Arena*);
+template<> ::dmi::SetDmLogLevelRequest* Arena::CreateMaybeMessage<::dmi::SetDmLogLevelRequest>(Arena*);
+template<> ::dmi::SetDmLogLevelResponse* Arena::CreateMaybeMessage<::dmi::SetDmLogLevelResponse>(Arena*);
 template<> ::dmi::SetLogLevelRequest* Arena::CreateMaybeMessage<::dmi::SetLogLevelRequest>(Arena*);
 template<> ::dmi::SetLogLevelResponse* Arena::CreateMaybeMessage<::dmi::SetLogLevelResponse>(Arena*);
 template<> ::dmi::SetLoggingEndpointRequest* Arena::CreateMaybeMessage<::dmi::SetLoggingEndpointRequest>(Arena*);
@@ -421,6 +437,49 @@
   return ::google::protobuf::internal::ParseNamedEnum<GetLogLevelResponse_Reason>(
     GetLogLevelResponse_Reason_descriptor(), name, value);
 }
+enum SetDmLogLevelResponse_Reason {
+  SetDmLogLevelResponse_Reason_UNDEFINED_REASON = 0,
+  SetDmLogLevelResponse_Reason_INTERNAL_ERROR = 1,
+  SetDmLogLevelResponse_Reason_UNKNOWN_LOG_LEVEL = 2,
+  SetDmLogLevelResponse_Reason_SetDmLogLevelResponse_Reason_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::min(),
+  SetDmLogLevelResponse_Reason_SetDmLogLevelResponse_Reason_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::max()
+};
+bool SetDmLogLevelResponse_Reason_IsValid(int value);
+const SetDmLogLevelResponse_Reason SetDmLogLevelResponse_Reason_Reason_MIN = SetDmLogLevelResponse_Reason_UNDEFINED_REASON;
+const SetDmLogLevelResponse_Reason SetDmLogLevelResponse_Reason_Reason_MAX = SetDmLogLevelResponse_Reason_UNKNOWN_LOG_LEVEL;
+const int SetDmLogLevelResponse_Reason_Reason_ARRAYSIZE = SetDmLogLevelResponse_Reason_Reason_MAX + 1;
+
+const ::google::protobuf::EnumDescriptor* SetDmLogLevelResponse_Reason_descriptor();
+inline const ::std::string& SetDmLogLevelResponse_Reason_Name(SetDmLogLevelResponse_Reason value) {
+  return ::google::protobuf::internal::NameOfEnum(
+    SetDmLogLevelResponse_Reason_descriptor(), value);
+}
+inline bool SetDmLogLevelResponse_Reason_Parse(
+    const ::std::string& name, SetDmLogLevelResponse_Reason* value) {
+  return ::google::protobuf::internal::ParseNamedEnum<SetDmLogLevelResponse_Reason>(
+    SetDmLogLevelResponse_Reason_descriptor(), name, value);
+}
+enum GetDmLogLevelResponse_Reason {
+  GetDmLogLevelResponse_Reason_UNDEFINED_REASON = 0,
+  GetDmLogLevelResponse_Reason_INTERNAL_ERROR = 1,
+  GetDmLogLevelResponse_Reason_GetDmLogLevelResponse_Reason_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::min(),
+  GetDmLogLevelResponse_Reason_GetDmLogLevelResponse_Reason_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::max()
+};
+bool GetDmLogLevelResponse_Reason_IsValid(int value);
+const GetDmLogLevelResponse_Reason GetDmLogLevelResponse_Reason_Reason_MIN = GetDmLogLevelResponse_Reason_UNDEFINED_REASON;
+const GetDmLogLevelResponse_Reason GetDmLogLevelResponse_Reason_Reason_MAX = GetDmLogLevelResponse_Reason_INTERNAL_ERROR;
+const int GetDmLogLevelResponse_Reason_Reason_ARRAYSIZE = GetDmLogLevelResponse_Reason_Reason_MAX + 1;
+
+const ::google::protobuf::EnumDescriptor* GetDmLogLevelResponse_Reason_descriptor();
+inline const ::std::string& GetDmLogLevelResponse_Reason_Name(GetDmLogLevelResponse_Reason value) {
+  return ::google::protobuf::internal::NameOfEnum(
+    GetDmLogLevelResponse_Reason_descriptor(), value);
+}
+inline bool GetDmLogLevelResponse_Reason_Parse(
+    const ::std::string& name, GetDmLogLevelResponse_Reason* value) {
+  return ::google::protobuf::internal::ParseNamedEnum<GetDmLogLevelResponse_Reason>(
+    GetDmLogLevelResponse_Reason_descriptor(), name, value);
+}
 enum RebootDeviceResponse_Reason {
   RebootDeviceResponse_Reason_UNDEFINED_REASON = 0,
   RebootDeviceResponse_Reason_UNKNOWN_DEVICE = 1,
@@ -3804,6 +3863,552 @@
 };
 // -------------------------------------------------------------------
 
+class SetDmLogLevelRequest final :
+    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:dmi.SetDmLogLevelRequest) */ {
+ public:
+  SetDmLogLevelRequest();
+  virtual ~SetDmLogLevelRequest();
+
+  SetDmLogLevelRequest(const SetDmLogLevelRequest& from);
+
+  inline SetDmLogLevelRequest& operator=(const SetDmLogLevelRequest& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  SetDmLogLevelRequest(SetDmLogLevelRequest&& from) noexcept
+    : SetDmLogLevelRequest() {
+    *this = ::std::move(from);
+  }
+
+  inline SetDmLogLevelRequest& operator=(SetDmLogLevelRequest&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const SetDmLogLevelRequest& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const SetDmLogLevelRequest* internal_default_instance() {
+    return reinterpret_cast<const SetDmLogLevelRequest*>(
+               &_SetDmLogLevelRequest_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    22;
+
+  void Swap(SetDmLogLevelRequest* other);
+  friend void swap(SetDmLogLevelRequest& a, SetDmLogLevelRequest& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline SetDmLogLevelRequest* New() const final {
+    return CreateMaybeMessage<SetDmLogLevelRequest>(nullptr);
+  }
+
+  SetDmLogLevelRequest* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<SetDmLogLevelRequest>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const SetDmLogLevelRequest& from);
+  void MergeFrom(const SetDmLogLevelRequest& from);
+  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(SetDmLogLevelRequest* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return nullptr;
+  }
+  inline void* MaybeArenaPtr() const {
+    return nullptr;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // .dmi.LogLevel level = 1;
+  void clear_level();
+  static const int kLevelFieldNumber = 1;
+  ::dmi::LogLevel level() const;
+  void set_level(::dmi::LogLevel value);
+
+  // @@protoc_insertion_point(class_scope:dmi.SetDmLogLevelRequest)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  int level_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_dmi_2fhw_5fmanagement_5fservice_2eproto;
+};
+// -------------------------------------------------------------------
+
+class SetDmLogLevelResponse final :
+    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:dmi.SetDmLogLevelResponse) */ {
+ public:
+  SetDmLogLevelResponse();
+  virtual ~SetDmLogLevelResponse();
+
+  SetDmLogLevelResponse(const SetDmLogLevelResponse& from);
+
+  inline SetDmLogLevelResponse& operator=(const SetDmLogLevelResponse& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  SetDmLogLevelResponse(SetDmLogLevelResponse&& from) noexcept
+    : SetDmLogLevelResponse() {
+    *this = ::std::move(from);
+  }
+
+  inline SetDmLogLevelResponse& operator=(SetDmLogLevelResponse&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const SetDmLogLevelResponse& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const SetDmLogLevelResponse* internal_default_instance() {
+    return reinterpret_cast<const SetDmLogLevelResponse*>(
+               &_SetDmLogLevelResponse_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    23;
+
+  void Swap(SetDmLogLevelResponse* other);
+  friend void swap(SetDmLogLevelResponse& a, SetDmLogLevelResponse& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline SetDmLogLevelResponse* New() const final {
+    return CreateMaybeMessage<SetDmLogLevelResponse>(nullptr);
+  }
+
+  SetDmLogLevelResponse* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<SetDmLogLevelResponse>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const SetDmLogLevelResponse& from);
+  void MergeFrom(const SetDmLogLevelResponse& from);
+  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(SetDmLogLevelResponse* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return nullptr;
+  }
+  inline void* MaybeArenaPtr() const {
+    return nullptr;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  typedef SetDmLogLevelResponse_Reason Reason;
+  static const Reason UNDEFINED_REASON =
+    SetDmLogLevelResponse_Reason_UNDEFINED_REASON;
+  static const Reason INTERNAL_ERROR =
+    SetDmLogLevelResponse_Reason_INTERNAL_ERROR;
+  static const Reason UNKNOWN_LOG_LEVEL =
+    SetDmLogLevelResponse_Reason_UNKNOWN_LOG_LEVEL;
+  static inline bool Reason_IsValid(int value) {
+    return SetDmLogLevelResponse_Reason_IsValid(value);
+  }
+  static const Reason Reason_MIN =
+    SetDmLogLevelResponse_Reason_Reason_MIN;
+  static const Reason Reason_MAX =
+    SetDmLogLevelResponse_Reason_Reason_MAX;
+  static const int Reason_ARRAYSIZE =
+    SetDmLogLevelResponse_Reason_Reason_ARRAYSIZE;
+  static inline const ::google::protobuf::EnumDescriptor*
+  Reason_descriptor() {
+    return SetDmLogLevelResponse_Reason_descriptor();
+  }
+  static inline const ::std::string& Reason_Name(Reason value) {
+    return SetDmLogLevelResponse_Reason_Name(value);
+  }
+  static inline bool Reason_Parse(const ::std::string& name,
+      Reason* value) {
+    return SetDmLogLevelResponse_Reason_Parse(name, value);
+  }
+
+  // accessors -------------------------------------------------------
+
+  // string reason_detail = 3;
+  void clear_reason_detail();
+  static const int kReasonDetailFieldNumber = 3;
+  const ::std::string& reason_detail() const;
+  void set_reason_detail(const ::std::string& value);
+  #if LANG_CXX11
+  void set_reason_detail(::std::string&& value);
+  #endif
+  void set_reason_detail(const char* value);
+  void set_reason_detail(const char* value, size_t size);
+  ::std::string* mutable_reason_detail();
+  ::std::string* release_reason_detail();
+  void set_allocated_reason_detail(::std::string* reason_detail);
+
+  // .dmi.Status status = 1;
+  void clear_status();
+  static const int kStatusFieldNumber = 1;
+  ::dmi::Status status() const;
+  void set_status(::dmi::Status value);
+
+  // .dmi.SetDmLogLevelResponse.Reason reason = 2;
+  void clear_reason();
+  static const int kReasonFieldNumber = 2;
+  ::dmi::SetDmLogLevelResponse_Reason reason() const;
+  void set_reason(::dmi::SetDmLogLevelResponse_Reason value);
+
+  // @@protoc_insertion_point(class_scope:dmi.SetDmLogLevelResponse)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  ::google::protobuf::internal::ArenaStringPtr reason_detail_;
+  int status_;
+  int reason_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_dmi_2fhw_5fmanagement_5fservice_2eproto;
+};
+// -------------------------------------------------------------------
+
+class GetDmLogLevelRequest final :
+    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:dmi.GetDmLogLevelRequest) */ {
+ public:
+  GetDmLogLevelRequest();
+  virtual ~GetDmLogLevelRequest();
+
+  GetDmLogLevelRequest(const GetDmLogLevelRequest& from);
+
+  inline GetDmLogLevelRequest& operator=(const GetDmLogLevelRequest& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  GetDmLogLevelRequest(GetDmLogLevelRequest&& from) noexcept
+    : GetDmLogLevelRequest() {
+    *this = ::std::move(from);
+  }
+
+  inline GetDmLogLevelRequest& operator=(GetDmLogLevelRequest&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const GetDmLogLevelRequest& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const GetDmLogLevelRequest* internal_default_instance() {
+    return reinterpret_cast<const GetDmLogLevelRequest*>(
+               &_GetDmLogLevelRequest_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    24;
+
+  void Swap(GetDmLogLevelRequest* other);
+  friend void swap(GetDmLogLevelRequest& a, GetDmLogLevelRequest& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline GetDmLogLevelRequest* New() const final {
+    return CreateMaybeMessage<GetDmLogLevelRequest>(nullptr);
+  }
+
+  GetDmLogLevelRequest* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<GetDmLogLevelRequest>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const GetDmLogLevelRequest& from);
+  void MergeFrom(const GetDmLogLevelRequest& from);
+  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(GetDmLogLevelRequest* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return nullptr;
+  }
+  inline void* MaybeArenaPtr() const {
+    return nullptr;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // @@protoc_insertion_point(class_scope:dmi.GetDmLogLevelRequest)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_dmi_2fhw_5fmanagement_5fservice_2eproto;
+};
+// -------------------------------------------------------------------
+
+class GetDmLogLevelResponse final :
+    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:dmi.GetDmLogLevelResponse) */ {
+ public:
+  GetDmLogLevelResponse();
+  virtual ~GetDmLogLevelResponse();
+
+  GetDmLogLevelResponse(const GetDmLogLevelResponse& from);
+
+  inline GetDmLogLevelResponse& operator=(const GetDmLogLevelResponse& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  GetDmLogLevelResponse(GetDmLogLevelResponse&& from) noexcept
+    : GetDmLogLevelResponse() {
+    *this = ::std::move(from);
+  }
+
+  inline GetDmLogLevelResponse& operator=(GetDmLogLevelResponse&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const GetDmLogLevelResponse& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const GetDmLogLevelResponse* internal_default_instance() {
+    return reinterpret_cast<const GetDmLogLevelResponse*>(
+               &_GetDmLogLevelResponse_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    25;
+
+  void Swap(GetDmLogLevelResponse* other);
+  friend void swap(GetDmLogLevelResponse& a, GetDmLogLevelResponse& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline GetDmLogLevelResponse* New() const final {
+    return CreateMaybeMessage<GetDmLogLevelResponse>(nullptr);
+  }
+
+  GetDmLogLevelResponse* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<GetDmLogLevelResponse>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const GetDmLogLevelResponse& from);
+  void MergeFrom(const GetDmLogLevelResponse& from);
+  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(GetDmLogLevelResponse* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return nullptr;
+  }
+  inline void* MaybeArenaPtr() const {
+    return nullptr;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  typedef GetDmLogLevelResponse_Reason Reason;
+  static const Reason UNDEFINED_REASON =
+    GetDmLogLevelResponse_Reason_UNDEFINED_REASON;
+  static const Reason INTERNAL_ERROR =
+    GetDmLogLevelResponse_Reason_INTERNAL_ERROR;
+  static inline bool Reason_IsValid(int value) {
+    return GetDmLogLevelResponse_Reason_IsValid(value);
+  }
+  static const Reason Reason_MIN =
+    GetDmLogLevelResponse_Reason_Reason_MIN;
+  static const Reason Reason_MAX =
+    GetDmLogLevelResponse_Reason_Reason_MAX;
+  static const int Reason_ARRAYSIZE =
+    GetDmLogLevelResponse_Reason_Reason_ARRAYSIZE;
+  static inline const ::google::protobuf::EnumDescriptor*
+  Reason_descriptor() {
+    return GetDmLogLevelResponse_Reason_descriptor();
+  }
+  static inline const ::std::string& Reason_Name(Reason value) {
+    return GetDmLogLevelResponse_Reason_Name(value);
+  }
+  static inline bool Reason_Parse(const ::std::string& name,
+      Reason* value) {
+    return GetDmLogLevelResponse_Reason_Parse(name, value);
+  }
+
+  // accessors -------------------------------------------------------
+
+  // string reason_detail = 4;
+  void clear_reason_detail();
+  static const int kReasonDetailFieldNumber = 4;
+  const ::std::string& reason_detail() const;
+  void set_reason_detail(const ::std::string& value);
+  #if LANG_CXX11
+  void set_reason_detail(::std::string&& value);
+  #endif
+  void set_reason_detail(const char* value);
+  void set_reason_detail(const char* value, size_t size);
+  ::std::string* mutable_reason_detail();
+  ::std::string* release_reason_detail();
+  void set_allocated_reason_detail(::std::string* reason_detail);
+
+  // .dmi.LogLevel level = 1;
+  void clear_level();
+  static const int kLevelFieldNumber = 1;
+  ::dmi::LogLevel level() const;
+  void set_level(::dmi::LogLevel value);
+
+  // .dmi.Status status = 2;
+  void clear_status();
+  static const int kStatusFieldNumber = 2;
+  ::dmi::Status status() const;
+  void set_status(::dmi::Status value);
+
+  // .dmi.GetDmLogLevelResponse.Reason reason = 3;
+  void clear_reason();
+  static const int kReasonFieldNumber = 3;
+  ::dmi::GetDmLogLevelResponse_Reason reason() const;
+  void set_reason(::dmi::GetDmLogLevelResponse_Reason value);
+
+  // @@protoc_insertion_point(class_scope:dmi.GetDmLogLevelResponse)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  ::google::protobuf::internal::ArenaStringPtr reason_detail_;
+  int level_;
+  int status_;
+  int reason_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_dmi_2fhw_5fmanagement_5fservice_2eproto;
+};
+// -------------------------------------------------------------------
+
 class Heartbeat final :
     public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:dmi.Heartbeat) */ {
  public:
@@ -3842,7 +4447,7 @@
                &_Heartbeat_default_instance_);
   }
   static constexpr int kIndexInFileMessages =
-    22;
+    26;
 
   void Swap(Heartbeat* other);
   friend void swap(Heartbeat& a, Heartbeat& b) {
@@ -3954,7 +4559,7 @@
                &_RebootDeviceRequest_default_instance_);
   }
   static constexpr int kIndexInFileMessages =
-    23;
+    27;
 
   void Swap(RebootDeviceRequest* other);
   friend void swap(RebootDeviceRequest& a, RebootDeviceRequest& b) {
@@ -4069,7 +4674,7 @@
                &_RebootDeviceResponse_default_instance_);
   }
   static constexpr int kIndexInFileMessages =
-    24;
+    28;
 
   void Swap(RebootDeviceResponse* other);
   friend void swap(RebootDeviceResponse& a, RebootDeviceResponse& b) {
@@ -6614,6 +7219,212 @@
 
 // -------------------------------------------------------------------
 
+// SetDmLogLevelRequest
+
+// .dmi.LogLevel level = 1;
+inline void SetDmLogLevelRequest::clear_level() {
+  level_ = 0;
+}
+inline ::dmi::LogLevel SetDmLogLevelRequest::level() const {
+  // @@protoc_insertion_point(field_get:dmi.SetDmLogLevelRequest.level)
+  return static_cast< ::dmi::LogLevel >(level_);
+}
+inline void SetDmLogLevelRequest::set_level(::dmi::LogLevel value) {
+  
+  level_ = value;
+  // @@protoc_insertion_point(field_set:dmi.SetDmLogLevelRequest.level)
+}
+
+// -------------------------------------------------------------------
+
+// SetDmLogLevelResponse
+
+// .dmi.Status status = 1;
+inline void SetDmLogLevelResponse::clear_status() {
+  status_ = 0;
+}
+inline ::dmi::Status SetDmLogLevelResponse::status() const {
+  // @@protoc_insertion_point(field_get:dmi.SetDmLogLevelResponse.status)
+  return static_cast< ::dmi::Status >(status_);
+}
+inline void SetDmLogLevelResponse::set_status(::dmi::Status value) {
+  
+  status_ = value;
+  // @@protoc_insertion_point(field_set:dmi.SetDmLogLevelResponse.status)
+}
+
+// .dmi.SetDmLogLevelResponse.Reason reason = 2;
+inline void SetDmLogLevelResponse::clear_reason() {
+  reason_ = 0;
+}
+inline ::dmi::SetDmLogLevelResponse_Reason SetDmLogLevelResponse::reason() const {
+  // @@protoc_insertion_point(field_get:dmi.SetDmLogLevelResponse.reason)
+  return static_cast< ::dmi::SetDmLogLevelResponse_Reason >(reason_);
+}
+inline void SetDmLogLevelResponse::set_reason(::dmi::SetDmLogLevelResponse_Reason value) {
+  
+  reason_ = value;
+  // @@protoc_insertion_point(field_set:dmi.SetDmLogLevelResponse.reason)
+}
+
+// string reason_detail = 3;
+inline void SetDmLogLevelResponse::clear_reason_detail() {
+  reason_detail_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline const ::std::string& SetDmLogLevelResponse::reason_detail() const {
+  // @@protoc_insertion_point(field_get:dmi.SetDmLogLevelResponse.reason_detail)
+  return reason_detail_.GetNoArena();
+}
+inline void SetDmLogLevelResponse::set_reason_detail(const ::std::string& value) {
+  
+  reason_detail_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
+  // @@protoc_insertion_point(field_set:dmi.SetDmLogLevelResponse.reason_detail)
+}
+#if LANG_CXX11
+inline void SetDmLogLevelResponse::set_reason_detail(::std::string&& value) {
+  
+  reason_detail_.SetNoArena(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+  // @@protoc_insertion_point(field_set_rvalue:dmi.SetDmLogLevelResponse.reason_detail)
+}
+#endif
+inline void SetDmLogLevelResponse::set_reason_detail(const char* value) {
+  GOOGLE_DCHECK(value != nullptr);
+  
+  reason_detail_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+  // @@protoc_insertion_point(field_set_char:dmi.SetDmLogLevelResponse.reason_detail)
+}
+inline void SetDmLogLevelResponse::set_reason_detail(const char* value, size_t size) {
+  
+  reason_detail_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      ::std::string(reinterpret_cast<const char*>(value), size));
+  // @@protoc_insertion_point(field_set_pointer:dmi.SetDmLogLevelResponse.reason_detail)
+}
+inline ::std::string* SetDmLogLevelResponse::mutable_reason_detail() {
+  
+  // @@protoc_insertion_point(field_mutable:dmi.SetDmLogLevelResponse.reason_detail)
+  return reason_detail_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline ::std::string* SetDmLogLevelResponse::release_reason_detail() {
+  // @@protoc_insertion_point(field_release:dmi.SetDmLogLevelResponse.reason_detail)
+  
+  return reason_detail_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline void SetDmLogLevelResponse::set_allocated_reason_detail(::std::string* reason_detail) {
+  if (reason_detail != nullptr) {
+    
+  } else {
+    
+  }
+  reason_detail_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), reason_detail);
+  // @@protoc_insertion_point(field_set_allocated:dmi.SetDmLogLevelResponse.reason_detail)
+}
+
+// -------------------------------------------------------------------
+
+// GetDmLogLevelRequest
+
+// -------------------------------------------------------------------
+
+// GetDmLogLevelResponse
+
+// .dmi.LogLevel level = 1;
+inline void GetDmLogLevelResponse::clear_level() {
+  level_ = 0;
+}
+inline ::dmi::LogLevel GetDmLogLevelResponse::level() const {
+  // @@protoc_insertion_point(field_get:dmi.GetDmLogLevelResponse.level)
+  return static_cast< ::dmi::LogLevel >(level_);
+}
+inline void GetDmLogLevelResponse::set_level(::dmi::LogLevel value) {
+  
+  level_ = value;
+  // @@protoc_insertion_point(field_set:dmi.GetDmLogLevelResponse.level)
+}
+
+// .dmi.Status status = 2;
+inline void GetDmLogLevelResponse::clear_status() {
+  status_ = 0;
+}
+inline ::dmi::Status GetDmLogLevelResponse::status() const {
+  // @@protoc_insertion_point(field_get:dmi.GetDmLogLevelResponse.status)
+  return static_cast< ::dmi::Status >(status_);
+}
+inline void GetDmLogLevelResponse::set_status(::dmi::Status value) {
+  
+  status_ = value;
+  // @@protoc_insertion_point(field_set:dmi.GetDmLogLevelResponse.status)
+}
+
+// .dmi.GetDmLogLevelResponse.Reason reason = 3;
+inline void GetDmLogLevelResponse::clear_reason() {
+  reason_ = 0;
+}
+inline ::dmi::GetDmLogLevelResponse_Reason GetDmLogLevelResponse::reason() const {
+  // @@protoc_insertion_point(field_get:dmi.GetDmLogLevelResponse.reason)
+  return static_cast< ::dmi::GetDmLogLevelResponse_Reason >(reason_);
+}
+inline void GetDmLogLevelResponse::set_reason(::dmi::GetDmLogLevelResponse_Reason value) {
+  
+  reason_ = value;
+  // @@protoc_insertion_point(field_set:dmi.GetDmLogLevelResponse.reason)
+}
+
+// string reason_detail = 4;
+inline void GetDmLogLevelResponse::clear_reason_detail() {
+  reason_detail_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline const ::std::string& GetDmLogLevelResponse::reason_detail() const {
+  // @@protoc_insertion_point(field_get:dmi.GetDmLogLevelResponse.reason_detail)
+  return reason_detail_.GetNoArena();
+}
+inline void GetDmLogLevelResponse::set_reason_detail(const ::std::string& value) {
+  
+  reason_detail_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
+  // @@protoc_insertion_point(field_set:dmi.GetDmLogLevelResponse.reason_detail)
+}
+#if LANG_CXX11
+inline void GetDmLogLevelResponse::set_reason_detail(::std::string&& value) {
+  
+  reason_detail_.SetNoArena(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+  // @@protoc_insertion_point(field_set_rvalue:dmi.GetDmLogLevelResponse.reason_detail)
+}
+#endif
+inline void GetDmLogLevelResponse::set_reason_detail(const char* value) {
+  GOOGLE_DCHECK(value != nullptr);
+  
+  reason_detail_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+  // @@protoc_insertion_point(field_set_char:dmi.GetDmLogLevelResponse.reason_detail)
+}
+inline void GetDmLogLevelResponse::set_reason_detail(const char* value, size_t size) {
+  
+  reason_detail_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      ::std::string(reinterpret_cast<const char*>(value), size));
+  // @@protoc_insertion_point(field_set_pointer:dmi.GetDmLogLevelResponse.reason_detail)
+}
+inline ::std::string* GetDmLogLevelResponse::mutable_reason_detail() {
+  
+  // @@protoc_insertion_point(field_mutable:dmi.GetDmLogLevelResponse.reason_detail)
+  return reason_detail_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline ::std::string* GetDmLogLevelResponse::release_reason_detail() {
+  // @@protoc_insertion_point(field_release:dmi.GetDmLogLevelResponse.reason_detail)
+  
+  return reason_detail_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline void GetDmLogLevelResponse::set_allocated_reason_detail(::std::string* reason_detail) {
+  if (reason_detail != nullptr) {
+    
+  } else {
+    
+  }
+  reason_detail_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), reason_detail);
+  // @@protoc_insertion_point(field_set_allocated:dmi.GetDmLogLevelResponse.reason_detail)
+}
+
+// -------------------------------------------------------------------
+
 // Heartbeat
 
 // fixed32 heartbeat_signature = 1;
@@ -6815,6 +7626,14 @@
 
 // -------------------------------------------------------------------
 
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
+// -------------------------------------------------------------------
+
 
 // @@protoc_insertion_point(namespace_scope)
 
@@ -6878,6 +7697,16 @@
 inline const EnumDescriptor* GetEnumDescriptor< ::dmi::GetLogLevelResponse_Reason>() {
   return ::dmi::GetLogLevelResponse_Reason_descriptor();
 }
+template <> struct is_proto_enum< ::dmi::SetDmLogLevelResponse_Reason> : ::std::true_type {};
+template <>
+inline const EnumDescriptor* GetEnumDescriptor< ::dmi::SetDmLogLevelResponse_Reason>() {
+  return ::dmi::SetDmLogLevelResponse_Reason_descriptor();
+}
+template <> struct is_proto_enum< ::dmi::GetDmLogLevelResponse_Reason> : ::std::true_type {};
+template <>
+inline const EnumDescriptor* GetEnumDescriptor< ::dmi::GetDmLogLevelResponse_Reason>() {
+  return ::dmi::GetDmLogLevelResponse_Reason_descriptor();
+}
 template <> struct is_proto_enum< ::dmi::RebootDeviceResponse_Reason> : ::std::true_type {};
 template <>
 inline const EnumDescriptor* GetEnumDescriptor< ::dmi::RebootDeviceResponse_Reason>() {
diff --git a/dmi.pb b/dmi.pb
index e4f5649..9c55fa9 100644
--- a/dmi.pb
+++ b/dmi.pb
Binary files differ
diff --git a/go/dmi/hw_management_service.pb.go b/go/dmi/hw_management_service.pb.go
index 23af8d7..783cbac 100644
--- a/go/dmi/hw_management_service.pb.go
+++ b/go/dmi/hw_management_service.pb.go
@@ -401,6 +401,59 @@
 	return fileDescriptor_eae902e73066286d, []int{20, 0}
 }
 
+type SetDmLogLevelResponse_Reason int32
+
+const (
+	SetDmLogLevelResponse_UNDEFINED_REASON  SetDmLogLevelResponse_Reason = 0
+	SetDmLogLevelResponse_INTERNAL_ERROR    SetDmLogLevelResponse_Reason = 1
+	SetDmLogLevelResponse_UNKNOWN_LOG_LEVEL SetDmLogLevelResponse_Reason = 2
+)
+
+var SetDmLogLevelResponse_Reason_name = map[int32]string{
+	0: "UNDEFINED_REASON",
+	1: "INTERNAL_ERROR",
+	2: "UNKNOWN_LOG_LEVEL",
+}
+
+var SetDmLogLevelResponse_Reason_value = map[string]int32{
+	"UNDEFINED_REASON":  0,
+	"INTERNAL_ERROR":    1,
+	"UNKNOWN_LOG_LEVEL": 2,
+}
+
+func (x SetDmLogLevelResponse_Reason) String() string {
+	return proto.EnumName(SetDmLogLevelResponse_Reason_name, int32(x))
+}
+
+func (SetDmLogLevelResponse_Reason) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_eae902e73066286d, []int{23, 0}
+}
+
+type GetDmLogLevelResponse_Reason int32
+
+const (
+	GetDmLogLevelResponse_UNDEFINED_REASON GetDmLogLevelResponse_Reason = 0
+	GetDmLogLevelResponse_INTERNAL_ERROR   GetDmLogLevelResponse_Reason = 1
+)
+
+var GetDmLogLevelResponse_Reason_name = map[int32]string{
+	0: "UNDEFINED_REASON",
+	1: "INTERNAL_ERROR",
+}
+
+var GetDmLogLevelResponse_Reason_value = map[string]int32{
+	"UNDEFINED_REASON": 0,
+	"INTERNAL_ERROR":   1,
+}
+
+func (x GetDmLogLevelResponse_Reason) String() string {
+	return proto.EnumName(GetDmLogLevelResponse_Reason_name, int32(x))
+}
+
+func (GetDmLogLevelResponse_Reason) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_eae902e73066286d, []int{25, 0}
+}
+
 type RebootDeviceResponse_Reason int32
 
 const (
@@ -432,7 +485,7 @@
 }
 
 func (RebootDeviceResponse_Reason) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_eae902e73066286d, []int{24, 0}
+	return fileDescriptor_eae902e73066286d, []int{28, 0}
 }
 
 type PhysicalInventoryRequest struct {
@@ -1632,6 +1685,194 @@
 	return nil
 }
 
+type SetDmLogLevelRequest struct {
+	Level                LogLevel `protobuf:"varint,1,opt,name=level,proto3,enum=dmi.LogLevel" json:"level,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *SetDmLogLevelRequest) Reset()         { *m = SetDmLogLevelRequest{} }
+func (m *SetDmLogLevelRequest) String() string { return proto.CompactTextString(m) }
+func (*SetDmLogLevelRequest) ProtoMessage()    {}
+func (*SetDmLogLevelRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_eae902e73066286d, []int{22}
+}
+
+func (m *SetDmLogLevelRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SetDmLogLevelRequest.Unmarshal(m, b)
+}
+func (m *SetDmLogLevelRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SetDmLogLevelRequest.Marshal(b, m, deterministic)
+}
+func (m *SetDmLogLevelRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SetDmLogLevelRequest.Merge(m, src)
+}
+func (m *SetDmLogLevelRequest) XXX_Size() int {
+	return xxx_messageInfo_SetDmLogLevelRequest.Size(m)
+}
+func (m *SetDmLogLevelRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_SetDmLogLevelRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SetDmLogLevelRequest proto.InternalMessageInfo
+
+func (m *SetDmLogLevelRequest) GetLevel() LogLevel {
+	if m != nil {
+		return m.Level
+	}
+	return LogLevel_TRACE
+}
+
+type SetDmLogLevelResponse struct {
+	Status               Status                       `protobuf:"varint,1,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
+	Reason               SetDmLogLevelResponse_Reason `protobuf:"varint,2,opt,name=reason,proto3,enum=dmi.SetDmLogLevelResponse_Reason" json:"reason,omitempty"`
+	ReasonDetail         string                       `protobuf:"bytes,3,opt,name=reason_detail,json=reasonDetail,proto3" json:"reason_detail,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                     `json:"-"`
+	XXX_unrecognized     []byte                       `json:"-"`
+	XXX_sizecache        int32                        `json:"-"`
+}
+
+func (m *SetDmLogLevelResponse) Reset()         { *m = SetDmLogLevelResponse{} }
+func (m *SetDmLogLevelResponse) String() string { return proto.CompactTextString(m) }
+func (*SetDmLogLevelResponse) ProtoMessage()    {}
+func (*SetDmLogLevelResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_eae902e73066286d, []int{23}
+}
+
+func (m *SetDmLogLevelResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SetDmLogLevelResponse.Unmarshal(m, b)
+}
+func (m *SetDmLogLevelResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SetDmLogLevelResponse.Marshal(b, m, deterministic)
+}
+func (m *SetDmLogLevelResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SetDmLogLevelResponse.Merge(m, src)
+}
+func (m *SetDmLogLevelResponse) XXX_Size() int {
+	return xxx_messageInfo_SetDmLogLevelResponse.Size(m)
+}
+func (m *SetDmLogLevelResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_SetDmLogLevelResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SetDmLogLevelResponse proto.InternalMessageInfo
+
+func (m *SetDmLogLevelResponse) GetStatus() Status {
+	if m != nil {
+		return m.Status
+	}
+	return Status_UNDEFINED_STATUS
+}
+
+func (m *SetDmLogLevelResponse) GetReason() SetDmLogLevelResponse_Reason {
+	if m != nil {
+		return m.Reason
+	}
+	return SetDmLogLevelResponse_UNDEFINED_REASON
+}
+
+func (m *SetDmLogLevelResponse) GetReasonDetail() string {
+	if m != nil {
+		return m.ReasonDetail
+	}
+	return ""
+}
+
+type GetDmLogLevelRequest struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *GetDmLogLevelRequest) Reset()         { *m = GetDmLogLevelRequest{} }
+func (m *GetDmLogLevelRequest) String() string { return proto.CompactTextString(m) }
+func (*GetDmLogLevelRequest) ProtoMessage()    {}
+func (*GetDmLogLevelRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_eae902e73066286d, []int{24}
+}
+
+func (m *GetDmLogLevelRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetDmLogLevelRequest.Unmarshal(m, b)
+}
+func (m *GetDmLogLevelRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetDmLogLevelRequest.Marshal(b, m, deterministic)
+}
+func (m *GetDmLogLevelRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetDmLogLevelRequest.Merge(m, src)
+}
+func (m *GetDmLogLevelRequest) XXX_Size() int {
+	return xxx_messageInfo_GetDmLogLevelRequest.Size(m)
+}
+func (m *GetDmLogLevelRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetDmLogLevelRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetDmLogLevelRequest proto.InternalMessageInfo
+
+type GetDmLogLevelResponse struct {
+	Level                LogLevel                     `protobuf:"varint,1,opt,name=level,proto3,enum=dmi.LogLevel" json:"level,omitempty"`
+	Status               Status                       `protobuf:"varint,2,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
+	Reason               GetDmLogLevelResponse_Reason `protobuf:"varint,3,opt,name=reason,proto3,enum=dmi.GetDmLogLevelResponse_Reason" json:"reason,omitempty"`
+	ReasonDetail         string                       `protobuf:"bytes,4,opt,name=reason_detail,json=reasonDetail,proto3" json:"reason_detail,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                     `json:"-"`
+	XXX_unrecognized     []byte                       `json:"-"`
+	XXX_sizecache        int32                        `json:"-"`
+}
+
+func (m *GetDmLogLevelResponse) Reset()         { *m = GetDmLogLevelResponse{} }
+func (m *GetDmLogLevelResponse) String() string { return proto.CompactTextString(m) }
+func (*GetDmLogLevelResponse) ProtoMessage()    {}
+func (*GetDmLogLevelResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_eae902e73066286d, []int{25}
+}
+
+func (m *GetDmLogLevelResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetDmLogLevelResponse.Unmarshal(m, b)
+}
+func (m *GetDmLogLevelResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetDmLogLevelResponse.Marshal(b, m, deterministic)
+}
+func (m *GetDmLogLevelResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetDmLogLevelResponse.Merge(m, src)
+}
+func (m *GetDmLogLevelResponse) XXX_Size() int {
+	return xxx_messageInfo_GetDmLogLevelResponse.Size(m)
+}
+func (m *GetDmLogLevelResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetDmLogLevelResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetDmLogLevelResponse proto.InternalMessageInfo
+
+func (m *GetDmLogLevelResponse) GetLevel() LogLevel {
+	if m != nil {
+		return m.Level
+	}
+	return LogLevel_TRACE
+}
+
+func (m *GetDmLogLevelResponse) GetStatus() Status {
+	if m != nil {
+		return m.Status
+	}
+	return Status_UNDEFINED_STATUS
+}
+
+func (m *GetDmLogLevelResponse) GetReason() GetDmLogLevelResponse_Reason {
+	if m != nil {
+		return m.Reason
+	}
+	return GetDmLogLevelResponse_UNDEFINED_REASON
+}
+
+func (m *GetDmLogLevelResponse) GetReasonDetail() string {
+	if m != nil {
+		return m.ReasonDetail
+	}
+	return ""
+}
+
 type Heartbeat struct {
 	HeartbeatSignature   uint32   `protobuf:"fixed32,1,opt,name=heartbeat_signature,json=heartbeatSignature,proto3" json:"heartbeat_signature,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -1643,7 +1884,7 @@
 func (m *Heartbeat) String() string { return proto.CompactTextString(m) }
 func (*Heartbeat) ProtoMessage()    {}
 func (*Heartbeat) Descriptor() ([]byte, []int) {
-	return fileDescriptor_eae902e73066286d, []int{22}
+	return fileDescriptor_eae902e73066286d, []int{26}
 }
 
 func (m *Heartbeat) XXX_Unmarshal(b []byte) error {
@@ -1682,7 +1923,7 @@
 func (m *RebootDeviceRequest) String() string { return proto.CompactTextString(m) }
 func (*RebootDeviceRequest) ProtoMessage()    {}
 func (*RebootDeviceRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_eae902e73066286d, []int{23}
+	return fileDescriptor_eae902e73066286d, []int{27}
 }
 
 func (m *RebootDeviceRequest) XXX_Unmarshal(b []byte) error {
@@ -1723,7 +1964,7 @@
 func (m *RebootDeviceResponse) String() string { return proto.CompactTextString(m) }
 func (*RebootDeviceResponse) ProtoMessage()    {}
 func (*RebootDeviceResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_eae902e73066286d, []int{24}
+	return fileDescriptor_eae902e73066286d, []int{28}
 }
 
 func (m *RebootDeviceResponse) XXX_Unmarshal(b []byte) error {
@@ -1777,6 +2018,8 @@
 	proto.RegisterEnum("dmi.GetMsgBusEndpointResponse_Reason", GetMsgBusEndpointResponse_Reason_name, GetMsgBusEndpointResponse_Reason_value)
 	proto.RegisterEnum("dmi.SetLogLevelResponse_Reason", SetLogLevelResponse_Reason_name, SetLogLevelResponse_Reason_value)
 	proto.RegisterEnum("dmi.GetLogLevelResponse_Reason", GetLogLevelResponse_Reason_name, GetLogLevelResponse_Reason_value)
+	proto.RegisterEnum("dmi.SetDmLogLevelResponse_Reason", SetDmLogLevelResponse_Reason_name, SetDmLogLevelResponse_Reason_value)
+	proto.RegisterEnum("dmi.GetDmLogLevelResponse_Reason", GetDmLogLevelResponse_Reason_name, GetDmLogLevelResponse_Reason_value)
 	proto.RegisterEnum("dmi.RebootDeviceResponse_Reason", RebootDeviceResponse_Reason_name, RebootDeviceResponse_Reason_value)
 	proto.RegisterType((*PhysicalInventoryRequest)(nil), "dmi.PhysicalInventoryRequest")
 	proto.RegisterType((*PhysicalInventoryResponse)(nil), "dmi.PhysicalInventoryResponse")
@@ -1800,6 +2043,10 @@
 	proto.RegisterType((*GetLogLevelRequest)(nil), "dmi.GetLogLevelRequest")
 	proto.RegisterType((*GetLogLevelResponse)(nil), "dmi.GetLogLevelResponse")
 	proto.RegisterType((*GetLoggableEntitiesRequest)(nil), "dmi.GetLoggableEntitiesRequest")
+	proto.RegisterType((*SetDmLogLevelRequest)(nil), "dmi.SetDmLogLevelRequest")
+	proto.RegisterType((*SetDmLogLevelResponse)(nil), "dmi.SetDmLogLevelResponse")
+	proto.RegisterType((*GetDmLogLevelRequest)(nil), "dmi.GetDmLogLevelRequest")
+	proto.RegisterType((*GetDmLogLevelResponse)(nil), "dmi.GetDmLogLevelResponse")
 	proto.RegisterType((*Heartbeat)(nil), "dmi.Heartbeat")
 	proto.RegisterType((*RebootDeviceRequest)(nil), "dmi.RebootDeviceRequest")
 	proto.RegisterType((*RebootDeviceResponse)(nil), "dmi.RebootDeviceResponse")
@@ -1808,108 +2055,115 @@
 func init() { proto.RegisterFile("dmi/hw_management_service.proto", fileDescriptor_eae902e73066286d) }
 
 var fileDescriptor_eae902e73066286d = []byte{
-	// 1610 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x59, 0x4f, 0x6f, 0xdb, 0x46,
-	0x16, 0x5f, 0x51, 0xb2, 0x13, 0x3d, 0x27, 0xb6, 0x3c, 0x4e, 0x1c, 0x89, 0x41, 0x6c, 0x2f, 0x83,
-	0x6c, 0x9c, 0xdd, 0x44, 0x32, 0x94, 0xc3, 0x66, 0xff, 0x2f, 0x2d, 0xd1, 0x14, 0x13, 0x89, 0x14,
-	0x86, 0x52, 0x8c, 0x2c, 0x16, 0x4b, 0xd0, 0xd2, 0x58, 0x26, 0x56, 0x24, 0xb5, 0x22, 0xe5, 0xc0,
-	0x1f, 0x63, 0x0f, 0x3d, 0xf4, 0xd0, 0xa2, 0x9f, 0xa0, 0x40, 0xaf, 0x41, 0xef, 0x3d, 0xf4, 0xda,
-	0x63, 0x81, 0xa2, 0x1f, 0xa1, 0xfd, 0x04, 0x85, 0x38, 0xa4, 0xfe, 0x50, 0xa4, 0x64, 0xcb, 0x09,
-	0x9a, 0x9b, 0x38, 0xf3, 0xe6, 0x37, 0x6f, 0xde, 0xef, 0xcd, 0x7b, 0x6f, 0x9e, 0x60, 0xb7, 0x6d,
-	0x1a, 0x85, 0xb3, 0xb7, 0x9a, 0xa9, 0x5b, 0x7a, 0x87, 0x98, 0xc4, 0x72, 0x35, 0x87, 0xf4, 0xcf,
-	0x8d, 0x16, 0xc9, 0xf7, 0xfa, 0xb6, 0x6b, 0xa3, 0x64, 0xdb, 0x34, 0xd8, 0xcd, 0xa1, 0x54, 0xcb,
-	0x36, 0x4d, 0xdb, 0x72, 0xe8, 0x38, 0x7b, 0x8b, 0x2e, 0xf4, 0xbf, 0xee, 0x77, 0x6c, 0xbb, 0xd3,
-	0x25, 0x05, 0xef, 0xeb, 0x64, 0x70, 0x5a, 0x20, 0x66, 0xcf, 0xbd, 0xa0, 0x93, 0xdc, 0x11, 0x64,
-	0xeb, 0x67, 0x17, 0x8e, 0xd1, 0xd2, 0xbb, 0x92, 0x75, 0x4e, 0x2c, 0xd7, 0xee, 0x5f, 0x60, 0xf2,
-	0xbf, 0x01, 0x71, 0x5c, 0xf4, 0x7b, 0x58, 0x6b, 0x93, 0xe1, 0x76, 0xda, 0x60, 0x60, 0xb4, 0xb3,
-	0x89, 0xbd, 0xc4, 0xfe, 0x5a, 0x31, 0x9d, 0x6f, 0x9b, 0x46, 0xbe, 0x39, 0x30, 0xda, 0x18, 0xe8,
-	0xec, 0xf0, 0x37, 0xf7, 0x15, 0x03, 0xb9, 0x08, 0x20, 0xa7, 0x67, 0x5b, 0x0e, 0x41, 0x0f, 0x61,
-	0xd5, 0x71, 0x75, 0x77, 0xe0, 0x78, 0x20, 0xeb, 0xc5, 0x35, 0x0f, 0x44, 0xf5, 0x86, 0xb0, 0x3f,
-	0x85, 0xfe, 0x06, 0xab, 0x7d, 0xa2, 0x3b, 0xb6, 0x95, 0x65, 0x3c, 0xa1, 0x47, 0x9e, 0x50, 0x2c,
-	0x68, 0x1e, 0x7b, 0xc2, 0xd8, 0x5f, 0x84, 0xfe, 0x00, 0x69, 0x23, 0x90, 0xc9, 0x26, 0x3d, 0x5d,
-	0x6f, 0x7b, 0x08, 0x15, 0xbd, 0xdf, 0x7e, 0xab, 0xf7, 0x09, 0x1e, 0xcf, 0xa3, 0x87, 0x70, 0x9b,
-	0x2e, 0xd3, 0xda, 0xc4, 0xd5, 0x8d, 0x6e, 0x36, 0xb5, 0x97, 0xd8, 0x4f, 0xe3, 0x5b, 0x74, 0xb0,
-	0xec, 0x8d, 0x71, 0xff, 0x81, 0x55, 0xba, 0x07, 0xba, 0x03, 0x99, 0xa6, 0x5c, 0x16, 0x8e, 0x24,
-	0x59, 0x28, 0x6b, 0x58, 0xe0, 0x55, 0x45, 0xce, 0xfc, 0x06, 0x21, 0x58, 0x6f, 0xca, 0xaf, 0x64,
-	0xe5, 0x58, 0xd6, 0xca, 0xc2, 0x6b, 0xa9, 0x24, 0x64, 0x12, 0xc3, 0x31, 0x49, 0x6e, 0x08, 0x58,
-	0xe6, 0xab, 0x9a, 0x80, 0xb1, 0x82, 0x33, 0x0c, 0xda, 0x06, 0x44, 0xe7, 0xb5, 0xa6, 0x8c, 0x05,
-	0xbe, 0x54, 0xe1, 0x0f, 0xab, 0x42, 0x26, 0xc9, 0x7d, 0x91, 0x80, 0x5c, 0xe5, 0xb8, 0x64, 0x9b,
-	0x3d, 0xdb, 0x22, 0x96, 0x2b, 0x59, 0xa7, 0xb6, 0x48, 0xdc, 0x25, 0xac, 0x8f, 0x0e, 0x60, 0xbd,
-	0x15, 0xc0, 0x50, 0x71, 0x26, 0x2c, 0x7e, 0x7b, 0x24, 0xe0, 0xad, 0x78, 0x34, 0xb9, 0xc2, 0xd2,
-	0x4d, 0xe2, 0x99, 0x2c, 0x3d, 0x21, 0x26, 0xeb, 0x26, 0xe1, 0xbe, 0x65, 0x80, 0x8d, 0x52, 0xf1,
-	0x2a, 0xbc, 0xfe, 0x3d, 0xc4, 0xeb, 0xef, 0x28, 0x2b, 0xb1, 0xa8, 0x61, 0x62, 0x9f, 0x42, 0x7a,
-	0xa4, 0x94, 0x4f, 0xec, 0xba, 0x07, 0x31, 0x02, 0xc0, 0x63, 0x81, 0xcb, 0x31, 0x3b, 0x58, 0x82,
-	0xd9, 0xbb, 0xb0, 0x19, 0x8c, 0x95, 0x94, 0x5a, 0x5d, 0x91, 0x05, 0xb9, 0x91, 0x61, 0x22, 0x08,
-	0x4f, 0xc6, 0x10, 0x9e, 0xe2, 0xbe, 0x9b, 0x25, 0x5c, 0xfd, 0xb8, 0x08, 0x47, 0x45, 0xb8, 0xd1,
-	0x3a, 0xd3, 0xad, 0x0e, 0x71, 0x3c, 0xc3, 0xad, 0x15, 0xb3, 0x1e, 0x62, 0xcd, 0x6e, 0x1b, 0xa7,
-	0x86, 0x7e, 0xd2, 0x25, 0x63, 0xa3, 0x07, 0x82, 0xdc, 0x37, 0xb3, 0x4e, 0xa2, 0x7e, 0x10, 0x27,
-	0x51, 0xe3, 0x9d, 0x64, 0x86, 0xf6, 0x64, 0x04, 0xed, 0x9f, 0x27, 0xde, 0x33, 0xef, 0xaf, 0xf9,
-	0xaa, 0x54, 0xd6, 0xea, 0x3c, 0xe6, 0x6b, 0x6a, 0x26, 0x19, 0xe1, 0x0b, 0xa9, 0x18, 0x5f, 0x58,
-	0x41, 0x5b, 0xb0, 0xa1, 0x0a, 0x0d, 0xad, 0x29, 0xab, 0xcd, 0x7a, 0x5d, 0xc1, 0x0d, 0xa1, 0x9c,
-	0x59, 0xe5, 0xfe, 0x9f, 0x84, 0xfb, 0xaa, 0xab, 0xf7, 0xdd, 0xda, 0x30, 0xe4, 0x1b, 0x56, 0xa7,
-	0xec, 0x51, 0x7e, 0x35, 0x53, 0xfe, 0x23, 0x64, 0xca, 0xc7, 0x81, 0x50, 0x1c, 0x6c, 0xd8, 0x96,
-	0x21, 0x47, 0x4c, 0xce, 0x73, 0xc4, 0x4b, 0x5d, 0xb7, 0x77, 0x8b, 0xec, 0xce, 0xc2, 0xb6, 0x6f,
-	0x24, 0xbe, 0x8a, 0x05, 0xbe, 0xfc, 0x46, 0xab, 0xf1, 0x32, 0x2f, 0x0a, 0xe5, 0x4c, 0x02, 0xfd,
-	0x16, 0x1e, 0x28, 0x75, 0x01, 0xf3, 0x0d, 0x49, 0x91, 0x47, 0xd3, 0x92, 0xac, 0xd5, 0xb1, 0x22,
-	0x62, 0x41, 0x55, 0xaf, 0xc0, 0x05, 0x0b, 0xdb, 0x7c, 0xb3, 0x51, 0x11, 0xe4, 0x86, 0x54, 0xa2,
-	0x78, 0x47, 0xbc, 0x54, 0x6d, 0xe2, 0x21, 0x1f, 0xf7, 0x60, 0x4b, 0x92, 0x87, 0x04, 0xf3, 0x0d,
-	0xe9, 0xb0, 0x2a, 0x04, 0xfc, 0xaf, 0x72, 0x05, 0xc8, 0xa9, 0xae, 0xdd, 0x0b, 0x9b, 0x8e, 0xde,
-	0x59, 0x04, 0x29, 0xef, 0x2e, 0x25, 0xbc, 0x53, 0x7b, 0xbf, 0xb9, 0x9f, 0x13, 0xc0, 0x46, 0xad,
-	0xb8, 0xfe, 0x75, 0x88, 0x47, 0x5d, 0xea, 0x3a, 0xbc, 0x5c, 0xe2, 0x36, 0x44, 0xbb, 0x33, 0xc3,
-	0x99, 0xb0, 0xe9, 0x69, 0x46, 0xda, 0x54, 0xb1, 0xe1, 0x75, 0x45, 0x4f, 0x21, 0x65, 0x58, 0xa7,
-	0xb6, 0x1f, 0xca, 0xe2, 0x23, 0x89, 0x27, 0x15, 0x76, 0x3b, 0x66, 0x5e, 0xb9, 0xf1, 0x43, 0x02,
-	0xb6, 0xa7, 0xf6, 0x73, 0xae, 0x66, 0xdf, 0x3f, 0x87, 0xec, 0xcb, 0x51, 0xdd, 0x22, 0x11, 0xc3,
-	0xb6, 0x3d, 0x80, 0x1b, 0x54, 0x13, 0x27, 0x9b, 0xdc, 0x4b, 0xee, 0xaf, 0x15, 0xb7, 0x67, 0x17,
-	0x0f, 0x8f, 0x8f, 0x03, 0x31, 0xae, 0xb8, 0xd8, 0xd0, 0x21, 0x5f, 0x4d, 0x70, 0x9f, 0x25, 0x20,
-	0xa7, 0x12, 0xb7, 0x6a, 0x77, 0x86, 0x6c, 0x0b, 0x56, 0xbb, 0x67, 0x1b, 0xd6, 0x52, 0xb9, 0xe2,
-	0x09, 0x64, 0xba, 0x14, 0x45, 0x23, 0x3e, 0x8c, 0x77, 0xea, 0x34, 0xde, 0xe8, 0x4e, 0xa3, 0x4f,
-	0x8a, 0x7a, 0xe5, 0x61, 0xcb, 0x0e, 0x3c, 0x27, 0x10, 0xad, 0xfb, 0xc3, 0xdc, 0x8f, 0x8c, 0xa7,
-	0x1f, 0x26, 0xa6, 0xed, 0x92, 0xb1, 0x7a, 0xd7, 0x2f, 0xf8, 0x62, 0x41, 0x97, 0xf2, 0xf1, 0x77,
-	0x89, 0xf7, 0x54, 0xc4, 0xb1, 0xb0, 0x5d, 0x55, 0x44, 0x51, 0x92, 0x45, 0x4d, 0x90, 0xcb, 0x75,
-	0x45, 0x92, 0x1b, 0xa3, 0x7c, 0xff, 0x10, 0x76, 0x67, 0xe6, 0xea, 0x58, 0x69, 0x28, 0x25, 0x65,
-	0x1c, 0x7c, 0x72, 0x70, 0xb7, 0xa6, 0x8a, 0x87, 0x4d, 0x35, 0xbc, 0x7e, 0x25, 0xe6, 0x52, 0xad,
-	0x72, 0xdf, 0x33, 0xc0, 0x8a, 0x11, 0x3e, 0x70, 0xfd, 0x48, 0x12, 0x8f, 0x1a, 0xb6, 0x72, 0x94,
-	0xf7, 0x24, 0x2f, 0xef, 0x3d, 0xa9, 0x48, 0xef, 0x99, 0xe5, 0x6e, 0xe5, 0x57, 0xa8, 0xbf, 0x4b,
-	0x90, 0x55, 0x89, 0x5b, 0x73, 0x3a, 0x87, 0x03, 0x27, 0x7c, 0xc1, 0x1e, 0xc3, 0x86, 0xe9, 0x74,
-	0x4e, 0x06, 0xce, 0xf8, 0xd4, 0x34, 0xc6, 0xaf, 0xd3, 0xe1, 0x40, 0x9e, 0xfb, 0x94, 0x81, 0x9c,
-	0x38, 0x8b, 0x72, 0xfd, 0x7b, 0x10, 0x0b, 0x1a, 0x66, 0x28, 0x42, 0xd5, 0x64, 0x94, 0xaa, 0x97,
-	0xcb, 0xd5, 0x2f, 0xaf, 0x1e, 0xab, 0x62, 0x93, 0xc2, 0x1b, 0xc8, 0x08, 0x96, 0x6b, 0xb8, 0x06,
-	0x71, 0xaa, 0x76, 0xa7, 0x4a, 0xce, 0x49, 0x17, 0x3d, 0x81, 0x9b, 0x5d, 0xff, 0xb7, 0x6f, 0x13,
-	0xfa, 0x4a, 0x0b, 0x04, 0xf0, 0x68, 0x1a, 0xb1, 0x70, 0x93, 0xf8, 0xcb, 0xb3, 0xcc, 0x5e, 0x72,
-	0x3f, 0x8d, 0x47, 0xdf, 0xdc, 0x00, 0x10, 0x8d, 0x8e, 0x74, 0xd1, 0x12, 0x61, 0xf1, 0x39, 0xa4,
-	0xbb, 0xc3, 0x77, 0xf1, 0x39, 0xe9, 0x52, 0xf8, 0xb5, 0xe2, 0x5d, 0x4f, 0x32, 0xac, 0x32, 0x1e,
-	0xcb, 0x71, 0x5f, 0x33, 0xb0, 0x35, 0xb5, 0xaf, 0xcf, 0xf3, 0x55, 0x36, 0x1e, 0xfb, 0x04, 0x13,
-	0xef, 0x13, 0x7f, 0x1c, 0xf9, 0x44, 0xd2, 0x13, 0xda, 0x0d, 0x62, 0x63, 0x78, 0xeb, 0x85, 0x51,
-	0x31, 0x8a, 0xe4, 0xf3, 0xf7, 0x77, 0xb3, 0x02, 0xb9, 0xaa, 0x32, 0x0c, 0x7e, 0x0d, 0xa9, 0xf1,
-	0x66, 0xce, 0x03, 0xe8, 0xdf, 0x80, 0xc4, 0xeb, 0xb1, 0x36, 0xcf, 0x27, 0x7e, 0x62, 0x60, 0x4b,
-	0xbc, 0x26, 0x39, 0xd4, 0x2b, 0xaa, 0x97, 0xf4, 0x0a, 0x2a, 0x37, 0xc1, 0x68, 0xf2, 0x32, 0x8c,
-	0xa6, 0x26, 0x18, 0x15, 0x97, 0x60, 0x74, 0xe5, 0x23, 0x62, 0xb4, 0x32, 0xca, 0x50, 0xc3, 0x92,
-	0x2e, 0x30, 0xd2, 0x32, 0x1d, 0xa4, 0xbf, 0x42, 0xba, 0x42, 0xf4, 0xbe, 0x7b, 0x42, 0x74, 0x17,
-	0x15, 0x60, 0xeb, 0x2c, 0xf8, 0xd0, 0x1c, 0xa3, 0x63, 0xe9, 0xee, 0xa0, 0x4f, 0xcb, 0xec, 0x1b,
-	0x18, 0x8d, 0xa6, 0xd4, 0x60, 0x86, 0xe3, 0x61, 0x0b, 0x93, 0x13, 0xdb, 0x76, 0xa7, 0xeb, 0xf3,
-	0xab, 0x28, 0xf0, 0x09, 0x03, 0x77, 0xa6, 0x31, 0x66, 0x82, 0xf8, 0x1c, 0x7a, 0x5f, 0x84, 0xe8,
-	0xdd, 0xf3, 0x84, 0xa2, 0xf0, 0x96, 0xe2, 0xf7, 0xe2, 0xc3, 0xe6, 0xc2, 0x61, 0x75, 0xe2, 0x8f,
-	0x4b, 0xb2, 0x76, 0x8c, 0x15, 0x59, 0xd4, 0xd4, 0x06, 0xdf, 0x10, 0x32, 0xa9, 0xe2, 0x97, 0x69,
-	0xc8, 0xc9, 0xba, 0x6b, 0x9c, 0x93, 0xca, 0x71, 0x6d, 0xd4, 0x8a, 0x54, 0x69, 0x27, 0x12, 0xa9,
-	0xb0, 0x15, 0xf1, 0xb4, 0x44, 0xb1, 0xc5, 0x3e, 0xbb, 0xb7, 0xe8, 0x39, 0x7a, 0x90, 0x40, 0x4d,
-	0x40, 0xb3, 0x6f, 0x1d, 0xb4, 0x13, 0xfb, 0x08, 0xf2, 0xc8, 0x66, 0x77, 0x17, 0x3c, 0x92, 0x50,
-	0x05, 0x36, 0x87, 0x59, 0x75, 0xaa, 0xca, 0x47, 0xdb, 0x79, 0xda, 0x1f, 0xcd, 0x07, 0xfd, 0xd1,
-	0xbc, 0x60, 0xf6, 0xdc, 0x0b, 0xf6, 0xfe, 0x9c, 0x27, 0x01, 0x3a, 0x86, 0x3b, 0x22, 0x71, 0x67,
-	0x7a, 0x93, 0xe8, 0x41, 0x5c, 0xcf, 0x92, 0x6a, 0xb8, 0x33, 0xbf, 0xa5, 0x79, 0x90, 0x40, 0xc7,
-	0x5e, 0x84, 0x0c, 0xf5, 0x3d, 0xfc, 0x93, 0xc7, 0xf6, 0x0a, 0xfd, 0x93, 0xc7, 0xb7, 0xd4, 0x7c,
-	0x93, 0x5e, 0x12, 0x58, 0x5d, 0x00, 0x3c, 0xd9, 0xdc, 0x69, 0x04, 0x79, 0x78, 0xaa, 0x12, 0xdc,
-	0x99, 0xc8, 0x56, 0x11, 0xcf, 0x17, 0x76, 0x67, 0x7e, 0xa5, 0x8f, 0x8e, 0x82, 0x3c, 0x31, 0x85,
-	0xba, 0x31, 0xd5, 0xce, 0x95, 0xca, 0xec, 0xee, 0x82, 0x5a, 0x16, 0x61, 0xd8, 0x9c, 0xa9, 0xf0,
-	0x7c, 0x8e, 0xe2, 0x2a, 0xbf, 0x85, 0xba, 0xbd, 0xa2, 0x4e, 0x34, 0x8d, 0x19, 0xe7, 0x44, 0x3b,
-	0xf3, 0x4b, 0x39, 0x54, 0x0f, 0x32, 0xd6, 0x54, 0xf8, 0x44, 0x53, 0x07, 0x8b, 0x08, 0xac, 0x6c,
-	0x36, 0x2e, 0x79, 0xa0, 0x7f, 0xc2, 0xda, 0x44, 0x95, 0x80, 0xee, 0xcd, 0xd6, 0x0d, 0x93, 0x08,
-	0x6a, 0x34, 0x82, 0x38, 0x83, 0x20, 0xc6, 0x21, 0x44, 0xe9, 0xf0, 0x02, 0xd6, 0x47, 0xa1, 0xbc,
-	0x74, 0x46, 0x5a, 0xff, 0x8d, 0xb5, 0x0f, 0x6d, 0xe4, 0x8e, 0xe3, 0x7e, 0x09, 0x6e, 0x4d, 0x86,
-	0x4c, 0x3f, 0x8c, 0x44, 0x44, 0x76, 0x36, 0x17, 0x1b, 0x5f, 0x0f, 0xff, 0xf2, 0xaf, 0x3f, 0x75,
-	0x0c, 0xf7, 0x6c, 0x70, 0x92, 0x6f, 0xd9, 0x66, 0xc1, 0xee, 0x11, 0xab, 0x65, 0xf7, 0xdb, 0x05,
-	0x1a, 0xea, 0x9f, 0x8d, 0xff, 0x4d, 0x79, 0x66, 0x58, 0x2e, 0xe9, 0x9f, 0xea, 0x2d, 0x52, 0x38,
-	0x7f, 0x5e, 0xe8, 0xd8, 0x85, 0xb6, 0x69, 0x9c, 0xac, 0x7a, 0x1a, 0x3e, 0xff, 0x25, 0x00, 0x00,
-	0xff, 0xff, 0xbb, 0x83, 0x4d, 0xcf, 0x7d, 0x19, 0x00, 0x00,
+	// 1726 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x59, 0xcd, 0x6f, 0xe3, 0xc6,
+	0x15, 0x2f, 0x29, 0xdb, 0x1b, 0x3d, 0xef, 0x7a, 0xe5, 0xf1, 0xda, 0x91, 0xb8, 0x88, 0xed, 0xe5,
+	0x22, 0xcd, 0xa6, 0x4d, 0x24, 0x43, 0x7b, 0x68, 0xb6, 0xe9, 0x17, 0x2d, 0xd1, 0x14, 0x13, 0x89,
+	0x14, 0x86, 0xd2, 0x1a, 0x5b, 0x14, 0x25, 0x68, 0x69, 0x2c, 0x13, 0x15, 0x49, 0x55, 0xa4, 0x1c,
+	0xf8, 0xcf, 0xe8, 0xa1, 0x87, 0x1e, 0x5a, 0xf4, 0x5f, 0xe8, 0x35, 0x28, 0x7a, 0xed, 0xa1, 0xd7,
+	0x1e, 0x0b, 0x14, 0x3d, 0xf5, 0xdc, 0x02, 0xbd, 0x17, 0xe4, 0x90, 0xfa, 0xa0, 0x48, 0x7d, 0x79,
+	0x83, 0xec, 0x4d, 0x9c, 0x79, 0xf3, 0xe3, 0xf0, 0xfd, 0xde, 0xfc, 0xe6, 0xbd, 0x27, 0x38, 0xe9,
+	0x5a, 0x66, 0xe9, 0xe6, 0x2b, 0xdd, 0x32, 0x6c, 0xa3, 0x47, 0x2c, 0x62, 0x7b, 0xba, 0x4b, 0x86,
+	0xb7, 0x66, 0x87, 0x14, 0x07, 0x43, 0xc7, 0x73, 0x50, 0xa6, 0x6b, 0x99, 0xdc, 0xbe, 0x6f, 0xd5,
+	0x71, 0x2c, 0xcb, 0xb1, 0x5d, 0x3a, 0xce, 0x3d, 0xa4, 0x0b, 0xc3, 0xa7, 0xa7, 0x3d, 0xc7, 0xe9,
+	0xf5, 0x49, 0x29, 0x78, 0xba, 0x1a, 0x5d, 0x97, 0x88, 0x35, 0xf0, 0xee, 0xe8, 0x24, 0x7f, 0x01,
+	0xf9, 0xe6, 0xcd, 0x9d, 0x6b, 0x76, 0x8c, 0xbe, 0x6c, 0xdf, 0x12, 0xdb, 0x73, 0x86, 0x77, 0x98,
+	0xfc, 0x7a, 0x44, 0x5c, 0x0f, 0x7d, 0x0f, 0x76, 0xbb, 0xc4, 0x7f, 0x9d, 0x3e, 0x1a, 0x99, 0xdd,
+	0x3c, 0x73, 0xca, 0xbc, 0xd8, 0x2d, 0x67, 0x8b, 0x5d, 0xcb, 0x2c, 0xb6, 0x47, 0x66, 0x17, 0x03,
+	0x9d, 0xf5, 0x7f, 0xf3, 0x7f, 0x62, 0xa1, 0x90, 0x00, 0xe4, 0x0e, 0x1c, 0xdb, 0x25, 0xe8, 0x39,
+	0xec, 0xb8, 0x9e, 0xe1, 0x8d, 0xdc, 0x00, 0x64, 0xaf, 0xbc, 0x1b, 0x80, 0x68, 0xc1, 0x10, 0x0e,
+	0xa7, 0xd0, 0x8f, 0x61, 0x67, 0x48, 0x0c, 0xd7, 0xb1, 0xf3, 0x6c, 0x60, 0xf4, 0x61, 0x60, 0x94,
+	0x0a, 0x5a, 0xc4, 0x81, 0x31, 0x0e, 0x17, 0xa1, 0xef, 0x43, 0xd6, 0x8c, 0x6c, 0xf2, 0x99, 0x60,
+	0xaf, 0x8f, 0x02, 0x84, 0x9a, 0x31, 0xec, 0x7e, 0x65, 0x0c, 0x09, 0x9e, 0xcc, 0xa3, 0xe7, 0xf0,
+	0x88, 0x2e, 0xd3, 0xbb, 0xc4, 0x33, 0xcc, 0x7e, 0x7e, 0xeb, 0x94, 0x79, 0x91, 0xc5, 0x0f, 0xe9,
+	0x60, 0x35, 0x18, 0xe3, 0x7f, 0x09, 0x3b, 0xf4, 0x1d, 0xe8, 0x09, 0xe4, 0xda, 0x4a, 0x55, 0xbc,
+	0x90, 0x15, 0xb1, 0xaa, 0x63, 0x51, 0xd0, 0x54, 0x25, 0xf7, 0x1d, 0x84, 0x60, 0xaf, 0xad, 0x7c,
+	0xa9, 0xa8, 0x97, 0x8a, 0x5e, 0x15, 0x5f, 0xcb, 0x15, 0x31, 0xc7, 0xf8, 0x63, 0xb2, 0xd2, 0x12,
+	0xb1, 0x22, 0xd4, 0x75, 0x11, 0x63, 0x15, 0xe7, 0x58, 0x74, 0x04, 0x88, 0xce, 0xeb, 0x6d, 0x05,
+	0x8b, 0x42, 0xa5, 0x26, 0x9c, 0xd7, 0xc5, 0x5c, 0x86, 0xff, 0x23, 0x03, 0x85, 0xda, 0x65, 0xc5,
+	0xb1, 0x06, 0x8e, 0x4d, 0x6c, 0x4f, 0xb6, 0xaf, 0x1d, 0x89, 0x78, 0x1b, 0x78, 0x1f, 0x9d, 0xc1,
+	0x5e, 0x27, 0x82, 0xa1, 0xe6, 0x6c, 0xdc, 0xfc, 0xd1, 0xd8, 0x20, 0x58, 0xf1, 0xe1, 0xf4, 0x0a,
+	0xdb, 0xb0, 0x48, 0xe0, 0xb2, 0xec, 0x94, 0x99, 0x62, 0x58, 0x84, 0xff, 0x1b, 0x0b, 0x5c, 0xd2,
+	0x16, 0xd7, 0xe1, 0xf5, 0x27, 0x31, 0x5e, 0xbf, 0x4b, 0x59, 0x49, 0x45, 0x8d, 0x13, 0xfb, 0x09,
+	0x64, 0xc7, 0x9b, 0x0a, 0x89, 0xdd, 0x0b, 0x20, 0xc6, 0x00, 0x78, 0x62, 0xb0, 0x1a, 0xb3, 0xa3,
+	0x0d, 0x98, 0x3d, 0x84, 0xfd, 0x68, 0xac, 0xa2, 0x36, 0x9a, 0xaa, 0x22, 0x2a, 0xad, 0x1c, 0x9b,
+	0x40, 0x78, 0x26, 0x85, 0xf0, 0x2d, 0xfe, 0xef, 0xf3, 0x84, 0x6b, 0xef, 0x16, 0xe1, 0xa8, 0x0c,
+	0x0f, 0x3a, 0x37, 0x86, 0xdd, 0x23, 0x6e, 0xe0, 0xb8, 0xdd, 0x72, 0x3e, 0x40, 0x6c, 0x38, 0x5d,
+	0xf3, 0xda, 0x34, 0xae, 0xfa, 0x64, 0xe2, 0xf4, 0xc8, 0x90, 0xff, 0xeb, 0x7c, 0x90, 0x68, 0xdf,
+	0x48, 0x90, 0x68, 0xe9, 0x41, 0x32, 0x47, 0x7b, 0x26, 0x81, 0xf6, 0x3f, 0x30, 0x6f, 0x99, 0xf7,
+	0xd7, 0x42, 0x5d, 0xae, 0xea, 0x4d, 0x01, 0x0b, 0x0d, 0x2d, 0x97, 0x49, 0x88, 0x85, 0xad, 0x94,
+	0x58, 0xd8, 0x46, 0x07, 0xf0, 0x58, 0x13, 0x5b, 0x7a, 0x5b, 0xd1, 0xda, 0xcd, 0xa6, 0x8a, 0x5b,
+	0x62, 0x35, 0xb7, 0xc3, 0xff, 0x26, 0x03, 0x4f, 0x35, 0xcf, 0x18, 0x7a, 0x0d, 0x5f, 0xf2, 0x4d,
+	0xbb, 0x57, 0x0d, 0x28, 0x5f, 0xcf, 0x95, 0x3f, 0x8d, 0xb9, 0xf2, 0xa3, 0xc8, 0x28, 0x0d, 0x36,
+	0xee, 0xcb, 0x58, 0x20, 0x66, 0x16, 0x05, 0xe2, 0x4a, 0xc7, 0xed, 0xeb, 0x65, 0x7e, 0xe7, 0xe0,
+	0x28, 0x74, 0x92, 0x50, 0xc7, 0xa2, 0x50, 0x7d, 0xa3, 0x37, 0x04, 0x45, 0x90, 0xc4, 0x6a, 0x8e,
+	0x41, 0xcf, 0xe0, 0x03, 0xb5, 0x29, 0x62, 0xa1, 0x25, 0xab, 0xca, 0x78, 0x5a, 0x56, 0xf4, 0x26,
+	0x56, 0x25, 0x2c, 0x6a, 0xda, 0x1a, 0x5c, 0x70, 0x70, 0x24, 0xb4, 0x5b, 0x35, 0x51, 0x69, 0xc9,
+	0x15, 0x8a, 0x77, 0x21, 0xc8, 0xf5, 0x36, 0xf6, 0xf9, 0x78, 0x1f, 0x0e, 0x64, 0xc5, 0x27, 0x58,
+	0x68, 0xc9, 0xe7, 0x75, 0x31, 0xe2, 0x7f, 0x87, 0x2f, 0x41, 0x41, 0xf3, 0x9c, 0x41, 0xdc, 0x75,
+	0xf4, 0xcc, 0x22, 0xd8, 0x0a, 0xce, 0x12, 0x13, 0x7c, 0x75, 0xf0, 0x9b, 0xff, 0x2f, 0x03, 0x5c,
+	0xd2, 0x8a, 0xfb, 0x1f, 0x87, 0x74, 0xd4, 0x8d, 0x8e, 0xc3, 0x17, 0x1b, 0x9c, 0x86, 0xe4, 0x70,
+	0x66, 0x79, 0x0b, 0xf6, 0x83, 0x9d, 0x91, 0x2e, 0xdd, 0x98, 0x7f, 0x5c, 0xd1, 0x27, 0xb0, 0x65,
+	0xda, 0xd7, 0x4e, 0x28, 0x65, 0xe9, 0x4a, 0x12, 0x58, 0xc5, 0xc3, 0x8e, 0x5d, 0x94, 0x6e, 0xfc,
+	0x93, 0x81, 0xa3, 0x99, 0xf7, 0xb9, 0xeb, 0xf9, 0xf7, 0x87, 0x31, 0xff, 0xf2, 0x74, 0x6f, 0x89,
+	0x88, 0x71, 0xdf, 0x9e, 0xc1, 0x03, 0xba, 0x13, 0x37, 0x9f, 0x39, 0xcd, 0xbc, 0xd8, 0x2d, 0x1f,
+	0xcd, 0x2f, 0xf6, 0x3f, 0x1f, 0x47, 0x66, 0x7c, 0x79, 0xb9, 0xa3, 0x63, 0xb1, 0xca, 0xf0, 0xbf,
+	0x67, 0xa0, 0xa0, 0x11, 0xaf, 0xee, 0xf4, 0x7c, 0xb6, 0x45, 0xbb, 0x3b, 0x70, 0x4c, 0x7b, 0xa3,
+	0xbb, 0xe2, 0x63, 0xc8, 0xf5, 0x29, 0x8a, 0x4e, 0x42, 0x98, 0xe0, 0xab, 0xb3, 0xf8, 0x71, 0x7f,
+	0x16, 0x7d, 0xda, 0x34, 0x48, 0x0f, 0x3b, 0x4e, 0x14, 0x39, 0x91, 0x69, 0x33, 0x1c, 0xe6, 0xff,
+	0xc5, 0x06, 0xfb, 0xc3, 0xc4, 0x72, 0x3c, 0x32, 0xd9, 0xde, 0xfd, 0x13, 0xbe, 0x54, 0xd0, 0x8d,
+	0x62, 0xfc, 0x6b, 0xe6, 0x2d, 0x25, 0x71, 0x1c, 0x1c, 0xd5, 0x55, 0x49, 0x92, 0x15, 0x49, 0x17,
+	0x95, 0x6a, 0x53, 0x95, 0x95, 0xd6, 0xf8, 0xbe, 0x7f, 0x0e, 0x27, 0x73, 0x73, 0x4d, 0xac, 0xb6,
+	0xd4, 0x8a, 0x3a, 0x11, 0x9f, 0x02, 0x1c, 0x36, 0x34, 0xe9, 0xbc, 0xad, 0xc5, 0xd7, 0x6f, 0xa7,
+	0x1c, 0xaa, 0x1d, 0xfe, 0x1f, 0x2c, 0x70, 0x52, 0x42, 0x0c, 0xdc, 0x5f, 0x49, 0xd2, 0x51, 0xe3,
+	0x5e, 0x4e, 0x8a, 0x9e, 0xcc, 0xea, 0xd1, 0xb3, 0x95, 0x18, 0x3d, 0xf3, 0xdc, 0x6d, 0x7f, 0x0b,
+	0xf9, 0x77, 0x05, 0xf2, 0x1a, 0xf1, 0x1a, 0x6e, 0xef, 0x7c, 0xe4, 0xc6, 0x0f, 0xd8, 0x47, 0xf0,
+	0xd8, 0x72, 0x7b, 0x57, 0x23, 0x77, 0xf2, 0xd5, 0x54, 0xe3, 0xf7, 0xe8, 0x70, 0x64, 0xcf, 0xff,
+	0x8e, 0x85, 0x82, 0x34, 0x8f, 0x72, 0xff, 0x73, 0x90, 0x0a, 0x1a, 0x67, 0x28, 0x61, 0xab, 0x99,
+	0xa4, 0xad, 0xae, 0x76, 0x57, 0x7f, 0xb1, 0xbe, 0x56, 0xa5, 0x5e, 0x0a, 0x6f, 0x20, 0x27, 0xda,
+	0x9e, 0xe9, 0x99, 0xc4, 0xad, 0x3b, 0xbd, 0x3a, 0xb9, 0x25, 0x7d, 0xf4, 0x31, 0xbc, 0xd7, 0x0f,
+	0x7f, 0x87, 0x3e, 0xa1, 0x55, 0x5a, 0x64, 0x80, 0xc7, 0xd3, 0x88, 0x83, 0xf7, 0x48, 0xb8, 0x3c,
+	0xcf, 0x9e, 0x66, 0x5e, 0x64, 0xf1, 0xf8, 0x99, 0x1f, 0x01, 0xa2, 0xea, 0x48, 0x17, 0x6d, 0x20,
+	0x8b, 0x2f, 0x21, 0xdb, 0xf7, 0xeb, 0xe2, 0x5b, 0xd2, 0xa7, 0xf0, 0xbb, 0xe5, 0xc3, 0xc0, 0x32,
+	0xbe, 0x65, 0x3c, 0xb1, 0xe3, 0xff, 0xcc, 0xc2, 0xc1, 0xcc, 0x7b, 0x43, 0x9e, 0xd7, 0x79, 0xf1,
+	0x24, 0x26, 0xd8, 0xf4, 0x98, 0xf8, 0xc1, 0x38, 0x26, 0x32, 0x81, 0xd1, 0x49, 0xa4, 0x8d, 0xf1,
+	0x57, 0x2f, 0x55, 0xc5, 0x24, 0x92, 0x6f, 0xdf, 0xde, 0xc9, 0x8a, 0xec, 0xea, 0xaa, 0x2f, 0x7e,
+	0x2d, 0xb9, 0xf5, 0x66, 0x41, 0x01, 0xf4, 0x0b, 0x40, 0xd2, 0xfd, 0x58, 0x5b, 0x14, 0x13, 0xff,
+	0x61, 0xe1, 0x40, 0xba, 0x27, 0x39, 0x34, 0x2a, 0xea, 0x2b, 0x46, 0x05, 0xb5, 0x9b, 0x62, 0x34,
+	0xb3, 0x0a, 0xa3, 0x5b, 0x53, 0x8c, 0x4a, 0x1b, 0x30, 0xba, 0xfd, 0x0e, 0x31, 0x5a, 0x1b, 0xdf,
+	0x50, 0x7e, 0x4a, 0x17, 0x39, 0x69, 0x93, 0x0e, 0xd2, 0xe7, 0xf0, 0x44, 0x23, 0x5e, 0xd5, 0x8a,
+	0x47, 0xc7, 0x73, 0xd8, 0xee, 0xa7, 0xab, 0x05, 0x9d, 0xe3, 0xff, 0xcd, 0xc0, 0x61, 0x6c, 0xf5,
+	0x3a, 0x0a, 0xfc, 0x2a, 0xa6, 0xc0, 0xcf, 0xa2, 0xd3, 0x36, 0x0f, 0xb8, 0x51, 0x16, 0x22, 0x6f,
+	0x20, 0xaa, 0x53, 0x75, 0xa7, 0xcf, 0x44, 0x5d, 0x7c, 0x2d, 0xd6, 0x73, 0x2c, 0x7f, 0x04, 0x4f,
+	0xa4, 0x04, 0x37, 0xf1, 0xff, 0x63, 0xe0, 0x50, 0x4a, 0xf1, 0xc0, 0x72, 0x07, 0xae, 0x26, 0x4a,
+	0xaf, 0x62, 0xa2, 0xf4, 0x2c, 0x0a, 0xe1, 0x0d, 0xdc, 0x94, 0x24, 0x4b, 0x9b, 0xe4, 0xc9, 0x3f,
+	0x82, 0x6c, 0x8d, 0x18, 0x43, 0xef, 0x8a, 0x18, 0x1e, 0x2a, 0xc1, 0xc1, 0x4d, 0xf4, 0xa0, 0xbb,
+	0x66, 0xcf, 0x36, 0xbc, 0xd1, 0x90, 0x56, 0x67, 0x0f, 0x30, 0x1a, 0x4f, 0x69, 0xd1, 0x0c, 0x2f,
+	0xc0, 0x01, 0x26, 0x57, 0x8e, 0xe3, 0xcd, 0x96, 0x75, 0xeb, 0xc4, 0xed, 0x6f, 0x59, 0x78, 0x32,
+	0x8b, 0x31, 0x17, 0x79, 0x0b, 0x54, 0xe1, 0xb3, 0x98, 0x2a, 0x9c, 0x06, 0x46, 0x49, 0x78, 0x1b,
+	0xc9, 0xc2, 0xdd, 0x37, 0x9b, 0x42, 0xf9, 0x49, 0x6d, 0x38, 0x2e, 0x2b, 0xfa, 0x25, 0x56, 0x15,
+	0x49, 0xd7, 0x5a, 0x42, 0x4b, 0xcc, 0x6d, 0x95, 0xff, 0x02, 0x50, 0x50, 0x0c, 0xcf, 0xbc, 0x25,
+	0xb5, 0xcb, 0xc6, 0xb8, 0x83, 0xad, 0xd1, 0x06, 0x36, 0xd2, 0xe0, 0x20, 0xa1, 0x23, 0x81, 0x52,
+	0x6b, 0x44, 0xee, 0x74, 0x59, 0x17, 0xe3, 0x8c, 0x41, 0x6d, 0x40, 0xf3, 0x25, 0x32, 0x3a, 0x4e,
+	0xad, 0x9d, 0x03, 0xb2, 0xb9, 0x93, 0x25, 0xb5, 0x35, 0xaa, 0xc1, 0xbe, 0x9f, 0x8c, 0xcd, 0x14,
+	0x87, 0xe8, 0xa8, 0x48, 0xdb, 0xea, 0xc5, 0xa8, 0xad, 0x5e, 0x14, 0xad, 0x81, 0x77, 0xc7, 0x3d,
+	0x5d, 0x50, 0x49, 0xa2, 0xcb, 0xe0, 0xf0, 0xce, 0xb5, 0xb4, 0xd1, 0x07, 0x69, 0xad, 0x6e, 0xba,
+	0xc3, 0xe3, 0xc5, 0x9d, 0xf0, 0x33, 0x06, 0x5d, 0x06, 0x17, 0x6b, 0xac, 0x5d, 0x16, 0x7e, 0x79,
+	0x6a, 0x8b, 0x39, 0xfc, 0xf2, 0xf4, 0x4e, 0x6c, 0xe8, 0xd2, 0x15, 0x81, 0xb5, 0x25, 0xc0, 0xd3,
+	0x3d, 0xc1, 0x56, 0x94, 0xbe, 0xcd, 0x14, 0x10, 0xc7, 0x53, 0x49, 0x4e, 0x42, 0xd5, 0xcb, 0x1d,
+	0x2f, 0x2e, 0x10, 0xd1, 0x45, 0x94, 0x5e, 0xcc, 0xa0, 0x3e, 0x9e, 0xf9, 0x17, 0x40, 0xae, 0x72,
+	0x27, 0x4b, 0x4a, 0x20, 0x84, 0x61, 0x7f, 0xae, 0x30, 0x08, 0x39, 0x4a, 0x2b, 0x18, 0x96, 0xee,
+	0xed, 0x4b, 0x1a, 0x44, 0xb3, 0x98, 0x69, 0x41, 0x74, 0xbc, 0xb8, 0x02, 0x40, 0xcd, 0x28, 0xd1,
+	0x99, 0xb9, 0x75, 0xd1, 0xcc, 0x87, 0x25, 0xdc, 0xc7, 0x5c, 0x3e, 0x2d, 0xe7, 0x40, 0x3f, 0x83,
+	0xdd, 0xa9, 0xe4, 0x12, 0xbd, 0x3f, 0x9f, 0x6e, 0x4e, 0x23, 0x68, 0xc9, 0x08, 0xd2, 0x1c, 0x82,
+	0x94, 0x86, 0x90, 0xb4, 0x87, 0xcf, 0x60, 0x6f, 0x2c, 0xe5, 0x95, 0x1b, 0xd2, 0xf9, 0x55, 0xaa,
+	0x7f, 0x68, 0xff, 0x7f, 0xa2, 0xfb, 0x15, 0x78, 0x38, 0x2d, 0x99, 0xa1, 0x8c, 0x24, 0x28, 0x3b,
+	0x57, 0x48, 0xd5, 0x57, 0x74, 0x01, 0x8f, 0x66, 0x6e, 0x7c, 0x54, 0x48, 0xca, 0x02, 0x28, 0x0c,
+	0x97, 0x9e, 0x20, 0xf8, 0x38, 0x52, 0x02, 0x8e, 0x94, 0x8e, 0x93, 0x78, 0x83, 0x9e, 0x7f, 0xfe,
+	0xf3, 0x57, 0x3d, 0xd3, 0xbb, 0x19, 0x5d, 0x15, 0x3b, 0x8e, 0x55, 0x72, 0x06, 0xc4, 0xee, 0x38,
+	0xc3, 0x6e, 0x89, 0x5e, 0x3d, 0x9f, 0x4e, 0xfe, 0x14, 0xfc, 0xd4, 0xb4, 0x3d, 0x32, 0xbc, 0x36,
+	0x3a, 0xa4, 0x74, 0xfb, 0xb2, 0xd4, 0x73, 0x4a, 0x5d, 0xcb, 0xbc, 0xda, 0x09, 0x3c, 0xf6, 0xf2,
+	0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0xe8, 0x0a, 0x35, 0x98, 0x44, 0x1c, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -1969,6 +2223,10 @@
 	HeartbeatCheck(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*Heartbeat, error)
 	// Performs the reboot of the device
 	RebootDevice(ctx context.Context, in *RebootDeviceRequest, opts ...grpc.CallOption) (*RebootDeviceResponse, error)
+	// Sets the log level of the Device Manager itself
+	SetDmLogLevel(ctx context.Context, in *SetDmLogLevelRequest, opts ...grpc.CallOption) (*SetDmLogLevelResponse, error)
+	// Gets the log level at which the Device Manager is running
+	GetDmLogLevel(ctx context.Context, in *GetDmLogLevelRequest, opts ...grpc.CallOption) (*GetDmLogLevelResponse, error)
 }
 
 type nativeHWManagementServiceClient struct {
@@ -2183,6 +2441,24 @@
 	return out, nil
 }
 
+func (c *nativeHWManagementServiceClient) SetDmLogLevel(ctx context.Context, in *SetDmLogLevelRequest, opts ...grpc.CallOption) (*SetDmLogLevelResponse, error) {
+	out := new(SetDmLogLevelResponse)
+	err := c.cc.Invoke(ctx, "/dmi.NativeHWManagementService/SetDmLogLevel", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *nativeHWManagementServiceClient) GetDmLogLevel(ctx context.Context, in *GetDmLogLevelRequest, opts ...grpc.CallOption) (*GetDmLogLevelResponse, error) {
+	out := new(GetDmLogLevelResponse)
+	err := c.cc.Invoke(ctx, "/dmi.NativeHWManagementService/GetDmLogLevel", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 // NativeHWManagementServiceServer is the server API for NativeHWManagementService service.
 type NativeHWManagementServiceServer interface {
 	// Initializes context for a device and sets up required states
@@ -2230,6 +2506,10 @@
 	HeartbeatCheck(context.Context, *empty.Empty) (*Heartbeat, error)
 	// Performs the reboot of the device
 	RebootDevice(context.Context, *RebootDeviceRequest) (*RebootDeviceResponse, error)
+	// Sets the log level of the Device Manager itself
+	SetDmLogLevel(context.Context, *SetDmLogLevelRequest) (*SetDmLogLevelResponse, error)
+	// Gets the log level at which the Device Manager is running
+	GetDmLogLevel(context.Context, *GetDmLogLevelRequest) (*GetDmLogLevelResponse, error)
 }
 
 // UnimplementedNativeHWManagementServiceServer can be embedded to have forward compatible implementations.
@@ -2281,6 +2561,12 @@
 func (*UnimplementedNativeHWManagementServiceServer) RebootDevice(ctx context.Context, req *RebootDeviceRequest) (*RebootDeviceResponse, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method RebootDevice not implemented")
 }
+func (*UnimplementedNativeHWManagementServiceServer) SetDmLogLevel(ctx context.Context, req *SetDmLogLevelRequest) (*SetDmLogLevelResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method SetDmLogLevel not implemented")
+}
+func (*UnimplementedNativeHWManagementServiceServer) GetDmLogLevel(ctx context.Context, req *GetDmLogLevelRequest) (*GetDmLogLevelResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetDmLogLevel not implemented")
+}
 
 func RegisterNativeHWManagementServiceServer(s *grpc.Server, srv NativeHWManagementServiceServer) {
 	s.RegisterService(&_NativeHWManagementService_serviceDesc, srv)
@@ -2565,6 +2851,42 @@
 	return interceptor(ctx, in, info, handler)
 }
 
+func _NativeHWManagementService_SetDmLogLevel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(SetDmLogLevelRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(NativeHWManagementServiceServer).SetDmLogLevel(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/dmi.NativeHWManagementService/SetDmLogLevel",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(NativeHWManagementServiceServer).SetDmLogLevel(ctx, req.(*SetDmLogLevelRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _NativeHWManagementService_GetDmLogLevel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(GetDmLogLevelRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(NativeHWManagementServiceServer).GetDmLogLevel(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/dmi.NativeHWManagementService/GetDmLogLevel",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(NativeHWManagementServiceServer).GetDmLogLevel(ctx, req.(*GetDmLogLevelRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 var _NativeHWManagementService_serviceDesc = grpc.ServiceDesc{
 	ServiceName: "dmi.NativeHWManagementService",
 	HandlerType: (*NativeHWManagementServiceServer)(nil),
@@ -2617,6 +2939,14 @@
 			MethodName: "RebootDevice",
 			Handler:    _NativeHWManagementService_RebootDevice_Handler,
 		},
+		{
+			MethodName: "SetDmLogLevel",
+			Handler:    _NativeHWManagementService_SetDmLogLevel_Handler,
+		},
+		{
+			MethodName: "GetDmLogLevel",
+			Handler:    _NativeHWManagementService_GetDmLogLevel_Handler,
+		},
 	},
 	Streams: []grpc.StreamDesc{
 		{
diff --git a/protos/dmi/hw_management_service.proto b/protos/dmi/hw_management_service.proto
index d8b74ca..6caa7a5 100644
--- a/protos/dmi/hw_management_service.proto
+++ b/protos/dmi/hw_management_service.proto
@@ -227,6 +227,36 @@
     Uuid device_uuid = 1;

 }

 

+message SetDmLogLevelRequest {

+    LogLevel level = 1;

+}

+

+message SetDmLogLevelResponse {

+    enum Reason {

+        UNDEFINED_REASON = 0;

+        INTERNAL_ERROR = 1;

+        UNKNOWN_LOG_LEVEL = 2;

+    }

+    Status status = 1;

+    Reason reason = 2;

+    string reason_detail = 3;

+}

+

+message GetDmLogLevelRequest {

+}

+

+message GetDmLogLevelResponse {

+    enum Reason {

+        UNDEFINED_REASON = 0;

+        INTERNAL_ERROR = 1;

+    }

+

+    LogLevel level = 1;

+    Status status = 2;

+    Reason reason = 3;

+    string reason_detail = 4;

+}

+

 message Heartbeat {

     fixed32 heartbeat_signature = 1;

 }

@@ -309,4 +339,10 @@
 

     // Performs the reboot of the device

     rpc RebootDevice(RebootDeviceRequest) returns(RebootDeviceResponse);

+

+    // Sets the log level of the Device Manager itself

+    rpc SetDmLogLevel(SetDmLogLevelRequest) returns(SetDmLogLevelResponse);

+

+    // Gets the log level at which the Device Manager is running

+    rpc GetDmLogLevel(GetDmLogLevelRequest) returns(GetDmLogLevelResponse);

 }

diff --git a/python/dmi/hw_management_service_pb2.py b/python/dmi/hw_management_service_pb2.py
index 062f912..4cc9076 100644
--- a/python/dmi/hw_management_service_pb2.py
+++ b/python/dmi/hw_management_service_pb2.py
@@ -17,7 +17,7 @@
 from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
 
 
-DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1f\x64mi/hw_management_service.proto\x12\x03\x64mi\x1a\x11\x64mi/commons.proto\x1a\x0c\x64mi/hw.proto\x1a\x1bgoogle/protobuf/empty.proto\":\n\x18PhysicalInventoryRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\"\x88\x02\n\x19PhysicalInventoryResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x35\n\x06reason\x18\x02 \x01(\x0e\x32%.dmi.PhysicalInventoryResponse.Reason\x12 \n\tinventory\x18\x03 \x01(\x0b\x32\r.dmi.Hardware\x12\x15\n\rreason_detail\x18\x04 \x01(\t\"^\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x03\"v\n\x19HWComponentInfoGetRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12!\n\x0e\x63omponent_uuid\x18\x02 \x01(\x0b\x32\t.dmi.Uuid\x12\x16\n\x0e\x63omponent_name\x18\x03 \x01(\t\"\xa2\x02\n\x1aHWComponentInfoGetResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x36\n\x06reason\x18\x02 \x01(\x0e\x32&.dmi.HWComponentInfoGetResponse.Reason\x12!\n\tcomponent\x18\x03 \x01(\x0b\x32\x0e.dmi.Component\x12\x15\n\rreason_detail\x18\x04 \x01(\t\"u\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x15\n\x11UNKNOWN_COMPONENT\x10\x02\x12\x12\n\x0eINTERNAL_ERROR\x10\x03\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x04\"\xa1\x01\n\x19HWComponentInfoSetRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12!\n\x0e\x63omponent_uuid\x18\x02 \x01(\x0b\x32\t.dmi.Uuid\x12\x16\n\x0e\x63omponent_name\x18\x03 \x01(\t\x12)\n\x07\x63hanges\x18\x04 \x01(\x0b\x32\x18.dmi.ModifiableComponent\"\xa9\x02\n\x1aHWComponentInfoSetResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x36\n\x06reason\x18\x02 \x01(\x0e\x32&.dmi.HWComponentInfoSetResponse.Reason\x12\x15\n\rreason_detail\x18\x03 \x01(\t\"\x9e\x01\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x15\n\x11UNKNOWN_COMPONENT\x10\x02\x12\x12\n\x0eINVALID_PARAMS\x10\x03\x12\x12\n\x0eINTERNAL_ERROR\x10\x04\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x05\x12\x13\n\x0fSET_UNSUPPORTED\x10\x06\"\xe7\x02\n\x1bStartManagingDeviceResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x37\n\x06reason\x18\x02 \x01(\x0e\x32\'.dmi.StartManagingDeviceResponse.Reason\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x03 \x01(\x0b\x32\t.dmi.Uuid\x12\x15\n\rreason_detail\x18\x04 \x01(\t\"\xba\x01\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x1a\n\x16\x44\x45VICE_ALREADY_MANAGED\x10\x01\x12!\n\x1dOPERATION_ALREADY_IN_PROGRESS\x10\x02\x12\x12\n\x0eINVALID_PARAMS\x10\x03\x12\x12\n\x0eINTERNAL_ERROR\x10\x04\x12\x1a\n\x16\x41UTHENTICATION_FAILURE\x10\x05\x12\x17\n\x13INCOMPATIBLE_DEVICE\x10\x06\")\n\x19StopManagingDeviceRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\"\xd4\x01\n\x1aStopManagingDeviceResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x36\n\x06reason\x18\x02 \x01(\x0e\x32&.dmi.StopManagingDeviceResponse.Reason\x12\x15\n\rreason_detail\x18\x03 \x01(\t\"J\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x02\"[\n\x11ManagedDeviceInfo\x12&\n\x04info\x18\x01 \x01(\x0b\x32\x18.dmi.ModifiableComponent\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x02 \x01(\x0b\x32\t.dmi.Uuid\"\xc6\x01\n\x16ManagedDevicesResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x32\n\x06reason\x18\x02 \x01(\x0e\x32\".dmi.ManagedDevicesResponse.Reason\x12\'\n\x07\x64\x65vices\x18\x03 \x03(\x0b\x32\x16.dmi.ManagedDeviceInfo\"2\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eINTERNAL_ERROR\x10\x01\"o\n\x19SetLoggingEndpointRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12\x18\n\x10logging_endpoint\x18\x02 \x01(\t\x12\x18\n\x10logging_protocol\x18\x03 \x01(\t\"\xc3\x02\n\x19SetRemoteEndpointResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x35\n\x06reason\x18\x02 \x01(\x0e\x32%.dmi.SetRemoteEndpointResponse.Reason\x12\x15\n\rreason_detail\x18\x03 \x01(\t\"\xba\x01\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x12\x1a\n\x16LOGGING_ENDPOINT_ERROR\x10\x03\x12#\n\x1fLOGGING_ENDPOINT_PROTOCOL_ERROR\x10\x04\x12\x19\n\x15MSGBUS_ENDPOINT_ERROR\x10\x05\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x06\"\x9c\x02\n\x1aGetLoggingEndpointResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x36\n\x06reason\x18\x02 \x01(\x0e\x32&.dmi.GetLoggingEndpointResponse.Reason\x12\x18\n\x10logging_endpoint\x18\x03 \x01(\t\x12\x18\n\x10logging_protocol\x18\x04 \x01(\t\x12\x15\n\rreason_detail\x18\x05 \x01(\t\"^\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x03\"3\n\x18SetMsgBusEndpointRequest\x12\x17\n\x0fmsgbus_endpoint\x18\x01 \x01(\t\"\xeb\x01\n\x19GetMsgBusEndpointResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x35\n\x06reason\x18\x02 \x01(\x0e\x32%.dmi.GetMsgBusEndpointResponse.Reason\x12\x17\n\x0fmsgbus_endpoint\x18\x03 \x01(\t\x12\x15\n\rreason_detail\x18\x04 \x01(\t\"J\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eINTERNAL_ERROR\x10\x01\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x02\"E\n\x10\x45ntitiesLogLevel\x12\x1f\n\x08logLevel\x18\x01 \x01(\x0e\x32\r.dmi.LogLevel\x12\x10\n\x08\x65ntities\x18\x02 \x03(\t\"^\n\x12SetLogLevelRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12(\n\tloglevels\x18\x02 \x03(\x0b\x32\x15.dmi.EntitiesLogLevel\"\x92\x02\n\x13SetLogLevelResponse\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12\x1b\n\x06status\x18\x02 \x01(\x0e\x32\x0b.dmi.Status\x12/\n\x06reason\x18\x03 \x01(\x0e\x32\x1f.dmi.SetLogLevelResponse.Reason\x12\x15\n\rreason_detail\x18\x04 \x01(\t\"v\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x12\x16\n\x12UNKNOWN_LOG_ENTITY\x10\x03\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x04\"F\n\x12GetLogLevelRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12\x10\n\x08\x65ntities\x18\x02 \x03(\t\"\xbc\x02\n\x13GetLogLevelResponse\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12(\n\tlogLevels\x18\x02 \x03(\x0b\x32\x15.dmi.EntitiesLogLevel\x12\x1b\n\x06status\x18\x03 \x01(\x0e\x32\x0b.dmi.Status\x12/\n\x06reason\x18\x04 \x01(\x0e\x32\x1f.dmi.GetLogLevelResponse.Reason\x12\x15\n\rreason_detail\x18\x05 \x01(\t\"v\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x12\x16\n\x12UNKNOWN_LOG_ENTITY\x10\x03\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x04\"<\n\x1aGetLoggableEntitiesRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\"(\n\tHeartbeat\x12\x1b\n\x13heartbeat_signature\x18\x01 \x01(\x07\"5\n\x13RebootDeviceRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\"\xf7\x01\n\x14RebootDeviceResponse\x12\x1b\n\x06status\x18\x03 \x01(\x0e\x32\x0b.dmi.Status\x12\x30\n\x06reason\x18\x04 \x01(\x0e\x32 .dmi.RebootDeviceResponse.Reason\x12\x15\n\rreason_detail\x18\x05 \x01(\t\"y\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x03\x12\x19\n\x15\x44\x45VICE_IN_WRONG_STATE\x10\x04\x32\xae\t\n\x19NativeHWManagementService\x12S\n\x13StartManagingDevice\x12\x18.dmi.ModifiableComponent\x1a .dmi.StartManagingDeviceResponse0\x01\x12U\n\x12StopManagingDevice\x12\x1e.dmi.StopManagingDeviceRequest\x1a\x1f.dmi.StopManagingDeviceResponse\x12H\n\x11GetManagedDevices\x12\x16.google.protobuf.Empty\x1a\x1b.dmi.ManagedDevicesResponse\x12W\n\x14GetPhysicalInventory\x12\x1d.dmi.PhysicalInventoryRequest\x1a\x1e.dmi.PhysicalInventoryResponse0\x01\x12W\n\x12GetHWComponentInfo\x12\x1e.dmi.HWComponentInfoGetRequest\x1a\x1f.dmi.HWComponentInfoGetResponse0\x01\x12U\n\x12SetHWComponentInfo\x12\x1e.dmi.HWComponentInfoSetRequest\x1a\x1f.dmi.HWComponentInfoSetResponse\x12T\n\x12SetLoggingEndpoint\x12\x1e.dmi.SetLoggingEndpointRequest\x1a\x1e.dmi.SetRemoteEndpointResponse\x12\x46\n\x12GetLoggingEndpoint\x12\x0f.dmi.HardwareID\x1a\x1f.dmi.GetLoggingEndpointResponse\x12R\n\x11SetMsgBusEndpoint\x12\x1d.dmi.SetMsgBusEndpointRequest\x1a\x1e.dmi.SetRemoteEndpointResponse\x12K\n\x11GetMsgBusEndpoint\x12\x16.google.protobuf.Empty\x1a\x1e.dmi.GetMsgBusEndpointResponse\x12P\n\x13GetLoggableEntities\x12\x1f.dmi.GetLoggableEntitiesRequest\x1a\x18.dmi.GetLogLevelResponse\x12@\n\x0bSetLogLevel\x12\x17.dmi.SetLogLevelRequest\x1a\x18.dmi.SetLogLevelResponse\x12@\n\x0bGetLogLevel\x12\x17.dmi.GetLogLevelRequest\x1a\x18.dmi.GetLogLevelResponse\x12\x38\n\x0eHeartbeatCheck\x12\x16.google.protobuf.Empty\x1a\x0e.dmi.Heartbeat\x12\x43\n\x0cRebootDevice\x12\x18.dmi.RebootDeviceRequest\x1a\x19.dmi.RebootDeviceResponseB;Z9github.com/opencord/device-management-interface/v3/go/dmib\x06proto3')
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1f\x64mi/hw_management_service.proto\x12\x03\x64mi\x1a\x11\x64mi/commons.proto\x1a\x0c\x64mi/hw.proto\x1a\x1bgoogle/protobuf/empty.proto\":\n\x18PhysicalInventoryRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\"\x88\x02\n\x19PhysicalInventoryResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x35\n\x06reason\x18\x02 \x01(\x0e\x32%.dmi.PhysicalInventoryResponse.Reason\x12 \n\tinventory\x18\x03 \x01(\x0b\x32\r.dmi.Hardware\x12\x15\n\rreason_detail\x18\x04 \x01(\t\"^\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x03\"v\n\x19HWComponentInfoGetRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12!\n\x0e\x63omponent_uuid\x18\x02 \x01(\x0b\x32\t.dmi.Uuid\x12\x16\n\x0e\x63omponent_name\x18\x03 \x01(\t\"\xa2\x02\n\x1aHWComponentInfoGetResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x36\n\x06reason\x18\x02 \x01(\x0e\x32&.dmi.HWComponentInfoGetResponse.Reason\x12!\n\tcomponent\x18\x03 \x01(\x0b\x32\x0e.dmi.Component\x12\x15\n\rreason_detail\x18\x04 \x01(\t\"u\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x15\n\x11UNKNOWN_COMPONENT\x10\x02\x12\x12\n\x0eINTERNAL_ERROR\x10\x03\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x04\"\xa1\x01\n\x19HWComponentInfoSetRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12!\n\x0e\x63omponent_uuid\x18\x02 \x01(\x0b\x32\t.dmi.Uuid\x12\x16\n\x0e\x63omponent_name\x18\x03 \x01(\t\x12)\n\x07\x63hanges\x18\x04 \x01(\x0b\x32\x18.dmi.ModifiableComponent\"\xa9\x02\n\x1aHWComponentInfoSetResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x36\n\x06reason\x18\x02 \x01(\x0e\x32&.dmi.HWComponentInfoSetResponse.Reason\x12\x15\n\rreason_detail\x18\x03 \x01(\t\"\x9e\x01\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x15\n\x11UNKNOWN_COMPONENT\x10\x02\x12\x12\n\x0eINVALID_PARAMS\x10\x03\x12\x12\n\x0eINTERNAL_ERROR\x10\x04\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x05\x12\x13\n\x0fSET_UNSUPPORTED\x10\x06\"\xe7\x02\n\x1bStartManagingDeviceResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x37\n\x06reason\x18\x02 \x01(\x0e\x32\'.dmi.StartManagingDeviceResponse.Reason\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x03 \x01(\x0b\x32\t.dmi.Uuid\x12\x15\n\rreason_detail\x18\x04 \x01(\t\"\xba\x01\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x1a\n\x16\x44\x45VICE_ALREADY_MANAGED\x10\x01\x12!\n\x1dOPERATION_ALREADY_IN_PROGRESS\x10\x02\x12\x12\n\x0eINVALID_PARAMS\x10\x03\x12\x12\n\x0eINTERNAL_ERROR\x10\x04\x12\x1a\n\x16\x41UTHENTICATION_FAILURE\x10\x05\x12\x17\n\x13INCOMPATIBLE_DEVICE\x10\x06\")\n\x19StopManagingDeviceRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\"\xd4\x01\n\x1aStopManagingDeviceResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x36\n\x06reason\x18\x02 \x01(\x0e\x32&.dmi.StopManagingDeviceResponse.Reason\x12\x15\n\rreason_detail\x18\x03 \x01(\t\"J\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x02\"[\n\x11ManagedDeviceInfo\x12&\n\x04info\x18\x01 \x01(\x0b\x32\x18.dmi.ModifiableComponent\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x02 \x01(\x0b\x32\t.dmi.Uuid\"\xc6\x01\n\x16ManagedDevicesResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x32\n\x06reason\x18\x02 \x01(\x0e\x32\".dmi.ManagedDevicesResponse.Reason\x12\'\n\x07\x64\x65vices\x18\x03 \x03(\x0b\x32\x16.dmi.ManagedDeviceInfo\"2\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eINTERNAL_ERROR\x10\x01\"o\n\x19SetLoggingEndpointRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12\x18\n\x10logging_endpoint\x18\x02 \x01(\t\x12\x18\n\x10logging_protocol\x18\x03 \x01(\t\"\xc3\x02\n\x19SetRemoteEndpointResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x35\n\x06reason\x18\x02 \x01(\x0e\x32%.dmi.SetRemoteEndpointResponse.Reason\x12\x15\n\rreason_detail\x18\x03 \x01(\t\"\xba\x01\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x12\x1a\n\x16LOGGING_ENDPOINT_ERROR\x10\x03\x12#\n\x1fLOGGING_ENDPOINT_PROTOCOL_ERROR\x10\x04\x12\x19\n\x15MSGBUS_ENDPOINT_ERROR\x10\x05\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x06\"\x9c\x02\n\x1aGetLoggingEndpointResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x36\n\x06reason\x18\x02 \x01(\x0e\x32&.dmi.GetLoggingEndpointResponse.Reason\x12\x18\n\x10logging_endpoint\x18\x03 \x01(\t\x12\x18\n\x10logging_protocol\x18\x04 \x01(\t\x12\x15\n\rreason_detail\x18\x05 \x01(\t\"^\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x03\"3\n\x18SetMsgBusEndpointRequest\x12\x17\n\x0fmsgbus_endpoint\x18\x01 \x01(\t\"\xeb\x01\n\x19GetMsgBusEndpointResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x35\n\x06reason\x18\x02 \x01(\x0e\x32%.dmi.GetMsgBusEndpointResponse.Reason\x12\x17\n\x0fmsgbus_endpoint\x18\x03 \x01(\t\x12\x15\n\rreason_detail\x18\x04 \x01(\t\"J\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eINTERNAL_ERROR\x10\x01\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x02\"E\n\x10\x45ntitiesLogLevel\x12\x1f\n\x08logLevel\x18\x01 \x01(\x0e\x32\r.dmi.LogLevel\x12\x10\n\x08\x65ntities\x18\x02 \x03(\t\"^\n\x12SetLogLevelRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12(\n\tloglevels\x18\x02 \x03(\x0b\x32\x15.dmi.EntitiesLogLevel\"\x92\x02\n\x13SetLogLevelResponse\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12\x1b\n\x06status\x18\x02 \x01(\x0e\x32\x0b.dmi.Status\x12/\n\x06reason\x18\x03 \x01(\x0e\x32\x1f.dmi.SetLogLevelResponse.Reason\x12\x15\n\rreason_detail\x18\x04 \x01(\t\"v\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x12\x16\n\x12UNKNOWN_LOG_ENTITY\x10\x03\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x04\"F\n\x12GetLogLevelRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12\x10\n\x08\x65ntities\x18\x02 \x03(\t\"\xbc\x02\n\x13GetLogLevelResponse\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12(\n\tlogLevels\x18\x02 \x03(\x0b\x32\x15.dmi.EntitiesLogLevel\x12\x1b\n\x06status\x18\x03 \x01(\x0e\x32\x0b.dmi.Status\x12/\n\x06reason\x18\x04 \x01(\x0e\x32\x1f.dmi.GetLogLevelResponse.Reason\x12\x15\n\rreason_detail\x18\x05 \x01(\t\"v\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x12\x16\n\x12UNKNOWN_LOG_ENTITY\x10\x03\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x04\"<\n\x1aGetLoggableEntitiesRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\"4\n\x14SetDmLogLevelRequest\x12\x1c\n\x05level\x18\x01 \x01(\x0e\x32\r.dmi.LogLevel\"\xc9\x01\n\x15SetDmLogLevelResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x31\n\x06reason\x18\x02 \x01(\x0e\x32!.dmi.SetDmLogLevelResponse.Reason\x12\x15\n\rreason_detail\x18\x03 \x01(\t\"I\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eINTERNAL_ERROR\x10\x01\x12\x15\n\x11UNKNOWN_LOG_LEVEL\x10\x02\"\x16\n\x14GetDmLogLevelRequest\"\xd0\x01\n\x15GetDmLogLevelResponse\x12\x1c\n\x05level\x18\x01 \x01(\x0e\x32\r.dmi.LogLevel\x12\x1b\n\x06status\x18\x02 \x01(\x0e\x32\x0b.dmi.Status\x12\x31\n\x06reason\x18\x03 \x01(\x0e\x32!.dmi.GetDmLogLevelResponse.Reason\x12\x15\n\rreason_detail\x18\x04 \x01(\t\"2\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eINTERNAL_ERROR\x10\x01\"(\n\tHeartbeat\x12\x1b\n\x13heartbeat_signature\x18\x01 \x01(\x07\"5\n\x13RebootDeviceRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\"\xf7\x01\n\x14RebootDeviceResponse\x12\x1b\n\x06status\x18\x03 \x01(\x0e\x32\x0b.dmi.Status\x12\x30\n\x06reason\x18\x04 \x01(\x0e\x32 .dmi.RebootDeviceResponse.Reason\x12\x15\n\rreason_detail\x18\x05 \x01(\t\"y\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x03\x12\x19\n\x15\x44\x45VICE_IN_WRONG_STATE\x10\x04\x32\xbe\n\n\x19NativeHWManagementService\x12S\n\x13StartManagingDevice\x12\x18.dmi.ModifiableComponent\x1a .dmi.StartManagingDeviceResponse0\x01\x12U\n\x12StopManagingDevice\x12\x1e.dmi.StopManagingDeviceRequest\x1a\x1f.dmi.StopManagingDeviceResponse\x12H\n\x11GetManagedDevices\x12\x16.google.protobuf.Empty\x1a\x1b.dmi.ManagedDevicesResponse\x12W\n\x14GetPhysicalInventory\x12\x1d.dmi.PhysicalInventoryRequest\x1a\x1e.dmi.PhysicalInventoryResponse0\x01\x12W\n\x12GetHWComponentInfo\x12\x1e.dmi.HWComponentInfoGetRequest\x1a\x1f.dmi.HWComponentInfoGetResponse0\x01\x12U\n\x12SetHWComponentInfo\x12\x1e.dmi.HWComponentInfoSetRequest\x1a\x1f.dmi.HWComponentInfoSetResponse\x12T\n\x12SetLoggingEndpoint\x12\x1e.dmi.SetLoggingEndpointRequest\x1a\x1e.dmi.SetRemoteEndpointResponse\x12\x46\n\x12GetLoggingEndpoint\x12\x0f.dmi.HardwareID\x1a\x1f.dmi.GetLoggingEndpointResponse\x12R\n\x11SetMsgBusEndpoint\x12\x1d.dmi.SetMsgBusEndpointRequest\x1a\x1e.dmi.SetRemoteEndpointResponse\x12K\n\x11GetMsgBusEndpoint\x12\x16.google.protobuf.Empty\x1a\x1e.dmi.GetMsgBusEndpointResponse\x12P\n\x13GetLoggableEntities\x12\x1f.dmi.GetLoggableEntitiesRequest\x1a\x18.dmi.GetLogLevelResponse\x12@\n\x0bSetLogLevel\x12\x17.dmi.SetLogLevelRequest\x1a\x18.dmi.SetLogLevelResponse\x12@\n\x0bGetLogLevel\x12\x17.dmi.GetLogLevelRequest\x1a\x18.dmi.GetLogLevelResponse\x12\x38\n\x0eHeartbeatCheck\x12\x16.google.protobuf.Empty\x1a\x0e.dmi.Heartbeat\x12\x43\n\x0cRebootDevice\x12\x18.dmi.RebootDeviceRequest\x1a\x19.dmi.RebootDeviceResponse\x12\x46\n\rSetDmLogLevel\x12\x19.dmi.SetDmLogLevelRequest\x1a\x1a.dmi.SetDmLogLevelResponse\x12\x46\n\rGetDmLogLevel\x12\x19.dmi.GetDmLogLevelRequest\x1a\x1a.dmi.GetDmLogLevelResponseB;Z9github.com/opencord/device-management-interface/v3/go/dmib\x06proto3')
 
 
 
@@ -43,6 +43,10 @@
 _GETLOGLEVELREQUEST = DESCRIPTOR.message_types_by_name['GetLogLevelRequest']
 _GETLOGLEVELRESPONSE = DESCRIPTOR.message_types_by_name['GetLogLevelResponse']
 _GETLOGGABLEENTITIESREQUEST = DESCRIPTOR.message_types_by_name['GetLoggableEntitiesRequest']
+_SETDMLOGLEVELREQUEST = DESCRIPTOR.message_types_by_name['SetDmLogLevelRequest']
+_SETDMLOGLEVELRESPONSE = DESCRIPTOR.message_types_by_name['SetDmLogLevelResponse']
+_GETDMLOGLEVELREQUEST = DESCRIPTOR.message_types_by_name['GetDmLogLevelRequest']
+_GETDMLOGLEVELRESPONSE = DESCRIPTOR.message_types_by_name['GetDmLogLevelResponse']
 _HEARTBEAT = DESCRIPTOR.message_types_by_name['Heartbeat']
 _REBOOTDEVICEREQUEST = DESCRIPTOR.message_types_by_name['RebootDeviceRequest']
 _REBOOTDEVICERESPONSE = DESCRIPTOR.message_types_by_name['RebootDeviceResponse']
@@ -57,6 +61,8 @@
 _GETMSGBUSENDPOINTRESPONSE_REASON = _GETMSGBUSENDPOINTRESPONSE.enum_types_by_name['Reason']
 _SETLOGLEVELRESPONSE_REASON = _SETLOGLEVELRESPONSE.enum_types_by_name['Reason']
 _GETLOGLEVELRESPONSE_REASON = _GETLOGLEVELRESPONSE.enum_types_by_name['Reason']
+_SETDMLOGLEVELRESPONSE_REASON = _SETDMLOGLEVELRESPONSE.enum_types_by_name['Reason']
+_GETDMLOGLEVELRESPONSE_REASON = _GETDMLOGLEVELRESPONSE.enum_types_by_name['Reason']
 _REBOOTDEVICERESPONSE_REASON = _REBOOTDEVICERESPONSE.enum_types_by_name['Reason']
 PhysicalInventoryRequest = _reflection.GeneratedProtocolMessageType('PhysicalInventoryRequest', (_message.Message,), {
   'DESCRIPTOR' : _PHYSICALINVENTORYREQUEST,
@@ -212,6 +218,34 @@
   })
 _sym_db.RegisterMessage(GetLoggableEntitiesRequest)
 
+SetDmLogLevelRequest = _reflection.GeneratedProtocolMessageType('SetDmLogLevelRequest', (_message.Message,), {
+  'DESCRIPTOR' : _SETDMLOGLEVELREQUEST,
+  '__module__' : 'dmi.hw_management_service_pb2'
+  # @@protoc_insertion_point(class_scope:dmi.SetDmLogLevelRequest)
+  })
+_sym_db.RegisterMessage(SetDmLogLevelRequest)
+
+SetDmLogLevelResponse = _reflection.GeneratedProtocolMessageType('SetDmLogLevelResponse', (_message.Message,), {
+  'DESCRIPTOR' : _SETDMLOGLEVELRESPONSE,
+  '__module__' : 'dmi.hw_management_service_pb2'
+  # @@protoc_insertion_point(class_scope:dmi.SetDmLogLevelResponse)
+  })
+_sym_db.RegisterMessage(SetDmLogLevelResponse)
+
+GetDmLogLevelRequest = _reflection.GeneratedProtocolMessageType('GetDmLogLevelRequest', (_message.Message,), {
+  'DESCRIPTOR' : _GETDMLOGLEVELREQUEST,
+  '__module__' : 'dmi.hw_management_service_pb2'
+  # @@protoc_insertion_point(class_scope:dmi.GetDmLogLevelRequest)
+  })
+_sym_db.RegisterMessage(GetDmLogLevelRequest)
+
+GetDmLogLevelResponse = _reflection.GeneratedProtocolMessageType('GetDmLogLevelResponse', (_message.Message,), {
+  'DESCRIPTOR' : _GETDMLOGLEVELRESPONSE,
+  '__module__' : 'dmi.hw_management_service_pb2'
+  # @@protoc_insertion_point(class_scope:dmi.GetDmLogLevelResponse)
+  })
+_sym_db.RegisterMessage(GetDmLogLevelResponse)
+
 Heartbeat = _reflection.GeneratedProtocolMessageType('Heartbeat', (_message.Message,), {
   'DESCRIPTOR' : _HEARTBEAT,
   '__module__' : 'dmi.hw_management_service_pb2'
@@ -304,14 +338,26 @@
   _GETLOGLEVELRESPONSE_REASON._serialized_end=3679
   _GETLOGGABLEENTITIESREQUEST._serialized_start=4072
   _GETLOGGABLEENTITIESREQUEST._serialized_end=4132
-  _HEARTBEAT._serialized_start=4134
-  _HEARTBEAT._serialized_end=4174
-  _REBOOTDEVICEREQUEST._serialized_start=4176
-  _REBOOTDEVICEREQUEST._serialized_end=4229
-  _REBOOTDEVICERESPONSE._serialized_start=4232
-  _REBOOTDEVICERESPONSE._serialized_end=4479
-  _REBOOTDEVICERESPONSE_REASON._serialized_start=4358
-  _REBOOTDEVICERESPONSE_REASON._serialized_end=4479
-  _NATIVEHWMANAGEMENTSERVICE._serialized_start=4482
-  _NATIVEHWMANAGEMENTSERVICE._serialized_end=5680
+  _SETDMLOGLEVELREQUEST._serialized_start=4134
+  _SETDMLOGLEVELREQUEST._serialized_end=4186
+  _SETDMLOGLEVELRESPONSE._serialized_start=4189
+  _SETDMLOGLEVELRESPONSE._serialized_end=4390
+  _SETDMLOGLEVELRESPONSE_REASON._serialized_start=4317
+  _SETDMLOGLEVELRESPONSE_REASON._serialized_end=4390
+  _GETDMLOGLEVELREQUEST._serialized_start=4392
+  _GETDMLOGLEVELREQUEST._serialized_end=4414
+  _GETDMLOGLEVELRESPONSE._serialized_start=4417
+  _GETDMLOGLEVELRESPONSE._serialized_end=4625
+  _GETDMLOGLEVELRESPONSE_REASON._serialized_start=2168
+  _GETDMLOGLEVELRESPONSE_REASON._serialized_end=2218
+  _HEARTBEAT._serialized_start=4627
+  _HEARTBEAT._serialized_end=4667
+  _REBOOTDEVICEREQUEST._serialized_start=4669
+  _REBOOTDEVICEREQUEST._serialized_end=4722
+  _REBOOTDEVICERESPONSE._serialized_start=4725
+  _REBOOTDEVICERESPONSE._serialized_end=4972
+  _REBOOTDEVICERESPONSE_REASON._serialized_start=4851
+  _REBOOTDEVICERESPONSE_REASON._serialized_end=4972
+  _NATIVEHWMANAGEMENTSERVICE._serialized_start=4975
+  _NATIVEHWMANAGEMENTSERVICE._serialized_end=6317
 # @@protoc_insertion_point(module_scope)
diff --git a/python/dmi/hw_management_service_pb2_grpc.py b/python/dmi/hw_management_service_pb2_grpc.py
index 3e78fa1..574490a 100644
--- a/python/dmi/hw_management_service_pb2_grpc.py
+++ b/python/dmi/hw_management_service_pb2_grpc.py
@@ -91,6 +91,16 @@
                 request_serializer=dmi_dot_hw__management__service__pb2.RebootDeviceRequest.SerializeToString,
                 response_deserializer=dmi_dot_hw__management__service__pb2.RebootDeviceResponse.FromString,
                 )
+        self.SetDmLogLevel = channel.unary_unary(
+                '/dmi.NativeHWManagementService/SetDmLogLevel',
+                request_serializer=dmi_dot_hw__management__service__pb2.SetDmLogLevelRequest.SerializeToString,
+                response_deserializer=dmi_dot_hw__management__service__pb2.SetDmLogLevelResponse.FromString,
+                )
+        self.GetDmLogLevel = channel.unary_unary(
+                '/dmi.NativeHWManagementService/GetDmLogLevel',
+                request_serializer=dmi_dot_hw__management__service__pb2.GetDmLogLevelRequest.SerializeToString,
+                response_deserializer=dmi_dot_hw__management__service__pb2.GetDmLogLevelResponse.FromString,
+                )
 
 
 class NativeHWManagementServiceServicer(object):
@@ -216,6 +226,20 @@
         context.set_details('Method not implemented!')
         raise NotImplementedError('Method not implemented!')
 
+    def SetDmLogLevel(self, request, context):
+        """Sets the log level of the Device Manager itself

+        """
+        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+        context.set_details('Method not implemented!')
+        raise NotImplementedError('Method not implemented!')
+
+    def GetDmLogLevel(self, request, context):
+        """Gets the log level at which the Device Manager is running

+        """
+        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+        context.set_details('Method not implemented!')
+        raise NotImplementedError('Method not implemented!')
+
 
 def add_NativeHWManagementServiceServicer_to_server(servicer, server):
     rpc_method_handlers = {
@@ -294,6 +318,16 @@
                     request_deserializer=dmi_dot_hw__management__service__pb2.RebootDeviceRequest.FromString,
                     response_serializer=dmi_dot_hw__management__service__pb2.RebootDeviceResponse.SerializeToString,
             ),
+            'SetDmLogLevel': grpc.unary_unary_rpc_method_handler(
+                    servicer.SetDmLogLevel,
+                    request_deserializer=dmi_dot_hw__management__service__pb2.SetDmLogLevelRequest.FromString,
+                    response_serializer=dmi_dot_hw__management__service__pb2.SetDmLogLevelResponse.SerializeToString,
+            ),
+            'GetDmLogLevel': grpc.unary_unary_rpc_method_handler(
+                    servicer.GetDmLogLevel,
+                    request_deserializer=dmi_dot_hw__management__service__pb2.GetDmLogLevelRequest.FromString,
+                    response_serializer=dmi_dot_hw__management__service__pb2.GetDmLogLevelResponse.SerializeToString,
+            ),
     }
     generic_handler = grpc.method_handlers_generic_handler(
             'dmi.NativeHWManagementService', rpc_method_handlers)
@@ -558,3 +592,37 @@
             dmi_dot_hw__management__service__pb2.RebootDeviceResponse.FromString,
             options, channel_credentials,
             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+
+    @staticmethod
+    def SetDmLogLevel(request,
+            target,
+            options=(),
+            channel_credentials=None,
+            call_credentials=None,
+            insecure=False,
+            compression=None,
+            wait_for_ready=None,
+            timeout=None,
+            metadata=None):
+        return grpc.experimental.unary_unary(request, target, '/dmi.NativeHWManagementService/SetDmLogLevel',
+            dmi_dot_hw__management__service__pb2.SetDmLogLevelRequest.SerializeToString,
+            dmi_dot_hw__management__service__pb2.SetDmLogLevelResponse.FromString,
+            options, channel_credentials,
+            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+
+    @staticmethod
+    def GetDmLogLevel(request,
+            target,
+            options=(),
+            channel_credentials=None,
+            call_credentials=None,
+            insecure=False,
+            compression=None,
+            wait_for_ready=None,
+            timeout=None,
+            metadata=None):
+        return grpc.experimental.unary_unary(request, target, '/dmi.NativeHWManagementService/GetDmLogLevel',
+            dmi_dot_hw__management__service__pb2.GetDmLogLevelRequest.SerializeToString,
+            dmi_dot_hw__management__service__pb2.GetDmLogLevelResponse.FromString,
+            options, channel_credentials,
+            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)