summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build/crds/devices/devices_v1beta1_device.yaml23
-rwxr-xr-xhack/generate-dmi-proto.sh4
-rw-r--r--manifests/charts/cloudcore/crds/devices_v1beta1_device.yaml23
-rw-r--r--pkg/apis/devices/v1beta1/device_instance_types.go23
-rw-r--r--pkg/apis/devices/v1beta1/zz_generated.deepcopy.go99
-rw-r--r--pkg/apis/dmi/v1beta1/api.pb.go525
-rw-r--r--pkg/apis/dmi/v1beta1/api.proto19
-rw-r--r--staging/src/github.com/kubeedge/mapper-generator/_template/README.md100
-rw-r--r--staging/src/github.com/kubeedge/mapper-generator/_template/mapper/config.yaml2
-rw-r--r--staging/src/github.com/kubeedge/mapper-generator/_template/mapper/data/dbmethod/influx/client.go77
-rw-r--r--staging/src/github.com/kubeedge/mapper-generator/_template/mapper/data/dbmethod/influxdb2/client.go76
-rw-r--r--staging/src/github.com/kubeedge/mapper-generator/_template/mapper/data/publish/http/client.go14
-rw-r--r--staging/src/github.com/kubeedge/mapper-generator/_template/mapper/data/publish/mqtt/client.go6
-rw-r--r--staging/src/github.com/kubeedge/mapper-generator/_template/mapper/device/device.go19
-rw-r--r--staging/src/github.com/kubeedge/mapper-generator/_template/mapper/driver/devicetype.go6
-rw-r--r--staging/src/github.com/kubeedge/mapper-generator/_template/mapper/driver/driver.go10
-rw-r--r--staging/src/github.com/kubeedge/mapper-generator/pkg/common/configmaptype.go32
-rw-r--r--staging/src/github.com/kubeedge/mapper-generator/pkg/dmi-api/api.pb.go525
-rw-r--r--staging/src/github.com/kubeedge/mapper-generator/pkg/dmi-api/api.proto19
-rw-r--r--staging/src/github.com/kubeedge/mapper-generator/pkg/grpcserver/device.go8
-rw-r--r--staging/src/github.com/kubeedge/mapper-generator/pkg/grpcserver/server.go4
-rw-r--r--staging/src/github.com/kubeedge/mapper-generator/pkg/httpserver/server.go6
-rw-r--r--staging/src/github.com/kubeedge/mapper-generator/pkg/util/parse/grpc.go17
-rw-r--r--staging/src/github.com/kubeedge/mapper-generator/pkg/util/parse/parse.go101
24 files changed, 762 insertions, 976 deletions
diff --git a/build/crds/devices/devices_v1beta1_device.yaml b/build/crds/devices/devices_v1beta1_device.yaml
index f3fd9cdf2..313b282de 100644
--- a/build/crds/devices/devices_v1beta1_device.yaml
+++ b/build/crds/devices/devices_v1beta1_device.yaml
@@ -600,11 +600,11 @@ spec:
data to database, please ensure that the mapper can access
the destination address.
properties:
- influx:
+ influxdb2:
description: method configuration for database
properties:
- configData:
- description: ConfigData of influx database
+ influxdb2ClientConfig:
+ description: Config of influx database
properties:
bucket:
description: Bucket of the user in influx database
@@ -616,9 +616,9 @@ spec:
description: Url of influx database
type: string
type: object
- dataStandard:
- description: DataStandard of the data to influx
- database
+ influxdb2DataConfig:
+ description: config of device data when push to
+ influx database
properties:
fieldKey:
description: FieldKey of the user data
@@ -626,12 +626,11 @@ spec:
measurement:
description: Measurement of the user data
type: string
- tagKey:
- description: TagKey of the user data
- type: string
- tagValue:
- description: TagValue of the user data
- type: string
+ tag:
+ additionalProperties:
+ type: string
+ description: the tag of device data
+ type: object
type: object
type: object
type: object
diff --git a/hack/generate-dmi-proto.sh b/hack/generate-dmi-proto.sh
index ad8cb881b..7ed709c46 100755
--- a/hack/generate-dmi-proto.sh
+++ b/hack/generate-dmi-proto.sh
@@ -1,5 +1,5 @@
#!/usr/bin/env bash
-# Copyright 2022 The KubeEdge Authors.
+# Copyright 2023 The KubeEdge Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -48,7 +48,7 @@ func NewDeviceManageClient(cc grpc.ClientConnInterface) DeviceManagerServiceClie
'
# shellcheck disable=SC1004
-COPY_RIGHT_INFO_LINE_1='/*\nCopyright 2022 The KubeEdge Authors.\n'
+COPY_RIGHT_INFO_LINE_1='/*\nCopyright 2023 The KubeEdge Authors.\n'
COPY_RIGHT_INFO_LINE_2='Licensed under the Apache License, Version 2.0 (the "License");'
COPY_RIGHT_INFO_LINE_3='you may not use this file except in compliance with the License.'
COPY_RIGHT_INFO_LINE_4='You may obtain a copy of the License at\n'
diff --git a/manifests/charts/cloudcore/crds/devices_v1beta1_device.yaml b/manifests/charts/cloudcore/crds/devices_v1beta1_device.yaml
index f3fd9cdf2..313b282de 100644
--- a/manifests/charts/cloudcore/crds/devices_v1beta1_device.yaml
+++ b/manifests/charts/cloudcore/crds/devices_v1beta1_device.yaml
@@ -600,11 +600,11 @@ spec:
data to database, please ensure that the mapper can access
the destination address.
properties:
- influx:
+ influxdb2:
description: method configuration for database
properties:
- configData:
- description: ConfigData of influx database
+ influxdb2ClientConfig:
+ description: Config of influx database
properties:
bucket:
description: Bucket of the user in influx database
@@ -616,9 +616,9 @@ spec:
description: Url of influx database
type: string
type: object
- dataStandard:
- description: DataStandard of the data to influx
- database
+ influxdb2DataConfig:
+ description: config of device data when push to
+ influx database
properties:
fieldKey:
description: FieldKey of the user data
@@ -626,12 +626,11 @@ spec:
measurement:
description: Measurement of the user data
type: string
- tagKey:
- description: TagKey of the user data
- type: string
- tagValue:
- description: TagValue of the user data
- type: string
+ tag:
+ additionalProperties:
+ type: string
+ description: the tag of device data
+ type: object
type: object
type: object
type: object
diff --git a/pkg/apis/devices/v1beta1/device_instance_types.go b/pkg/apis/devices/v1beta1/device_instance_types.go
index d61582165..80f923f25 100644
--- a/pkg/apis/devices/v1beta1/device_instance_types.go
+++ b/pkg/apis/devices/v1beta1/device_instance_types.go
@@ -155,19 +155,19 @@ type PushMethodMQTT struct {
type DBMethodConfig struct {
// method configuration for database
// +optional
- Influx *DBMethodInflux `json:"influx,omitempty"`
+ Influxdb2 *DBMethodInfluxdb2 `json:"influxdb2,omitempty"`
}
-type DBMethodInflux struct {
- // ConfigData of influx database
+type DBMethodInfluxdb2 struct {
+ // Config of influx database
// +optional
- ConfigData *ConfigData `json:"configData"`
- // DataStandard of the data to influx database
+ Influxdb2ClientConfig *Influxdb2ClientConfig `json:"influxdb2ClientConfig"`
+ // config of device data when push to influx database
// +optional
- DataStandard *DataStandard `json:"dataStandard"`
+ Influxdb2DataConfig *Influxdb2DataConfig `json:"influxdb2DataConfig"`
}
-type ConfigData struct {
+type Influxdb2ClientConfig struct {
// Url of influx database
// +optional
URL string `json:"url,omitempty"`
@@ -179,16 +179,13 @@ type ConfigData struct {
Bucket string `json:"bucket,omitempty"`
}
-type DataStandard struct {
+type Influxdb2DataConfig struct {
// Measurement of the user data
// +optional
Measurement string `json:"measurement,omitempty"`
- // TagKey of the user data
+ // the tag of device data
// +optional
- TagKey string `json:"tagKey,omitempty"`
- // TagValue of the user data
- // +optional
- TagValue string `json:"tagValue,omitempty"`
+ Tag map[string]string `json:"tag,omitempty"`
// FieldKey of the user data
// +optional
FieldKey string `json:"fieldKey,omitempty"`
diff --git a/pkg/apis/devices/v1beta1/zz_generated.deepcopy.go b/pkg/apis/devices/v1beta1/zz_generated.deepcopy.go
index a8ecec464..ed6351149 100644
--- a/pkg/apis/devices/v1beta1/zz_generated.deepcopy.go
+++ b/pkg/apis/devices/v1beta1/zz_generated.deepcopy.go
@@ -27,27 +27,11 @@ import (
)
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ConfigData) DeepCopyInto(out *ConfigData) {
- *out = *in
- return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigData.
-func (in *ConfigData) DeepCopy() *ConfigData {
- if in == nil {
- return nil
- }
- out := new(ConfigData)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *DBMethodConfig) DeepCopyInto(out *DBMethodConfig) {
*out = *in
- if in.Influx != nil {
- in, out := &in.Influx, &out.Influx
- *out = new(DBMethodInflux)
+ if in.Influxdb2 != nil {
+ in, out := &in.Influxdb2, &out.Influxdb2
+ *out = new(DBMethodInfluxdb2)
(*in).DeepCopyInto(*out)
}
return
@@ -64,43 +48,27 @@ func (in *DBMethodConfig) DeepCopy() *DBMethodConfig {
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *DBMethodInflux) DeepCopyInto(out *DBMethodInflux) {
+func (in *DBMethodInfluxdb2) DeepCopyInto(out *DBMethodInfluxdb2) {
*out = *in
- if in.ConfigData != nil {
- in, out := &in.ConfigData, &out.ConfigData
- *out = new(ConfigData)
+ if in.Influxdb2ClientConfig != nil {
+ in, out := &in.Influxdb2ClientConfig, &out.Influxdb2ClientConfig
+ *out = new(Influxdb2ClientConfig)
**out = **in
}
- if in.DataStandard != nil {
- in, out := &in.DataStandard, &out.DataStandard
- *out = new(DataStandard)
- **out = **in
- }
- return
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DBMethodInflux.
-func (in *DBMethodInflux) DeepCopy() *DBMethodInflux {
- if in == nil {
- return nil
+ if in.Influxdb2DataConfig != nil {
+ in, out := &in.Influxdb2DataConfig, &out.Influxdb2DataConfig
+ *out = new(Influxdb2DataConfig)
+ (*in).DeepCopyInto(*out)
}
- out := new(DBMethodInflux)
- in.DeepCopyInto(out)
- return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *DataStandard) DeepCopyInto(out *DataStandard) {
- *out = *in
return
}
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DataStandard.
-func (in *DataStandard) DeepCopy() *DataStandard {
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DBMethodInfluxdb2.
+func (in *DBMethodInfluxdb2) DeepCopy() *DBMethodInfluxdb2 {
if in == nil {
return nil
}
- out := new(DataStandard)
+ out := new(DBMethodInfluxdb2)
in.DeepCopyInto(out)
return out
}
@@ -323,6 +291,45 @@ func (in *DeviceStatus) DeepCopy() *DeviceStatus {
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *Influxdb2ClientConfig) DeepCopyInto(out *Influxdb2ClientConfig) {
+ *out = *in
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Influxdb2ClientConfig.
+func (in *Influxdb2ClientConfig) DeepCopy() *Influxdb2ClientConfig {
+ if in == nil {
+ return nil
+ }
+ out := new(Influxdb2ClientConfig)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *Influxdb2DataConfig) DeepCopyInto(out *Influxdb2DataConfig) {
+ *out = *in
+ if in.Tag != nil {
+ in, out := &in.Tag, &out.Tag
+ *out = make(map[string]string, len(*in))
+ for key, val := range *in {
+ (*out)[key] = val
+ }
+ }
+ return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Influxdb2DataConfig.
+func (in *Influxdb2DataConfig) DeepCopy() *Influxdb2DataConfig {
+ if in == nil {
+ return nil
+ }
+ out := new(Influxdb2DataConfig)
+ in.DeepCopyInto(out)
+ return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ModelProperty) DeepCopyInto(out *ModelProperty) {
*out = *in
return
diff --git a/pkg/apis/dmi/v1beta1/api.pb.go b/pkg/apis/dmi/v1beta1/api.pb.go
index 80eeae108..19e252dbd 100644
--- a/pkg/apis/dmi/v1beta1/api.pb.go
+++ b/pkg/apis/dmi/v1beta1/api.pb.go
@@ -1088,7 +1088,7 @@ type DBMethod struct {
unknownFields protoimpl.UnknownFields
// the config of database .
- Influx *DBMethodInflux `protobuf:"bytes,1,opt,name=influx,proto3" json:"influx,omitempty"`
+ Influxdb2 *DBMethodInfluxdb2 `protobuf:"bytes,1,opt,name=influxdb2,proto3" json:"influxdb2,omitempty"`
}
func (x *DBMethod) Reset() {
@@ -1123,25 +1123,25 @@ func (*DBMethod) Descriptor() ([]byte, []int) {
return file_api_proto_rawDescGZIP(), []int{15}
}
-func (x *DBMethod) GetInflux() *DBMethodInflux {
+func (x *DBMethod) GetInfluxdb2() *DBMethodInfluxdb2 {
if x != nil {
- return x.Influx
+ return x.Influxdb2
}
return nil
}
-type DBMethodInflux struct {
+type DBMethodInfluxdb2 struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// the config of influx database.
- ConfigData *ConfigData `protobuf:"bytes,1,opt,name=configData,proto3" json:"configData,omitempty"`
- DataStandard *DataStandard `protobuf:"bytes,2,opt,name=dataStandard,proto3" json:"dataStandard,omitempty"`
+ Influxdb2ClientConfig *Influxdb2ClientConfig `protobuf:"bytes,1,opt,name=influxdb2ClientConfig,proto3" json:"influxdb2ClientConfig,omitempty"`
+ Influxdb2DataConfig *Influxdb2DataConfig `protobuf:"bytes,2,opt,name=influxdb2DataConfig,proto3" json:"influxdb2DataConfig,omitempty"`
}
-func (x *DBMethodInflux) Reset() {
- *x = DBMethodInflux{}
+func (x *DBMethodInfluxdb2) Reset() {
+ *x = DBMethodInfluxdb2{}
if protoimpl.UnsafeEnabled {
mi := &file_api_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -1149,13 +1149,13 @@ func (x *DBMethodInflux) Reset() {
}
}
-func (x *DBMethodInflux) String() string {
+func (x *DBMethodInfluxdb2) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*DBMethodInflux) ProtoMessage() {}
+func (*DBMethodInfluxdb2) ProtoMessage() {}
-func (x *DBMethodInflux) ProtoReflect() protoreflect.Message {
+func (x *DBMethodInfluxdb2) ProtoReflect() protoreflect.Message {
mi := &file_api_proto_msgTypes[16]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -1167,39 +1167,38 @@ func (x *DBMethodInflux) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use DBMethodInflux.ProtoReflect.Descriptor instead.
-func (*DBMethodInflux) Descriptor() ([]byte, []int) {
+// Deprecated: Use DBMethodInfluxdb2.ProtoReflect.Descriptor instead.
+func (*DBMethodInfluxdb2) Descriptor() ([]byte, []int) {
return file_api_proto_rawDescGZIP(), []int{16}
}
-func (x *DBMethodInflux) GetConfigData() *ConfigData {
+func (x *DBMethodInfluxdb2) GetInfluxdb2ClientConfig() *Influxdb2ClientConfig {
if x != nil {
- return x.ConfigData
+ return x.Influxdb2ClientConfig
}
return nil
}
-func (x *DBMethodInflux) GetDataStandard() *DataStandard {
+func (x *DBMethodInfluxdb2) GetInfluxdb2DataConfig() *Influxdb2DataConfig {
if x != nil {
- return x.DataStandard
+ return x.Influxdb2DataConfig
}
return nil
}
-type DataStandard struct {
+type Influxdb2DataConfig struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- // datastandard when push data to influx
- Measurement string `protobuf:"bytes,1,opt,name=measurement,proto3" json:"measurement,omitempty"`
- TagKey string `protobuf:"bytes,2,opt,name=tagKey,proto3" json:"tagKey,omitempty"`
- TagValue string `protobuf:"bytes,3,opt,name=tagValue,proto3" json:"tagValue,omitempty"`
- FieldKey string `protobuf:"bytes,4,opt,name=fieldKey,proto3" json:"fieldKey,omitempty"`
+ // data config when push data to influx
+ Measurement string `protobuf:"bytes,1,opt,name=measurement,proto3" json:"measurement,omitempty"`
+ Tag map[string]string `protobuf:"bytes,2,rep,name=tag,proto3" json:"tag,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ FieldKey string `protobuf:"bytes,3,opt,name=fieldKey,proto3" json:"fieldKey,omitempty"`
}
-func (x *DataStandard) Reset() {
- *x = DataStandard{}
+func (x *Influxdb2DataConfig) Reset() {
+ *x = Influxdb2DataConfig{}
if protoimpl.UnsafeEnabled {
mi := &file_api_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -1207,13 +1206,13 @@ func (x *DataStandard) Reset() {
}
}
-func (x *DataStandard) String() string {
+func (x *Influxdb2DataConfig) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*DataStandard) ProtoMessage() {}
+func (*Influxdb2DataConfig) ProtoMessage() {}
-func (x *DataStandard) ProtoReflect() protoreflect.Message {
+func (x *Influxdb2DataConfig) ProtoReflect() protoreflect.Message {
mi := &file_api_proto_msgTypes[17]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -1225,40 +1224,33 @@ func (x *DataStandard) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use DataStandard.ProtoReflect.Descriptor instead.
-func (*DataStandard) Descriptor() ([]byte, []int) {
+// Deprecated: Use Influxdb2DataConfig.ProtoReflect.Descriptor instead.
+func (*Influxdb2DataConfig) Descriptor() ([]byte, []int) {
return file_api_proto_rawDescGZIP(), []int{17}
}
-func (x *DataStandard) GetMeasurement() string {
+func (x *Influxdb2DataConfig) GetMeasurement() string {
if x != nil {
return x.Measurement
}
return ""
}
-func (x *DataStandard) GetTagKey() string {
+func (x *Influxdb2DataConfig) GetTag() map[string]string {
if x != nil {
- return x.TagKey
+ return x.Tag
}
- return ""
-}
-
-func (x *DataStandard) GetTagValue() string {
- if x != nil {
- return x.TagValue
- }
- return ""
+ return nil
}
-func (x *DataStandard) GetFieldKey() string {
+func (x *Influxdb2DataConfig) GetFieldKey() string {
if x != nil {
return x.FieldKey
}
return ""
}
-type ConfigData struct {
+type Influxdb2ClientConfig struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
@@ -1271,8 +1263,8 @@ type ConfigData struct {
Bucket string `protobuf:"bytes,3,opt,name=bucket,proto3" json:"bucket,omitempty"`
}
-func (x *ConfigData) Reset() {
- *x = ConfigData{}
+func (x *Influxdb2ClientConfig) Reset() {
+ *x = Influxdb2ClientConfig{}
if protoimpl.UnsafeEnabled {
mi := &file_api_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -1280,13 +1272,13 @@ func (x *ConfigData) Reset() {
}
}
-func (x *ConfigData) String() string {
+func (x *Influxdb2ClientConfig) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ConfigData) ProtoMessage() {}
+func (*Influxdb2ClientConfig) ProtoMessage() {}
-func (x *ConfigData) ProtoReflect() protoreflect.Message {
+func (x *Influxdb2ClientConfig) ProtoReflect() protoreflect.Message {
mi := &file_api_proto_msgTypes[18]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -1298,26 +1290,26 @@ func (x *ConfigData) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ConfigData.ProtoReflect.Descriptor instead.
-func (*ConfigData) Descriptor() ([]byte, []int) {
+// Deprecated: Use Influxdb2ClientConfig.ProtoReflect.Descriptor instead.
+func (*Influxdb2ClientConfig) Descriptor() ([]byte, []int) {
return file_api_proto_rawDescGZIP(), []int{18}
}
-func (x *ConfigData) GetUrl() string {
+func (x *Influxdb2ClientConfig) GetUrl() string {
if x != nil {
return x.Url
}
return ""
}
-func (x *ConfigData) GetOrg() string {
+func (x *Influxdb2ClientConfig) GetOrg() string {
if x != nil {
return x.Org
}
return ""
}
-func (x *ConfigData) GetBucket() string {
+func (x *Influxdb2ClientConfig) GetBucket() string {
if x != nil {
return x.Bucket
}
@@ -2448,175 +2440,184 @@ var file_api_proto_rawDesc = []byte{
0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x71, 0x6f, 0x73, 0x18, 0x03,
0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x71, 0x6f, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x74,
0x61, 0x69, 0x6e, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x74,
- 0x61, 0x69, 0x6e, 0x65, 0x64, 0x22, 0x3b, 0x0a, 0x08, 0x44, 0x42, 0x4d, 0x65, 0x74, 0x68, 0x6f,
- 0x64, 0x12, 0x2f, 0x0a, 0x06, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x17, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x42, 0x4d, 0x65,
- 0x74, 0x68, 0x6f, 0x64, 0x49, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x52, 0x06, 0x69, 0x6e, 0x66, 0x6c,
- 0x75, 0x78, 0x22, 0x80, 0x01, 0x0a, 0x0e, 0x44, 0x42, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x49,
- 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x12, 0x33, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44,
- 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x76, 0x31, 0x62, 0x65,
- 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0a,
- 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x39, 0x0a, 0x0c, 0x64, 0x61,
- 0x74, 0x61, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x15, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53,
- 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x52, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x53, 0x74, 0x61,
- 0x6e, 0x64, 0x61, 0x72, 0x64, 0x22, 0x80, 0x01, 0x0a, 0x0c, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74,
- 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72,
- 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x65, 0x61,
- 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x67, 0x4b,
- 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x67, 0x4b, 0x65, 0x79,
- 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x61, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08,
- 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
- 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4b, 0x65, 0x79, 0x22, 0x48, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75,
- 0x63, 0x6b, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b,
- 0x65, 0x74, 0x22, 0xa7, 0x01, 0x0a, 0x0a, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x49, 0x6e, 0x66,
- 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12,
- 0x1f, 0x0a, 0x0b, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
- 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x04, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x18, 0x0a, 0x07,
- 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x61,
- 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18,
- 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x7a, 0x0a, 0x19,
- 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74,
- 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x76,
- 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64,
- 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x0e, 0x72, 0x65, 0x70,
- 0x6f, 0x72, 0x74, 0x65, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x15, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69,
- 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74,
- 0x65, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x33, 0x0a, 0x0c, 0x44, 0x65, 0x76, 0x69,
- 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x23, 0x0a, 0x05, 0x74, 0x77, 0x69, 0x6e,
- 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,
- 0x31, 0x2e, 0x54, 0x77, 0x69, 0x6e, 0x52, 0x05, 0x74, 0x77, 0x69, 0x6e, 0x73, 0x22, 0x9e, 0x01,
- 0x0a, 0x04, 0x54, 0x77, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72,
- 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72,
- 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x0f, 0x6f, 0x62,
- 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x44, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x77,
- 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x52, 0x0f, 0x6f, 0x62, 0x73, 0x65,
- 0x72, 0x76, 0x65, 0x64, 0x44, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x12, 0x31, 0x0a, 0x08, 0x72,
- 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e,
- 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x77, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x70,
- 0x65, 0x72, 0x74, 0x79, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x22, 0xa2,
- 0x01, 0x0a, 0x0c, 0x54, 0x77, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12,
- 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
- 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,
- 0x31, 0x2e, 0x54, 0x77, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x2e, 0x4d,
- 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65,
- 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
- 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
- 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
- 0x02, 0x38, 0x01, 0x22, 0x1c, 0x0a, 0x1a, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x76,
- 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x22, 0x40, 0x0a, 0x15, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x76,
+ 0x61, 0x69, 0x6e, 0x65, 0x64, 0x22, 0x44, 0x0a, 0x08, 0x44, 0x42, 0x4d, 0x65, 0x74, 0x68, 0x6f,
+ 0x64, 0x12, 0x38, 0x0a, 0x09, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x64, 0x62, 0x32, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44,
+ 0x42, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x49, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x64, 0x62, 0x32,
+ 0x52, 0x09, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x64, 0x62, 0x32, 0x22, 0xb9, 0x01, 0x0a, 0x11,
+ 0x44, 0x42, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x49, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x64, 0x62,
+ 0x32, 0x12, 0x54, 0x0a, 0x15, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x64, 0x62, 0x32, 0x43, 0x6c,
+ 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x49, 0x6e, 0x66, 0x6c, 0x75,
+ 0x78, 0x64, 0x62, 0x32, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+ 0x52, 0x15, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x64, 0x62, 0x32, 0x43, 0x6c, 0x69, 0x65, 0x6e,
+ 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4e, 0x0a, 0x13, 0x69, 0x6e, 0x66, 0x6c, 0x75,
+ 0x78, 0x64, 0x62, 0x32, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x49,
+ 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x64, 0x62, 0x32, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 0x52, 0x13, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x64, 0x62, 0x32, 0x44, 0x61, 0x74,
+ 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xc4, 0x01, 0x0a, 0x13, 0x49, 0x6e, 0x66, 0x6c,
+ 0x75, 0x78, 0x64, 0x62, 0x32, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12,
+ 0x20, 0x0a, 0x0b, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e,
+ 0x74, 0x12, 0x37, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25,
+ 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x49, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x64,
+ 0x62, 0x32, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x61, 0x67,
+ 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69,
+ 0x65, 0x6c, 0x64, 0x4b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69,
+ 0x65, 0x6c, 0x64, 0x4b, 0x65, 0x79, 0x1a, 0x36, 0x0a, 0x08, 0x54, 0x61, 0x67, 0x45, 0x6e, 0x74,
+ 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x53,
+ 0x0a, 0x15, 0x49, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x64, 0x62, 0x32, 0x43, 0x6c, 0x69, 0x65, 0x6e,
+ 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x72, 0x67,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x62,
+ 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63,
+ 0x6b, 0x65, 0x74, 0x22, 0xa7, 0x01, 0x0a, 0x0a, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x49, 0x6e,
+ 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
+ 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
+ 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
+ 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x18, 0x0a,
+ 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07,
+ 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65,
+ 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x7a, 0x0a,
+ 0x19, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61,
+ 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65,
+ 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
+ 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x0e, 0x72, 0x65,
+ 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x76,
+ 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x72,
+ 0x74, 0x65, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x33, 0x0a, 0x0c, 0x44, 0x65, 0x76,
+ 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x23, 0x0a, 0x05, 0x74, 0x77, 0x69,
+ 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74,
+ 0x61, 0x31, 0x2e, 0x54, 0x77, 0x69, 0x6e, 0x52, 0x05, 0x74, 0x77, 0x69, 0x6e, 0x73, 0x22, 0x9e,
+ 0x01, 0x0a, 0x04, 0x54, 0x77, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x70, 0x65,
+ 0x72, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70,
+ 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x0f, 0x6f,
+ 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x44, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54,
+ 0x77, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x52, 0x0f, 0x6f, 0x62, 0x73,
+ 0x65, 0x72, 0x76, 0x65, 0x64, 0x44, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x12, 0x31, 0x0a, 0x08,
+ 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15,
+ 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x77, 0x69, 0x6e, 0x50, 0x72, 0x6f,
+ 0x70, 0x65, 0x72, 0x74, 0x79, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x22,
+ 0xa2, 0x01, 0x0a, 0x0c, 0x54, 0x77, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79,
+ 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
+ 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74,
+ 0x61, 0x31, 0x2e, 0x54, 0x77, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x2e,
+ 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d,
+ 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64,
+ 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
+ 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x3a, 0x02, 0x38, 0x01, 0x22, 0x1c, 0x0a, 0x1a, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65,
+ 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x22, 0x40, 0x0a, 0x15, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65,
+ 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x06, 0x64,
+ 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x76, 0x31,
+ 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x06, 0x64, 0x65,
+ 0x76, 0x69, 0x63, 0x65, 0x22, 0x38, 0x0a, 0x16, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72,
+ 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e,
+ 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x46,
+ 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f,
+ 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x05, 0x6d, 0x6f,
+ 0x64, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x76, 0x31, 0x62, 0x65,
+ 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52,
+ 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x22, 0x45, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
+ 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64,
+ 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65,
+ 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x35, 0x0a,
+ 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61,
+ 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65,
+ 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x44, 0x65,
+ 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x0a, 0x18,
+ 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65,
+ 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x6f, 0x64, 0x65,
+ 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x6f, 0x64,
+ 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65,
+ 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x22, 0x3e, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76,
0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x06, 0x64, 0x65,
0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x76, 0x31, 0x62,
0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x06, 0x64, 0x65, 0x76,
- 0x69, 0x63, 0x65, 0x22, 0x38, 0x0a, 0x16, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x44,
- 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a,
- 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x46, 0x0a,
- 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64,
- 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x05, 0x6d, 0x6f, 0x64,
- 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74,
- 0x61, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x05,
- 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x22, 0x45, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44,
- 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65,
- 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x76,
- 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x35, 0x0a, 0x13,
- 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d,
- 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e,
- 0x61, 0x6d, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x44, 0x65, 0x76,
- 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x0a, 0x18, 0x52,
- 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x6f, 0x64, 0x65, 0x6c,
- 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x6f, 0x64, 0x65,
- 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x44,
- 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x22, 0x3e, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69,
- 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x06, 0x64, 0x65, 0x76,
+ 0x69, 0x63, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76,
+ 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x46, 0x0a, 0x18, 0x55,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,
+ 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x05, 0x6d, 0x6f,
+ 0x64, 0x65, 0x6c, 0x22, 0x1b, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76,
+ 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x22, 0x32, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61,
+ 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65,
+ 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x3c, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63,
+ 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x06, 0x64, 0x65, 0x76,
0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x76, 0x31, 0x62, 0x65,
0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x06, 0x64, 0x65, 0x76, 0x69,
- 0x63, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69,
- 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x46, 0x0a, 0x18, 0x55, 0x70,
- 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e,
- 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x05, 0x6d, 0x6f, 0x64,
- 0x65, 0x6c, 0x22, 0x1b, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69,
- 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
- 0x32, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d,
- 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e,
- 0x61, 0x6d, 0x65, 0x22, 0x3c, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x06, 0x64, 0x65, 0x76, 0x69,
- 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74,
- 0x61, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63,
- 0x65, 0x32, 0xcc, 0x01, 0x0a, 0x14, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x61,
- 0x67, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x53, 0x0a, 0x0e, 0x4d, 0x61,
- 0x70, 0x70, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1e, 0x2e, 0x76,
- 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x52, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x76,
- 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x52, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12,
- 0x5f, 0x0a, 0x12, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53,
- 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x22, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e,
- 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74,
- 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x76, 0x31, 0x62, 0x65,
- 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
- 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
- 0x32, 0xe8, 0x04, 0x0a, 0x13, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x65,
- 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x53, 0x0a, 0x0e, 0x52, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1e, 0x2e, 0x76, 0x31, 0x62,
- 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x76,
- 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x76, 0x31, 0x62,
- 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x76,
+ 0x63, 0x65, 0x32, 0xcc, 0x01, 0x0a, 0x14, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x6e,
+ 0x61, 0x67, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x53, 0x0a, 0x0e, 0x4d,
+ 0x61, 0x70, 0x70, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1e, 0x2e,
+ 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x52, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e,
+ 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x52, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
+ 0x12, 0x5f, 0x0a, 0x12, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
+ 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x22, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,
+ 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61,
+ 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x76, 0x31, 0x62,
+ 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63,
+ 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
+ 0x00, 0x32, 0xe8, 0x04, 0x0a, 0x13, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70,
+ 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x53, 0x0a, 0x0e, 0x52, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1e, 0x2e, 0x76, 0x31,
+ 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65,
+ 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x76, 0x31,
+ 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65,
+ 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4d,
+ 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1c,
+ 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x44,
+ 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x76,
+ 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x44, 0x65, 0x76,
0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4d, 0x0a,
- 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1c, 0x2e,
- 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x44, 0x65,
+ 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1c, 0x2e,
+ 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65,
0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x76, 0x31,
- 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x44, 0x65, 0x76, 0x69,
- 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4d, 0x0a, 0x0c,
- 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1c, 0x2e, 0x76,
- 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76,
- 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x76, 0x31, 0x62,
- 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63,
- 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x11, 0x43,
+ 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69,
+ 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x11,
+ 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65,
+ 0x6c, 0x12, 0x21, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43,
0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c,
- 0x12, 0x21, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74,
- 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72,
- 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x11, 0x52, 0x65, 0x6d,
- 0x6f, 0x76, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x21,
- 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x44,
- 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x1a, 0x22, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f,
- 0x76, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74,
- 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x21, 0x2e, 0x76,
- 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76,
- 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x22, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
- 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69,
- 0x63, 0x65, 0x12, 0x19, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74,
- 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e,
- 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63,
- 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x0c, 0x5a, 0x0a, 0x2e,
- 0x2f, 0x3b, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x33,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x11, 0x52, 0x65,
+ 0x6d, 0x6f, 0x76, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12,
+ 0x21, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65,
+ 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x6d,
+ 0x6f, 0x76, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61,
+ 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x21, 0x2e,
+ 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65,
+ 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x22, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74,
+ 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76,
+ 0x69, 0x63, 0x65, 0x12, 0x19, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65,
+ 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a,
+ 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69,
+ 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x0c, 0x5a, 0x0a,
+ 0x2e, 0x2f, 0x3b, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x33,
}
var (
@@ -2631,7 +2632,7 @@ func file_api_proto_rawDescGZIP() []byte {
return file_api_proto_rawDescData
}
-var file_api_proto_msgTypes = make([]protoimpl.MessageInfo, 41)
+var file_api_proto_msgTypes = make([]protoimpl.MessageInfo, 42)
var file_api_proto_goTypes = []interface{}{
(*MapperRegisterRequest)(nil), // 0: v1beta1.MapperRegisterRequest
(*MapperRegisterResponse)(nil), // 1: v1beta1.MapperRegisterResponse
@@ -2649,9 +2650,9 @@ var file_api_proto_goTypes = []interface{}{
(*PushMethodHTTP)(nil), // 13: v1beta1.PushMethodHTTP
(*PushMethodMQTT)(nil), // 14: v1beta1.PushMethodMQTT
(*DBMethod)(nil), // 15: v1beta1.DBMethod
- (*DBMethodInflux)(nil), // 16: v1beta1.DBMethodInflux
- (*DataStandard)(nil), // 17: v1beta1.DataStandard
- (*ConfigData)(nil), // 18: v1beta1.ConfigData
+ (*DBMethodInfluxdb2)(nil), // 16: v1beta1.DBMethodInfluxdb2
+ (*Influxdb2DataConfig)(nil), // 17: v1beta1.Influxdb2DataConfig
+ (*Influxdb2ClientConfig)(nil), // 18: v1beta1.Influxdb2ClientConfig
(*MapperInfo)(nil), // 19: v1beta1.MapperInfo
(*ReportDeviceStatusRequest)(nil), // 20: v1beta1.ReportDeviceStatusRequest
(*DeviceStatus)(nil), // 21: v1beta1.DeviceStatus
@@ -2673,8 +2674,9 @@ var file_api_proto_goTypes = []interface{}{
(*GetDeviceRequest)(nil), // 37: v1beta1.GetDeviceRequest
(*GetDeviceResponse)(nil), // 38: v1beta1.GetDeviceResponse
nil, // 39: v1beta1.CustomizedValue.DataEntry
- nil, // 40: v1beta1.TwinProperty.MetadataEntry
- (*anypb.Any)(nil), // 41: google.protobuf.Any
+ nil, // 40: v1beta1.Influxdb2DataConfig.TagEntry
+ nil, // 41: v1beta1.TwinProperty.MetadataEntry
+ (*anypb.Any)(nil), // 42: google.protobuf.Any
}
var file_api_proto_depIdxs = []int32{
19, // 0: v1beta1.MapperRegisterRequest.mapper:type_name -> v1beta1.MapperInfo
@@ -2696,43 +2698,44 @@ var file_api_proto_depIdxs = []int32{
13, // 16: v1beta1.PushMethod.http:type_name -> v1beta1.PushMethodHTTP
14, // 17: v1beta1.PushMethod.mqtt:type_name -> v1beta1.PushMethodMQTT
15, // 18: v1beta1.PushMethod.dbMethod:type_name -> v1beta1.DBMethod
- 16, // 19: v1beta1.DBMethod.influx:type_name -> v1beta1.DBMethodInflux
- 18, // 20: v1beta1.DBMethodInflux.configData:type_name -> v1beta1.ConfigData
- 17, // 21: v1beta1.DBMethodInflux.dataStandard:type_name -> v1beta1.DataStandard
- 21, // 22: v1beta1.ReportDeviceStatusRequest.reportedDevice:type_name -> v1beta1.DeviceStatus
- 22, // 23: v1beta1.DeviceStatus.twins:type_name -> v1beta1.Twin
- 23, // 24: v1beta1.Twin.observedDesired:type_name -> v1beta1.TwinProperty
- 23, // 25: v1beta1.Twin.reported:type_name -> v1beta1.TwinProperty
- 40, // 26: v1beta1.TwinProperty.metadata:type_name -> v1beta1.TwinProperty.MetadataEntry
- 6, // 27: v1beta1.RegisterDeviceRequest.device:type_name -> v1beta1.Device
- 2, // 28: v1beta1.CreateDeviceModelRequest.model:type_name -> v1beta1.DeviceModel
- 6, // 29: v1beta1.UpdateDeviceRequest.device:type_name -> v1beta1.Device
- 2, // 30: v1beta1.UpdateDeviceModelRequest.model:type_name -> v1beta1.DeviceModel
- 6, // 31: v1beta1.GetDeviceResponse.device:type_name -> v1beta1.Device
- 41, // 32: v1beta1.CustomizedValue.DataEntry.value:type_name -> google.protobuf.Any
- 0, // 33: v1beta1.DeviceManagerService.MapperRegister:input_type -> v1beta1.MapperRegisterRequest
- 20, // 34: v1beta1.DeviceManagerService.ReportDeviceStatus:input_type -> v1beta1.ReportDeviceStatusRequest
- 25, // 35: v1beta1.DeviceMapperService.RegisterDevice:input_type -> v1beta1.RegisterDeviceRequest
- 29, // 36: v1beta1.DeviceMapperService.RemoveDevice:input_type -> v1beta1.RemoveDeviceRequest
- 33, // 37: v1beta1.DeviceMapperService.UpdateDevice:input_type -> v1beta1.UpdateDeviceRequest
- 27, // 38: v1beta1.DeviceMapperService.CreateDeviceModel:input_type -> v1beta1.CreateDeviceModelRequest
- 31, // 39: v1beta1.DeviceMapperService.RemoveDeviceModel:input_type -> v1beta1.RemoveDeviceModelRequest
- 35, // 40: v1beta1.DeviceMapperService.UpdateDeviceModel:input_type -> v1beta1.UpdateDeviceModelRequest
- 37, // 41: v1beta1.DeviceMapperService.GetDevice:input_type -> v1beta1.GetDeviceRequest
- 1, // 42: v1beta1.DeviceManagerService.MapperRegister:output_type -> v1beta1.MapperRegisterResponse
- 24, // 43: v1beta1.DeviceManagerService.ReportDeviceStatus:output_type -> v1beta1.ReportDeviceStatusResponse
- 26, // 44: v1beta1.DeviceMapperService.RegisterDevice:output_type -> v1beta1.RegisterDeviceResponse
- 30, // 45: v1beta1.DeviceMapperService.RemoveDevice:output_type -> v1beta1.RemoveDeviceResponse
- 34, // 46: v1beta1.DeviceMapperService.UpdateDevice:output_type -> v1beta1.UpdateDeviceResponse
- 28, // 47: v1beta1.DeviceMapperService.CreateDeviceModel:output_type -> v1beta1.CreateDeviceModelResponse
- 32, // 48: v1beta1.DeviceMapperService.RemoveDeviceModel:output_type -> v1beta1.RemoveDeviceModelResponse
- 36, // 49: v1beta1.DeviceMapperService.UpdateDeviceModel:output_type -> v1beta1.UpdateDeviceModelResponse
- 38, // 50: v1beta1.DeviceMapperService.GetDevice:output_type -> v1beta1.GetDeviceResponse
- 42, // [42:51] is the sub-list for method output_type
- 33, // [33:42] is the sub-list for method input_type
- 33, // [33:33] is the sub-list for extension type_name
- 33, // [33:33] is the sub-list for extension extendee
- 0, // [0:33] is the sub-list for field type_name
+ 16, // 19: v1beta1.DBMethod.influxdb2:type_name -> v1beta1.DBMethodInfluxdb2
+ 18, // 20: v1beta1.DBMethodInfluxdb2.influxdb2ClientConfig:type_name -> v1beta1.Influxdb2ClientConfig
+ 17, // 21: v1beta1.DBMethodInfluxdb2.influxdb2DataConfig:type_name -> v1beta1.Influxdb2DataConfig
+ 40, // 22: v1beta1.Influxdb2DataConfig.tag:type_name -> v1beta1.Influxdb2DataConfig.TagEntry
+ 21, // 23: v1beta1.ReportDeviceStatusRequest.reportedDevice:type_name -> v1beta1.DeviceStatus
+ 22, // 24: v1beta1.DeviceStatus.twins:type_name -> v1beta1.Twin
+ 23, // 25: v1beta1.Twin.observedDesired:type_name -> v1beta1.TwinProperty
+ 23, // 26: v1beta1.Twin.reported:type_name -> v1beta1.TwinProperty
+ 41, // 27: v1beta1.TwinProperty.metadata:type_name -> v1beta1.TwinProperty.MetadataEntry
+ 6, // 28: v1beta1.RegisterDeviceRequest.device:type_name -> v1beta1.Device
+ 2, // 29: v1beta1.CreateDeviceModelRequest.model:type_name -> v1beta1.DeviceModel
+ 6, // 30: v1beta1.UpdateDeviceRequest.device:type_name -> v1beta1.Device
+ 2, // 31: v1beta1.UpdateDeviceModelRequest.model:type_name -> v1beta1.DeviceModel
+ 6, // 32: v1beta1.GetDeviceResponse.device:type_name -> v1beta1.Device
+ 42, // 33: v1beta1.CustomizedValue.DataEntry.value:type_name -> google.protobuf.Any
+ 0, // 34: v1beta1.DeviceManagerService.MapperRegister:input_type -> v1beta1.MapperRegisterRequest
+ 20, // 35: v1beta1.DeviceManagerService.ReportDeviceStatus:input_type -> v1beta1.ReportDeviceStatusRequest
+ 25, // 36: v1beta1.DeviceMapperService.RegisterDevice:input_type -> v1beta1.RegisterDeviceRequest
+ 29, // 37: v1beta1.DeviceMapperService.RemoveDevice:input_type -> v1beta1.RemoveDeviceRequest
+ 33, // 38: v1beta1.DeviceMapperService.UpdateDevice:input_type -> v1beta1.UpdateDeviceRequest
+ 27, // 39: v1beta1.DeviceMapperService.CreateDeviceModel:input_type -> v1beta1.CreateDeviceModelRequest
+ 31, // 40: v1beta1.DeviceMapperService.RemoveDeviceModel:input_type -> v1beta1.RemoveDeviceModelRequest
+ 35, // 41: v1beta1.DeviceMapperService.UpdateDeviceModel:input_type -> v1beta1.UpdateDeviceModelRequest
+ 37, // 42: v1beta1.DeviceMapperService.GetDevice:input_type -> v1beta1.GetDeviceRequest
+ 1, // 43: v1beta1.DeviceManagerService.MapperRegister:output_type -> v1beta1.MapperRegisterResponse
+ 24, // 44: v1beta1.DeviceManagerService.ReportDeviceStatus:output_type -> v1beta1.ReportDeviceStatusResponse
+ 26, // 45: v1beta1.DeviceMapperService.RegisterDevice:output_type -> v1beta1.RegisterDeviceResponse
+ 30, // 46: v1beta1.DeviceMapperService.RemoveDevice:output_type -> v1beta1.RemoveDeviceResponse
+ 34, // 47: v1beta1.DeviceMapperService.UpdateDevice:output_type -> v1beta1.UpdateDeviceResponse
+ 28, // 48: v1beta1.DeviceMapperService.CreateDeviceModel:output_type -> v1beta1.CreateDeviceModelResponse
+ 32, // 49: v1beta1.DeviceMapperService.RemoveDeviceModel:output_type -> v1beta1.RemoveDeviceModelResponse
+ 36, // 50: v1beta1.DeviceMapperService.UpdateDeviceModel:output_type -> v1beta1.UpdateDeviceModelResponse
+ 38, // 51: v1beta1.DeviceMapperService.GetDevice:output_type -> v1beta1.GetDeviceResponse
+ 43, // [43:52] is the sub-list for method output_type
+ 34, // [34:43] is the sub-list for method input_type
+ 34, // [34:34] is the sub-list for extension type_name
+ 34, // [34:34] is the sub-list for extension extendee
+ 0, // [0:34] is the sub-list for field type_name
}
func init() { file_api_proto_init() }
@@ -2934,7 +2937,7 @@ func file_api_proto_init() {
}
}
file_api_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DBMethodInflux); i {
+ switch v := v.(*DBMethodInfluxdb2); i {
case 0:
return &v.state
case 1:
@@ -2946,7 +2949,7 @@ func file_api_proto_init() {
}
}
file_api_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DataStandard); i {
+ switch v := v.(*Influxdb2DataConfig); i {
case 0:
return &v.state
case 1:
@@ -2958,7 +2961,7 @@ func file_api_proto_init() {
}
}
file_api_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ConfigData); i {
+ switch v := v.(*Influxdb2ClientConfig); i {
case 0:
return &v.state
case 1:
@@ -3216,7 +3219,7 @@ func file_api_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_api_proto_rawDesc,
NumEnums: 0,
- NumMessages: 41,
+ NumMessages: 42,
NumExtensions: 0,
NumServices: 2,
},
diff --git a/pkg/apis/dmi/v1beta1/api.proto b/pkg/apis/dmi/v1beta1/api.proto
index dfac1e3ca..a6f948599 100644
--- a/pkg/apis/dmi/v1beta1/api.proto
+++ b/pkg/apis/dmi/v1beta1/api.proto
@@ -244,24 +244,23 @@ message PushMethodMQTT {
message DBMethod{
// the config of database .
- DBMethodInflux influx = 1;
+ DBMethodInfluxdb2 influxdb2 = 1;
}
-message DBMethodInflux{
+message DBMethodInfluxdb2{
// the config of influx database.
- ConfigData configData = 1;
- DataStandard dataStandard = 2;
+ Influxdb2ClientConfig influxdb2ClientConfig = 1;
+ Influxdb2DataConfig influxdb2DataConfig = 2;
}
-message DataStandard{
- // datastandard when push data to influx
+message Influxdb2DataConfig{
+ // data config when push data to influx
string measurement = 1;
- string tagKey = 2;
- string tagValue = 3;
- string fieldKey = 4;
+ map<string, string> tag = 2;
+ string fieldKey = 3;
}
-message ConfigData{
+message Influxdb2ClientConfig{
// influx database url
string url = 1;
// usr org in influx database
diff --git a/staging/src/github.com/kubeedge/mapper-generator/_template/README.md b/staging/src/github.com/kubeedge/mapper-generator/_template/README.md
index d2a369231..6a129f610 100644
--- a/staging/src/github.com/kubeedge/mapper-generator/_template/README.md
+++ b/staging/src/github.com/kubeedge/mapper-generator/_template/README.md
@@ -8,76 +8,12 @@ common:
```
## 2. devicetype.go
-### ProtocolConfig And ProtocolCommonConfig
-For fields `ProtocolConfig` and `ProtocolCommonConfig`, it is necessary to fill them in according to the definition of CRD.
-
-#### example
-Instance is defined as follows:
-```yaml
- protocol:
- customizedProtocol:
- protocolName: foo
- configData:
- deviceID: 1
- common:
- com:
- serialPort: '/dev/ttyS0'
- baudRate: 9600
- dataBits: 8
- parity: even
- stopBits: 1
- customizedValues:
- protocolID: 1
-```
-So the `devicetype.go` is defined as follows:
-```go
-type ProtocolConfigData struct {
- DeviceID int `json:"deviceID"`
-}
-
-type CustomizedDeviceProtocolCommonConfig struct {
- Com `json:"com"`
- CommonCustomizedValues `json:"customizedValues"`
-}
-
-type Com struct {
- SerialPort string `json:"serialPort"`
- DataBits int `json:"dataBits"`
- BaudRate int `json:"baudRate"`
- Parity string `json:"parity"`
- StopBits int `json:"stopBits"`
-}
-
-type CommonCustomizedValues struct {
- ProtocolID int `json:"protocolID"`
-}
-```
+### ProtocolConfig
+For fields `ProtocolConfig`, it is necessary to fill it in according to the definition of CRD.
### VisitorConfigData
For field `VisitorConfigData`, it may have multiple definitions. So, when filling in it, the `omitempty` tag needs to be added.
-#### example
-Instance is defined as follows:
-```yaml
- propertyVisitors:
- - propertyName: foo
- customizedProtocol:
- protocolName: fooProtocol
- configData:
- keyFoo: value1
- - propertyName: bar
- customizedProtocol:
- protocolName: barProtocol
- configData:
- keyBar: value2
-```
-So the `devicetype.go` is defined as follows:
-```go
-type VisitorConfigData struct {
- KeyFoo string `json:"keyFoo,omitempty"`
- KeyBar string `json:"keyBar,omitempty"`
-}
-```
## 3. driver.go
You can obtain the attribute values defined in `devicetype.go`. And use these values to implement 4 functions.
@@ -87,40 +23,8 @@ When you add a device to the mapper, the `InitDevice` function will be called on
### GetDeviceData
`GetDeviceData` will be called periodically based on `collectCycle (default 1 second)`.
-#### <div id = "example">Example<div>
-If you have two property, temperature and humidity. The instance is defined as follows:
-```yaml
- propertyVisitors:
- - propertyName: temperature
- customizedProtocol:
- protocolName: example
- configData:
- Register: 1
- - propertyName: humidity
- customizedProtocol:
- protocolName: example
- configData:
- Register: 2
-```
-The `GetDeviceData` function should be defined as follows:
-```go
-func (c *CustomizedClient) GetDeviceData(visitor *VisitorConfig) (interface{}, error) {
- if visitor.Register == 1{
- // TODO do something to get temperature and return it
- return "temperature",nil
- }else if visitor.Register == 2{
- // TODO do something to get humidity and return it
- return "humidity",nil
- }else{
- return nil,fmt.Errorf("the register fail to recognize")
- }
-}
-```
### SetDeviceData
When the cloud modifies the device's `readwrite` value, SetDeviceData will be called.
-You can refer to the example of [GetDeviceData](#example).
-
-
### StopDevice
When the device is removed from the mapper, the `StopDevice` function will be called once. \ No newline at end of file
diff --git a/staging/src/github.com/kubeedge/mapper-generator/_template/mapper/config.yaml b/staging/src/github.com/kubeedge/mapper-generator/_template/mapper/config.yaml
index c74bc29ac..34e7ed9ad 100644
--- a/staging/src/github.com/kubeedge/mapper-generator/_template/mapper/config.yaml
+++ b/staging/src/github.com/kubeedge/mapper-generator/_template/mapper/config.yaml
@@ -4,7 +4,7 @@ common:
name: Template-mapper
version: v1.13.0
api_version: v1.0.0
- protocol: # TODO your protocol name
+ protocol: # TODO add your protocol name
address: 127.0.0.1
edgecore_sock: /etc/kubeedge/dmi.sock
dev_init:
diff --git a/staging/src/github.com/kubeedge/mapper-generator/_template/mapper/data/dbmethod/influx/client.go b/staging/src/github.com/kubeedge/mapper-generator/_template/mapper/data/dbmethod/influx/client.go
deleted file mode 100644
index adea2bb3c..000000000
--- a/staging/src/github.com/kubeedge/mapper-generator/_template/mapper/data/dbmethod/influx/client.go
+++ /dev/null
@@ -1,77 +0,0 @@
-package influx
-
-import (
- "context"
- "encoding/json"
- "os"
- "time"
-
- "k8s.io/klog/v2"
-
- influxdb2 "github.com/influxdata/influxdb-client-go/v2"
- "github.com/kubeedge/Template/pkg/common"
-)
-
-type DataBaseConfig struct {
- Config *ConfigData `json:"configdata,omitempty"`
- Standard *DataStandard `json:"dataStandard,omitempty"`
-}
-
-type ConfigData struct {
- Url string `json:"url,omitempty"`
- Org string `json:"org,omitempty"`
- Bucket string `json:"bucket,omitempty"`
-}
-
-type DataStandard struct {
- // broker address, like mqtt://127.0.0.1:1883
- Measurement string `json:"measurement,omitempty"`
- TagKey string `json:"tagKey,omitempty"`
- TagValue string `json:"tagValue,omitempty"`
- FieldKey string `json:"fieldKey,omitempty"`
-}
-
-func NewDataBaseClient(config json.RawMessage, standard json.RawMessage) (*DataBaseConfig, error) {
- configdata := new(ConfigData)
- datastandard := new(DataStandard)
- err := json.Unmarshal(config, configdata)
- if err != nil {
- return nil, err
- }
- err = json.Unmarshal(standard, datastandard)
- if err != nil {
- return nil, err
- }
- return &DataBaseConfig{
- Config: configdata,
- Standard: datastandard,
- }, nil
-}
-
-func (d *DataBaseConfig) InitDbClient() influxdb2.Client {
- var usrtoken string
- usrtoken = os.Getenv("TOKEN")
- client := influxdb2.NewClient(d.Config.Url, usrtoken)
-
- return client
-}
-
-func (d *DataBaseConfig) CloseSession(client influxdb2.Client) {
- client.Close()
-}
-
-func (d *DataBaseConfig) AddData(data *common.DataModel, client influxdb2.Client) error {
- writeAPI := client.WriteAPIBlocking(d.Config.Org, d.Config.Bucket)
- // Create point using full params constructor
- p := influxdb2.NewPoint(d.Standard.Measurement,
- map[string]string{d.Standard.TagKey: d.Standard.TagValue},
- map[string]interface{}{d.Standard.FieldKey: data.Value},
- time.Now())
- // write point immediately
- err := writeAPI.WritePoint(context.Background(), p)
- if err != nil {
- klog.V(4).Info("Exit AddData")
- return err
- }
- return nil
-}
diff --git a/staging/src/github.com/kubeedge/mapper-generator/_template/mapper/data/dbmethod/influxdb2/client.go b/staging/src/github.com/kubeedge/mapper-generator/_template/mapper/data/dbmethod/influxdb2/client.go
new file mode 100644
index 000000000..dfd768fca
--- /dev/null
+++ b/staging/src/github.com/kubeedge/mapper-generator/_template/mapper/data/dbmethod/influxdb2/client.go
@@ -0,0 +1,76 @@
+package influxdb2
+
+import (
+ "context"
+ "encoding/json"
+ "os"
+ "time"
+
+ "k8s.io/klog/v2"
+
+ influxdb2 "github.com/influxdata/influxdb-client-go/v2"
+ "github.com/kubeedge/Template/pkg/common"
+)
+
+type DataBaseConfig struct {
+ Influxdb2ClientConfig *Influxdb2ClientConfig `json:"influxdb2ClientConfig,omitempty"`
+ Influxdb2DataConfig *Influxdb2DataConfig `json:"influxdb2DataConfig,omitempty"`
+}
+
+type Influxdb2ClientConfig struct {
+ Url string `json:"url,omitempty"`
+ Org string `json:"org,omitempty"`
+ Bucket string `json:"bucket,omitempty"`
+}
+
+type Influxdb2DataConfig struct {
+ Measurement string `json:"measurement,omitempty"`
+ Tag map[string]string `json:"tag,omitempty"`
+ FieldKey string `json:"fieldKey,omitempty"`
+}
+
+func NewDataBaseClient(clientConfig json.RawMessage, dataConfig json.RawMessage) (*DataBaseConfig, error) {
+ // parse influx database config data
+ influxdb2ClientConfig := new(Influxdb2ClientConfig)
+ influxdb2DataConfig := new(Influxdb2DataConfig)
+ err := json.Unmarshal(clientConfig, influxdb2ClientConfig)
+ if err != nil {
+ return nil, err
+ }
+ err = json.Unmarshal(dataConfig, influxdb2DataConfig)
+ if err != nil {
+ return nil, err
+ }
+ return &DataBaseConfig{
+ Influxdb2ClientConfig: influxdb2ClientConfig,
+ Influxdb2DataConfig: influxdb2DataConfig,
+ }, nil
+}
+
+func (d *DataBaseConfig) InitDbClient() influxdb2.Client {
+ var usrtoken string
+ usrtoken = os.Getenv("TOKEN")
+ client := influxdb2.NewClient(d.Influxdb2ClientConfig.Url, usrtoken)
+
+ return client
+}
+
+func (d *DataBaseConfig) CloseSession(client influxdb2.Client) {
+ client.Close()
+}
+
+func (d *DataBaseConfig) AddData(data *common.DataModel, client influxdb2.Client) error {
+ // write device data to influx database
+ writeAPI := client.WriteAPIBlocking(d.Influxdb2ClientConfig.Org, d.Influxdb2ClientConfig.Bucket)
+ p := influxdb2.NewPoint(d.Influxdb2DataConfig.Measurement,
+ d.Influxdb2DataConfig.Tag,
+ map[string]interface{}{d.Influxdb2DataConfig.FieldKey: data.Value},
+ time.Now())
+ // write point immediately
+ err := writeAPI.WritePoint(context.Background(), p)
+ if err != nil {
+ klog.V(4).Info("Exit AddData")
+ return err
+ }
+ return nil
+}
diff --git a/staging/src/github.com/kubeedge/mapper-generator/_template/mapper/data/publish/http/client.go b/staging/src/github.com/kubeedge/mapper-generator/_template/mapper/data/publish/http/client.go
index e675c68d4..bf9ee213b 100644
--- a/staging/src/github.com/kubeedge/mapper-generator/_template/mapper/data/publish/http/client.go
+++ b/staging/src/github.com/kubeedge/mapper-generator/_template/mapper/data/publish/http/client.go
@@ -38,20 +38,21 @@ func NewDataPanel(config json.RawMessage) (global.DataPanel, error) {
}
func (pm *PushMethod) InitPushMethod() error {
- // TODO add init code
- fmt.Println("Init Http")
+ klog.V(1).Info("Init HTTP")
return nil
}
func (pm *PushMethod) Push(data *common.DataModel) {
- // TODO add push code
+ klog.V(2).Info("Publish device data by HTTP")
targetUrl := pm.HTTP.HostName + ":" + strconv.Itoa(pm.HTTP.Port) + pm.HTTP.RequestPath
- klog.V(1).Infof("targetUrl = %s", targetUrl)
payload := data.PropertyName + "=" + data.Value
formatTimeStr := time.Unix(data.TimeStamp/1e3, 0).Format("2006-01-02 15:04:05")
currentTime := "&time" + "=" + formatTimeStr
payload += currentTime
+
+ klog.V(3).Infof("Publish %v to %s", payload, targetUrl)
+
resp, err := http.Post(targetUrl,
"application/x-www-form-urlencoded",
strings.NewReader(payload))
@@ -63,7 +64,10 @@ func (pm *PushMethod) Push(data *common.DataModel) {
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
// handle error
+ klog.Errorf("Publish device data by HTTP failed, err = %v", err)
+ return
}
- klog.V(1).Info(string(body))
+ klog.V(1).Info("############### Message published. ###############")
+ klog.V(3).Infof("HTTP reviced %s", string(body))
}
diff --git a/staging/src/github.com/kubeedge/mapper-generator/_template/mapper/data/publish/mqtt/client.go b/staging/src/github.com/kubeedge/mapper-generator/_template/mapper/data/publish/mqtt/client.go
index 1c2f4e6d4..536d3c150 100644
--- a/staging/src/github.com/kubeedge/mapper-generator/_template/mapper/data/publish/mqtt/client.go
+++ b/staging/src/github.com/kubeedge/mapper-generator/_template/mapper/data/publish/mqtt/client.go
@@ -36,13 +36,11 @@ func NewDataPanel(config json.RawMessage) (global.DataPanel, error) {
}
func (pm *PushMethod) InitPushMethod() error {
- // TODO add init code
- fmt.Println("Init Mqtt")
+ klog.V(1).Info("Init MQTT")
return nil
}
func (pm *PushMethod) Push(data *common.DataModel) {
- // TODO add push code
klog.V(1).Infof("Publish %v to %s on topic: %s, Qos: %d, Retained: %v",
data.Value, pm.MQTT.Address, pm.MQTT.Topic, pm.MQTT.QoS, pm.MQTT.Retained)
@@ -61,5 +59,5 @@ func (pm *PushMethod) Push(data *common.DataModel) {
token.Wait()
client.Disconnect(250)
- klog.V(1).Info("############### Message published. ###############")
+ klog.V(2).Info("############### Message published. ###############")
}
diff --git a/staging/src/github.com/kubeedge/mapper-generator/_template/mapper/device/device.go b/staging/src/github.com/kubeedge/mapper-generator/_template/mapper/device/device.go
index 50382015d..3e1000006 100644
--- a/staging/src/github.com/kubeedge/mapper-generator/_template/mapper/device/device.go
+++ b/staging/src/github.com/kubeedge/mapper-generator/_template/mapper/device/device.go
@@ -13,7 +13,7 @@ import (
"k8s.io/klog/v2"
- dbInflux "github.com/kubeedge/Template/data/dbmethod/influx"
+ dbInflux "github.com/kubeedge/Template/data/dbmethod/influxdb2"
httpMethod "github.com/kubeedge/Template/data/publish/http"
mqttMethod "github.com/kubeedge/Template/data/publish/mqtt"
"github.com/kubeedge/Template/driver"
@@ -132,19 +132,11 @@ func dataHandler(ctx context.Context, dev *driver.CustomizedDev) {
}
go twinData.Run(ctx)
// handle push method
- testconfig := make(map[string]interface{})
- err = json.Unmarshal(twin.Property.PushMethod.MethodConfig, &testconfig)
- if err == nil {
- klog.V(1).Infof("twin.Property.PushMethod.MethodConfig = %v", testconfig)
- } else {
- klog.Error(err)
- }
if twin.Property.PushMethod.MethodConfig != nil && twin.Property.PushMethod.MethodName != "" {
dataModel := common.NewDataModel(dev.Instance.Name, twin.Property.PropertyName, common.WithType(twin.ObservedDesired.Metadata.Type))
pushHandler(ctx, &twin, dev.CustomizedClient, &visitorConfig, dataModel)
}
// handle database
-
if twin.Property.PushMethod.DBMethod.DBMethodName != "" {
dataModel := common.NewDataModel(dev.Instance.Name, twin.Property.PropertyName, common.WithType(twin.ObservedDesired.Metadata.Type))
dbHandler(ctx, &twin, dev.CustomizedClient, &visitorConfig, dataModel)
@@ -156,18 +148,20 @@ func dataHandler(ctx context.Context, dev *driver.CustomizedDev) {
func pushHandler(ctx context.Context, twin *common.Twin, client *driver.CustomizedClient, visitorConfig *driver.VisitorConfig, dataModel *common.DataModel) {
var dataPanel global.DataPanel
var err error
+ // initialization dataPanel
switch twin.Property.PushMethod.MethodName {
case "http":
dataPanel, err = httpMethod.NewDataPanel(twin.Property.PushMethod.MethodConfig)
case "mqtt":
dataPanel, err = mqttMethod.NewDataPanel(twin.Property.PushMethod.MethodConfig)
default:
- err = errors.New("Custom protocols are not currently supported")
+ err = errors.New("custom protocols are not currently supported when push data")
}
if err != nil {
klog.Errorf("new data panel error: %v", err)
return
}
+ // initialization PushMethod
err = dataPanel.InitPushMethod()
if err != nil {
klog.Errorf("init publish method err: %v", err)
@@ -205,8 +199,9 @@ func pushHandler(ctx context.Context, twin *common.Twin, client *driver.Customiz
// dbHandler start db client to save data
func dbHandler(ctx context.Context, twin *common.Twin, client *driver.CustomizedClient, visitorConfig *driver.VisitorConfig, dataModel *common.DataModel) {
switch twin.Property.PushMethod.DBMethod.DBMethodName {
+ // TODO add more database
case "influx":
- dbConfig, err := dbInflux.NewDataBaseClient(twin.Property.PushMethod.DBMethod.DBConfig.ConfigData, twin.Property.PushMethod.DBMethod.DBConfig.DataStandard)
+ dbConfig, err := dbInflux.NewDataBaseClient(twin.Property.PushMethod.DBMethod.DBConfig.Influxdb2ClientConfig, twin.Property.PushMethod.DBMethod.DBConfig.Influxdb2DataConfig)
if err != nil {
klog.Errorf("new database client error: %v", err)
return
@@ -255,7 +250,7 @@ func dbHandler(ctx context.Context, twin *common.Twin, client *driver.Customized
// setVisitor check if visitor property is readonly, if not then set it.
func setVisitor(visitorConfig *driver.VisitorConfig, twin *common.Twin, dev *driver.CustomizedDev) error {
if twin.Property.PProperty.AccessMode == "ReadOnly" {
- klog.V(1).Infof("%s twin readonly property: %s", dev.Instance.Name, twin.PropertyName)
+ klog.V(3).Infof("%s twin readonly property: %s", dev.Instance.Name, twin.PropertyName)
return nil
}
klog.V(2).Infof("Convert type: %s, value: %s ", twin.Property.PProperty.DataType, twin.ObservedDesired.Value)
diff --git a/staging/src/github.com/kubeedge/mapper-generator/_template/mapper/driver/devicetype.go b/staging/src/github.com/kubeedge/mapper-generator/_template/mapper/driver/devicetype.go
index 6a4a6d403..0e2ffd857 100644
--- a/staging/src/github.com/kubeedge/mapper-generator/_template/mapper/driver/devicetype.go
+++ b/staging/src/github.com/kubeedge/mapper-generator/_template/mapper/driver/devicetype.go
@@ -18,13 +18,13 @@ type CustomizedClient struct {
ProtocolConfig
}
-type ProtocolConfig struct { //customizedprotocol字段
+type ProtocolConfig struct {
ProtocolName string `json:"protocolName"`
ConfigData `json:"configData"`
}
type ConfigData struct {
- // TODO: add your config data according to configmap
+ // TODO: add your protocol config data
}
type VisitorConfig struct {
@@ -33,6 +33,6 @@ type VisitorConfig struct {
}
type VisitorConfigData struct {
- // TODO: add your Visitor ConfigData according to configmap
+ // TODO: add your visitor config data
DataType string `json:"dataType"`
}
diff --git a/staging/src/github.com/kubeedge/mapper-generator/_template/mapper/driver/driver.go b/staging/src/github.com/kubeedge/mapper-generator/_template/mapper/driver/driver.go
index 20e864ab0..f79fcce08 100644
--- a/staging/src/github.com/kubeedge/mapper-generator/_template/mapper/driver/driver.go
+++ b/staging/src/github.com/kubeedge/mapper-generator/_template/mapper/driver/driver.go
@@ -15,24 +15,24 @@ func NewClient(protocol ProtocolConfig) (*CustomizedClient, error) {
func (c *CustomizedClient) InitDevice() error {
// TODO: add init operation
- // you can use c.ProtocolConfig and c.ProtocolCommonConfig
+ // you can use c.ProtocolConfig
return nil
}
func (c *CustomizedClient) GetDeviceData(visitor *VisitorConfig) (interface{}, error) {
- // TODO: get device's data
- // you can use c.ProtocolConfig,c.ProtocolCommonConfig and visitor
+ // TODO: add the code to get device's data
+ // you can use c.ProtocolConfig and visitor
return nil, nil
}
func (c *CustomizedClient) SetDeviceData(data interface{}, visitor *VisitorConfig) error {
// TODO: set device's data
- // you can use c.ProtocolConfig,c.ProtocolCommonConfig and visitor
+ // you can use c.ProtocolConfig and visitor
return nil
}
func (c *CustomizedClient) StopDevice() error {
// TODO: stop device
- // you can use c.ProtocolConfig and c.ProtocolCommonConfig
+ // you can use c.ProtocolConfig
return nil
}
diff --git a/staging/src/github.com/kubeedge/mapper-generator/pkg/common/configmaptype.go b/staging/src/github.com/kubeedge/mapper-generator/pkg/common/configmaptype.go
index 0d2626ca6..0e8e756e8 100644
--- a/staging/src/github.com/kubeedge/mapper-generator/pkg/common/configmaptype.go
+++ b/staging/src/github.com/kubeedge/mapper-generator/pkg/common/configmaptype.go
@@ -18,7 +18,7 @@ package common
import "encoding/json"
-// DeviceProfile is structure to store in configMap.
+// DeviceProfile is structure to store in configMap. It will be removed later
type DeviceProfile struct {
DeviceInstances []DeviceInstance `json:"deviceInstances,omitempty"`
DeviceModels []DeviceModel `json:"deviceModels,omitempty"`
@@ -49,10 +49,9 @@ type ModelProperty struct {
DataType string `json:"dataType,omitempty"`
Description string `json:"description,omitempty"`
AccessMode string `json:"accessMode,omitempty"`
- //DefaultValue interface{} `json:"defaultValue,omitempty"`
- Minimum string `json:"minimum,omitempty"` //todo todo why the type is int64
- Maximum string `json:"maximum,omitempty"`
- Unit string `json:"unit,omitempty"`
+ Minimum string `json:"minimum,omitempty"`
+ Maximum string `json:"maximum,omitempty"`
+ Unit string `json:"unit,omitempty"`
}
// Protocol is structure to store protocol in deviceProfile.json in configmap.
@@ -74,15 +73,12 @@ type DeviceProperty struct {
ModelName string `json:"modelName,omitempty"`
Protocol string `json:"protocol,omitempty"`
Visitors json.RawMessage `json:"visitorConfig"`
-
// whether be reported to the cloud
ReportToCloud bool `json:"reportToCloud,omitempty"`
CollectCycle int64 `json:"collectCycle"`
ReportCycle int64 `json:"reportCycle,omitempty"`
PushMethod PushMethodConfig `json:"pushMethod,omitempty"`
- //DBProvider DBProviderConfig `json:"dbProvider,omitempty"`
-
- PProperty ModelProperty
+ PProperty ModelProperty
}
// PushMethodConfig is structure to store push config
@@ -98,9 +94,9 @@ type DBMethodConfig struct {
}
type DBConfig struct {
- ConfigData json.RawMessage `json:"configData"`
- DataStandard json.RawMessage `json:"dataStandard"`
- RedisConfigData json.RawMessage `json:"redisConfigData"`
+ Influxdb2ClientConfig json.RawMessage `json:"influxdb2ClientConfig"`
+ Influxdb2DataConfig json.RawMessage `json:"influxdb2DataConfig"`
+ RedisConfigData json.RawMessage `json:"redisConfigData"`
}
// Metadata is the metadata for data.
@@ -117,18 +113,6 @@ type Twin struct {
Reported TwinProperty `json:"reported,omitempty"`
}
-//// DesiredData is the desired data.
-//type DesiredData struct {
-// Value string `json:"value,omitempty"`
-// Metadatas Metadata `json:"metadata,omitempty"`
-//}
-//
-//// ReportedData is the reported data.
-//type ReportedData struct {
-// Value string `json:"value,omitempty"`
-// Metadatas Metadata `json:"metadata,omitempty"`
-//}
-
type TwinProperty struct {
// Required: The value for this property.
Value string `json:"value,"`
diff --git a/staging/src/github.com/kubeedge/mapper-generator/pkg/dmi-api/api.pb.go b/staging/src/github.com/kubeedge/mapper-generator/pkg/dmi-api/api.pb.go
index 80eeae108..19e252dbd 100644
--- a/staging/src/github.com/kubeedge/mapper-generator/pkg/dmi-api/api.pb.go
+++ b/staging/src/github.com/kubeedge/mapper-generator/pkg/dmi-api/api.pb.go
@@ -1088,7 +1088,7 @@ type DBMethod struct {
unknownFields protoimpl.UnknownFields
// the config of database .
- Influx *DBMethodInflux `protobuf:"bytes,1,opt,name=influx,proto3" json:"influx,omitempty"`
+ Influxdb2 *DBMethodInfluxdb2 `protobuf:"bytes,1,opt,name=influxdb2,proto3" json:"influxdb2,omitempty"`
}
func (x *DBMethod) Reset() {
@@ -1123,25 +1123,25 @@ func (*DBMethod) Descriptor() ([]byte, []int) {
return file_api_proto_rawDescGZIP(), []int{15}
}
-func (x *DBMethod) GetInflux() *DBMethodInflux {
+func (x *DBMethod) GetInfluxdb2() *DBMethodInfluxdb2 {
if x != nil {
- return x.Influx
+ return x.Influxdb2
}
return nil
}
-type DBMethodInflux struct {
+type DBMethodInfluxdb2 struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// the config of influx database.
- ConfigData *ConfigData `protobuf:"bytes,1,opt,name=configData,proto3" json:"configData,omitempty"`
- DataStandard *DataStandard `protobuf:"bytes,2,opt,name=dataStandard,proto3" json:"dataStandard,omitempty"`
+ Influxdb2ClientConfig *Influxdb2ClientConfig `protobuf:"bytes,1,opt,name=influxdb2ClientConfig,proto3" json:"influxdb2ClientConfig,omitempty"`
+ Influxdb2DataConfig *Influxdb2DataConfig `protobuf:"bytes,2,opt,name=influxdb2DataConfig,proto3" json:"influxdb2DataConfig,omitempty"`
}
-func (x *DBMethodInflux) Reset() {
- *x = DBMethodInflux{}
+func (x *DBMethodInfluxdb2) Reset() {
+ *x = DBMethodInfluxdb2{}
if protoimpl.UnsafeEnabled {
mi := &file_api_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -1149,13 +1149,13 @@ func (x *DBMethodInflux) Reset() {
}
}
-func (x *DBMethodInflux) String() string {
+func (x *DBMethodInfluxdb2) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*DBMethodInflux) ProtoMessage() {}
+func (*DBMethodInfluxdb2) ProtoMessage() {}
-func (x *DBMethodInflux) ProtoReflect() protoreflect.Message {
+func (x *DBMethodInfluxdb2) ProtoReflect() protoreflect.Message {
mi := &file_api_proto_msgTypes[16]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -1167,39 +1167,38 @@ func (x *DBMethodInflux) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use DBMethodInflux.ProtoReflect.Descriptor instead.
-func (*DBMethodInflux) Descriptor() ([]byte, []int) {
+// Deprecated: Use DBMethodInfluxdb2.ProtoReflect.Descriptor instead.
+func (*DBMethodInfluxdb2) Descriptor() ([]byte, []int) {
return file_api_proto_rawDescGZIP(), []int{16}
}
-func (x *DBMethodInflux) GetConfigData() *ConfigData {
+func (x *DBMethodInfluxdb2) GetInfluxdb2ClientConfig() *Influxdb2ClientConfig {
if x != nil {
- return x.ConfigData
+ return x.Influxdb2ClientConfig
}
return nil
}
-func (x *DBMethodInflux) GetDataStandard() *DataStandard {
+func (x *DBMethodInfluxdb2) GetInfluxdb2DataConfig() *Influxdb2DataConfig {
if x != nil {
- return x.DataStandard
+ return x.Influxdb2DataConfig
}
return nil
}
-type DataStandard struct {
+type Influxdb2DataConfig struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- // datastandard when push data to influx
- Measurement string `protobuf:"bytes,1,opt,name=measurement,proto3" json:"measurement,omitempty"`
- TagKey string `protobuf:"bytes,2,opt,name=tagKey,proto3" json:"tagKey,omitempty"`
- TagValue string `protobuf:"bytes,3,opt,name=tagValue,proto3" json:"tagValue,omitempty"`
- FieldKey string `protobuf:"bytes,4,opt,name=fieldKey,proto3" json:"fieldKey,omitempty"`
+ // data config when push data to influx
+ Measurement string `protobuf:"bytes,1,opt,name=measurement,proto3" json:"measurement,omitempty"`
+ Tag map[string]string `protobuf:"bytes,2,rep,name=tag,proto3" json:"tag,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ FieldKey string `protobuf:"bytes,3,opt,name=fieldKey,proto3" json:"fieldKey,omitempty"`
}
-func (x *DataStandard) Reset() {
- *x = DataStandard{}
+func (x *Influxdb2DataConfig) Reset() {
+ *x = Influxdb2DataConfig{}
if protoimpl.UnsafeEnabled {
mi := &file_api_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -1207,13 +1206,13 @@ func (x *DataStandard) Reset() {
}
}
-func (x *DataStandard) String() string {
+func (x *Influxdb2DataConfig) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*DataStandard) ProtoMessage() {}
+func (*Influxdb2DataConfig) ProtoMessage() {}
-func (x *DataStandard) ProtoReflect() protoreflect.Message {
+func (x *Influxdb2DataConfig) ProtoReflect() protoreflect.Message {
mi := &file_api_proto_msgTypes[17]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -1225,40 +1224,33 @@ func (x *DataStandard) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use DataStandard.ProtoReflect.Descriptor instead.
-func (*DataStandard) Descriptor() ([]byte, []int) {
+// Deprecated: Use Influxdb2DataConfig.ProtoReflect.Descriptor instead.
+func (*Influxdb2DataConfig) Descriptor() ([]byte, []int) {
return file_api_proto_rawDescGZIP(), []int{17}
}
-func (x *DataStandard) GetMeasurement() string {
+func (x *Influxdb2DataConfig) GetMeasurement() string {
if x != nil {
return x.Measurement
}
return ""
}
-func (x *DataStandard) GetTagKey() string {
+func (x *Influxdb2DataConfig) GetTag() map[string]string {
if x != nil {
- return x.TagKey
+ return x.Tag
}
- return ""
-}
-
-func (x *DataStandard) GetTagValue() string {
- if x != nil {
- return x.TagValue
- }
- return ""
+ return nil
}
-func (x *DataStandard) GetFieldKey() string {
+func (x *Influxdb2DataConfig) GetFieldKey() string {
if x != nil {
return x.FieldKey
}
return ""
}
-type ConfigData struct {
+type Influxdb2ClientConfig struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
@@ -1271,8 +1263,8 @@ type ConfigData struct {
Bucket string `protobuf:"bytes,3,opt,name=bucket,proto3" json:"bucket,omitempty"`
}
-func (x *ConfigData) Reset() {
- *x = ConfigData{}
+func (x *Influxdb2ClientConfig) Reset() {
+ *x = Influxdb2ClientConfig{}
if protoimpl.UnsafeEnabled {
mi := &file_api_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -1280,13 +1272,13 @@ func (x *ConfigData) Reset() {
}
}
-func (x *ConfigData) String() string {
+func (x *Influxdb2ClientConfig) String() string {
return protoimpl.X.MessageStringOf(x)
}
-func (*ConfigData) ProtoMessage() {}
+func (*Influxdb2ClientConfig) ProtoMessage() {}
-func (x *ConfigData) ProtoReflect() protoreflect.Message {
+func (x *Influxdb2ClientConfig) ProtoReflect() protoreflect.Message {
mi := &file_api_proto_msgTypes[18]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -1298,26 +1290,26 @@ func (x *ConfigData) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
-// Deprecated: Use ConfigData.ProtoReflect.Descriptor instead.
-func (*ConfigData) Descriptor() ([]byte, []int) {
+// Deprecated: Use Influxdb2ClientConfig.ProtoReflect.Descriptor instead.
+func (*Influxdb2ClientConfig) Descriptor() ([]byte, []int) {
return file_api_proto_rawDescGZIP(), []int{18}
}
-func (x *ConfigData) GetUrl() string {
+func (x *Influxdb2ClientConfig) GetUrl() string {
if x != nil {
return x.Url
}
return ""
}
-func (x *ConfigData) GetOrg() string {
+func (x *Influxdb2ClientConfig) GetOrg() string {
if x != nil {
return x.Org
}
return ""
}
-func (x *ConfigData) GetBucket() string {
+func (x *Influxdb2ClientConfig) GetBucket() string {
if x != nil {
return x.Bucket
}
@@ -2448,175 +2440,184 @@ var file_api_proto_rawDesc = []byte{
0x52, 0x05, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x71, 0x6f, 0x73, 0x18, 0x03,
0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x71, 0x6f, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x74,
0x61, 0x69, 0x6e, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x74,
- 0x61, 0x69, 0x6e, 0x65, 0x64, 0x22, 0x3b, 0x0a, 0x08, 0x44, 0x42, 0x4d, 0x65, 0x74, 0x68, 0x6f,
- 0x64, 0x12, 0x2f, 0x0a, 0x06, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x17, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x42, 0x4d, 0x65,
- 0x74, 0x68, 0x6f, 0x64, 0x49, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x52, 0x06, 0x69, 0x6e, 0x66, 0x6c,
- 0x75, 0x78, 0x22, 0x80, 0x01, 0x0a, 0x0e, 0x44, 0x42, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x49,
- 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x12, 0x33, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44,
- 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x76, 0x31, 0x62, 0x65,
- 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0a,
- 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x39, 0x0a, 0x0c, 0x64, 0x61,
- 0x74, 0x61, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x15, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53,
- 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x52, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x53, 0x74, 0x61,
- 0x6e, 0x64, 0x61, 0x72, 0x64, 0x22, 0x80, 0x01, 0x0a, 0x0c, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74,
- 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72,
- 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x65, 0x61,
- 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x67, 0x4b,
- 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x67, 0x4b, 0x65, 0x79,
- 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x61, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x08,
- 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
- 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4b, 0x65, 0x79, 0x22, 0x48, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x66,
- 0x69, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x72, 0x67, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75,
- 0x63, 0x6b, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b,
- 0x65, 0x74, 0x22, 0xa7, 0x01, 0x0a, 0x0a, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x49, 0x6e, 0x66,
- 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12,
- 0x1f, 0x0a, 0x0b, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
- 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x04, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x18, 0x0a, 0x07,
- 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x61,
- 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18,
- 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x7a, 0x0a, 0x19,
- 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74,
- 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x76,
- 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64,
- 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x0e, 0x72, 0x65, 0x70,
- 0x6f, 0x72, 0x74, 0x65, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x15, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69,
- 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74,
- 0x65, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x33, 0x0a, 0x0c, 0x44, 0x65, 0x76, 0x69,
- 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x23, 0x0a, 0x05, 0x74, 0x77, 0x69, 0x6e,
- 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,
- 0x31, 0x2e, 0x54, 0x77, 0x69, 0x6e, 0x52, 0x05, 0x74, 0x77, 0x69, 0x6e, 0x73, 0x22, 0x9e, 0x01,
- 0x0a, 0x04, 0x54, 0x77, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72,
- 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72,
- 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x0f, 0x6f, 0x62,
- 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x44, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x77,
- 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x52, 0x0f, 0x6f, 0x62, 0x73, 0x65,
- 0x72, 0x76, 0x65, 0x64, 0x44, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x12, 0x31, 0x0a, 0x08, 0x72,
- 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e,
- 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x77, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x70,
- 0x65, 0x72, 0x74, 0x79, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x22, 0xa2,
- 0x01, 0x0a, 0x0c, 0x54, 0x77, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12,
- 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
- 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,
- 0x31, 0x2e, 0x54, 0x77, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x2e, 0x4d,
- 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65,
- 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
- 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
- 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
- 0x02, 0x38, 0x01, 0x22, 0x1c, 0x0a, 0x1a, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x76,
- 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x22, 0x40, 0x0a, 0x15, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x76,
+ 0x61, 0x69, 0x6e, 0x65, 0x64, 0x22, 0x44, 0x0a, 0x08, 0x44, 0x42, 0x4d, 0x65, 0x74, 0x68, 0x6f,
+ 0x64, 0x12, 0x38, 0x0a, 0x09, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x64, 0x62, 0x32, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44,
+ 0x42, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x49, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x64, 0x62, 0x32,
+ 0x52, 0x09, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x64, 0x62, 0x32, 0x22, 0xb9, 0x01, 0x0a, 0x11,
+ 0x44, 0x42, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x49, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x64, 0x62,
+ 0x32, 0x12, 0x54, 0x0a, 0x15, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x64, 0x62, 0x32, 0x43, 0x6c,
+ 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1e, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x49, 0x6e, 0x66, 0x6c, 0x75,
+ 0x78, 0x64, 0x62, 0x32, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+ 0x52, 0x15, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x64, 0x62, 0x32, 0x43, 0x6c, 0x69, 0x65, 0x6e,
+ 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4e, 0x0a, 0x13, 0x69, 0x6e, 0x66, 0x6c, 0x75,
+ 0x78, 0x64, 0x62, 0x32, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x49,
+ 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x64, 0x62, 0x32, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x66,
+ 0x69, 0x67, 0x52, 0x13, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x64, 0x62, 0x32, 0x44, 0x61, 0x74,
+ 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xc4, 0x01, 0x0a, 0x13, 0x49, 0x6e, 0x66, 0x6c,
+ 0x75, 0x78, 0x64, 0x62, 0x32, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12,
+ 0x20, 0x0a, 0x0b, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e,
+ 0x74, 0x12, 0x37, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25,
+ 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x49, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x64,
+ 0x62, 0x32, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x61, 0x67,
+ 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69,
+ 0x65, 0x6c, 0x64, 0x4b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69,
+ 0x65, 0x6c, 0x64, 0x4b, 0x65, 0x79, 0x1a, 0x36, 0x0a, 0x08, 0x54, 0x61, 0x67, 0x45, 0x6e, 0x74,
+ 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x53,
+ 0x0a, 0x15, 0x49, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x64, 0x62, 0x32, 0x43, 0x6c, 0x69, 0x65, 0x6e,
+ 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x72, 0x67,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x72, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x62,
+ 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x75, 0x63,
+ 0x6b, 0x65, 0x74, 0x22, 0xa7, 0x01, 0x0a, 0x0a, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x49, 0x6e,
+ 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
+ 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
+ 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
+ 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x18, 0x0a,
+ 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07,
+ 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65,
+ 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x7a, 0x0a,
+ 0x19, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61,
+ 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65,
+ 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
+ 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x0e, 0x72, 0x65,
+ 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x76,
+ 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x72,
+ 0x74, 0x65, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x33, 0x0a, 0x0c, 0x44, 0x65, 0x76,
+ 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x23, 0x0a, 0x05, 0x74, 0x77, 0x69,
+ 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74,
+ 0x61, 0x31, 0x2e, 0x54, 0x77, 0x69, 0x6e, 0x52, 0x05, 0x74, 0x77, 0x69, 0x6e, 0x73, 0x22, 0x9e,
+ 0x01, 0x0a, 0x04, 0x54, 0x77, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x70, 0x65,
+ 0x72, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70,
+ 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x0f, 0x6f,
+ 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x44, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54,
+ 0x77, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x52, 0x0f, 0x6f, 0x62, 0x73,
+ 0x65, 0x72, 0x76, 0x65, 0x64, 0x44, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x12, 0x31, 0x0a, 0x08,
+ 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15,
+ 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x77, 0x69, 0x6e, 0x50, 0x72, 0x6f,
+ 0x70, 0x65, 0x72, 0x74, 0x79, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x22,
+ 0xa2, 0x01, 0x0a, 0x0c, 0x54, 0x77, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79,
+ 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
+ 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74,
+ 0x61, 0x31, 0x2e, 0x54, 0x77, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x2e,
+ 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d,
+ 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64,
+ 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
+ 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x3a, 0x02, 0x38, 0x01, 0x22, 0x1c, 0x0a, 0x1a, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65,
+ 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x22, 0x40, 0x0a, 0x15, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65,
+ 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x06, 0x64,
+ 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x76, 0x31,
+ 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x06, 0x64, 0x65,
+ 0x76, 0x69, 0x63, 0x65, 0x22, 0x38, 0x0a, 0x16, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72,
+ 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e,
+ 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x46,
+ 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f,
+ 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x05, 0x6d, 0x6f,
+ 0x64, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x76, 0x31, 0x62, 0x65,
+ 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52,
+ 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x22, 0x45, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
+ 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64,
+ 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65,
+ 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x35, 0x0a,
+ 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61,
+ 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65,
+ 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x44, 0x65,
+ 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x0a, 0x18,
+ 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65,
+ 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x6f, 0x64, 0x65,
+ 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x6f, 0x64,
+ 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65,
+ 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x22, 0x3e, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76,
0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x06, 0x64, 0x65,
0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x76, 0x31, 0x62,
0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x06, 0x64, 0x65, 0x76,
- 0x69, 0x63, 0x65, 0x22, 0x38, 0x0a, 0x16, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x44,
- 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a,
- 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x46, 0x0a,
- 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64,
- 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x05, 0x6d, 0x6f, 0x64,
- 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74,
- 0x61, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x05,
- 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x22, 0x45, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44,
- 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65,
- 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x76,
- 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x35, 0x0a, 0x13,
- 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d,
- 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e,
- 0x61, 0x6d, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x44, 0x65, 0x76,
- 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x0a, 0x18, 0x52,
- 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x6f, 0x64, 0x65, 0x6c,
- 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x6f, 0x64, 0x65,
- 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x44,
- 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x22, 0x3e, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69,
- 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x06, 0x64, 0x65, 0x76,
+ 0x69, 0x63, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76,
+ 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x46, 0x0a, 0x18, 0x55,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,
+ 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x05, 0x6d, 0x6f,
+ 0x64, 0x65, 0x6c, 0x22, 0x1b, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76,
+ 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x22, 0x32, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61,
+ 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65,
+ 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x3c, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63,
+ 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x06, 0x64, 0x65, 0x76,
0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x76, 0x31, 0x62, 0x65,
0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x06, 0x64, 0x65, 0x76, 0x69,
- 0x63, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69,
- 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x46, 0x0a, 0x18, 0x55, 0x70,
- 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e,
- 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x05, 0x6d, 0x6f, 0x64,
- 0x65, 0x6c, 0x22, 0x1b, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69,
- 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
- 0x32, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d,
- 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4e,
- 0x61, 0x6d, 0x65, 0x22, 0x3c, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x06, 0x64, 0x65, 0x76, 0x69,
- 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74,
- 0x61, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63,
- 0x65, 0x32, 0xcc, 0x01, 0x0a, 0x14, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x61,
- 0x67, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x53, 0x0a, 0x0e, 0x4d, 0x61,
- 0x70, 0x70, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1e, 0x2e, 0x76,
- 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x52, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x76,
- 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x52, 0x65, 0x67,
- 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12,
- 0x5f, 0x0a, 0x12, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53,
- 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x22, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e,
- 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74,
- 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x76, 0x31, 0x62, 0x65,
- 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
- 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
- 0x32, 0xe8, 0x04, 0x0a, 0x13, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x65,
- 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x53, 0x0a, 0x0e, 0x52, 0x65, 0x67, 0x69,
- 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1e, 0x2e, 0x76, 0x31, 0x62,
- 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x76,
- 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x76, 0x31, 0x62,
- 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x76,
+ 0x63, 0x65, 0x32, 0xcc, 0x01, 0x0a, 0x14, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x6e,
+ 0x61, 0x67, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x53, 0x0a, 0x0e, 0x4d,
+ 0x61, 0x70, 0x70, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1e, 0x2e,
+ 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x52, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e,
+ 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x52, 0x65,
+ 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
+ 0x12, 0x5f, 0x0a, 0x12, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
+ 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x22, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31,
+ 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61,
+ 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x76, 0x31, 0x62,
+ 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63,
+ 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
+ 0x00, 0x32, 0xe8, 0x04, 0x0a, 0x13, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70,
+ 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x53, 0x0a, 0x0e, 0x52, 0x65, 0x67,
+ 0x69, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1e, 0x2e, 0x76, 0x31,
+ 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65,
+ 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x76, 0x31,
+ 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65,
+ 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4d,
+ 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1c,
+ 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x44,
+ 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x76,
+ 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x44, 0x65, 0x76,
0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4d, 0x0a,
- 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1c, 0x2e,
- 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x44, 0x65,
+ 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1c, 0x2e,
+ 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65,
0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x76, 0x31,
- 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x44, 0x65, 0x76, 0x69,
- 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4d, 0x0a, 0x0c,
- 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1c, 0x2e, 0x76,
- 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76,
- 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x76, 0x31, 0x62,
- 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63,
- 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x11, 0x43,
+ 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69,
+ 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x11,
+ 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65,
+ 0x6c, 0x12, 0x21, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43,
0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c,
- 0x12, 0x21, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74,
- 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72,
- 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x11, 0x52, 0x65, 0x6d,
- 0x6f, 0x76, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x21,
- 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x44,
- 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x1a, 0x22, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f,
- 0x76, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74,
- 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x21, 0x2e, 0x76,
- 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76,
- 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x22, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
- 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69,
- 0x63, 0x65, 0x12, 0x19, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74,
- 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e,
- 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63,
- 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x0c, 0x5a, 0x0a, 0x2e,
- 0x2f, 0x3b, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x33,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x11, 0x52, 0x65,
+ 0x6d, 0x6f, 0x76, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12,
+ 0x21, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65,
+ 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x6d,
+ 0x6f, 0x76, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61,
+ 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x21, 0x2e,
+ 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65,
+ 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x1a, 0x22, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74,
+ 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76,
+ 0x69, 0x63, 0x65, 0x12, 0x19, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65,
+ 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a,
+ 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69,
+ 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x0c, 0x5a, 0x0a,
+ 0x2e, 0x2f, 0x3b, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x33,
}
var (
@@ -2631,7 +2632,7 @@ func file_api_proto_rawDescGZIP() []byte {
return file_api_proto_rawDescData
}
-var file_api_proto_msgTypes = make([]protoimpl.MessageInfo, 41)
+var file_api_proto_msgTypes = make([]protoimpl.MessageInfo, 42)
var file_api_proto_goTypes = []interface{}{
(*MapperRegisterRequest)(nil), // 0: v1beta1.MapperRegisterRequest
(*MapperRegisterResponse)(nil), // 1: v1beta1.MapperRegisterResponse
@@ -2649,9 +2650,9 @@ var file_api_proto_goTypes = []interface{}{
(*PushMethodHTTP)(nil), // 13: v1beta1.PushMethodHTTP
(*PushMethodMQTT)(nil), // 14: v1beta1.PushMethodMQTT
(*DBMethod)(nil), // 15: v1beta1.DBMethod
- (*DBMethodInflux)(nil), // 16: v1beta1.DBMethodInflux
- (*DataStandard)(nil), // 17: v1beta1.DataStandard
- (*ConfigData)(nil), // 18: v1beta1.ConfigData
+ (*DBMethodInfluxdb2)(nil), // 16: v1beta1.DBMethodInfluxdb2
+ (*Influxdb2DataConfig)(nil), // 17: v1beta1.Influxdb2DataConfig
+ (*Influxdb2ClientConfig)(nil), // 18: v1beta1.Influxdb2ClientConfig
(*MapperInfo)(nil), // 19: v1beta1.MapperInfo
(*ReportDeviceStatusRequest)(nil), // 20: v1beta1.ReportDeviceStatusRequest
(*DeviceStatus)(nil), // 21: v1beta1.DeviceStatus
@@ -2673,8 +2674,9 @@ var file_api_proto_goTypes = []interface{}{
(*GetDeviceRequest)(nil), // 37: v1beta1.GetDeviceRequest
(*GetDeviceResponse)(nil), // 38: v1beta1.GetDeviceResponse
nil, // 39: v1beta1.CustomizedValue.DataEntry
- nil, // 40: v1beta1.TwinProperty.MetadataEntry
- (*anypb.Any)(nil), // 41: google.protobuf.Any
+ nil, // 40: v1beta1.Influxdb2DataConfig.TagEntry
+ nil, // 41: v1beta1.TwinProperty.MetadataEntry
+ (*anypb.Any)(nil), // 42: google.protobuf.Any
}
var file_api_proto_depIdxs = []int32{
19, // 0: v1beta1.MapperRegisterRequest.mapper:type_name -> v1beta1.MapperInfo
@@ -2696,43 +2698,44 @@ var file_api_proto_depIdxs = []int32{
13, // 16: v1beta1.PushMethod.http:type_name -> v1beta1.PushMethodHTTP
14, // 17: v1beta1.PushMethod.mqtt:type_name -> v1beta1.PushMethodMQTT
15, // 18: v1beta1.PushMethod.dbMethod:type_name -> v1beta1.DBMethod
- 16, // 19: v1beta1.DBMethod.influx:type_name -> v1beta1.DBMethodInflux
- 18, // 20: v1beta1.DBMethodInflux.configData:type_name -> v1beta1.ConfigData
- 17, // 21: v1beta1.DBMethodInflux.dataStandard:type_name -> v1beta1.DataStandard
- 21, // 22: v1beta1.ReportDeviceStatusRequest.reportedDevice:type_name -> v1beta1.DeviceStatus
- 22, // 23: v1beta1.DeviceStatus.twins:type_name -> v1beta1.Twin
- 23, // 24: v1beta1.Twin.observedDesired:type_name -> v1beta1.TwinProperty
- 23, // 25: v1beta1.Twin.reported:type_name -> v1beta1.TwinProperty
- 40, // 26: v1beta1.TwinProperty.metadata:type_name -> v1beta1.TwinProperty.MetadataEntry
- 6, // 27: v1beta1.RegisterDeviceRequest.device:type_name -> v1beta1.Device
- 2, // 28: v1beta1.CreateDeviceModelRequest.model:type_name -> v1beta1.DeviceModel
- 6, // 29: v1beta1.UpdateDeviceRequest.device:type_name -> v1beta1.Device
- 2, // 30: v1beta1.UpdateDeviceModelRequest.model:type_name -> v1beta1.DeviceModel
- 6, // 31: v1beta1.GetDeviceResponse.device:type_name -> v1beta1.Device
- 41, // 32: v1beta1.CustomizedValue.DataEntry.value:type_name -> google.protobuf.Any
- 0, // 33: v1beta1.DeviceManagerService.MapperRegister:input_type -> v1beta1.MapperRegisterRequest
- 20, // 34: v1beta1.DeviceManagerService.ReportDeviceStatus:input_type -> v1beta1.ReportDeviceStatusRequest
- 25, // 35: v1beta1.DeviceMapperService.RegisterDevice:input_type -> v1beta1.RegisterDeviceRequest
- 29, // 36: v1beta1.DeviceMapperService.RemoveDevice:input_type -> v1beta1.RemoveDeviceRequest
- 33, // 37: v1beta1.DeviceMapperService.UpdateDevice:input_type -> v1beta1.UpdateDeviceRequest
- 27, // 38: v1beta1.DeviceMapperService.CreateDeviceModel:input_type -> v1beta1.CreateDeviceModelRequest
- 31, // 39: v1beta1.DeviceMapperService.RemoveDeviceModel:input_type -> v1beta1.RemoveDeviceModelRequest
- 35, // 40: v1beta1.DeviceMapperService.UpdateDeviceModel:input_type -> v1beta1.UpdateDeviceModelRequest
- 37, // 41: v1beta1.DeviceMapperService.GetDevice:input_type -> v1beta1.GetDeviceRequest
- 1, // 42: v1beta1.DeviceManagerService.MapperRegister:output_type -> v1beta1.MapperRegisterResponse
- 24, // 43: v1beta1.DeviceManagerService.ReportDeviceStatus:output_type -> v1beta1.ReportDeviceStatusResponse
- 26, // 44: v1beta1.DeviceMapperService.RegisterDevice:output_type -> v1beta1.RegisterDeviceResponse
- 30, // 45: v1beta1.DeviceMapperService.RemoveDevice:output_type -> v1beta1.RemoveDeviceResponse
- 34, // 46: v1beta1.DeviceMapperService.UpdateDevice:output_type -> v1beta1.UpdateDeviceResponse
- 28, // 47: v1beta1.DeviceMapperService.CreateDeviceModel:output_type -> v1beta1.CreateDeviceModelResponse
- 32, // 48: v1beta1.DeviceMapperService.RemoveDeviceModel:output_type -> v1beta1.RemoveDeviceModelResponse
- 36, // 49: v1beta1.DeviceMapperService.UpdateDeviceModel:output_type -> v1beta1.UpdateDeviceModelResponse
- 38, // 50: v1beta1.DeviceMapperService.GetDevice:output_type -> v1beta1.GetDeviceResponse
- 42, // [42:51] is the sub-list for method output_type
- 33, // [33:42] is the sub-list for method input_type
- 33, // [33:33] is the sub-list for extension type_name
- 33, // [33:33] is the sub-list for extension extendee
- 0, // [0:33] is the sub-list for field type_name
+ 16, // 19: v1beta1.DBMethod.influxdb2:type_name -> v1beta1.DBMethodInfluxdb2
+ 18, // 20: v1beta1.DBMethodInfluxdb2.influxdb2ClientConfig:type_name -> v1beta1.Influxdb2ClientConfig
+ 17, // 21: v1beta1.DBMethodInfluxdb2.influxdb2DataConfig:type_name -> v1beta1.Influxdb2DataConfig
+ 40, // 22: v1beta1.Influxdb2DataConfig.tag:type_name -> v1beta1.Influxdb2DataConfig.TagEntry
+ 21, // 23: v1beta1.ReportDeviceStatusRequest.reportedDevice:type_name -> v1beta1.DeviceStatus
+ 22, // 24: v1beta1.DeviceStatus.twins:type_name -> v1beta1.Twin
+ 23, // 25: v1beta1.Twin.observedDesired:type_name -> v1beta1.TwinProperty
+ 23, // 26: v1beta1.Twin.reported:type_name -> v1beta1.TwinProperty
+ 41, // 27: v1beta1.TwinProperty.metadata:type_name -> v1beta1.TwinProperty.MetadataEntry
+ 6, // 28: v1beta1.RegisterDeviceRequest.device:type_name -> v1beta1.Device
+ 2, // 29: v1beta1.CreateDeviceModelRequest.model:type_name -> v1beta1.DeviceModel
+ 6, // 30: v1beta1.UpdateDeviceRequest.device:type_name -> v1beta1.Device
+ 2, // 31: v1beta1.UpdateDeviceModelRequest.model:type_name -> v1beta1.DeviceModel
+ 6, // 32: v1beta1.GetDeviceResponse.device:type_name -> v1beta1.Device
+ 42, // 33: v1beta1.CustomizedValue.DataEntry.value:type_name -> google.protobuf.Any
+ 0, // 34: v1beta1.DeviceManagerService.MapperRegister:input_type -> v1beta1.MapperRegisterRequest
+ 20, // 35: v1beta1.DeviceManagerService.ReportDeviceStatus:input_type -> v1beta1.ReportDeviceStatusRequest
+ 25, // 36: v1beta1.DeviceMapperService.RegisterDevice:input_type -> v1beta1.RegisterDeviceRequest
+ 29, // 37: v1beta1.DeviceMapperService.RemoveDevice:input_type -> v1beta1.RemoveDeviceRequest
+ 33, // 38: v1beta1.DeviceMapperService.UpdateDevice:input_type -> v1beta1.UpdateDeviceRequest
+ 27, // 39: v1beta1.DeviceMapperService.CreateDeviceModel:input_type -> v1beta1.CreateDeviceModelRequest
+ 31, // 40: v1beta1.DeviceMapperService.RemoveDeviceModel:input_type -> v1beta1.RemoveDeviceModelRequest
+ 35, // 41: v1beta1.DeviceMapperService.UpdateDeviceModel:input_type -> v1beta1.UpdateDeviceModelRequest
+ 37, // 42: v1beta1.DeviceMapperService.GetDevice:input_type -> v1beta1.GetDeviceRequest
+ 1, // 43: v1beta1.DeviceManagerService.MapperRegister:output_type -> v1beta1.MapperRegisterResponse
+ 24, // 44: v1beta1.DeviceManagerService.ReportDeviceStatus:output_type -> v1beta1.ReportDeviceStatusResponse
+ 26, // 45: v1beta1.DeviceMapperService.RegisterDevice:output_type -> v1beta1.RegisterDeviceResponse
+ 30, // 46: v1beta1.DeviceMapperService.RemoveDevice:output_type -> v1beta1.RemoveDeviceResponse
+ 34, // 47: v1beta1.DeviceMapperService.UpdateDevice:output_type -> v1beta1.UpdateDeviceResponse
+ 28, // 48: v1beta1.DeviceMapperService.CreateDeviceModel:output_type -> v1beta1.CreateDeviceModelResponse
+ 32, // 49: v1beta1.DeviceMapperService.RemoveDeviceModel:output_type -> v1beta1.RemoveDeviceModelResponse
+ 36, // 50: v1beta1.DeviceMapperService.UpdateDeviceModel:output_type -> v1beta1.UpdateDeviceModelResponse
+ 38, // 51: v1beta1.DeviceMapperService.GetDevice:output_type -> v1beta1.GetDeviceResponse
+ 43, // [43:52] is the sub-list for method output_type
+ 34, // [34:43] is the sub-list for method input_type
+ 34, // [34:34] is the sub-list for extension type_name
+ 34, // [34:34] is the sub-list for extension extendee
+ 0, // [0:34] is the sub-list for field type_name
}
func init() { file_api_proto_init() }
@@ -2934,7 +2937,7 @@ func file_api_proto_init() {
}
}
file_api_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DBMethodInflux); i {
+ switch v := v.(*DBMethodInfluxdb2); i {
case 0:
return &v.state
case 1:
@@ -2946,7 +2949,7 @@ func file_api_proto_init() {
}
}
file_api_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DataStandard); i {
+ switch v := v.(*Influxdb2DataConfig); i {
case 0:
return &v.state
case 1:
@@ -2958,7 +2961,7 @@ func file_api_proto_init() {
}
}
file_api_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ConfigData); i {
+ switch v := v.(*Influxdb2ClientConfig); i {
case 0:
return &v.state
case 1:
@@ -3216,7 +3219,7 @@ func file_api_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_api_proto_rawDesc,
NumEnums: 0,
- NumMessages: 41,
+ NumMessages: 42,
NumExtensions: 0,
NumServices: 2,
},
diff --git a/staging/src/github.com/kubeedge/mapper-generator/pkg/dmi-api/api.proto b/staging/src/github.com/kubeedge/mapper-generator/pkg/dmi-api/api.proto
index dfac1e3ca..a6f948599 100644
--- a/staging/src/github.com/kubeedge/mapper-generator/pkg/dmi-api/api.proto
+++ b/staging/src/github.com/kubeedge/mapper-generator/pkg/dmi-api/api.proto
@@ -244,24 +244,23 @@ message PushMethodMQTT {
message DBMethod{
// the config of database .
- DBMethodInflux influx = 1;
+ DBMethodInfluxdb2 influxdb2 = 1;
}
-message DBMethodInflux{
+message DBMethodInfluxdb2{
// the config of influx database.
- ConfigData configData = 1;
- DataStandard dataStandard = 2;
+ Influxdb2ClientConfig influxdb2ClientConfig = 1;
+ Influxdb2DataConfig influxdb2DataConfig = 2;
}
-message DataStandard{
- // datastandard when push data to influx
+message Influxdb2DataConfig{
+ // data config when push data to influx
string measurement = 1;
- string tagKey = 2;
- string tagValue = 3;
- string fieldKey = 4;
+ map<string, string> tag = 2;
+ string fieldKey = 3;
}
-message ConfigData{
+message Influxdb2ClientConfig{
// influx database url
string url = 1;
// usr org in influx database
diff --git a/staging/src/github.com/kubeedge/mapper-generator/pkg/grpcserver/device.go b/staging/src/github.com/kubeedge/mapper-generator/pkg/grpcserver/device.go
index 86fa703c3..356a49bf0 100644
--- a/staging/src/github.com/kubeedge/mapper-generator/pkg/grpcserver/device.go
+++ b/staging/src/github.com/kubeedge/mapper-generator/pkg/grpcserver/device.go
@@ -15,10 +15,8 @@ import (
)
func (s *Server) RegisterDevice(ctx context.Context, request *dmiapi.RegisterDeviceRequest) (*dmiapi.RegisterDeviceResponse, error) {
- //klog.V(2).Info("RegisterDevice")
+ klog.V(3).Info("RegisterDevice")
device := request.GetDevice()
- //klog.V(1).Infof("In RegisterDevice, device = %v", device)
-
if device == nil {
return nil, errors.New("device is nil")
}
@@ -67,7 +65,7 @@ func (s *Server) RemoveDevice(ctx context.Context, request *dmiapi.RemoveDeviceR
}
func (s *Server) UpdateDevice(ctx context.Context, request *dmiapi.UpdateDeviceRequest) (*dmiapi.UpdateDeviceResponse, error) {
- klog.V(2).Info("UpdateDevice")
+ klog.V(3).Info("UpdateDevice")
device := request.GetDevice()
if device == nil {
return nil, errors.New("device is nil")
@@ -82,7 +80,7 @@ func (s *Server) UpdateDevice(ctx context.Context, request *dmiapi.UpdateDeviceR
return nil, fmt.Errorf("parse device %s protocol failed, err: %s", device.Name, err)
}
- klog.Infof("model: %+v", model)
+ klog.V(3).Infof("model: %+v", model)
deviceInstance, err := parse.ParseDeviceFromGrpc(device, &model)
if err != nil {
return nil, fmt.Errorf("parse device %s instance failed, err: %s", device.Name, err)
diff --git a/staging/src/github.com/kubeedge/mapper-generator/pkg/grpcserver/server.go b/staging/src/github.com/kubeedge/mapper-generator/pkg/grpcserver/server.go
index b215876de..5b0448e84 100644
--- a/staging/src/github.com/kubeedge/mapper-generator/pkg/grpcserver/server.go
+++ b/staging/src/github.com/kubeedge/mapper-generator/pkg/grpcserver/server.go
@@ -47,7 +47,7 @@ func (s *Server) Start() error {
grpcServer := grpc.NewServer()
dmiapi.RegisterDeviceMapperServiceServer(grpcServer, s)
reflection.Register(grpcServer)
- klog.Info("start grpc server")
+ klog.V(2).Info("start grpc server")
return grpcServer.Serve(s.lis)
}
@@ -63,7 +63,7 @@ func (s *Server) Stop() {
}
func initSock(sockPath string) error {
- klog.Infof("init uds socket: %s", sockPath)
+ klog.V(2).Infof("init uds socket: %s", sockPath)
_, err := os.Stat(sockPath)
if err == nil {
err = os.Remove(sockPath)
diff --git a/staging/src/github.com/kubeedge/mapper-generator/pkg/httpserver/server.go b/staging/src/github.com/kubeedge/mapper-generator/pkg/httpserver/server.go
index d337cbdb2..9cc244186 100644
--- a/staging/src/github.com/kubeedge/mapper-generator/pkg/httpserver/server.go
+++ b/staging/src/github.com/kubeedge/mapper-generator/pkg/httpserver/server.go
@@ -55,7 +55,7 @@ func (rs *RestServer) StartServer() {
}
if rs.CaCertFilePath == "" && (rs.KeyFilePath == "" || rs.CertFilePath == "") {
// insecure
- klog.Info("Insecure communication, skipping server verification")
+ klog.V(3).Info("Insecure communication, skipping server verification")
err := rs.server.ListenAndServe()
if err != nil {
klog.Errorf("insecure http server error: %v", err)
@@ -63,7 +63,7 @@ func (rs *RestServer) StartServer() {
}
} else if rs.CaCertFilePath == "" && rs.KeyFilePath != "" && rs.CertFilePath != "" {
// tls
- klog.Info("tls communication, https server start")
+ klog.V(3).Info("tls communication, https server start")
err := rs.server.ListenAndServeTLS(rs.CertFilePath, rs.KeyFilePath)
if err != nil {
klog.Errorf("tls http server error: %v", err)
@@ -71,7 +71,7 @@ func (rs *RestServer) StartServer() {
}
} else if rs.CaCertFilePath != "" && rs.KeyFilePath != "" && rs.CertFilePath != "" {
// mtls
- klog.Info("mtls communication, please provide client-key and client-cert to access service")
+ klog.V(3).Info("mtls communication, please provide client-key and client-cert to access service")
// Configure the server to trust TLS client cert issued by your CA.
certPool := x509.NewCertPool()
if caCertPEM, err := ioutil.ReadFile(rs.CaCertFilePath); err != nil {
diff --git a/staging/src/github.com/kubeedge/mapper-generator/pkg/util/parse/grpc.go b/staging/src/github.com/kubeedge/mapper-generator/pkg/util/parse/grpc.go
index 104ae1c92..9e4f51a6b 100644
--- a/staging/src/github.com/kubeedge/mapper-generator/pkg/util/parse/grpc.go
+++ b/staging/src/github.com/kubeedge/mapper-generator/pkg/util/parse/grpc.go
@@ -33,7 +33,7 @@ func getPushMethodFromGrpc(visitor *dmiapi.DeviceProperty) (string, error) {
func getDBMethodFromGrpc(visitor *dmiapi.DeviceProperty) (string, error) {
// TODO add more dbMethod
- if visitor.PushMethod.DBMethod.Influx != nil {
+ if visitor.PushMethod.DBMethod.Influxdb2 != nil {
return "influx", nil
}
return "", errors.New("can not parse dbMethod")
@@ -109,7 +109,7 @@ func buildPropertiesFromGrpc(device *dmiapi.Device) []common.DeviceProperty {
return nil
}
res := make([]common.DeviceProperty, 0, len(device.Spec.Properties))
- klog.V(1).Infof("In buildPropertiesFromGrpc, PropertyVisitors = %v", device.Spec.Properties)
+ klog.V(3).Infof("In buildPropertiesFromGrpc, PropertyVisitors = %v", device.Spec.Properties)
for _, pptv := range device.Spec.Properties {
// get visitorConfig filed by grpc device instance
@@ -142,19 +142,19 @@ func buildPropertiesFromGrpc(device *dmiapi.Device) []common.DeviceProperty {
}
switch dbMethodName {
case "influx":
- configdata, err := json.Marshal(pptv.PushMethod.DBMethod.Influx.ConfigData)
+ clientconfig, err := json.Marshal(pptv.PushMethod.DBMethod.Influxdb2.Influxdb2ClientConfig)
if err != nil {
klog.Errorf("err: %+v", err)
return nil
}
- datastandard, err := json.Marshal(pptv.PushMethod.DBMethod.Influx.DataStandard)
+ dataconfig, err := json.Marshal(pptv.PushMethod.DBMethod.Influxdb2.Influxdb2DataConfig)
if err != nil {
klog.Errorf("err: %+v", err)
return nil
}
dbconfig = common.DBConfig{
- ConfigData: configdata,
- DataStandard: datastandard,
+ Influxdb2ClientConfig: clientconfig,
+ Influxdb2DataConfig: dataconfig,
}
}
}
@@ -251,8 +251,7 @@ func ParseDeviceFromGrpc(device *dmiapi.Device, commonModel *common.DeviceModel)
continue
}
- // ****这里是想把直接从model.yaml文件中解析出来的modelproperty解析到instance里,主要要看传入的commonModel是不是从yaml文件中
- //解析得到的model数据
+ // parse the content of the modelproperty field into instance
for _, property := range commonModel.Properties {
if property.Name == instance.Properties[i].PropertyName {
instance.Properties[i].PProperty = property
@@ -266,6 +265,6 @@ func ParseDeviceFromGrpc(device *dmiapi.Device, commonModel *common.DeviceModel)
instance.Twins[i].Property = &v
}
}
- klog.V(1).Infof("final instance data from grpc = %v", instance)
+ klog.V(2).Infof("final instance data from grpc = %v", instance)
return instance, nil
}
diff --git a/staging/src/github.com/kubeedge/mapper-generator/pkg/util/parse/parse.go b/staging/src/github.com/kubeedge/mapper-generator/pkg/util/parse/parse.go
index f475a0647..6c02d9a7f 100644
--- a/staging/src/github.com/kubeedge/mapper-generator/pkg/util/parse/parse.go
+++ b/staging/src/github.com/kubeedge/mapper-generator/pkg/util/parse/parse.go
@@ -28,107 +28,6 @@ import (
var ErrEmptyData error = errors.New("device or device model list is empty")
-// Parse the configmap which will be removed
-//func Parse(path string,
-// devices map[string]*common.DeviceInstance,
-// dms map[string]common.DeviceModel,
-// protocols map[string]common.Protocol) error {
-// var deviceProfile common.DeviceProfile
-// jsonFile, err := ioutil.ReadFile(path)
-// if err != nil {
-// err = errors.New("failed to read " + path + " file")
-// return err
-// }
-// //Parse the JSON file and convert it into the data structure of DeviceProfile
-// if err = json.Unmarshal(jsonFile, &deviceProfile); err != nil {
-// return err
-// }
-// // loop instIndex : judge whether the configmap definition is correct, and initialize the device instance
-// for instIndex := 0; instIndex < len(deviceProfile.DeviceInstances); instIndex++ {
-// instance := deviceProfile.DeviceInstances[instIndex]
-// // loop protoIndex : judge whether the device's protocol is correct, and initialize the device protocol
-// protoIndex := 0
-// for protoIndex = 0; protoIndex < len(deviceProfile.Protocols); protoIndex++ {
-// if instance.ProtocolName == deviceProfile.Protocols[protoIndex].Name {
-// // Verify that the protocols match
-// protocolConfig := make(map[string]interface{})
-// err := json.Unmarshal(deviceProfile.Protocols[protoIndex].ProtocolConfigs, &protocolConfig)
-// if err != nil {
-// err = errors.New("failed to parse " + deviceProfile.Protocols[protoIndex].Name)
-// return err
-// }
-// protocols[deviceProfile.Protocols[protoIndex].Name] = deviceProfile.Protocols[protoIndex]
-// instance.PProtocol = deviceProfile.Protocols[protoIndex]
-// }
-// }
-// // loop propertyIndex : find the device model's properties for each device instance's propertyVisitor
-// for propertyIndex := 0; propertyIndex < len(instance.PropertyVisitors); propertyIndex++ {
-// modelName := instance.PropertyVisitors[propertyIndex].ModelName
-// propertyName := instance.PropertyVisitors[propertyIndex].PropertyName
-// modelIndex := 0
-// // loop modelIndex : find a matching device model, and initialize the device model
-// for modelIndex = 0; modelIndex < len(deviceProfile.DeviceModels); modelIndex++ {
-// if modelName == deviceProfile.DeviceModels[modelIndex].Name {
-// dms[deviceProfile.DeviceModels[modelIndex].Name] = deviceProfile.DeviceModels[modelIndex]
-// m := 0
-// // loop m : find a matching device model's properties
-// for m = 0; m < len(deviceProfile.DeviceModels[modelIndex].Properties); m++ {
-// if propertyName == deviceProfile.DeviceModels[modelIndex].Properties[m].Name {
-// instance.PropertyVisitors[propertyIndex].PProperty = deviceProfile.DeviceModels[modelIndex].Properties[m]
-// break
-// }
-// }
-// if m == len(deviceProfile.DeviceModels[modelIndex].Properties) {
-// err = errors.New("property mismatch")
-// return err
-// }
-// break
-// }
-// }
-// if modelIndex == len(deviceProfile.DeviceModels) {
-// err = errors.New("device model mismatch")
-// return err
-// }
-// }
-// // loop propertyIndex : find propertyVisitors for each instance's twin
-// for propertyIndex := 0; propertyIndex < len(instance.Twins); propertyIndex++ {
-// name := instance.Twins[propertyIndex].PropertyName
-// l := 0
-// // loop l : find a matching propertyName
-// for l = 0; l < len(instance.PropertyVisitors); l++ {
-// if name == instance.PropertyVisitors[l].PropertyName {
-// instance.Twins[propertyIndex].PVisitor = &instance.PropertyVisitors[l]
-// break
-// }
-// }
-// if l == len(instance.PropertyVisitors) {
-// err = errors.New("propertyVisitor mismatch")
-// return err
-// }
-// }
-// // loop propertyIndex : find propertyVisitors for each instance's property
-// for propertyIndex := 0; propertyIndex < len(instance.Datas.Properties); propertyIndex++ {
-// name := instance.Datas.Properties[propertyIndex].PropertyName
-// l := 0
-// // loop l : find a matching propertyName
-// for l = 0; l < len(instance.PropertyVisitors); l++ {
-// if name == instance.PropertyVisitors[l].PropertyName {
-// instance.Datas.Properties[propertyIndex].PVisitor = &instance.PropertyVisitors[l]
-// break
-// }
-// }
-// if l == len(instance.PropertyVisitors) {
-// err = errors.New("propertyVisitor mismatch")
-// return err
-// }
-// }
-// devices[instance.ID] = new(common.DeviceInstance)
-// devices[instance.ID] = &instance
-// klog.V(4).Infof("Instance:%s Successfully registered", instance.ID)
-// }
-// return nil
-//}
-
func ParseByUsingRegister(cfg *config.Config,
devices map[string]*common.DeviceInstance,
dms map[string]common.DeviceModel,