mirror of
https://github.com/ultravioletrs/cocos.git
synced 2026-06-22 20:00:18 +00:00
d5badba547
CI / lint (push) Has been cancelled
CI / test (agent) (push) Has been cancelled
CI / test (cli) (push) Has been cancelled
CI / test (cmd) (push) Has been cancelled
CI / test (internal) (push) Has been cancelled
CI / test (manager, true) (push) Has been cancelled
CI / test (pkg) (push) Has been cancelled
CI / upload-coverage (push) Has been cancelled
* feat: Implement per-resource KBS configuration, allowing algorithms and datasets to specify individual KBS URLs. Signed-off-by: Sammy Oina <sammyoina@gmail.com> * refactor: Encapsulate CLI error handling and CVM certificate paths within the CLI struct, and add algorithm type to agent's algorithm structure. Signed-off-by: Sammy Oina <sammyoina@gmail.com> * style: Remove blank lines and fix indentation in CLI commands. Signed-off-by: Sammy Oina <sammyoina@gmail.com> * refactor: Update downloadAndDecryptGenericResource to accept KBS URL as a parameter and adjust related tests Signed-off-by: Sammy Oina <sammyoina@gmail.com> * refactor: group CLI configuration into structured types and simplify skopeo decryption key handling Signed-off-by: Sammy Oina <sammyoina@gmail.com> --------- Signed-off-by: Sammy Oina <sammyoina@gmail.com>
97 lines
2.3 KiB
Go
97 lines
2.3 KiB
Go
// Copyright (c) Ultraviolet
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
package cli
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"github.com/spf13/cobra"
|
|
"github.com/ultravioletrs/cocos/manager"
|
|
"github.com/ultravioletrs/cocos/pkg/attestation/cmdconfig"
|
|
"github.com/ultravioletrs/cocos/pkg/clients"
|
|
"github.com/ultravioletrs/cocos/pkg/clients/grpc"
|
|
"github.com/ultravioletrs/cocos/pkg/clients/grpc/agent"
|
|
managergrpc "github.com/ultravioletrs/cocos/pkg/clients/grpc/manager"
|
|
"github.com/ultravioletrs/cocos/pkg/sdk"
|
|
)
|
|
|
|
type AgentVMConfig struct {
|
|
CVMServerURL string
|
|
CVMServerCA string
|
|
CVMClientKey string
|
|
CVMClientCrt string
|
|
CVMCaURL string
|
|
LogLevel string
|
|
Ttl time.Duration
|
|
}
|
|
|
|
type AWSConfig struct {
|
|
AccessKeyID string
|
|
SecretAccessKey string
|
|
EndpointURL string
|
|
Region string
|
|
}
|
|
|
|
type AttestationConfig struct {
|
|
KbsParams string
|
|
}
|
|
|
|
type CLI struct {
|
|
agentSDK sdk.SDK
|
|
agentConfig clients.AttestedClientConfig
|
|
managerConfig clients.StandardClientConfig
|
|
client grpc.Client
|
|
managerClient manager.ManagerServiceClient
|
|
connectErr error
|
|
measurement cmdconfig.MeasurementProvider
|
|
Verbose bool
|
|
IsManifest bool
|
|
ToBase64 bool
|
|
KeyType string
|
|
AgentVM AgentVMConfig
|
|
AWS AWSConfig
|
|
Attestation AttestationConfig
|
|
}
|
|
|
|
func New(agentConfig clients.AttestedClientConfig, managerConfig clients.StandardClientConfig, measurement cmdconfig.MeasurementProvider) *CLI {
|
|
return &CLI{
|
|
agentConfig: agentConfig,
|
|
managerConfig: managerConfig,
|
|
measurement: measurement,
|
|
}
|
|
}
|
|
|
|
func (c *CLI) InitializeAgentSDK(cmd *cobra.Command) error {
|
|
agentGRPCClient, agentClient, err := agent.NewAgentClient(context.Background(), c.agentConfig)
|
|
if err != nil {
|
|
c.connectErr = err
|
|
return err
|
|
}
|
|
cmd.Println("🔗 Connected to agent ", agentGRPCClient.Secure())
|
|
c.client = agentGRPCClient
|
|
|
|
c.agentSDK = sdk.NewAgentSDK(agentClient)
|
|
return nil
|
|
}
|
|
|
|
func (c *CLI) InitializeManagerClient(cmd *cobra.Command) error {
|
|
managerGRPCClient, managerClient, err := managergrpc.NewManagerClient(c.managerConfig)
|
|
if err != nil {
|
|
c.connectErr = err
|
|
return err
|
|
}
|
|
|
|
cmd.Println("🔗 Connected to manager using ", managerGRPCClient.Secure())
|
|
c.client = managerGRPCClient
|
|
|
|
c.managerClient = managerClient
|
|
return nil
|
|
}
|
|
|
|
func (c *CLI) Close() {
|
|
if c.client != nil {
|
|
c.client.Close()
|
|
}
|
|
}
|