NOISSUE - Fix dependencies (#13)

* vendor

Signed-off-by: WashingtonKK <washingtonkigan@gmail.com>

* Return agent changes

Signed-off-by: WashingtonKK <washingtonkigan@gmail.com>

* Add missing import

Signed-off-by: WashingtonKK <washingtonkigan@gmail.com>

* remove vendor

Signed-off-by: WashingtonKK <washingtonkigan@gmail.com>

* Fix formatting

Signed-off-by: WashingtonKK <washingtonkigan@gmail.com>

* Formatting errors

Signed-off-by: WashingtonKK <washingtonkigan@gmail.com>

* Update agent/api/grpc/client.go

Signed off: WashingtonKK

washingtonkigan@gmail.com

Co-authored-by: Sammy Kerata Oina <44265300+SammyOina@users.noreply.github.com>

* add linters and fix

Signed-off-by: SammyOina <sammyoina@gmail.com>

* update ci

Signed-off-by: SammyOina <sammyoina@gmail.com>

* remove deprecated dependencies and
 use local agent and manager

Signed-off-by: SammyOina <sammyoina@gmail.com>

* update mainflux

Signed-off-by: SammyOina <sammyoina@gmail.com>

* Fix Jaeger URL in agent and manager main.go files

The Jaeger URL in the agent and manager main.go files was incorrect. This commit fixes the Jaeger URL by updating it to "http://localhost::4318/v1/traces".

Signed-off-by: SammyOina <sammyoina@gmail.com>

---------

Signed-off-by: WashingtonKK <washingtonkigan@gmail.com>
Signed-off-by: SammyOina <sammyoina@gmail.com>
Co-authored-by: WashingtonKK <washingtonkigan@gmail.com>
This commit is contained in:
Sammy Kerata Oina
2023-10-27 23:12:53 +03:00
committed by GitHub
parent 7d47ed7a20
commit f1f8f95653
83 changed files with 829 additions and 1149 deletions
-1
View File
@@ -25,7 +25,6 @@ jobs:
uses: golangci/golangci-lint-action@v3
with:
version: latest
args: --no-config --disable-all --enable gosimple --enable errcheck --enable govet --enable unused --enable deadcode --timeout 3m
- name: Build
run: |
+73
View File
@@ -0,0 +1,73 @@
run:
timeout: 3m
build-tags:
- "nats"
issues:
max-issues-per-linter: 10
max-same-issues: 10
linters-settings:
gocritic:
enabled-checks:
- captLocal
- dupImport
- singleCaseSwitch
disabled-checks:
- appendAssign
enabled-tags:
- diagnostic
disabled-tags:
- performance
- style
- experimental
- opinionated
misspell:
ignore-words:
- "mosquitto"
stylecheck:
checks: ["-ST1000", "-ST1003", "-ST1020", "-ST1021", "-ST1022"]
goheader:
template: |-
Copyright (c) Ultraviolet
SPDX-License-Identifier: Apache-2.0
linters:
disable-all: true
enable:
- gocritic
- gosimple
- errcheck
- govet
- unused
- goconst
- godot
- godox
- ineffassign
- misspell
- stylecheck
- whitespace
- gci
- gofmt
- goimports
- loggercheck
- goheader
- asasalint
- asciicheck
- bidichk
- contextcheck
- decorder
- dogsled
- errchkjson
- errname
- execinquery
- exportloopref
- ginkgolinter
- gocheckcompilerdirectives
- gofumpt
- goprintffuncname
- importas
- makezero
- mirror
- nakedret
- dupword
+2 -2
View File
@@ -25,9 +25,9 @@ To start the service outside of the container, execute the following shell scrip
```bash
# download the latest version of the service
go get github.com/ultravioletrs/agent
go get github.com/ultravioletrs/cocos-ai
cd $GOPATH/src/github.com/ultravioletrs/agent
cd $GOPATH/src/github.com/ultravioletrs/cocos-ai
# compile the agent
make agent
+159 -39
View File
@@ -1,13 +1,15 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.25.0
// protoc v3.12.4
// protoc-gen-go v1.31.0
// protoc v4.23.3
// source: agent/agent.proto
package agent
import (
proto "github.com/golang/protobuf/proto"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
@@ -21,10 +23,6 @@ const (
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// This is a compile-time assertion that a sufficiently up-to-date version
// of the legacy proto package is being used.
const _ = proto.ProtoPackageIsVersion4
type RunRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -392,6 +390,91 @@ func (x *ResultResponse) GetFile() []byte {
return nil
}
type AttestationRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *AttestationRequest) Reset() {
*x = AttestationRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_agent_agent_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *AttestationRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AttestationRequest) ProtoMessage() {}
func (x *AttestationRequest) ProtoReflect() protoreflect.Message {
mi := &file_agent_agent_proto_msgTypes[8]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use AttestationRequest.ProtoReflect.Descriptor instead.
func (*AttestationRequest) Descriptor() ([]byte, []int) {
return file_agent_agent_proto_rawDescGZIP(), []int{8}
}
type AttestationResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
File []byte `protobuf:"bytes,1,opt,name=file,proto3" json:"file,omitempty"`
}
func (x *AttestationResponse) Reset() {
*x = AttestationResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_agent_agent_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *AttestationResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AttestationResponse) ProtoMessage() {}
func (x *AttestationResponse) ProtoReflect() protoreflect.Message {
mi := &file_agent_agent_proto_msgTypes[9]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use AttestationResponse.ProtoReflect.Descriptor instead.
func (*AttestationResponse) Descriptor() ([]byte, []int) {
return file_agent_agent_proto_rawDescGZIP(), []int{9}
}
func (x *AttestationResponse) GetFile() []byte {
if x != nil {
return x.File
}
return nil
}
var File_agent_agent_proto protoreflect.FileDescriptor
var file_agent_agent_proto_rawDesc = []byte{
@@ -417,22 +500,31 @@ var file_agent_agent_proto_rawDesc = []byte{
0x44, 0x22, 0x0f, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x22, 0x24, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0c, 0x52, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x32, 0xdd, 0x01, 0x0a, 0x0c, 0x41, 0x67, 0x65,
0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x2e, 0x0a, 0x03, 0x52, 0x75, 0x6e,
0x12, 0x11, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x75, 0x6e, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x31, 0x0a, 0x04, 0x41, 0x6c, 0x67,
0x6f, 0x12, 0x12, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x6c, 0x67, 0x6f, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x6c,
0x67, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x31, 0x0a, 0x04,
0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x44, 0x61, 0x74,
0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74,
0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12,
0x37, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e,
0x74, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x15, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x09, 0x5a, 0x07, 0x2e, 0x2f, 0x61, 0x67,
0x65, 0x6e, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x28, 0x0c, 0x52, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x41, 0x74, 0x74, 0x65,
0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x29,
0x0a, 0x13, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20,
0x01, 0x28, 0x0c, 0x52, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x32, 0xa5, 0x02, 0x0a, 0x0c, 0x41, 0x67,
0x65, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x2e, 0x0a, 0x03, 0x52, 0x75,
0x6e, 0x12, 0x11, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x75, 0x6e,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x31, 0x0a, 0x04, 0x41, 0x6c,
0x67, 0x6f, 0x12, 0x12, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x6c, 0x67, 0x6f, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x41,
0x6c, 0x67, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x31, 0x0a,
0x04, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x44, 0x61,
0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x61, 0x67, 0x65, 0x6e,
0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
0x12, 0x37, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x14, 0x2e, 0x61, 0x67, 0x65,
0x6e, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x15, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x0b, 0x41, 0x74, 0x74,
0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74,
0x2e, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x74, 0x74, 0x65,
0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
0x00, 0x42, 0x09, 0x5a, 0x07, 0x2e, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x62, 0x06, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -447,28 +539,32 @@ func file_agent_agent_proto_rawDescGZIP() []byte {
return file_agent_agent_proto_rawDescData
}
var file_agent_agent_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
var file_agent_agent_proto_msgTypes = make([]protoimpl.MessageInfo, 10)
var file_agent_agent_proto_goTypes = []interface{}{
(*RunRequest)(nil), // 0: agent.RunRequest
(*RunResponse)(nil), // 1: agent.RunResponse
(*AlgoRequest)(nil), // 2: agent.AlgoRequest
(*AlgoResponse)(nil), // 3: agent.AlgoResponse
(*DataRequest)(nil), // 4: agent.DataRequest
(*DataResponse)(nil), // 5: agent.DataResponse
(*ResultRequest)(nil), // 6: agent.ResultRequest
(*ResultResponse)(nil), // 7: agent.ResultResponse
(*RunRequest)(nil), // 0: agent.RunRequest
(*RunResponse)(nil), // 1: agent.RunResponse
(*AlgoRequest)(nil), // 2: agent.AlgoRequest
(*AlgoResponse)(nil), // 3: agent.AlgoResponse
(*DataRequest)(nil), // 4: agent.DataRequest
(*DataResponse)(nil), // 5: agent.DataResponse
(*ResultRequest)(nil), // 6: agent.ResultRequest
(*ResultResponse)(nil), // 7: agent.ResultResponse
(*AttestationRequest)(nil), // 8: agent.AttestationRequest
(*AttestationResponse)(nil), // 9: agent.AttestationResponse
}
var file_agent_agent_proto_depIdxs = []int32{
0, // 0: agent.AgentService.Run:input_type -> agent.RunRequest
2, // 1: agent.AgentService.Algo:input_type -> agent.AlgoRequest
4, // 2: agent.AgentService.Data:input_type -> agent.DataRequest
6, // 3: agent.AgentService.Result:input_type -> agent.ResultRequest
1, // 4: agent.AgentService.Run:output_type -> agent.RunResponse
3, // 5: agent.AgentService.Algo:output_type -> agent.AlgoResponse
5, // 6: agent.AgentService.Data:output_type -> agent.DataResponse
7, // 7: agent.AgentService.Result:output_type -> agent.ResultResponse
4, // [4:8] is the sub-list for method output_type
0, // [0:4] is the sub-list for method input_type
8, // 4: agent.AgentService.Attestation:input_type -> agent.AttestationRequest
1, // 5: agent.AgentService.Run:output_type -> agent.RunResponse
3, // 6: agent.AgentService.Algo:output_type -> agent.AlgoResponse
5, // 7: agent.AgentService.Data:output_type -> agent.DataResponse
7, // 8: agent.AgentService.Result:output_type -> agent.ResultResponse
9, // 9: agent.AgentService.Attestation:output_type -> agent.AttestationResponse
5, // [5:10] is the sub-list for method output_type
0, // [0:5] is the sub-list for method input_type
0, // [0:0] is the sub-list for extension type_name
0, // [0:0] is the sub-list for extension extendee
0, // [0:0] is the sub-list for field type_name
@@ -576,6 +672,30 @@ func file_agent_agent_proto_init() {
return nil
}
}
file_agent_agent_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AttestationRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_agent_agent_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AttestationResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
@@ -583,7 +703,7 @@ func file_agent_agent_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_agent_agent_proto_rawDesc,
NumEnums: 0,
NumMessages: 8,
NumMessages: 10,
NumExtensions: 0,
NumServices: 1,
},
+8
View File
@@ -1,3 +1,6 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
syntax = "proto3";
package agent;
@@ -9,6 +12,7 @@ service AgentService {
rpc Algo(AlgoRequest) returns (AlgoResponse) {}
rpc Data(DataRequest) returns (DataResponse) {}
rpc Result(ResultRequest) returns (ResultResponse) {}
rpc Attestation(AttestationRequest) returns (AttestationResponse) {}
}
message RunRequest { bytes computation = 1; }
@@ -26,3 +30,7 @@ message DataResponse { string datasetID = 1; }
message ResultRequest {}
message ResultResponse { bytes file = 1; }
message AttestationRequest { }
message AttestationResponse { bytes file = 1; }
+59 -8
View File
@@ -1,4 +1,11 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
// - protoc v4.23.3
// source: agent/agent.proto
package agent
@@ -14,6 +21,14 @@ import (
// Requires gRPC-Go v1.32.0 or later.
const _ = grpc.SupportPackageIsVersion7
const (
AgentService_Run_FullMethodName = "/agent.AgentService/Run"
AgentService_Algo_FullMethodName = "/agent.AgentService/Algo"
AgentService_Data_FullMethodName = "/agent.AgentService/Data"
AgentService_Result_FullMethodName = "/agent.AgentService/Result"
AgentService_Attestation_FullMethodName = "/agent.AgentService/Attestation"
)
// AgentServiceClient is the client API for AgentService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
@@ -22,6 +37,7 @@ type AgentServiceClient interface {
Algo(ctx context.Context, in *AlgoRequest, opts ...grpc.CallOption) (*AlgoResponse, error)
Data(ctx context.Context, in *DataRequest, opts ...grpc.CallOption) (*DataResponse, error)
Result(ctx context.Context, in *ResultRequest, opts ...grpc.CallOption) (*ResultResponse, error)
Attestation(ctx context.Context, in *AttestationRequest, opts ...grpc.CallOption) (*AttestationResponse, error)
}
type agentServiceClient struct {
@@ -34,7 +50,7 @@ func NewAgentServiceClient(cc grpc.ClientConnInterface) AgentServiceClient {
func (c *agentServiceClient) Run(ctx context.Context, in *RunRequest, opts ...grpc.CallOption) (*RunResponse, error) {
out := new(RunResponse)
err := c.cc.Invoke(ctx, "/agent.AgentService/Run", in, out, opts...)
err := c.cc.Invoke(ctx, AgentService_Run_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
@@ -43,7 +59,7 @@ func (c *agentServiceClient) Run(ctx context.Context, in *RunRequest, opts ...gr
func (c *agentServiceClient) Algo(ctx context.Context, in *AlgoRequest, opts ...grpc.CallOption) (*AlgoResponse, error) {
out := new(AlgoResponse)
err := c.cc.Invoke(ctx, "/agent.AgentService/Algo", in, out, opts...)
err := c.cc.Invoke(ctx, AgentService_Algo_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
@@ -52,7 +68,7 @@ func (c *agentServiceClient) Algo(ctx context.Context, in *AlgoRequest, opts ...
func (c *agentServiceClient) Data(ctx context.Context, in *DataRequest, opts ...grpc.CallOption) (*DataResponse, error) {
out := new(DataResponse)
err := c.cc.Invoke(ctx, "/agent.AgentService/Data", in, out, opts...)
err := c.cc.Invoke(ctx, AgentService_Data_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
@@ -61,7 +77,16 @@ func (c *agentServiceClient) Data(ctx context.Context, in *DataRequest, opts ...
func (c *agentServiceClient) Result(ctx context.Context, in *ResultRequest, opts ...grpc.CallOption) (*ResultResponse, error) {
out := new(ResultResponse)
err := c.cc.Invoke(ctx, "/agent.AgentService/Result", in, out, opts...)
err := c.cc.Invoke(ctx, AgentService_Result_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *agentServiceClient) Attestation(ctx context.Context, in *AttestationRequest, opts ...grpc.CallOption) (*AttestationResponse, error) {
out := new(AttestationResponse)
err := c.cc.Invoke(ctx, AgentService_Attestation_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
@@ -76,6 +101,7 @@ type AgentServiceServer interface {
Algo(context.Context, *AlgoRequest) (*AlgoResponse, error)
Data(context.Context, *DataRequest) (*DataResponse, error)
Result(context.Context, *ResultRequest) (*ResultResponse, error)
Attestation(context.Context, *AttestationRequest) (*AttestationResponse, error)
mustEmbedUnimplementedAgentServiceServer()
}
@@ -95,6 +121,9 @@ func (UnimplementedAgentServiceServer) Data(context.Context, *DataRequest) (*Dat
func (UnimplementedAgentServiceServer) Result(context.Context, *ResultRequest) (*ResultResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method Result not implemented")
}
func (UnimplementedAgentServiceServer) Attestation(context.Context, *AttestationRequest) (*AttestationResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method Attestation not implemented")
}
func (UnimplementedAgentServiceServer) mustEmbedUnimplementedAgentServiceServer() {}
// UnsafeAgentServiceServer may be embedded to opt out of forward compatibility for this service.
@@ -118,7 +147,7 @@ func _AgentService_Run_Handler(srv interface{}, ctx context.Context, dec func(in
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/agent.AgentService/Run",
FullMethod: AgentService_Run_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(AgentServiceServer).Run(ctx, req.(*RunRequest))
@@ -136,7 +165,7 @@ func _AgentService_Algo_Handler(srv interface{}, ctx context.Context, dec func(i
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/agent.AgentService/Algo",
FullMethod: AgentService_Algo_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(AgentServiceServer).Algo(ctx, req.(*AlgoRequest))
@@ -154,7 +183,7 @@ func _AgentService_Data_Handler(srv interface{}, ctx context.Context, dec func(i
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/agent.AgentService/Data",
FullMethod: AgentService_Data_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(AgentServiceServer).Data(ctx, req.(*DataRequest))
@@ -172,7 +201,7 @@ func _AgentService_Result_Handler(srv interface{}, ctx context.Context, dec func
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/agent.AgentService/Result",
FullMethod: AgentService_Result_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(AgentServiceServer).Result(ctx, req.(*ResultRequest))
@@ -180,6 +209,24 @@ func _AgentService_Result_Handler(srv interface{}, ctx context.Context, dec func
return interceptor(ctx, in, info, handler)
}
func _AgentService_Attestation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(AttestationRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(AgentServiceServer).Attestation(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: AgentService_Attestation_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(AgentServiceServer).Attestation(ctx, req.(*AttestationRequest))
}
return interceptor(ctx, in, info, handler)
}
// AgentService_ServiceDesc is the grpc.ServiceDesc for AgentService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
@@ -203,6 +250,10 @@ var AgentService_ServiceDesc = grpc.ServiceDesc{
MethodName: "Result",
Handler: _AgentService_Result_Handler,
},
{
MethodName: "Attestation",
Handler: _AgentService_Attestation_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "agent/agent.proto",
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
// Package api contains API-related concerns: endpoint definitions, middlewares
+51 -6
View File
@@ -1,3 +1,5 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package grpc
import (
@@ -7,18 +9,19 @@ import (
"github.com/go-kit/kit/endpoint"
kitgrpc "github.com/go-kit/kit/transport/grpc"
"github.com/ultravioletrs/agent/agent"
"github.com/ultravioletrs/cocos-ai/agent"
"google.golang.org/grpc"
)
const svcName = "agent.AgentService"
type grpcClient struct {
run endpoint.Endpoint
algo endpoint.Endpoint
data endpoint.Endpoint
result endpoint.Endpoint
timeout time.Duration
run endpoint.Endpoint
algo endpoint.Endpoint
data endpoint.Endpoint
result endpoint.Endpoint
attestation endpoint.Endpoint
timeout time.Duration
}
// NewClient returns new gRPC client instance.
@@ -56,6 +59,14 @@ func NewClient(conn *grpc.ClientConn, timeout time.Duration) agent.AgentServiceC
decodeResultResponse,
agent.ResultResponse{},
).Endpoint(),
attestation: kitgrpc.NewClient(
conn,
svcName,
"Attestation",
encodeAttestationRequest,
decodeAttestationResponse,
agent.AttestationResponse{},
).Endpoint(),
timeout: timeout,
}
}
@@ -157,6 +168,26 @@ func decodeResultResponse(_ context.Context, grpcResponse interface{}) (interfac
}, nil
}
// encodeAttestationRequest is a transport/grpc.EncodeRequestFunc that
// converts a user-domain attestationReq to a gRPC request.
func encodeAttestationRequest(_ context.Context, request interface{}) (interface{}, error) {
// No request parameters needed for retrieving computation result file.
return &agent.AttestationRequest{}, nil
}
// decodeAttestationResponse is a transport/grpc.DecodeResponseFunc that
// converts a gRPC AttestationResponse to a user-domain response.
func decodeAttestationResponse(_ context.Context, grpcResponse interface{}) (interface{}, error) {
response, ok := grpcResponse.(*agent.AttestationResponse)
if !ok {
return nil, fmt.Errorf("invalid response type: %T", grpcResponse)
}
return attestationRes{
File: response.File,
}, nil
}
// Run implements the Run method of the agent.AgentServiceClient interface.
func (c grpcClient) Run(ctx context.Context, request *agent.RunRequest, _ ...grpc.CallOption) (*agent.RunResponse, error) {
ctx, close := context.WithTimeout(ctx, c.timeout)
@@ -212,3 +243,17 @@ func (c grpcClient) Result(ctx context.Context, request *agent.ResultRequest, _
resultRes := res.(resultRes)
return &agent.ResultResponse{File: resultRes.File}, nil
}
// Result implements the Result method of the agent.AgentServiceClient interface.
func (c grpcClient) Attestation(ctx context.Context, request *agent.AttestationRequest, _ ...grpc.CallOption) (*agent.AttestationResponse, error) {
ctx, cancel := context.WithTimeout(ctx, c.timeout)
defer cancel()
res, err := c.result(ctx, &resultReq{})
if err != nil {
return nil, err
}
attestationRes := res.(attestationRes)
return &agent.AttestationResponse{File: attestationRes.File}, nil
}
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
// Package grpc contains implementation of kit service gRPC API.
+19 -1
View File
@@ -1,3 +1,5 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package grpc
import (
@@ -5,7 +7,7 @@ import (
"encoding/json"
"github.com/go-kit/kit/endpoint"
"github.com/ultravioletrs/agent/agent"
"github.com/ultravioletrs/cocos-ai/agent"
)
func runEndpoint(svc agent.Service) endpoint.Endpoint {
@@ -80,3 +82,19 @@ func resultEndpoint(svc agent.Service) endpoint.Endpoint {
return resultRes{File: file}, nil
}
}
func attestationEndpoint(svc agent.Service) endpoint.Endpoint {
return func(ctx context.Context, request interface{}) (interface{}, error) {
req := request.(attestationReq)
if err := req.validate(); err != nil {
return attestationRes{}, err
}
file, err := svc.Attestation(ctx)
if err != nil {
return attestationRes{}, err
}
return attestationRes{File: file}, nil
}
}
+11
View File
@@ -1,3 +1,5 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package grpc
import "errors"
@@ -43,3 +45,12 @@ func (req resultReq) validate() error {
// No request parameters to validate, so no validation logic needed
return nil
}
type attestationReq struct {
// No request parameters needed for retrieving computation result file
}
func (req attestationReq) validate() error {
// No request parameters to validate, so no validation logic needed
return nil
}
+6
View File
@@ -1,3 +1,5 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package grpc
type runRes struct {
@@ -15,3 +17,7 @@ type dataRes struct {
type resultRes struct {
File []byte `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
}
type attestationRes struct {
File []byte
}
+39 -10
View File
@@ -1,43 +1,51 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package grpc
import (
"context"
kitgrpc "github.com/go-kit/kit/transport/grpc"
"github.com/ultravioletrs/agent/agent"
"github.com/go-kit/kit/transport/grpc"
"github.com/ultravioletrs/cocos-ai/agent"
)
type grpcServer struct {
run kitgrpc.Handler
algo kitgrpc.Handler
data kitgrpc.Handler
result kitgrpc.Handler
run grpc.Handler
algo grpc.Handler
data grpc.Handler
result grpc.Handler
attestation grpc.Handler
agent.UnimplementedAgentServiceServer
}
// NewServer returns new AgentServiceServer instance.
func NewServer(svc agent.Service) agent.AgentServiceServer {
return &grpcServer{
run: kitgrpc.NewServer(
run: grpc.NewServer(
runEndpoint(svc),
decodeRunRequest,
encodeRunResponse,
),
algo: kitgrpc.NewServer(
algo: grpc.NewServer(
algoEndpoint(svc),
decodeAlgoRequest,
encodeAlgoResponse,
),
data: kitgrpc.NewServer(
data: grpc.NewServer(
dataEndpoint(svc),
decodeDataRequest,
encodeDataResponse,
),
result: kitgrpc.NewServer(
result: grpc.NewServer(
resultEndpoint(svc),
decodeResultRequest,
encodeResultResponse,
),
attestation: grpc.NewServer(
attestationEndpoint(svc),
decodeAttestationRequest,
encodeAttestationResponse,
),
}
}
@@ -98,6 +106,18 @@ func encodeResultResponse(_ context.Context, response interface{}) (interface{},
}, nil
}
func decodeAttestationRequest(_ context.Context, grpcReq interface{}) (interface{}, error) {
// No fields to extract from gRPC request, so returning an empty struct
return attestationReq{}, nil
}
func encodeAttestationResponse(_ context.Context, response interface{}) (interface{}, error) {
res := response.(attestationRes)
return &agent.AttestationResponse{
File: res.File,
}, nil
}
func (s *grpcServer) Run(ctx context.Context, req *agent.RunRequest) (*agent.RunResponse, error) {
_, res, err := s.run.ServeGRPC(ctx, req)
if err != nil {
@@ -133,3 +153,12 @@ func (s *grpcServer) Result(ctx context.Context, req *agent.ResultRequest) (*age
rr := res.(*agent.ResultResponse)
return rr, nil
}
func (s *grpcServer) Attestation(ctx context.Context, req *agent.AttestationRequest) (*agent.AttestationResponse, error) {
_, res, err := s.attestation.ServeGRPC(ctx, req)
if err != nil {
return nil, err
}
rr := res.(*agent.AttestationResponse)
return rr, nil
}
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
// Package http contains implementation of kit service HTTP API.
+2 -2
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package http
@@ -7,7 +7,7 @@ import (
"context"
"github.com/go-kit/kit/endpoint"
agent "github.com/ultravioletrs/agent/agent"
"github.com/ultravioletrs/cocos-ai/agent"
)
func runEndpoint(svc agent.Service) endpoint.Endpoint {
+2 -2
View File
@@ -1,9 +1,9 @@
// Copyright (c) Mainflux
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package http
import agent "github.com/ultravioletrs/agent/agent"
import "github.com/ultravioletrs/cocos-ai/agent"
type runReq struct {
computation agent.Computation
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package http
+2 -2
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package http
@@ -15,7 +15,7 @@ import (
"github.com/go-zoo/bone"
"github.com/mainflux/mainflux"
"github.com/prometheus/client_golang/prometheus/promhttp"
"github.com/ultravioletrs/agent/agent"
"github.com/ultravioletrs/cocos-ai/agent"
"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
)
+18 -5
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
//go:build !test
@@ -11,19 +11,19 @@ import (
"fmt"
"time"
log "github.com/mainflux/mainflux/logger"
"github.com/ultravioletrs/agent/agent"
"github.com/mainflux/mainflux/logger"
"github.com/ultravioletrs/cocos-ai/agent"
)
var _ agent.Service = (*loggingMiddleware)(nil)
type loggingMiddleware struct {
logger log.Logger
logger logger.Logger
svc agent.Service
}
// LoggingMiddleware adds logging facilities to the core service.
func LoggingMiddleware(svc agent.Service, logger log.Logger) agent.Service {
func LoggingMiddleware(svc agent.Service, logger logger.Logger) agent.Service {
return &loggingMiddleware{logger, svc}
}
@@ -78,3 +78,16 @@ func (lm *loggingMiddleware) Result(ctx context.Context) (response []byte, err e
return lm.svc.Result(ctx)
}
func (lm *loggingMiddleware) Attestation(ctx context.Context) (response []byte, err error) {
defer func(begin time.Time) {
message := fmt.Sprintf("Method Attestation took %s to complete", time.Since(begin))
if err != nil {
lm.logger.Warn(fmt.Sprintf("%s with error: %s", message, err))
return
}
lm.logger.Info(fmt.Sprintf("%s without errors", message))
}(time.Now())
return lm.svc.Attestation(ctx)
}
+11 -2
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
//go:build !test
@@ -11,7 +11,7 @@ import (
"time"
"github.com/go-kit/kit/metrics"
"github.com/ultravioletrs/agent/agent"
"github.com/ultravioletrs/cocos-ai/agent"
)
var _ agent.Service = (*metricsMiddleware)(nil)
@@ -67,3 +67,12 @@ func (ms *metricsMiddleware) Result(ctx context.Context) ([]byte, error) {
return ms.svc.Result(ctx)
}
func (ms *metricsMiddleware) Attestation(ctx context.Context) ([]byte, error) {
defer func(begin time.Time) {
ms.counter.With("method", "attestation").Add(1)
ms.latency.With("method", "attestation").Observe(time.Since(begin).Seconds())
}(time.Now())
return ms.svc.Attestation(ctx)
}
+2
View File
@@ -1,3 +1,5 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package agent
import "time"
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
// Package things contains the domain concept definitions needed to support
+27 -4
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package agent
@@ -10,7 +10,7 @@ import (
"fmt"
"os/exec"
socket "github.com/ultravioletrs/agent/pkg"
"github.com/ultravioletrs/cocos-ai/pkg/socket"
)
var (
@@ -32,6 +32,7 @@ type Service interface {
Algo(ctx context.Context, algorithm []byte) (string, error)
Data(ctx context.Context, dataset []byte) (string, error)
Result(ctx context.Context) ([]byte, error)
Attestation(ctx context.Context) ([]byte, error)
}
type agentService struct {
@@ -39,10 +40,13 @@ type agentService struct {
algorithms [][]byte
datasets [][]byte
result []byte
attestation []byte
}
const socketPath = "unix_socket"
const pyRuntime = "python3"
const (
socketPath = "unix_socket"
pyRuntime = "python3"
)
var _ Service = (*agentService)(nil)
@@ -104,6 +108,25 @@ func (as *agentService) Result(ctx context.Context) ([]byte, error) {
return as.result, nil
}
func (as *agentService) Attestation(ctx context.Context) ([]byte, error) {
// Implement the logic for the Attestation method here
// Use the provided ctx parameter as needed
attestation := `-----BEGIN RSA PRIVATE KEY-----
MIIBOgIBAAJBAKj34GkxFhD90vcNLYLInFEX6Ppy1tPf9Cnzj4p4WGeKLs1Pt8Qu
KUpRKfFLfRYC9AIKjbJTWit+CqvjWYzvQwECAwEAAQJAIJLixBy2qpFoS4DSmoEm
o3qGy0t6z09AIJtH+5OeRV1be+N4cDYJKffGzDa88vQENZiRm0GRq6a+HPGQMd2k
TQIhAKMSvzIBnni7ot/OSie2TmJLY4SwTQAevXysE2RbFDYdAiEBCUEaRQnMnbp7
9mxDXDf6AU0cN/RPBjb9qSHDcWZHGzUCIG2Es59z8ugGrDY+pxLQnwfotadxd+Uy
v/Ow5T0q5gIJAiEAyS4RaI9YG8EWx/2w0T67ZUVAw8eOMB6BIUg0Xcu+3okCIBOs
/5OiPgoTdSy7bcF9IGpSE8ZgGKzgYQVZeN97YE00
-----END RSA PRIVATE KEY-----`
as.attestation = []byte(attestation)
return as.attestation, nil
}
func run(algoContent []byte, dataContent []byte) ([]byte, error) {
listener, err := socket.StartUnixSocketServer(socketPath)
if err != nil {
+3
View File
@@ -1,3 +1,6 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
// Package tracing provides tracing instrumentation for cocos auth service.
//
// This package provides tracing middleware for cocos auth service.
+10 -1
View File
@@ -1,9 +1,11 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package tracing
import (
"context"
"github.com/ultravioletrs/agent/agent"
"github.com/ultravioletrs/cocos-ai/agent"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/trace"
)
@@ -57,3 +59,10 @@ func (tm *tracingMiddleware) Result(ctx context.Context) ([]byte, error) {
return tm.svc.Result(ctx)
}
func (tm *tracingMiddleware) Attestation(ctx context.Context) ([]byte, error) {
ctx, span := tm.tracer.Start(ctx, "attestation")
defer span.End()
return tm.svc.Attestation(ctx)
}
+5 -4
View File
@@ -1,3 +1,5 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package cli
import (
@@ -5,11 +7,10 @@ import (
"os"
"github.com/spf13/cobra"
agentsdk "github.com/ultravioletrs/agent/pkg/sdk"
"github.com/ultravioletrs/cocos-ai/pkg/sdk"
)
func NewAlgorithmsCmd(sdk agentsdk.SDK) *cobra.Command {
func NewAlgorithmsCmd(sdk sdk.SDK) *cobra.Command {
return &cobra.Command{
Use: "algo",
Short: "Upload an algorithm binary",
@@ -31,7 +32,7 @@ func NewAlgorithmsCmd(sdk agentsdk.SDK) *cobra.Command {
return
}
log.Println("Succesfully uploaded algorithm:", response)
log.Println("Successfully uploaded algorithm:", response)
},
}
}
+36
View File
@@ -0,0 +1,36 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package cli
import (
"log"
"os"
"github.com/spf13/cobra"
"github.com/ultravioletrs/cocos-ai/pkg/sdk"
)
const attestationFilePath = "attestation.txt"
func NewAttestationCmd(sdk sdk.SDK) *cobra.Command {
return &cobra.Command{
Use: "attestation",
Short: "Retrieve attestation information",
Run: func(cmd *cobra.Command, args []string) {
log.Println("Checking attestation")
result, err := sdk.Attestation()
if err != nil {
log.Println("Error retrieving attestation:", err)
return
}
if err = os.WriteFile(attestationFilePath, result, 0o644); err != nil {
log.Println("Error saving attestation result:", err)
return
}
log.Println("Attestation result retrieved and saved successfully!")
},
}
}
+4 -3
View File
@@ -1,3 +1,5 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package cli
import (
@@ -5,11 +7,10 @@ import (
"os"
"github.com/spf13/cobra"
agentsdk "github.com/ultravioletrs/agent/pkg/sdk"
"github.com/ultravioletrs/cocos-ai/pkg/sdk"
)
func NewDatasetsCmd(sdk agentsdk.SDK) *cobra.Command {
func NewDatasetsCmd(sdk sdk.SDK) *cobra.Command {
return &cobra.Command{
Use: "data",
Short: "Upload a dataset CSV file",
+13
View File
@@ -86,3 +86,16 @@ paths:
type: string
format: binary
description: The computation result file
/attestation:
get:
summary: Attestation endpoint
responses:
"200":
description: Attestation result file retrieved successfully
content:
application/octet-stream:
schema:
type: string
format: binary
description: The attestation result file
+5 -5
View File
@@ -1,3 +1,5 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package cli
import (
@@ -5,13 +7,12 @@ import (
"os"
"github.com/spf13/cobra"
agentsdk "github.com/ultravioletrs/agent/pkg/sdk"
"github.com/ultravioletrs/cocos-ai/pkg/sdk"
)
const resultFilePath = "result.bin"
func NewResultsCmd(sdk agentsdk.SDK) *cobra.Command {
func NewResultsCmd(sdk sdk.SDK) *cobra.Command {
return &cobra.Command{
Use: "result",
Short: "Retrieve computation result file",
@@ -24,8 +25,7 @@ func NewResultsCmd(sdk agentsdk.SDK) *cobra.Command {
return
}
err = os.WriteFile(resultFilePath, result, 0644)
if err != nil {
if err := os.WriteFile(resultFilePath, result, 0o644); err != nil {
log.Println("Error saving computation result:", err)
return
}
+3 -1
View File
@@ -1,3 +1,5 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package cli
import (
@@ -5,7 +7,7 @@ import (
"log"
"github.com/spf13/cobra"
agentsdk "github.com/ultravioletrs/agent/pkg/sdk"
agentsdk "github.com/ultravioletrs/cocos-ai/pkg/sdk"
)
func NewRunCmd(sdk agentsdk.SDK) *cobra.Command {
+3 -1
View File
@@ -1,7 +1,9 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package cli
import (
"github.com/ultravioletrs/agent/pkg/sdk"
"github.com/ultravioletrs/cocos-ai/pkg/sdk"
)
func SetSDK(s sdk.SDK) {
+12 -9
View File
@@ -1,3 +1,5 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package main
import (
@@ -8,11 +10,11 @@ import (
mflog "github.com/mainflux/mainflux/logger"
"github.com/mainflux/mainflux/pkg/uuid"
agent "github.com/ultravioletrs/agent/agent"
"github.com/ultravioletrs/agent/agent/api"
agentgrpc "github.com/ultravioletrs/agent/agent/api/grpc"
httpapi "github.com/ultravioletrs/agent/agent/api/http"
"github.com/ultravioletrs/agent/agent/tracing"
"github.com/ultravioletrs/cocos-ai/agent"
"github.com/ultravioletrs/cocos-ai/agent/api"
agentgrpc "github.com/ultravioletrs/cocos-ai/agent/api/grpc"
httpapi "github.com/ultravioletrs/cocos-ai/agent/api/http"
"github.com/ultravioletrs/cocos-ai/agent/tracing"
"github.com/ultravioletrs/cocos-ai/internal"
"github.com/ultravioletrs/cocos-ai/internal/env"
jaegerclient "github.com/ultravioletrs/cocos-ai/internal/jaeger"
@@ -35,7 +37,7 @@ const (
type config struct {
LogLevel string `env:"AGENT_LOG_LEVEL" envDefault:"info"`
JaegerURL string `env:"AGENT_JAEGER_URL" envDefault:"http://localhost:14268/api/traces"`
JaegerURL string `env:"AGENT_JAEGER_URL" envDefault:"http://localhost::4318/v1/traces"`
InstanceID string `env:"AGENT_INSTANCE_ID" envDefault:""`
}
@@ -73,15 +75,16 @@ func main() {
svc := newService(logger, tracer)
var httpServerConfig = server.Config{Port: defSvcHTTPPort}
httpServerConfig := server.Config{Port: defSvcHTTPPort}
if err := env.Parse(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
logger.Fatal(fmt.Sprintf("failed to load %s gRPC server configuration : %s", svcName, err))
}
hs := httpserver.New(ctx, cancel, svcName, httpServerConfig, httpapi.MakeHandler(svc, cfg.InstanceID), logger)
var grpcServerConfig = server.Config{Port: defSvcGRPCPort}
grpcServerConfig := server.Config{Port: defSvcGRPCPort}
if err := env.Parse(&grpcServerConfig, env.Options{Prefix: envPrefixGRPC}); err != nil {
log.Fatalf("failed to load %s gRPC server configuration : %s", svcName, err.Error())
log.Printf("failed to load %s gRPC server configuration : %s", svcName, err.Error())
return
}
registerAgentServiceServer := func(srv *grpc.Server) {
reflection.Register(srv)
+9 -5
View File
@@ -1,3 +1,5 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package main
import (
@@ -8,10 +10,11 @@ import (
"github.com/mainflux/mainflux/logger"
"github.com/spf13/cobra"
"github.com/spf13/pflag"
"github.com/ultravioletrs/agent/cli"
"github.com/ultravioletrs/agent/pkg/clients/grpc"
"github.com/ultravioletrs/agent/pkg/sdk"
"github.com/ultravioletrs/cocos-ai/cli"
"github.com/ultravioletrs/cocos-ai/internal/env"
"github.com/ultravioletrs/cocos-ai/pkg/clients/grpc"
"github.com/ultravioletrs/cocos-ai/pkg/clients/grpc/agent"
"github.com/ultravioletrs/cocos-ai/pkg/sdk"
)
const (
@@ -39,7 +42,7 @@ func main() {
logger.Fatal(fmt.Sprintf("failed to load %s gRPC client configuration : %s", svcName, err))
}
agentGRPCClient, agentClient, err := grpc.NewClient(agentGRPCConfig)
agentGRPCClient, agentClient, err := agent.NewAgentClient(agentGRPCConfig)
if err != nil {
logger.Fatal(err.Error())
}
@@ -82,9 +85,10 @@ func main() {
rootCmd.AddCommand(cli.NewDatasetsCmd(sdk))
rootCmd.AddCommand(cli.NewResultsCmd(sdk))
rootCmd.AddCommand(cli.NewRunCmd(sdk))
rootCmd.AddCommand(cli.NewAttestationCmd(sdk))
if err := rootCmd.Execute(); err != nil {
logger.Error(fmt.Sprintf("Command execution failed: %s", err))
os.Exit(1)
return
}
}
+17 -19
View File
@@ -1,9 +1,5 @@
//
// Copyright (c) 2019
// Mainflux
//
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
//
package main
@@ -16,20 +12,21 @@ import (
"github.com/mainflux/mainflux/logger"
"github.com/mainflux/mainflux/pkg/uuid"
"github.com/ultravioletrs/agent/agent"
agentgrpc "github.com/ultravioletrs/agent/pkg/clients/grpc"
"github.com/ultravioletrs/cocos-ai/agent"
"github.com/ultravioletrs/cocos-ai/internal"
"github.com/ultravioletrs/cocos-ai/internal/env"
jaegerclient "github.com/ultravioletrs/cocos-ai/internal/jaeger"
"github.com/ultravioletrs/cocos-ai/internal/server"
grpcserver "github.com/ultravioletrs/cocos-ai/internal/server/grpc"
httpserver "github.com/ultravioletrs/cocos-ai/internal/server/http"
"github.com/ultravioletrs/manager/manager"
"github.com/ultravioletrs/manager/manager/api"
managergrpc "github.com/ultravioletrs/manager/manager/api/grpc"
httpapi "github.com/ultravioletrs/manager/manager/api/http"
"github.com/ultravioletrs/manager/manager/qemu"
"github.com/ultravioletrs/manager/manager/tracing"
"github.com/ultravioletrs/cocos-ai/manager"
"github.com/ultravioletrs/cocos-ai/manager/api"
managergrpc "github.com/ultravioletrs/cocos-ai/manager/api/grpc"
httpapi "github.com/ultravioletrs/cocos-ai/manager/api/http"
"github.com/ultravioletrs/cocos-ai/manager/qemu"
"github.com/ultravioletrs/cocos-ai/manager/tracing"
pkggrpc "github.com/ultravioletrs/cocos-ai/pkg/clients/grpc"
agentgrpc "github.com/ultravioletrs/cocos-ai/pkg/clients/grpc/agent"
"go.opentelemetry.io/otel/trace"
"golang.org/x/sync/errgroup"
"google.golang.org/grpc"
@@ -48,7 +45,7 @@ const (
type config struct {
LogLevel string `env:"MANAGER_LOG_LEVEL" envDefault:"info"`
JaegerURL string `env:"MANAGER_JAEGER_URL" envDefault:"http://localhost:14268/api/traces"`
JaegerURL string `env:"MANAGER_JAEGER_URL" envDefault:"http://localhost:4318/v1/traces"`
InstanceID string `env:"MANAGER_INSTANCE_ID" envDefault:""`
}
@@ -84,11 +81,11 @@ func main() {
}()
tracer := tp.Tracer(svcName)
agentGRPCConfig := agentgrpc.Config{}
agentGRPCConfig := pkggrpc.Config{}
if err := env.Parse(&agentGRPCConfig, env.Options{Prefix: envPrefixAgentGRPC}); err != nil {
logger.Fatal(fmt.Sprintf("failed to load %s gRPC client configuration: %s", svcName, err))
}
agentGRPCClient, agentClient, err := agentgrpc.NewClient(agentGRPCConfig)
agentGRPCClient, agentClient, err := agentgrpc.NewAgentClient(agentGRPCConfig)
if err != nil {
logger.Fatal(err.Error())
}
@@ -108,15 +105,16 @@ func main() {
svc := newService(agentClient, logger, tracer, qemuCfg)
var httpServerConfig = server.Config{Port: defSvcHTTPPort}
httpServerConfig := server.Config{Port: defSvcHTTPPort}
if err := env.Parse(&httpServerConfig, env.Options{Prefix: envPrefixHTTP}); err != nil {
logger.Fatal(fmt.Sprintf("failed to load %s gRPC server configuration: %s", svcName, err))
}
hs := httpserver.New(ctx, cancel, svcName, httpServerConfig, httpapi.MakeHandler(svc, cfg.InstanceID), logger)
var grpcServerConfig = server.Config{Port: defSvcGRPCPort}
grpcServerConfig := server.Config{Port: defSvcGRPCPort}
if err := env.Parse(&grpcServerConfig, env.Options{Prefix: envPrefixGRPC}); err != nil {
log.Fatalf("failed to load %s gRPC server configuration: %s", svcName, err.Error())
log.Printf("failed to load %s gRPC server configuration: %s", svcName, err.Error())
return
}
registerManagerServiceServer := func(srv *grpc.Server) {
reflection.Register(srv)
+9 -8
View File
@@ -9,17 +9,15 @@ require (
github.com/go-kit/kit v0.13.0
github.com/go-zoo/bone v1.3.0
github.com/gofrs/uuid v4.4.0+incompatible
github.com/golang/protobuf v1.5.3
github.com/mainflux/mainflux v0.0.0-20231024165949-8b185d205b6c
github.com/prometheus/client_golang v1.17.0
github.com/spf13/cobra v1.7.0
github.com/spf13/pflag v1.0.5
github.com/ultravioletrs/agent v0.0.0-20231019134633-4bf80d3df37f
github.com/ultravioletrs/manager v0.0.0-20231009152116-740a63128799
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.45.0
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.45.0
go.opentelemetry.io/contrib/propagators/jaeger v1.20.0
go.opentelemetry.io/otel v1.19.0
go.opentelemetry.io/otel/exporters/jaeger v1.17.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0
go.opentelemetry.io/otel/sdk v1.19.0
go.opentelemetry.io/otel/trace v1.19.0
golang.org/x/sync v0.4.0
@@ -35,16 +33,19 @@ require (
github.com/go-logfmt/logfmt v0.6.0 // indirect
github.com/go-logr/logr v1.2.4 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/golang/protobuf v1.5.3 // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/mainflux/mainflux v0.0.0-20230726142711-2b78902e0170 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16 // indirect
github.com/prometheus/client_model v0.5.0 // indirect
github.com/prometheus/common v0.44.0 // indirect
github.com/prometheus/procfs v0.11.1 // indirect
github.com/subosito/gotenv v1.6.0 // indirect
github.com/prometheus/procfs v0.12.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 // indirect
go.opentelemetry.io/otel/metric v1.19.0 // indirect
go.opentelemetry.io/proto/otlp v1.0.0 // indirect
golang.org/x/net v0.17.0 // indirect
golang.org/x/sys v0.13.0 // indirect
golang.org/x/text v0.13.0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20231012201019-e917dd12ba7a // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b // indirect
)
+41 -940
View File
File diff suppressed because it is too large Load Diff
+2
View File
@@ -1,3 +1,5 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package internal
import (
+3
View File
@@ -1,3 +1,6 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
// Package env contains utility tools for handling
// environment-based service configuration.
package env
+2
View File
@@ -1,3 +1,5 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package env
import "github.com/caarlos0/env/v7"
+2
View File
@@ -1,3 +1,5 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package internal
import (
+3
View File
@@ -1,3 +1,6 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
// Package jaeger contains the domain concept definitions needed to support
// Mainflux Jaeger functionality.
package jaeger
+26 -8
View File
@@ -1,29 +1,31 @@
// Copyright (c) Mainflux
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package jaeger
import (
"context"
"errors"
"net/url"
jaegerp "go.opentelemetry.io/contrib/propagators/jaeger"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/exporters/jaeger"
"go.opentelemetry.io/otel/exporters/otlp/otlptrace"
"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp"
"go.opentelemetry.io/otel/sdk/resource"
tracesdk "go.opentelemetry.io/otel/sdk/trace"
semconv "go.opentelemetry.io/otel/semconv/v1.12.0"
)
var (
errNoURL = errors.New("URL is empty")
errNoSvcName = errors.New("Service Name is empty")
errNoURL = errors.New("URL is empty")
errNoSvcName = errors.New("Service Name is empty")
errUnsupportedTraceURLScheme = errors.New("unsupported tracing url scheme")
)
// NewProvider initializes Jaeger TraceProvider.
func NewProvider(ctx context.Context, svcName, url, instanceID string) (*tracesdk.TracerProvider, error) {
if url == "" {
func NewProvider(ctx context.Context, svcName, jaegerurl, instanceID string) (*tracesdk.TracerProvider, error) {
if jaegerurl == "" {
return nil, errNoURL
}
@@ -31,11 +33,27 @@ func NewProvider(ctx context.Context, svcName, url, instanceID string) (*tracesd
return nil, errNoSvcName
}
exporter, err := jaeger.New(jaeger.WithCollectorEndpoint(jaeger.WithEndpoint(url)))
url, err := url.Parse(jaegerurl)
if err != nil {
return nil, err
}
var exporter *otlptrace.Exporter
switch url.Scheme {
case "http":
exporter, err = otlptracehttp.New(ctx, otlptracehttp.WithEndpoint(url.Host), otlptracehttp.WithURLPath(url.Path), otlptracehttp.WithInsecure())
if err != nil {
return nil, err
}
case "https":
exporter, err = otlptracehttp.New(ctx, otlptracehttp.WithEndpoint(url.Host), otlptracehttp.WithURLPath(url.Path))
if err != nil {
return nil, err
}
default:
return nil, errUnsupportedTraceURLScheme
}
attributes := []attribute.KeyValue{
semconv.ServiceNameKey.String(svcName),
attribute.String("InstanceID", instanceID),
+3 -1
View File
@@ -1,3 +1,5 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package libvirt
import (
@@ -6,7 +8,7 @@ import (
"net"
"time"
libvirt "github.com/digitalocean/go-libvirt"
"github.com/digitalocean/go-libvirt"
"github.com/mainflux/mainflux/logger"
)
+3 -3
View File
@@ -1,3 +1,5 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package libvirt
import (
@@ -8,7 +10,7 @@ import (
"regexp"
"strings"
libvirt "github.com/digitalocean/go-libvirt"
"github.com/digitalocean/go-libvirt"
)
var re = regexp.MustCompile(`'([^']*)'`)
@@ -97,7 +99,6 @@ vol_exists:
if err != nil {
lvErr := err.(libvirt.Error)
if lvErr.Code == 55 {
return dom, nil
}
@@ -109,7 +110,6 @@ vol_exists:
if err != nil {
lvErr := err.(libvirt.Error)
if lvErr.Code == 72 {
return dom, nil
}
+1 -2
View File
@@ -1,6 +1,5 @@
// Copyright (c) Mainflux
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package internal
import (
+3
View File
@@ -1,2 +1,5 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
// Package server contains the HTTP, gRPC and CoAP server implementation.
package server
+3
View File
@@ -1,2 +1,5 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
// Package grpc contains the gRPC server implementation.
package grpc
+5 -3
View File
@@ -1,3 +1,5 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package grpc
import (
@@ -28,7 +30,7 @@ type serviceRegister func(srv *grpc.Server)
var _ server.Server = (*Server)(nil)
func New(ctx context.Context, cancel context.CancelFunc, name string, config server.Config, registerService serviceRegister, logger logger.Logger) server.Server {
var listenFullAddress = fmt.Sprintf("%s:%s", config.Host, config.Port)
listenFullAddress := fmt.Sprintf("%s:%s", config.Host, config.Port)
return &Server{
BaseServer: server.BaseServer{
@@ -44,7 +46,7 @@ func New(ctx context.Context, cancel context.CancelFunc, name string, config ser
}
func (s *Server) Start() error {
var errCh = make(chan error)
errCh := make(chan error)
listener, err := net.Listen("tcp", s.Address)
if err != nil {
@@ -87,7 +89,7 @@ func (s *Server) Start() error {
func (s *Server) Stop() error {
defer s.Cancel()
var c = make(chan bool)
c := make(chan bool)
go func() {
defer close(c)
s.server.GracefulStop()
+3
View File
@@ -1,2 +1,5 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
// Package http contains the HTTP server implementation.
package http
+5 -3
View File
@@ -1,3 +1,5 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package http
import (
@@ -24,8 +26,8 @@ type Server struct {
var _ server.Server = (*Server)(nil)
func New(ctx context.Context, cancel context.CancelFunc, name string, config server.Config, handler http.Handler, logger logger.Logger) server.Server {
var listenFullAddress = fmt.Sprintf("%s:%s", config.Host, config.Port)
var httpServer = &http.Server{Addr: listenFullAddress, Handler: handler}
listenFullAddress := fmt.Sprintf("%s:%s", config.Host, config.Port)
httpServer := &http.Server{Addr: listenFullAddress, Handler: handler}
return &Server{
BaseServer: server.BaseServer{
Ctx: ctx,
@@ -40,7 +42,7 @@ func New(ctx context.Context, cancel context.CancelFunc, name string, config ser
}
func (s *Server) Start() error {
var errCh = make(chan error)
errCh := make(chan error)
s.Protocol = httpProtocol
switch {
case s.Config.CertFile != "" || s.Config.KeyFile != "":
+3 -1
View File
@@ -1,3 +1,5 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package server
import (
@@ -49,7 +51,7 @@ func stopAllServer(servers ...Server) error {
func StopHandler(ctx context.Context, cancel context.CancelFunc, logger logger.Logger, svcName string, servers ...Server) error {
var err error
var c = make(chan os.Signal, 1)
c := make(chan os.Signal, 1)
signal.Notify(c, syscall.SIGINT, syscall.SIGABRT)
select {
case sig := <-c:
+2 -2
View File
@@ -30,9 +30,9 @@ To start the service outside of the container, execute the following shell scrip
```bash
# download the latest version of the service
go get github.com/ultravioletrs/manager
go get github.com/ultravioletrs/cocos-ai
cd $GOPATH/src/github.com/ultravioletrs/manager
cd $GOPATH/src/github.com/ultravioletrs/cocos-ai
# compile the manager
make manager
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
// Package api contains API-related concerns: endpoint definitions, middlewares
+3 -1
View File
@@ -1,3 +1,5 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package grpc
import (
@@ -7,7 +9,7 @@ import (
"github.com/go-kit/kit/endpoint"
kitgrpc "github.com/go-kit/kit/transport/grpc"
"github.com/ultravioletrs/manager/manager"
"github.com/ultravioletrs/cocos-ai/manager"
"google.golang.org/grpc"
)
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
// Package grpc contains implementation of kit service gRPC API.
+3 -1
View File
@@ -1,10 +1,12 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package grpc
import (
"context"
"github.com/go-kit/kit/endpoint"
"github.com/ultravioletrs/manager/manager"
"github.com/ultravioletrs/cocos-ai/manager"
)
func runEndpoint(svc manager.Service) endpoint.Endpoint {
+3 -1
View File
@@ -1,6 +1,8 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package grpc
import "github.com/ultravioletrs/manager/manager"
import "github.com/ultravioletrs/cocos-ai/manager"
type runReq struct {
Computation []byte `json:"computation,omitempty"`
+2
View File
@@ -1,3 +1,5 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package grpc
type runRes struct {
+6 -4
View File
@@ -1,21 +1,23 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package grpc
import (
"context"
kitgrpc "github.com/go-kit/kit/transport/grpc"
"github.com/ultravioletrs/manager/manager"
"github.com/go-kit/kit/transport/grpc"
"github.com/ultravioletrs/cocos-ai/manager"
)
type grpcServer struct {
run kitgrpc.Handler
run grpc.Handler
manager.UnimplementedManagerServiceServer
}
// NewServer returns new AuthServiceServer instance.
func NewServer(svc manager.Service) manager.ManagerServiceServer {
return &grpcServer{
run: kitgrpc.NewServer(
run: grpc.NewServer(
runEndpoint(svc),
decodeRunRequest,
encodeRunResponse,
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
// Package http contains implementation of kit service HTTP API.
+2 -3
View File
@@ -1,13 +1,12 @@
// Copyright (c) Mainflux
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package http
import (
"context"
"github.com/go-kit/kit/endpoint"
"github.com/ultravioletrs/manager/manager"
"github.com/ultravioletrs/cocos-ai/manager"
)
func runEndpoint(svc manager.Service) endpoint.Endpoint {
+2 -3
View File
@@ -1,9 +1,8 @@
// Copyright (c) Mainflux
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package http
import "github.com/ultravioletrs/manager/manager"
import "github.com/ultravioletrs/cocos-ai/manager"
var _ apiReq = (*runReq)(nil)
+1 -2
View File
@@ -1,6 +1,5 @@
// Copyright (c) Mainflux
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package http
import (
+2 -3
View File
@@ -1,6 +1,5 @@
// Copyright (c) Mainflux
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package http
import (
@@ -15,7 +14,7 @@ import (
"github.com/go-zoo/bone"
"github.com/mainflux/mainflux"
"github.com/prometheus/client_golang/prometheus/promhttp"
"github.com/ultravioletrs/manager/manager"
"github.com/ultravioletrs/cocos-ai/manager"
"go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
)
+2 -2
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
//go:build !test
@@ -12,7 +12,7 @@ import (
"time"
log "github.com/mainflux/mainflux/logger"
"github.com/ultravioletrs/manager/manager"
"github.com/ultravioletrs/cocos-ai/manager"
)
var _ manager.Service = (*loggingMiddleware)(nil)
+2 -2
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
//go:build !test
@@ -11,7 +11,7 @@ import (
"time"
"github.com/go-kit/kit/metrics"
"github.com/ultravioletrs/manager/manager"
"github.com/ultravioletrs/cocos-ai/manager"
)
var _ manager.Service = (*metricsMiddleware)(nil)
+1 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) Mainflux
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
// Package things contains the domain concept definitions needed to support
+3
View File
@@ -1,3 +1,6 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.31.0
+3
View File
@@ -1,3 +1,6 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
syntax = "proto3";
package manager;
+3
View File
@@ -1,3 +1,6 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
+2 -1
View File
@@ -1,3 +1,5 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package qemu
import "fmt"
@@ -184,5 +186,4 @@ func constructQemuArgs(config Config) []string {
args = append(args, "-monitor", config.Monitor)
return args
}
+7 -3
View File
@@ -1,3 +1,5 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package qemu
import (
@@ -9,9 +11,11 @@ import (
"github.com/ultravioletrs/cocos-ai/internal"
)
const qemuRelPath = "qemu-system-x86_64"
const firmwareVars = "OVMF_VARS"
const qcow2Img = "focal-server-cloudimg-amd64"
const (
qemuRelPath = "qemu-system-x86_64"
firmwareVars = "OVMF_VARS"
qcow2Img = "focal-server-cloudimg-amd64"
)
func CreateVM(ctx context.Context, cfg Config) (*exec.Cmd, error) {
// create unique emu device identifiers
+4 -5
View File
@@ -1,15 +1,14 @@
// Copyright (c) Mainflux
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package manager
import (
"context"
"errors"
backoff "github.com/cenkalti/backoff/v4"
"github.com/ultravioletrs/agent/agent"
"github.com/ultravioletrs/manager/manager/qemu"
"github.com/cenkalti/backoff/v4"
"github.com/ultravioletrs/cocos-ai/agent"
"github.com/ultravioletrs/cocos-ai/manager/qemu"
)
var (
+3
View File
@@ -1,3 +1,6 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
// Package tracing provides tracing instrumentation for cocos auth service.
//
// This package provides tracing middleware for cocos auth service.
+3 -1
View File
@@ -1,9 +1,11 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package tracing
import (
"context"
"github.com/ultravioletrs/manager/manager"
"github.com/ultravioletrs/cocos-ai/manager"
"go.opentelemetry.io/otel/trace"
)
+3
View File
@@ -1,3 +1,6 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
// Package clients contains the domain concept definitions needed to support
// Agent Client functionality.
package clients
+4 -2
View File
@@ -1,8 +1,10 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package agent
import (
"github.com/ultravioletrs/agent/agent"
agentapi "github.com/ultravioletrs/agent/agent/api/grpc"
"github.com/ultravioletrs/cocos-ai/agent"
agentapi "github.com/ultravioletrs/cocos-ai/agent/api/grpc"
"github.com/ultravioletrs/cocos-ai/pkg/clients/grpc"
)
+2
View File
@@ -1,3 +1,5 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package grpc
import (
+3
View File
@@ -1,3 +1,6 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
// Package grpc contains the domain concept definitions needed to support
// Agent Client grpc functionality.
package grpc
+4 -2
View File
@@ -1,9 +1,11 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package manager
import (
"github.com/ultravioletrs/cocos-ai/manager"
managerapi "github.com/ultravioletrs/cocos-ai/manager/api/grpc"
"github.com/ultravioletrs/cocos-ai/pkg/clients/grpc"
"github.com/ultravioletrs/manager/manager"
managerapi "github.com/ultravioletrs/manager/manager/api/grpc"
)
// NewManagerClient creates new manager gRPC client instance.
+16 -1
View File
@@ -1,3 +1,5 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package sdk
import (
@@ -6,7 +8,7 @@ import (
"time"
"github.com/mainflux/mainflux/logger"
"github.com/ultravioletrs/agent/agent"
"github.com/ultravioletrs/cocos-ai/agent"
)
type SDK interface {
@@ -14,6 +16,7 @@ type SDK interface {
UploadAlgorithm(algorithm []byte) (string, error)
UploadDataset(dataset []byte) (string, error)
Result() ([]byte, error)
Attestation() ([]byte, error)
}
type agentSDK struct {
@@ -105,3 +108,15 @@ func (sdk *agentSDK) Result() ([]byte, error) {
return response.File, nil
}
func (sdk *agentSDK) Attestation() ([]byte, error) {
request := &agent.AttestationRequest{}
response, err := sdk.client.Attestation(context.Background(), request)
if err != nil {
sdk.logger.Error("Failed to call Attestation RPC")
return nil, err
}
return response.File, nil
}
+2
View File
@@ -1,3 +1,5 @@
// Copyright (c) Ultraviolet
// SPDX-License-Identifier: Apache-2.0
package socket
import (