Skip to content
This repository was archived by the owner on Sep 6, 2022. It is now read-only.

Commit 4dde0c6

Browse files
Aurélien GasserInal Djafar
authored andcommitted
Compute plan: support composite/aggregate (#41)
1 parent 6333c60 commit 4dde0c6

30 files changed

+1240
-652
lines changed

README.md

Lines changed: 36 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1478,14 +1478,36 @@ Smart contract: `createComputePlan`
14781478
##### JSON Inputs:
14791479
```go
14801480
{
1481-
"algoKey": string (required,len=64,hexadecimal),
14821481
"objectiveKey": string (required,len=64,hexadecimal),
1483-
"traintuples": (required,gt=0) [{
1482+
"traintuples": (omitempty) [{
14841483
"dataManagerKey": string (required,len=64,hexadecimal),
14851484
"dataSampleKeys": [string] (required,dive,len=64,hexadecimal),
1485+
"algoKey": string (required,len=64,hexadecimal),
1486+
"id": string (required,lte=64),
1487+
"inModelsIDs": [string] (omitempty,dive,lte=64),
1488+
"tag": string (omitempty,lte=64),
1489+
}],
1490+
"aggregatetuples": (omitempty) [{
1491+
"algoKey": string (required,len=64,hexadecimal),
14861492
"id": string (required,lte=64),
14871493
"inModelsIDs": [string] (omitempty,dive,lte=64),
14881494
"tag": string (omitempty,lte=64),
1495+
"worker": string (required),
1496+
}],
1497+
"compositeTraintuples": (omitempty) [{
1498+
"dataManagerKey": string (required,len=64,hexadecimal),
1499+
"dataSampleKeys": [string] (required,dive,len=64,hexadecimal),
1500+
"algoKey": string (required,len=64,hexadecimal),
1501+
"id": string (required,lte=64),
1502+
"inHeadModelID": string (required_with=InTrunkModelID,omitempty,len=64,hexadecimal),
1503+
"inTrunkModelID": string (required_with=InHeadModelID,omitempty,len=64,hexadecimal),
1504+
"OutTrunkModelPermissions": (required){
1505+
"process": (required){
1506+
"public": bool (required),
1507+
"authorizedIDs": [string] (required),
1508+
},
1509+
},
1510+
"tag": string (omitempty,lte=64),
14891511
}],
14901512
"testtuples": (omitempty) [{
14911513
"dataManagerKey": string (omitempty,len=64,hexadecimal),
@@ -1497,12 +1519,15 @@ Smart contract: `createComputePlan`
14971519
```
14981520
##### Command peer example:
14991521
```bash
1500-
peer chaincode invoke -n mycc -c '{"Args":["createComputePlan","{\"algoKey\":\"fd1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\",\"objectiveKey\":\"5c1d9cd1c2c1082dde0921b56d11030c81f62fbb51932758b58ac2569dd0b379\",\"traintuples\":[{\"dataManagerKey\":\"da1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\",\"dataSampleKeys\":[\"aa1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\"],\"id\":\"firstTraintupleID\",\"inModelsIDs\":null,\"tag\":\"\"},{\"dataManagerKey\":\"da1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\",\"dataSampleKeys\":[\"aa2bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\"],\"id\":\"secondTraintupleID\",\"inModelsIDs\":[\"firstTraintupleID\"],\"tag\":\"\"}],\"testtuples\":[{\"dataManagerKey\":\"da1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\",\"dataSampleKeys\":[\"bb1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\",\"bb2bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\"],\"tag\":\"\",\"traintupleID\":\"secondTraintupleID\"}]}"]}' -C myc
1522+
peer chaincode invoke -n mycc -c '{"Args":["createComputePlan","{\"objectiveKey\":\"5c1d9cd1c2c1082dde0921b56d11030c81f62fbb51932758b58ac2569dd0b379\",\"traintuples\":[{\"dataManagerKey\":\"da1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\",\"dataSampleKeys\":[\"aa1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\"],\"algoKey\":\"fd1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\",\"id\":\"firstTraintupleID\",\"inModelsIDs\":null,\"tag\":\"\"},{\"dataManagerKey\":\"da1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\",\"dataSampleKeys\":[\"aa2bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\"],\"algoKey\":\"fd1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\",\"id\":\"secondTraintupleID\",\"inModelsIDs\":[\"firstTraintupleID\"],\"tag\":\"\"}],\"aggregatetuples\":null,\"compositeTraintuples\":null,\"testtuples\":[{\"dataManagerKey\":\"da1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\",\"dataSampleKeys\":[\"bb1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\",\"bb2bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc\"],\"tag\":\"\",\"traintupleID\":\"secondTraintupleID\"}]}"]}' -C myc
15011523
```
15021524
##### Command output:
15031525
```json
15041526
{
1527+
"aggregatetupleKeys": null,
1528+
"compositeTraintupleKeys": null,
15051529
"computePlanID": "432fcffdf68892f5e4adeeed8bb618beaeaecf709f840671eca724a3e3109369",
1530+
"objectiveKey": "5c1d9cd1c2c1082dde0921b56d11030c81f62fbb51932758b58ac2569dd0b379",
15061531
"testtupleKeys": [
15071532
"1dbd49d84e00ad6f339f416af0decfaf2db8f14412786de65b597e49a6820f96"
15081533
],
@@ -1588,13 +1613,14 @@ peer chaincode invoke -n mycc -c '{"Args":["queryComputePlan","{\"key\":\"432fcf
15881613
##### Command output:
15891614
```json
15901615
{
1591-
"algoKey": "fd1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc",
1616+
"aggregatetupleKeys": [],
1617+
"compositeTraintupleKeys": [],
15921618
"computePlanID": "432fcffdf68892f5e4adeeed8bb618beaeaecf709f840671eca724a3e3109369",
15931619
"objectiveKey": "5c1d9cd1c2c1082dde0921b56d11030c81f62fbb51932758b58ac2569dd0b379",
1594-
"testtuples": [
1620+
"testtupleKeys": [
15951621
"1dbd49d84e00ad6f339f416af0decfaf2db8f14412786de65b597e49a6820f96"
15961622
],
1597-
"traintuples": [
1623+
"traintupleKeys": [
15981624
"432fcffdf68892f5e4adeeed8bb618beaeaecf709f840671eca724a3e3109369",
15991625
"d23f8cf290b902417ae698d68e2c6835483521d54fcbece31208517759b7c299"
16001626
]
@@ -1608,13 +1634,14 @@ peer chaincode invoke -n mycc -c '{"Args":["queryComputePlans"]}' -C myc
16081634
```json
16091635
[
16101636
{
1611-
"algoKey": "fd1bb7c31f62244c0f3a761cc168804227115793d01c270021fe3f7935482dcc",
1637+
"aggregatetupleKeys": [],
1638+
"compositeTraintupleKeys": [],
16121639
"computePlanID": "432fcffdf68892f5e4adeeed8bb618beaeaecf709f840671eca724a3e3109369",
16131640
"objectiveKey": "5c1d9cd1c2c1082dde0921b56d11030c81f62fbb51932758b58ac2569dd0b379",
1614-
"testtuples": [
1641+
"testtupleKeys": [
16151642
"1dbd49d84e00ad6f339f416af0decfaf2db8f14412786de65b597e49a6820f96"
16161643
],
1617-
"traintuples": [
1644+
"traintupleKeys": [
16181645
"432fcffdf68892f5e4adeeed8bb618beaeaecf709f840671eca724a3e3109369",
16191646
"d23f8cf290b902417ae698d68e2c6835483521d54fcbece31208517759b7c299"
16201647
]

chaincode/algo.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import (
2020

2121
// Set is a method of the receiver Algo. It uses inputAlgo fields to set the Algo
2222
// Returns the algoKey
23-
func (algo *Algo) Set(db LedgerDB, inp inputAlgo) (algoKey string, err error) {
23+
func (algo *Algo) Set(db *LedgerDB, inp inputAlgo) (algoKey string, err error) {
2424
algoKey = inp.Hash
2525
// find associated owner
2626
owner, err := GetTxCreator(db.cc)
@@ -50,7 +50,7 @@ func (algo *Algo) Set(db LedgerDB, inp inputAlgo) (algoKey string, err error) {
5050
// -------------------------------------------------------------------------------------------
5151
// registerAlgo stores a new algo in the ledger.
5252
// If the key exists, it will override the value with the new one
53-
func registerAlgo(db LedgerDB, args []string) (resp map[string]string, err error) {
53+
func registerAlgo(db *LedgerDB, args []string) (resp map[string]string, err error) {
5454
inp := inputAlgo{}
5555
err = AssetFromJSON(args, &inp)
5656
if err != nil {
@@ -76,7 +76,7 @@ func registerAlgo(db LedgerDB, args []string) (resp map[string]string, err error
7676
}
7777

7878
// queryAlgo returns an algo of the ledger given its key
79-
func queryAlgo(db LedgerDB, args []string) (out outputAlgo, err error) {
79+
func queryAlgo(db *LedgerDB, args []string) (out outputAlgo, err error) {
8080
inp := inputHash{}
8181
err = AssetFromJSON(args, &inp)
8282
if err != nil {
@@ -91,7 +91,7 @@ func queryAlgo(db LedgerDB, args []string) (out outputAlgo, err error) {
9191
}
9292

9393
// queryAlgos returns all algos of the ledger
94-
func queryAlgos(db LedgerDB, args []string) (outAlgos []outputAlgo, err error) {
94+
func queryAlgos(db *LedgerDB, args []string) (outAlgos []outputAlgo, err error) {
9595
outAlgos = []outputAlgo{}
9696
if len(args) != 0 {
9797
err = errors.BadRequest("incorrect number of arguments, expecting nothing")

chaincode/algo_aggregate.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import (
2020

2121
// Set is a method of the receiver Aggregate. It uses inputAggregateAlgo fields to set the AggregateAlgo
2222
// Returns the aggregateAlgoKey
23-
func (algo *AggregateAlgo) Set(db LedgerDB, inp inputAggregateAlgo) (algoKey string, err error) {
23+
func (algo *AggregateAlgo) Set(db *LedgerDB, inp inputAggregateAlgo) (algoKey string, err error) {
2424
algoKey = inp.Hash
2525
// find associated owner
2626
owner, err := GetTxCreator(db.cc)
@@ -50,7 +50,7 @@ func (algo *AggregateAlgo) Set(db LedgerDB, inp inputAggregateAlgo) (algoKey str
5050
// -------------------------------------------------------------------------------------------
5151
// registerAggregateAlgo stores a new algo in the ledger.
5252
// If the key exists, it will override the value with the new one
53-
func registerAggregateAlgo(db LedgerDB, args []string) (resp map[string]string, err error) {
53+
func registerAggregateAlgo(db *LedgerDB, args []string) (resp map[string]string, err error) {
5454
inp := inputAggregateAlgo{}
5555
err = AssetFromJSON(args, &inp)
5656
if err != nil {
@@ -76,7 +76,7 @@ func registerAggregateAlgo(db LedgerDB, args []string) (resp map[string]string,
7676
}
7777

7878
// queryAggregateAlgo returns an algo of the ledger given its key
79-
func queryAggregateAlgo(db LedgerDB, args []string) (out outputAggregateAlgo, err error) {
79+
func queryAggregateAlgo(db *LedgerDB, args []string) (out outputAggregateAlgo, err error) {
8080
inp := inputHash{}
8181
err = AssetFromJSON(args, &inp)
8282
if err != nil {
@@ -91,7 +91,7 @@ func queryAggregateAlgo(db LedgerDB, args []string) (out outputAggregateAlgo, er
9191
}
9292

9393
// queryAggregateAlgos returns all algos of the ledger
94-
func queryAggregateAlgos(db LedgerDB, args []string) (outAlgos []outputAggregateAlgo, err error) {
94+
func queryAggregateAlgos(db *LedgerDB, args []string) (outAlgos []outputAggregateAlgo, err error) {
9595
outAlgos = []outputAggregateAlgo{}
9696
if len(args) != 0 {
9797
err = errors.BadRequest("incorrect number of arguments, expecting nothing")

chaincode/algo_composite.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import (
2020

2121
// Set is a method of the receiver CompositeAlgo. It uses inputCompositeAlgo fields to set the CompositeAlgo
2222
// Returns the compositeAlgoKey
23-
func (algo *CompositeAlgo) Set(db LedgerDB, inp inputCompositeAlgo) (algoKey string, err error) {
23+
func (algo *CompositeAlgo) Set(db *LedgerDB, inp inputCompositeAlgo) (algoKey string, err error) {
2424
algoKey = inp.Hash
2525
// find associated owner
2626
owner, err := GetTxCreator(db.cc)
@@ -50,7 +50,7 @@ func (algo *CompositeAlgo) Set(db LedgerDB, inp inputCompositeAlgo) (algoKey str
5050
// -------------------------------------------------------------------------------------------
5151
// registerCompositeAlgo stores a new algo in the ledger.
5252
// If the key exists, it will override the value with the new one
53-
func registerCompositeAlgo(db LedgerDB, args []string) (resp map[string]string, err error) {
53+
func registerCompositeAlgo(db *LedgerDB, args []string) (resp map[string]string, err error) {
5454
inp := inputCompositeAlgo{}
5555
err = AssetFromJSON(args, &inp)
5656
if err != nil {
@@ -76,7 +76,7 @@ func registerCompositeAlgo(db LedgerDB, args []string) (resp map[string]string,
7676
}
7777

7878
// queryCompositeAlgo returns an algo of the ledger given its key
79-
func queryCompositeAlgo(db LedgerDB, args []string) (out outputCompositeAlgo, err error) {
79+
func queryCompositeAlgo(db *LedgerDB, args []string) (out outputCompositeAlgo, err error) {
8080
inp := inputHash{}
8181
err = AssetFromJSON(args, &inp)
8282
if err != nil {
@@ -91,7 +91,7 @@ func queryCompositeAlgo(db LedgerDB, args []string) (out outputCompositeAlgo, er
9191
}
9292

9393
// queryCompositeAlgos returns all algos of the ledger
94-
func queryCompositeAlgos(db LedgerDB, args []string) (outAlgos []outputCompositeAlgo, err error) {
94+
func queryCompositeAlgos(db *LedgerDB, args []string) (outAlgos []outputCompositeAlgo, err error) {
9595
outAlgos = []outputCompositeAlgo{}
9696
if len(args) != 0 {
9797
err = errors.BadRequest("incorrect number of arguments, expecting nothing")

chaincode/common.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import (
2121

2222
// queryFilter returns all elements of the ledger matching some filters
2323
// For now, ok for everything. Later returns if the requester has permission to see it
24-
func queryFilter(db LedgerDB, args []string) (elements interface{}, err error) {
24+
func queryFilter(db *LedgerDB, args []string) (elements interface{}, err error) {
2525
inp := inputQueryFilter{}
2626
err = AssetFromJSON(args, &inp)
2727
if err != nil {

0 commit comments

Comments
 (0)