Skip to content

Releases: cloud-barista/cm-beetle

v0.3.10

10 Oct 09:41
2d7d9e3
Compare
Choose a tag to compare

Related components

API docs

How to run and use the CM-Beetle

Note

What's Changed

  • fix(compat): improve NVMe compatibility for CSP migrations by @yunkon-kim in #204
  • feat(test): add SSH connectivity testing with access support for VMs by @yunkon-kim in #207
  • Enhance multi-cloud compatibility and testing infrastructure by @yunkon-kim in #209
  • release: staging v0.3.10 with testing on 5 CSPs by @yunkon-kim in #211

Full Changelog: v0.3.9...v0.3.10

v0.3.9

29 Sep 02:00
6cdfbe3
Compare
Choose a tag to compare

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

v0.3.8

03 Sep 04:45
80d6806
Compare
Choose a tag to compare

Integrated or tested with

  • cm-model v0.0.13 (To be integrated on the next Damselfly release)
  • CM-Honeybee v0.3.4+ (Used always-running server)
  • CB-Tumblebug v0.11.9

Breaking Changes ⚠️

Important

Tumblebug's credentials and utilized CSP information (e.g., spec, image, naming) have changed.

Please follow the steps below carefully:

  1. Safely delete any previously managed resources.
  2. Clean Tumblebug and Spider metadata (see init/cleanDB.sh).
  3. Initialize Tumblebug and Spider (see init/init.sh).

API docs

How to run and use the CM-Beetle

Note

What's Changed

Full Changelog: v0.3.7...v0.3.8

v0.3.7

26 Aug 10:18
44200ab
Compare
Choose a tag to compare

Integrated or tested with

  • cm-model v0.0.11 (To be integrated on the next Damselfly release)
  • CM-Honeybee v0.3.3 (Used always-running server)
  • CB-Tumblebug v0.11.3

API docs

How to run and use the CM-Beetle

Note

What's Changed

  • release: assign sourceMachineId label to VM and staging v0.3.7 by @yunkon-kim in #193

Full Changelog: v0.3.6...v0.3.7

v0.3.6

25 Aug 06:29
d177aac
Compare
Choose a tag to compare

Integrated or tested with

  • cm-model v0.0.11 (To be integrated on the next Damselfly release)
  • CM-Honeybee v0.3.3 (Used always-running server)
  • CB-Tumblebug v0.11.3

API docs

How to run and use the CM-Beetle

Note

What's Changed

  • feat: enhance multi-cloud compatibility and VM recommendation with proximity matching by @yunkon-kim in #191
  • release: staging v0.3.6 by @yunkon-kim in #192

Full Changelog: v0.3.5...v0.3.6

v0.3.5

20 Aug 13:48
3f31345
Compare
Choose a tag to compare

Integrated or tested with

  • cm-model v0.0.11 (To be integrated on the next Damselfly release)
  • CM-Honeybee v0.3.3 (Used always-running server)
  • CB-Tumblebug v0.11.3

API docs

How to run and use the CM-Beetle

Note

What's Changed

  • upgrade: Update Go version from 1.23.0 to 1.24 by @yunkon-kim in #187
  • fix(aws-compat): mitigate strict AWS spec-image compatibility checks by @yunkon-kim in #189

Full Changelog: v0.3.4...v0.3.5

v0.3.4

19 Aug 11:52
2dee917
Compare
Choose a tag to compare

Integrated or tested with

  • cm-model v0.0.11 (To be integrated on the next Damselfly release)
  • CM-Honeybee v0.3.1
  • CB-Tumblebug v0.11.3

API docs

How to run and use the CM-Beetle

Note

What's Changed

Full Changelog: v0.3.3...v0.3.4

v0.3.3

12 Aug 13:56
220af0b
Compare
Choose a tag to compare

Integrated or tested with

  • cm-model v0.0.11 (To be integrated on the next Damselfly release)
  • CM-Honeybee v0.3.1
  • CB-Tumblebug v0.11.3

API docs

How to run and use the CM-Beetle

What's Changed

Full Changelog: v0.3.2...v0.3.3

v0.3.2

12 Aug 02:09
fe6f682
Compare
Choose a tag to compare

Integrated or tested with

  • cm-model v0.0.10 (To be integrated on the next Damselfly release)
  • CM-Honeybee v0.3.1
  • CB-Tumblebug v0.11.2

API docs

How to run and use the CM-Beetle

What's Changed

  • fix(alibaba): No AvailableInstanceType issue by improving recommendation logic by @yunkon-kim in #167
  • temporary fix(ncp): Limit memory upper bound to 8GiB by @yunkon-kim in #169
  • feat: Add filter for VM spec selection by @yunkon-kim in #170
  • feat: Update dependencies and enhance firewall rule handling by @yunkon-kim in #171
  • enhance: improve logging and VM image search by @yunkon-kim in #174
  • feat: add targetMachineId filtering and enhance VM recommendation system by @yunkon-kim in #176
  • feat: add multi-CSP test CLI with automated reporting by @yunkon-kim in #177
  • release: staging v0.3.2 by @yunkon-kim in #178

Full Changelog: v0.3.1...v0.3.2

v0.3.1

31 Jul 14:18
73db9dd
Compare
Choose a tag to compare

Integrated or tested with

  • cm-model v0.0.8 (To be integrated on the next Damselfly release)
  • CM-Honeybee v0.3.1
  • CB-Tumblebug v0.11.1

API docs

How to run and use the CM-Beetle

Breaking Changes (analyzed by Claude Sonnet 4)

Click to see the breaking changes

Beetle v0.3.0과 v0.3.1 간의 Breaking Changes 분석 결과

git diff 분석을 통해 확인된 주요 Breaking Changes는 다음과 같습니다:

🔴 Major Breaking Changes

  1. API 엔드포인트 변경
# v0.3.0 → v0.3.1 변경사항
- POST /recommendation/mci → POST /recommendation/mci (RecommendVMInfra로 함수명 변경)
+ POST /recommendation/mciWithDefaults (새로운 엔드포인트 추가)
+ POST /recommendation/containerInfra (새로운 엔드포인트 추가)

# 새로운 리소스 추천 API 추가
+ POST /recommendation/resources/vNet
+ POST /recommendation/resources/securityGroups  
+ POST /recommendation/resources/vmOsImages
+ POST /recommendation/resources/vmSpecs

# 새로운 마이그레이션 리소스 API 추가
+ POST /migration/ns/{nsId}/mciWithDefaults
+ GET/POST/DELETE /migration/ns/{nsId}/resources/vNet/{vNetId}
+ GET/POST/DELETE /migration/ns/{nsId}/resources/securityGroup/{sgId}
+ GET/POST/DELETE /migration/ns/{nsId}/resources/sshKey/{sshKeyId}
  1. 요청/응답 모델 구조 대폭 변경
// v0.3.0
type RecommendInfraRequest struct {
    DesiredProvider string `json:"desiredProvider"`
    DesiredRegion   string `json:"desiredRegion"`
    inframodel.OnpremiseInfraModel
}

// v0.3.1 - BREAKING CHANGE
type RecommendVmInfraRequest struct {
    DesiredCspAndRegionPair recommendation.CspRegionPair `json:"desiredCspAndRegionPair"`
    OnpremiseInfraModel     onpremmodel.OnpremInfra  // 패키지 변경
}

type MigrateInfraRequest struct {
    // v0.3.0: tbmodel.TbMciDynamicReq
    // v0.3.1: cloudmodel.RecommendedVmInfra - BREAKING CHANGE
    cloudmodel.RecommendedVmInfra
}
  1. 함수 시그니처 변경
// v0.3.0
func CreateVMInfra(nsId string, infraModel *tbmodel.TbMciDynamicReq) (tbmodel.TbMciInfo, error)
func RecommendInfra(c echo.Context) error

// v0.3.1 - BREAKING CHANGES
func CreateVMInfra(nsId string, targetInfraModel *cloudmodel.RecommendedVmInfra) (cloudmodel.VmInfraInfo, error)
func RecommendVMInfra(c echo.Context) error  // 함수명 변경
func CreateVMInfraWithDefaults(nsId string, infraModel *cloudmodel.TbMciDynamicReq) (cloudmodel.VmInfraInfo, error)  // 새로운 함수
  1. 패키지 의존성 변경
// v0.3.0 → v0.3.1 주요 버전 업그레이드
- github.com/cloud-barista/cb-tumblebug v0.10.3 → v0.11.1
- github.com/cloud-barista/cm-model v0.0.3 → v0.0.8
- github.com/labstack/echo/v4 v4.12.0 → v4.13.3
- github.com/mattn/go-sqlite3 v1.14.22 → v1.14.24
  1. 쿼리 파라미터 변경
# v0.3.0
?desiredProvider=aws&desiredRegion=ap-northeast-2

# v0.3.1 - BREAKING CHANGE  
?desiredCsp=aws&desiredRegion=ap-northeast-2  # Provider → Csp로 변경

⚠️ 호환성 영향도

  1. API 클라이언트: 모든 API 요청/응답 구조 변경으로 인한 완전한 재작업 필요
  2. 데이터 모델: cloudmodel 패키지로 마이그레이션 필요
  3. 함수 호출: 내부 API 사용 시 함수 시그니처 변경 대응 필요
  4. 설정: 쿼리 파라미터 이름 변경 대응 필요

📋 마이그레이션 가이드

v0.3.0에서 v0.3.1으로 업그레이드 시 다음 사항들을 필수로 수정해야 합니다:

  1. API 요청 구조체의 필드명 변경 (desiredProvider → desiredCsp)
  2. 응답 모델 타입 변경 (tbmodel.* → cloudmodel.*)
  3. 새로운 엔드포인트 활용 (/mciWithDefaults, /resources/*)
  4. 의존성 패키지 버전 업데이트

이러한 변경사항들이 Major Breaking Changes로 분류되며, 기존 클라이언트 코드의 수정이 필요합니다.

What's Changed

New Contributors

Full Changelog: v0.3.0...v0.3.1