All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- pkg/api/mock: add pre-update hook (#392, @nachtjasmin)
- pkg/api: use logger of client if
WithLogger
was not called explicitly (#381, @nachtjasmin)
- ipam/address: Add ip-version and prefix filter attributes to
ReserveRandom
request (#378, @anx-mschaefer)
- ipam: Fix several error messages to contain the correct resource (#378, @anx-mschaefer)
- go-anxcloud is now tested with Go versions 1.21 and 1.22 and we might start using features only available since 1.21
WithRequestOptions
API option to configure default request options (#361, @anx-mschaefer)- kubernetes/v1: Add
autoscaling
attribute viaEnableAutoscaling
field (#369, @nachtjasmin)
- (internal) add "error-return" to request option interfaces (#361, @anx-mschaefer)
- fix renamed inputs for crazy-max/ghaction-import-gpg action in release workflow
- e5e/v1: rename storage backend 'zip' to 'archive' and add new
deployment_state
attribute (#347, @anx-mschaefer)
- generic mock client: introduce pre-create hook (#322, @anx-mschaefer)
- e5e/v1: added new
Application
&Function
resources (#317, @anx-mschaefer)
- go-anxcloud is now tested with Go versions 1.20 and 1.21 and we might start using features only available since 1.20
- core/v1: add
created_at
andupdated_at
fields to Resource type - generic client: make common.PartialResource filterable
- lbaas/v2: added new
Cluster
,Node
&LoadBalancer
resources (#309, @anx-mschaefer) - frontier/v1: added new
API
,Action
,Deployment
&Endpoint
resources (#311, @anx-mschaefer)
- vsphere/provisioning/vm: add AdditionalDisks field to definition (#275, @marioreggiori)
- (internal) core/v1: Added retry on conflict(409) engine error while tagging resources (#266, @11tuvork28)
- go-anxcloud is now tested with Go versions 1.19 and 1.20 and we might start using features only available since 1.19
- github workflows refactored to run integration tests only when labeling a pull request with
integration_tests
- trace logging in pkg/client now goes to a logr.Logger attached to the request context, falling back to the logger configured on the client (#212, @LittleFox94)
- trace logging in pkg/client now really includes the request/response bodies (#211, @LittleFox94)
- kubernetes/v1: GetKubeConfig helper waits until kubeconfig is available (#221, @marioreggiori)
- kubernetes/v1: configurable cluster prefixes (#208, @marioreggiori)
- generic client: common resource types (#208, @marioreggiori)
- kubernetes/v1: add Cluster and NodePool bindings (#151, @marioreggiori)
- kubernetes/v1: add kubeconfig helper (#175, @marioreggiori)
- lbaas/v1: changed state retriever interface
StateSuccess
,StateProgressing
&StateFailure
toStateOK
,StatePending
&StateError
(#185, @marioreggiori) - (internal) generic client: common Generic Service interfaces and utils have been extracted into a new shared package (#185, @marioreggiori)
- generic client: AutoTag create option added (#167, @marioreggiori)
- upgraded to target Go 1.18, so now testing with Go versions 1.18 and 1.19 (#161, @LittleFox94)
- clouddns: prevent creation of DNS records with empty names due to API change -> use "@" to target domain root instead (#168, @marioreggiori)
- (internal) generic client apis: change pkg of tests to
v1_test
to mitigate import cycle issues (#169, @marioreggiori)
- vsphere/v1: Template bindings and FindNamedTemplate helper added to retrieve templates by name (#148, @marioreggiori)
- generic client: mock implementation (#139, @marioreggiori)
- (internal) object-generator: generate GetIdentifier method in
runtime
mode (#150, @marioreggiori)
- generic client: GetIdentifier method added to types.Object interface (#150, @marioreggiori)
- (internal) generic client: uses types.Object.GetIdentifier method (#150, @marioreggiori)
- pkg/utils/object/compare.Reconcile now accepts arrays of
*struct
andtypes.Object
as target/existing input (#145, @LittleFox94)
- core/v1: helper methods Tag, Untag and ListTags (#122, @marioreggiori)
- lbaas/v1: ACL and Rule API bindings added (#142, @toothstone & @marioreggiori)
- moved pkg/api.GetObjectIdentifier and related errors to pkg/api/types (#144, @LittleFox94)
- the previous locations are still available, but marked as deprecated
- clouddns/v1: creating a Record didn't retrieve its Identifier (#120, @LittleFox94)
- lbaas/v1: fix some attributes not being sent to the Engine when creating Backends (#135, @LittleFox94)
- (internal) generic client: FilterRequestURLHook for modifying request URLs (#123, @marioreggiori)
- (internal) core/v1: ResourceWithTag uses RequestBodyHook and FilterRequestURLHook instead of RequestFilterHook (#123, @marioreggiori)
- generic client: ErrorFromResponse and NewHTTPError to allow easier mocking (#118, @LittleFox94)
- lbaas/v1: add state getters (StateSuccess, StateProgressing, StateFailure) (#116, @LittleFox94)
- breaking: changes the
State
attribute of all resources to be added via embeddedHasState
- breaking: changes the
- utilities for comparing, searching and reconciling Objects by a list of (nested) attribute names (#117, @LittleFox94)
pkg/utils/object/compare
- breaking: renamed corev1.Info to corev1.Resource (#113, @LittleFox94)
- new APIs supported with generic client:
- core/location
- vlan
- github.com/satori/go.uuid updated to latest master
- fixes a security issue for random UUIDs being not that random (CVE-2021-3538, satori/go.uuid#73)
- although this is a real security issue, it's not relevant for go-anxcloud as it only consumes UUIDs in production code
- UUIDs were generated in test code, but those not being as random as they should be isn't a real problem
- the library seems dead and all usages not part of a public interface have been removed from go-anxcloud to prepare removing it completely when the legacy CloudDNS client is gone
- fixes a security issue for random UUIDs being not that random (CVE-2021-3538, satori/go.uuid#73)
- new client, unifying features across APIs and reducing code duplication (PR #56)
- already supported:
- core/resources
- lbaas
- clouddns/zone
- already supported:
- client: new option
BaseURL
(PR #58) - client: interface to retrieve metrics, such as requests currently in-flight or request duration (PR #66)
- old-style clients:
- lbaas: pagination support (PR #45)
- core/location: add getters for locations by identifier and code (PR #49)
- vsphere/info: add CPU performance type and CPU clock rate attributes (PR #51)
- import path is now go.anx.io/go-anxcloud, please change your code accordingly
- client: now uses
logr
for logging (PR #50) - package is now tested against Go versions 1.16 and 1.17
- the old-style clients are deprecated and will be removed in the minor version following the version with everything supported by the generic client we have old-style clients for
- write code against the generic client instead, create issues for APIs you need to help us prioritize them
- client: the
LogWriter
option for dumping requests and responses is replaced by theLogger
option (PR #50)
- client: DefaultBaseURL was exported by mistake and is not exposed anymore, use the BaseURL method on the client instance instead (PR #58)
- connections could end up dangling around (PR #48)
- ipam/prefix - allow to create empty prefixes
- ipam/address - allow to retrieve addresses with given filters
- ipam/prefix - Prefix Type is now available in Info
- vsphere - Deprovision now returns progress identifier
- lbaas - add load balancer as a service endpoints
- lbaas - add acl endpoints
- client - allow to specify a user agent option
- vsphere/progress Fix a bug where 404 from progress API results in a loop until timeout
- vmlist - Added VMList API client
- clouddns - Added CloudDNS API client
- client - Add client option to provide an
io.Writer
to dump http request/response for debugging
- vsphere/info -
DiskGB
variable type changed from float32 to float64
- vlan - added
vm_provisioning
flag toUpdateDefinition
- vsphere/info -
DiskGB
attribute changed to floating point type - ipam/address - random sleep added to ip reservation as workaround
- Changed location identifier tag name
- Added multi VLAN support to ip-prefix. (#19)