Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ dev: postgres root
proto-gen:
./scripts/proto-gen.sh "api-specs/v1/proto/agents"
./scripts/proto-gen.sh "api-specs/v1/proto/admin"
./scripts/proto-gen.sh "api-specs/v1/proto/keys"
./scripts/proto-gen.sh "api-specs/v1/proto"
$(MAKE) go-format

Expand Down
46 changes: 46 additions & 0 deletions api-specs/v1/proto/keys/keys.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
syntax = "proto3";


package krypton.v1.keys;

option go_package = "github.com/openkcm/krypton/pkg/api/v1/proto/keys";

service Service {
rpc AnnounceKey(AnnounceKeyRequest) returns (AnnounceKeyResponse);
rpc GetKey(GetKeyRequest) returns (GetKeyResponse);
}

message Key {
string id = 1;
string name = 2;
string tenant_id = 3;
string kind = 4;
string parent_id = 5;
string managed_by = 6;
map<string, string> labels = 7;
string state = 8;
int64 created_at = 9;
int64 updated_at = 10;
}

message AnnounceKeyRequest {
string tenant_id = 1;
string kind = 2;
string name = 3;
string parent_id = 4;
string target_name = 5;
map<string, string> labels = 6;
}

message AnnounceKeyResponse {
Key key = 1;
}

message GetKeyRequest {
string id = 1;
string tenant_id = 2;
}

message GetKeyResponse {
Key key = 1;
}
19 changes: 12 additions & 7 deletions cmd/root/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import (
"github.com/openkcm/krypton/internal/worker"
"github.com/openkcm/krypton/pkg/api/v1/proto/admin"
"github.com/openkcm/krypton/pkg/api/v1/proto/agents"
"github.com/openkcm/krypton/pkg/api/v1/proto/keys"
"github.com/openkcm/krypton/pkg/store"
storesql "github.com/openkcm/krypton/pkg/store/sql"
)
Expand All @@ -45,16 +46,17 @@ func main() {
handleErr(err, "failed to connect to database")
defer db.Close()

// run migrations
err = storesql.Migrate(context.Background(), db)
handleErr(err, "failed to run migrations")

// load root configuration
cfg := loadConfig()

// tenant store initialization
tenantStore, err := storesql.NewTenantStore(context.Background(), db)
handleErr(err, "failed to initialize store")

// agent store initialization
agentStore, err := storesql.NewAgentStore(context.Background(), db)
handleErr(err, "failed to initialize store")
// store initialization
tenantStore := storesql.NewTenantStore(db)
agentStore := storesql.NewAgentStore(db)
keyStore := storesql.NewKeyStore(db)

// gRPC server setup for admin API
grpcServer := grpc.NewServer()
Expand All @@ -63,6 +65,9 @@ func main() {
// gRPC server setup for agent API
agents.RegisterServiceServer(grpcServer, agents.NewAgentService(agentStore, *cfg))

// gRPC server setup for keys API
keys.RegisterServiceServer(grpcServer, keys.NewService(keyStore))

lis, err := (&net.ListenConfig{}).Listen(context.Background(), "tcp", ":"+srvPort)
handleErr(err, "failed to listen on gRPC port")

Expand Down
6 changes: 3 additions & 3 deletions integration/registration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ func TestRegistration(t *testing.T) {
db, dbConnStr := createDatabase(t)

// Create agent store
agentStore, err := sql.NewAgentStore(ctx, db)
require.NoError(t, err, "failed to create agent store")
require.NoError(t, sql.Migrate(ctx, db))
agentStore := sql.NewAgentStore(db)

// Build binaries for root server and agent
rootBinary := buildBinary(t, "root", "../cmd/root")
Expand All @@ -45,7 +45,7 @@ func TestRegistration(t *testing.T) {
"DATABASE_URL=" + dbConnStr,
"SERVER_PORT=" + rootPort,
})
err = rootCmd.Start()
err := rootCmd.Start()
require.NoError(t, err, "failed to start root server process")

// Wait for root server to accept connections
Expand Down
10 changes: 3 additions & 7 deletions integration/setup_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (

"github.com/google/uuid"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/testcontainers/testcontainers-go/modules/postgres"
"google.golang.org/grpc"

Expand Down Expand Up @@ -126,13 +127,8 @@ func newTestStore(t *testing.T) store.Tenant {
ctx := t.Context()

testDB, _ := createDatabase(t)
s, err := storesql.NewTenantStore(ctx, testDB)
if err != nil {
testDB.Close()
assert.FailNowf(t, "failed to create test store", "error: %v", err)
}

return s
require.NoError(t, storesql.Migrate(ctx, testDB))
return storesql.NewTenantStore(testDB)
}

// createDatabase creates a new PostgreSQL database for testing and returns a connection to it.
Expand Down
43 changes: 43 additions & 0 deletions internal/reconciler/export_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package reconciler

import (
"context"

"github.com/openkcm/orbital"

"github.com/openkcm/krypton/internal/config"
)

const DefaultMaxPendingReconciles = defaultMaxPendingReconciles
const NoJobHandlerRegisteredMessage = noJobHandlerRegisteredMessage

var BuildTargets = buildTargets
var JobHandlerNotFoundError = jobHandlerNotFoundError

func (m *Manager) OrbitalManager() *orbital.Manager {
return m.orbitalManager
}

func (m *Manager) ConfirmJob(ctx context.Context, job orbital.Job) (orbital.JobConfirmerResult, error) {
return m.confirmJob(ctx, job)
}

func (m *Manager) ResolveTasks(ctx context.Context, job orbital.Job, cursor orbital.TaskResolverCursor) (orbital.TaskResolverResult, error) {
return m.resolveTasks(ctx, job, cursor)
}

func (m *Manager) JobDone(ctx context.Context, job orbital.Job) error {
return m.jobDone(ctx, job)
}

func (m *Manager) JobFailed(ctx context.Context, job orbital.Job) error {
return m.jobFailed(ctx, job)
}

func (m *Manager) JobCanceled(ctx context.Context, job orbital.Job) error {
return m.jobCanceled(ctx, job)
}

var NewTargetProvider = func(fn func(context.Context, config.ReconcilerTarget) (orbital.Initiator, error)) TargetProvider {
return TargetProvider(fn)
}
Loading
Loading