Skip to content

Commit 2a99762

Browse files
committed
convert values written via the Set RPC
1 parent 18c2288 commit 2a99762

File tree

3 files changed

+25
-9
lines changed

3 files changed

+25
-9
lines changed

client/cmd/datastore_create.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@ import (
77
"context"
88
"encoding/json"
99
"fmt"
10+
"math"
1011
"os"
1112

13+
"github.com/iptecharch/data-server/pkg/datastore"
1214
sdcpb "github.com/iptecharch/sdc-protos/sdcpb"
1315
"github.com/spf13/cobra"
1416
"google.golang.org/protobuf/encoding/prototext"
@@ -96,7 +98,7 @@ func init() {
9698

9799
datastoreCreateCmd.Flags().StringVarP(&target, "target", "", "", "target definition file")
98100
datastoreCreateCmd.Flags().StringVarP(&syncFile, "sync", "", "", "target sync definition file")
99-
datastoreCreateCmd.Flags().StringVarP(&owner, "owner", "", "", "candidate owner")
100-
datastoreCreateCmd.Flags().Int32VarP(&priority, "priority", "", 0, "candidate priority")
101+
datastoreCreateCmd.Flags().StringVarP(&owner, "owner", "", datastore.DefaultOwner, "candidate owner")
102+
datastoreCreateCmd.Flags().Int32VarP(&priority, "priority", "", math.MaxInt32, "candidate priority")
101103

102104
}

pkg/datastore/data_rpc.go

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ import (
2424
"github.com/iptecharch/data-server/pkg/utils"
2525
)
2626

27+
const (
28+
// to be used for candidates created without an owner
29+
DefaultOwner = "__sdcio"
30+
)
31+
2732
func (d *Datastore) Get(ctx context.Context, req *sdcpb.GetDataRequest, nCh chan *sdcpb.GetDataResponse) error {
2833
defer close(nCh)
2934
switch req.GetDatastore().GetType() {
@@ -484,6 +489,11 @@ func (d *Datastore) validateUpdate(ctx context.Context, upd *sdcpb.Update) error
484489
if err != nil {
485490
return err
486491
}
492+
// 2. convert value to its YANG type
493+
upd.Value, err = convertTypedValueToYANGType(rsp.GetSchema(), upd.GetValue())
494+
if err != nil {
495+
return err
496+
}
487497
// 2. validate value
488498
val, err := utils.GetSchemaValue(upd.GetValue())
489499
if err != nil {
@@ -1280,15 +1290,19 @@ func (d *Datastore) convertTypedValueToProto(ctx context.Context, p *sdcpb.Path,
12801290
if err != nil {
12811291
return nil, err
12821292
}
1293+
return convertTypedValueToYANGType(rsp.GetSchema(), tv)
1294+
}
1295+
1296+
func convertTypedValueToYANGType(schemaElem *sdcpb.SchemaElem, tv *sdcpb.TypedValue) (*sdcpb.TypedValue, error) {
12831297
switch {
1284-
case rsp.GetSchema().GetContainer() != nil:
1285-
if rsp.GetSchema().GetContainer().IsPresence {
1298+
case schemaElem.GetContainer() != nil:
1299+
if schemaElem.GetContainer().IsPresence {
12861300
return &sdcpb.TypedValue{
12871301
Timestamp: tv.GetTimestamp(),
12881302
Value: &sdcpb.TypedValue_JsonVal{JsonVal: nil},
12891303
}, nil
12901304
}
1291-
case rsp.GetSchema().GetLeaflist() != nil:
1305+
case schemaElem.GetLeaflist() != nil:
12921306
switch tv.Value.(type) {
12931307
case *sdcpb.TypedValue_LeaflistVal:
12941308
return tv, nil
@@ -1301,8 +1315,8 @@ func (d *Datastore) convertTypedValueToProto(ctx context.Context, p *sdcpb.Path,
13011315
},
13021316
},
13031317
}, nil
1304-
case rsp.GetSchema().GetField() != nil:
1305-
switch rsp.GetSchema().GetField().GetType().GetType() {
1318+
case schemaElem.GetField() != nil:
1319+
switch schemaElem.GetField().GetType().GetType() {
13061320
default:
13071321
return tv, nil
13081322
case "string", "identityref":

pkg/utils/value.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ func GetSchemaValue(updValue *sdcpb.TypedValue) (interface{}, error) {
7171
value = updValue.GetBytesVal()
7272
// case *sdcpb.TypedValue_DecimalVal:
7373
// value = updValue.GetDecimalVal()
74-
// case *sdcpb.TypedValue_FloatVal:
75-
// value = updValue.GetFloatVal()
74+
case *sdcpb.TypedValue_FloatVal:
75+
value = updValue.GetFloatVal()
7676
// case *sdcpb.TypedValue_DoubleVal:
7777
// value = updValue.GetDoubleVal()
7878
case *sdcpb.TypedValue_IntVal:

0 commit comments

Comments
 (0)