All notable changes to this project will be documented in this file. See updating Changelog example here
- support for Partner API
- managed databases: add support for termination protection
- server: add storage labels to server storage devices list items
- managed databases: add support for Valkey
- managed databases: deprecate Redis
- server: add
Index
field torequest.CreateServerInterface
- managed load balancer:
http_status
,request_header
, andresponse_header
rule matchers - managed load balancer:
set_request_header
, andset_response_header
rule actions
- client: add option to configure logger for logging requests and responses
- managed load balancer:
MatchingCondition
field to frontend rule for controlling which operator to use when combining matchers - managed object storage: support for creating and deleting buckets
- managed object storage:
Deleted
field toupcloud.ManagedObjectStorageBucketMetrics
- Go version bump to 1.22
- managed object storage: support for custom domains
- managed load balancer: support for reading DNS challenge domain
- kubernetes: constant for standard storage tier
- router: add
type
field to static routes - managed databases: add support for labels
- storage:
TemplateType
field toupcloud.Storage
- storage: typo in
StorageEncryptionDataAtRest
constant
StorageEncryptionDataAtReset
in favor ofStorageEncryptionDataAtRest
- storage: constant for standard storage tier
- storage: constant for disabling storage encryption
- Experimental, gateway: add UUID support for VPN gateway connections and tunnels
- service: a more elaborate error message if get request returns an error on unmarshalling json array
- kubernetes: add support for node group custom plans
- kubernetes: add support for data at rest encryption in node groups
- Cloud:
ParentZone
field toZone
struct (only available for private zones)
- Go version bump to 1.21
- Experimental, Gateway: support for VPN feature. Note that VPN feature is currently in beta, you can learn more about it on the product page
- Network peering: add
WaitForNetworkPeeringState
helper
- Managed Database: add support managing attached SDN networks via
networks
field. - Managed Database: add paging support to
GetManagedDatabases
method.
- Managed Object Storage:
ManagedObjectStoragePolicy
struct - Managed Object Storage:
ManagedObjectStorageUserPolicy
struct - Managed Object Storage:
IAMURL
field toManagedObjectStorageEndpoint
- Managed Object Storage:
STSURL
field toManagedObjectStorageEndpoint
- Managed Object Storage:
ARN
field toManagedObjectStorageUser
- Managed Object Storage:
Policies
field toManagedObjectStorageUser
- Managed Object Storage:
Status
field toManagedObjectStorageUserAccessKey
- Breaking, Managed Object Storage:
Users
field removed fromManagedObjectStorage
- Breaking, Managed Object Storage:
ARN
field removed fromManagedObjectStorageUser
- Breaking, Managed Object Storage:
OperationalState
field removed fromManagedObjectStorageUser
- Breaking, Managed Object Storage:
Enabled
field removed fromManagedObjectStorageUserAccessKey
- Breaking, Managed Object Storage:
Name
field removed fromManagedObjectStorageUserAccessKey
- Breaking, Managed Object Storage:
UpdatedAt
field removed fromManagedObjectStorageUserAccessKey
- Breaking, Managed Object Storage:
AccessKeyId
field inManagedObjectStorageUserAccessKey
renamed toAccessKeyID
- Managed Load Balancer:
MaintenanceDOW
andMaintenanceTime
fields for controlling maintenance window occurrence - Kubernetes: support for cluster labels.
- Breaking, Managed Database:
ManagedDatabaseUserOpernSearchAccessControl
fields changed to pointers - Breaking, Managed Database:
ManagedDatabaseUserPGAccessControl
fields changed to pointers - Breaking, Managed Database:
ManagedDatabaseUserRedisAccessControl
fields changed to pointers - Breaking, Managed Load Balancer:
LoadBalancerFrontendProperties
fieldInboundProxyProtocol
to pointer - Breaking, Managed Object Storage:
CreateManagedObjectStorageUserAccessKeyRequest
fieldEnabled
to pointer - Breaking, Managed Object Storage:
ModifyManagedObjectStorageUserAccessKeyRequest
fieldEnabled
to pointer - Breaking Kubernetes: the
ControlPlaneIPFilter
ofModifyKubernetesCluster
is changed from[]string
to*[]string
.
- Breaking, Managed Database: connection related methods in favor of session
- Breaking: remove
Timeout
option fromWaitFor*
methods. Usecontext.WithTimeout
to define a timeout for these functions. - Breaking: Managed Database:
Type
field fromCloneManagedDatabaseRequest
andModifyManagedDatabaseRequest
- Server groups: Add
AddServerToServerGroup
andRemoveServerFromServerGroup
methods. - Storages: Add support for encryption at rest
- Managed Object Storage: use correct path for
GetManagedObjectStorageBucketMetricsRequest
- Managed Database sub-properties support. E.g., PostgreSQL property
timescaledb
is of typeobject
and hasmax_background_workers
sub-property. - Managed Object Storage: add
name
property - Account: add
ManagedObjectStorages
field toResourceLimits
- Managed Object Storage: omit empty labels slice when creating managed object storage instance
- Managed Load Balancer:
TLSConfigs
field toLoadBalancerBackend
to control backend TLS configurations - Managed Load Balancer:
TLSEnabled
,TLSUseSystemCA
,TLSVerify
&HTTP2Enabled
fields toLoadBalancerBackendProperties
- Managed Load Balancer:
HTTP2Enabled
field toLoadBalancerFrontendProperties
- kubernetes: add
Version
field torequest.CreateKubernetesClusterRequest
andupcloud.KubernetesCluster
- Breaking, kubernetes: update
GetKubernetesVersions
return value from[]string
to[]upcloud.KubernetesVersion
. (No major version bump, because this end-point has not been included in the API docs)
- kubernetes:
WaitForKubernetesNodeGroupState
method for waiting the node group to achieve a desired state
- kubernetes: sleep before
GET
request inWaitForKubernetesClusterState
- account:
NetworkPeerings
,NTPExcessGiB
,StorageMaxIOPS
, andLoadBalancers
fields to theResourceLimits
struct.
- kubernetes:
WaitForKubernetesClusterState
ignores two first 404 responses to avoid errors caused by possible false not found responses right after cluster has been created.
- Managed Object Storage support
.gitignore
editorial commit
- network:
dhcp_routes
field to IP network for additional DHCP classless static routes to be delivered if the DHCP is enabled - network:
static_routes
field to router for defining static routes
- kubernetes:
control_plane_ip_filter
field to cluster for configuring and reading IP addresses and ranges allowed to access cluster control-plane - gateway:
addresses
list to provide IP addresses assigned to the gateway
- kubernetes:
utility_network_access
field to node group for configuring utility network access on the given group - Managed Database session support, including methods
service.GetManagedDatabaseSessions
&service.CancelManagedDatabaseSession
.
service.GetManagedDatabaseConnections
andservice.CancelManagedDatabaseConnection
in favor ofservice.GetManagedDatabaseSessions
andservice.CancelManagedDatabaseSession
- client functions
NewDefaultHTTPClient
andNewDefaultHTTPTransport
to provide HTTP client default properties - kubernetes: experimental support for deleting nodes from node groups
- kubernetes: consts for
scaling-up
andscaling-down
node-group states
service.GetKubernetesNodeGroup
method to returnupcloud.KubernetesNodeGroupDetails
type which is extended version of the previousupcloud.KubernetesNodeGroup
request.ModifyServerRequest
does not set boolean propertiesMetadata
andRemoteAccessEnabled
to"no"
by default.
- Managed Load Balancer
health_check_tls_verify
field to backend member properties to control certificate validation for health checks utilising HTTPS
- Managed Load Balancer inverse rule matcher
- ServerGroup
AntiAffinityPolicy
field to support strict, best-effort and off policies. This replacesAntiAffinity
- ServerGroup
AntiAffinity
boolean field in favor ofAntiAffinityPolicy
string enum field
- GetManagedDatabaseIndices method to return a slice of structs instead of pointers
- Managed Database OpenSearch support
- Support for defining NIC model upon creating or modifying a server. Also exported constants for each support NIC model.
- Support for
PrivateNodeGroups
property of Kubernetes clusters.
- client: overwrite the HTTP Client Transport accordingly when
UPCLOUD_DEBUG_SKIP_CERTIFICATE_VERIFY
is set to1
- method for fetching available kubernetes plans
- new
Backups
field forDeleteServerAndStoragesRequest
that controls if backups should be kept or deleted while deleting the server - Kubernetes cluster
Plan
field
- labels support for storages
- support for network gateways
State
field to kubernetes node-groups
- errors: all service method now return
Problem
type in case of errors (BREAKING CHANGE) - Type for
NodeGroups
fieldCreateKubernetesClusterRequest
is nowrequest.KubernetesNodeGroup
instead ofupcloud.KubernetesNodeGroup
- errors:
Error
type was removed (BREAKING CHANGE)
- kubernetes: experimental support for anti-affinity node groups
- request:
GetServerGroupsWithFiltersRequest
is now deprecated; useGetServerGroupsRequest
withFilters
field instead
- storage: possibility to control what to do with backups related to the storage that is about to be deleted
- labels support for: load-balancers, networks, network-peerings, routers
- request:
ServerFilter
andServerGroupFilter
types will be replaced withQueryFilter
type in the future
- kubernetes: experimental support for node group CRUD operations
- experimental support for Managed Redis Database
- load-balancer: add
Scheme
property to front-end rule HTTP redirect action.
- servers: allow adding server to a server group during server creation
- servers: add server group UUID to server details
- HTTP status code field to
upcloud.Error
type - experimental support for internal network peering
- context-aware type
client.ClientContext
renamed toclient.Client
- context-aware type
service.ServiceContext
renamed toservice.Service
service.Service
accepts any client that implementsservice.Client
interfaceclient.New
constructor allows overwritebaseURL
,httpClient
andhttpClient.Timeout
client properties- bump Go version to 1.18
- bump module version from
v4
tov5
service.Service
type without context supportclient.Client
type without context support- redundant
Timeout
field fromrequest.StartServerRequest
type
- Managed Load Balancer private network support
- Anti-affinity support for server groups (experimental)
- Managed Load Balancer fields
DNSName
andNetworkUUID
- separate kubernetes plans
- label support for server and server groups
- add support for resource permissions
- Experimental support for Kubernetes cluster, plans and versions
- Managed Load Balancer
SetForwardedHeaders
frontend rule action
- add context-aware client and service types
- Managed Load Balancer frontend and backend properties
- add support for fetching available service types for managed database service
- drop IP address family requirement from firewall rule
- typo in
ManagedDatabaseConnection
fieldWaitEventType
- Content-Type HTTP header when importing compressed storage
- Expose
GetZones
throughZones
interface - allow time or day of week to be empty in Managed Database maintenance request property
- add experimental support for Server Groups
- add possibility to overwrite default API URL with
UPCLOUD_DEBUG_API_BASE_URL
environment variable
- Managed Load Balancer resolver request spelling
- Managed Load Balancer request example
- Managed Load Balancer num_members_up matcher naming convention
- add support for Managed Load Balancer (beta)
- add support for fetching available versions for managed database service
- add support for upgrading managed database version
- add support for resizing storage partition and filesystem
- add support for subaccount management and account listing
- rewrite import paths for v4
- bump go.mod major version
- add experimental support for Managed Databases #96
- We will now publish the release tags with the
v
-prefix to conform with go mod
- add support for Object Storage
- support io.Reader as SourceLocation in CreateStorageImport
- pass on a custom user agent string in requests
- add storage tier support to ServerStorageDevice
- support for backuprules when creating a server
- add support for explicitly setting IP address for network interfaces (requires special privileges for your UpCloud account)
- BREAKING CHANGE: changing network router with ModifyNetwork call is no longer supported. Please use AttachNetworkRouter and DetachNetworkRouter from now on.
- bump default Go version to 1.16, keep supporting 1.15
- use a default timeout when no timeout given
- default to original storage size in CreateServerStorageDevice when Size = 0
- BREAKING CHANGE: Fix StorageImportDetails.Completed to be a time.Time rather than a string
- don't marshal empty resource limits
- allow empty BackupRules (eg. remove backup rule) to be sent to the backend
- go.mod
- delete server and all attached storages
- a build script with more code quality checks
- go-vcr to tests
- Host, Firewall, Network, Router resources from UpCloud API 1.3
- Storage import resource
- bump Go version to 1.14
- Converted API calls from XML to JSON
- default zone from hel1 to hel2
- only build PRs and merges to master
- raise mininum required go version to 1.13
- changelog format to include different lists
- bump UpCloud API from 1.2 to 1.3 and expand with new functionalities
- XML api calls
- Timeout issues
- moved project to UpCloud's own GitHub organization
- raise the minimum required Go version to 1.7
- improve documentation
- remove ability to override the API base URL and version
- remove credentials related getters and setters from
Client
- hopefully fix CD-ROM integration tests for good by performing all operations while the server is stopped
- minor tweaks to the integration tests
- correct the package name in the README installation instructions
First stable release