Repository navigation
Expand file tree
/
Copy pathreport_resource.go
More file actions
82 lines (71 loc) · 2.3 KB
/
Copy pathreport_resource.go
File metadata and controls
82 lines (71 loc) · 2.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package main
import (
"context"
"fmt"
"log"
"os"
"google.golang.org/protobuf/types/known/structpb"
_ "github.com/joho/godotenv/autoload"
"github.com/project-kessel/kessel-sdk-go/kessel/inventory/v1beta2"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
func reportResource() {
ctx := context.Background()
inventoryClient, conn, err := v1beta2.NewClientBuilder(os.Getenv("KESSEL_ENDPOINT")).
Insecure().
Build()
if err != nil {
log.Fatal("Failed to create gRPC client:", err)
}
defer func() {
if closeErr := conn.Close(); closeErr != nil {
log.Printf("Failed to close gRPC client: %v", closeErr)
}
}()
reportResourceRequest := &v1beta2.ReportResourceRequest{
Type: "host",
ReporterType: "hbi",
ReporterInstanceId: "0a2a430e-1ad9-4304-8e75-cc6fd3b5441a",
Representations: &v1beta2.ResourceRepresentations{
Metadata: &v1beta2.RepresentationMetadata{
LocalResourceId: "854589f0-3be7-4cad-8bcd-45e18f33cb81",
ApiHref: "https://apiHref.com/",
ConsoleHref: addr("https://www.consoleHref.com/"),
ReporterVersion: addr("0.2.11"),
},
Common: &structpb.Struct{
Fields: map[string]*structpb.Value{
"workspace_id": structpb.NewStringValue("6eb10953-4ec9-4feb-838f-ba43a60880bf"),
},
},
Reporter: &structpb.Struct{
Fields: map[string]*structpb.Value{
"satellite_id": structpb.NewStringValue("ca234d8f-9861-4659-a033-e80460b2801c"),
"sub_manager_id": structpb.NewStringValue("e9b7d65f-3f81-4c26-b86c-2db663376eed"),
"insights_inventory_id": structpb.NewStringValue("c4b9b5e7-a82a-467a-b382-024a2f18c129"),
"ansible_host": structpb.NewStringValue("host-1"),
},
},
},
}
fmt.Println("Making report resource request:")
response, err := inventoryClient.ReportResource(ctx, reportResourceRequest)
if err != nil {
if st, ok := status.FromError(err); ok {
switch st.Code() {
case codes.Unavailable:
log.Fatal("Service unavailable: ", err)
case codes.PermissionDenied:
log.Fatal("Permission denied: ", err)
default:
log.Fatal("gRPC connection error: ", err)
}
} else {
log.Fatal("Unknown error: ", err)
}
}
fmt.Printf("Report resource response: %+v\n", response)
}
func addr[T any](t T) *T { return &t }
func main() { reportResource() }