diff --git a/Dockerfile b/Dockerfile index 2479e6f..6a7a503 100644 --- a/Dockerfile +++ b/Dockerfile @@ -26,5 +26,4 @@ ENV DEALBOT_LOG_JSON=true ENV DEALBOT_WORKERS=10 ENV STAGE_TIMEOUT=DefaultStorage=48h,DefaultRetrieval=48h ENV DEALBOT_MIN_FIL=-1 -ENV DEALBOT_DAEMON_DRIVER=kubernetes ENTRYPOINT ["/dealbot"] diff --git a/controller/graphql/schema.go b/controller/graphql/schema.go index a4f1cba..a7663b9 100644 --- a/controller/graphql/schema.go +++ b/controller/graphql/schema.go @@ -595,6 +595,22 @@ func FinishedTask__ProposalCID__resolve(p graphql.ResolveParams) (interface{}, e return nil, nil } +} +func FinishedTask__DealIDString__resolve(p graphql.ResolveParams) (interface{}, error) { + ts, ok := p.Source.(tasks.FinishedTask) + if !ok { + return nil, fmt.Errorf(errUnexpectedType, p.Source, "tasks.FinishedTask") + } + + f := ts.FieldDealIDString() + if f.Exists() { + + return f.Must().AsString() + + } else { + return nil, nil + } + } var FinishedTask__type = graphql.NewObject(graphql.ObjectConfig{ Name: "FinishedTask", @@ -701,6 +717,12 @@ var FinishedTask__type = graphql.NewObject(graphql.ObjectConfig{ Resolve: FinishedTask__ProposalCID__resolve, }, + "DealIDString": &graphql.Field{ + + Type: graphql.String, + + Resolve: FinishedTask__DealIDString__resolve, + }, }, }) var FinishedTasks__type = graphql.NewObject(graphql.ObjectConfig{ diff --git a/controller/http_test.go b/controller/http_test.go index 9bdb54b..fd099ee 100644 --- a/controller/http_test.go +++ b/controller/http_test.go @@ -373,7 +373,7 @@ type harness struct { serveErr chan error } -const defaultPGPort = 5434 +const defaultPGPort = 5435 func newHarness(ctx context.Context, t *testing.T, connector state.DBConnector, migrator state.Migrator) *harness { h := &harness{ctx: ctx} diff --git a/tasks/gen.go b/tasks/gen.go index bb174fa..e457149 100644 --- a/tasks/gen.go +++ b/tasks/gen.go @@ -143,6 +143,7 @@ func main() { schema.SpawnStructField("Size", "Int", true, true), schema.SpawnStructField("PayloadCID", "String", true, true), schema.SpawnStructField("ProposalCID", "String", true, true), + schema.SpawnStructField("DealIDString", "String", true, true), }, schema.SpawnStructRepresentationMap(map[string]string{}))) ts.Accumulate(schema.SpawnList("FinishedTasks", "FinishedTask", false)) ts.Accumulate(schema.SpawnLinkReference("Link_FinishedTask", "FinishedTask")) diff --git a/tasks/ipldsch_satisfaction.go b/tasks/ipldsch_satisfaction.go index f63c39e..6cf980d 100644 --- a/tasks/ipldsch_satisfaction.go +++ b/tasks/ipldsch_satisfaction.go @@ -2552,6 +2552,9 @@ func (n _FinishedTask) FieldPayloadCID() MaybeString { func (n _FinishedTask) FieldProposalCID() MaybeString { return &n.ProposalCID } +func (n _FinishedTask) FieldDealIDString() MaybeString { + return &n.DealIDString +} type _FinishedTask__Maybe struct { m schema.Maybe v FinishedTask @@ -2603,6 +2606,7 @@ var ( fieldName__FinishedTask_Size = _String{"Size"} fieldName__FinishedTask_PayloadCID = _String{"PayloadCID"} fieldName__FinishedTask_ProposalCID = _String{"ProposalCID"} + fieldName__FinishedTask_DealIDString = _String{"DealIDString"} ) var _ ipld.Node = (FinishedTask)(&_FinishedTask{}) var _ schema.TypedNode = (FinishedTask)(&_FinishedTask{}) @@ -2708,6 +2712,14 @@ func (n FinishedTask) LookupByString(key string) (ipld.Node, error) { return ipld.Null, nil } return n.ProposalCID.v, nil + case "DealIDString": + if n.DealIDString.m == schema.Maybe_Absent { + return ipld.Absent, nil + } + if n.DealIDString.m == schema.Maybe_Null { + return ipld.Null, nil + } + return n.DealIDString.v, nil default: return nil, schema.ErrNoSuchField{Type: nil /*TODO*/, Field: ipld.PathSegmentOfString(key)} } @@ -2735,7 +2747,7 @@ type _FinishedTask__MapItr struct { } func (itr *_FinishedTask__MapItr) Next() (k ipld.Node, v ipld.Node, _ error) { - if itr.idx >= 17 { + if itr.idx >= 18 { return nil, nil, ipld.ErrIteratorOverread{} } switch itr.idx { @@ -2874,6 +2886,17 @@ func (itr *_FinishedTask__MapItr) Next() (k ipld.Node, v ipld.Node, _ error) { break } v = itr.n.ProposalCID.v + case 17: + k = &fieldName__FinishedTask_DealIDString + if itr.n.DealIDString.m == schema.Maybe_Absent { + v = ipld.Absent + break + } + if itr.n.DealIDString.m == schema.Maybe_Null { + v = ipld.Null + break + } + v = itr.n.DealIDString.v default: panic("unreachable") } @@ -2881,14 +2904,14 @@ func (itr *_FinishedTask__MapItr) Next() (k ipld.Node, v ipld.Node, _ error) { return } func (itr *_FinishedTask__MapItr) Done() bool { - return itr.idx >= 17 + return itr.idx >= 18 } func (FinishedTask) ListIterator() ipld.ListIterator { return nil } func (FinishedTask) Length() int64 { - return 17 + return 18 } func (FinishedTask) IsAbsent() bool { return false @@ -2963,6 +2986,7 @@ type _FinishedTask__Assembler struct { ca_Size _Int__Assembler ca_PayloadCID _String__Assembler ca_ProposalCID _String__Assembler + ca_DealIDString _String__Assembler } func (na *_FinishedTask__Assembler) reset() { @@ -2985,6 +3009,7 @@ func (na *_FinishedTask__Assembler) reset() { na.ca_Size.reset() na.ca_PayloadCID.reset() na.ca_ProposalCID.reset() + na.ca_DealIDString.reset() } var ( @@ -3005,6 +3030,7 @@ var ( fieldBit__FinishedTask_Size = 1 << 14 fieldBit__FinishedTask_PayloadCID = 1 << 15 fieldBit__FinishedTask_ProposalCID = 1 << 16 + fieldBit__FinishedTask_DealIDString = 1 << 17 fieldBits__FinishedTask_sufficient = 0 + 1 << 0 + 1 << 1 + 1 << 5 + 1 << 6 + 1 << 7 + 1 << 11 ) func (na *_FinishedTask__Assembler) BeginMap(int64) (ipld.MapAssembler, error) { @@ -3287,6 +3313,18 @@ func (ma *_FinishedTask__Assembler) valueFinishTidy() bool { default: return false } + case 17: + switch ma.w.DealIDString.m { + case schema.Maybe_Null: + ma.state = maState_initial + return true + case schema.Maybe_Value: + ma.w.DealIDString.v = ma.ca_DealIDString.w + ma.state = maState_initial + return true + default: + return false + } default: panic("unreachable") } @@ -3487,6 +3525,17 @@ func (ma *_FinishedTask__Assembler) AssembleEntry(k string) (ipld.NodeAssembler, ma.ca_ProposalCID.m = &ma.w.ProposalCID.m ma.w.ProposalCID.m = allowNull return &ma.ca_ProposalCID, nil + case "DealIDString": + if ma.s & fieldBit__FinishedTask_DealIDString != 0 { + return nil, ipld.ErrRepeatedMapKey{&fieldName__FinishedTask_DealIDString} + } + ma.s += fieldBit__FinishedTask_DealIDString + ma.state = maState_midValue + ma.f = 17 + ma.ca_DealIDString.w = ma.w.DealIDString.v + ma.ca_DealIDString.m = &ma.w.DealIDString.m + ma.w.DealIDString.m = allowNull + return &ma.ca_DealIDString, nil default: return nil, ipld.ErrInvalidKey{TypeName:"tasks.FinishedTask", Key:&_String{k}} } @@ -3602,6 +3651,11 @@ func (ma *_FinishedTask__Assembler) AssembleValue() ipld.NodeAssembler { ma.ca_ProposalCID.m = &ma.w.ProposalCID.m ma.w.ProposalCID.m = allowNull return &ma.ca_ProposalCID + case 17: + ma.ca_DealIDString.w = ma.w.DealIDString.v + ma.ca_DealIDString.m = &ma.w.DealIDString.m + ma.w.DealIDString.m = allowNull + return &ma.ca_DealIDString default: panic("unreachable") } @@ -3796,6 +3850,13 @@ func (ka *_FinishedTask__KeyAssembler) AssignString(k string) error { ka.s += fieldBit__FinishedTask_ProposalCID ka.state = maState_expectValue ka.f = 16 + case "DealIDString": + if ka.s & fieldBit__FinishedTask_DealIDString != 0 { + return ipld.ErrRepeatedMapKey{&fieldName__FinishedTask_DealIDString} + } + ka.s += fieldBit__FinishedTask_DealIDString + ka.state = maState_expectValue + ka.f = 17 default: return ipld.ErrInvalidKey{TypeName:"tasks.FinishedTask", Key:&_String{k}} } @@ -3842,6 +3903,7 @@ var ( fieldName__FinishedTask_Size_serial = _String{"Size"} fieldName__FinishedTask_PayloadCID_serial = _String{"PayloadCID"} fieldName__FinishedTask_ProposalCID_serial = _String{"ProposalCID"} + fieldName__FinishedTask_DealIDString_serial = _String{"DealIDString"} ) var _ ipld.Node = &_FinishedTask__Repr{} func (_FinishedTask__Repr) Kind() ipld.Kind { @@ -3946,6 +4008,14 @@ func (n *_FinishedTask__Repr) LookupByString(key string) (ipld.Node, error) { return ipld.Null, nil } return n.ProposalCID.v.Representation(), nil + case "DealIDString": + if n.DealIDString.m == schema.Maybe_Absent { + return ipld.Absent, ipld.ErrNotExists{ipld.PathSegmentOfString(key)} + } + if n.DealIDString.m == schema.Maybe_Null { + return ipld.Null, nil + } + return n.DealIDString.v.Representation(), nil default: return nil, schema.ErrNoSuchField{Type: nil /*TODO*/, Field: ipld.PathSegmentOfString(key)} } @@ -3964,7 +4034,12 @@ func (n _FinishedTask__Repr) LookupBySegment(seg ipld.PathSegment) (ipld.Node, e return n.LookupByString(seg.String()) } func (n *_FinishedTask__Repr) MapIterator() ipld.MapIterator { - end := 17 + end := 18 + if n.DealIDString.m == schema.Maybe_Absent { + end = 17 + } else { + goto done + } if n.ProposalCID.m == schema.Maybe_Absent { end = 16 } else { @@ -4001,7 +4076,7 @@ type _FinishedTask__ReprMapItr struct { } func (itr *_FinishedTask__ReprMapItr) Next() (k ipld.Node, v ipld.Node, _ error) { -advance:if itr.idx >= 17 { +advance:if itr.idx >= 18 { return nil, nil, ipld.ErrIteratorOverread{} } switch itr.idx { @@ -4140,6 +4215,17 @@ advance:if itr.idx >= 17 { break } v = itr.n.ProposalCID.v.Representation() + case 17: + k = &fieldName__FinishedTask_DealIDString_serial + if itr.n.DealIDString.m == schema.Maybe_Absent { + itr.idx++ + goto advance + } + if itr.n.DealIDString.m == schema.Maybe_Null { + v = ipld.Null + break + } + v = itr.n.DealIDString.v.Representation() default: panic("unreachable") } @@ -4153,7 +4239,7 @@ func (_FinishedTask__Repr) ListIterator() ipld.ListIterator { return nil } func (rn *_FinishedTask__Repr) Length() int64 { - l := 17 + l := 18 if rn.ErrorMessage.m == schema.Maybe_Absent { l-- } @@ -4187,6 +4273,9 @@ func (rn *_FinishedTask__Repr) Length() int64 { if rn.ProposalCID.m == schema.Maybe_Absent { l-- } + if rn.DealIDString.m == schema.Maybe_Absent { + l-- + } return int64(l) } func (_FinishedTask__Repr) IsAbsent() bool { @@ -4262,6 +4351,7 @@ type _FinishedTask__ReprAssembler struct { ca_Size _Int__ReprAssembler ca_PayloadCID _String__ReprAssembler ca_ProposalCID _String__ReprAssembler + ca_DealIDString _String__ReprAssembler } func (na *_FinishedTask__ReprAssembler) reset() { @@ -4284,6 +4374,7 @@ func (na *_FinishedTask__ReprAssembler) reset() { na.ca_Size.reset() na.ca_PayloadCID.reset() na.ca_ProposalCID.reset() + na.ca_DealIDString.reset() } func (na *_FinishedTask__ReprAssembler) BeginMap(int64) (ipld.MapAssembler, error) { switch *na.m { @@ -4553,6 +4644,18 @@ func (ma *_FinishedTask__ReprAssembler) valueFinishTidy() bool { default: return false } + case 17: + switch ma.w.DealIDString.m { + case schema.Maybe_Null: + ma.state = maState_initial + return true + case schema.Maybe_Value: + ma.w.DealIDString.v = ma.ca_DealIDString.w + ma.state = maState_initial + return true + default: + return false + } default: panic("unreachable") } @@ -4754,6 +4857,17 @@ func (ma *_FinishedTask__ReprAssembler) AssembleEntry(k string) (ipld.NodeAssemb ma.ca_ProposalCID.m = &ma.w.ProposalCID.m ma.w.ProposalCID.m = allowNull return &ma.ca_ProposalCID, nil + case "DealIDString": + if ma.s & fieldBit__FinishedTask_DealIDString != 0 { + return nil, ipld.ErrRepeatedMapKey{&fieldName__FinishedTask_DealIDString_serial} + } + ma.s += fieldBit__FinishedTask_DealIDString + ma.state = maState_midValue + ma.f = 17 + ma.ca_DealIDString.w = ma.w.DealIDString.v + ma.ca_DealIDString.m = &ma.w.DealIDString.m + ma.w.DealIDString.m = allowNull + return &ma.ca_DealIDString, nil default: return nil, ipld.ErrInvalidKey{TypeName:"tasks.FinishedTask.Repr", Key:&_String{k}} } @@ -4870,6 +4984,11 @@ func (ma *_FinishedTask__ReprAssembler) AssembleValue() ipld.NodeAssembler { ma.ca_ProposalCID.m = &ma.w.ProposalCID.m ma.w.ProposalCID.m = allowNull return &ma.ca_ProposalCID + case 17: + ma.ca_DealIDString.w = ma.w.DealIDString.v + ma.ca_DealIDString.m = &ma.w.DealIDString.m + ma.w.DealIDString.m = allowNull + return &ma.ca_DealIDString default: panic("unreachable") } @@ -5064,6 +5183,13 @@ func (ka *_FinishedTask__ReprKeyAssembler) AssignString(k string) error { ka.s += fieldBit__FinishedTask_ProposalCID ka.state = maState_expectValue ka.f = 16 + case "DealIDString": + if ka.s & fieldBit__FinishedTask_DealIDString != 0 { + return ipld.ErrRepeatedMapKey{&fieldName__FinishedTask_DealIDString_serial} + } + ka.s += fieldBit__FinishedTask_DealIDString + ka.state = maState_expectValue + ka.f = 17 default: return ipld.ErrInvalidKey{TypeName:"tasks.FinishedTask.Repr", Key:&_String{k}} } diff --git a/tasks/ipldsch_types.go b/tasks/ipldsch_types.go index 266d635..f4c980d 100644 --- a/tasks/ipldsch_types.go +++ b/tasks/ipldsch_types.go @@ -133,6 +133,7 @@ type _FinishedTask struct { Size _Int__Maybe PayloadCID _String__Maybe ProposalCID _String__Maybe + DealIDString _String__Maybe } // FinishedTasks matches the IPLD Schema type "FinishedTasks". It has list kind. diff --git a/tasks/model.go b/tasks/model.go index 50cda84..240227b 100644 --- a/tasks/model.go +++ b/tasks/model.go @@ -383,6 +383,7 @@ func (t *_Task) Finalize(ctx context.Context, s ipld.Storer, local bool) (Finish Size: logs.size, PayloadCID: logs.payloadCID, ProposalCID: logs.proposalCID, + DealIDString: logs.DealIDString(), } // events to dag item logList := &_List_StageDetails{} @@ -416,6 +417,12 @@ type logExtraction struct { proposalCID _String__Maybe } +func (l *logExtraction) DealIDString() _String__Maybe { + if l.dealID == 0 { + return _String__Maybe{m: schema.Maybe_Absent} + } + return _String__Maybe{m: schema.Maybe_Value, v: &_String{strconv.Itoa(l.dealID)}} +} func parseFinalLogs(t Task) *logExtraction { le := &logExtraction{ minerVersion: _String__Maybe{m: schema.Maybe_Absent},