Skip to content

Commit 4d4d987

Browse files
authored
feat: Improve gRPC status codes and remove .cq file suffix (#30)
1 parent 77238a9 commit 4d4d987

File tree

10 files changed

+43
-61
lines changed

10 files changed

+43
-61
lines changed

internal/pb/base.pb.go

Lines changed: 2 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/pb/destination.pb.go

Lines changed: 23 additions & 36 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/pb/destination.proto

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,5 @@ message Write {
3131
bytes resource = 1;
3232
}
3333
message Response {
34-
// error
35-
string error = 1;
3634
}
3735
}

internal/pb/destination_grpc.pb.go

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/pb/source.pb.go

Lines changed: 2 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/pb/source_grpc.pb.go

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/servers/source.go

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ import (
1010
"github.com/cloudquery/plugin-sdk/plugins"
1111
"github.com/cloudquery/plugin-sdk/schema"
1212
"github.com/cloudquery/plugin-sdk/specs"
13-
"github.com/pkg/errors"
13+
"google.golang.org/grpc/codes"
14+
"google.golang.org/grpc/status"
1415
)
1516

1617
type SourceServer struct {
@@ -21,7 +22,7 @@ type SourceServer struct {
2122
func (s *SourceServer) GetTables(context.Context, *pb.GetTables_Request) (*pb.GetTables_Response, error) {
2223
b, err := json.Marshal(s.Plugin.Tables())
2324
if err != nil {
24-
return nil, errors.Wrap(err, "failed to marshal tables")
25+
return nil, fmt.Errorf("failed to marshal tables: %w", err)
2526
}
2627
return &pb.GetTables_Response{
2728
Tables: b,
@@ -41,36 +42,36 @@ func (s *SourceServer) GetExampleConfig(context.Context, *pb.GetExampleConfig_Re
4142

4243
func (s *SourceServer) Sync(req *pb.Sync_Request, stream pb.Source_SyncServer) error {
4344
resources := make(chan *schema.Resource)
44-
var fetchErr error
45+
var syncErr error
4546

4647
var spec specs.Source
4748
dec := json.NewDecoder(bytes.NewReader(req.Spec))
4849
dec.UseNumber()
4950
dec.DisallowUnknownFields()
5051
if err := dec.Decode(&spec); err != nil {
51-
return fmt.Errorf("failed to decode source spec: %w", err)
52+
return status.Errorf(codes.InvalidArgument, "failed to decode spec: %v", err)
5253
}
5354

5455
go func() {
5556
defer close(resources)
5657
if err := s.Plugin.Sync(stream.Context(), spec, resources); err != nil {
57-
fetchErr = errors.Wrap(err, "failed to fetch resources")
58+
syncErr = fmt.Errorf("failed to sync resources: %w", err)
5859
}
5960
}()
6061

6162
for resource := range resources {
6263
b, err := json.Marshal(resource)
6364
if err != nil {
64-
return errors.Wrap(err, "failed to marshal resource")
65+
return status.Errorf(codes.Internal, "failed to marshal resource: %v", err)
6566
}
6667
if err := stream.Send(&pb.Sync_Response{
6768
Resource: b,
6869
}); err != nil {
69-
return errors.Wrap(err, "failed to send resource")
70+
return status.Errorf(codes.Internal, "failed to send resource: %v", err)
7071
}
7172
}
72-
if fetchErr != nil {
73-
return fetchErr
73+
if syncErr != nil {
74+
return syncErr
7475
}
7576

7677
return nil

schema/table.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import (
1212
"github.com/thoas/go-funk"
1313
)
1414

15-
// TableResolver is the main entry point when a table fetch is called.
15+
// TableResolver is the main entry point when a table is sync is called.
1616
//
1717
// Table resolver has 3 main arguments:
1818
// - meta(ClientMeta): is the client returned by the plugin.Provider Configure call
@@ -163,7 +163,7 @@ func (t Table) TableNames() []string {
163163
}
164164

165165
// Call the table resolver with with all of it's relation for every reolved resource
166-
func (t Table) Resolve(ctx context.Context, meta ClientMeta, fetchTime time.Time, parent *Resource, resolvedResources chan<- *Resource) int {
166+
func (t Table) Resolve(ctx context.Context, meta ClientMeta, syncTime time.Time, parent *Resource, resolvedResources chan<- *Resource) int {
167167
res := make(chan interface{})
168168
startTime := time.Now()
169169
go func() {
@@ -199,7 +199,7 @@ func (t Table) Resolve(ctx context.Context, meta ClientMeta, fetchTime time.Time
199199
}
200200
totalResources += len(objects)
201201
for i := range objects {
202-
resource := NewResourceData(&t, parent, fetchTime, objects[i])
202+
resource := NewResourceData(&t, parent, syncTime, objects[i])
203203
t.resolveColumns(ctx, meta, resource)
204204
if t.PostResourceResolver != nil {
205205
meta.Logger().Trace().Str("table_name", t.Name).Msg("post resource resolver started")
@@ -216,7 +216,7 @@ func (t Table) Resolve(ctx context.Context, meta ClientMeta, fetchTime time.Time
216216
}
217217
resolvedResources <- resource
218218
for _, rel := range t.Relations {
219-
totalResources += rel.Resolve(ctx, meta, fetchTime, resource, resolvedResources)
219+
totalResources += rel.Resolve(ctx, meta, syncTime, resource, resolvedResources)
220220
}
221221
}
222222
}

serve/serve_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ spec:
155155
}
156156
}
157157
if err := wg.Wait(); err != nil {
158-
t.Fatalf("Failed to fetch resources: %v", err)
158+
t.Fatalf("Failed to sync resources: %v", err)
159159
}
160160

161161
exampleConfig, err := c.ExampleConfig(ctx)

specs/spec_reader.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ func NewSpecReader(directory string) (*SpecReader, error) {
2424
}
2525

2626
for _, file := range files {
27-
if !file.IsDir() && strings.HasSuffix(file.Name(), ".cq.yml") {
27+
if !file.IsDir() && strings.HasSuffix(file.Name(), ".yml") {
2828
data, err := os.ReadFile(filepath.Join(directory, file.Name()))
2929
if err != nil {
3030
return nil, fmt.Errorf("failed to read file %s: %w", file.Name(), err)

0 commit comments

Comments
 (0)