VOL-4019: Initial commit with grpc nbi, sbi, etcd, kafka and hw management rpcs.

Change-Id: I78feaf7da284028fc61f42c5e0c5f56e72fe9e78
diff --git a/pkg/models/device/v1/models.go b/pkg/models/device/v1/models.go
new file mode 100644
index 0000000..cf0a1ad
--- /dev/null
+++ b/pkg/models/device/v1/models.go
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2020-present Open Networking Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Package contains version v1 of Device Info
+package v1
+
+import (
+	"github.com/golang/protobuf/ptypes/timestamp"
+	"github.com/opencord/device-management-interface/go/dmi"
+)
+
+type DeviceRecordV1_0 struct {
+	Uuid         string               `json:"uuid,omitempty"`
+	Name         string               `json:"name,omitempty"`
+	Make         string               `json:"make,omitempty"`
+	Class        dmi.ComponentType    `json:"class,omitempty"`
+	Parent       *dmi.Component       `json:"parent,omitempty"`
+	ParentRelPos int32                `json:"parent_rel_pos,omitempty"`
+	Alias        string               `json:"alias,omitempty"`
+	AssetId      string               `json:"asset_id,omitempty"`
+	Uri          string               `json:"uri,omitempty"`
+	HardwareRev  string               `json:"hardware_rev,omitempty"`
+	FirmwareRev  string               `json:"firmware_rev,omitempty"`
+	SoftwareRev  string               `json:"software_rev,omitempty"`
+	SerialNum    string               `json:"serial_num,omitempty"`
+	ModelName    string               `json:"model_name,omitempty"`
+	MfgName      string               `json:"mfg_name,omitempty"`
+	MfgDate      *timestamp.Timestamp `json:"mfg_date,omitempty"`
+	State        *dmi.ComponentState  `json:"state,omitempty"`
+	Inventories  map[string]string    `json:"inventories,omitempty"`
+	Children     []string             `json:"children,omitempty"` // Children stores uuid of all direct child
+	Logging      LoggingInfo          `json:"logging,omitempty"`
+	LastChange   *timestamp.Timestamp `json:"last_change,omitempty"`
+	LastBooted   *timestamp.Timestamp `json:"last_booted,omitempty"` // Timestamp at which the hardware last booted
+}
+
+type LoggingInfo struct {
+	EndPoint         string                  `json:"end_point,omitempty"`
+	Protocol         string                  `json:"protocol,omitempty"`
+	LogLevel         dmi.LogLevel            `json:"log_level,omitempty"`
+	LoggableEntities map[string]dmi.LogLevel `json:"loggable_entities,omitempty"`
+}