Skip to content

v0.3.9

Compare
Choose a tag to compare
@yunkon-kim yunkon-kim released this 29 Sep 02:00
· 16 commits to main since this release
6cdfbe3

Related components

Breaking Changes ⚠️

These breaking changes are expected to have a minimal impact on the entire platform.

  • Updated infra model

    Click to see the diff between cm-model v0.0.13 and v0.0.14
    git diff v0.0.13..v0.0.14 infra/
    warning: refname 'v0.0.13' is ambiguous.
    warning: refname 'v0.0.14' is ambiguous.
    diff --git a/infra/cloud-model/copied-tb-model.go b/infra/cloud-model/copied-tb-model.go
    index 89b37ee..755635e 100644
    --- a/infra/cloud-model/copied-tb-model.go
    +++ b/infra/cloud-model/copied-tb-model.go
    @@ -2,8 +2,8 @@ package cloudmodel
    
     // * To avoid circular dependencies, the following structs are copied from the cb-tumblebug framework.
     // TODO: When the cb-tumblebug framework is updated, we should synchronize these structs.
    -// * Version: CB-Tumblebug v0.11.9 (commit: 8ae6bd46f3c44afa538c87bdd6a59b4fbd32da6a)
    -// * Synchronized: 2025-09-03
    +// * Version: CB-Tumblebug v0.11.13 (commit: 0df66b37d0ddd3fab920f810abef5ad2bfb645d0)
    +// * Synchronized: 2025-09-25 (S3-standard auth for Object Storage APIs)
    
     // MciReq is struct for requirements to create MCI
     type MciReq struct {
    @@ -152,6 +152,65 @@ type MciCmdReq struct {
            Command  []string `json:"command" validate:"required" example:"client_ip=$(echo $SSH_CLIENT | awk '{print $1}'); echo SSH client IP is: $client_ip"`
     }
    
    +// CommandExecutionStatus represents the status of command execution
    +type CommandExecutionStatus string
    +
    +const (
    +       // CommandStatusQueued indicates the command has been requested but not started
    +       CommandStatusQueued CommandExecutionStatus = "Queued"
    +
    +       // CommandStatusHandling indicates the command is currently being processed
    +       CommandStatusHandling CommandExecutionStatus = "Handling"
    +
    +       // CommandStatusCompleted indicates the command execution completed successfully
    +       CommandStatusCompleted CommandExecutionStatus = "Completed"
    +
    +       // CommandStatusFailed indicates the command execution failed
    +       CommandStatusFailed CommandExecutionStatus = "Failed"
    +
    +       // CommandStatusTimeout indicates the command execution timed out
    +       CommandStatusTimeout CommandExecutionStatus = "Timeout"
    +)
    +
    +// CommandStatusInfo represents a single remote command execution record
    +type CommandStatusInfo struct {
    +       // Index is sequential identifier for this command execution (1, 2, 3, ...)
    +       Index int `json:"index" example:"1"`
    +
    +       // XRequestId is the request ID from X-Request-ID header when the command was executed
    +       XRequestId string `json:"xRequestId,omitempty" example:"req-12345678-abcd-1234-efgh-123456789012"`
    +
    +       // CommandRequested is the original command as requested by the user
    +       CommandRequested string `json:"commandRequested" example:"ls -la"`
    +
    +       // CommandExecuted is the actual SSH command executed on the VM (may be adjusted)
    +       CommandExecuted string `json:"commandExecuted" example:"ls -la"`
    +
    +       // Status represents the current status of the command execution
    +       Status CommandExecutionStatus `json:"status" example:"Completed"`
    +
    +       // StartedTime is when the command execution started
    +       StartedTime string `json:"startedTime" example:"2024-01-15 10:30:00" default:""`
    +
    +       // CompletedTime is when the command execution completed (success or failure)
    +       CompletedTime string `json:"completedTime,omitempty" example:"2024-01-15 10:30:05"`
    +
    +       // ElapsedTime is the duration of command execution in milliseconds
    +       ElapsedTime int64 `json:"elapsedTime,omitempty" example:"5000"`
    +
    +       // ResultSummary provides a brief summary of the execution result
    +       ResultSummary string `json:"resultSummary,omitempty" example:"Command executed successfully"`
    +
    +       // ErrorMessage contains error details if the execution failed
    +       ErrorMessage string `json:"errorMessage,omitempty" example:"SSH connection failed"`
    +
    +       // Stdout contains the standard output from command execution (truncated for history)
    +       Stdout string `json:"stdout,omitempty" example:"total 8\ndrwxr-xr-x 2 user user 4096 Jan 15 10:30 ."`
    +
    +       // Stderr contains the standard error from command execution (truncated for history)
    +       Stderr string `json:"stderr,omitempty" example:""`
    +}
    +
     // MciInfo is struct for MCI info
     type MciInfo struct {
            // ResourceType is the type of the resource
    @@ -344,6 +403,9 @@ type VmInfo struct {
            VmUserName       string     `json:"vmUserName,omitempty"`
            VmUserPassword   string     `json:"vmUserPassword,omitempty"`
    
    +       // CommandStatus stores the status and history of remote commands executed on this VM
    +       CommandStatus []CommandStatusInfo `json:"commandStatus,omitempty"`
    +
            AddtionalDetails []KeyValue `json:"addtionalDetails,omitempty"`
     }
  • Updated Beetle migration API responses

Note - If necessary, please clean the Tumblebug metadata and then initialize Tumblebug.

API docs

How to run and use the CM-Beetle

Note

What's Changed

  • build(deps): bump actions/setup-go from 5 to 6 by @dependabot[bot] in #198
  • chore: Update dependencies and improve VM recommendation system by @yunkon-kim in #200
  • feat(experimental): Add data migration API with transx integration by @yunkon-kim in #201
  • release: staging v0.3.9 with testing on 4 CSPs by @yunkon-kim in #202

Full Changelog: v0.3.8...v0.3.9