# Changelog

> Release notes for the current CubeCMP version

## 2.1.0 (Released on 2026-06-12) {#210-released-on-2026-06-12}

### Added {#added}

#### **Adapters** {#adapters}

- Support translating OpenStack networks and routers

#### **Admin** {#admin}

- Add admin router

#### **Apps** {#apps}

- Enrich network info for NFV purposes
- Support floating IP network ID identification by attached private network
- Support multiple network selection in GET app init info
- Support NFV-based network settings for K8s
- Support private network selection in POST app

#### **ASG** {#asg}

- Support applying firewall on ASG
- Add network details to LB; filter out network-attached firewalls in init info API
- Schema migration for ASG network settings
- Support network specification for ASG creation
- Add member role for ASG
- Add VPC network field to ASG creation form

#### **AWS** {#aws}

- Add AWS helper to operate AWS-related resources

#### **Billing** {#billing}

- Add demo billing/usage data generator

#### **Cluster** {#cluster}

- Implement RKE2 CRUD
- Support RKE2 cluster creation, deletion, node pool deletion/retrieval, and node pool scaling
- Support cluster approval
- Support getting K8s version from both RKE1 and RKE2
- Support registering external provider for AWS cluster CCM
- Add cluster helper for cluster operations
- Add Kubernetes helper to operate resources in K8s
- Verify flavor exists in OpenStack before creating cluster
- Adjust OpenStack CCM install order to ensure correct cloud-config loading
- Schema migration for cluster network settings
- Allow users to remove cluster regardless of status

#### **Cloud Admin** {#cloud-admin}

- Add `projectName` to private network list query
- Implement i18n for private network-related pages, creation form
- Integrate create/edit/list private network, project APIs
- Analysis/cloud provider now filters by project under project view
- Add resource analysis for cloud admin

#### **CMP Core** {#cmp-core}

- Extend deleted filter helper to accept new delete spec
- Extend rollback operation for security
- Helper function to manage update fields
- Implement RBAC control for private networks
- Support listing instances and settings records
- Support CIDR overlap verification for spine and provider networks
- Refactor CIDR verifier to handle missing cases

#### **Config** {#config}

- Add new config `CubeControllerVIP`
- Support all CubeCMP settings in v2 API
- Load config from env first; add new email-related settings

#### **Events** {#events}

- Initialize schema and create operation
- Support `startTime` and `endTime` in query
- Add event support for network, router, firewall, and instance operations

#### **Errors** {#errors}

- Implement new error system following upspin pattern, with error mapping for third-party services

#### **Firewalls** {#firewalls}

- Implement full firewall CRUD: create, get, list, update, delete, attach, detach
- Implement firewall rule creation and deletion
- Support creating firewall with multiple CIDRs
- Support attach/detach firewall for ASG
- Support creating rules with custom options to set port range to 0
- Support rollback after failure
- Use reconcile instead of attach/detach for improved robustness
- Enhance rule validation
- Send events for firewall operations
- Implement v1 migration
- Support applying firewall on instances

#### **Flavor** {#flavor}

- Support retrieving K8s flavors
- Support flavor selection when creating load balancers
- Display full flavor info in dropdowns
- Implement load balancer flavor profile list router

#### **Floating IPs** {#floating-ips}

- Support NFV-based floating IP and workload query
- Check if FIP exists/does not exist before action to avoid resource conflicts
- Prevent no-provider error
- Support specifying a floating IP when associating
- Support floating IP specifying for POST `/floatingips` and PATCH endpoints
- Support specifying IP when creating reserved IP
- Add GET API to fetch available floating IPs from a private network
- Add PATCH API to enable/disable non-reserved floating IP for an instance

#### **i18n** {#i18n}

- Full i18n coverage across portal pages: instances, clusters, apps, ASG, load balancers, firewalls, networks, volumes, shares, objects, images, billing, alerts, notifications, settings, policies, routers, spine networks, and NFV-related pages
- Add i18n for site admin, tenant admin, project admin, and cloud admin sections
- Remember previously selected language after refresh
- Crawl UI library translations

#### **Instances** {#instances}

- Add multiple network settings in POST API and instance creation bash
- Add PATCH APIs to attach/detach network on an instance
- Enrich multiple network detailed info in single instance and instance list
- Integrate multiple network setting flow between POST API and worker handler
- Integrate firewall info in private network list
- Send events after instance operations
- Support DHCP and IP specification for instance network setting
- Support DHCP for attaching private network and enabling non-reserved floating IP
- Support specifying interface IP when creating instance
- Implement instance rename API
- Add instance name validation to align with backend implementation
- Auto-select image, snapshot, or backup based on query params in create instance page

#### **Load Balancers** {#load-balancers}

- Schema migration for load balancer network settings
- Support NFV-based network settings for load balancers
- Support load balancer attachment query by project name and private network ID
- Check flavor as a required parameter

#### **Networks** {#networks}

- Implement private network create, update, attach, and detach, spine network create and update
- Implement site admin and project member network list endpoints
- Implement available IPs listing endpoint
- Add GET API to list network and available IP pairs per project
- Add GET API to list floating IPs and interface IPs
- Add external type definition, status field, and createdAt/updatedAt/deleted fields
- Support passing array parameters constructed by comma
- Verify name uniqueness before creating a network
- Verify CIDR overlap before attaching
- Initialize provider networks on startup
- Hide non-visible networks in project list endpoint
- Remove redundant naming and unused fields
- Rename and clean up orphan networks

#### **Pages** {#pages}

- Support page operations
- Support unlimited queries
- Set minimum total page count to 1

#### **Policies** {#policies}

- Support spine, private, and router policies

#### **Portal (UI)** {#portal-ui}

- Add scrollbar to popover menu
- Add pagination to all listing tables, and spine networks listing page
- Add private networks column to CubeFirewallTable
- Add hint for minimum/recommended spec for creating K8s cluster
- Add NFV firewall API libs and NFV-related roles to settings
- Cloud admin mock UIs: create/edit router, per-project router listing, attach/detach uplink, delete router
- Create/edit spine network mock UIs and API integration
- Firewall details page: private networks tab, instances tab apply/detach, ASG attach
- NFV apply scope ASG selection
- Separate firewall listing pages for Cube and AWS providers
- Separate floating IP tabs for Cube and AWS providers
- Separate instance listing page by provider
- Separate networking tabs by provider on instance page
- Remove Security tab on Networking page
- Remove project dropdowns
- Remove floating IP options from load balancer table
- Remove Marketplace page
- Add gateway IP fields to add spine network modal
- Forbid CIDR with /0 subnet mask when upserting spine network
- Show form field errors when field is dirty in add spine network modal
- Upsert router: only show NAT control when uplink is selected
- Add loading state and new props to dropdown components
- Support optional expand/collapse in CubeExpandableTable
- Split EventsTable into expandable and non-expandable variants

#### **Projects** {#projects}

- Purge V2 resource records after project deletion
- Add version field for migration preparation
- Enhance project creation verification
- Implement project create with rollback on failure
- Simulate password generation logic used in ops
- Support creating initial default firewalls when creating a project
- Assign reader role when creating project user
- Compensate reader role for early-created users

#### **Provider** {#provider}

- Add provider field for networks, routers, and firewalls
- Add provider middleware for validation
- Upgrade OpenStack CCM; treat as external provider to avoid conflicts

#### **Query** {#query}

- Allow time range queries without end time
- Omit `endTime` from RA-related API requests

#### **RBAC** {#rbac}

- Implement RBAC helper for permission control
- Apply RBAC control to instances
- Hide analysis and cloud provider tabs for project member role

#### **Rancher** {#rancher}

- Add Rancher helper to operate RKE-driven clusters

#### **Resource Analysis** {#resource-analysis}

- Implement amount, ranking, and trend APIs for cloud and project
- Make response values strings for frontend parsing
- Add time range in WHERE condition to limit results
- Support querying amount with specified projects
- Remove misplaced service option in ranking API
- Persist unpriced resource rows for RA visibility
- Cloud admin and project admin resource analysis

#### **Routers** {#routers}

- Implement router CRUD: create, list, update, delete, attach, detach
- Add status, CIDR, and type fields for uplink/downlink networks
- Include project in DB schema
- Verify name uniqueness before create/update
- Reconcile static routes when network/router attach or detach occurs
- Send events for router operations

#### **Settings** {#settings}

- Implement settings helper to handle inheritance
- Implement new settings: alerts, email, and policies
- Extend settings type
- Support loading config from env; add email-related settings
- Ensure default project and settings on creation

### Fixed {#fixed}

#### **Apps** {#apps-1}

- Add validation for floating IP operations; fix worker panic when non-external private network is attached

#### **ASG (Auto Scaling Group)** {#asg-auto-scaling-group}

- Fix incorrect ASG approval flow
- Fix ASG scaling issue caused by network side effects
- Fix missing network v2 schema migration for ASG scaling
- Correct the field used to search firewalls

#### **AWS** {#aws-1}

- Fix incorrect AWS credential parsing when inheriting credentials from default project
- Fix incorrect instance network schema conversion for AWS provider
- Fix incorrect default storage type parsing for AWS provider
- Fix resource operation errors for AWS instance, K8s, and floating IPs
- Fix AWS floating IPs page missing "Assigned To" field

#### **Billing** {#billing-1}

- Paginate billing reports via v2 page contract
- Ensure totalPage for billing pagination is at least 1

#### **Cluster / Node Pool** {#cluster--node-pool}

- Pass selected network to worker in K8s create/scale-up tasks
- Fix NFV schema integration issue between cluster, node pool, and floating IPs
- Fix incorrect floating IP check for network schema v2
- Remove nodeTemplatedId check (RKE2 clusters don't have it)
- Correct nodepool POST cluster lookup and harden proxy gate
- Fix K8s network schema migration; increase kube-api query limit for worker cron
- Only delete floating IPs within the CMP project during cluster cleanup

#### **Config** {#config-1}

- Accept absolute paths for `-conf`; fail loudly on no match
- Amend missing portal config used for firewall migration

#### **Events** {#events-1}

- Populate `remote_ip` on v2 firewall and volume-clone events
- Populate user/IP in alert and cloud-admin event records
- Fix resource name disappearing in event display

#### **Firewalls** {#firewalls-1}

- Preserve security group rule port ranges on decode
- Correct collection name, error total item counts, and options usage
- Handle dirty firewall records
- Make description an optional field
- Correct field used to search firewalls

#### **Floating IPs** {#floating-ips-1}

- Fix floating IP unassigning issue for load balancers
- Fix incorrect network ID in the floating IP list
- Fix missing schema update during floating IP operations
- Fix integration issue between reserved floating IP and workloads (instances and load balancers)
- Fix floating IP release issue during instance deletion
- Fix incorrect floating IP info attached in the instance list
- Fix floating IP display issue
- Fix incorrect private info in instance details
- Fix integration issue between reserved floating IP and instances
- Fix FIP association issue for load balancers
- Fix reserved FIP creation and association issue for load balancers

#### **Instances** {#instances-1}

- Fix incorrect default volume type when COS has switched the default storage type
- Fix incorrect floating IP display issue
- Fix incorrect import path for instance
- Fix incorrect floating IP info in instance list
- Handle GPU type correctly to avoid panic
- Improve `GET /portal/api/v1/instances` performance
- Skip updating `launched_at` if instance status is error
- Adjust network ID mapping between CMP and OpenStack network IDs
- Enhance stability for source-based route init and default gateway setting
- Fix Swagger v1 typo
- Integrate `floatingIp.isAcquirable` info with real router and network data
- Add default value to prevent failed null conditions
- Correct the field used to search firewalls
- Ensure rename instance option is only shown for the Cube provider

#### **Image Export** {#image-export}

- Clarify error message: image export only supports CubeStorage volumes

#### **Keypair** {#keypair}

- Fix incorrect keypair parsing logic during key validation

#### **Load Balancers** {#load-balancers-1}

- Fix load balancer creation/update issues for instance, app, and ASG
- Fix FIP association issue for load balancers
- Fix reserved FIP creation and association issue for load balancers

#### **Networks** {#networks-1}

- Site-admin private networks list no longer crashes on legacy projects
- Seed provider networks before private network migration
- Filter network project list to only include enabled networks for spine and provider
- Fix network ID mapping issue for network v2 schema in VM, shares, and floating IPs
- Fix parameter typo in `GET /providers/cube/projects/{projectName}/networks/available-ips`
- Make `gatewayIP` optional
- Avoid directly accessing `uplinkRouter` when it may be empty
- Correct allowed update options for spine and private networks
- Correct key to make search work
- Correct parameter usage
- Check parameter existence before use
- Avoid empty content when nothing is selected
- Use original status to avoid overriding state

#### **Options** {#options}

- Use function call instead of immediate invocation to avoid running before definition

#### **Page** {#page}

- Handle missing query parameter scenario

#### **Portal (UI)** {#portal-ui-1}

- Add missing i18n entries across multiple pages and features
- Fix i18n typos
- Prevent empty ellipsis menu from appearing in tables
- Fix basic events table missing event name column
- Fix project store settings initialization bugs and user role name i18n
- Fix admin list routers query param key
- Fix API types defined per poorly written Swagger docs
- Fix create private network uplink router ID key bug
- Fix cube modal small-size modifier style issue
- Fix failure to attach firewall to instances
- Fix failure to edit AWS firewall description
- Fix firewall rule UI for all ICMP type and code
- Hide instance memory usage graph for non-Cube providers
- Fix load balancer member interface IPs display
- Make network field required during cluster creation
- Fix objects page i18n issue
- Fix project store settings and user role i18n
- Route load balancer floating IP association/disassociation to LB collection
- Fix router UI uplinks visibility
- Fix router table status column appearing empty
- Fix spine networks table column order
- Fix unassign load balancer floating IP option handler
- Fix upsert private network modals not filtering routers by project
- Temporarily disable NFV create firewall
- Hide non-available networks in upsert router modals
- Fix networks fetched without pagination
- Fix NFV firewall API `autoScalingIDs` param renaming
- Handle NFV networks with no `spec.subnets`
- Allow policy import on Default and Custom projects
- Enforce volume quotas on clone action
- Hide color-related properties in branding config
- Fix i18n for instance list page dropdown (remove and destroy both visible)

#### **Project** {#project}

- Correct network status field when handling errors
- Fix incorrect filter for finding network ID by `metadata.id`
- Add `id` field on create; remove `omitempty` from status (empty string means success)

#### **Portal API** {#portal-api}

- Demote quota alert email failure to a log line
- Emit init+done event pair so History shows real duration
- Give v2 instance events a unique `event_id`
- Key v2 instance events by OpenStack UUID
- Load email templates so quota alerts can render
- Restore spine-only CIDR overlap policy; always check same-router
- Stop swallowing PG init/migration retry errors

#### **Provision** {#provision}

- Add SUCCESS as keyword to match customer HPG requirement

#### **Provider** {#provider-1}

- Make offline OpenStack CCM install deterministic

#### **Reserved Floating IP** {#reserved-floating-ip}

- Fix issue with reserved FIP and instance association
- Fix data update issue between reserved FIP deletion and instance

#### **Resource Analysis** {#resource-analysis-1}

- Set admin permission on related API
- Apply `providerName` filter in project trend SQL
- Include `provider_name` in project trend CTE

#### **Resource Overview** {#resource-overview}

- Fix incorrect aggregation logic for firewall v2

#### **Routers** {#routers-1}

- Check enabled networks before creating a router
- Handle the no-router situation
- Check bool value, not just existence
- Pass NAT enable opts instead of hardcoding
- Support filtering by project
- Update record when updating OpenStack resource

#### **Runtime** {#runtime}

- Scan all external networks in OpenStack

#### **Scripts** {#scripts}

- Dynamically generate sidecar image path to avoid syntax errors

#### **Settings** {#settings-1}

- Set default values to avoid v1 API failures

#### **Spec** {#spec}

- Correct GPU type inconsistency
- Use `getK8SFlavor` instead of getting flavor directly to avoid flavor-not-found errors

#### **Tenant Admin** {#tenant-admin}

- Make CIDR optional when converting private networks

#### **Token Sync** {#token-sync}

- Fix incorrect resource release order

#### **UI Library** {#ui-library}

- Fix cube dropdown floating element position issue
- Fix cube filter dropdown search input not always visible

#### **Volumes** {#volumes}

- Fix incorrect default storage type parsing for AWS provider

#### **Misc** {#misc}

- Fix instance list page missing floating IP display
- Fix workload dropdown missing instance interface options
- Fix incorrect result when assigning floating IP to instance interface network
- Accept both string and int types due to differences between AWS and Cube
- Add missing network field to instance creation payload
- Fix networking page floating IPs tab "Assigned To" text
- Fix incorrect contact us link URL

## 2.0.0 - 2025-03-28 {#200---2025-03-28}

---

### Added {#added-1}

- Introduced **Cloud Usage Billing Module** to enable cost tracking, chargeback, and showback for internal/external users.
- Added support for **Auto-Scaling Groups (ASG)** for VM workloads, enabling dynamic compute resource scaling.
- Rolled out a **refreshed UI** with streamlined layout and improved navigation.

### Changed {#changed}

- Enriched CubeCMP v2 API to support new billing and ASG automation endpoints.
- Updated installation options to support **offline deployment** in secure environments.

### Fixed {#fixed-1}

#### Application {#application}

- Fixed RBAC issues that prevented users from deleting applications.
- Fixed a UI bug on the image selection page during application creation.

#### Load balancer {#load-balancer}

- Fixed an issue where the load balancer was not deleted properly.
- Fixed an issue preventing applications from attaching to load balancer rules.
- Fixed a failure when creating the load balancer with HTTP and HTTPS protocols.

#### Instance {#instance}

- Fixed mismatch between imported instance image size and actual image size.
- Fixed snapshot and backup image deletion errors.
- Fixed an error preventing expired instances from updating their status to "expired".

#### Public Cloud {#public-cloud}

- Fixed AWS instance resize failure due to incorrect volume resizing.
- Fixed instance volume stuck in "creating" state after extension.
- Fixed a bug preventing AWS Kubernetes clusters fro being suspended or resumed.

---

## 1.4.1 – 2023-07-01 {#141--2023-07-01}

### Added {#added-2}

- Introduced multi-tenant management features for projects and quotas.
- Enabled support for external authentication services (e.g., SSO).
- Added instance management capabilities for flavors, images, and monitoring.
- Included Kubernetes configuration options for node types and sizes.
- Enabled file share and object storage configuration.
- Added user activity and security history tracking.
- Introduced SSH key-based user authentication.
- Integrated cloud provider validation tools for administrators.
- Enabled Kubernetes-as-a-Service with cluster lifecycle management.
- Added support for Marketplace-based Kubernetes app deployments.
- Expanded storage service capabilities with NFS/CIFS shares and image management.
- Introduced network service management: floating IPs, firewalls, and load balancers.
- Added approval workflows for both instance and Kubernetes lifecycle management.
- Unified interface for managing AWS EC2 resources via CubeCMP.

### Changed {#changed-1}

- No previously released features were changed in this version.

### Fixed {#fixed-2}

#### CubeCMP Platform {#cubecmp-platform}

- Fixed password update issue for local accounts.
- Improved login theme compatibility with external authentication.
- Enhanced firewall rule enforcement on target instances.
- Secured authentication method for instance creation.

#### Kubernetes {#kubernetes}

- Fixed default node and pool setting inconsistencies.
- Resolved sorting issue in Kubernetes cluster list.
- Added support for UDP-based load balancers.

#### Public Cloud {#public-cloud-1}

- Fixed floating IP limitation for AWS elastic IPs.
- Resolved issue with duplicate firewall rule names.
- Enhanced volume information display in public cloud views.

#### Security {#security}

- Hardened authentication methods used during instance provisioning.
