From 257ffd3583dcee6a81a1ea7e2caeb70426da6e72 Mon Sep 17 00:00:00 2001 From: Pierrick Gicquelais Date: Wed, 17 Feb 2021 11:41:30 +0100 Subject: [PATCH 01/11] Trigger Build From b15ed7f2440c974a30b13f7b82724c601542a103 Mon Sep 17 00:00:00 2001 From: Vishal Anarase Date: Fri, 29 Apr 2022 23:10:27 +0530 Subject: [PATCH 02/11] Initial working commit for civo integration Signed-off-by: Vishal Anarse --- .../cloudprovider/builder/builder_all.go | 8 +- .../cloudprovider/builder/builder_civo.go | 43 + cluster-autoscaler/cloudprovider/civo/OWNERS | 6 + .../cloudprovider/civo/README.md | 23 + .../cloudprovider/civo/civo_cloud_provider.go | 200 + .../cloudprovider/civo/civo_manager.go | 162 + .../cloudprovider/civo/civo_node_group.go | 259 + .../examples/cluster-autoscaler-standard.yaml | 196 + .../cloudprovider/cloud_provider.go | 2 + cluster-autoscaler/go.mod | 1 + cluster-autoscaler/go.sum | 2 + .../github.com/civo/civogo/.editorconfig | 21 + .../vendor/github.com/civo/civogo/.gitignore | 4 + .../github.com/civo/civogo/CHANGELOG.md | 1341 +++ .../vendor/github.com/civo/civogo/CODEOWNERS | 3 + .../github.com/civo/civogo/CONTRIBUTING.md | 29 + .../vendor/github.com/civo/civogo/LICENSE | 21 + .../vendor/github.com/civo/civogo/README.md | 163 + .../github.com/civo/civogo/application.go | 255 + .../civo/civogo/application_size.go | 70 + .../github.com/civo/civogo/changelog.yml | 9970 +++++++++++++++++ .../vendor/github.com/civo/civogo/charge.go | 36 + .../vendor/github.com/civo/civogo/client.go | 254 + .../github.com/civo/civogo/disk_image.go | 107 + .../vendor/github.com/civo/civogo/dns.go | 281 + .../vendor/github.com/civo/civogo/errors.go | 1065 ++ .../github.com/civo/civogo/fake_client.go | 1750 +++ .../vendor/github.com/civo/civogo/firewall.go | 222 + .../vendor/github.com/civo/civogo/go.mod | 5 + .../vendor/github.com/civo/civogo/go.sum | 98 + .../vendor/github.com/civo/civogo/instance.go | 362 + .../github.com/civo/civogo/instance_size.go | 70 + .../github.com/civo/civogo/kubernetes.go | 362 + .../github.com/civo/civogo/loadbalancer.go | 176 + .../vendor/github.com/civo/civogo/network.go | 140 + .../github.com/civo/civogo/organisation.go | 115 + .../github.com/civo/civogo/permission.go | 28 + .../vendor/github.com/civo/civogo/pool.go | 97 + .../vendor/github.com/civo/civogo/quota.go | 54 + .../vendor/github.com/civo/civogo/region.go | 96 + .../vendor/github.com/civo/civogo/role.go | 58 + .../civo/civogo/snapshot.go.disabled | 107 + .../civo/civogo/snapshot_test.go.disabled | 180 + .../vendor/github.com/civo/civogo/ssh_key.go | 104 + .../vendor/github.com/civo/civogo/team.go | 171 + .../civo/civogo/template.go.disabled | 132 + .../civo/civogo/template_test.go.disabled | 158 + .../vendor/github.com/civo/civogo/user.go | 53 + .../github.com/civo/civogo/utils/random.go | 48 + .../vendor/github.com/civo/civogo/volume.go | 177 + .../vendor/github.com/civo/civogo/webhook.go | 115 + cluster-autoscaler/vendor/modules.txt | 4 + .../cloud-provider-azure/pkg/provider/doc.go | 2 +- 53 files changed, 19403 insertions(+), 3 deletions(-) create mode 100644 cluster-autoscaler/cloudprovider/builder/builder_civo.go create mode 100644 cluster-autoscaler/cloudprovider/civo/OWNERS create mode 100644 cluster-autoscaler/cloudprovider/civo/README.md create mode 100644 cluster-autoscaler/cloudprovider/civo/civo_cloud_provider.go create mode 100644 cluster-autoscaler/cloudprovider/civo/civo_manager.go create mode 100644 cluster-autoscaler/cloudprovider/civo/civo_node_group.go create mode 100644 cluster-autoscaler/cloudprovider/civo/examples/cluster-autoscaler-standard.yaml create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/.editorconfig create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/.gitignore create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/CHANGELOG.md create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/CODEOWNERS create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/CONTRIBUTING.md create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/LICENSE create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/README.md create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/application.go create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/application_size.go create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/changelog.yml create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/charge.go create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/client.go create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/disk_image.go create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/dns.go create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/errors.go create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/fake_client.go create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/firewall.go create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/go.mod create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/go.sum create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/instance.go create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/instance_size.go create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/kubernetes.go create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/loadbalancer.go create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/network.go create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/organisation.go create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/permission.go create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/pool.go create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/quota.go create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/region.go create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/role.go create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/snapshot.go.disabled create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/snapshot_test.go.disabled create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/ssh_key.go create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/team.go create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/template.go.disabled create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/template_test.go.disabled create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/user.go create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/utils/random.go create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/volume.go create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/webhook.go diff --git a/cluster-autoscaler/cloudprovider/builder/builder_all.go b/cluster-autoscaler/cloudprovider/builder/builder_all.go index 97fa808d0a1b..0405557dd330 100644 --- a/cluster-autoscaler/cloudprovider/builder/builder_all.go +++ b/cluster-autoscaler/cloudprovider/builder/builder_all.go @@ -1,5 +1,5 @@ -//go:build !gce && !aws && !azure && !kubemark && !alicloud && !magnum && !digitalocean && !clusterapi && !huaweicloud && !ionoscloud && !linode && !hetzner && !bizflycloud && !brightbox && !packet && !oci && !vultr && !tencentcloud && !externalgrpc -// +build !gce,!aws,!azure,!kubemark,!alicloud,!magnum,!digitalocean,!clusterapi,!huaweicloud,!ionoscloud,!linode,!hetzner,!bizflycloud,!brightbox,!packet,!oci,!vultr,!tencentcloud,!externalgrpc +//go:build !gce && !aws && !azure && !kubemark && !alicloud && !magnum && !digitalocean && !clusterapi && !huaweicloud && !ionoscloud && !linode && !hetzner && !bizflycloud && !brightbox && !packet && !oci && !vultr && !tencentcloud && !externalgrpc && !civo +// +build !gce,!aws,!azure,!kubemark,!alicloud,!magnum,!digitalocean,!clusterapi,!huaweicloud,!ionoscloud,!linode,!hetzner,!bizflycloud,!brightbox,!packet,!oci,!vultr,!tencentcloud,!externalgrpc,!civo /* Copyright 2018 The Kubernetes Authors. @@ -28,6 +28,7 @@ import ( "k8s.io/autoscaler/cluster-autoscaler/cloudprovider/bizflycloud" "k8s.io/autoscaler/cluster-autoscaler/cloudprovider/brightbox" "k8s.io/autoscaler/cluster-autoscaler/cloudprovider/cherryservers" + "k8s.io/autoscaler/cluster-autoscaler/cloudprovider/civo" "k8s.io/autoscaler/cluster-autoscaler/cloudprovider/cloudstack" "k8s.io/autoscaler/cluster-autoscaler/cloudprovider/clusterapi" "k8s.io/autoscaler/cluster-autoscaler/cloudprovider/digitalocean" @@ -72,6 +73,7 @@ var AvailableCloudProviders = []string{ cloudprovider.PacketProviderName, cloudprovider.VultrProviderName, cloudprovider.TencentcloudProviderName, + cloudprovider.CivoProviderName, } // DefaultCloudProvider is GCE. @@ -125,6 +127,8 @@ func buildCloudProvider(opts config.AutoscalingOptions, do cloudprovider.NodeGro return vultr.BuildVultr(opts, do, rl) case cloudprovider.TencentcloudProviderName: return tencentcloud.BuildTencentcloud(opts, do, rl) + case cloudprovider.CivoProviderName: + return civo.BuildCivo(opts, do, rl) } return nil } diff --git a/cluster-autoscaler/cloudprovider/builder/builder_civo.go b/cluster-autoscaler/cloudprovider/builder/builder_civo.go new file mode 100644 index 000000000000..24cf7c9abc08 --- /dev/null +++ b/cluster-autoscaler/cloudprovider/builder/builder_civo.go @@ -0,0 +1,43 @@ +//go:build civo +// +build civo + +/* +Copyright 2022 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package builder + +import ( + "k8s.io/autoscaler/cluster-autoscaler/cloudprovider" + "k8s.io/autoscaler/cluster-autoscaler/cloudprovider/civo" + "k8s.io/autoscaler/cluster-autoscaler/config" +) + +// AvailableCloudProviders supported by the digtalocean cloud provider builder. +var AvailableCloudProviders = []string{ + cloudprovider.CivoProviderName, +} + +// DefaultCloudProvider for civo-only build is Civo. +const DefaultCloudProvider = cloudprovider.CivoProviderName + +func buildCloudProvider(opts config.AutoscalingOptions, do cloudprovider.NodeGroupDiscoveryOptions, rl *cloudprovider.ResourceLimiter) cloudprovider.CloudProvider { + switch opts.CloudProviderName { + case cloudprovider.CivoProviderName: + return civo.BuildCivo(opts, do, rl) + } + + return nil +} diff --git a/cluster-autoscaler/cloudprovider/civo/OWNERS b/cluster-autoscaler/cloudprovider/civo/OWNERS new file mode 100644 index 000000000000..521df0e8d518 --- /dev/null +++ b/cluster-autoscaler/cloudprovider/civo/OWNERS @@ -0,0 +1,6 @@ +approvers: +- cablespaghetti +- vishalanarase +reviewers: +- cablespaghetti +- vishalanarase diff --git a/cluster-autoscaler/cloudprovider/civo/README.md b/cluster-autoscaler/cloudprovider/civo/README.md new file mode 100644 index 000000000000..8325d0cbee3c --- /dev/null +++ b/cluster-autoscaler/cloudprovider/civo/README.md @@ -0,0 +1,23 @@ +# Cluster Autoscaler for Civo Cloud + +The cluster autoscaler for Civo Cloud scales worker nodes within any specified Civo Cloud Kubernetes cluster. + +# Configuration +As there is no concept of a node group within Civo Cloud's Kubernetes offering, the configuration required is quite +simple. You need to set: + +- Your Civo Cloud API Key +- The Kubernetes Cluster's ID (not the name) +- The minimum and maximum number of **worker** nodes you want (the master is excluded) + +See the [cluster-autoscaler-standard.yaml](examples/cluster-autoscaler-standard.yaml) example configuration, but to +summarise you should set a `nodes` startup parameter for cluster autoscaler to specify a node group called `workers` +e.g. `--nodes=1:10:workers`. + +The remaining parameters can be set via environment variables (`CIVO_API_KEY` and `CIVO_CLUSTER_ID`) as in the +example YAML. + +It is also possible to get these parameters through a YAML or JSON file mounted into the container +(for example via a Kubernetes Secret). The path configured with a startup parameter e.g. +`--cloud-config=/etc/kubernetes/cloud.config`. In this case the YAML/JSON keys are `api_key` and `cluster_id`. + diff --git a/cluster-autoscaler/cloudprovider/civo/civo_cloud_provider.go b/cluster-autoscaler/cloudprovider/civo/civo_cloud_provider.go new file mode 100644 index 000000000000..0c7245741394 --- /dev/null +++ b/cluster-autoscaler/cloudprovider/civo/civo_cloud_provider.go @@ -0,0 +1,200 @@ +/* +Copyright 2022 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package civo + +import ( + "fmt" + "io" + "os" + "strings" + + apiv1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/api/resource" + "k8s.io/autoscaler/cluster-autoscaler/cloudprovider" + "k8s.io/autoscaler/cluster-autoscaler/config" + "k8s.io/autoscaler/cluster-autoscaler/utils/errors" + "k8s.io/klog/v2" +) + +var _ cloudprovider.CloudProvider = (*civoCloudProvider)(nil) + +const ( + // GPULabel is the label added to nodes with GPU resource. + GPULabel = "civo.com/gpu-node" + + civoProviderIDPrefix = "civo://" +) + +// civoCloudProvider implements CloudProvider interface. +type civoCloudProvider struct { + manager *Manager + resourceLimiter *cloudprovider.ResourceLimiter +} + +func newCivoCloudProvider(manager *Manager, rl *cloudprovider.ResourceLimiter) (*civoCloudProvider, error) { + if err := manager.Refresh(); err != nil { + return nil, err + } + + return &civoCloudProvider{ + manager: manager, + resourceLimiter: rl, + }, nil +} + +// Name returns name of the cloud provider. +func (d *civoCloudProvider) Name() string { + return cloudprovider.CivoProviderName +} + +// NodeGroups returns all node groups configured for this cloud provider. +func (d *civoCloudProvider) NodeGroups() []cloudprovider.NodeGroup { + nodeGroups := make([]cloudprovider.NodeGroup, len(d.manager.nodeGroups)) + for i, ng := range d.manager.nodeGroups { + nodeGroups[i] = ng + } + return nodeGroups +} + +// NodeGroupForNode returns the node group for the given node, nil if the node +// should not be processed by cluster autoscaler, or non-nil error if such +// occurred. Must be implemented. +func (d *civoCloudProvider) NodeGroupForNode(node *apiv1.Node) (cloudprovider.NodeGroup, error) { + providerID := node.Spec.ProviderID + nodeID := toNodeID(providerID) + + klog.V(5).Infof("checking nodegroup for node ID: %q", nodeID) + for _, group := range d.manager.nodeGroups { + klog.V(5).Infof("iterating over node group %q", group.Id()) + nodes, err := group.Nodes() + if err != nil { + return nil, err + } + + for _, node := range nodes { + klog.V(6).Infof("checking node has: %q want: %q", node.Id, providerID) + if node.Id != providerID { + continue + } + + return group, nil + } + } + + klog.V(5).Infof("not including node in the workers node group because not present in Civo API: %q", node.Name) + return nil, nil +} + +// Pricing returns pricing model for this cloud provider or error if not +// available. Implementation optional. +func (d *civoCloudProvider) Pricing() (cloudprovider.PricingModel, errors.AutoscalerError) { + return nil, cloudprovider.ErrNotImplemented +} + +// GetAvailableMachineTypes get all machine types that can be requested from +// the cloud provider. Implementation optional. +func (d *civoCloudProvider) GetAvailableMachineTypes() ([]string, error) { + return []string{}, nil +} + +// NewNodeGroup builds a theoretical node group based on the node definition +// provided. The node group is not automatically created on the cloud provider +// side. The node group is not returned by NodeGroups() until it is created. +// Implementation optional. +func (d *civoCloudProvider) NewNodeGroup( + machineType string, + labels map[string]string, + systemLabels map[string]string, + taints []apiv1.Taint, + extraResources map[string]resource.Quantity, +) (cloudprovider.NodeGroup, error) { + return nil, cloudprovider.ErrNotImplemented +} + +// GetResourceLimiter returns struct containing limits (max, min) for +// resources (cores, memory etc.). +func (d *civoCloudProvider) GetResourceLimiter() (*cloudprovider.ResourceLimiter, error) { + return d.resourceLimiter, nil +} + +// GPULabel returns the label added to nodes with GPU resource. +func (d *civoCloudProvider) GPULabel() string { + return GPULabel +} + +// GetAvailableGPUTypes return all available GPU types cloud provider supports. +func (d *civoCloudProvider) GetAvailableGPUTypes() map[string]struct{} { + return nil +} + +// Cleanup cleans up open resources before the cloud provider is destroyed, +// i.e. go routines etc. +func (d *civoCloudProvider) Cleanup() error { + return nil +} + +// Refresh is called before every main loop and can be used to dynamically +// update cloud provider state. In particular the list of node groups returned +// by NodeGroups() can change as a result of CloudProvider.Refresh(). +func (d *civoCloudProvider) Refresh() error { + klog.V(4).Info("Refreshing node group cache") + return d.manager.Refresh() +} + +// BuildCivo builds the Civo cloud provider. +func BuildCivo( + opts config.AutoscalingOptions, + do cloudprovider.NodeGroupDiscoveryOptions, + rl *cloudprovider.ResourceLimiter, +) cloudprovider.CloudProvider { + var configFile io.ReadCloser + if opts.CloudConfig != "" { + var err error + configFile, err = os.Open(opts.CloudConfig) + if err != nil { + klog.Fatalf("Couldn't open cloud provider configuration %s: %#v", opts.CloudConfig, err) + } + defer func() { + err := configFile.Close() + if err == nil { + klog.Fatalf("Failed to close Civo cloud provider cloud config file: %v", err) + } + }() + } + + manager, err := newManager(configFile, do) + if err != nil { + klog.Fatalf("Failed to create Civo manager: %v", err) + } + + provider, err := newCivoCloudProvider(manager, rl) + if err != nil { + klog.Fatalf("Failed to create Civo cloud provider: %v", err) + } + + return provider +} + +// toProviderID returns a provider ID from the given node ID. +func toProviderID(nodeID string) string { + return fmt.Sprintf("%s%s", civoProviderIDPrefix, nodeID) +} + +// toNodeID returns a node ID from the given provider ID. +func toNodeID(providerID string) string { + return strings.TrimPrefix(providerID, civoProviderIDPrefix) +} diff --git a/cluster-autoscaler/cloudprovider/civo/civo_manager.go b/cluster-autoscaler/cloudprovider/civo/civo_manager.go new file mode 100644 index 000000000000..f728ae34d8e4 --- /dev/null +++ b/cluster-autoscaler/cloudprovider/civo/civo_manager.go @@ -0,0 +1,162 @@ +/* +Copyright 2022 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package civo + +import ( + "encoding/json" + "errors" + "fmt" + "io" + "io/ioutil" + "os" + + "k8s.io/autoscaler/cluster-autoscaler/cloudprovider" + "k8s.io/autoscaler/cluster-autoscaler/config/dynamic" + + "github.com/civo/civogo" + "k8s.io/klog/v2" +) + +type nodeGroupClient interface { + // ListKubernetesClusterPools lists all node pools in the Kubernetes cluster. + ListKubernetesClusterPools(clusterID string) ([]civogo.KubernetesPool, error) + // UpdateKubernetesClusterPool updates an existing Kubernetes cluster pool with the Civo API. + UpdateKubernetesClusterPool(cid, pid string, config *civogo.KubernetesClusterPoolConfig) (*civogo.KubernetesPool, error) + // DeleteKubernetesClusterPoolInstance deletes a instance from pool + DeleteKubernetesClusterPoolInstance(clusterID, poolID, instanceID string) (*civogo.SimpleResponse, error) +} + +// Manager handles Civo communication and data caching of +// node groups +type Manager struct { + client nodeGroupClient + clusterID string + nodeGroups []*NodeGroup + discoveryOpts cloudprovider.NodeGroupDiscoveryOptions +} + +// Config is the configuration of the Civo cloud provider +type Config struct { + // ClusterID is the id associated with the cluster where Civo + // Cluster Autoscaler is running. + ClusterID string `json:"cluster_id" yaml:"cluster_id"` + // ApiKey is the Civo User's API Key associated with the cluster where + // Civo Cluster Autoscaler is running. + ApiKey string `json:"api_key" yaml:"api_key"` + // ApiURL is the Civo API URL + ApiURL string `json:"api_url" yaml:"api_url"` + // Region is the Civo region + Region string `json:"region" yaml:"region"` +} + +func newManager(configReader io.Reader, discoveryOpts cloudprovider.NodeGroupDiscoveryOptions) (*Manager, error) { + cfg := &Config{} + if configReader != nil { + body, err := ioutil.ReadAll(configReader) + if err != nil { + return nil, err + } + err = json.Unmarshal(body, cfg) + if err != nil { + return nil, err + } + } else { + cfg.ApiURL = os.Getenv("CIVO_API_URL") + cfg.ApiKey = os.Getenv("CIVO_API_KEY") + cfg.ClusterID = os.Getenv("CIVO_CLUSTER_ID") + cfg.Region = os.Getenv("CIVO_REGION") + } + + if cfg.ApiURL == "" { + return nil, errors.New("civo API URL was not provided") + } + if cfg.ApiKey == "" { + return nil, errors.New("civo API Key was not provided") + } + if cfg.ClusterID == "" { + return nil, errors.New("cluster ID was not provided") + } + if cfg.Region == "" { + return nil, errors.New("region was not provided") + } + + civoClient, err := civogo.NewClientWithURL(cfg.ApiKey, cfg.ApiURL, cfg.Region) + if err != nil { + return nil, fmt.Errorf("couldn't initialize Civo client: %s", err) + } + + m := &Manager{ + client: civoClient, + clusterID: cfg.ClusterID, + nodeGroups: make([]*NodeGroup, 0), + discoveryOpts: discoveryOpts, + } + + return m, nil +} + +// Refresh refreshes the cache holding the nodegroups. This is called by the CA +// based on the `--scan-interval`. By default it's 10 seconds. +func (m *Manager) Refresh() error { + var minSize int + var maxSize int + var workerConfigFound = false + for _, specString := range m.discoveryOpts.NodeGroupSpecs { + spec, err := dynamic.SpecFromString(specString, true) + if err != nil { + return fmt.Errorf("failed to parse node group spec: %v", err) + } + if spec.Name == "workers" { + minSize = spec.MinSize + maxSize = spec.MaxSize + workerConfigFound = true + klog.V(4).Infof("found configuration for workers node group: min: %d max: %d", minSize, maxSize) + } + } + if !workerConfigFound { + return fmt.Errorf("no workers node group configuration found") + } + + pools, err := m.client.ListKubernetesClusterPools(m.clusterID) + if err != nil { + return fmt.Errorf("couldn't list Kubernetes cluster pools: %s", err) + } + + klog.V(4).Infof("refreshing workers node group kubernetes cluster: %q min: %d max: %d", m.clusterID, minSize, maxSize) + + var group []*NodeGroup + for _, nodePool := range pools { + np := nodePool + klog.V(4).Infof("adding node pool: %q", nodePool.ID) + + group = append(group, &NodeGroup{ + id: nodePool.ID, + clusterID: m.clusterID, + client: m.client, + nodePool: &np, + minSize: minSize, + maxSize: maxSize, + }) + } + + if len(group) == 0 { + klog.V(4).Info("cluster-autoscaler is disabled. no node pools are configured") + } + + m.nodeGroups = group + return nil +} diff --git a/cluster-autoscaler/cloudprovider/civo/civo_node_group.go b/cluster-autoscaler/cloudprovider/civo/civo_node_group.go new file mode 100644 index 000000000000..a6fd3fc7d146 --- /dev/null +++ b/cluster-autoscaler/cloudprovider/civo/civo_node_group.go @@ -0,0 +1,259 @@ +/* +Copyright 2022 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package civo + +import ( + "errors" + "fmt" + + "github.com/civo/civogo" + + apiv1 "k8s.io/api/core/v1" + "k8s.io/autoscaler/cluster-autoscaler/cloudprovider" + autoscaler "k8s.io/autoscaler/cluster-autoscaler/config" + "k8s.io/klog/v2" + schedulerframework "k8s.io/kubernetes/pkg/scheduler/framework" +) + +// NodeGroup implements cloudprovider.NodeGroup interface. NodeGroup contains +// configuration info and functions to control a set of nodes that have the +// same capacity and set of labels. +type NodeGroup struct { + id string + clusterID string + client nodeGroupClient + nodePool *civogo.KubernetesPool + minSize int + maxSize int + getOptions *autoscaler.NodeGroupAutoscalingOptions +} + +// MaxSize returns maximum size of the node group. +func (n *NodeGroup) MaxSize() int { + return n.maxSize +} + +// MinSize returns minimum size of the node group. +func (n *NodeGroup) MinSize() int { + return n.minSize +} + +func (n *NodeGroup) GetOptions(autoscaler.NodeGroupAutoscalingOptions) (*autoscaler.NodeGroupAutoscalingOptions, error) { + return n.getOptions, nil +} + +// TargetSize returns the current target size of the node group. It is possible +// that the number of nodes in Kubernetes is different at the moment but should +// be equal to Size() once everything stabilizes (new nodes finish startup and +// registration or removed nodes are deleted completely). Implementation +// required. +func (n *NodeGroup) TargetSize() (int, error) { + return n.nodePool.Count, nil +} + +// IncreaseSize increases the size of the node group. To delete a node you need +// to explicitly name it and use DeleteNode. This function should wait until +// node group size is updated. Implementation required. +func (n *NodeGroup) IncreaseSize(delta int) error { + if delta <= 0 { + return fmt.Errorf("delta must be positive, have: %d", delta) + } + + targetSize := n.nodePool.Count + delta + + if targetSize > n.MaxSize() { + return fmt.Errorf("size increase is too large. current: %d desired: %d max: %d", + n.nodePool.Count, targetSize, n.MaxSize()) + } + + req := &civogo.KubernetesClusterPoolConfig{ + Count: targetSize, + } + updatedNodePool, err := n.client.UpdateKubernetesClusterPool(n.clusterID, n.id, req) + if err != nil { + return err + } + + if updatedNodePool.Count != targetSize { + return fmt.Errorf("couldn't increase size to %d (delta: %d). Current size is: %d", + targetSize, delta, updatedNodePool.Count) + } + + // update internal cache + n.nodePool.Count = targetSize + return nil +} + +// DeleteNodes deletes nodes from this node group (and also increasing the size +// of the node group with that). Error is returned either on failure or if the +// given node doesn't belong to this node group. This function should wait +// until node group size is updated. Implementation required. +func (n *NodeGroup) DeleteNodes(nodes []*apiv1.Node) error { + for _, node := range nodes { + instanceID := toNodeID(node.Spec.ProviderID) + klog.V(4).Info("deleteing node: %q", instanceID) + _, err := n.client.DeleteKubernetesClusterPoolInstance(n.clusterID, n.id, instanceID) + if err != nil { + return fmt.Errorf("deleting node failed for cluster: %q node pool: %q node: %q: %s", + n.clusterID, n.id, node.Name, err) + } + + // decrement the count by one after a successful delete + n.nodePool.Count-- + } + + return nil +} + +// DecreaseTargetSize decreases the target size of the node group. This function +// doesn't permit to delete any existing node and can be used only to reduce the +// request for new nodes that have not been yet fulfilled. Delta should be negative. +// It is assumed that cloud provider will not delete the existing nodes when there +// is an option to just decrease the target. Implementation required. +func (n *NodeGroup) DecreaseTargetSize(delta int) error { + if delta >= 0 { + return fmt.Errorf("delta must be negative, have: %d", delta) + } + + targetSize := n.nodePool.Count + delta + if targetSize < n.MinSize() { + return fmt.Errorf("size decrease is too small. current: %d desired: %d min: %d", + n.nodePool.Count, targetSize, n.MinSize()) + } + + req := &civogo.KubernetesClusterPoolConfig{ + Count: targetSize, + } + + updatedNodePool, err := n.client.UpdateKubernetesClusterPool(n.clusterID, n.id, req) + if err != nil { + return err + } + + if updatedNodePool.Count != targetSize { + return fmt.Errorf("couldn't increase size to %d (delta: %d). Current size is: %d", + targetSize, delta, updatedNodePool.Count) + } + + // update internal cache + n.nodePool.Count = targetSize + return nil +} + +// Id returns an unique identifier of the node group. +func (n *NodeGroup) Id() string { + return n.id +} + +// Debug returns a string containing all information regarding this node group. +func (n *NodeGroup) Debug() string { + return fmt.Sprintf("cluster ID: %s (min:%d max:%d)", n.Id(), n.MinSize(), n.MaxSize()) +} + +// Nodes returns a list of all nodes that belong to this node group. It is +// required that Instance objects returned by this method have Id field set. +// Other fields are optional. + +func (n *NodeGroup) Nodes() ([]cloudprovider.Instance, error) { + if n.nodePool == nil { + return nil, errors.New("node pool instance is not created") + } + + return toInstances(n.nodePool.Instances), nil +} + +// TemplateNodeInfo returns a schedulernodeinfo.NodeInfo structure of an empty +// (as if just started) node. This will be used in scale-up simulations to +// predict what would a new node look like if a node group was expanded. The +// returned NodeInfo is expected to have a fully populated Node object, with +// all of the labels, capacity and allocatable information as well as all pods +// that are started on the node by default, using manifest (most likely only +// kube-proxy). Implementation optional. +func (n *NodeGroup) TemplateNodeInfo() (*schedulerframework.NodeInfo, error) { + return nil, cloudprovider.ErrNotImplemented +} + +// Exist checks if the node group really exists on the cloud provider side. +// Allows to tell the theoretical node group from the real one. Implementation +// required. +func (n *NodeGroup) Exist() bool { + return n.nodePool != nil +} + +// Create creates the node group on the cloud provider side. Implementation +// optional. +func (n *NodeGroup) Create() (cloudprovider.NodeGroup, error) { + return nil, cloudprovider.ErrNotImplemented +} + +// Delete deletes the node group on the cloud provider side. This will be +// executed only for autoprovisioned node groups, once their size drops to 0. +// Implementation optional. +func (n *NodeGroup) Delete() error { + return cloudprovider.ErrNotImplemented +} + +// Autoprovisioned returns true if the node group is autoprovisioned. An +// autoprovisioned group was created by CA and can be deleted when scaled to 0. +func (n *NodeGroup) Autoprovisioned() bool { + return false +} + +// toInstances converts a slice of civogo.KubernetesInstance to +// cloudprovider.Instance +func toInstances(nodes []civogo.KubernetesInstance) []cloudprovider.Instance { + instances := make([]cloudprovider.Instance, 0, len(nodes)) + for _, nd := range nodes { + instances = append(instances, toInstance(nd)) + } + return instances +} + +// toInstance converts the given civogo.KubernetesInstance to a +// cloudprovider.Instance +func toInstance(node civogo.KubernetesInstance) cloudprovider.Instance { + return cloudprovider.Instance{ + Id: toProviderID(node.ID), + Status: toInstanceStatus(node.Status), + } +} + +// toInstanceStatus converts the given civo instance status to a +// cloudprovider.InstanceStatus +func toInstanceStatus(nodeState string) *cloudprovider.InstanceStatus { + if nodeState == "" { + return nil + } + + st := &cloudprovider.InstanceStatus{} + switch nodeState { + case "BUILD", "BUILD_PENDING": + st.State = cloudprovider.InstanceCreating + case "ACTIVE": + st.State = cloudprovider.InstanceRunning + case "DELETING": + st.State = cloudprovider.InstanceDeleting + default: + st.ErrorInfo = &cloudprovider.InstanceErrorInfo{ + ErrorClass: cloudprovider.OtherErrorClass, + ErrorCode: "no-code-civo", + ErrorMessage: nodeState, + } + } + + return st +} diff --git a/cluster-autoscaler/cloudprovider/civo/examples/cluster-autoscaler-standard.yaml b/cluster-autoscaler/cloudprovider/civo/examples/cluster-autoscaler-standard.yaml new file mode 100644 index 000000000000..12c41ec19781 --- /dev/null +++ b/cluster-autoscaler/cloudprovider/civo/examples/cluster-autoscaler-standard.yaml @@ -0,0 +1,196 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + k8s-addon: cluster-autoscaler.addons.k8s.io + k8s-app: cluster-autoscaler + name: cluster-autoscaler + namespace: kube-system +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: cluster-autoscaler + labels: + k8s-addon: cluster-autoscaler.addons.k8s.io + k8s-app: cluster-autoscaler +rules: + - apiGroups: ["storage.k8s.io"] + resources: ["csistoragecapacities", "csidrivers"] + verbs: ["get", "list"] + - apiGroups: [""] + resources: ["events", "endpoints"] + verbs: ["create", "patch"] + - apiGroups: [""] + resources: ["pods/eviction"] + verbs: ["create"] + - apiGroups: [""] + resources: ["pods/status"] + verbs: ["update"] + - apiGroups: [""] + resources: ["endpoints"] + resourceNames: ["cluster-autoscaler"] + verbs: ["get", "update"] + - apiGroups: [""] + resources: ["nodes", "namespaces"] + verbs: ["watch", "list", "get", "update"] + - apiGroups: [""] + resources: + - "pods" + - "services" + - "replicationcontrollers" + - "persistentvolumeclaims" + - "persistentvolumes" + verbs: ["watch", "list", "get"] + - apiGroups: ["extensions"] + resources: ["replicasets", "daemonsets"] + verbs: ["watch", "list", "get"] + - apiGroups: ["policy"] + resources: ["poddisruptionbudgets"] + verbs: ["watch", "list"] + - apiGroups: ["apps"] + resources: ["statefulsets", "replicasets", "daemonsets"] + verbs: ["watch", "list", "get"] + - apiGroups: ["storage.k8s.io"] + resources: ["storageclasses", "csinodes"] + verbs: ["watch", "list", "get"] + - apiGroups: ["batch", "extensions"] + resources: ["jobs"] + verbs: ["get", "list", "watch", "patch"] + - apiGroups: ["coordination.k8s.io"] + resources: ["leases"] + verbs: ["create"] + - apiGroups: ["coordination.k8s.io"] + resourceNames: ["cluster-autoscaler"] + resources: ["leases"] + verbs: ["get", "update"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: cluster-autoscaler + namespace: kube-system + labels: + k8s-addon: cluster-autoscaler.addons.k8s.io + k8s-app: cluster-autoscaler +rules: + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["create","list","watch"] + - apiGroups: [""] + resources: ["configmaps"] + resourceNames: ["cluster-autoscaler-status", "cluster-autoscaler-priority-expander"] + verbs: ["delete", "get", "update", "watch"] + +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: cluster-autoscaler + labels: + k8s-addon: cluster-autoscaler.addons.k8s.io + k8s-app: cluster-autoscaler +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: cluster-autoscaler +subjects: + - kind: ServiceAccount + name: cluster-autoscaler + namespace: kube-system + +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: cluster-autoscaler + namespace: kube-system + labels: + k8s-addon: cluster-autoscaler.addons.k8s.io + k8s-app: cluster-autoscaler +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: cluster-autoscaler +subjects: + - kind: ServiceAccount + name: cluster-autoscaler + namespace: kube-system + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: cluster-autoscaler + namespace: kube-system + labels: + app: cluster-autoscaler +spec: + replicas: 1 + selector: + matchLabels: + app: cluster-autoscaler + template: + metadata: + labels: + app: cluster-autoscaler + annotations: + prometheus.io/scrape: 'true' + prometheus.io/port: '8085' + spec: + serviceAccountName: cluster-autoscaler + containers: + - image: vishalanarase/cluster-autoscaler-arm64:dev + name: cluster-autoscaler + imagePullPolicy: Always + resources: + limits: + cpu: 100m + memory: 300Mi + requests: + cpu: 100m + memory: 300Mi + command: + - ./cluster-autoscaler + - --v=4 + - --stderrthreshold=info + - --cloud-provider=civo + - --nodes=1:10:workers + - --skip-nodes-with-local-storage=false + - --skip-nodes-with-system-pods=false + env: + - name: CIVO_API_URL + valueFrom: + secretKeyRef: + key: api-url + name: cluster-autoscaler + - name: CIVO_API_KEY + valueFrom: + secretKeyRef: + key: api-key + name: cluster-autoscaler + - name: CIVO_CLUSTER_ID + valueFrom: + secretKeyRef: + key: cluster-id + name: cluster-autoscaler + - name: CIVO_REGION + valueFrom: + secretKeyRef: + key: region + name: cluster-autoscaler +--- +apiVersion: v1 +kind: Secret +metadata: + name: cluster-autoscaler + namespace: kube-system + labels: + app: cluster-autoscaler +type: Opaque +stringData: + api-url: "http://6e1f-31-24-105-13.ngrok.io" + api-key: "CJoNKBnMqGSFPma1e8tSOZm9DBsKQGKUlcVfhCBiGU2kWMWnam" + cluster-id: "43fd01e1-d063-4c32-8b35-0c94be18caac" + region: "DEV" diff --git a/cluster-autoscaler/cloudprovider/cloud_provider.go b/cluster-autoscaler/cloudprovider/cloud_provider.go index 4afe7c21c893..b35a41a859ae 100644 --- a/cluster-autoscaler/cloudprovider/cloud_provider.go +++ b/cluster-autoscaler/cloudprovider/cloud_provider.go @@ -76,6 +76,8 @@ const ( TencentcloudProviderName = "tencentcloud" // ExternalGrpcProviderName gets the provider name of the external grpc provider ExternalGrpcProviderName = "externalgrpc" + // CivoProviderName gets the provider name of civo + CivoProviderName = "civo" ) // CloudProvider contains configuration info and functions for interacting with diff --git a/cluster-autoscaler/go.mod b/cluster-autoscaler/go.mod index 7f951c17de1b..2e68df221bc3 100644 --- a/cluster-autoscaler/go.mod +++ b/cluster-autoscaler/go.mod @@ -12,6 +12,7 @@ require ( github.com/Azure/go-autorest/autorest/to v0.4.0 github.com/Azure/skewer v0.0.14 github.com/aws/aws-sdk-go v1.38.49 + github.com/civo/civogo v0.2.77 github.com/digitalocean/godo v1.27.0 github.com/ghodss/yaml v1.0.0 github.com/gofrs/uuid v4.0.0+incompatible diff --git a/cluster-autoscaler/go.sum b/cluster-autoscaler/go.sum index 2b6861f95d04..cb53c62abc35 100644 --- a/cluster-autoscaler/go.sum +++ b/cluster-autoscaler/go.sum @@ -161,6 +161,8 @@ github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMn github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= github.com/cilium/ebpf v0.7.0 h1:1k/q3ATgxSXRdrmPfH8d7YK0GfqVsEKZAX9dQZvs56k= github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA= +github.com/civo/civogo v0.2.77 h1:r2fF0bBPbjeLBSFV+m3NWohwVZbdMZjZgxTwnxOcv6M= +github.com/civo/civogo v0.2.77/go.mod h1:WUgi+GbpYlgXTbpU5Lx4scLc2XuoYhb9o20FMwPalBo= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/clusterhq/flocker-go v0.0.0-20160920122132-2b8b7259d313 h1:eIHD9GNM3Hp7kcRW5mvcz7WTR3ETeoYYKwpgA04kaXE= github.com/clusterhq/flocker-go v0.0.0-20160920122132-2b8b7259d313/go.mod h1:P1wt9Z3DP8O6W3rvwCt0REIlshg1InHImaLW0t3ObY0= diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/.editorconfig b/cluster-autoscaler/vendor/github.com/civo/civogo/.editorconfig new file mode 100644 index 000000000000..559b914c44b1 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/.editorconfig @@ -0,0 +1,21 @@ +root = true + +[*] +insert_final_newline = true +charset = utf-8 +trim_trailing_whitespace = true +indent_style = tab +indent_size = 2 + +[{Makefile,go.mod,go.sum,*.go,.gitmodules}] +indent_style = tab +indent_size = 2 + +[*.md] +indent_size = 4 +trim_trailing_whitespace = false + +eclint_indent_style = unset + +[Dockerfile] +indent_size = 4 diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/.gitignore b/cluster-autoscaler/vendor/github.com/civo/civogo/.gitignore new file mode 100644 index 000000000000..0d89ec065afe --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/.gitignore @@ -0,0 +1,4 @@ +# Default ignored files +.idea +.vscode +.DS_Store diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/CHANGELOG.md b/cluster-autoscaler/vendor/github.com/civo/civogo/CHANGELOG.md new file mode 100644 index 000000000000..9d9c6f422179 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/CHANGELOG.md @@ -0,0 +1,1341 @@ + +0.2.57 +============= +2021-11-02 + +* Remove implicit call to templates (#63) (ff81332) + +0.2.54 +============= +2021-09-27 + +* Provide region when reboot, stop and start instance (#62) (e04b7763) + +0.2.52 +============= +2021-08-30 + +* Add new struct fields for cluster firewall (#60) (d69977c6) +* Update the changelog (6f7d2d14) + +0.2.51 +============= +2021-08-20 + +* Add firewall ID to instance config (for creating instance) (#59) (63eb8ece) + +0.2.50 +============= +2021-08-20 + +* Exclude disk images with name containing "k3s" (#58) (4a2e2643) +* Fix lint issues (51b3d43b) +* Fixing capitalisation of decodeERROR to go standards and UnknowError typo (cd1195df) +* Add endpoints for team/permission management (e0bec13d) + +0.2.49 +============= +2021-07-16 + +* Remove unnecessary code from the error handler file and add new error handler (14fc34c7) + +0.2.48 +============= +2021-07-15 + +* Change de default error in case the error is not in the list (1bf187fd) +* Added a new error handler (cf996f92) + +0.2.47 +============= +2021-05-23 + +* Fixed error in the recycle kuberntes node (d9a041df) +* Updated the Change log (267f348f) + +0.2.46 +============= +2021-05-21 + +* Added omitempty to some models, to prevent show empty result (f99bbb6a) +* Fixed test for the instance (63305185) + +0.2.45 +============= +2021-05-10 + +* Fixed error in the instance controller (a9f4749f) +* Added new error handler (bfb7b690) + +0.2.44 +============= +2021-05-05 + +* Merge branch 'master' of https://github.com/civo/civogo (7f556d7b) +* Added the pool option to kubernestes object (2459ccd5) + +0.2.43 +============= +2021-05-04 + +* Added change to kubernetes and volume (0f3b7fb6) +* Add cluster_id to volume creation (47dce610) +* Fix CHANGELOG (7a917e8e) +* Add GetVolume call to save always returning then filtering down to a single volume (419cda25) +* Add Status to volume (4884e404) +* Added region to volume attach/detach (093df491) +* Update CHANGELOG for 0.2.38 (9c1df9d1) +* Update VolumeConfig to have a namespace attribute (89995b6a) +* Update fake_client.go (d629abae) + +0.2.37 +============= +2021-04-08 + +* Added new methods for DiskImage (cd0f7879) + +0.2.36 +============= +2021-04-06 + +* Added omitempty to kubernetes config, that way we only send the filled fields (af03bb1f) +* Updated the changelog (dc3ea1df) + +0.2.35 +============= +2021-04-02 + +* Merge branch 'master' of https://github.com/civo/civogo (772d0a16) +* Fixed error in the code, added a new handler for network error (c47419ce) +* Updated the changelog (ed132dec) +* Added new fields to kubernetes struct (43e5e9a8) +* Updated the changelog (699e5392) +* Merge branch 'master' of https://github.com/civo/civogo (1e9c4c70) +* Fixed error in the struct for InstalledApplication in kubernetes (ff8a577c) +* Updated the changelog (0cf2bd6e) +* Added network to the firewall struct (f173564c) +* Added GetDefaultRegion to the region (e2bd46f7) +* Updated the changelog (9c6173fb) +* Added default field to the region (79f15aa1) +* Updated the changelog (b45dffe1) +* Feature/add region (#50) (19e61587) +* Clusternames should be considered case insensitive (#49) (dfcbfaec) +* Update Change log (c237384c) +* Fixed check in handler for errors (c5ae6fb3) +* Update Change log (5564e235) +* Fixed lint check in the actions (346fe0ff) +* Fixed some bugs in the error handler (a0333a83) +* Update Change log (ce2a8a20) +* Added option to use proxy if is present in the system (3c3da053) +* Update Change log (d6c63e63) +* Fixed the recycle option in Kubernetes (405567d0) +* Update Change log (4b69a797) +* Updated all find function to all command (8ac5d69e) +* Update Change log (dd52c163) +* Fixed an error in the struct of the creation of intances (e7cd9f3b) +* Update Change log (ede2e4c1) +* Added two more error to the error handler (c1e74133) +* Fixed error in the DNS test (b0996760) +* Update Change log (d6191cc6) +* Added new record type to DNS (6e3d7b1e) +* Update Change log (fc9cd8ff) +* improved error handling in the library (7a0e384f) +* Update test.yml (0aa9f6bf) +* Update test.yml (73500add) +* Update test.yml (f3d121d8) +* Update test.yml (2df11af6) +* Update Change log (c024bec2) +* Updated all test (d8b73535) +* Update Change log (63a3ae56) +* Added constant errors to the lib (4095fdfc) +* Update the chnage log (b11ac276) +* Added FindTemplate fucntion to the template module (59a86819) +* Update the change log (4cc1b488) +* Revert "Update the change log" (21b44c0e) +* Update the change log (8cfac7bc) +* Add constant errors (#41) (c983d56e) +* Added CPU, RAM and SSD fields to Instance struct (f6135e29) +* Added new feature (b74d3224) +* Fixed error in the cluster upgrade cmd (c49389ab) +* Add the new UpgradeAvailableTo field to KubernetesCluster (9c392181) +* Change application struct in the kubernetes module (#39) (59b86eba) +* Change application struct in kubernetes (c1839b96) +* added new way to search in network (923b509b) +* feat(kubernetes): new added option at the moment scaling down the cluster (#35) (1906a5fc) +* Add pagination for Kubernetes clusters (#34) (6ce671a8) +* (hotfix) change snapshot config (77d29967) +* Change PublicIPRequired to a string to support IP moving (d0635c7e) +* add template endpoints (c73d51fa) +* Minor tweaks to SSH key struct (d20f49e0) +* update the ssh key file (f5eab5e2) +* Add new option to ssh (fdf845a6) +* Fail the build if any lint issues (95ae34b1) +* add rename endpoint for firewall (588340b6) +* Updated the lib to use json and not form for all request (09617776) +* Add body to client error responses (a8ebeb95) +* Merge pull request #25 from alejandrojnm/hostfix/add_function_firewall (5ccea39d) +* Merge pull request #24 from alejandrojnm/hotfix/urgent_fix (7b07ee24) +* Change GetDNSRecord to find by ID not name (4f53b021) +* Remove DNSDomainID from DNSRecordConfig (edfa5583) +* Merge pull request #23 from alejandrojnm/feature/update_dns_record (d8c0e967) +* Fix instance test (5ae22ab1) +* Fix signature of SetInstanceTags (c470a7d5) +* Add GetInstanceConsoleURL method (1032a3be) +* Check links in go documentation (efbe8dbc) +* Change link to docs (83fdce86) +* Update badges (7cbcb38c) +* Fix tests after some minor refactoring (f149ccdc) +* Change GB to Gigabytes (f0fa3a15) +* Fix lint issues (62a82aec) +* Change workflow to custom action (143ac314) +* Move lint to its own action (541c21a6) +* Use user-contributed lint action (4e265ae4) +* Install golint before running it (0aa650f4) +* Add lint to tests and Go 1.14 (0bbdcd0c) +* Add changelog (f2cd42c5) +* Add Find* methods to all areas (d9686526) +* Fix some linting issues with Kubernetes (8dafd66a) +* Add LICENSE (dd906190) +* Return an error if creating a client with an empty API key (ee8dab3b) +* Remove progress table from README as its now module complete (1bfa0af0) +* Add minor tweaks to Webhooks (0471e7d2) +* Merge pull request #21 from alejandrojnm/feature/webhook (2d7d45db) +* Change minor naming issues in snapshot module (fc4a75b7) +* Merge pull request #20 from alejandrojnm/feature/api_snapshots (4b2ae45c) +* Fix a couple of comments (81e4652e) +* Add charge endpoint (457dfa5d) +* Change awkward names of units in field names (f20cab75) +* Add instance size endpoints (971a4a47) +* Add quota endpoint (7b54da2c) +* Add region endpoint (66b590cc) +* Change List functions to be plural and prefixing DNS (e3433bb0) +* Update display of README progress (43d6bc08) +* Merge pull request #19 from alejandrojnm/hotfix/loadbalance_readme (eacb35ca) +* Merge pull request #18 from alejandrojnm/master (41c7acb3) +* Merge pull request #16 from alejandrojnm/add-kubernetes-apis (730f2dd4) +* Add minor changes to Load Balancer methods (b8d5ddb8) +* Merge pull request #14 from alejandrojnm/feature/loadbalancer (e69c9746) +* Merge pull request #11 from rberrelleza/get-record (5590adda) +* Merge pull request #12 from rberrelleza/add-owners (338c4dfd) +* Add client.LastJSONResponse for the CLI to use (5378d41d) +* Merge pull request #7 from rberrelleza/fix-casing-forms (b3aba767) +* Merge pull request #9 from alejandrojnm/hostfix-network (f66cbcbb) +* Change string to map of strings (ab4ebaa8) +* Cleanup some minor issues (a69bef1d) +* Merge pull request #3 from rberrelleza/add-dns-apis (34870810) +* Merge pull request #4 from alejandrojnm/add-firewall-apis (554cc2b3) +* Merge pull request #5 from alejandrojnm/add-volumes-apis (9e8048fc) +* Merge pull request #6 from alejandrojnm/add-network-options (bbb04c3d) +* Change order of automated tests (57fae691) +* Ensure gofmt code compliance (e6d1cdcb) +* Remove panic (5d9bf4a7) +* Remove string interpolation, more go idiomatic this way (50fd2f10) +* Move JSON parsing for SimpleResponse to a helper method (8e8caf0a) +* Add CONTRIBUTING guide (a6d63538) +* Add status bage to README (1eabf12e) +* Add Go module support (2e043e15) +* Add GitHub action to test golang (e9c40745) +* Fix tests (08e7668c) +* Add Instance functions (264d4c87) +* Add Instance methods,first version (cd217b8b) +* Add tests for instance (31634d0f) +* Add Instance listing/fetching/creating (dc16cca8) +* - Add more options to the network options (5e258256) +* - Add New network options (6fbeb8a8) +* Add option to create a new network (e4a70af4) +* Fix error in volumes.go in the VolumesConfig (3db7ca46) +* Add volumes option to the civogo (52dca353) +* - Fix a error in firewall.go (5aecfa1c) +* - Fix some error in firewall.go (070605de) +* Add firewall option to the civogo (572557b6) +* fix test (ebde1c12) +* handle http errors (9c0f0967) +* add tests (37733dc1) +* Add functions to manipulate records (5f324bc9) +* - Fix a error network, now you can rename a network (79674176) +* Merge pull request #1 from civo/master (cbeb0cd4) +* change config for `form` (1ea969af) +* Add a default owner for the repo (fb92d21f) +* use Create instead of New (3055381e) +* New and delete Domain (5c6fe06b) +* add a result const (9c28c61c) +* fix GetDomain test (9df135c1) +* get and list records (5bf08246) +* update and new domain (acb6cd6a) +* - Update name in loadbalancer_test.go (4048f9c1) +* - Update the loadbalancer_test.go (fea3cf5b) +* - Fix some error in types in loadbalancer.go and loadbalancer_test.go (84b247e5) +* - Now can add, delete update and list the load balance (e2e8858b) +* - Initial files (4002274e) +* - Fix all recommendation from Andy, change NumTargetNodes from string to int, and in UpdateKubernetesClusters change map[string]string in favor of map[string]interface{} (2fdaa159) +* - Fix all recommendation from Andy (fa672090) +* - Final change in the kubernetes interface (7e0221f0) +* - Some change in kubernetes (9bb817f9) +* - First commit for kubernetes (05711724) +* - Update README.md with a list of all modules (58429347) +* Merge pull request #3 from civo/master (5a3cfcd6) +* Merge pull request #2 from civo/master (311f778e) +* - Update README.md, Fix error in loadbalancer.go (74877fa8) +* - Done the snapshot module (d2ede4b0) +* - First part of the snapshot api (eaf506c7) +* Merge branch 'master' into feature/api_snapshots (2408aaa3) +* Merge pull request #4 from civo/master (6d43cd65) +* Merge pull request #5 from civo/master (6e2137e8) +* - Add webhook module (467bd9a5) +* Merge pull request #6 from civo/master (55ee0710) +* - Fix some bug in dns.go dns_test.go (2edd5469) +* - Add option to update dns record (8ff8a494) +* Merge pull request #7 from civo/master (08c1c198) +* fix(loadbalancer): Fix data in test (29eab040) +* fix(loadbalancer): Fix struct in loadbalancer (450e0188) +* fix(firewall): Fix error in firewall test (f8658cf3) +* fix(firewall): Fix struct in firewall (6b4ca011) +* - Fix some bug in firewall.go and firewall_test.go (7f13e1c8) +* Merge pull request #9 from civo/master (27235987) +* Merge pull request #8 from civo/master (d118d875) +* fix(firewall): Change the id passed to the function (aff66676) +* fix(firewall): Fix name in the firewall (c480c528) +* fix(firewall): Fix name in the firewall (874f9ef6) +* feat(firewall): Add new option to search rule (58a86032) +* Merge pull request #11 from civo/master (53dc6a1e) +* Merge pull request #10 from alejandrojnm/hotfix/urgent_fix (99662c54) +* updated README.md (#51) (fce968e2) + +0.2.34 +============= +2021-03-16 + +* Fix more cases were we were updating a by-value array (a2afa167) + +0.2.33 +============= +2021-03-16 + +* Finding a volume by ID should work in the fake client (1f6ff05c) + +0.2.32 +============= +2021-03-11 + +* Update changelog (863f3d0d) +* Add simple fake tests to ensure it conforms to the interface and the pattern works (06e89dda) + +0.2.31 +============= +2021-03-11 + +* Fix error in NewFirewall definition for FakeClient (a5721041) + +0.2.30 +============= +2021-03-10 + +* Add fake client (#53) (318bdea6) +* Updated the changelog (ed132dec) +* Added new fields to kubernetes struct (43e5e9a8) +* Updated the changelog (699e5392) +* Merge branch 'master' of https://github.com/civo/civogo (1e9c4c70) +* Fixed error in the struct for InstalledApplication in kubernetes (ff8a577c) +* Updated the changelog (0cf2bd6e) +* Added network to the firewall struct (f173564c) +* Added GetDefaultRegion to the region (e2bd46f7) +* Updated the changelog (9c6173fb) +* Added default field to the region (79f15aa1) +* Updated the changelog (b45dffe1) +* Feature/add region (#50) (19e61587) +* Clusternames should be considered case insensitive (#49) (dfcbfaec) +* Update Change log (c237384c) +* Fixed check in handler for errors (c5ae6fb3) +* Update Change log (5564e235) +* Fixed lint check in the actions (346fe0ff) +* Fixed some bugs in the error handler (a0333a83) +* Update Change log (ce2a8a20) +* Added option to use proxy if is present in the system (3c3da053) +* Update Change log (d6c63e63) +* Fixed the recycle option in Kubernetes (405567d0) +* Update Change log (4b69a797) +* Updated all find function to all command (8ac5d69e) +* Update Change log (dd52c163) +* Fixed an error in the struct of the creation of intances (e7cd9f3b) +* Update Change log (ede2e4c1) +* Added two more error to the error handler (c1e74133) +* Fixed error in the DNS test (b0996760) +* Update Change log (d6191cc6) +* Added new record type to DNS (6e3d7b1e) +* Update Change log (fc9cd8ff) +* improved error handling in the library (7a0e384f) +* Update test.yml (0aa9f6bf) +* Update test.yml (73500add) +* Update test.yml (f3d121d8) +* Update test.yml (2df11af6) +* Update Change log (c024bec2) +* Updated all test (d8b73535) +* Update Change log (63a3ae56) +* Added constant errors to the lib (4095fdfc) +* Update the chnage log (b11ac276) +* Added FindTemplate fucntion to the template module (59a86819) +* Update the change log (4cc1b488) +* Revert "Update the change log" (21b44c0e) +* Update the change log (8cfac7bc) +* Add constant errors (#41) (c983d56e) +* Added CPU, RAM and SSD fields to Instance struct (f6135e29) +* Added new feature (b74d3224) +* Fixed error in the cluster upgrade cmd (c49389ab) +* Add the new UpgradeAvailableTo field to KubernetesCluster (9c392181) +* Change application struct in the kubernetes module (#39) (59b86eba) +* Change application struct in kubernetes (c1839b96) +* added new way to search in network (923b509b) +* feat(kubernetes): new added option at the moment scaling down the cluster (#35) (1906a5fc) +* Add pagination for Kubernetes clusters (#34) (6ce671a8) + +0.2.29 +============= +2021-02-28 + +* Updated the changelog (ed132dec) +* Added new fields to kubernetes struct (43e5e9a8) + +0.2.28 +============= +2021-02-26 + +* Updated the changelog (699e5392) +* Merge branch 'master' of https://github.com/civo/civogo (1e9c4c70) +* Fixed error in the struct for InstalledApplication in kubernetes (ff8a577c) +* Updated the changelog (0cf2bd6e) + +0.2.27 +============= +2021-02-10 + +* Added network to the firewall struct (f173564c) + +0.2.26 +============= +2021-02-09 + +* Added GetDefaultRegion to the region (e2bd46f7) +* Updated the changelog (9c6173fb) + +0.2.25 +============= +2021-02-09 + +* Added default field to the region (79f15aa1) +* Updated the changelog (b45dffe1) + +0.2.24 +============= +2021-02-08 + +* Feature/add region (#50) (19e61587) +* Clusternames should be considered case insensitive (#49) (dfcbfaec) + +0.2.23 +============= +2020-12-04 + +* Update Change log (c237384c) +* Fixed check in handler for errors (c5ae6fb3) + +0.2.22 +============= +2020-11-18 + +* Update Change log (5564e235) +* Fixed lint check in the actions (346fe0ff) +* Fixed some bugs in the error handler (a0333a83) + +0.2.21 +============= +2020-10-31 + +* Update Change log (ce2a8a20) +* Added option to use proxy if is present in the system (3c3da053) + +0.2.20 +============= +2020-10-31 + +* Update Change log (d6c63e63) +* Fixed the recycle option in Kubernetes (405567d0) +* Update Change log (4b69a797) +* Updated all find function to all command (8ac5d69e) +* Update Change log (dd52c163) +* Fixed an error in the struct of the creation of intances (e7cd9f3b) +* Update Change log (ede2e4c1) +* Added two more error to the error handler (c1e74133) +* Fixed error in the DNS test (b0996760) +* Update Change log (d6191cc6) +* Added new record type to DNS (6e3d7b1e) +* Update Change log (fc9cd8ff) +* improved error handling in the library (7a0e384f) +* Update test.yml (0aa9f6bf) +* Update test.yml (73500add) +* Update test.yml (f3d121d8) +* Update test.yml (2df11af6) +* Update Change log (c024bec2) +* Updated all test (d8b73535) +* Update Change log (63a3ae56) +* Added constant errors to the lib (4095fdfc) +* Update the chnage log (b11ac276) +* Added FindTemplate fucntion to the template module (59a86819) +* Update the change log (4cc1b488) +* Revert "Update the change log" (21b44c0e) +* Update the change log (8cfac7bc) +* Add constant errors (#41) (c983d56e) +* Added CPU, RAM and SSD fields to Instance struct (f6135e29) +* Added new feature (b74d3224) +* Fixed error in the cluster upgrade cmd (c49389ab) +* Add the new UpgradeAvailableTo field to KubernetesCluster (9c392181) +* Change application struct in the kubernetes module (#39) (59b86eba) +* Change application struct in kubernetes (c1839b96) +* added new way to search in network (923b509b) +* feat(kubernetes): new added option at the moment scaling down the cluster (#35) (1906a5fc) +* Add pagination for Kubernetes clusters (#34) (6ce671a8) +* (hotfix) change snapshot config (77d29967) + +0.2.19 +============= +2020-09-25 + +* Update Change log (dd52c163) +* Fixed an error in the struct of the creation of intances (e7cd9f3b) + +0.2.18 +============= +2020-09-23 + +* Update Change log (ede2e4c1) +* Added two more error to the error handler (c1e74133) +* Fixed error in the DNS test (b0996760) + +0.2.17 +============= +2020-09-13 + +* Update Change log (d6191cc6) +* Added new record type to DNS (6e3d7b1e) + +0.2.16 +============= +2020-08-24 + +* Update Change log (fc9cd8ff) +* improved error handling in the library (7a0e384f) + +0.2.15 +============= +2020-08-17 + +* Update test.yml (0aa9f6bf) +* Update test.yml (73500add) +* Update test.yml (f3d121d8) +* Update test.yml (2df11af6) +* Update Change log (c024bec2) +* Updated all test (d8b73535) +* Update Change log (63a3ae56) +* Added constant errors to the lib (4095fdfc) + +0.2.14 +============= +2020-08-11 + +* Update the chnage log (b11ac276) +* Added FindTemplate fucntion to the template module (59a86819) +* Update the change log (4cc1b488) +* Revert "Update the change log" (21b44c0e) +* Update the change log (8cfac7bc) + +0.2.13 +============= +2020-07-31 + +* Add constant errors (#41) (c983d56e) + +0.2.12 +============= +2020-07-07 + +* Added CPU, RAM and SSD fields to Instance struct (f6135e29) + +0.2.11 +============= +2020-07-06 + +* Added new feature (b74d3224) + +0.2.10 +============= +2020-06-24 + +* Fixed error in the cluster upgrade cmd (c49389ab) +* Add the new UpgradeAvailableTo field to KubernetesCluster (9c392181) +* Change application struct in the kubernetes module (#39) (59b86eba) +* Change application struct in kubernetes (c1839b96) +* added new way to search in network (923b509b) +* feat(kubernetes): new added option at the moment scaling down the cluster (#35) (1906a5fc) +* Add pagination for Kubernetes clusters (#34) (6ce671a8) +* (hotfix) change snapshot config (77d29967) +* Change PublicIPRequired to a string to support IP moving (d0635c7e) + +0.2.9 +============= +2020-06-19 + +* Add the new UpgradeAvailableTo field to KubernetesCluster (9c392181) + +0.2.8 +============= +2020-05-12 + +* Change application struct in the kubernetes module (#39) (59b86eba) + +0.2.7 +============= +2020-05-11 + +* Change application struct in kubernetes (c1839b96) + +0.2.6 +============= +2020-05-06 + +* added new way to search in network (923b509b) + +0.2.5 +============= +2020-04-15 + +* feat(kubernetes): new added option at the moment scaling down the cluster (#35) (1906a5fc) + +0.2.4 +============= +2020-04-07 + +* Add pagination for Kubernetes clusters (#34) (6ce671a8) +* (hotfix) change snapshot config (77d29967) +* Change PublicIPRequired to a string to support IP moving (d0635c7e) +* add template endpoints (c73d51fa) +* Minor tweaks to SSH key struct (d20f49e0) +* update the ssh key file (f5eab5e2) +* Add new option to ssh (fdf845a6) +* Fail the build if any lint issues (95ae34b1) +* add rename endpoint for firewall (588340b6) +* Updated the lib to use json and not form for all request (09617776) +* Add body to client error responses (a8ebeb95) +* Merge pull request #25 from alejandrojnm/hostfix/add_function_firewall (5ccea39d) +* Merge pull request #24 from alejandrojnm/hotfix/urgent_fix (7b07ee24) +* Change GetDNSRecord to find by ID not name (4f53b021) +* Remove DNSDomainID from DNSRecordConfig (edfa5583) +* Merge pull request #23 from alejandrojnm/feature/update_dns_record (d8c0e967) +* Fix instance test (5ae22ab1) +* Fix signature of SetInstanceTags (c470a7d5) +* Add GetInstanceConsoleURL method (1032a3be) +* Check links in go documentation (efbe8dbc) +* Change link to docs (83fdce86) +* Update badges (7cbcb38c) +* Fix tests after some minor refactoring (f149ccdc) +* Change GB to Gigabytes (f0fa3a15) +* Fix lint issues (62a82aec) +* Change workflow to custom action (143ac314) +* Move lint to its own action (541c21a6) +* Use user-contributed lint action (4e265ae4) +* Install golint before running it (0aa650f4) +* Add lint to tests and Go 1.14 (0bbdcd0c) +* Add changelog (f2cd42c5) +* Add Find* methods to all areas (d9686526) +* Fix some linting issues with Kubernetes (8dafd66a) +* Add LICENSE (dd906190) +* Return an error if creating a client with an empty API key (ee8dab3b) +* Remove progress table from README as its now module complete (1bfa0af0) +* Add minor tweaks to Webhooks (0471e7d2) +* Merge pull request #21 from alejandrojnm/feature/webhook (2d7d45db) +* Change minor naming issues in snapshot module (fc4a75b7) +* Merge pull request #20 from alejandrojnm/feature/api_snapshots (4b2ae45c) +* Fix a couple of comments (81e4652e) +* Add charge endpoint (457dfa5d) +* Change awkward names of units in field names (f20cab75) +* Add instance size endpoints (971a4a47) +* Add quota endpoint (7b54da2c) +* Add region endpoint (66b590cc) +* Change List functions to be plural and prefixing DNS (e3433bb0) +* Update display of README progress (43d6bc08) +* Merge pull request #19 from alejandrojnm/hotfix/loadbalance_readme (eacb35ca) +* Merge pull request #18 from alejandrojnm/master (41c7acb3) +* Merge pull request #16 from alejandrojnm/add-kubernetes-apis (730f2dd4) +* Add minor changes to Load Balancer methods (b8d5ddb8) +* Merge pull request #14 from alejandrojnm/feature/loadbalancer (e69c9746) +* Merge pull request #11 from rberrelleza/get-record (5590adda) +* Merge pull request #12 from rberrelleza/add-owners (338c4dfd) +* Add client.LastJSONResponse for the CLI to use (5378d41d) +* Merge pull request #7 from rberrelleza/fix-casing-forms (b3aba767) +* Merge pull request #9 from alejandrojnm/hostfix-network (f66cbcbb) +* Change string to map of strings (ab4ebaa8) +* Cleanup some minor issues (a69bef1d) +* Merge pull request #3 from rberrelleza/add-dns-apis (34870810) +* Merge pull request #4 from alejandrojnm/add-firewall-apis (554cc2b3) +* Merge pull request #5 from alejandrojnm/add-volumes-apis (9e8048fc) +* Merge pull request #6 from alejandrojnm/add-network-options (bbb04c3d) +* Change order of automated tests (57fae691) +* Ensure gofmt code compliance (e6d1cdcb) +* Remove panic (5d9bf4a7) +* Remove string interpolation, more go idiomatic this way (50fd2f10) +* Move JSON parsing for SimpleResponse to a helper method (8e8caf0a) +* Add CONTRIBUTING guide (a6d63538) +* Add status bage to README (1eabf12e) +* Add Go module support (2e043e15) +* Add GitHub action to test golang (e9c40745) +* Fix tests (08e7668c) +* Add Instance functions (264d4c87) +* Add Instance methods,first version (cd217b8b) +* Add tests for instance (31634d0f) +* Add Instance listing/fetching/creating (dc16cca8) +* - Add more options to the network options (5e258256) +* - Add New network options (6fbeb8a8) +* Add option to create a new network (e4a70af4) +* Fix error in volumes.go in the VolumesConfig (3db7ca46) +* Add volumes option to the civogo (52dca353) +* - Fix a error in firewall.go (5aecfa1c) +* - Fix some error in firewall.go (070605de) +* Add firewall option to the civogo (572557b6) +* fix test (ebde1c12) +* handle http errors (9c0f0967) +* add tests (37733dc1) +* Add functions to manipulate records (5f324bc9) +* - Fix a error network, now you can rename a network (79674176) +* Merge pull request #1 from civo/master (cbeb0cd4) +* change config for `form` (1ea969af) +* Add a default owner for the repo (fb92d21f) +* use Create instead of New (3055381e) +* New and delete Domain (5c6fe06b) +* add a result const (9c28c61c) +* fix GetDomain test (9df135c1) +* get and list records (5bf08246) +* update and new domain (acb6cd6a) +* - Update name in loadbalancer_test.go (4048f9c1) +* - Update the loadbalancer_test.go (fea3cf5b) +* - Fix some error in types in loadbalancer.go and loadbalancer_test.go (84b247e5) +* - Now can add, delete update and list the load balance (e2e8858b) +* - Initial files (4002274e) +* - Fix all recommendation from Andy, change NumTargetNodes from string to int, and in UpdateKubernetesClusters change map[string]string in favor of map[string]interface{} (2fdaa159) +* - Fix all recommendation from Andy (fa672090) +* - Final change in the kubernetes interface (7e0221f0) +* - Some change in kubernetes (9bb817f9) +* - First commit for kubernetes (05711724) +* - Update README.md with a list of all modules (58429347) +* Merge pull request #3 from civo/master (5a3cfcd6) +* Merge pull request #2 from civo/master (311f778e) +* - Update README.md, Fix error in loadbalancer.go (74877fa8) +* - Done the snapshot module (d2ede4b0) +* - First part of the snapshot api (eaf506c7) +* Merge branch 'master' into feature/api_snapshots (2408aaa3) +* Merge pull request #4 from civo/master (6d43cd65) +* Merge pull request #5 from civo/master (6e2137e8) +* - Add webhook module (467bd9a5) +* Merge pull request #6 from civo/master (55ee0710) +* - Fix some bug in dns.go dns_test.go (2edd5469) +* - Add option to update dns record (8ff8a494) +* Merge pull request #7 from civo/master (08c1c198) +* fix(loadbalancer): Fix data in test (29eab040) +* fix(loadbalancer): Fix struct in loadbalancer (450e0188) +* fix(firewall): Fix error in firewall test (f8658cf3) +* fix(firewall): Fix struct in firewall (6b4ca011) +* - Fix some bug in firewall.go and firewall_test.go (7f13e1c8) +* Merge pull request #9 from civo/master (27235987) +* Merge pull request #8 from civo/master (d118d875) +* fix(firewall): Change the id passed to the function (aff66676) +* fix(firewall): Fix name in the firewall (c480c528) +* fix(firewall): Fix name in the firewall (874f9ef6) +* feat(firewall): Add new option to search rule (58a86032) +* Merge pull request #11 from civo/master (53dc6a1e) +* Merge pull request #10 from alejandrojnm/hotfix/urgent_fix (99662c54) + +0.2.3 +============= +2020-04-03 + +* (hotfix) change snapshot config (77d29967) +* Change PublicIPRequired to a string to support IP moving (d0635c7e) +* add template endpoints (c73d51fa) +* Minor tweaks to SSH key struct (d20f49e0) +* update the ssh key file (f5eab5e2) +* Add new option to ssh (fdf845a6) +* Fail the build if any lint issues (95ae34b1) +* add rename endpoint for firewall (588340b6) +* Updated the lib to use json and not form for all request (09617776) +* Add body to client error responses (a8ebeb95) +* Merge pull request #25 from alejandrojnm/hostfix/add_function_firewall (5ccea39d) +* Merge pull request #24 from alejandrojnm/hotfix/urgent_fix (7b07ee24) +* Change GetDNSRecord to find by ID not name (4f53b021) +* Remove DNSDomainID from DNSRecordConfig (edfa5583) +* Merge pull request #23 from alejandrojnm/feature/update_dns_record (d8c0e967) +* Fix instance test (5ae22ab1) +* Fix signature of SetInstanceTags (c470a7d5) +* Add GetInstanceConsoleURL method (1032a3be) +* Check links in go documentation (efbe8dbc) +* Change link to docs (83fdce86) +* Update badges (7cbcb38c) +* Fix tests after some minor refactoring (f149ccdc) +* Change GB to Gigabytes (f0fa3a15) +* Fix lint issues (62a82aec) +* Change workflow to custom action (143ac314) +* Move lint to its own action (541c21a6) +* Use user-contributed lint action (4e265ae4) +* Install golint before running it (0aa650f4) +* Add lint to tests and Go 1.14 (0bbdcd0c) +* Add changelog (f2cd42c5) +* Add Find* methods to all areas (d9686526) +* Fix some linting issues with Kubernetes (8dafd66a) +* Add LICENSE (dd906190) +* Return an error if creating a client with an empty API key (ee8dab3b) +* Remove progress table from README as its now module complete (1bfa0af0) +* Add minor tweaks to Webhooks (0471e7d2) +* Merge pull request #21 from alejandrojnm/feature/webhook (2d7d45db) +* Change minor naming issues in snapshot module (fc4a75b7) +* Merge pull request #20 from alejandrojnm/feature/api_snapshots (4b2ae45c) +* Fix a couple of comments (81e4652e) +* Add charge endpoint (457dfa5d) +* Change awkward names of units in field names (f20cab75) +* Add instance size endpoints (971a4a47) +* Add quota endpoint (7b54da2c) +* Add region endpoint (66b590cc) +* Change List functions to be plural and prefixing DNS (e3433bb0) +* Update display of README progress (43d6bc08) +* Merge pull request #19 from alejandrojnm/hotfix/loadbalance_readme (eacb35ca) +* Merge pull request #18 from alejandrojnm/master (41c7acb3) +* Merge pull request #16 from alejandrojnm/add-kubernetes-apis (730f2dd4) +* Add minor changes to Load Balancer methods (b8d5ddb8) +* Merge pull request #14 from alejandrojnm/feature/loadbalancer (e69c9746) +* Merge pull request #11 from rberrelleza/get-record (5590adda) +* Merge pull request #12 from rberrelleza/add-owners (338c4dfd) +* Add client.LastJSONResponse for the CLI to use (5378d41d) +* Merge pull request #7 from rberrelleza/fix-casing-forms (b3aba767) +* Merge pull request #9 from alejandrojnm/hostfix-network (f66cbcbb) +* Change string to map of strings (ab4ebaa8) +* Cleanup some minor issues (a69bef1d) +* Merge pull request #3 from rberrelleza/add-dns-apis (34870810) +* Merge pull request #4 from alejandrojnm/add-firewall-apis (554cc2b3) +* Merge pull request #5 from alejandrojnm/add-volumes-apis (9e8048fc) +* Merge pull request #6 from alejandrojnm/add-network-options (bbb04c3d) +* Change order of automated tests (57fae691) +* Ensure gofmt code compliance (e6d1cdcb) +* Remove panic (5d9bf4a7) +* Remove string interpolation, more go idiomatic this way (50fd2f10) +* Move JSON parsing for SimpleResponse to a helper method (8e8caf0a) +* Add CONTRIBUTING guide (a6d63538) +* Add status bage to README (1eabf12e) +* Add Go module support (2e043e15) +* Add GitHub action to test golang (e9c40745) +* Fix tests (08e7668c) +* Add Instance functions (264d4c87) +* Add Instance methods,first version (cd217b8b) +* Add tests for instance (31634d0f) +* Add Instance listing/fetching/creating (dc16cca8) +* - Add more options to the network options (5e258256) +* - Add New network options (6fbeb8a8) +* Add option to create a new network (e4a70af4) +* Fix error in volumes.go in the VolumesConfig (3db7ca46) +* Add volumes option to the civogo (52dca353) +* - Fix a error in firewall.go (5aecfa1c) +* - Fix some error in firewall.go (070605de) +* Add firewall option to the civogo (572557b6) +* fix test (ebde1c12) +* handle http errors (9c0f0967) +* add tests (37733dc1) +* Add functions to manipulate records (5f324bc9) +* - Fix a error network, now you can rename a network (79674176) +* Merge pull request #1 from civo/master (cbeb0cd4) +* change config for `form` (1ea969af) +* Add a default owner for the repo (fb92d21f) +* use Create instead of New (3055381e) +* New and delete Domain (5c6fe06b) +* add a result const (9c28c61c) +* fix GetDomain test (9df135c1) +* get and list records (5bf08246) +* update and new domain (acb6cd6a) +* - Update name in loadbalancer_test.go (4048f9c1) +* - Update the loadbalancer_test.go (fea3cf5b) +* - Fix some error in types in loadbalancer.go and loadbalancer_test.go (84b247e5) +* - Now can add, delete update and list the load balance (e2e8858b) +* - Initial files (4002274e) +* - Fix all recommendation from Andy, change NumTargetNodes from string to int, and in UpdateKubernetesClusters change map[string]string in favor of map[string]interface{} (2fdaa159) +* - Fix all recommendation from Andy (fa672090) +* - Final change in the kubernetes interface (7e0221f0) +* - Some change in kubernetes (9bb817f9) +* - First commit for kubernetes (05711724) +* - Update README.md with a list of all modules (58429347) +* Merge pull request #3 from civo/master (5a3cfcd6) +* Merge pull request #2 from civo/master (311f778e) +* - Update README.md, Fix error in loadbalancer.go (74877fa8) +* - Done the snapshot module (d2ede4b0) +* - First part of the snapshot api (eaf506c7) +* Merge branch 'master' into feature/api_snapshots (2408aaa3) +* Merge pull request #4 from civo/master (6d43cd65) +* Merge pull request #5 from civo/master (6e2137e8) +* - Add webhook module (467bd9a5) +* Merge pull request #6 from civo/master (55ee0710) +* - Fix some bug in dns.go dns_test.go (2edd5469) +* - Add option to update dns record (8ff8a494) +* Merge pull request #7 from civo/master (08c1c198) +* fix(loadbalancer): Fix data in test (29eab040) +* fix(loadbalancer): Fix struct in loadbalancer (450e0188) +* fix(firewall): Fix error in firewall test (f8658cf3) +* fix(firewall): Fix struct in firewall (6b4ca011) +* - Fix some bug in firewall.go and firewall_test.go (7f13e1c8) +* Merge pull request #9 from civo/master (27235987) +* Merge pull request #8 from civo/master (d118d875) +* fix(firewall): Change the id passed to the function (aff66676) +* fix(firewall): Fix name in the firewall (c480c528) +* fix(firewall): Fix name in the firewall (874f9ef6) +* feat(firewall): Add new option to search rule (58a86032) +* Merge pull request #11 from civo/master (53dc6a1e) +* Merge pull request #10 from alejandrojnm/hotfix/urgent_fix (99662c54) + +0.2.2 +============= +2020-03-27 + +* Change PublicIPRequired to a string to support IP moving (d0635c7e) +* add template endpoints (c73d51fa) +* Minor tweaks to SSH key struct (d20f49e0) +* update the ssh key file (f5eab5e2) +* Add new option to ssh (fdf845a6) +* Fail the build if any lint issues (95ae34b1) +* add rename endpoint for firewall (588340b6) +* Updated the lib to use json and not form for all request (09617776) +* Add body to client error responses (a8ebeb95) +* Merge pull request #25 from alejandrojnm/hostfix/add_function_firewall (5ccea39d) +* Merge pull request #24 from alejandrojnm/hotfix/urgent_fix (7b07ee24) +* Change GetDNSRecord to find by ID not name (4f53b021) +* Remove DNSDomainID from DNSRecordConfig (edfa5583) +* Merge pull request #23 from alejandrojnm/feature/update_dns_record (d8c0e967) +* Fix instance test (5ae22ab1) +* Fix signature of SetInstanceTags (c470a7d5) +* Add GetInstanceConsoleURL method (1032a3be) +* Check links in go documentation (efbe8dbc) +* Change link to docs (83fdce86) +* Update badges (7cbcb38c) +* Fix tests after some minor refactoring (f149ccdc) +* Change GB to Gigabytes (f0fa3a15) +* Fix lint issues (62a82aec) +* Change workflow to custom action (143ac314) +* Move lint to its own action (541c21a6) +* Use user-contributed lint action (4e265ae4) +* Install golint before running it (0aa650f4) +* Add lint to tests and Go 1.14 (0bbdcd0c) +* Add changelog (f2cd42c5) +* Add Find* methods to all areas (d9686526) +* Fix some linting issues with Kubernetes (8dafd66a) +* Add LICENSE (dd906190) +* Return an error if creating a client with an empty API key (ee8dab3b) +* Remove progress table from README as its now module complete (1bfa0af0) +* Add minor tweaks to Webhooks (0471e7d2) +* Merge pull request #21 from alejandrojnm/feature/webhook (2d7d45db) +* Change minor naming issues in snapshot module (fc4a75b7) +* Merge pull request #20 from alejandrojnm/feature/api_snapshots (4b2ae45c) +* Fix a couple of comments (81e4652e) +* Add charge endpoint (457dfa5d) +* Change awkward names of units in field names (f20cab75) +* Add instance size endpoints (971a4a47) +* Add quota endpoint (7b54da2c) +* Add region endpoint (66b590cc) +* Change List functions to be plural and prefixing DNS (e3433bb0) +* Update display of README progress (43d6bc08) +* Merge pull request #19 from alejandrojnm/hotfix/loadbalance_readme (eacb35ca) +* Merge pull request #18 from alejandrojnm/master (41c7acb3) +* Merge pull request #16 from alejandrojnm/add-kubernetes-apis (730f2dd4) +* Add minor changes to Load Balancer methods (b8d5ddb8) +* Merge pull request #14 from alejandrojnm/feature/loadbalancer (e69c9746) +* Merge pull request #11 from rberrelleza/get-record (5590adda) +* Merge pull request #12 from rberrelleza/add-owners (338c4dfd) +* Add client.LastJSONResponse for the CLI to use (5378d41d) +* Merge pull request #7 from rberrelleza/fix-casing-forms (b3aba767) +* Merge pull request #9 from alejandrojnm/hostfix-network (f66cbcbb) +* Change string to map of strings (ab4ebaa8) +* Cleanup some minor issues (a69bef1d) +* Merge pull request #3 from rberrelleza/add-dns-apis (34870810) +* Merge pull request #4 from alejandrojnm/add-firewall-apis (554cc2b3) +* Merge pull request #5 from alejandrojnm/add-volumes-apis (9e8048fc) +* Merge pull request #6 from alejandrojnm/add-network-options (bbb04c3d) +* Change order of automated tests (57fae691) +* Ensure gofmt code compliance (e6d1cdcb) +* Remove panic (5d9bf4a7) +* Remove string interpolation, more go idiomatic this way (50fd2f10) +* Move JSON parsing for SimpleResponse to a helper method (8e8caf0a) +* Add CONTRIBUTING guide (a6d63538) +* Add status bage to README (1eabf12e) +* Add Go module support (2e043e15) +* Add GitHub action to test golang (e9c40745) +* Fix tests (08e7668c) +* Add Instance functions (264d4c87) +* Add Instance methods,first version (cd217b8b) +* Add tests for instance (31634d0f) +* Add Instance listing/fetching/creating (dc16cca8) +* - Add more options to the network options (5e258256) +* - Add New network options (6fbeb8a8) +* Add option to create a new network (e4a70af4) +* Fix error in volumes.go in the VolumesConfig (3db7ca46) +* Add volumes option to the civogo (52dca353) +* - Fix a error in firewall.go (5aecfa1c) +* - Fix some error in firewall.go (070605de) +* Add firewall option to the civogo (572557b6) +* fix test (ebde1c12) +* handle http errors (9c0f0967) +* add tests (37733dc1) +* Add functions to manipulate records (5f324bc9) +* - Fix a error network, now you can rename a network (79674176) +* Merge pull request #1 from civo/master (cbeb0cd4) +* change config for `form` (1ea969af) +* Add a default owner for the repo (fb92d21f) +* use Create instead of New (3055381e) +* New and delete Domain (5c6fe06b) +* add a result const (9c28c61c) +* fix GetDomain test (9df135c1) +* get and list records (5bf08246) +* update and new domain (acb6cd6a) +* - Update name in loadbalancer_test.go (4048f9c1) +* - Update the loadbalancer_test.go (fea3cf5b) +* - Fix some error in types in loadbalancer.go and loadbalancer_test.go (84b247e5) +* - Now can add, delete update and list the load balance (e2e8858b) +* - Initial files (4002274e) +* - Fix all recommendation from Andy, change NumTargetNodes from string to int, and in UpdateKubernetesClusters change map[string]string in favor of map[string]interface{} (2fdaa159) +* - Fix all recommendation from Andy (fa672090) +* - Final change in the kubernetes interface (7e0221f0) +* - Some change in kubernetes (9bb817f9) +* - First commit for kubernetes (05711724) +* - Update README.md with a list of all modules (58429347) +* Merge pull request #3 from civo/master (5a3cfcd6) +* Merge pull request #2 from civo/master (311f778e) +* - Update README.md, Fix error in loadbalancer.go (74877fa8) +* - Done the snapshot module (d2ede4b0) +* - First part of the snapshot api (eaf506c7) +* Merge branch 'master' into feature/api_snapshots (2408aaa3) +* Merge pull request #4 from civo/master (6d43cd65) +* Merge pull request #5 from civo/master (6e2137e8) +* - Add webhook module (467bd9a5) +* Merge pull request #6 from civo/master (55ee0710) +* - Fix some bug in dns.go dns_test.go (2edd5469) +* - Add option to update dns record (8ff8a494) +* Merge pull request #7 from civo/master (08c1c198) +* fix(loadbalancer): Fix data in test (29eab040) +* fix(loadbalancer): Fix struct in loadbalancer (450e0188) +* fix(firewall): Fix error in firewall test (f8658cf3) +* fix(firewall): Fix struct in firewall (6b4ca011) +* - Fix some bug in firewall.go and firewall_test.go (7f13e1c8) +* Merge pull request #9 from civo/master (27235987) +* Merge pull request #8 from civo/master (d118d875) +* fix(firewall): Change the id passed to the function (aff66676) +* fix(firewall): Fix name in the firewall (c480c528) +* fix(firewall): Fix name in the firewall (874f9ef6) +* feat(firewall): Add new option to search rule (58a86032) +* Merge pull request #11 from civo/master (53dc6a1e) +* Merge pull request #10 from alejandrojnm/hotfix/urgent_fix (99662c54) + +0.2.1 +============= +2020-03-27 + +* add template endpoints (c73d51fa) + +0.2.0 +============= +2020-03-24 + +* Minor tweaks to SSH key struct (d20f49e0) +* update the ssh key file (f5eab5e2) +* Add new option to ssh (fdf845a6) +* Fail the build if any lint issues (95ae34b1) + +0.1.9 +============= +2020-03-20 + +* add rename endpoint for firewall (588340b6) +* Updated the lib to use json and not form for all request (09617776) +* Add body to client error responses (a8ebeb95) +* Merge pull request #25 from alejandrojnm/hostfix/add_function_firewall (5ccea39d) +* Merge pull request #24 from alejandrojnm/hotfix/urgent_fix (7b07ee24) +* Change GetDNSRecord to find by ID not name (4f53b021) +* Remove DNSDomainID from DNSRecordConfig (edfa5583) +* Merge pull request #23 from alejandrojnm/feature/update_dns_record (d8c0e967) +* Fix instance test (5ae22ab1) +* Fix signature of SetInstanceTags (c470a7d5) +* Add GetInstanceConsoleURL method (1032a3be) +* Check links in go documentation (efbe8dbc) +* Change link to docs (83fdce86) +* Update badges (7cbcb38c) +* Fix tests after some minor refactoring (f149ccdc) +* Change GB to Gigabytes (f0fa3a15) +* Fix lint issues (62a82aec) +* Change workflow to custom action (143ac314) +* Move lint to its own action (541c21a6) +* Use user-contributed lint action (4e265ae4) +* Install golint before running it (0aa650f4) +* Add lint to tests and Go 1.14 (0bbdcd0c) +* Add changelog (f2cd42c5) +* Add Find* methods to all areas (d9686526) +* Fix some linting issues with Kubernetes (8dafd66a) +* Add LICENSE (dd906190) +* Return an error if creating a client with an empty API key (ee8dab3b) +* Remove progress table from README as its now module complete (1bfa0af0) +* Add minor tweaks to Webhooks (0471e7d2) +* Merge pull request #21 from alejandrojnm/feature/webhook (2d7d45db) +* Change minor naming issues in snapshot module (fc4a75b7) +* Merge pull request #20 from alejandrojnm/feature/api_snapshots (4b2ae45c) +* Fix a couple of comments (81e4652e) +* Add charge endpoint (457dfa5d) +* Change awkward names of units in field names (f20cab75) +* Add instance size endpoints (971a4a47) +* Add quota endpoint (7b54da2c) +* Add region endpoint (66b590cc) +* Change List functions to be plural and prefixing DNS (e3433bb0) +* Update display of README progress (43d6bc08) +* Merge pull request #19 from alejandrojnm/hotfix/loadbalance_readme (eacb35ca) +* Merge pull request #18 from alejandrojnm/master (41c7acb3) +* Merge pull request #16 from alejandrojnm/add-kubernetes-apis (730f2dd4) +* Add minor changes to Load Balancer methods (b8d5ddb8) +* Merge pull request #14 from alejandrojnm/feature/loadbalancer (e69c9746) +* Merge pull request #11 from rberrelleza/get-record (5590adda) +* Merge pull request #12 from rberrelleza/add-owners (338c4dfd) +* Add client.LastJSONResponse for the CLI to use (5378d41d) +* Merge pull request #7 from rberrelleza/fix-casing-forms (b3aba767) +* Merge pull request #9 from alejandrojnm/hostfix-network (f66cbcbb) +* Change string to map of strings (ab4ebaa8) +* Cleanup some minor issues (a69bef1d) +* Merge pull request #3 from rberrelleza/add-dns-apis (34870810) +* Merge pull request #4 from alejandrojnm/add-firewall-apis (554cc2b3) +* Merge pull request #5 from alejandrojnm/add-volumes-apis (9e8048fc) +* Merge pull request #6 from alejandrojnm/add-network-options (bbb04c3d) +* Change order of automated tests (57fae691) +* Ensure gofmt code compliance (e6d1cdcb) +* Remove panic (5d9bf4a7) +* Remove string interpolation, more go idiomatic this way (50fd2f10) +* Move JSON parsing for SimpleResponse to a helper method (8e8caf0a) +* Add CONTRIBUTING guide (a6d63538) +* Add status bage to README (1eabf12e) +* Add Go module support (2e043e15) +* Add GitHub action to test golang (e9c40745) +* Fix tests (08e7668c) +* Add Instance functions (264d4c87) +* Add Instance methods,first version (cd217b8b) +* Add tests for instance (31634d0f) +* Add Instance listing/fetching/creating (dc16cca8) +* - Add more options to the network options (5e258256) +* - Add New network options (6fbeb8a8) +* Add option to create a new network (e4a70af4) +* Fix error in volumes.go in the VolumesConfig (3db7ca46) +* Add volumes option to the civogo (52dca353) +* - Fix a error in firewall.go (5aecfa1c) +* - Fix some error in firewall.go (070605de) +* Add firewall option to the civogo (572557b6) +* fix test (ebde1c12) +* handle http errors (9c0f0967) +* add tests (37733dc1) +* Add functions to manipulate records (5f324bc9) +* - Fix a error network, now you can rename a network (79674176) +* Merge pull request #1 from civo/master (cbeb0cd4) +* change config for `form` (1ea969af) +* Add a default owner for the repo (fb92d21f) +* use Create instead of New (3055381e) +* New and delete Domain (5c6fe06b) +* add a result const (9c28c61c) +* fix GetDomain test (9df135c1) +* get and list records (5bf08246) +* update and new domain (acb6cd6a) +* - Update name in loadbalancer_test.go (4048f9c1) +* - Update the loadbalancer_test.go (fea3cf5b) +* - Fix some error in types in loadbalancer.go and loadbalancer_test.go (84b247e5) +* - Now can add, delete update and list the load balance (e2e8858b) +* - Initial files (4002274e) +* - Fix all recommendation from Andy, change NumTargetNodes from string to int, and in UpdateKubernetesClusters change map[string]string in favor of map[string]interface{} (2fdaa159) +* - Fix all recommendation from Andy (fa672090) +* - Final change in the kubernetes interface (7e0221f0) +* - Some change in kubernetes (9bb817f9) +* - First commit for kubernetes (05711724) +* - Update README.md with a list of all modules (58429347) +* Merge pull request #3 from civo/master (5a3cfcd6) +* Merge pull request #2 from civo/master (311f778e) +* - Update README.md, Fix error in loadbalancer.go (74877fa8) +* - Done the snapshot module (d2ede4b0) +* - First part of the snapshot api (eaf506c7) +* Merge branch 'master' into feature/api_snapshots (2408aaa3) +* Merge pull request #4 from civo/master (6d43cd65) +* Merge pull request #5 from civo/master (6e2137e8) +* - Add webhook module (467bd9a5) +* Merge pull request #6 from civo/master (55ee0710) +* - Fix some bug in dns.go dns_test.go (2edd5469) +* - Add option to update dns record (8ff8a494) +* Merge pull request #7 from civo/master (08c1c198) +* fix(loadbalancer): Fix data in test (29eab040) +* fix(loadbalancer): Fix struct in loadbalancer (450e0188) +* fix(firewall): Fix error in firewall test (f8658cf3) +* fix(firewall): Fix struct in firewall (6b4ca011) +* - Fix some bug in firewall.go and firewall_test.go (7f13e1c8) +* Merge pull request #9 from civo/master (27235987) +* Merge pull request #8 from civo/master (d118d875) +* fix(firewall): Change the id passed to the function (aff66676) +* fix(firewall): Fix name in the firewall (c480c528) +* fix(firewall): Fix name in the firewall (874f9ef6) +* feat(firewall): Add new option to search rule (58a86032) +* Merge pull request #11 from civo/master (53dc6a1e) +* Merge pull request #10 from alejandrojnm/hotfix/urgent_fix (99662c54) + +0.1.8 +============= +2020-03-19 + +* Updated the lib to use json and not form for all request (09617776) +* Add body to client error responses (a8ebeb95) + +0.1.7 +============= +2020-03-16 + +* Merge pull request #25 from alejandrojnm/hostfix/add_function_firewall (5ccea39d) + +0.1.6 +============= +2020-03-16 + +* Merge pull request #24 from alejandrojnm/hotfix/urgent_fix (7b07ee24) + +0.1.5 +============= +2020-03-12 + +* Change GetDNSRecord to find by ID not name (4f53b021) + +0.1.4 +============= +2020-03-12 + +* Remove DNSDomainID from DNSRecordConfig (edfa5583) +* Merge pull request #23 from alejandrojnm/feature/update_dns_record (d8c0e967) + +0.1.3 +============= +2020-03-10 + +* Fix instance test (5ae22ab1) + +0.1.2 +============= +2020-03-10 + +* Fix signature of SetInstanceTags (c470a7d5) + +0.1.1 +============= +2020-03-10 + +* Add GetInstanceConsoleURL method (1032a3be) +* Check links in go documentation (efbe8dbc) +* Change link to docs (83fdce86) +* Update badges (7cbcb38c) +* Fix tests after some minor refactoring (f149ccdc) +* Change GB to Gigabytes (f0fa3a15) +* Fix lint issues (62a82aec) +* Change workflow to custom action (143ac314) +* Move lint to its own action (541c21a6) +* Use user-contributed lint action (4e265ae4) +* Install golint before running it (0aa650f4) +* Add lint to tests and Go 1.14 (0bbdcd0c) + +0.1.0 +============= +2020-03-03 + +* Add changelog (f2cd42c5) +* Add Find* methods to all areas (d9686526) +* Fix some linting issues with Kubernetes (8dafd66a) +* Add LICENSE (dd906190) +* Return an error if creating a client with an empty API key (ee8dab3b) +* Remove progress table from README as its now module complete (1bfa0af0) +* Add minor tweaks to Webhooks (0471e7d2) +* Merge pull request #21 from alejandrojnm/feature/webhook (2d7d45db) +* Change minor naming issues in snapshot module (fc4a75b7) +* Merge pull request #20 from alejandrojnm/feature/api_snapshots (4b2ae45c) +* Fix a couple of comments (81e4652e) +* Add charge endpoint (457dfa5d) +* Change awkward names of units in field names (f20cab75) +* Add instance size endpoints (971a4a47) +* Add quota endpoint (7b54da2c) +* Add region endpoint (66b590cc) +* Change List functions to be plural and prefixing DNS (e3433bb0) +* Update display of README progress (43d6bc08) +* Merge pull request #19 from alejandrojnm/hotfix/loadbalance_readme (eacb35ca) +* Merge pull request #18 from alejandrojnm/master (41c7acb3) +* Merge pull request #16 from alejandrojnm/add-kubernetes-apis (730f2dd4) +* Add minor changes to Load Balancer methods (b8d5ddb8) +* Merge pull request #14 from alejandrojnm/feature/loadbalancer (e69c9746) +* Merge pull request #11 from rberrelleza/get-record (5590adda) +* Merge pull request #12 from rberrelleza/add-owners (338c4dfd) +* Add client.LastJSONResponse for the CLI to use (5378d41d) +* Merge pull request #7 from rberrelleza/fix-casing-forms (b3aba767) +* Merge pull request #9 from alejandrojnm/hostfix-network (f66cbcbb) +* Change string to map of strings (ab4ebaa8) +* Cleanup some minor issues (a69bef1d) +* Merge pull request #3 from rberrelleza/add-dns-apis (34870810) +* Merge pull request #4 from alejandrojnm/add-firewall-apis (554cc2b3) +* Merge pull request #5 from alejandrojnm/add-volumes-apis (9e8048fc) +* Merge pull request #6 from alejandrojnm/add-network-options (bbb04c3d) +* Change order of automated tests (57fae691) +* Ensure gofmt code compliance (e6d1cdcb) +* Remove panic (5d9bf4a7) +* Remove string interpolation, more go idiomatic this way (50fd2f10) +* Move JSON parsing for SimpleResponse to a helper method (8e8caf0a) +* Add CONTRIBUTING guide (a6d63538) +* Add status bage to README (1eabf12e) +* Add Go module support (2e043e15) +* Add GitHub action to test golang (e9c40745) +* Fix tests (08e7668c) +* Add Instance functions (264d4c87) +* Add Instance methods,first version (cd217b8b) +* Add tests for instance (31634d0f) +* Add Instance listing/fetching/creating (dc16cca8) +* - Add more options to the network options (5e258256) +* - Add New network options (6fbeb8a8) +* Add option to create a new network (e4a70af4) +* Fix error in volumes.go in the VolumesConfig (3db7ca46) +* Add volumes option to the civogo (52dca353) +* - Fix a error in firewall.go (5aecfa1c) +* - Fix some error in firewall.go (070605de) +* Add firewall option to the civogo (572557b6) +* fix test (ebde1c12) +* handle http errors (9c0f0967) +* add tests (37733dc1) +* Add functions to manipulate records (5f324bc9) +* - Fix a error network, now you can rename a network (79674176) +* Merge pull request #1 from civo/master (cbeb0cd4) +* change config for `form` (1ea969af) +* Add a default owner for the repo (fb92d21f) +* use Create instead of New (3055381e) +* New and delete Domain (5c6fe06b) +* add a result const (9c28c61c) +* fix GetDomain test (9df135c1) +* get and list records (5bf08246) +* update and new domain (acb6cd6a) +* - Update name in loadbalancer_test.go (4048f9c1) +* - Update the loadbalancer_test.go (fea3cf5b) +* - Fix some error in types in loadbalancer.go and loadbalancer_test.go (84b247e5) +* - Now can add, delete update and list the load balance (e2e8858b) +* - Initial files (4002274e) +* - Fix all recommendation from Andy, change NumTargetNodes from string to int, and in UpdateKubernetesClusters change map[string]string in favor of map[string]interface{} (2fdaa159) +* - Fix all recommendation from Andy (fa672090) +* - Final change in the kubernetes interface (7e0221f0) +* - Some change in kubernetes (9bb817f9) +* - First commit for kubernetes (05711724) +* - Update README.md with a list of all modules (58429347) +* Merge pull request #3 from civo/master (5a3cfcd6) +* Merge pull request #2 from civo/master (311f778e) +* - Update README.md, Fix error in loadbalancer.go (74877fa8) +* - Done the snapshot module (d2ede4b0) +* - First part of the snapshot api (eaf506c7) +* Merge branch 'master' into feature/api_snapshots (2408aaa3) +* Merge pull request #4 from civo/master (6d43cd65) +* Merge pull request #5 from civo/master (6e2137e8) +* - Add webhook module (467bd9a5) +* Merge pull request #6 from civo/master (55ee0710) + + diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/CODEOWNERS b/cluster-autoscaler/vendor/github.com/civo/civogo/CODEOWNERS new file mode 100644 index 000000000000..636029f12177 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/CODEOWNERS @@ -0,0 +1,3 @@ +# These owners will be the default owners for everything in +# the repo. +* @andyjeffries \ No newline at end of file diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/CONTRIBUTING.md b/cluster-autoscaler/vendor/github.com/civo/civogo/CONTRIBUTING.md new file mode 100644 index 000000000000..d0d0734cb51e --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/CONTRIBUTING.md @@ -0,0 +1,29 @@ +# Contributing + +If you submit a pull request, please keep the following guidelines in mind: + +1. Code should be `go fmt` compliant. +2. Types, structs and funcs should be documented. +3. Tests pass. + +## Getting set up + +Assuming your `$GOPATH` is set up according to your desires, run: + +```sh +go get github.com/civo/civogo +``` + +If outside `$GOPATH`, just clone the repository: + +```sh +git clone https://github.com/civo/civogo +``` + +## Running tests + +When working on code in this repository, tests can be run via: + +```sh +go test . +``` diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/LICENSE b/cluster-autoscaler/vendor/github.com/civo/civogo/LICENSE new file mode 100644 index 000000000000..709a164a2861 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/LICENSE @@ -0,0 +1,21 @@ +The MIT License + +Copyright (c) 2020 Civo Ltd. https://www.civo.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/README.md b/cluster-autoscaler/vendor/github.com/civo/civogo/README.md new file mode 100644 index 000000000000..fb58d17d8a1b --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/README.md @@ -0,0 +1,163 @@ +# Civogo - The Golang client library for Civo + +[![go.dev reference](https://img.shields.io/badge/go.dev-reference-007d9c?logo=go&logoColor=white&style=flat-square)](https://pkg.go.dev/github.com/civo/civogo?tab=doc) +[![Build Status](https://github.com/civo/civogo/workflows/Test/badge.svg)](https://github.com/civo/civogo/actions) +[![Lint](https://github.com/civo/civogo/workflows/Lint/badge.svg)](https://github.com/civo/civogo/actions) + +Civogo is a Go client library for accessing the Civo cloud API. + +You can view the client API docs at [https://pkg.go.dev/github.com/civo/civogo](https://pkg.go.dev/github.com/civo/civogo) and view the API documentation at [https://api.civo.com](https://api.civo.com) + + +## Install + +```sh +go get github.com/civo/civogo +``` + +## Usage + +```go +import "github.com/civo/civogo" +``` + +From there you create a Civo client specifying your API key and a region. Then you can use public methods to interact with Civo's API. + +### Authentication + +You will need both an API key and a region code to create a new client. + +Your API key is listed within the [Civo control panel's security page](https://www.civo.com/account/security). You can also reset the token there, for example, if accidentally put it in source code and found it had been leaked. + +For the region code, use any region you know exists, e.g. `LON1`. See the [API documentation](https://github.com/civo/civogo.git) for details. + +```go +package main + +import ( + "context" + "github.com/civo/civogo" +) + +const ( + apiKey = "mykeygoeshere" + regionCode = "LON1" +) + +func main() { + client, err := civogo.NewClient(apiKey, regionCode) + // ... +} +``` + +## Examples + +To create a new Instance: + +```go +config, err := client.NewInstanceConfig() +if err != nil { + t.Errorf("Failed to create a new config: %s", err) + return err +} + +config.Hostname = "foo.example.com" + +instance, err := client.CreateInstance(config) +if err != nil { + t.Errorf("Failed to create instance: %s", err) + return err +} +``` + +To get all Instances: + +```go +instances, err := client.ListAllInstances() +if err != nil { + t.Errorf("Failed to create instance: %s", err) + return err +} + +for _, i := range instances { + fmt.Println(i.Hostname) +} +``` + +### Pagination + +If a list of objects is paginated by the API, you must request pages individually. For example, to fetch all instances without using the `ListAllInstances` method: + +```go +func MyListAllInstances(client *civogo.Client) ([]civogo.Instance, error) { + list := []civogo.Instance{} + + pageOfItems, err := client.ListInstances(1, 50) + if err != nil { + return []civogo.Instance{}, err + } + + if pageOfItems.Pages == 1 { + return pageOfItems.Items, nil + } + + for page := 2; page<=pageOfItems.Pages; page++ { + pageOfItems, err := client.ListInstances(1, 50) + if err != nil { + return []civogo.Instance{}, err + } + + list = append(list, pageOfItems.Items) + } + + return list, nil +} +``` + +## Error handler +​ +In the latest version of the library we have added a new way to handle errors. +Below are some examples of how to use the new error handler, and the complete list of errors is [here](errors.go). +​ +This is an example of how to make use of the new errors, suppose we want to create a new Kubernetes cluster, and do it this way but choose a name that already exists within the clusters that we have: +​ +```go +// kubernetes config +configK8s := &civogo.KubernetesClusterConfig{ + NumTargetNodes: 5, + Name: "existent-name", +} +// Send to create the cluster +resp, err := client.NewKubernetesClusters(configK8s) +if err != nil { + if errors.Is(err, civogo.DatabaseKubernetesClusterDuplicateError) { + // add some actions + } +} +``` +The following lines are new: +​ +```go +if err != nil { + if errors.Is(err, civogo.DatabaseKubernetesClusterDuplicateError) { + // add some actions + } +} +``` +In this way. we can make decisions faster based on known errors, and we know what to expect. There is also the option of being able to say this to account for some errors but not others: +​ +```go +if err != nil { + if errors.Is(err, civogo.DatabaseKubernetesClusterDuplicateError) { + // add some actions + } + if errors.Is(err, civogo.UnknownError) { + // exit with error + } +} +``` +We can use `UnknownError` for errors that are not defined. + +## Contributing + +If you want to get involved, we'd love to receive a pull request - or an offer to help over our KUBE100 Slack channel. Please see the [contribution guidelines](CONTRIBUTING.md). diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/application.go b/cluster-autoscaler/vendor/github.com/civo/civogo/application.go new file mode 100644 index 000000000000..695df97b18cd --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/application.go @@ -0,0 +1,255 @@ +package civogo + +import ( + "bytes" + "encoding/json" + "fmt" + "strings" + + "github.com/civo/civogo/utils" +) + +// Application is the struct for the Application model +type Application struct { + Name string `json:"name" validate:"required"` + ID string `json:"id"` + NetworkID string `json:"network_id" validate:"required"` + Description string `json:"description"` + Image string `json:"image"` + Size string `json:"size"` + ProcessInfo []ProcessInfo `json:"process_info,omitempty"` + Domains []string `json:"domains,omitempty"` + SSHKeyIDs []string `json:"ssh_key_ids,omitempty"` + Config []EnvVar `json:"config,omitempty"` + // Status can be one of: + // - "building": Implies platform is building + // - "available": Implies platform is available to accept image + // - "ready": Implies app is ready + Status string `json:"status"` +} + +// ApplicationConfig describes the parameters for a new CivoApp +type ApplicationConfig struct { + Name string `json:"name" validate:"required"` + NetworkID string `json:"network_id" validate:"required"` + Description string `json:"description"` + Size string `json:"size"` + SSHKeyIDs []string `json:"ssh_key_ids,omitempty"` +} + +// UpdateApplicationRequest is the struct for the UpdateApplication request +type UpdateApplicationRequest struct { + Name string `json:"name"` + Advanced bool `json:"advanced"` + Image string `json:"image" ` + Description string `json:"description"` + ProcessInfo []ProcessInfo `json:"process_info"` + Size string `json:"size" schema:"size"` + SSHKeyIDs []string `json:"ssh_key_ids" ` + Config []EnvVar `json:"config"` + Domains []string `json:"domains"` +} + +// PaginatedApplications returns a paginated list of Application object +type PaginatedApplications struct { + Page int `json:"page"` + PerPage int `json:"per_page"` + Pages int `json:"pages"` + Items []Application `json:"items"` +} + +// EnvVar holds key-value pairs for an application +type EnvVar struct { + Name string `json:"name"` + Value string `json:"value"` +} + +// ProcessInfo contains the information about the process obtained from Procfile +type ProcessInfo struct { + ProcessType string `json:"process_type"` + ProcessCount int `json:"process_count"` +} + +// ErrAppDomainNotFound is returned when the domain is not found +var ErrAppDomainNotFound = fmt.Errorf("domain not found") + +// ListApplications returns all applications in that specific region +func (c *Client) ListApplications() (*PaginatedApplications, error) { + resp, err := c.SendGetRequest("/v2/applications") + if err != nil { + return nil, decodeError(err) + } + + application := &PaginatedApplications{} + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&application); err != nil { + return nil, decodeError(err) + } + + return application, nil +} + +// GetApplication returns an application by ID +func (c *Client) GetApplication(id string) (*Application, error) { + resp, err := c.SendGetRequest(fmt.Sprintf("/v2/applications/%s", id)) + if err != nil { + return nil, decodeError(err) + } + + application := &Application{} + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&application); err != nil { + return nil, decodeError(err) + } + + return application, nil +} + +// NewApplicationConfig returns an initialized config for a new application +func (c *Client) NewApplicationConfig() (*ApplicationConfig, error) { + network, err := c.GetDefaultNetwork() + if err != nil { + return nil, decodeError(err) + } + + return &ApplicationConfig{ + Name: utils.RandomName(), + NetworkID: network.ID, + Description: "", + Size: "small", + SSHKeyIDs: []string{}, + }, nil +} + +// FindApplication finds an application by either part of the ID or part of the name +func (c *Client) FindApplication(search string) (*Application, error) { + apps, err := c.ListApplications() + if err != nil { + return nil, decodeError(err) + } + + exactMatch := false + partialMatchesCount := 0 + result := Application{} + + for _, value := range apps.Items { + if value.Name == search || value.ID == search { + exactMatch = true + result = value + } else if strings.Contains(value.Name, search) || strings.Contains(value.ID, search) { + if !exactMatch { + result = value + partialMatchesCount++ + } + } + } + + if exactMatch || partialMatchesCount == 1 { + return &result, nil + } else if partialMatchesCount > 1 { + err := fmt.Errorf("unable to find %s because there were multiple matches", search) + return nil, MultipleMatchesError.wrap(err) + } else { + err := fmt.Errorf("unable to find %s, zero matches", search) + return nil, ZeroMatchesError.wrap(err) + } +} + +// CreateApplication creates a new application +func (c *Client) CreateApplication(config *ApplicationConfig) (*Application, error) { + body, err := c.SendPostRequest("/v2/applications", config) + if err != nil { + return nil, decodeError(err) + } + + var application Application + if err := json.NewDecoder(bytes.NewReader(body)).Decode(&application); err != nil { + return nil, err + } + + return &application, nil +} + +// UpdateApplication updates an application +func (c *Client) UpdateApplication(id string, application *UpdateApplicationRequest) (*Application, error) { + body, err := c.SendPutRequest(fmt.Sprintf("/v2/applications/%s", id), application) + if err != nil { + return nil, decodeError(err) + } + + updatedApplication := &Application{} + if err := json.NewDecoder(bytes.NewReader(body)).Decode(updatedApplication); err != nil { + return nil, err + } + + return updatedApplication, nil +} + +// DeleteApplication deletes an application +func (c *Client) DeleteApplication(id string) (*SimpleResponse, error) { + resp, err := c.SendDeleteRequest(fmt.Sprintf("/v2/applications/%s", id)) + if err != nil { + return nil, decodeError(err) + } + + return c.DecodeSimpleResponse(resp) +} + +// ListAppDomains lists all domains for an application +func (c *Client) ListAppDomains(id string) ([]string, error) { + resp, err := c.SendGetRequest(fmt.Sprintf("/v2/applications/%s/domains", id)) + if err != nil { + return nil, decodeError(err) + } + + appDomain := make([]string, 0) + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&appDomain); err != nil { + return nil, err + } + + return appDomain, nil +} + +//FindAppDomain finds an app domain inside an application by the domain name +func (c *Client) FindAppDomain(search, id string) (string, error) { + appDomains, err := c.ListAppDomains(id) + if err != nil { + return "", decodeError(err) + } + + for _, domain := range appDomains { + if domain == search { + return domain, nil + } + } + return "", ErrAppDomainNotFound +} + +//DeleteAppDomain deletes an app domain from an application +func (c *Client) DeleteAppDomain(domains []string, appID, domain string) (*SimpleResponse, error) { + if len(domains) == 0 { + err := fmt.Errorf("there is no domain to delete") + return nil, err + } + + url := fmt.Sprintf("/v2/applications/%s/domains/%s", appID, domain) + resp, err := c.SendDeleteRequest(url) + if err != nil { + return nil, decodeError(err) + } + + return c.DecodeSimpleResponse(resp) +} + +// GetAppConfig returns the config for an application +func (c *Client) GetAppConfig(id string) (*EnvVar, error) { + resp, err := c.SendGetRequest(fmt.Sprintf("/v2/applications/%s/config", id)) + if err != nil { + return nil, decodeError(err) + } + + appConfig := &EnvVar{} + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&appConfig); err != nil { + return nil, err + } + + return appConfig, nil +} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/application_size.go b/cluster-autoscaler/vendor/github.com/civo/civogo/application_size.go new file mode 100644 index 000000000000..ad762e5a03ed --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/application_size.go @@ -0,0 +1,70 @@ +package civogo + +import ( + "bytes" + "encoding/json" + "fmt" + "strings" +) + +// ApplicationSize represents an available size for applications to launch +type ApplicationSize struct { + ID string `json:"id,omitempty"` + Name string `json:"name,omitempty"` + NiceName string `json:"nice_name,omitempty"` + CPUCores int `json:"cpu_cores,omitempty"` + RAMMegabytes int `json:"ram_mb,omitempty"` + DiskGigabytes int `json:"disk_gb,omitempty"` + TransferTerabytes int `json:"transfer_tb,omitempty"` + Description string `json:"description,omitempty"` + Selectable bool `json:"selectable,omitempty"` +} + +// ListApplicationSizes returns all availble sizes of applications +func (c *Client) ListApplicationSizes() ([]ApplicationSize, error) { + resp, err := c.SendGetRequest("/v2/applications/sizes") + if err != nil { + return nil, decodeError(err) + } + + sizes := make([]ApplicationSize, 0) + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&sizes); err != nil { + return nil, err + } + + return sizes, nil +} + +// FindApplicationSizes finds a application size name by either part of the ID or part of the name +func (c *Client) FindApplicationSizes(search string) (*ApplicationSize, error) { + appSize, err := c.ListApplicationSizes() + if err != nil { + return nil, decodeError(err) + } + + exactMatch := false + partialMatchesCount := 0 + result := ApplicationSize{} + + for _, value := range appSize { + if value.Name == search || value.ID == search { + exactMatch = true + result = value + } else if strings.Contains(value.Name, search) || strings.Contains(value.ID, search) { + if !exactMatch { + result = value + partialMatchesCount++ + } + } + } + + if exactMatch || partialMatchesCount == 1 { + return &result, nil + } else if partialMatchesCount > 1 { + err := fmt.Errorf("unable to find %s because there were multiple matches", search) + return nil, MultipleMatchesError.wrap(err) + } else { + err := fmt.Errorf("unable to find %s, zero matches", search) + return nil, ZeroMatchesError.wrap(err) + } +} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/changelog.yml b/cluster-autoscaler/vendor/github.com/civo/civogo/changelog.yml new file mode 100644 index 000000000000..694ac5014d1f --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/changelog.yml @@ -0,0 +1,9970 @@ +- semver: 0.2.52 + date: 2021-08-30T17:14:48.6307+08:00 + packager: "" + changes: + - commit: d69977c64e9f3f1d6157a803959f9080604719ec + note: |- + Add new struct fields for cluster firewall (#60) + + * Add new struct fields for cluster firewall + + * Add firewall ID to Kubernetes cluster response struct + + * Update KubernetesClusterConfig struct to match with latest create cluster API + author: + name: Zulh + email: 75463191+zulh-civo@users.noreply.github.com + committer: + name: GitHub + email: noreply@github.com + - commit: 6f7d2d147b622a300b893e827763ddd1f112172d + note: Update the changelog + author: + name: Alejandro J. Nuñez Madrazo + email: alejandrojnm@gmail.com + committer: + name: Alejandro J. Nuñez Madrazo + email: alejandrojnm@gmail.com +- semver: 0.2.51 + date: 2021-08-20T12:14:51.369192+01:00 + packager: "" + changes: + - commit: 63eb8ecec32ae5be6e9f6d0ceb2c13b16d1bb267 + note: Add firewall ID to instance config (for creating instance) (#59) + author: + name: Zulh + email: 75463191+zulh-civo@users.noreply.github.com + committer: + name: GitHub + email: noreply@github.com +- semver: 0.2.50 + date: 2021-08-20T12:23:36.242834+08:00 + packager: "" + changes: + - commit: 4a2e2643ca1789e4872237e0835846aaa665ac5c + note: |- + Exclude disk images with name containing "k3s" (#58) + + * Exclude disk images with name containing "k3s" + + * Update test for list disk images + author: + name: Zulh + email: 75463191+zulh-civo@users.noreply.github.com + committer: + name: GitHub + email: noreply@github.com + - commit: 51b3d43babc815cc240d6c99501db78a4c378050 + note: Fix lint issues + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: cd1195dfa60d57e1da591963430e0c09f2df95dd + note: Fixing capitalisation of decodeERROR to go standards and UnknowError typo + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: e0bec13da9a80fa3918a011714ced02afd539c55 + note: Add endpoints for team/permission management + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk +- semver: 0.2.49 + date: 2021-07-16T12:30:09.316057+01:00 + packager: "" + changes: + - commit: 14fc34c7e36117ef6f157b65f4e2f8b31bce1bb9 + note: Remove unnecessary code from the error handler file and add new error handler + author: + name: Alejandro J. Nuñez Madrazo + email: alejandrojnm@gmail.com + committer: + name: Alejandro J. Nuñez Madrazo + email: alejandrojnm@gmail.com +- semver: 0.2.48 + date: 2021-07-15T11:53:46.121998+01:00 + packager: "" + changes: + - commit: 1bf187fd4a931290d35dd6f958d58a3974b892eb + note: Change de default error in case the error is not in the list + author: + name: Alejandro J. Nuñez Madrazo + email: alejandrojnm@gmail.com + committer: + name: Alejandro J. Nuñez Madrazo + email: alejandrojnm@gmail.com + - commit: cf996f9295eb3dbd5abf2a86ff9c2e228606a345 + note: Added a new error handler + author: + name: Alejandro J. Nuñez Madrazo + email: alejandrojnm@gmail.com + committer: + name: Alejandro J. Nuñez Madrazo + email: alejandrojnm@gmail.com +- semver: 0.2.47 + date: 2021-05-23T13:25:26.738282-04:00 + packager: "" + changes: + - commit: d9a041df7e1b8cebf655f4014b9ef5d8b4fa5fc6 + note: Fixed error in the recycle kuberntes node + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 267f348f2e404285cf4149f65c8bfae12869d2f2 + note: Updated the Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com +- semver: 0.2.46 + date: 2021-05-21T13:09:09.675418-04:00 + packager: "" + changes: + - commit: f99bbb6ae86a8db55f93a0a50afdc5c57d387666 + note: Added omitempty to some models, to prevent show empty result + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 63305185fe1c8f3e8ea4979b3a4b6341e3288ee3 + note: Fixed test for the instance + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com +- semver: 0.2.45 + date: 2021-05-10T19:01:56.384997-04:00 + packager: "" + changes: + - commit: a9f4749fb821be83bc00884e1fbd5d7de929f624 + note: Fixed error in the instance controller + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: bfb7b690a7b2670bad78e167cd409544c783658f + note: Added new error handler + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com +- semver: 0.2.44 + date: 2021-05-05T15:35:27.258593-04:00 + packager: "" + changes: + - commit: 7f556d7baea82d2865473a62227d6cfbb2bacf3b + note: Merge branch 'master' of https://github.com/civo/civogo + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 2459ccd5996ba324d34c314eba018dbd956682c0 + note: Added the pool option to kubernestes object + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com +- semver: 0.2.43 + date: 2021-05-04T14:36:19.830021-04:00 + packager: "" + changes: + - commit: 0f3b7fb64f1abf43b0d2cca474d5e99ecf4fdc14 + note: Added change to kubernetes and volume + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 47dce610da9a7723127fec2e1eb889aa22149082 + note: Add cluster_id to volume creation + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 7a917e8e0bea22b2562d9d55b4d1e781c4416900 + note: Fix CHANGELOG + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 419cda25a3b238ca9e7e9b8764b0ac8b34580da2 + note: Add GetVolume call to save always returning then filtering down to a single volume + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 4884e404fea291d97a45ef152627546468e1cb5b + note: Add Status to volume + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 093df491fff19409feba5c1ec00a864761e63f73 + note: Added region to volume attach/detach + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 9c1df9d1265f68cf4e43c71765b2b3a14c6097c9 + note: Update CHANGELOG for 0.2.38 + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 89995b6a3c11fa719cf4032fde44ef1aac7235a2 + note: Update VolumeConfig to have a namespace attribute + author: + name: Andy Jeffries + email: andy@civo.com + committer: + name: GitHub + email: noreply@github.com + - commit: d629abae9e8d247bbaad1c7d219818cc12d6dac4 + note: |- + Update fake_client.go + + Change the exported comment + author: + name: Alejandro J. Nuñez Madrazo + email: alejandro@civo.com + committer: + name: GitHub + email: noreply@github.com +- semver: 0.2.37 + date: 2021-04-08T18:36:06.453078-04:00 + packager: "" + changes: + - commit: cd0f7879862db418cffc6ac247592581f172bc54 + note: Added new methods for DiskImage + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com +- semver: 0.2.36 + date: 2021-04-06T17:50:34.823396-04:00 + packager: "" + changes: + - commit: af03bb1f5ad66e9052487dd0c8a58a6841bf3ccf + note: Added omitempty to kubernetes config, that way we only send the filled fields + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: dc3ea1df0ae34e25cc3f58941464de50cc37c1bc + note: Updated the changelog + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com +- semver: 0.2.35 + date: 2021-04-02T09:06:28-04:00 + packager: Andy Jeffries + changes: + - commit: 772d0a1612fbf038120f1aa3dc4200b7550b4e50 + note: Merge branch 'master' of https://github.com/civo/civogo + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: c47419cea0066134990e87d1e2e737a6b84c7088 + note: Fixed error in the code, added a new handler for network error + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: ed132dec901c76543ccef5fac8f6288f80187db1 + note: Updated the changelog + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 43e5e9a89fb7bdf03d65682afebe0f07fade2b43 + note: Added new fields to kubernetes struct + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 699e53929987df042438444281d58d8071363803 + note: Updated the changelog + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 1e9c4c700ffaa9b0fc037ca667e3610f47871e06 + note: Merge branch 'master' of https://github.com/civo/civogo + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: ff8a577c5c93b2258016910721533fa98de080f8 + note: Fixed error in the struct for InstalledApplication in kubernetes + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 0cf2bd6e0417c94bf0461137d7aaa2298874bb8d + note: Updated the changelog + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: f173564c6be0f5b7d6e72d4274bf902afdc0280d + note: Added network to the firewall struct + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: e2bd46f772f32145e74633c0973c7edccf776b8e + note: Added GetDefaultRegion to the region + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 9c6173fb794c52dc6c33d1dd6f4117bb7d6cf2a3 + note: Updated the changelog + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 79f15aa1d17f1641461787b0acaa41f6f4e71658 + note: Added default field to the region + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: b45dffe1afcb096985322f20956734e4b80f74d8 + note: Updated the changelog + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 19e61587c19d7e959a5fb67bc43d2e673c0cb4da + note: |- + Feature/add region (#50) + + * Added the region to the client, also add new error to the handler and add region to kubernetes + * Update the civogo lib to use region in all request + author: + name: Alejandro J. Nuñez Madrazo + email: alejandro@civo.com + committer: + name: GitHub + email: noreply@github.com + - commit: dfcbfaecabd8590f6ce0cbd49fddd32f61075b4f + note: |- + Clusternames should be considered case insensitive (#49) + + This commit makes the following changes: + * FindKubernetesCluster is case insensitive now + * Test FindKubernetesCluster for case insensitivity + + The current implementation is not optimal though, as the fuzzy matching does not fully support Unicode. + However this should fix most issues for now. + author: + name: Björn Heinrichs + email: BjoernAkAManf@users.noreply.github.com + committer: + name: GitHub + email: noreply@github.com + - commit: c237384c2566853c1874618b56f3808c0d57d343 + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: c5ae6fb346f25352c77277c5494a75837e815aff + note: Fixed check in handler for errors + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 5564e23594cba6c56411471181fd4818e3234687 + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 346fe0ff40991b8d166dee7bc68048925f20e0ce + note: |- + Fixed lint check in the actions + Close #47 + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: a0333a838477b52afbe49d784c04c3a1a9c324d8 + note: |- + Fixed some bugs in the error handler + Close #44 #45 + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: ce2a8a202812a703836bb25deb3ad2c058b55b29 + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 3c3da053c9c572c0cf8fa53fbdb34fb66ecadf76 + note: Added option to use proxy if is present in the system + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: d6c63e6316bffa2d8475ad49aeb67a078aeec921 + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 405567d04342264662a1b2534c7625f2dfc6c20d + note: |- + Fixed the recycle option in Kubernetes + Close #43 + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 4b69a79706e406f55059e5001b56c48d851c71bf + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 8ac5d69e54e7a2062a658fcb408c9c3df36bbcb4 + note: Updated all find function to all command + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: dd52c16377b510e6f3204428e91864f57b206bcb + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: e7cd9f3bf9eca1b133fe7ea581fe9e9082d9fb50 + note: Fixed an error in the struct of the creation of intances + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: ede2e4c16f26ee40d2f6667b0a3ae6f5997f77d9 + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: c1e741339cf2649d23be4221038a341f70354f72 + note: Added two more error to the error handler + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: b0996760a7f270ab96b1fa1bddeca3fce677a523 + note: Fixed error in the DNS test + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: d6191cc66fa48dd378750b1cbe1b7a916ed1581c + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 6e3d7b1e23638f3e547dfbf46721b73156de5f5b + note: Added new record type to DNS + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: fc9cd8ff4b520e066d91684776f14805029b5715 + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 7a0e384f1a206b5e2947bfdb13d80cc6f36ace21 + note: improved error handling in the library + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 0aa9f6bf5ff71f44df9898cd9b2e76b68b0d8749 + note: |- + Update test.yml + + remove macos + author: + name: Alejandro J. Nuñez Madrazo + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 73500add744d21de8426963d233fb1130c88a354 + note: |- + Update test.yml + + use 'os' instead of 'platform' for job matrices + author: + name: Alejandro J. Nuñez Madrazo + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: f3d121d848f622ab2484d64fc438deaa2b825f9c + note: |- + Update test.yml + + Left alone Go 1.14 for the test + author: + name: Alejandro J. Nuñez Madrazo + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 2df11af67fb7cb803025322e6b9ec3d01c62c5de + note: |- + Update test.yml + + Remove test form Go 1.12 and added test form 1.15 + author: + name: Alejandro J. Nuñez Madrazo + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: c024bec299949116e03727b2b5a21c657267f3c9 + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: d8b735350335f4d83b5aca63df666c0e0301c716 + note: Updated all test + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 63a3ae563a9598e217d72f4556b498a689b27db1 + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 4095fdfc81941f24ec77f72fe6b85a8c5f320667 + note: Added constant errors to the lib + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: b11ac2760e0169dc9892d7787a0c61d8c7a50a84 + note: Update the chnage log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 59a86819f532221f86fe0482eb5a6786c3253b85 + note: Added FindTemplate fucntion to the template module + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 4cc1b488aa148a9733b6e2d3309264df8e57ba87 + note: Update the change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 21b44c0e538c42e386ababbdaec877e28ca2d0e1 + note: |- + Revert "Update the change log" + + This reverts commit 8cfac7bccda269767dad34f431659476da3718a5. + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 8cfac7bccda269767dad34f431659476da3718a5 + note: Update the change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: c983d56e0287a996bfb8ef625b4be075400b85e3 + note: |- + Add constant errors (#41) + + * Added a constant errors + * Added error handler to the system + * Modify the error handler for kubernetes module + * Fix message in the errors.go + * Added new feature + * Added all error declaration and the editorconfig + * Added the rest of the errors + * Added the decoder to the rest of controller + * Removed unnecessary comment + * Added a new error help to README + author: + name: Alejandro J. Nuñez Madrazo + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: f6135e298230a0bab389fdcc1e9ff257e4b393b7 + note: |- + Added CPU, RAM and SSD fields to Instance struct + and KubernetesInstance struct + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: b74d3224c16f179105b2ca0f604a8431279d9170 + note: |- + Added new feature + + added master_ip to the kubernetes response, + to be able to use it in the cli and in the terraform provider + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: c49389ab6568b274fd5d1127c0faf14fe06728b7 + note: Fixed error in the cluster upgrade cmd + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 9c3921814c5ee645a864f0d762884d30752dd21a + note: Add the new UpgradeAvailableTo field to KubernetesCluster + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 59b86eba96a0a68b46c42b949dbbec76901875f7 + note: |- + Change application struct in the kubernetes module (#39) + + * fix(kubernetes): Change application struct + + - Change the applications struct, the configuration field, add custom struct for that field + + BREAKING CHANGE: No + + * fix(kubernetes): Added comment in struct + + - Added comment to the ApplicationConfiguration struct inside kubernetes module + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: c1839b96b8a3ca88404da075e0bbf648f0f95d32 + note: |- + Change application struct in kubernetes + + Change the applications struct, the `default` field from string to bool + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 923b509b5ba5e589ad2ce0138e561ecbf192b9ee + note: |- + added new way to search in network + + Add the option to search by Label when you use the FindNetwork + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 1906a5fcaf704a03f48ca52f2e66d38b32f134ce + note: |- + feat(kubernetes): new added option at the moment scaling down the cluster (#35) + + Now if you are scaling down by one, you can give a hint on the node's + name to be destroyed using the node_destroy param + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 6ce671a875acd36a36314b9a98fd3f864ce67cf7 + note: |- + Add pagination for Kubernetes clusters (#34) + + * (hotfix) changed the kubernetes cluster config + + - Modify the kubernetes cluster config to add pagination + - Changed the old kubernetesCluster in favor of kubernetesItem + + BREAKING CHANGE: No + + * (hotfix) fixed comment + + - fix comment inside kubernetes.go + + BREAKING CHANGE: No + + * (hotfix) fixed code style + + - fix code style in kubernetes.go + + BREAKING CHANGE: No + + * refactor(kubernetes): modify the struct for kubernets object + + - modify the struct for kubernets object + - fixed error in code + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 77d299673245240c5e0e1804975de4d7aee02d9a + note: |- + (hotfix) change snapshot config + + - remove `form` from snapshot config and change by `json` + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: d0635c7e96f4509ebdabe9a4deb8acc0cc0c26d4 + note: Change PublicIPRequired to a string to support IP moving + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: c73d51fa77fac7f76213c697982fce3c3dfe7f0d + note: |- + add template endpoints + + * add new feature to Template module + + - You can now list all templates, create a new one, update and delete any templates that belonged to the user + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: d20f49e0bb1d86ab27b776e668a94f9cc006304d + note: Minor tweaks to SSH key struct + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: f5eab5e2065315493319829ed213b2732e80f154 + note: |- + update the ssh key file + + Fix some bug reported, in comment and variables + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: fdf845a601aac8e283f0bdb580c41018d3b737cc + note: |- + Add new option to ssh + + Now you can create, update and delete the ssh keys, at the same time we add ID to the client to return the ID when the backend does it, as in the case of creating an ssh key + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 95ae34b13fe3a49d18805975a5691e7f37c93c63 + note: Fail the build if any lint issues + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 588340b6dfe663e4b7b7dd13b5bc36f1523a538e + note: |- + add rename endpoint for firewall + + Now you can rename a firewall using RenameFirewall function, It is no + longer necessary to delete the firewall to rename it + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 0961777679546b5521fbc9a7bf0c0b292dd53c9b + note: |- + Updated the lib to use json and not form for all request + + * We change the client to send all request in JSON format, to avoid build a custom form procesator + * Fix failing test - had trailing whitespace + * Change all test to use the new way in client.go + * Add Reason to the HTTPError struct, now we return the reason of the error from the server + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: a8ebeb95a5cd84ea46b5dedb487b276901580196 + note: Add body to client error responses + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 5ccea39dd4e8bf03139b64e07f7af025b84c5cd8 + note: |- + Merge pull request #25 from alejandrojnm/hostfix/add_function_firewall + + Hostfix/add function firewall + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 7b07ee24a3525d8de8e3ee1dda8b755f5cdea526 + note: |- + Merge pull request #24 from alejandrojnm/hotfix/urgent_fix + + Fix some issues with firewalls and load balancer structs + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 4f53b0218a35dbc39e02e756e1fe8ecb246ede28 + note: Change GetDNSRecord to find by ID not name + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: edfa55837775b27b8683ee9af5333740387fe22c + note: |- + Remove DNSDomainID from DNSRecordConfig + + Feels like that shouldn't be part of an update, so it's easier to specify: + + CreateDNSRecord(domainID string, r *DNSRecordConfig) + + for creating and just: + + UpdateDNSRecord(r *DNSRecord, rc *DNSRecordConfig) + + for updating. Also feels like the order should be "update X with Y" so DNSRecord + is first and DNSRecordConfig is second. + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: d8c0e9675381e118bb8f510c10ddd4120417b56d + note: |- + Merge pull request #23 from alejandrojnm/feature/update_dns_record + + Feature/update dns record + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 5ae22ab13db666397668c3fa83ea38e69d79a1e3 + note: Fix instance test + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: c470a7d51e1e71c1de6f5f9f9c0a2cac6f8e4c75 + note: Fix signature of SetInstanceTags + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 1032a3be04fa705d30221fcf4fb739c80600f290 + note: Add GetInstanceConsoleURL method + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: efbe8dbc06a3169ce046d2205395a27ba7c7331a + note: Check links in go documentation + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 83fdce86fa5e722f4dce62cafbbb9111ba68a161 + note: Change link to docs + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 7cbcb38c513e3b2fe42ef7480a0d0054c269abf1 + note: Update badges + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: f149ccdce08e326133fe16513b3e499303fe6fee + note: Fix tests after some minor refactoring + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: f0fa3a15db27988b4de21d7b14c7e9e4cdf8caaf + note: Change GB to Gigabytes + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 62a82aec36c7655126dd88cb20d05f447655ac66 + note: Fix lint issues + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 143ac3148aa72b247dd39af2225282ba3205b4da + note: |- + Change workflow to custom action + + The workflow version failed with "go env" not set, so switched to custom + version from https://stackoverflow.com/questions/59236611/github-actions-run-golint-on-wihdows + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 541c21a62f26842a3b4bc43ee66c1eea47b942bf + note: Move lint to its own action + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 4e265ae4f1fae45da83d060901125d7ce2b3982d + note: Use user-contributed lint action + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 0aa650f472ae4fec1696040b75b437d85320e58b + note: Install golint before running it + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 0bbdcd0cff82ea6bb1d9bd4fb7c5f91a6c74e599 + note: Add lint to tests and Go 1.14 + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: f2cd42c5c84822a9ac1c3a232da8bfefa2b76a02 + note: Add changelog + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: d9686526113499826afd4b2b5589b983dc224daa + note: Add Find* methods to all areas + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 8dafd66a091217f93726871970a852c50ff3e52a + note: Fix some linting issues with Kubernetes + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: dd906190213e1d954ab9e7a5cf384cbbd1fdedfb + note: Add LICENSE + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: ee8dab3b93a31c5d0bccac7f6f845a1b577af2b0 + note: Return an error if creating a client with an empty API key + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 1bfa0af0534d761f6fc73d1706b4922e3ba6d941 + note: Remove progress table from README as its now module complete + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 0471e7d2ba28233ff1fd60b0b8fc636178311cb5 + note: Add minor tweaks to Webhooks + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 2d7d45db3e0597fcd84e4f23306bfb0ae22c9e26 + note: |- + Merge pull request #21 from alejandrojnm/feature/webhook + + Add webhooks endpoints + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: fc4a75b783d1bbad1d7bd4f6cdde0ab0b45554b1 + note: Change minor naming issues in snapshot module + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 4b2ae45ccdd0d014d5b704f691bf075d79ab4292 + note: |- + Merge pull request #20 from alejandrojnm/feature/api_snapshots + + Feature/api snapshots + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 81e4652eaae0f4dc2e411751944fcad1d6fa1e66 + note: Fix a couple of comments + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 457dfa5d2a5712e0261b87433bf2a69276be22b6 + note: Add charge endpoint + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: f20cab75a729c4eee1f4978975a58520a39a6f73 + note: Change awkward names of units in field names + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 971a4a4718a87d5116396669c90f8ceb377439c2 + note: Add instance size endpoints + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 7b54da2cb550104a67e82da4d22fd1de6cd06971 + note: Add quota endpoint + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 66b590cc78a4c893ffb557e454563e9ca59c910e + note: Add region endpoint + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: e3433bb00eff673964bf28640aa71bd7d899cdff + note: Change List functions to be plural and prefixing DNS + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 43d6bc08956f7845f2429a8e8faa8887edfd9d52 + note: Update display of README progress + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: eacb35cab0d0d9ab3d04e43c3dc8b4bcff8f6bb3 + note: |- + Merge pull request #19 from alejandrojnm/hotfix/loadbalance_readme + + Add status to README and a small fix for Loadbalancer + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 41c7acb325009f5fde2a9b92a267b2cfade1290b + note: |- + Merge pull request #18 from alejandrojnm/master + + Update Readme.md to add module status + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 730f2dd40debc53b4fe3389b6f9cdf3cc620e3a0 + note: |- + Merge pull request #16 from alejandrojnm/add-kubernetes-apis + + Add Kubernetes apis + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: b8d5ddb852a3fd9b3c20d902e8895a1ee620cbf5 + note: Add minor changes to Load Balancer methods + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: e69c9746d6d7bbd2211c4abc1481f46503135ef2 + note: |- + Merge pull request #14 from alejandrojnm/feature/loadbalancer + + Add Load Balancer endpoints + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 5590adda1b4b5420c9d19ed900ba378d303b3a63 + note: |- + Merge pull request #11 from rberrelleza/get-record + + Add DNS record management + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 338c4dfdb9ab84aeb06d7358a8583d8194df0ad9 + note: |- + Merge pull request #12 from rberrelleza/add-owners + + Add a default owner for the repo + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 5378d41d0f19a14aa6a71646c11d412b0e9d36c5 + note: Add client.LastJSONResponse for the CLI to use + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: b3aba767c3d70f854069a85636b70f2983884646 + note: |- + Merge pull request #7 from rberrelleza/fix-casing-forms + + Change dnsconfig to `form` + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: f66cbcbb6f2d16db7b3091577a30bfc58fb611c4 + note: |- + Merge pull request #9 from alejandrojnm/hostfix-network + + Hotfix network + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: ab4ebaa89596799021be66d4adb7a172a8c753f0 + note: Change string to map of strings + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: a69bef1d9ea8463c546b54cd2bf1e52c4b15b324 + note: Cleanup some minor issues + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 3487081009646150d4cd44ee6774aa6b3e4a5cc7 + note: |- + Merge pull request #3 from rberrelleza/add-dns-apis + + Add DNS records endpoints + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 554cc2b36c626b59a5ef174380ae6c61b935f951 + note: |- + Merge pull request #4 from alejandrojnm/add-firewall-apis + + Add firewall endpoints + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 9e8048fc98ff620887057dfcf8e3e2752882516d + note: |- + Merge pull request #5 from alejandrojnm/add-volumes-apis + + Add volumes option to the civogo + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: bbb04c3d1af1ab96bb0e7ea4cd157480c25eff82 + note: |- + Merge pull request #6 from alejandrojnm/add-network-options + + Add network endpoints + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 57fae6917c372e1dbf8fa927c3d0cc5c770a5fc8 + note: Change order of automated tests + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: e6d1cdcbe3f473c3de7aac2e6a23ed81bb168932 + note: Ensure gofmt code compliance + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 5d9bf4a7ee1d758e426278525121a8f738b19c00 + note: Remove panic + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 50fd2f10b190a719e60bc5e48b19de9fc902b709 + note: Remove string interpolation, more go idiomatic this way + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 8e8caf0ad47fff2e62fadcf552eb5e4d66592e77 + note: Move JSON parsing for SimpleResponse to a helper method + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: a6d635388fa4a8a708b00b362c9a5d946779624b + note: Add CONTRIBUTING guide + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 1eabf12ecbbe2318011749069a761602c4988184 + note: Add status bage to README + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 2e043e1546b936f207b93eb6488da31a399a9f18 + note: Add Go module support + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: e9c407451c8caa0b91d55b2315323bae137a4124 + note: Add GitHub action to test golang + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 08e7668c39025c13262b3685ede9568667c84d96 + note: Fix tests + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 264d4c873ddc48f8b00f8aaaba44d97264f01d08 + note: Add Instance functions + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: cd217b8bbf02d8dd370fce08f64da5000f34e659 + note: Add Instance methods,first version + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 31634d0fc3a2ecf92a5f992bc82faf1d67d5b146 + note: Add tests for instance + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: dc16cca826555de0b1226064eef67e8d22e69f45 + note: Add Instance listing/fetching/creating + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 5e258256e4e9bbb76665dfbc5435d08ff5567439 + note: '- Add more options to the network options' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 6fbeb8a827c5f9b28a243165b5a31ed120baa196 + note: |- + - Add New network options + - Add Delete network options + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: e4a70af4d6c36c82dee1ddc015b02f7450b17465 + note: Add option to create a new network + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 3db7ca46a0208c62525443bd3bc680f2855b9b2e + note: Fix error in volumes.go in the VolumesConfig + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 52dca3536f567ec0ada3a13d8923bdc6598c88b1 + note: Add volumes option to the civogo + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 5aecfa1c5b38fb45443565cee4aa3a7f8718c228 + note: '- Fix a error in firewall.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 070605dee9a7ab13ae9dc6443aa628b93735cfc5 + note: '- Fix some error in firewall.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 572557b65acf6a0444d407bb8d85fee9b1dccaa0 + note: Add firewall option to the civogo + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: ebde1c1205efd5a21ff7931cb4c1f6aaa97aa650 + note: fix test + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 9c0f096760956e26781d06630fd055e90b80b928 + note: handle http errors + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 37733dc1cb98f5f4ab8eeb702e754ddca02be5ef + note: add tests + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 5f324bc9940b1b2f676a58faeebeec34ba182486 + note: Add functions to manipulate records + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 796741761997915ffece15e93d55c68a478930c3 + note: '- Fix a error network, now you can rename a network' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: cbeb0cd40a5b9be863e715f1b681298a92fa1049 + note: |- + Merge pull request #1 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 1ea969afe47fb4a2a0c1c4d8c45f6cfb8961b134 + note: change config for `form` + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: fb92d21fa6fad853937e6c44104b0e9df3b91115 + note: Add a default owner for the repo + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 3055381e458838dd5278daa93144d1ce9e82b3b7 + note: use Create instead of New + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 5c6fe06b4d2bac5093e0485ebb898216d27cc785 + note: New and delete Domain + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 9c28c61c82ce04c59a1d4c1b20a92ded718aa649 + note: add a result const + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 9df135c1f437b38ca5b6bbd8aa93f8a45f412d69 + note: fix GetDomain test + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 5bf0824610f72dd832d2ad0cbf684ae764dd2552 + note: get and list records + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: acb6cd6ac36758505dea3a868fcceb101b9ba425 + note: update and new domain + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 4048f9c18c147e8a4258a18170f01a085ebfa30e + note: '- Update name in loadbalancer_test.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: fea3cf5be57ec93b3e9052f6fd3e40f41bdea316 + note: '- Update the loadbalancer_test.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 84b247e534fa56e8b53b5a474f151df63371e768 + note: '- Fix some error in types in loadbalancer.go and loadbalancer_test.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: e2e8858b03fb2bb26df7853fa31e97fe762f889b + note: '- Now can add, delete update and list the load balance' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 4002274e27a2980ce88257ee8ffb51b5b25f5e9b + note: '- Initial files' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 2fdaa159c41e721e365dffe87ab33a84aa78b99f + note: '- Fix all recommendation from Andy, change NumTargetNodes from string to int, and in UpdateKubernetesClusters change map[string]string in favor of map[string]interface{}' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: fa67209028b2616a7128101cea1039dfac200467 + note: '- Fix all recommendation from Andy' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 7e0221f080d6ba59ffdcd1c08f3a96946e8cf453 + note: '- Final change in the kubernetes interface' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 9bb817f9d012fd569ce9577797408187aede4e82 + note: '- Some change in kubernetes' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 05711724bd7c1df917ba699a5b993eafee39f9a6 + note: '- First commit for kubernetes' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 58429347d9be7dd2c8f3db25e0596d60c2de3516 + note: '- Update README.md with a list of all modules' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 5a3cfcd6c379cc41d86f71a21ba0320db470a3e7 + note: |- + Merge pull request #3 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 311f778ec931617fe92fb795d62499a0c0eb599e + note: |- + Merge pull request #2 from civo/master + + Update + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 74877fa8e299032deeb3f0fdc189aaa333929b9a + note: '- Update README.md, Fix error in loadbalancer.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: d2ede4b06ad1b578c28736bcbf1d3051f5b97ad0 + note: '- Done the snapshot module' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: eaf506c73ee7d8681e716deef622f7cb3bcbcf8a + note: '- First part of the snapshot api' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 2408aaa379cf8c5acba5c31e64847cb10530d0a0 + note: Merge branch 'master' into feature/api_snapshots + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 6d43cd657bf1fb75fe9e7ee5faf0357909847867 + note: |- + Merge pull request #4 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 6e2137e8aa7c99e188592c97026908cdc7a84117 + note: |- + Merge pull request #5 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 467bd9a5d170511356b49c7a7a2d2780b25f02cd + note: '- Add webhook module' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 55ee07109c846cb600f98864aff6df16d9acb658 + note: |- + Merge pull request #6 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 2edd54691ce38cc5c3cb8bf4316cfa8030774aea + note: '- Fix some bug in dns.go dns_test.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 8ff8a494d235357be3a222c758a99c4879bf104f + note: '- Add option to update dns record' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 08c1c1989d6f1e213690cc66fbc0a6ede16bc603 + note: |- + Merge pull request #7 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 29eab04018cd7e38cabd9b76a9eca7841a4d9377 + note: |- + fix(loadbalancer): Fix data in test + + Fix data in the test of the loadbalancer + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 450e018849e739b2d5b38aa6449e61aa430f2ee6 + note: |- + fix(loadbalancer): Fix struct in loadbalancer + + Error in the struct of the loadbalancer configuration + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: f8658cf3a98c4a74c7e839b7bf914a502d6d066a + note: |- + fix(firewall): Fix error in firewall test + + Error in firewall_test.go + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 6b4ca011ae13951259053634016f04d7747cb9c9 + note: |- + fix(firewall): Fix struct in firewall + + Error in the struct of the firewall configuration and new creation + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 7f13e1c8323128da35faffd55c26cac0244a06f9 + note: '- Fix some bug in firewall.go and firewall_test.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 272359878aad1fefc046c00343bd731a4749ff13 + note: |- + Merge pull request #9 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: d118d875d3887b4ff64c415f29f7243db012bf89 + note: |- + Merge pull request #8 from civo/master + + Fix some linting issues with Kubernetes + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: aff666767bdbca9947863df2b4b4f093e3e6a2f5 + note: |- + fix(firewall): Change the id passed to the function + + Change the id name from idfirewall to firewallID + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: c480c52808b433d8919748b807c8e05e6810699b + note: |- + fix(firewall): Fix name in the firewall + + Fixed test + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 874f9ef69a736e3854aa28b9a806ee1aca24317e + note: |- + fix(firewall): Fix name in the firewall + + Fixed function name FindFirewallRules to FindFirewallRule + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 58a860321ed5dbc77fb93ad0034f8d29b005b139 + note: |- + feat(firewall): Add new option to search rule + + Added option to search rule inside a firewall rules list + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 53dc6a1e21508df425c12d3ab56674cbbef0be8c + note: |- + Merge pull request #11 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 99662c54e9b092e02309236c97ab882221f309a5 + note: |- + Merge pull request #10 from alejandrojnm/hotfix/urgent_fix + + - Fix some bug in firewall.go and firewall_test.go + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: fce968e2f9e9454836ec60c165f00267c2d0e4df + note: |- + updated README.md (#51) + + Corrections + author: + name: Amit Chaudhary + email: amit2cha@gmail.com + committer: + name: GitHub + email: noreply@github.com +- semver: 0.2.34 + date: 2021-03-16T12:31:02Z + packager: Andy Jeffries + changes: + - commit: a2afa1671eafbc1145bde3f39be8d2b16349bb43 + note: Fix more cases were we were updating a by-value array + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk +- semver: 0.2.33 + date: 2021-03-16T12:22:28Z + packager: Andy Jeffries + changes: + - commit: 1f6ff05c24e01bdec6250dffc3d403c2d2891e46 + note: Finding a volume by ID should work in the fake client + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk +- semver: 0.2.32 + date: 2021-03-11T10:02:16Z + packager: Andy Jeffries + changes: + - commit: 863f3d0d24f101ffa7d07bbe64971a72ea6917d2 + note: Update changelog + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 06e89ddac116fd7b811079a929d520c191b8472b + note: Add simple fake tests to ensure it conforms to the interface and the pattern works + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk +- semver: 0.2.31 + date: 2021-03-11T09:49:13Z + packager: Andy Jeffries + changes: + - commit: a5721041343cafe7e2cc7c527129f0782286121c + note: Fix error in NewFirewall definition for FakeClient + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk +- semver: 0.2.30 + date: 2021-03-10T13:51:04-05:00 + packager: Andy Jeffries + changes: + - commit: 318bdea6ebd40c0edb0afa024819baa736abbec8 + note: |- + Add fake client (#53) + + * Rename incorrectly named singular method + * Add a non-backend backed fake client for local tests that use civogo + * Fix issues with tests + author: + name: Andy Jeffries + email: andy@civo.com + committer: + name: GitHub + email: noreply@github.com + - commit: ed132dec901c76543ccef5fac8f6288f80187db1 + note: Updated the changelog + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 43e5e9a89fb7bdf03d65682afebe0f07fade2b43 + note: Added new fields to kubernetes struct + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 699e53929987df042438444281d58d8071363803 + note: Updated the changelog + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 1e9c4c700ffaa9b0fc037ca667e3610f47871e06 + note: Merge branch 'master' of https://github.com/civo/civogo + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: ff8a577c5c93b2258016910721533fa98de080f8 + note: Fixed error in the struct for InstalledApplication in kubernetes + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 0cf2bd6e0417c94bf0461137d7aaa2298874bb8d + note: Updated the changelog + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: f173564c6be0f5b7d6e72d4274bf902afdc0280d + note: Added network to the firewall struct + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: e2bd46f772f32145e74633c0973c7edccf776b8e + note: Added GetDefaultRegion to the region + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 9c6173fb794c52dc6c33d1dd6f4117bb7d6cf2a3 + note: Updated the changelog + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 79f15aa1d17f1641461787b0acaa41f6f4e71658 + note: Added default field to the region + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: b45dffe1afcb096985322f20956734e4b80f74d8 + note: Updated the changelog + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 19e61587c19d7e959a5fb67bc43d2e673c0cb4da + note: |- + Feature/add region (#50) + + * Added the region to the client, also add new error to the handler and add region to kubernetes + * Update the civogo lib to use region in all request + author: + name: Alejandro J. Nuñez Madrazo + email: alejandro@civo.com + committer: + name: GitHub + email: noreply@github.com + - commit: dfcbfaecabd8590f6ce0cbd49fddd32f61075b4f + note: |- + Clusternames should be considered case insensitive (#49) + + This commit makes the following changes: + * FindKubernetesCluster is case insensitive now + * Test FindKubernetesCluster for case insensitivity + + The current implementation is not optimal though, as the fuzzy matching does not fully support Unicode. + However this should fix most issues for now. + author: + name: Björn Heinrichs + email: BjoernAkAManf@users.noreply.github.com + committer: + name: GitHub + email: noreply@github.com + - commit: c237384c2566853c1874618b56f3808c0d57d343 + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: c5ae6fb346f25352c77277c5494a75837e815aff + note: Fixed check in handler for errors + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 5564e23594cba6c56411471181fd4818e3234687 + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 346fe0ff40991b8d166dee7bc68048925f20e0ce + note: |- + Fixed lint check in the actions + Close #47 + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: a0333a838477b52afbe49d784c04c3a1a9c324d8 + note: |- + Fixed some bugs in the error handler + Close #44 #45 + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: ce2a8a202812a703836bb25deb3ad2c058b55b29 + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 3c3da053c9c572c0cf8fa53fbdb34fb66ecadf76 + note: Added option to use proxy if is present in the system + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: d6c63e6316bffa2d8475ad49aeb67a078aeec921 + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 405567d04342264662a1b2534c7625f2dfc6c20d + note: |- + Fixed the recycle option in Kubernetes + Close #43 + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 4b69a79706e406f55059e5001b56c48d851c71bf + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 8ac5d69e54e7a2062a658fcb408c9c3df36bbcb4 + note: Updated all find function to all command + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: dd52c16377b510e6f3204428e91864f57b206bcb + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: e7cd9f3bf9eca1b133fe7ea581fe9e9082d9fb50 + note: Fixed an error in the struct of the creation of intances + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: ede2e4c16f26ee40d2f6667b0a3ae6f5997f77d9 + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: c1e741339cf2649d23be4221038a341f70354f72 + note: Added two more error to the error handler + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: b0996760a7f270ab96b1fa1bddeca3fce677a523 + note: Fixed error in the DNS test + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: d6191cc66fa48dd378750b1cbe1b7a916ed1581c + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 6e3d7b1e23638f3e547dfbf46721b73156de5f5b + note: Added new record type to DNS + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: fc9cd8ff4b520e066d91684776f14805029b5715 + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 7a0e384f1a206b5e2947bfdb13d80cc6f36ace21 + note: improved error handling in the library + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 0aa9f6bf5ff71f44df9898cd9b2e76b68b0d8749 + note: |- + Update test.yml + + remove macos + author: + name: Alejandro J. Nuñez Madrazo + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 73500add744d21de8426963d233fb1130c88a354 + note: |- + Update test.yml + + use 'os' instead of 'platform' for job matrices + author: + name: Alejandro J. Nuñez Madrazo + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: f3d121d848f622ab2484d64fc438deaa2b825f9c + note: |- + Update test.yml + + Left alone Go 1.14 for the test + author: + name: Alejandro J. Nuñez Madrazo + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 2df11af67fb7cb803025322e6b9ec3d01c62c5de + note: |- + Update test.yml + + Remove test form Go 1.12 and added test form 1.15 + author: + name: Alejandro J. Nuñez Madrazo + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: c024bec299949116e03727b2b5a21c657267f3c9 + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: d8b735350335f4d83b5aca63df666c0e0301c716 + note: Updated all test + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 63a3ae563a9598e217d72f4556b498a689b27db1 + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 4095fdfc81941f24ec77f72fe6b85a8c5f320667 + note: Added constant errors to the lib + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: b11ac2760e0169dc9892d7787a0c61d8c7a50a84 + note: Update the chnage log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 59a86819f532221f86fe0482eb5a6786c3253b85 + note: Added FindTemplate fucntion to the template module + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 4cc1b488aa148a9733b6e2d3309264df8e57ba87 + note: Update the change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 21b44c0e538c42e386ababbdaec877e28ca2d0e1 + note: |- + Revert "Update the change log" + + This reverts commit 8cfac7bccda269767dad34f431659476da3718a5. + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 8cfac7bccda269767dad34f431659476da3718a5 + note: Update the change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: c983d56e0287a996bfb8ef625b4be075400b85e3 + note: |- + Add constant errors (#41) + + * Added a constant errors + * Added error handler to the system + * Modify the error handler for kubernetes module + * Fix message in the errors.go + * Added new feature + * Added all error declaration and the editorconfig + * Added the rest of the errors + * Added the decoder to the rest of controller + * Removed unnecessary comment + * Added a new error help to README + author: + name: Alejandro J. Nuñez Madrazo + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: f6135e298230a0bab389fdcc1e9ff257e4b393b7 + note: |- + Added CPU, RAM and SSD fields to Instance struct + and KubernetesInstance struct + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: b74d3224c16f179105b2ca0f604a8431279d9170 + note: |- + Added new feature + + added master_ip to the kubernetes response, + to be able to use it in the cli and in the terraform provider + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: c49389ab6568b274fd5d1127c0faf14fe06728b7 + note: Fixed error in the cluster upgrade cmd + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 9c3921814c5ee645a864f0d762884d30752dd21a + note: Add the new UpgradeAvailableTo field to KubernetesCluster + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 59b86eba96a0a68b46c42b949dbbec76901875f7 + note: |- + Change application struct in the kubernetes module (#39) + + * fix(kubernetes): Change application struct + + - Change the applications struct, the configuration field, add custom struct for that field + + BREAKING CHANGE: No + + * fix(kubernetes): Added comment in struct + + - Added comment to the ApplicationConfiguration struct inside kubernetes module + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: c1839b96b8a3ca88404da075e0bbf648f0f95d32 + note: |- + Change application struct in kubernetes + + Change the applications struct, the `default` field from string to bool + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 923b509b5ba5e589ad2ce0138e561ecbf192b9ee + note: |- + added new way to search in network + + Add the option to search by Label when you use the FindNetwork + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 1906a5fcaf704a03f48ca52f2e66d38b32f134ce + note: |- + feat(kubernetes): new added option at the moment scaling down the cluster (#35) + + Now if you are scaling down by one, you can give a hint on the node's + name to be destroyed using the node_destroy param + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 6ce671a875acd36a36314b9a98fd3f864ce67cf7 + note: |- + Add pagination for Kubernetes clusters (#34) + + * (hotfix) changed the kubernetes cluster config + + - Modify the kubernetes cluster config to add pagination + - Changed the old kubernetesCluster in favor of kubernetesItem + + BREAKING CHANGE: No + + * (hotfix) fixed comment + + - fix comment inside kubernetes.go + + BREAKING CHANGE: No + + * (hotfix) fixed code style + + - fix code style in kubernetes.go + + BREAKING CHANGE: No + + * refactor(kubernetes): modify the struct for kubernets object + + - modify the struct for kubernets object + - fixed error in code + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com +- semver: 0.2.29 + date: 2021-02-28T18:11:43-05:00 + packager: Andy Jeffries + changes: + - commit: ed132dec901c76543ccef5fac8f6288f80187db1 + note: Updated the changelog + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 43e5e9a89fb7bdf03d65682afebe0f07fade2b43 + note: Added new fields to kubernetes struct + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com +- semver: 0.2.28 + date: 2021-02-26T08:51:12-05:00 + packager: Andy Jeffries + changes: + - commit: 699e53929987df042438444281d58d8071363803 + note: Updated the changelog + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 1e9c4c700ffaa9b0fc037ca667e3610f47871e06 + note: Merge branch 'master' of https://github.com/civo/civogo + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: ff8a577c5c93b2258016910721533fa98de080f8 + note: Fixed error in the struct for InstalledApplication in kubernetes + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 0cf2bd6e0417c94bf0461137d7aaa2298874bb8d + note: Updated the changelog + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com +- semver: 0.2.27 + date: 2021-02-09T22:41:07-05:00 + packager: Andy Jeffries + changes: + - commit: f173564c6be0f5b7d6e72d4274bf902afdc0280d + note: Added network to the firewall struct + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com +- semver: 0.2.26 + date: 2021-02-09T10:29:08-05:00 + packager: Andy Jeffries + changes: + - commit: e2bd46f772f32145e74633c0973c7edccf776b8e + note: Added GetDefaultRegion to the region + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 9c6173fb794c52dc6c33d1dd6f4117bb7d6cf2a3 + note: Updated the changelog + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com +- semver: 0.2.25 + date: 2021-02-09T09:40:24-05:00 + packager: Andy Jeffries + changes: + - commit: 79f15aa1d17f1641461787b0acaa41f6f4e71658 + note: Added default field to the region + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: b45dffe1afcb096985322f20956734e4b80f74d8 + note: Updated the changelog + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com +- semver: 0.2.24 + date: 2021-02-08T10:10:36-05:00 + packager: Andy Jeffries + changes: + - commit: 19e61587c19d7e959a5fb67bc43d2e673c0cb4da + note: |- + Feature/add region (#50) + + * Added the region to the client, also add new error to the handler and add region to kubernetes + * Update the civogo lib to use region in all request + author: + name: Alejandro J. Nuñez Madrazo + email: alejandro@civo.com + committer: + name: GitHub + email: noreply@github.com + - commit: dfcbfaecabd8590f6ce0cbd49fddd32f61075b4f + note: |- + Clusternames should be considered case insensitive (#49) + + This commit makes the following changes: + * FindKubernetesCluster is case insensitive now + * Test FindKubernetesCluster for case insensitivity + + The current implementation is not optimal though, as the fuzzy matching does not fully support Unicode. + However this should fix most issues for now. + author: + name: Björn Heinrichs + email: BjoernAkAManf@users.noreply.github.com + committer: + name: GitHub + email: noreply@github.com +- semver: 0.2.23 + date: 2020-12-04T12:14:41-05:00 + packager: Andy Jeffries + changes: + - commit: c237384c2566853c1874618b56f3808c0d57d343 + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: c5ae6fb346f25352c77277c5494a75837e815aff + note: Fixed check in handler for errors + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com +- semver: 0.2.22 + date: 2020-11-17T20:44:23-05:00 + packager: Andy Jeffries + changes: + - commit: 5564e23594cba6c56411471181fd4818e3234687 + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 346fe0ff40991b8d166dee7bc68048925f20e0ce + note: |- + Fixed lint check in the actions + Close #47 + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: a0333a838477b52afbe49d784c04c3a1a9c324d8 + note: |- + Fixed some bugs in the error handler + Close #44 #45 + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com +- semver: 0.2.21 + date: 2020-10-31T12:07:22-04:00 + packager: Andy Jeffries + changes: + - commit: ce2a8a202812a703836bb25deb3ad2c058b55b29 + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 3c3da053c9c572c0cf8fa53fbdb34fb66ecadf76 + note: Added option to use proxy if is present in the system + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com +- semver: 0.2.20 + date: 2020-10-30T23:17:49-04:00 + packager: Andy Jeffries + changes: + - commit: d6c63e6316bffa2d8475ad49aeb67a078aeec921 + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 405567d04342264662a1b2534c7625f2dfc6c20d + note: |- + Fixed the recycle option in Kubernetes + Close #43 + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 4b69a79706e406f55059e5001b56c48d851c71bf + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 8ac5d69e54e7a2062a658fcb408c9c3df36bbcb4 + note: Updated all find function to all command + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: dd52c16377b510e6f3204428e91864f57b206bcb + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: e7cd9f3bf9eca1b133fe7ea581fe9e9082d9fb50 + note: Fixed an error in the struct of the creation of intances + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: ede2e4c16f26ee40d2f6667b0a3ae6f5997f77d9 + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: c1e741339cf2649d23be4221038a341f70354f72 + note: Added two more error to the error handler + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: b0996760a7f270ab96b1fa1bddeca3fce677a523 + note: Fixed error in the DNS test + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: d6191cc66fa48dd378750b1cbe1b7a916ed1581c + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 6e3d7b1e23638f3e547dfbf46721b73156de5f5b + note: Added new record type to DNS + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: fc9cd8ff4b520e066d91684776f14805029b5715 + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 7a0e384f1a206b5e2947bfdb13d80cc6f36ace21 + note: improved error handling in the library + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 0aa9f6bf5ff71f44df9898cd9b2e76b68b0d8749 + note: |- + Update test.yml + + remove macos + author: + name: Alejandro J. Nuñez Madrazo + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 73500add744d21de8426963d233fb1130c88a354 + note: |- + Update test.yml + + use 'os' instead of 'platform' for job matrices + author: + name: Alejandro J. Nuñez Madrazo + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: f3d121d848f622ab2484d64fc438deaa2b825f9c + note: |- + Update test.yml + + Left alone Go 1.14 for the test + author: + name: Alejandro J. Nuñez Madrazo + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 2df11af67fb7cb803025322e6b9ec3d01c62c5de + note: |- + Update test.yml + + Remove test form Go 1.12 and added test form 1.15 + author: + name: Alejandro J. Nuñez Madrazo + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: c024bec299949116e03727b2b5a21c657267f3c9 + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: d8b735350335f4d83b5aca63df666c0e0301c716 + note: Updated all test + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 63a3ae563a9598e217d72f4556b498a689b27db1 + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 4095fdfc81941f24ec77f72fe6b85a8c5f320667 + note: Added constant errors to the lib + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: b11ac2760e0169dc9892d7787a0c61d8c7a50a84 + note: Update the chnage log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 59a86819f532221f86fe0482eb5a6786c3253b85 + note: Added FindTemplate fucntion to the template module + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 4cc1b488aa148a9733b6e2d3309264df8e57ba87 + note: Update the change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 21b44c0e538c42e386ababbdaec877e28ca2d0e1 + note: |- + Revert "Update the change log" + + This reverts commit 8cfac7bccda269767dad34f431659476da3718a5. + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 8cfac7bccda269767dad34f431659476da3718a5 + note: Update the change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: c983d56e0287a996bfb8ef625b4be075400b85e3 + note: |- + Add constant errors (#41) + + * Added a constant errors + * Added error handler to the system + * Modify the error handler for kubernetes module + * Fix message in the errors.go + * Added new feature + * Added all error declaration and the editorconfig + * Added the rest of the errors + * Added the decoder to the rest of controller + * Removed unnecessary comment + * Added a new error help to README + author: + name: Alejandro J. Nuñez Madrazo + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: f6135e298230a0bab389fdcc1e9ff257e4b393b7 + note: |- + Added CPU, RAM and SSD fields to Instance struct + and KubernetesInstance struct + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: b74d3224c16f179105b2ca0f604a8431279d9170 + note: |- + Added new feature + + added master_ip to the kubernetes response, + to be able to use it in the cli and in the terraform provider + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: c49389ab6568b274fd5d1127c0faf14fe06728b7 + note: Fixed error in the cluster upgrade cmd + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 9c3921814c5ee645a864f0d762884d30752dd21a + note: Add the new UpgradeAvailableTo field to KubernetesCluster + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 59b86eba96a0a68b46c42b949dbbec76901875f7 + note: |- + Change application struct in the kubernetes module (#39) + + * fix(kubernetes): Change application struct + + - Change the applications struct, the configuration field, add custom struct for that field + + BREAKING CHANGE: No + + * fix(kubernetes): Added comment in struct + + - Added comment to the ApplicationConfiguration struct inside kubernetes module + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: c1839b96b8a3ca88404da075e0bbf648f0f95d32 + note: |- + Change application struct in kubernetes + + Change the applications struct, the `default` field from string to bool + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 923b509b5ba5e589ad2ce0138e561ecbf192b9ee + note: |- + added new way to search in network + + Add the option to search by Label when you use the FindNetwork + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 1906a5fcaf704a03f48ca52f2e66d38b32f134ce + note: |- + feat(kubernetes): new added option at the moment scaling down the cluster (#35) + + Now if you are scaling down by one, you can give a hint on the node's + name to be destroyed using the node_destroy param + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 6ce671a875acd36a36314b9a98fd3f864ce67cf7 + note: |- + Add pagination for Kubernetes clusters (#34) + + * (hotfix) changed the kubernetes cluster config + + - Modify the kubernetes cluster config to add pagination + - Changed the old kubernetesCluster in favor of kubernetesItem + + BREAKING CHANGE: No + + * (hotfix) fixed comment + + - fix comment inside kubernetes.go + + BREAKING CHANGE: No + + * (hotfix) fixed code style + + - fix code style in kubernetes.go + + BREAKING CHANGE: No + + * refactor(kubernetes): modify the struct for kubernets object + + - modify the struct for kubernets object + - fixed error in code + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 77d299673245240c5e0e1804975de4d7aee02d9a + note: |- + (hotfix) change snapshot config + + - remove `form` from snapshot config and change by `json` + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk +- semver: 0.2.19 + date: 2020-09-25T13:27:33-04:00 + packager: Andy Jeffries + changes: + - commit: dd52c16377b510e6f3204428e91864f57b206bcb + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: e7cd9f3bf9eca1b133fe7ea581fe9e9082d9fb50 + note: Fixed an error in the struct of the creation of intances + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com +- semver: 0.2.18 + date: 2020-09-23T10:44:54-04:00 + packager: Andy Jeffries + changes: + - commit: ede2e4c16f26ee40d2f6667b0a3ae6f5997f77d9 + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: c1e741339cf2649d23be4221038a341f70354f72 + note: Added two more error to the error handler + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: b0996760a7f270ab96b1fa1bddeca3fce677a523 + note: Fixed error in the DNS test + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com +- semver: 0.2.17 + date: 2020-09-12T22:13:34-04:00 + packager: Andy Jeffries + changes: + - commit: d6191cc66fa48dd378750b1cbe1b7a916ed1581c + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 6e3d7b1e23638f3e547dfbf46721b73156de5f5b + note: Added new record type to DNS + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com +- semver: 0.2.16 + date: 2020-08-24T15:13:17-04:00 + packager: Andy Jeffries + changes: + - commit: fc9cd8ff4b520e066d91684776f14805029b5715 + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 7a0e384f1a206b5e2947bfdb13d80cc6f36ace21 + note: improved error handling in the library + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com +- semver: 0.2.15 + date: 2020-08-17T13:22:37-04:00 + packager: Andy Jeffries + changes: + - commit: 0aa9f6bf5ff71f44df9898cd9b2e76b68b0d8749 + note: |- + Update test.yml + + remove macos + author: + name: Alejandro J. Nuñez Madrazo + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 73500add744d21de8426963d233fb1130c88a354 + note: |- + Update test.yml + + use 'os' instead of 'platform' for job matrices + author: + name: Alejandro J. Nuñez Madrazo + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: f3d121d848f622ab2484d64fc438deaa2b825f9c + note: |- + Update test.yml + + Left alone Go 1.14 for the test + author: + name: Alejandro J. Nuñez Madrazo + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 2df11af67fb7cb803025322e6b9ec3d01c62c5de + note: |- + Update test.yml + + Remove test form Go 1.12 and added test form 1.15 + author: + name: Alejandro J. Nuñez Madrazo + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: c024bec299949116e03727b2b5a21c657267f3c9 + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: d8b735350335f4d83b5aca63df666c0e0301c716 + note: Updated all test + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 63a3ae563a9598e217d72f4556b498a689b27db1 + note: Update Change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 4095fdfc81941f24ec77f72fe6b85a8c5f320667 + note: Added constant errors to the lib + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com +- semver: 0.2.14 + date: 2020-08-11T10:30:25-04:00 + packager: Andy Jeffries + changes: + - commit: b11ac2760e0169dc9892d7787a0c61d8c7a50a84 + note: Update the chnage log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 59a86819f532221f86fe0482eb5a6786c3253b85 + note: Added FindTemplate fucntion to the template module + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 4cc1b488aa148a9733b6e2d3309264df8e57ba87 + note: Update the change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 21b44c0e538c42e386ababbdaec877e28ca2d0e1 + note: |- + Revert "Update the change log" + + This reverts commit 8cfac7bccda269767dad34f431659476da3718a5. + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 8cfac7bccda269767dad34f431659476da3718a5 + note: Update the change log + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com +- semver: 0.2.13 + date: 2020-07-31T10:25:57-04:00 + packager: Andy Jeffries + changes: + - commit: c983d56e0287a996bfb8ef625b4be075400b85e3 + note: |- + Add constant errors (#41) + + * Added a constant errors + * Added error handler to the system + * Modify the error handler for kubernetes module + * Fix message in the errors.go + * Added new feature + * Added all error declaration and the editorconfig + * Added the rest of the errors + * Added the decoder to the rest of controller + * Removed unnecessary comment + * Added a new error help to README + author: + name: Alejandro J. Nuñez Madrazo + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com +- semver: 0.2.12 + date: 2020-07-07T09:45:00-04:00 + packager: Andy Jeffries + changes: + - commit: f6135e298230a0bab389fdcc1e9ff257e4b393b7 + note: |- + Added CPU, RAM and SSD fields to Instance struct + and KubernetesInstance struct + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com +- semver: 0.2.11 + date: 2020-07-06T09:23:57-04:00 + packager: Andy Jeffries + changes: + - commit: b74d3224c16f179105b2ca0f604a8431279d9170 + note: |- + Added new feature + + added master_ip to the kubernetes response, + to be able to use it in the cli and in the terraform provider + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com +- semver: 0.2.10 + date: 2020-06-24T11:05:24-04:00 + packager: Andy Jeffries + changes: + - commit: c49389ab6568b274fd5d1127c0faf14fe06728b7 + note: Fixed error in the cluster upgrade cmd + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 9c3921814c5ee645a864f0d762884d30752dd21a + note: Add the new UpgradeAvailableTo field to KubernetesCluster + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 59b86eba96a0a68b46c42b949dbbec76901875f7 + note: |- + Change application struct in the kubernetes module (#39) + + * fix(kubernetes): Change application struct + + - Change the applications struct, the configuration field, add custom struct for that field + + BREAKING CHANGE: No + + * fix(kubernetes): Added comment in struct + + - Added comment to the ApplicationConfiguration struct inside kubernetes module + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: c1839b96b8a3ca88404da075e0bbf648f0f95d32 + note: |- + Change application struct in kubernetes + + Change the applications struct, the `default` field from string to bool + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 923b509b5ba5e589ad2ce0138e561ecbf192b9ee + note: |- + added new way to search in network + + Add the option to search by Label when you use the FindNetwork + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 1906a5fcaf704a03f48ca52f2e66d38b32f134ce + note: |- + feat(kubernetes): new added option at the moment scaling down the cluster (#35) + + Now if you are scaling down by one, you can give a hint on the node's + name to be destroyed using the node_destroy param + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 6ce671a875acd36a36314b9a98fd3f864ce67cf7 + note: |- + Add pagination for Kubernetes clusters (#34) + + * (hotfix) changed the kubernetes cluster config + + - Modify the kubernetes cluster config to add pagination + - Changed the old kubernetesCluster in favor of kubernetesItem + + BREAKING CHANGE: No + + * (hotfix) fixed comment + + - fix comment inside kubernetes.go + + BREAKING CHANGE: No + + * (hotfix) fixed code style + + - fix code style in kubernetes.go + + BREAKING CHANGE: No + + * refactor(kubernetes): modify the struct for kubernets object + + - modify the struct for kubernets object + - fixed error in code + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 77d299673245240c5e0e1804975de4d7aee02d9a + note: |- + (hotfix) change snapshot config + + - remove `form` from snapshot config and change by `json` + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: d0635c7e96f4509ebdabe9a4deb8acc0cc0c26d4 + note: Change PublicIPRequired to a string to support IP moving + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk +- semver: 0.2.9 + date: 2020-06-19T16:00:53+01:00 + packager: Andy Jeffries + changes: + - commit: 9c3921814c5ee645a864f0d762884d30752dd21a + note: Add the new UpgradeAvailableTo field to KubernetesCluster + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk +- semver: 0.2.8 + date: 2020-05-12T15:17:52+01:00 + packager: Andy Jeffries + changes: + - commit: 59b86eba96a0a68b46c42b949dbbec76901875f7 + note: |- + Change application struct in the kubernetes module (#39) + + * fix(kubernetes): Change application struct + + - Change the applications struct, the configuration field, add custom struct for that field + + BREAKING CHANGE: No + + * fix(kubernetes): Added comment in struct + + - Added comment to the ApplicationConfiguration struct inside kubernetes module + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com +- semver: 0.2.7 + date: 2020-05-10T22:41:39-04:00 + packager: Andy Jeffries + changes: + - commit: c1839b96b8a3ca88404da075e0bbf648f0f95d32 + note: |- + Change application struct in kubernetes + + Change the applications struct, the `default` field from string to bool + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com +- semver: 0.2.6 + date: 2020-05-06T12:11:08-04:00 + packager: Andy Jeffries + changes: + - commit: 923b509b5ba5e589ad2ce0138e561ecbf192b9ee + note: |- + added new way to search in network + + Add the option to search by Label when you use the FindNetwork + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com +- semver: 0.2.5 + date: 2020-04-15T14:49:35+01:00 + packager: Andy Jeffries + changes: + - commit: 1906a5fcaf704a03f48ca52f2e66d38b32f134ce + note: |- + feat(kubernetes): new added option at the moment scaling down the cluster (#35) + + Now if you are scaling down by one, you can give a hint on the node's + name to be destroyed using the node_destroy param + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com +- semver: 0.2.4 + date: 2020-04-07T14:50:23+01:00 + packager: Andy Jeffries + changes: + - commit: 6ce671a875acd36a36314b9a98fd3f864ce67cf7 + note: |- + Add pagination for Kubernetes clusters (#34) + + * (hotfix) changed the kubernetes cluster config + + - Modify the kubernetes cluster config to add pagination + - Changed the old kubernetesCluster in favor of kubernetesItem + + BREAKING CHANGE: No + + * (hotfix) fixed comment + + - fix comment inside kubernetes.go + + BREAKING CHANGE: No + + * (hotfix) fixed code style + + - fix code style in kubernetes.go + + BREAKING CHANGE: No + + * refactor(kubernetes): modify the struct for kubernets object + + - modify the struct for kubernets object + - fixed error in code + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 77d299673245240c5e0e1804975de4d7aee02d9a + note: |- + (hotfix) change snapshot config + + - remove `form` from snapshot config and change by `json` + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: d0635c7e96f4509ebdabe9a4deb8acc0cc0c26d4 + note: Change PublicIPRequired to a string to support IP moving + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: c73d51fa77fac7f76213c697982fce3c3dfe7f0d + note: |- + add template endpoints + + * add new feature to Template module + + - You can now list all templates, create a new one, update and delete any templates that belonged to the user + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: d20f49e0bb1d86ab27b776e668a94f9cc006304d + note: Minor tweaks to SSH key struct + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: f5eab5e2065315493319829ed213b2732e80f154 + note: |- + update the ssh key file + + Fix some bug reported, in comment and variables + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: fdf845a601aac8e283f0bdb580c41018d3b737cc + note: |- + Add new option to ssh + + Now you can create, update and delete the ssh keys, at the same time we add ID to the client to return the ID when the backend does it, as in the case of creating an ssh key + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 95ae34b13fe3a49d18805975a5691e7f37c93c63 + note: Fail the build if any lint issues + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 588340b6dfe663e4b7b7dd13b5bc36f1523a538e + note: |- + add rename endpoint for firewall + + Now you can rename a firewall using RenameFirewall function, It is no + longer necessary to delete the firewall to rename it + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 0961777679546b5521fbc9a7bf0c0b292dd53c9b + note: |- + Updated the lib to use json and not form for all request + + * We change the client to send all request in JSON format, to avoid build a custom form procesator + * Fix failing test - had trailing whitespace + * Change all test to use the new way in client.go + * Add Reason to the HTTPError struct, now we return the reason of the error from the server + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: a8ebeb95a5cd84ea46b5dedb487b276901580196 + note: Add body to client error responses + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 5ccea39dd4e8bf03139b64e07f7af025b84c5cd8 + note: |- + Merge pull request #25 from alejandrojnm/hostfix/add_function_firewall + + Hostfix/add function firewall + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 7b07ee24a3525d8de8e3ee1dda8b755f5cdea526 + note: |- + Merge pull request #24 from alejandrojnm/hotfix/urgent_fix + + Fix some issues with firewalls and load balancer structs + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 4f53b0218a35dbc39e02e756e1fe8ecb246ede28 + note: Change GetDNSRecord to find by ID not name + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: edfa55837775b27b8683ee9af5333740387fe22c + note: |- + Remove DNSDomainID from DNSRecordConfig + + Feels like that shouldn't be part of an update, so it's easier to specify: + + CreateDNSRecord(domainID string, r *DNSRecordConfig) + + for creating and just: + + UpdateDNSRecord(r *DNSRecord, rc *DNSRecordConfig) + + for updating. Also feels like the order should be "update X with Y" so DNSRecord + is first and DNSRecordConfig is second. + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: d8c0e9675381e118bb8f510c10ddd4120417b56d + note: |- + Merge pull request #23 from alejandrojnm/feature/update_dns_record + + Feature/update dns record + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 5ae22ab13db666397668c3fa83ea38e69d79a1e3 + note: Fix instance test + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: c470a7d51e1e71c1de6f5f9f9c0a2cac6f8e4c75 + note: Fix signature of SetInstanceTags + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 1032a3be04fa705d30221fcf4fb739c80600f290 + note: Add GetInstanceConsoleURL method + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: efbe8dbc06a3169ce046d2205395a27ba7c7331a + note: Check links in go documentation + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 83fdce86fa5e722f4dce62cafbbb9111ba68a161 + note: Change link to docs + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 7cbcb38c513e3b2fe42ef7480a0d0054c269abf1 + note: Update badges + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: f149ccdce08e326133fe16513b3e499303fe6fee + note: Fix tests after some minor refactoring + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: f0fa3a15db27988b4de21d7b14c7e9e4cdf8caaf + note: Change GB to Gigabytes + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 62a82aec36c7655126dd88cb20d05f447655ac66 + note: Fix lint issues + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 143ac3148aa72b247dd39af2225282ba3205b4da + note: |- + Change workflow to custom action + + The workflow version failed with "go env" not set, so switched to custom + version from https://stackoverflow.com/questions/59236611/github-actions-run-golint-on-wihdows + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 541c21a62f26842a3b4bc43ee66c1eea47b942bf + note: Move lint to its own action + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 4e265ae4f1fae45da83d060901125d7ce2b3982d + note: Use user-contributed lint action + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 0aa650f472ae4fec1696040b75b437d85320e58b + note: Install golint before running it + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 0bbdcd0cff82ea6bb1d9bd4fb7c5f91a6c74e599 + note: Add lint to tests and Go 1.14 + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: f2cd42c5c84822a9ac1c3a232da8bfefa2b76a02 + note: Add changelog + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: d9686526113499826afd4b2b5589b983dc224daa + note: Add Find* methods to all areas + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 8dafd66a091217f93726871970a852c50ff3e52a + note: Fix some linting issues with Kubernetes + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: dd906190213e1d954ab9e7a5cf384cbbd1fdedfb + note: Add LICENSE + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: ee8dab3b93a31c5d0bccac7f6f845a1b577af2b0 + note: Return an error if creating a client with an empty API key + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 1bfa0af0534d761f6fc73d1706b4922e3ba6d941 + note: Remove progress table from README as its now module complete + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 0471e7d2ba28233ff1fd60b0b8fc636178311cb5 + note: Add minor tweaks to Webhooks + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 2d7d45db3e0597fcd84e4f23306bfb0ae22c9e26 + note: |- + Merge pull request #21 from alejandrojnm/feature/webhook + + Add webhooks endpoints + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: fc4a75b783d1bbad1d7bd4f6cdde0ab0b45554b1 + note: Change minor naming issues in snapshot module + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 4b2ae45ccdd0d014d5b704f691bf075d79ab4292 + note: |- + Merge pull request #20 from alejandrojnm/feature/api_snapshots + + Feature/api snapshots + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 81e4652eaae0f4dc2e411751944fcad1d6fa1e66 + note: Fix a couple of comments + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 457dfa5d2a5712e0261b87433bf2a69276be22b6 + note: Add charge endpoint + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: f20cab75a729c4eee1f4978975a58520a39a6f73 + note: Change awkward names of units in field names + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 971a4a4718a87d5116396669c90f8ceb377439c2 + note: Add instance size endpoints + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 7b54da2cb550104a67e82da4d22fd1de6cd06971 + note: Add quota endpoint + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 66b590cc78a4c893ffb557e454563e9ca59c910e + note: Add region endpoint + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: e3433bb00eff673964bf28640aa71bd7d899cdff + note: Change List functions to be plural and prefixing DNS + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 43d6bc08956f7845f2429a8e8faa8887edfd9d52 + note: Update display of README progress + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: eacb35cab0d0d9ab3d04e43c3dc8b4bcff8f6bb3 + note: |- + Merge pull request #19 from alejandrojnm/hotfix/loadbalance_readme + + Add status to README and a small fix for Loadbalancer + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 41c7acb325009f5fde2a9b92a267b2cfade1290b + note: |- + Merge pull request #18 from alejandrojnm/master + + Update Readme.md to add module status + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 730f2dd40debc53b4fe3389b6f9cdf3cc620e3a0 + note: |- + Merge pull request #16 from alejandrojnm/add-kubernetes-apis + + Add Kubernetes apis + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: b8d5ddb852a3fd9b3c20d902e8895a1ee620cbf5 + note: Add minor changes to Load Balancer methods + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: e69c9746d6d7bbd2211c4abc1481f46503135ef2 + note: |- + Merge pull request #14 from alejandrojnm/feature/loadbalancer + + Add Load Balancer endpoints + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 5590adda1b4b5420c9d19ed900ba378d303b3a63 + note: |- + Merge pull request #11 from rberrelleza/get-record + + Add DNS record management + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 338c4dfdb9ab84aeb06d7358a8583d8194df0ad9 + note: |- + Merge pull request #12 from rberrelleza/add-owners + + Add a default owner for the repo + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 5378d41d0f19a14aa6a71646c11d412b0e9d36c5 + note: Add client.LastJSONResponse for the CLI to use + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: b3aba767c3d70f854069a85636b70f2983884646 + note: |- + Merge pull request #7 from rberrelleza/fix-casing-forms + + Change dnsconfig to `form` + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: f66cbcbb6f2d16db7b3091577a30bfc58fb611c4 + note: |- + Merge pull request #9 from alejandrojnm/hostfix-network + + Hotfix network + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: ab4ebaa89596799021be66d4adb7a172a8c753f0 + note: Change string to map of strings + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: a69bef1d9ea8463c546b54cd2bf1e52c4b15b324 + note: Cleanup some minor issues + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 3487081009646150d4cd44ee6774aa6b3e4a5cc7 + note: |- + Merge pull request #3 from rberrelleza/add-dns-apis + + Add DNS records endpoints + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 554cc2b36c626b59a5ef174380ae6c61b935f951 + note: |- + Merge pull request #4 from alejandrojnm/add-firewall-apis + + Add firewall endpoints + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 9e8048fc98ff620887057dfcf8e3e2752882516d + note: |- + Merge pull request #5 from alejandrojnm/add-volumes-apis + + Add volumes option to the civogo + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: bbb04c3d1af1ab96bb0e7ea4cd157480c25eff82 + note: |- + Merge pull request #6 from alejandrojnm/add-network-options + + Add network endpoints + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 57fae6917c372e1dbf8fa927c3d0cc5c770a5fc8 + note: Change order of automated tests + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: e6d1cdcbe3f473c3de7aac2e6a23ed81bb168932 + note: Ensure gofmt code compliance + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 5d9bf4a7ee1d758e426278525121a8f738b19c00 + note: Remove panic + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 50fd2f10b190a719e60bc5e48b19de9fc902b709 + note: Remove string interpolation, more go idiomatic this way + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 8e8caf0ad47fff2e62fadcf552eb5e4d66592e77 + note: Move JSON parsing for SimpleResponse to a helper method + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: a6d635388fa4a8a708b00b362c9a5d946779624b + note: Add CONTRIBUTING guide + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 1eabf12ecbbe2318011749069a761602c4988184 + note: Add status bage to README + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 2e043e1546b936f207b93eb6488da31a399a9f18 + note: Add Go module support + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: e9c407451c8caa0b91d55b2315323bae137a4124 + note: Add GitHub action to test golang + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 08e7668c39025c13262b3685ede9568667c84d96 + note: Fix tests + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 264d4c873ddc48f8b00f8aaaba44d97264f01d08 + note: Add Instance functions + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: cd217b8bbf02d8dd370fce08f64da5000f34e659 + note: Add Instance methods,first version + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 31634d0fc3a2ecf92a5f992bc82faf1d67d5b146 + note: Add tests for instance + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: dc16cca826555de0b1226064eef67e8d22e69f45 + note: Add Instance listing/fetching/creating + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 5e258256e4e9bbb76665dfbc5435d08ff5567439 + note: '- Add more options to the network options' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 6fbeb8a827c5f9b28a243165b5a31ed120baa196 + note: |- + - Add New network options + - Add Delete network options + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: e4a70af4d6c36c82dee1ddc015b02f7450b17465 + note: Add option to create a new network + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 3db7ca46a0208c62525443bd3bc680f2855b9b2e + note: Fix error in volumes.go in the VolumesConfig + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 52dca3536f567ec0ada3a13d8923bdc6598c88b1 + note: Add volumes option to the civogo + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 5aecfa1c5b38fb45443565cee4aa3a7f8718c228 + note: '- Fix a error in firewall.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 070605dee9a7ab13ae9dc6443aa628b93735cfc5 + note: '- Fix some error in firewall.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 572557b65acf6a0444d407bb8d85fee9b1dccaa0 + note: Add firewall option to the civogo + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: ebde1c1205efd5a21ff7931cb4c1f6aaa97aa650 + note: fix test + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 9c0f096760956e26781d06630fd055e90b80b928 + note: handle http errors + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 37733dc1cb98f5f4ab8eeb702e754ddca02be5ef + note: add tests + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 5f324bc9940b1b2f676a58faeebeec34ba182486 + note: Add functions to manipulate records + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 796741761997915ffece15e93d55c68a478930c3 + note: '- Fix a error network, now you can rename a network' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: cbeb0cd40a5b9be863e715f1b681298a92fa1049 + note: |- + Merge pull request #1 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 1ea969afe47fb4a2a0c1c4d8c45f6cfb8961b134 + note: change config for `form` + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: fb92d21fa6fad853937e6c44104b0e9df3b91115 + note: Add a default owner for the repo + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 3055381e458838dd5278daa93144d1ce9e82b3b7 + note: use Create instead of New + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 5c6fe06b4d2bac5093e0485ebb898216d27cc785 + note: New and delete Domain + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 9c28c61c82ce04c59a1d4c1b20a92ded718aa649 + note: add a result const + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 9df135c1f437b38ca5b6bbd8aa93f8a45f412d69 + note: fix GetDomain test + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 5bf0824610f72dd832d2ad0cbf684ae764dd2552 + note: get and list records + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: acb6cd6ac36758505dea3a868fcceb101b9ba425 + note: update and new domain + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 4048f9c18c147e8a4258a18170f01a085ebfa30e + note: '- Update name in loadbalancer_test.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: fea3cf5be57ec93b3e9052f6fd3e40f41bdea316 + note: '- Update the loadbalancer_test.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 84b247e534fa56e8b53b5a474f151df63371e768 + note: '- Fix some error in types in loadbalancer.go and loadbalancer_test.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: e2e8858b03fb2bb26df7853fa31e97fe762f889b + note: '- Now can add, delete update and list the load balance' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 4002274e27a2980ce88257ee8ffb51b5b25f5e9b + note: '- Initial files' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 2fdaa159c41e721e365dffe87ab33a84aa78b99f + note: '- Fix all recommendation from Andy, change NumTargetNodes from string to int, and in UpdateKubernetesClusters change map[string]string in favor of map[string]interface{}' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: fa67209028b2616a7128101cea1039dfac200467 + note: '- Fix all recommendation from Andy' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 7e0221f080d6ba59ffdcd1c08f3a96946e8cf453 + note: '- Final change in the kubernetes interface' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 9bb817f9d012fd569ce9577797408187aede4e82 + note: '- Some change in kubernetes' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 05711724bd7c1df917ba699a5b993eafee39f9a6 + note: '- First commit for kubernetes' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 58429347d9be7dd2c8f3db25e0596d60c2de3516 + note: '- Update README.md with a list of all modules' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 5a3cfcd6c379cc41d86f71a21ba0320db470a3e7 + note: |- + Merge pull request #3 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 311f778ec931617fe92fb795d62499a0c0eb599e + note: |- + Merge pull request #2 from civo/master + + Update + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 74877fa8e299032deeb3f0fdc189aaa333929b9a + note: '- Update README.md, Fix error in loadbalancer.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: d2ede4b06ad1b578c28736bcbf1d3051f5b97ad0 + note: '- Done the snapshot module' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: eaf506c73ee7d8681e716deef622f7cb3bcbcf8a + note: '- First part of the snapshot api' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 2408aaa379cf8c5acba5c31e64847cb10530d0a0 + note: Merge branch 'master' into feature/api_snapshots + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 6d43cd657bf1fb75fe9e7ee5faf0357909847867 + note: |- + Merge pull request #4 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 6e2137e8aa7c99e188592c97026908cdc7a84117 + note: |- + Merge pull request #5 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 467bd9a5d170511356b49c7a7a2d2780b25f02cd + note: '- Add webhook module' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 55ee07109c846cb600f98864aff6df16d9acb658 + note: |- + Merge pull request #6 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 2edd54691ce38cc5c3cb8bf4316cfa8030774aea + note: '- Fix some bug in dns.go dns_test.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 8ff8a494d235357be3a222c758a99c4879bf104f + note: '- Add option to update dns record' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 08c1c1989d6f1e213690cc66fbc0a6ede16bc603 + note: |- + Merge pull request #7 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 29eab04018cd7e38cabd9b76a9eca7841a4d9377 + note: |- + fix(loadbalancer): Fix data in test + + Fix data in the test of the loadbalancer + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 450e018849e739b2d5b38aa6449e61aa430f2ee6 + note: |- + fix(loadbalancer): Fix struct in loadbalancer + + Error in the struct of the loadbalancer configuration + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: f8658cf3a98c4a74c7e839b7bf914a502d6d066a + note: |- + fix(firewall): Fix error in firewall test + + Error in firewall_test.go + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 6b4ca011ae13951259053634016f04d7747cb9c9 + note: |- + fix(firewall): Fix struct in firewall + + Error in the struct of the firewall configuration and new creation + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 7f13e1c8323128da35faffd55c26cac0244a06f9 + note: '- Fix some bug in firewall.go and firewall_test.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 272359878aad1fefc046c00343bd731a4749ff13 + note: |- + Merge pull request #9 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: d118d875d3887b4ff64c415f29f7243db012bf89 + note: |- + Merge pull request #8 from civo/master + + Fix some linting issues with Kubernetes + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: aff666767bdbca9947863df2b4b4f093e3e6a2f5 + note: |- + fix(firewall): Change the id passed to the function + + Change the id name from idfirewall to firewallID + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: c480c52808b433d8919748b807c8e05e6810699b + note: |- + fix(firewall): Fix name in the firewall + + Fixed test + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 874f9ef69a736e3854aa28b9a806ee1aca24317e + note: |- + fix(firewall): Fix name in the firewall + + Fixed function name FindFirewallRules to FindFirewallRule + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 58a860321ed5dbc77fb93ad0034f8d29b005b139 + note: |- + feat(firewall): Add new option to search rule + + Added option to search rule inside a firewall rules list + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 53dc6a1e21508df425c12d3ab56674cbbef0be8c + note: |- + Merge pull request #11 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 99662c54e9b092e02309236c97ab882221f309a5 + note: |- + Merge pull request #10 from alejandrojnm/hotfix/urgent_fix + + - Fix some bug in firewall.go and firewall_test.go + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com +- semver: 0.2.3 + date: 2020-04-03T15:55:34+01:00 + packager: Andy Jeffries + changes: + - commit: 77d299673245240c5e0e1804975de4d7aee02d9a + note: |- + (hotfix) change snapshot config + + - remove `form` from snapshot config and change by `json` + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: d0635c7e96f4509ebdabe9a4deb8acc0cc0c26d4 + note: Change PublicIPRequired to a string to support IP moving + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: c73d51fa77fac7f76213c697982fce3c3dfe7f0d + note: |- + add template endpoints + + * add new feature to Template module + + - You can now list all templates, create a new one, update and delete any templates that belonged to the user + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: d20f49e0bb1d86ab27b776e668a94f9cc006304d + note: Minor tweaks to SSH key struct + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: f5eab5e2065315493319829ed213b2732e80f154 + note: |- + update the ssh key file + + Fix some bug reported, in comment and variables + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: fdf845a601aac8e283f0bdb580c41018d3b737cc + note: |- + Add new option to ssh + + Now you can create, update and delete the ssh keys, at the same time we add ID to the client to return the ID when the backend does it, as in the case of creating an ssh key + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 95ae34b13fe3a49d18805975a5691e7f37c93c63 + note: Fail the build if any lint issues + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 588340b6dfe663e4b7b7dd13b5bc36f1523a538e + note: |- + add rename endpoint for firewall + + Now you can rename a firewall using RenameFirewall function, It is no + longer necessary to delete the firewall to rename it + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 0961777679546b5521fbc9a7bf0c0b292dd53c9b + note: |- + Updated the lib to use json and not form for all request + + * We change the client to send all request in JSON format, to avoid build a custom form procesator + * Fix failing test - had trailing whitespace + * Change all test to use the new way in client.go + * Add Reason to the HTTPError struct, now we return the reason of the error from the server + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: a8ebeb95a5cd84ea46b5dedb487b276901580196 + note: Add body to client error responses + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 5ccea39dd4e8bf03139b64e07f7af025b84c5cd8 + note: |- + Merge pull request #25 from alejandrojnm/hostfix/add_function_firewall + + Hostfix/add function firewall + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 7b07ee24a3525d8de8e3ee1dda8b755f5cdea526 + note: |- + Merge pull request #24 from alejandrojnm/hotfix/urgent_fix + + Fix some issues with firewalls and load balancer structs + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 4f53b0218a35dbc39e02e756e1fe8ecb246ede28 + note: Change GetDNSRecord to find by ID not name + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: edfa55837775b27b8683ee9af5333740387fe22c + note: |- + Remove DNSDomainID from DNSRecordConfig + + Feels like that shouldn't be part of an update, so it's easier to specify: + + CreateDNSRecord(domainID string, r *DNSRecordConfig) + + for creating and just: + + UpdateDNSRecord(r *DNSRecord, rc *DNSRecordConfig) + + for updating. Also feels like the order should be "update X with Y" so DNSRecord + is first and DNSRecordConfig is second. + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: d8c0e9675381e118bb8f510c10ddd4120417b56d + note: |- + Merge pull request #23 from alejandrojnm/feature/update_dns_record + + Feature/update dns record + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 5ae22ab13db666397668c3fa83ea38e69d79a1e3 + note: Fix instance test + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: c470a7d51e1e71c1de6f5f9f9c0a2cac6f8e4c75 + note: Fix signature of SetInstanceTags + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 1032a3be04fa705d30221fcf4fb739c80600f290 + note: Add GetInstanceConsoleURL method + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: efbe8dbc06a3169ce046d2205395a27ba7c7331a + note: Check links in go documentation + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 83fdce86fa5e722f4dce62cafbbb9111ba68a161 + note: Change link to docs + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 7cbcb38c513e3b2fe42ef7480a0d0054c269abf1 + note: Update badges + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: f149ccdce08e326133fe16513b3e499303fe6fee + note: Fix tests after some minor refactoring + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: f0fa3a15db27988b4de21d7b14c7e9e4cdf8caaf + note: Change GB to Gigabytes + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 62a82aec36c7655126dd88cb20d05f447655ac66 + note: Fix lint issues + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 143ac3148aa72b247dd39af2225282ba3205b4da + note: |- + Change workflow to custom action + + The workflow version failed with "go env" not set, so switched to custom + version from https://stackoverflow.com/questions/59236611/github-actions-run-golint-on-wihdows + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 541c21a62f26842a3b4bc43ee66c1eea47b942bf + note: Move lint to its own action + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 4e265ae4f1fae45da83d060901125d7ce2b3982d + note: Use user-contributed lint action + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 0aa650f472ae4fec1696040b75b437d85320e58b + note: Install golint before running it + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 0bbdcd0cff82ea6bb1d9bd4fb7c5f91a6c74e599 + note: Add lint to tests and Go 1.14 + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: f2cd42c5c84822a9ac1c3a232da8bfefa2b76a02 + note: Add changelog + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: d9686526113499826afd4b2b5589b983dc224daa + note: Add Find* methods to all areas + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 8dafd66a091217f93726871970a852c50ff3e52a + note: Fix some linting issues with Kubernetes + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: dd906190213e1d954ab9e7a5cf384cbbd1fdedfb + note: Add LICENSE + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: ee8dab3b93a31c5d0bccac7f6f845a1b577af2b0 + note: Return an error if creating a client with an empty API key + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 1bfa0af0534d761f6fc73d1706b4922e3ba6d941 + note: Remove progress table from README as its now module complete + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 0471e7d2ba28233ff1fd60b0b8fc636178311cb5 + note: Add minor tweaks to Webhooks + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 2d7d45db3e0597fcd84e4f23306bfb0ae22c9e26 + note: |- + Merge pull request #21 from alejandrojnm/feature/webhook + + Add webhooks endpoints + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: fc4a75b783d1bbad1d7bd4f6cdde0ab0b45554b1 + note: Change minor naming issues in snapshot module + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 4b2ae45ccdd0d014d5b704f691bf075d79ab4292 + note: |- + Merge pull request #20 from alejandrojnm/feature/api_snapshots + + Feature/api snapshots + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 81e4652eaae0f4dc2e411751944fcad1d6fa1e66 + note: Fix a couple of comments + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 457dfa5d2a5712e0261b87433bf2a69276be22b6 + note: Add charge endpoint + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: f20cab75a729c4eee1f4978975a58520a39a6f73 + note: Change awkward names of units in field names + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 971a4a4718a87d5116396669c90f8ceb377439c2 + note: Add instance size endpoints + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 7b54da2cb550104a67e82da4d22fd1de6cd06971 + note: Add quota endpoint + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 66b590cc78a4c893ffb557e454563e9ca59c910e + note: Add region endpoint + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: e3433bb00eff673964bf28640aa71bd7d899cdff + note: Change List functions to be plural and prefixing DNS + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 43d6bc08956f7845f2429a8e8faa8887edfd9d52 + note: Update display of README progress + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: eacb35cab0d0d9ab3d04e43c3dc8b4bcff8f6bb3 + note: |- + Merge pull request #19 from alejandrojnm/hotfix/loadbalance_readme + + Add status to README and a small fix for Loadbalancer + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 41c7acb325009f5fde2a9b92a267b2cfade1290b + note: |- + Merge pull request #18 from alejandrojnm/master + + Update Readme.md to add module status + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 730f2dd40debc53b4fe3389b6f9cdf3cc620e3a0 + note: |- + Merge pull request #16 from alejandrojnm/add-kubernetes-apis + + Add Kubernetes apis + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: b8d5ddb852a3fd9b3c20d902e8895a1ee620cbf5 + note: Add minor changes to Load Balancer methods + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: e69c9746d6d7bbd2211c4abc1481f46503135ef2 + note: |- + Merge pull request #14 from alejandrojnm/feature/loadbalancer + + Add Load Balancer endpoints + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 5590adda1b4b5420c9d19ed900ba378d303b3a63 + note: |- + Merge pull request #11 from rberrelleza/get-record + + Add DNS record management + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 338c4dfdb9ab84aeb06d7358a8583d8194df0ad9 + note: |- + Merge pull request #12 from rberrelleza/add-owners + + Add a default owner for the repo + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 5378d41d0f19a14aa6a71646c11d412b0e9d36c5 + note: Add client.LastJSONResponse for the CLI to use + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: b3aba767c3d70f854069a85636b70f2983884646 + note: |- + Merge pull request #7 from rberrelleza/fix-casing-forms + + Change dnsconfig to `form` + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: f66cbcbb6f2d16db7b3091577a30bfc58fb611c4 + note: |- + Merge pull request #9 from alejandrojnm/hostfix-network + + Hotfix network + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: ab4ebaa89596799021be66d4adb7a172a8c753f0 + note: Change string to map of strings + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: a69bef1d9ea8463c546b54cd2bf1e52c4b15b324 + note: Cleanup some minor issues + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 3487081009646150d4cd44ee6774aa6b3e4a5cc7 + note: |- + Merge pull request #3 from rberrelleza/add-dns-apis + + Add DNS records endpoints + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 554cc2b36c626b59a5ef174380ae6c61b935f951 + note: |- + Merge pull request #4 from alejandrojnm/add-firewall-apis + + Add firewall endpoints + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 9e8048fc98ff620887057dfcf8e3e2752882516d + note: |- + Merge pull request #5 from alejandrojnm/add-volumes-apis + + Add volumes option to the civogo + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: bbb04c3d1af1ab96bb0e7ea4cd157480c25eff82 + note: |- + Merge pull request #6 from alejandrojnm/add-network-options + + Add network endpoints + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 57fae6917c372e1dbf8fa927c3d0cc5c770a5fc8 + note: Change order of automated tests + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: e6d1cdcbe3f473c3de7aac2e6a23ed81bb168932 + note: Ensure gofmt code compliance + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 5d9bf4a7ee1d758e426278525121a8f738b19c00 + note: Remove panic + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 50fd2f10b190a719e60bc5e48b19de9fc902b709 + note: Remove string interpolation, more go idiomatic this way + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 8e8caf0ad47fff2e62fadcf552eb5e4d66592e77 + note: Move JSON parsing for SimpleResponse to a helper method + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: a6d635388fa4a8a708b00b362c9a5d946779624b + note: Add CONTRIBUTING guide + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 1eabf12ecbbe2318011749069a761602c4988184 + note: Add status bage to README + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 2e043e1546b936f207b93eb6488da31a399a9f18 + note: Add Go module support + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: e9c407451c8caa0b91d55b2315323bae137a4124 + note: Add GitHub action to test golang + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 08e7668c39025c13262b3685ede9568667c84d96 + note: Fix tests + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 264d4c873ddc48f8b00f8aaaba44d97264f01d08 + note: Add Instance functions + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: cd217b8bbf02d8dd370fce08f64da5000f34e659 + note: Add Instance methods,first version + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 31634d0fc3a2ecf92a5f992bc82faf1d67d5b146 + note: Add tests for instance + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: dc16cca826555de0b1226064eef67e8d22e69f45 + note: Add Instance listing/fetching/creating + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 5e258256e4e9bbb76665dfbc5435d08ff5567439 + note: '- Add more options to the network options' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 6fbeb8a827c5f9b28a243165b5a31ed120baa196 + note: |- + - Add New network options + - Add Delete network options + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: e4a70af4d6c36c82dee1ddc015b02f7450b17465 + note: Add option to create a new network + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 3db7ca46a0208c62525443bd3bc680f2855b9b2e + note: Fix error in volumes.go in the VolumesConfig + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 52dca3536f567ec0ada3a13d8923bdc6598c88b1 + note: Add volumes option to the civogo + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 5aecfa1c5b38fb45443565cee4aa3a7f8718c228 + note: '- Fix a error in firewall.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 070605dee9a7ab13ae9dc6443aa628b93735cfc5 + note: '- Fix some error in firewall.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 572557b65acf6a0444d407bb8d85fee9b1dccaa0 + note: Add firewall option to the civogo + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: ebde1c1205efd5a21ff7931cb4c1f6aaa97aa650 + note: fix test + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 9c0f096760956e26781d06630fd055e90b80b928 + note: handle http errors + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 37733dc1cb98f5f4ab8eeb702e754ddca02be5ef + note: add tests + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 5f324bc9940b1b2f676a58faeebeec34ba182486 + note: Add functions to manipulate records + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 796741761997915ffece15e93d55c68a478930c3 + note: '- Fix a error network, now you can rename a network' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: cbeb0cd40a5b9be863e715f1b681298a92fa1049 + note: |- + Merge pull request #1 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 1ea969afe47fb4a2a0c1c4d8c45f6cfb8961b134 + note: change config for `form` + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: fb92d21fa6fad853937e6c44104b0e9df3b91115 + note: Add a default owner for the repo + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 3055381e458838dd5278daa93144d1ce9e82b3b7 + note: use Create instead of New + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 5c6fe06b4d2bac5093e0485ebb898216d27cc785 + note: New and delete Domain + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 9c28c61c82ce04c59a1d4c1b20a92ded718aa649 + note: add a result const + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 9df135c1f437b38ca5b6bbd8aa93f8a45f412d69 + note: fix GetDomain test + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 5bf0824610f72dd832d2ad0cbf684ae764dd2552 + note: get and list records + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: acb6cd6ac36758505dea3a868fcceb101b9ba425 + note: update and new domain + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 4048f9c18c147e8a4258a18170f01a085ebfa30e + note: '- Update name in loadbalancer_test.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: fea3cf5be57ec93b3e9052f6fd3e40f41bdea316 + note: '- Update the loadbalancer_test.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 84b247e534fa56e8b53b5a474f151df63371e768 + note: '- Fix some error in types in loadbalancer.go and loadbalancer_test.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: e2e8858b03fb2bb26df7853fa31e97fe762f889b + note: '- Now can add, delete update and list the load balance' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 4002274e27a2980ce88257ee8ffb51b5b25f5e9b + note: '- Initial files' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 2fdaa159c41e721e365dffe87ab33a84aa78b99f + note: '- Fix all recommendation from Andy, change NumTargetNodes from string to int, and in UpdateKubernetesClusters change map[string]string in favor of map[string]interface{}' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: fa67209028b2616a7128101cea1039dfac200467 + note: '- Fix all recommendation from Andy' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 7e0221f080d6ba59ffdcd1c08f3a96946e8cf453 + note: '- Final change in the kubernetes interface' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 9bb817f9d012fd569ce9577797408187aede4e82 + note: '- Some change in kubernetes' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 05711724bd7c1df917ba699a5b993eafee39f9a6 + note: '- First commit for kubernetes' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 58429347d9be7dd2c8f3db25e0596d60c2de3516 + note: '- Update README.md with a list of all modules' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 5a3cfcd6c379cc41d86f71a21ba0320db470a3e7 + note: |- + Merge pull request #3 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 311f778ec931617fe92fb795d62499a0c0eb599e + note: |- + Merge pull request #2 from civo/master + + Update + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 74877fa8e299032deeb3f0fdc189aaa333929b9a + note: '- Update README.md, Fix error in loadbalancer.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: d2ede4b06ad1b578c28736bcbf1d3051f5b97ad0 + note: '- Done the snapshot module' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: eaf506c73ee7d8681e716deef622f7cb3bcbcf8a + note: '- First part of the snapshot api' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 2408aaa379cf8c5acba5c31e64847cb10530d0a0 + note: Merge branch 'master' into feature/api_snapshots + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 6d43cd657bf1fb75fe9e7ee5faf0357909847867 + note: |- + Merge pull request #4 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 6e2137e8aa7c99e188592c97026908cdc7a84117 + note: |- + Merge pull request #5 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 467bd9a5d170511356b49c7a7a2d2780b25f02cd + note: '- Add webhook module' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 55ee07109c846cb600f98864aff6df16d9acb658 + note: |- + Merge pull request #6 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 2edd54691ce38cc5c3cb8bf4316cfa8030774aea + note: '- Fix some bug in dns.go dns_test.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 8ff8a494d235357be3a222c758a99c4879bf104f + note: '- Add option to update dns record' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 08c1c1989d6f1e213690cc66fbc0a6ede16bc603 + note: |- + Merge pull request #7 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 29eab04018cd7e38cabd9b76a9eca7841a4d9377 + note: |- + fix(loadbalancer): Fix data in test + + Fix data in the test of the loadbalancer + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 450e018849e739b2d5b38aa6449e61aa430f2ee6 + note: |- + fix(loadbalancer): Fix struct in loadbalancer + + Error in the struct of the loadbalancer configuration + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: f8658cf3a98c4a74c7e839b7bf914a502d6d066a + note: |- + fix(firewall): Fix error in firewall test + + Error in firewall_test.go + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 6b4ca011ae13951259053634016f04d7747cb9c9 + note: |- + fix(firewall): Fix struct in firewall + + Error in the struct of the firewall configuration and new creation + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 7f13e1c8323128da35faffd55c26cac0244a06f9 + note: '- Fix some bug in firewall.go and firewall_test.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 272359878aad1fefc046c00343bd731a4749ff13 + note: |- + Merge pull request #9 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: d118d875d3887b4ff64c415f29f7243db012bf89 + note: |- + Merge pull request #8 from civo/master + + Fix some linting issues with Kubernetes + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: aff666767bdbca9947863df2b4b4f093e3e6a2f5 + note: |- + fix(firewall): Change the id passed to the function + + Change the id name from idfirewall to firewallID + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: c480c52808b433d8919748b807c8e05e6810699b + note: |- + fix(firewall): Fix name in the firewall + + Fixed test + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 874f9ef69a736e3854aa28b9a806ee1aca24317e + note: |- + fix(firewall): Fix name in the firewall + + Fixed function name FindFirewallRules to FindFirewallRule + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 58a860321ed5dbc77fb93ad0034f8d29b005b139 + note: |- + feat(firewall): Add new option to search rule + + Added option to search rule inside a firewall rules list + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 53dc6a1e21508df425c12d3ab56674cbbef0be8c + note: |- + Merge pull request #11 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 99662c54e9b092e02309236c97ab882221f309a5 + note: |- + Merge pull request #10 from alejandrojnm/hotfix/urgent_fix + + - Fix some bug in firewall.go and firewall_test.go + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com +- semver: 0.2.2 + date: 2020-03-27T12:22:39Z + packager: Andy Jeffries + changes: + - commit: d0635c7e96f4509ebdabe9a4deb8acc0cc0c26d4 + note: Change PublicIPRequired to a string to support IP moving + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: c73d51fa77fac7f76213c697982fce3c3dfe7f0d + note: |- + add template endpoints + + * add new feature to Template module + + - You can now list all templates, create a new one, update and delete any templates that belonged to the user + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: d20f49e0bb1d86ab27b776e668a94f9cc006304d + note: Minor tweaks to SSH key struct + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: f5eab5e2065315493319829ed213b2732e80f154 + note: |- + update the ssh key file + + Fix some bug reported, in comment and variables + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: fdf845a601aac8e283f0bdb580c41018d3b737cc + note: |- + Add new option to ssh + + Now you can create, update and delete the ssh keys, at the same time we add ID to the client to return the ID when the backend does it, as in the case of creating an ssh key + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 95ae34b13fe3a49d18805975a5691e7f37c93c63 + note: Fail the build if any lint issues + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 588340b6dfe663e4b7b7dd13b5bc36f1523a538e + note: |- + add rename endpoint for firewall + + Now you can rename a firewall using RenameFirewall function, It is no + longer necessary to delete the firewall to rename it + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 0961777679546b5521fbc9a7bf0c0b292dd53c9b + note: |- + Updated the lib to use json and not form for all request + + * We change the client to send all request in JSON format, to avoid build a custom form procesator + * Fix failing test - had trailing whitespace + * Change all test to use the new way in client.go + * Add Reason to the HTTPError struct, now we return the reason of the error from the server + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: a8ebeb95a5cd84ea46b5dedb487b276901580196 + note: Add body to client error responses + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 5ccea39dd4e8bf03139b64e07f7af025b84c5cd8 + note: |- + Merge pull request #25 from alejandrojnm/hostfix/add_function_firewall + + Hostfix/add function firewall + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 7b07ee24a3525d8de8e3ee1dda8b755f5cdea526 + note: |- + Merge pull request #24 from alejandrojnm/hotfix/urgent_fix + + Fix some issues with firewalls and load balancer structs + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 4f53b0218a35dbc39e02e756e1fe8ecb246ede28 + note: Change GetDNSRecord to find by ID not name + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: edfa55837775b27b8683ee9af5333740387fe22c + note: |- + Remove DNSDomainID from DNSRecordConfig + + Feels like that shouldn't be part of an update, so it's easier to specify: + + CreateDNSRecord(domainID string, r *DNSRecordConfig) + + for creating and just: + + UpdateDNSRecord(r *DNSRecord, rc *DNSRecordConfig) + + for updating. Also feels like the order should be "update X with Y" so DNSRecord + is first and DNSRecordConfig is second. + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: d8c0e9675381e118bb8f510c10ddd4120417b56d + note: |- + Merge pull request #23 from alejandrojnm/feature/update_dns_record + + Feature/update dns record + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 5ae22ab13db666397668c3fa83ea38e69d79a1e3 + note: Fix instance test + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: c470a7d51e1e71c1de6f5f9f9c0a2cac6f8e4c75 + note: Fix signature of SetInstanceTags + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 1032a3be04fa705d30221fcf4fb739c80600f290 + note: Add GetInstanceConsoleURL method + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: efbe8dbc06a3169ce046d2205395a27ba7c7331a + note: Check links in go documentation + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 83fdce86fa5e722f4dce62cafbbb9111ba68a161 + note: Change link to docs + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 7cbcb38c513e3b2fe42ef7480a0d0054c269abf1 + note: Update badges + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: f149ccdce08e326133fe16513b3e499303fe6fee + note: Fix tests after some minor refactoring + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: f0fa3a15db27988b4de21d7b14c7e9e4cdf8caaf + note: Change GB to Gigabytes + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 62a82aec36c7655126dd88cb20d05f447655ac66 + note: Fix lint issues + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 143ac3148aa72b247dd39af2225282ba3205b4da + note: |- + Change workflow to custom action + + The workflow version failed with "go env" not set, so switched to custom + version from https://stackoverflow.com/questions/59236611/github-actions-run-golint-on-wihdows + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 541c21a62f26842a3b4bc43ee66c1eea47b942bf + note: Move lint to its own action + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 4e265ae4f1fae45da83d060901125d7ce2b3982d + note: Use user-contributed lint action + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 0aa650f472ae4fec1696040b75b437d85320e58b + note: Install golint before running it + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 0bbdcd0cff82ea6bb1d9bd4fb7c5f91a6c74e599 + note: Add lint to tests and Go 1.14 + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: f2cd42c5c84822a9ac1c3a232da8bfefa2b76a02 + note: Add changelog + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: d9686526113499826afd4b2b5589b983dc224daa + note: Add Find* methods to all areas + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 8dafd66a091217f93726871970a852c50ff3e52a + note: Fix some linting issues with Kubernetes + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: dd906190213e1d954ab9e7a5cf384cbbd1fdedfb + note: Add LICENSE + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: ee8dab3b93a31c5d0bccac7f6f845a1b577af2b0 + note: Return an error if creating a client with an empty API key + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 1bfa0af0534d761f6fc73d1706b4922e3ba6d941 + note: Remove progress table from README as its now module complete + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 0471e7d2ba28233ff1fd60b0b8fc636178311cb5 + note: Add minor tweaks to Webhooks + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 2d7d45db3e0597fcd84e4f23306bfb0ae22c9e26 + note: |- + Merge pull request #21 from alejandrojnm/feature/webhook + + Add webhooks endpoints + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: fc4a75b783d1bbad1d7bd4f6cdde0ab0b45554b1 + note: Change minor naming issues in snapshot module + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 4b2ae45ccdd0d014d5b704f691bf075d79ab4292 + note: |- + Merge pull request #20 from alejandrojnm/feature/api_snapshots + + Feature/api snapshots + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 81e4652eaae0f4dc2e411751944fcad1d6fa1e66 + note: Fix a couple of comments + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 457dfa5d2a5712e0261b87433bf2a69276be22b6 + note: Add charge endpoint + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: f20cab75a729c4eee1f4978975a58520a39a6f73 + note: Change awkward names of units in field names + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 971a4a4718a87d5116396669c90f8ceb377439c2 + note: Add instance size endpoints + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 7b54da2cb550104a67e82da4d22fd1de6cd06971 + note: Add quota endpoint + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 66b590cc78a4c893ffb557e454563e9ca59c910e + note: Add region endpoint + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: e3433bb00eff673964bf28640aa71bd7d899cdff + note: Change List functions to be plural and prefixing DNS + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 43d6bc08956f7845f2429a8e8faa8887edfd9d52 + note: Update display of README progress + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: eacb35cab0d0d9ab3d04e43c3dc8b4bcff8f6bb3 + note: |- + Merge pull request #19 from alejandrojnm/hotfix/loadbalance_readme + + Add status to README and a small fix for Loadbalancer + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 41c7acb325009f5fde2a9b92a267b2cfade1290b + note: |- + Merge pull request #18 from alejandrojnm/master + + Update Readme.md to add module status + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 730f2dd40debc53b4fe3389b6f9cdf3cc620e3a0 + note: |- + Merge pull request #16 from alejandrojnm/add-kubernetes-apis + + Add Kubernetes apis + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: b8d5ddb852a3fd9b3c20d902e8895a1ee620cbf5 + note: Add minor changes to Load Balancer methods + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: e69c9746d6d7bbd2211c4abc1481f46503135ef2 + note: |- + Merge pull request #14 from alejandrojnm/feature/loadbalancer + + Add Load Balancer endpoints + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 5590adda1b4b5420c9d19ed900ba378d303b3a63 + note: |- + Merge pull request #11 from rberrelleza/get-record + + Add DNS record management + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 338c4dfdb9ab84aeb06d7358a8583d8194df0ad9 + note: |- + Merge pull request #12 from rberrelleza/add-owners + + Add a default owner for the repo + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 5378d41d0f19a14aa6a71646c11d412b0e9d36c5 + note: Add client.LastJSONResponse for the CLI to use + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: b3aba767c3d70f854069a85636b70f2983884646 + note: |- + Merge pull request #7 from rberrelleza/fix-casing-forms + + Change dnsconfig to `form` + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: f66cbcbb6f2d16db7b3091577a30bfc58fb611c4 + note: |- + Merge pull request #9 from alejandrojnm/hostfix-network + + Hotfix network + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: ab4ebaa89596799021be66d4adb7a172a8c753f0 + note: Change string to map of strings + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: a69bef1d9ea8463c546b54cd2bf1e52c4b15b324 + note: Cleanup some minor issues + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 3487081009646150d4cd44ee6774aa6b3e4a5cc7 + note: |- + Merge pull request #3 from rberrelleza/add-dns-apis + + Add DNS records endpoints + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 554cc2b36c626b59a5ef174380ae6c61b935f951 + note: |- + Merge pull request #4 from alejandrojnm/add-firewall-apis + + Add firewall endpoints + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 9e8048fc98ff620887057dfcf8e3e2752882516d + note: |- + Merge pull request #5 from alejandrojnm/add-volumes-apis + + Add volumes option to the civogo + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: bbb04c3d1af1ab96bb0e7ea4cd157480c25eff82 + note: |- + Merge pull request #6 from alejandrojnm/add-network-options + + Add network endpoints + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 57fae6917c372e1dbf8fa927c3d0cc5c770a5fc8 + note: Change order of automated tests + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: e6d1cdcbe3f473c3de7aac2e6a23ed81bb168932 + note: Ensure gofmt code compliance + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 5d9bf4a7ee1d758e426278525121a8f738b19c00 + note: Remove panic + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 50fd2f10b190a719e60bc5e48b19de9fc902b709 + note: Remove string interpolation, more go idiomatic this way + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 8e8caf0ad47fff2e62fadcf552eb5e4d66592e77 + note: Move JSON parsing for SimpleResponse to a helper method + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: a6d635388fa4a8a708b00b362c9a5d946779624b + note: Add CONTRIBUTING guide + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 1eabf12ecbbe2318011749069a761602c4988184 + note: Add status bage to README + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 2e043e1546b936f207b93eb6488da31a399a9f18 + note: Add Go module support + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: e9c407451c8caa0b91d55b2315323bae137a4124 + note: Add GitHub action to test golang + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 08e7668c39025c13262b3685ede9568667c84d96 + note: Fix tests + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 264d4c873ddc48f8b00f8aaaba44d97264f01d08 + note: Add Instance functions + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: cd217b8bbf02d8dd370fce08f64da5000f34e659 + note: Add Instance methods,first version + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 31634d0fc3a2ecf92a5f992bc82faf1d67d5b146 + note: Add tests for instance + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: dc16cca826555de0b1226064eef67e8d22e69f45 + note: Add Instance listing/fetching/creating + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 5e258256e4e9bbb76665dfbc5435d08ff5567439 + note: '- Add more options to the network options' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 6fbeb8a827c5f9b28a243165b5a31ed120baa196 + note: |- + - Add New network options + - Add Delete network options + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: e4a70af4d6c36c82dee1ddc015b02f7450b17465 + note: Add option to create a new network + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 3db7ca46a0208c62525443bd3bc680f2855b9b2e + note: Fix error in volumes.go in the VolumesConfig + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 52dca3536f567ec0ada3a13d8923bdc6598c88b1 + note: Add volumes option to the civogo + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 5aecfa1c5b38fb45443565cee4aa3a7f8718c228 + note: '- Fix a error in firewall.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 070605dee9a7ab13ae9dc6443aa628b93735cfc5 + note: '- Fix some error in firewall.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 572557b65acf6a0444d407bb8d85fee9b1dccaa0 + note: Add firewall option to the civogo + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: ebde1c1205efd5a21ff7931cb4c1f6aaa97aa650 + note: fix test + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 9c0f096760956e26781d06630fd055e90b80b928 + note: handle http errors + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 37733dc1cb98f5f4ab8eeb702e754ddca02be5ef + note: add tests + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 5f324bc9940b1b2f676a58faeebeec34ba182486 + note: Add functions to manipulate records + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 796741761997915ffece15e93d55c68a478930c3 + note: '- Fix a error network, now you can rename a network' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: cbeb0cd40a5b9be863e715f1b681298a92fa1049 + note: |- + Merge pull request #1 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 1ea969afe47fb4a2a0c1c4d8c45f6cfb8961b134 + note: change config for `form` + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: fb92d21fa6fad853937e6c44104b0e9df3b91115 + note: Add a default owner for the repo + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 3055381e458838dd5278daa93144d1ce9e82b3b7 + note: use Create instead of New + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 5c6fe06b4d2bac5093e0485ebb898216d27cc785 + note: New and delete Domain + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 9c28c61c82ce04c59a1d4c1b20a92ded718aa649 + note: add a result const + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 9df135c1f437b38ca5b6bbd8aa93f8a45f412d69 + note: fix GetDomain test + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 5bf0824610f72dd832d2ad0cbf684ae764dd2552 + note: get and list records + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: acb6cd6ac36758505dea3a868fcceb101b9ba425 + note: update and new domain + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 4048f9c18c147e8a4258a18170f01a085ebfa30e + note: '- Update name in loadbalancer_test.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: fea3cf5be57ec93b3e9052f6fd3e40f41bdea316 + note: '- Update the loadbalancer_test.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 84b247e534fa56e8b53b5a474f151df63371e768 + note: '- Fix some error in types in loadbalancer.go and loadbalancer_test.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: e2e8858b03fb2bb26df7853fa31e97fe762f889b + note: '- Now can add, delete update and list the load balance' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 4002274e27a2980ce88257ee8ffb51b5b25f5e9b + note: '- Initial files' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 2fdaa159c41e721e365dffe87ab33a84aa78b99f + note: '- Fix all recommendation from Andy, change NumTargetNodes from string to int, and in UpdateKubernetesClusters change map[string]string in favor of map[string]interface{}' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: fa67209028b2616a7128101cea1039dfac200467 + note: '- Fix all recommendation from Andy' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 7e0221f080d6ba59ffdcd1c08f3a96946e8cf453 + note: '- Final change in the kubernetes interface' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 9bb817f9d012fd569ce9577797408187aede4e82 + note: '- Some change in kubernetes' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 05711724bd7c1df917ba699a5b993eafee39f9a6 + note: '- First commit for kubernetes' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 58429347d9be7dd2c8f3db25e0596d60c2de3516 + note: '- Update README.md with a list of all modules' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 5a3cfcd6c379cc41d86f71a21ba0320db470a3e7 + note: |- + Merge pull request #3 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 311f778ec931617fe92fb795d62499a0c0eb599e + note: |- + Merge pull request #2 from civo/master + + Update + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 74877fa8e299032deeb3f0fdc189aaa333929b9a + note: '- Update README.md, Fix error in loadbalancer.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: d2ede4b06ad1b578c28736bcbf1d3051f5b97ad0 + note: '- Done the snapshot module' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: eaf506c73ee7d8681e716deef622f7cb3bcbcf8a + note: '- First part of the snapshot api' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 2408aaa379cf8c5acba5c31e64847cb10530d0a0 + note: Merge branch 'master' into feature/api_snapshots + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 6d43cd657bf1fb75fe9e7ee5faf0357909847867 + note: |- + Merge pull request #4 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 6e2137e8aa7c99e188592c97026908cdc7a84117 + note: |- + Merge pull request #5 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 467bd9a5d170511356b49c7a7a2d2780b25f02cd + note: '- Add webhook module' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 55ee07109c846cb600f98864aff6df16d9acb658 + note: |- + Merge pull request #6 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 2edd54691ce38cc5c3cb8bf4316cfa8030774aea + note: '- Fix some bug in dns.go dns_test.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 8ff8a494d235357be3a222c758a99c4879bf104f + note: '- Add option to update dns record' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 08c1c1989d6f1e213690cc66fbc0a6ede16bc603 + note: |- + Merge pull request #7 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 29eab04018cd7e38cabd9b76a9eca7841a4d9377 + note: |- + fix(loadbalancer): Fix data in test + + Fix data in the test of the loadbalancer + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 450e018849e739b2d5b38aa6449e61aa430f2ee6 + note: |- + fix(loadbalancer): Fix struct in loadbalancer + + Error in the struct of the loadbalancer configuration + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: f8658cf3a98c4a74c7e839b7bf914a502d6d066a + note: |- + fix(firewall): Fix error in firewall test + + Error in firewall_test.go + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 6b4ca011ae13951259053634016f04d7747cb9c9 + note: |- + fix(firewall): Fix struct in firewall + + Error in the struct of the firewall configuration and new creation + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 7f13e1c8323128da35faffd55c26cac0244a06f9 + note: '- Fix some bug in firewall.go and firewall_test.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 272359878aad1fefc046c00343bd731a4749ff13 + note: |- + Merge pull request #9 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: d118d875d3887b4ff64c415f29f7243db012bf89 + note: |- + Merge pull request #8 from civo/master + + Fix some linting issues with Kubernetes + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: aff666767bdbca9947863df2b4b4f093e3e6a2f5 + note: |- + fix(firewall): Change the id passed to the function + + Change the id name from idfirewall to firewallID + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: c480c52808b433d8919748b807c8e05e6810699b + note: |- + fix(firewall): Fix name in the firewall + + Fixed test + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 874f9ef69a736e3854aa28b9a806ee1aca24317e + note: |- + fix(firewall): Fix name in the firewall + + Fixed function name FindFirewallRules to FindFirewallRule + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 58a860321ed5dbc77fb93ad0034f8d29b005b139 + note: |- + feat(firewall): Add new option to search rule + + Added option to search rule inside a firewall rules list + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 53dc6a1e21508df425c12d3ab56674cbbef0be8c + note: |- + Merge pull request #11 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 99662c54e9b092e02309236c97ab882221f309a5 + note: |- + Merge pull request #10 from alejandrojnm/hotfix/urgent_fix + + - Fix some bug in firewall.go and firewall_test.go + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com +- semver: 0.2.1 + date: 2020-03-27T08:15:58Z + packager: Andy Jeffries + changes: + - commit: c73d51fa77fac7f76213c697982fce3c3dfe7f0d + note: |- + add template endpoints + + * add new feature to Template module + + - You can now list all templates, create a new one, update and delete any templates that belonged to the user + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com +- semver: 0.2.0 + date: 2020-03-24T13:03:58Z + packager: Andy Jeffries + changes: + - commit: d20f49e0bb1d86ab27b776e668a94f9cc006304d + note: Minor tweaks to SSH key struct + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: f5eab5e2065315493319829ed213b2732e80f154 + note: |- + update the ssh key file + + Fix some bug reported, in comment and variables + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: fdf845a601aac8e283f0bdb580c41018d3b737cc + note: |- + Add new option to ssh + + Now you can create, update and delete the ssh keys, at the same time we add ID to the client to return the ID when the backend does it, as in the case of creating an ssh key + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 95ae34b13fe3a49d18805975a5691e7f37c93c63 + note: Fail the build if any lint issues + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk +- semver: 0.1.9 + date: 2020-03-20T15:32:52Z + packager: Andy Jeffries + changes: + - commit: 588340b6dfe663e4b7b7dd13b5bc36f1523a538e + note: |- + add rename endpoint for firewall + + Now you can rename a firewall using RenameFirewall function, It is no + longer necessary to delete the firewall to rename it + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 0961777679546b5521fbc9a7bf0c0b292dd53c9b + note: |- + Updated the lib to use json and not form for all request + + * We change the client to send all request in JSON format, to avoid build a custom form procesator + * Fix failing test - had trailing whitespace + * Change all test to use the new way in client.go + * Add Reason to the HTTPError struct, now we return the reason of the error from the server + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: a8ebeb95a5cd84ea46b5dedb487b276901580196 + note: Add body to client error responses + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 5ccea39dd4e8bf03139b64e07f7af025b84c5cd8 + note: |- + Merge pull request #25 from alejandrojnm/hostfix/add_function_firewall + + Hostfix/add function firewall + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 7b07ee24a3525d8de8e3ee1dda8b755f5cdea526 + note: |- + Merge pull request #24 from alejandrojnm/hotfix/urgent_fix + + Fix some issues with firewalls and load balancer structs + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 4f53b0218a35dbc39e02e756e1fe8ecb246ede28 + note: Change GetDNSRecord to find by ID not name + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: edfa55837775b27b8683ee9af5333740387fe22c + note: |- + Remove DNSDomainID from DNSRecordConfig + + Feels like that shouldn't be part of an update, so it's easier to specify: + + CreateDNSRecord(domainID string, r *DNSRecordConfig) + + for creating and just: + + UpdateDNSRecord(r *DNSRecord, rc *DNSRecordConfig) + + for updating. Also feels like the order should be "update X with Y" so DNSRecord + is first and DNSRecordConfig is second. + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: d8c0e9675381e118bb8f510c10ddd4120417b56d + note: |- + Merge pull request #23 from alejandrojnm/feature/update_dns_record + + Feature/update dns record + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 5ae22ab13db666397668c3fa83ea38e69d79a1e3 + note: Fix instance test + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: c470a7d51e1e71c1de6f5f9f9c0a2cac6f8e4c75 + note: Fix signature of SetInstanceTags + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 1032a3be04fa705d30221fcf4fb739c80600f290 + note: Add GetInstanceConsoleURL method + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: efbe8dbc06a3169ce046d2205395a27ba7c7331a + note: Check links in go documentation + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 83fdce86fa5e722f4dce62cafbbb9111ba68a161 + note: Change link to docs + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 7cbcb38c513e3b2fe42ef7480a0d0054c269abf1 + note: Update badges + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: f149ccdce08e326133fe16513b3e499303fe6fee + note: Fix tests after some minor refactoring + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: f0fa3a15db27988b4de21d7b14c7e9e4cdf8caaf + note: Change GB to Gigabytes + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 62a82aec36c7655126dd88cb20d05f447655ac66 + note: Fix lint issues + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 143ac3148aa72b247dd39af2225282ba3205b4da + note: |- + Change workflow to custom action + + The workflow version failed with "go env" not set, so switched to custom + version from https://stackoverflow.com/questions/59236611/github-actions-run-golint-on-wihdows + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 541c21a62f26842a3b4bc43ee66c1eea47b942bf + note: Move lint to its own action + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 4e265ae4f1fae45da83d060901125d7ce2b3982d + note: Use user-contributed lint action + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 0aa650f472ae4fec1696040b75b437d85320e58b + note: Install golint before running it + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 0bbdcd0cff82ea6bb1d9bd4fb7c5f91a6c74e599 + note: Add lint to tests and Go 1.14 + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: f2cd42c5c84822a9ac1c3a232da8bfefa2b76a02 + note: Add changelog + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: d9686526113499826afd4b2b5589b983dc224daa + note: Add Find* methods to all areas + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 8dafd66a091217f93726871970a852c50ff3e52a + note: Fix some linting issues with Kubernetes + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: dd906190213e1d954ab9e7a5cf384cbbd1fdedfb + note: Add LICENSE + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: ee8dab3b93a31c5d0bccac7f6f845a1b577af2b0 + note: Return an error if creating a client with an empty API key + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 1bfa0af0534d761f6fc73d1706b4922e3ba6d941 + note: Remove progress table from README as its now module complete + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 0471e7d2ba28233ff1fd60b0b8fc636178311cb5 + note: Add minor tweaks to Webhooks + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 2d7d45db3e0597fcd84e4f23306bfb0ae22c9e26 + note: |- + Merge pull request #21 from alejandrojnm/feature/webhook + + Add webhooks endpoints + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: fc4a75b783d1bbad1d7bd4f6cdde0ab0b45554b1 + note: Change minor naming issues in snapshot module + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 4b2ae45ccdd0d014d5b704f691bf075d79ab4292 + note: |- + Merge pull request #20 from alejandrojnm/feature/api_snapshots + + Feature/api snapshots + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 81e4652eaae0f4dc2e411751944fcad1d6fa1e66 + note: Fix a couple of comments + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 457dfa5d2a5712e0261b87433bf2a69276be22b6 + note: Add charge endpoint + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: f20cab75a729c4eee1f4978975a58520a39a6f73 + note: Change awkward names of units in field names + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 971a4a4718a87d5116396669c90f8ceb377439c2 + note: Add instance size endpoints + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 7b54da2cb550104a67e82da4d22fd1de6cd06971 + note: Add quota endpoint + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 66b590cc78a4c893ffb557e454563e9ca59c910e + note: Add region endpoint + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: e3433bb00eff673964bf28640aa71bd7d899cdff + note: Change List functions to be plural and prefixing DNS + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 43d6bc08956f7845f2429a8e8faa8887edfd9d52 + note: Update display of README progress + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: eacb35cab0d0d9ab3d04e43c3dc8b4bcff8f6bb3 + note: |- + Merge pull request #19 from alejandrojnm/hotfix/loadbalance_readme + + Add status to README and a small fix for Loadbalancer + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 41c7acb325009f5fde2a9b92a267b2cfade1290b + note: |- + Merge pull request #18 from alejandrojnm/master + + Update Readme.md to add module status + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 730f2dd40debc53b4fe3389b6f9cdf3cc620e3a0 + note: |- + Merge pull request #16 from alejandrojnm/add-kubernetes-apis + + Add Kubernetes apis + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: b8d5ddb852a3fd9b3c20d902e8895a1ee620cbf5 + note: Add minor changes to Load Balancer methods + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: e69c9746d6d7bbd2211c4abc1481f46503135ef2 + note: |- + Merge pull request #14 from alejandrojnm/feature/loadbalancer + + Add Load Balancer endpoints + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 5590adda1b4b5420c9d19ed900ba378d303b3a63 + note: |- + Merge pull request #11 from rberrelleza/get-record + + Add DNS record management + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 338c4dfdb9ab84aeb06d7358a8583d8194df0ad9 + note: |- + Merge pull request #12 from rberrelleza/add-owners + + Add a default owner for the repo + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 5378d41d0f19a14aa6a71646c11d412b0e9d36c5 + note: Add client.LastJSONResponse for the CLI to use + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: b3aba767c3d70f854069a85636b70f2983884646 + note: |- + Merge pull request #7 from rberrelleza/fix-casing-forms + + Change dnsconfig to `form` + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: f66cbcbb6f2d16db7b3091577a30bfc58fb611c4 + note: |- + Merge pull request #9 from alejandrojnm/hostfix-network + + Hotfix network + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: ab4ebaa89596799021be66d4adb7a172a8c753f0 + note: Change string to map of strings + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: a69bef1d9ea8463c546b54cd2bf1e52c4b15b324 + note: Cleanup some minor issues + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 3487081009646150d4cd44ee6774aa6b3e4a5cc7 + note: |- + Merge pull request #3 from rberrelleza/add-dns-apis + + Add DNS records endpoints + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 554cc2b36c626b59a5ef174380ae6c61b935f951 + note: |- + Merge pull request #4 from alejandrojnm/add-firewall-apis + + Add firewall endpoints + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 9e8048fc98ff620887057dfcf8e3e2752882516d + note: |- + Merge pull request #5 from alejandrojnm/add-volumes-apis + + Add volumes option to the civogo + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: bbb04c3d1af1ab96bb0e7ea4cd157480c25eff82 + note: |- + Merge pull request #6 from alejandrojnm/add-network-options + + Add network endpoints + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 57fae6917c372e1dbf8fa927c3d0cc5c770a5fc8 + note: Change order of automated tests + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: e6d1cdcbe3f473c3de7aac2e6a23ed81bb168932 + note: Ensure gofmt code compliance + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 5d9bf4a7ee1d758e426278525121a8f738b19c00 + note: Remove panic + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 50fd2f10b190a719e60bc5e48b19de9fc902b709 + note: Remove string interpolation, more go idiomatic this way + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 8e8caf0ad47fff2e62fadcf552eb5e4d66592e77 + note: Move JSON parsing for SimpleResponse to a helper method + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: a6d635388fa4a8a708b00b362c9a5d946779624b + note: Add CONTRIBUTING guide + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 1eabf12ecbbe2318011749069a761602c4988184 + note: Add status bage to README + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 2e043e1546b936f207b93eb6488da31a399a9f18 + note: Add Go module support + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: e9c407451c8caa0b91d55b2315323bae137a4124 + note: Add GitHub action to test golang + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 08e7668c39025c13262b3685ede9568667c84d96 + note: Fix tests + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 264d4c873ddc48f8b00f8aaaba44d97264f01d08 + note: Add Instance functions + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: cd217b8bbf02d8dd370fce08f64da5000f34e659 + note: Add Instance methods,first version + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 31634d0fc3a2ecf92a5f992bc82faf1d67d5b146 + note: Add tests for instance + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: dc16cca826555de0b1226064eef67e8d22e69f45 + note: Add Instance listing/fetching/creating + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 5e258256e4e9bbb76665dfbc5435d08ff5567439 + note: '- Add more options to the network options' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 6fbeb8a827c5f9b28a243165b5a31ed120baa196 + note: |- + - Add New network options + - Add Delete network options + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: e4a70af4d6c36c82dee1ddc015b02f7450b17465 + note: Add option to create a new network + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 3db7ca46a0208c62525443bd3bc680f2855b9b2e + note: Fix error in volumes.go in the VolumesConfig + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 52dca3536f567ec0ada3a13d8923bdc6598c88b1 + note: Add volumes option to the civogo + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 5aecfa1c5b38fb45443565cee4aa3a7f8718c228 + note: '- Fix a error in firewall.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 070605dee9a7ab13ae9dc6443aa628b93735cfc5 + note: '- Fix some error in firewall.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 572557b65acf6a0444d407bb8d85fee9b1dccaa0 + note: Add firewall option to the civogo + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: ebde1c1205efd5a21ff7931cb4c1f6aaa97aa650 + note: fix test + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 9c0f096760956e26781d06630fd055e90b80b928 + note: handle http errors + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 37733dc1cb98f5f4ab8eeb702e754ddca02be5ef + note: add tests + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 5f324bc9940b1b2f676a58faeebeec34ba182486 + note: Add functions to manipulate records + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 796741761997915ffece15e93d55c68a478930c3 + note: '- Fix a error network, now you can rename a network' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: cbeb0cd40a5b9be863e715f1b681298a92fa1049 + note: |- + Merge pull request #1 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 1ea969afe47fb4a2a0c1c4d8c45f6cfb8961b134 + note: change config for `form` + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: fb92d21fa6fad853937e6c44104b0e9df3b91115 + note: Add a default owner for the repo + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 3055381e458838dd5278daa93144d1ce9e82b3b7 + note: use Create instead of New + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 5c6fe06b4d2bac5093e0485ebb898216d27cc785 + note: New and delete Domain + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 9c28c61c82ce04c59a1d4c1b20a92ded718aa649 + note: add a result const + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 9df135c1f437b38ca5b6bbd8aa93f8a45f412d69 + note: fix GetDomain test + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 5bf0824610f72dd832d2ad0cbf684ae764dd2552 + note: get and list records + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: acb6cd6ac36758505dea3a868fcceb101b9ba425 + note: update and new domain + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 4048f9c18c147e8a4258a18170f01a085ebfa30e + note: '- Update name in loadbalancer_test.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: fea3cf5be57ec93b3e9052f6fd3e40f41bdea316 + note: '- Update the loadbalancer_test.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 84b247e534fa56e8b53b5a474f151df63371e768 + note: '- Fix some error in types in loadbalancer.go and loadbalancer_test.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: e2e8858b03fb2bb26df7853fa31e97fe762f889b + note: '- Now can add, delete update and list the load balance' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 4002274e27a2980ce88257ee8ffb51b5b25f5e9b + note: '- Initial files' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 2fdaa159c41e721e365dffe87ab33a84aa78b99f + note: '- Fix all recommendation from Andy, change NumTargetNodes from string to int, and in UpdateKubernetesClusters change map[string]string in favor of map[string]interface{}' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: fa67209028b2616a7128101cea1039dfac200467 + note: '- Fix all recommendation from Andy' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 7e0221f080d6ba59ffdcd1c08f3a96946e8cf453 + note: '- Final change in the kubernetes interface' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 9bb817f9d012fd569ce9577797408187aede4e82 + note: '- Some change in kubernetes' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 05711724bd7c1df917ba699a5b993eafee39f9a6 + note: '- First commit for kubernetes' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 58429347d9be7dd2c8f3db25e0596d60c2de3516 + note: '- Update README.md with a list of all modules' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 5a3cfcd6c379cc41d86f71a21ba0320db470a3e7 + note: |- + Merge pull request #3 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 311f778ec931617fe92fb795d62499a0c0eb599e + note: |- + Merge pull request #2 from civo/master + + Update + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 74877fa8e299032deeb3f0fdc189aaa333929b9a + note: '- Update README.md, Fix error in loadbalancer.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: d2ede4b06ad1b578c28736bcbf1d3051f5b97ad0 + note: '- Done the snapshot module' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: eaf506c73ee7d8681e716deef622f7cb3bcbcf8a + note: '- First part of the snapshot api' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 2408aaa379cf8c5acba5c31e64847cb10530d0a0 + note: Merge branch 'master' into feature/api_snapshots + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 6d43cd657bf1fb75fe9e7ee5faf0357909847867 + note: |- + Merge pull request #4 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 6e2137e8aa7c99e188592c97026908cdc7a84117 + note: |- + Merge pull request #5 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 467bd9a5d170511356b49c7a7a2d2780b25f02cd + note: '- Add webhook module' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 55ee07109c846cb600f98864aff6df16d9acb658 + note: |- + Merge pull request #6 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 2edd54691ce38cc5c3cb8bf4316cfa8030774aea + note: '- Fix some bug in dns.go dns_test.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 8ff8a494d235357be3a222c758a99c4879bf104f + note: '- Add option to update dns record' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 08c1c1989d6f1e213690cc66fbc0a6ede16bc603 + note: |- + Merge pull request #7 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 29eab04018cd7e38cabd9b76a9eca7841a4d9377 + note: |- + fix(loadbalancer): Fix data in test + + Fix data in the test of the loadbalancer + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 450e018849e739b2d5b38aa6449e61aa430f2ee6 + note: |- + fix(loadbalancer): Fix struct in loadbalancer + + Error in the struct of the loadbalancer configuration + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: f8658cf3a98c4a74c7e839b7bf914a502d6d066a + note: |- + fix(firewall): Fix error in firewall test + + Error in firewall_test.go + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 6b4ca011ae13951259053634016f04d7747cb9c9 + note: |- + fix(firewall): Fix struct in firewall + + Error in the struct of the firewall configuration and new creation + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 7f13e1c8323128da35faffd55c26cac0244a06f9 + note: '- Fix some bug in firewall.go and firewall_test.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 272359878aad1fefc046c00343bd731a4749ff13 + note: |- + Merge pull request #9 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: d118d875d3887b4ff64c415f29f7243db012bf89 + note: |- + Merge pull request #8 from civo/master + + Fix some linting issues with Kubernetes + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: aff666767bdbca9947863df2b4b4f093e3e6a2f5 + note: |- + fix(firewall): Change the id passed to the function + + Change the id name from idfirewall to firewallID + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: c480c52808b433d8919748b807c8e05e6810699b + note: |- + fix(firewall): Fix name in the firewall + + Fixed test + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 874f9ef69a736e3854aa28b9a806ee1aca24317e + note: |- + fix(firewall): Fix name in the firewall + + Fixed function name FindFirewallRules to FindFirewallRule + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 58a860321ed5dbc77fb93ad0034f8d29b005b139 + note: |- + feat(firewall): Add new option to search rule + + Added option to search rule inside a firewall rules list + + BREAKING CHANGE: No + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 53dc6a1e21508df425c12d3ab56674cbbef0be8c + note: |- + Merge pull request #11 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 99662c54e9b092e02309236c97ab882221f309a5 + note: |- + Merge pull request #10 from alejandrojnm/hotfix/urgent_fix + + - Fix some bug in firewall.go and firewall_test.go + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com +- semver: 0.1.8 + date: 2020-03-19T14:52:36-04:00 + packager: Andy Jeffries + changes: + - commit: 0961777679546b5521fbc9a7bf0c0b292dd53c9b + note: |- + Updated the lib to use json and not form for all request + + * We change the client to send all request in JSON format, to avoid build a custom form procesator + * Fix failing test - had trailing whitespace + * Change all test to use the new way in client.go + * Add Reason to the HTTPError struct, now we return the reason of the error from the server + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: a8ebeb95a5cd84ea46b5dedb487b276901580196 + note: Add body to client error responses + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk +- semver: 0.1.7 + date: 2020-03-16T16:14:11Z + packager: Andy Jeffries + changes: + - commit: 5ccea39dd4e8bf03139b64e07f7af025b84c5cd8 + note: |- + Merge pull request #25 from alejandrojnm/hostfix/add_function_firewall + + Hostfix/add function firewall + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com +- semver: 0.1.6 + date: 2020-03-16T09:28:32Z + packager: Andy Jeffries + changes: + - commit: 7b07ee24a3525d8de8e3ee1dda8b755f5cdea526 + note: |- + Merge pull request #24 from alejandrojnm/hotfix/urgent_fix + + Fix some issues with firewalls and load balancer structs + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com +- semver: 0.1.5 + date: 2020-03-12T14:55:17Z + packager: Andy Jeffries + changes: + - commit: 4f53b0218a35dbc39e02e756e1fe8ecb246ede28 + note: Change GetDNSRecord to find by ID not name + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk +- semver: 0.1.4 + date: 2020-03-12T13:54:40Z + packager: Andy Jeffries + changes: + - commit: edfa55837775b27b8683ee9af5333740387fe22c + note: |- + Remove DNSDomainID from DNSRecordConfig + + Feels like that shouldn't be part of an update, so it's easier to specify: + + CreateDNSRecord(domainID string, r *DNSRecordConfig) + + for creating and just: + + UpdateDNSRecord(r *DNSRecord, rc *DNSRecordConfig) + + for updating. Also feels like the order should be "update X with Y" so DNSRecord + is first and DNSRecordConfig is second. + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: d8c0e9675381e118bb8f510c10ddd4120417b56d + note: |- + Merge pull request #23 from alejandrojnm/feature/update_dns_record + + Feature/update dns record + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com +- semver: 0.1.3 + date: 2020-03-10T16:13:36Z + packager: Andy Jeffries + changes: + - commit: 5ae22ab13db666397668c3fa83ea38e69d79a1e3 + note: Fix instance test + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk +- semver: 0.1.2 + date: 2020-03-10T16:11:39Z + packager: Andy Jeffries + changes: + - commit: c470a7d51e1e71c1de6f5f9f9c0a2cac6f8e4c75 + note: Fix signature of SetInstanceTags + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk +- semver: 0.1.1 + date: 2020-03-10T14:19:51Z + packager: Andy Jeffries + changes: + - commit: 1032a3be04fa705d30221fcf4fb739c80600f290 + note: Add GetInstanceConsoleURL method + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: efbe8dbc06a3169ce046d2205395a27ba7c7331a + note: Check links in go documentation + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 83fdce86fa5e722f4dce62cafbbb9111ba68a161 + note: Change link to docs + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 7cbcb38c513e3b2fe42ef7480a0d0054c269abf1 + note: Update badges + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: f149ccdce08e326133fe16513b3e499303fe6fee + note: Fix tests after some minor refactoring + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: f0fa3a15db27988b4de21d7b14c7e9e4cdf8caaf + note: Change GB to Gigabytes + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 62a82aec36c7655126dd88cb20d05f447655ac66 + note: Fix lint issues + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 143ac3148aa72b247dd39af2225282ba3205b4da + note: |- + Change workflow to custom action + + The workflow version failed with "go env" not set, so switched to custom + version from https://stackoverflow.com/questions/59236611/github-actions-run-golint-on-wihdows + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 541c21a62f26842a3b4bc43ee66c1eea47b942bf + note: Move lint to its own action + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 4e265ae4f1fae45da83d060901125d7ce2b3982d + note: Use user-contributed lint action + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 0aa650f472ae4fec1696040b75b437d85320e58b + note: Install golint before running it + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 0bbdcd0cff82ea6bb1d9bd4fb7c5f91a6c74e599 + note: Add lint to tests and Go 1.14 + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk +- semver: 0.1.0 + date: 2020-03-03T15:18:31Z + packager: Andy Jeffries + changes: + - commit: f2cd42c5c84822a9ac1c3a232da8bfefa2b76a02 + note: Add changelog + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: d9686526113499826afd4b2b5589b983dc224daa + note: Add Find* methods to all areas + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 8dafd66a091217f93726871970a852c50ff3e52a + note: Fix some linting issues with Kubernetes + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: dd906190213e1d954ab9e7a5cf384cbbd1fdedfb + note: Add LICENSE + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: ee8dab3b93a31c5d0bccac7f6f845a1b577af2b0 + note: Return an error if creating a client with an empty API key + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 1bfa0af0534d761f6fc73d1706b4922e3ba6d941 + note: Remove progress table from README as its now module complete + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 0471e7d2ba28233ff1fd60b0b8fc636178311cb5 + note: Add minor tweaks to Webhooks + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 2d7d45db3e0597fcd84e4f23306bfb0ae22c9e26 + note: |- + Merge pull request #21 from alejandrojnm/feature/webhook + + Add webhooks endpoints + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: fc4a75b783d1bbad1d7bd4f6cdde0ab0b45554b1 + note: Change minor naming issues in snapshot module + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 4b2ae45ccdd0d014d5b704f691bf075d79ab4292 + note: |- + Merge pull request #20 from alejandrojnm/feature/api_snapshots + + Feature/api snapshots + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 81e4652eaae0f4dc2e411751944fcad1d6fa1e66 + note: Fix a couple of comments + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 457dfa5d2a5712e0261b87433bf2a69276be22b6 + note: Add charge endpoint + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: f20cab75a729c4eee1f4978975a58520a39a6f73 + note: Change awkward names of units in field names + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 971a4a4718a87d5116396669c90f8ceb377439c2 + note: Add instance size endpoints + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 7b54da2cb550104a67e82da4d22fd1de6cd06971 + note: Add quota endpoint + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 66b590cc78a4c893ffb557e454563e9ca59c910e + note: Add region endpoint + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: e3433bb00eff673964bf28640aa71bd7d899cdff + note: Change List functions to be plural and prefixing DNS + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 43d6bc08956f7845f2429a8e8faa8887edfd9d52 + note: Update display of README progress + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: eacb35cab0d0d9ab3d04e43c3dc8b4bcff8f6bb3 + note: |- + Merge pull request #19 from alejandrojnm/hotfix/loadbalance_readme + + Add status to README and a small fix for Loadbalancer + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 41c7acb325009f5fde2a9b92a267b2cfade1290b + note: |- + Merge pull request #18 from alejandrojnm/master + + Update Readme.md to add module status + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 730f2dd40debc53b4fe3389b6f9cdf3cc620e3a0 + note: |- + Merge pull request #16 from alejandrojnm/add-kubernetes-apis + + Add Kubernetes apis + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: b8d5ddb852a3fd9b3c20d902e8895a1ee620cbf5 + note: Add minor changes to Load Balancer methods + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: e69c9746d6d7bbd2211c4abc1481f46503135ef2 + note: |- + Merge pull request #14 from alejandrojnm/feature/loadbalancer + + Add Load Balancer endpoints + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 5590adda1b4b5420c9d19ed900ba378d303b3a63 + note: |- + Merge pull request #11 from rberrelleza/get-record + + Add DNS record management + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 338c4dfdb9ab84aeb06d7358a8583d8194df0ad9 + note: |- + Merge pull request #12 from rberrelleza/add-owners + + Add a default owner for the repo + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 5378d41d0f19a14aa6a71646c11d412b0e9d36c5 + note: Add client.LastJSONResponse for the CLI to use + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: b3aba767c3d70f854069a85636b70f2983884646 + note: |- + Merge pull request #7 from rberrelleza/fix-casing-forms + + Change dnsconfig to `form` + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: f66cbcbb6f2d16db7b3091577a30bfc58fb611c4 + note: |- + Merge pull request #9 from alejandrojnm/hostfix-network + + Hotfix network + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: ab4ebaa89596799021be66d4adb7a172a8c753f0 + note: Change string to map of strings + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: a69bef1d9ea8463c546b54cd2bf1e52c4b15b324 + note: Cleanup some minor issues + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 3487081009646150d4cd44ee6774aa6b3e4a5cc7 + note: |- + Merge pull request #3 from rberrelleza/add-dns-apis + + Add DNS records endpoints + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 554cc2b36c626b59a5ef174380ae6c61b935f951 + note: |- + Merge pull request #4 from alejandrojnm/add-firewall-apis + + Add firewall endpoints + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 9e8048fc98ff620887057dfcf8e3e2752882516d + note: |- + Merge pull request #5 from alejandrojnm/add-volumes-apis + + Add volumes option to the civogo + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: bbb04c3d1af1ab96bb0e7ea4cd157480c25eff82 + note: |- + Merge pull request #6 from alejandrojnm/add-network-options + + Add network endpoints + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: GitHub + email: noreply@github.com + - commit: 57fae6917c372e1dbf8fa927c3d0cc5c770a5fc8 + note: Change order of automated tests + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: e6d1cdcbe3f473c3de7aac2e6a23ed81bb168932 + note: Ensure gofmt code compliance + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 5d9bf4a7ee1d758e426278525121a8f738b19c00 + note: Remove panic + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 50fd2f10b190a719e60bc5e48b19de9fc902b709 + note: Remove string interpolation, more go idiomatic this way + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 8e8caf0ad47fff2e62fadcf552eb5e4d66592e77 + note: Move JSON parsing for SimpleResponse to a helper method + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: a6d635388fa4a8a708b00b362c9a5d946779624b + note: Add CONTRIBUTING guide + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 1eabf12ecbbe2318011749069a761602c4988184 + note: Add status bage to README + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 2e043e1546b936f207b93eb6488da31a399a9f18 + note: Add Go module support + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: e9c407451c8caa0b91d55b2315323bae137a4124 + note: Add GitHub action to test golang + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 08e7668c39025c13262b3685ede9568667c84d96 + note: Fix tests + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 264d4c873ddc48f8b00f8aaaba44d97264f01d08 + note: Add Instance functions + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: cd217b8bbf02d8dd370fce08f64da5000f34e659 + note: Add Instance methods,first version + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 31634d0fc3a2ecf92a5f992bc82faf1d67d5b146 + note: Add tests for instance + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: dc16cca826555de0b1226064eef67e8d22e69f45 + note: Add Instance listing/fetching/creating + author: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + committer: + name: Andy Jeffries + email: andy@andyjeffries.co.uk + - commit: 5e258256e4e9bbb76665dfbc5435d08ff5567439 + note: '- Add more options to the network options' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 6fbeb8a827c5f9b28a243165b5a31ed120baa196 + note: |- + - Add New network options + - Add Delete network options + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: e4a70af4d6c36c82dee1ddc015b02f7450b17465 + note: Add option to create a new network + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 3db7ca46a0208c62525443bd3bc680f2855b9b2e + note: Fix error in volumes.go in the VolumesConfig + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 52dca3536f567ec0ada3a13d8923bdc6598c88b1 + note: Add volumes option to the civogo + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 5aecfa1c5b38fb45443565cee4aa3a7f8718c228 + note: '- Fix a error in firewall.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 070605dee9a7ab13ae9dc6443aa628b93735cfc5 + note: '- Fix some error in firewall.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 572557b65acf6a0444d407bb8d85fee9b1dccaa0 + note: Add firewall option to the civogo + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: ebde1c1205efd5a21ff7931cb4c1f6aaa97aa650 + note: fix test + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 9c0f096760956e26781d06630fd055e90b80b928 + note: handle http errors + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 37733dc1cb98f5f4ab8eeb702e754ddca02be5ef + note: add tests + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 5f324bc9940b1b2f676a58faeebeec34ba182486 + note: Add functions to manipulate records + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 796741761997915ffece15e93d55c68a478930c3 + note: '- Fix a error network, now you can rename a network' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: cbeb0cd40a5b9be863e715f1b681298a92fa1049 + note: |- + Merge pull request #1 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 1ea969afe47fb4a2a0c1c4d8c45f6cfb8961b134 + note: change config for `form` + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: fb92d21fa6fad853937e6c44104b0e9df3b91115 + note: Add a default owner for the repo + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 3055381e458838dd5278daa93144d1ce9e82b3b7 + note: use Create instead of New + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 5c6fe06b4d2bac5093e0485ebb898216d27cc785 + note: New and delete Domain + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 9c28c61c82ce04c59a1d4c1b20a92ded718aa649 + note: add a result const + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 9df135c1f437b38ca5b6bbd8aa93f8a45f412d69 + note: fix GetDomain test + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 5bf0824610f72dd832d2ad0cbf684ae764dd2552 + note: get and list records + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: acb6cd6ac36758505dea3a868fcceb101b9ba425 + note: update and new domain + author: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + committer: + name: Ramiro Berrelleza + email: rberrelleza@gmail.com + - commit: 4048f9c18c147e8a4258a18170f01a085ebfa30e + note: '- Update name in loadbalancer_test.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: fea3cf5be57ec93b3e9052f6fd3e40f41bdea316 + note: '- Update the loadbalancer_test.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 84b247e534fa56e8b53b5a474f151df63371e768 + note: '- Fix some error in types in loadbalancer.go and loadbalancer_test.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: e2e8858b03fb2bb26df7853fa31e97fe762f889b + note: '- Now can add, delete update and list the load balance' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 4002274e27a2980ce88257ee8ffb51b5b25f5e9b + note: '- Initial files' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 2fdaa159c41e721e365dffe87ab33a84aa78b99f + note: '- Fix all recommendation from Andy, change NumTargetNodes from string to int, and in UpdateKubernetesClusters change map[string]string in favor of map[string]interface{}' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: fa67209028b2616a7128101cea1039dfac200467 + note: '- Fix all recommendation from Andy' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 7e0221f080d6ba59ffdcd1c08f3a96946e8cf453 + note: '- Final change in the kubernetes interface' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 9bb817f9d012fd569ce9577797408187aede4e82 + note: '- Some change in kubernetes' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 05711724bd7c1df917ba699a5b993eafee39f9a6 + note: '- First commit for kubernetes' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 58429347d9be7dd2c8f3db25e0596d60c2de3516 + note: '- Update README.md with a list of all modules' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 5a3cfcd6c379cc41d86f71a21ba0320db470a3e7 + note: |- + Merge pull request #3 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 311f778ec931617fe92fb795d62499a0c0eb599e + note: |- + Merge pull request #2 from civo/master + + Update + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 74877fa8e299032deeb3f0fdc189aaa333929b9a + note: '- Update README.md, Fix error in loadbalancer.go' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: d2ede4b06ad1b578c28736bcbf1d3051f5b97ad0 + note: '- Done the snapshot module' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: eaf506c73ee7d8681e716deef622f7cb3bcbcf8a + note: '- First part of the snapshot api' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 2408aaa379cf8c5acba5c31e64847cb10530d0a0 + note: Merge branch 'master' into feature/api_snapshots + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 6d43cd657bf1fb75fe9e7ee5faf0357909847867 + note: |- + Merge pull request #4 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 6e2137e8aa7c99e188592c97026908cdc7a84117 + note: |- + Merge pull request #5 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com + - commit: 467bd9a5d170511356b49c7a7a2d2780b25f02cd + note: '- Add webhook module' + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: Alejandro JNM + email: alejandrojnm@gmail.com + - commit: 55ee07109c846cb600f98864aff6df16d9acb658 + note: |- + Merge pull request #6 from civo/master + + Update master + author: + name: Alejandro JNM + email: alejandrojnm@gmail.com + committer: + name: GitHub + email: noreply@github.com diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/charge.go b/cluster-autoscaler/vendor/github.com/civo/civogo/charge.go new file mode 100644 index 000000000000..6f09f6bd8c45 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/charge.go @@ -0,0 +1,36 @@ +package civogo + +import ( + "bytes" + "encoding/json" + "fmt" + "time" +) + +// Charge represents a Civo resource with number of hours within the specified billing period +type Charge struct { + Code string `json:"code"` + Label string `json:"label"` + From time.Time `json:"from"` + To time.Time `json:"to"` + NumHours int `json:"num_hours"` + SizeGigabytes int `json:"size_gb"` +} + +// ListCharges returns all charges for the calling API account +func (c *Client) ListCharges(from, to time.Time) ([]Charge, error) { + url := "/v2/charges" + url = url + fmt.Sprintf("?from=%s&to=%s", from.Format(time.RFC3339), to.Format(time.RFC3339)) + + resp, err := c.SendGetRequest(url) + if err != nil { + return nil, decodeError(err) + } + + charges := make([]Charge, 0) + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&charges); err != nil { + return nil, err + } + + return charges, nil +} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/client.go b/cluster-autoscaler/vendor/github.com/civo/civogo/client.go new file mode 100644 index 000000000000..4fad870897c9 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/client.go @@ -0,0 +1,254 @@ +package civogo + +import ( + "bytes" + "encoding/json" + "errors" + "fmt" + "io/ioutil" + "log" + "net/http" + "net/http/httptest" + "net/url" + "strings" +) + +// Version represents the version of the civogo lib +const Version = "0.2.21" + +// Client is the means of connecting to the Civo API service +type Client struct { + BaseURL *url.URL + UserAgent string + APIKey string + Region string + LastJSONResponse string + + httpClient *http.Client +} + +// HTTPError is the error returned when the API fails with an HTTP error +type HTTPError struct { + Code int + Status string + Reason string +} + +// Result is the result of a SimpleResponse +type Result string + +// SimpleResponse is a structure that returns success and/or any error +type SimpleResponse struct { + ID string `json:"id"` + Result Result `json:"result"` + ErrorCode string `json:"code"` + ErrorReason string `json:"reason"` + ErrorDetails string `json:"details"` +} + +// ResultSuccess represents a successful SimpleResponse +const ResultSuccess = "success" + +func (e HTTPError) Error() string { + return fmt.Sprintf("%d: %s, %s", e.Code, e.Status, e.Reason) +} + +// NewClientWithURL initializes a Client with a specific API URL +func NewClientWithURL(apiKey, civoAPIURL, region string) (*Client, error) { + if apiKey == "" { + err := errors.New("no API Key supplied, this is required") + return nil, NoAPIKeySuppliedError.wrap(err) + } + parsedURL, err := url.Parse(civoAPIURL) + if err != nil { + return nil, err + } + + var httpTransport = &http.Transport{ + Proxy: http.ProxyFromEnvironment, + } + + client := &Client{ + BaseURL: parsedURL, + UserAgent: "civogo/" + Version, + APIKey: apiKey, + Region: region, + httpClient: &http.Client{ + Transport: httpTransport, + }, + } + return client, nil +} + +// NewClient initializes a Client connecting to the production API +func NewClient(apiKey, region string) (*Client, error) { + return NewClientWithURL(apiKey, "https://api.civo.com", region) +} + +// NewAdvancedClientForTesting initializes a Client connecting to a local test server and allows for specifying methods +func NewAdvancedClientForTesting(responses map[string]map[string]string) (*Client, *httptest.Server, error) { + var responseSent bool + + server := httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) { + body, err := ioutil.ReadAll(req.Body) + if err != nil { + log.Printf("Error reading body: %v", err) + return + } + + req.Body = ioutil.NopCloser(bytes.NewBuffer(body)) + + for url, criteria := range responses { + if strings.Contains(req.URL.String(), url) && + req.Method == criteria["method"] { + if criteria["method"] == "PUT" || criteria["method"] == "POST" || criteria["method"] == "PATCH" { + if strings.TrimSpace(string(body)) == strings.TrimSpace(criteria["requestBody"]) { + responseSent = true + rw.Write([]byte(criteria["responseBody"])) + } + } else { + responseSent = true + rw.Write([]byte(criteria["responseBody"])) + } + } + } + + if !responseSent { + fmt.Println("Failed to find a matching request!") + fmt.Println("Request body:", string(body)) + fmt.Println("Method:", req.Method) + fmt.Println("URL:", req.URL.String()) + rw.Write([]byte(`{"result": "failed to find a matching request"}`)) + } + })) + + client, err := NewClientForTestingWithServer(server) + + return client, server, err +} + +// NewClientForTesting initializes a Client connecting to a local test server +func NewClientForTesting(responses map[string]string) (*Client, *httptest.Server, error) { + var responseSent bool + + server := httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) { + for url, response := range responses { + if strings.Contains(req.URL.String(), url) { + responseSent = true + rw.Write([]byte(response)) + } + } + + if !responseSent { + fmt.Println("Failed to find a matching request!") + fmt.Println("URL:", req.URL.String()) + + rw.Write([]byte(`{"result": "failed to find a matching request"}`)) + } + })) + + client, err := NewClientForTestingWithServer(server) + + return client, server, err +} + +// NewClientForTestingWithServer initializes a Client connecting to a passed-in local test server +func NewClientForTestingWithServer(server *httptest.Server) (*Client, error) { + client, err := NewClientWithURL("TEST-API-KEY", server.URL, "TEST") + if err != nil { + return nil, err + } + client.httpClient = server.Client() + return client, err +} + +func (c *Client) prepareClientURL(requestURL string) *url.URL { + u, _ := url.Parse(c.BaseURL.String() + requestURL) + return u +} + +func (c *Client) sendRequest(req *http.Request) ([]byte, error) { + req.Header.Set("Accept", "application/json") + req.Header.Set("User-Agent", c.UserAgent) + req.Header.Set("Content-Type", "application/json") + req.Header.Set("Authorization", fmt.Sprintf("bearer %s", c.APIKey)) + + if req.Method == "GET" || req.Method == "DELETE" { + // add the region param + param := req.URL.Query() + param.Add("region", c.Region) + req.URL.RawQuery = param.Encode() + } + + resp, err := c.httpClient.Do(req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + body, err := ioutil.ReadAll(resp.Body) + c.LastJSONResponse = string(body) + + if resp.StatusCode >= 300 { + return nil, HTTPError{Code: resp.StatusCode, Status: resp.Status, Reason: string(body)} + } + + return body, err +} + +// SendGetRequest sends a correctly authenticated get request to the API server +func (c *Client) SendGetRequest(requestURL string) ([]byte, error) { + u := c.prepareClientURL(requestURL) + req, err := http.NewRequest("GET", u.String(), nil) + if err != nil { + return nil, err + } + + return c.sendRequest(req) +} + +// SendPostRequest sends a correctly authenticated post request to the API server +func (c *Client) SendPostRequest(requestURL string, params interface{}) ([]byte, error) { + u := c.prepareClientURL(requestURL) + + // we create a new buffer and encode everything to json to send it in the request + jsonValue, _ := json.Marshal(params) + + req, err := http.NewRequest("POST", u.String(), bytes.NewBuffer(jsonValue)) + if err != nil { + return nil, err + } + return c.sendRequest(req) +} + +// SendPutRequest sends a correctly authenticated put request to the API server +func (c *Client) SendPutRequest(requestURL string, params interface{}) ([]byte, error) { + u := c.prepareClientURL(requestURL) + + // we create a new buffer and encode everything to json to send it in the request + jsonValue, _ := json.Marshal(params) + + req, err := http.NewRequest("PUT", u.String(), bytes.NewBuffer(jsonValue)) + if err != nil { + return nil, err + } + return c.sendRequest(req) +} + +// SendDeleteRequest sends a correctly authenticated delete request to the API server +func (c *Client) SendDeleteRequest(requestURL string) ([]byte, error) { + u := c.prepareClientURL(requestURL) + req, err := http.NewRequest("DELETE", u.String(), nil) + if err != nil { + return nil, err + } + + return c.sendRequest(req) +} + +// DecodeSimpleResponse parses a response body in to a SimpleResponse object +func (c *Client) DecodeSimpleResponse(resp []byte) (*SimpleResponse, error) { + response := SimpleResponse{} + err := json.NewDecoder(bytes.NewReader(resp)).Decode(&response) + return &response, err +} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/disk_image.go b/cluster-autoscaler/vendor/github.com/civo/civogo/disk_image.go new file mode 100644 index 000000000000..aad394910652 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/disk_image.go @@ -0,0 +1,107 @@ +package civogo + +import ( + "bytes" + "encoding/json" + "errors" + "fmt" + "strings" +) + +// DiskImage represents a DiskImage for launching instances from +type DiskImage struct { + ID string `json:"id,omitempty"` + Name string `json:"name,omitempty"` + Version string `json:"version,omitempty"` + State string `json:"state,omitempty"` + Distribution string `json:"distribution,omitempty"` + Description string `json:"description,omitempty"` + Label string `json:"label,omitempty"` +} + +// ListDiskImages return all disk image in system +func (c *Client) ListDiskImages() ([]DiskImage, error) { + resp, err := c.SendGetRequest("/v2/disk_images") + if err != nil { + return nil, decodeError(err) + } + + diskImages := make([]DiskImage, 0) + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&diskImages); err != nil { + return nil, err + } + + filteredDiskImages := make([]DiskImage, 0) + for _, diskImage := range diskImages { + if !strings.Contains(diskImage.Name, "k3s") { + filteredDiskImages = append(filteredDiskImages, diskImage) + } + } + + return filteredDiskImages, nil +} + +// GetDiskImage get one disk image using the id +func (c *Client) GetDiskImage(id string) (*DiskImage, error) { + resp, err := c.SendGetRequest(fmt.Sprintf("/v2/disk_images/%s", id)) + if err != nil { + return nil, decodeError(err) + } + + diskImage := &DiskImage{} + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&diskImage); err != nil { + return nil, err + } + + return diskImage, nil +} + +// FindDiskImage finds a disk image by either part of the ID or part of the name +func (c *Client) FindDiskImage(search string) (*DiskImage, error) { + templateList, err := c.ListDiskImages() + if err != nil { + return nil, decodeError(err) + } + + exactMatch := false + partialMatchesCount := 0 + result := DiskImage{} + + for _, value := range templateList { + if value.Name == search || value.ID == search { + exactMatch = true + result = value + } else if strings.Contains(value.Name, search) || strings.Contains(value.ID, search) { + if !exactMatch { + result = value + partialMatchesCount++ + } + } + } + + if exactMatch || partialMatchesCount == 1 { + return &result, nil + } else if partialMatchesCount > 1 { + err := fmt.Errorf("unable to find %s because there were multiple matches", search) + return nil, MultipleMatchesError.wrap(err) + } else { + err := fmt.Errorf("unable to find %s, zero matches", search) + return nil, ZeroMatchesError.wrap(err) + } +} + +// GetDiskImageByName finds the DiskImage for an account with the specified code +func (c *Client) GetDiskImageByName(name string) (*DiskImage, error) { + resp, err := c.ListDiskImages() + if err != nil { + return nil, decodeError(err) + } + + for _, diskimage := range resp { + if diskimage.Name == name { + return &diskimage, nil + } + } + + return nil, errors.New("diskimage not found") +} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/dns.go b/cluster-autoscaler/vendor/github.com/civo/civogo/dns.go new file mode 100644 index 000000000000..0ab501204bf9 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/dns.go @@ -0,0 +1,281 @@ +package civogo + +import ( + "bytes" + "encoding/json" + "fmt" + "strings" + "time" +) + +// DNSDomain represents a domain registered within Civo's infrastructure +type DNSDomain struct { + // The ID of the domain + ID string `json:"id"` + + // The ID of the account + AccountID string `json:"account_id"` + + // The Name of the domain + Name string `json:"name"` +} + +type dnsDomainConfig struct { + Name string `json:"name"` +} + +// DNSRecordType represents the allowed record types: a, cname, mx or txt +type DNSRecordType string + +// DNSRecord represents a DNS record registered within Civo's infrastructure +type DNSRecord struct { + ID string `json:"id"` + AccountID string `json:"account_id,omitempty"` + DNSDomainID string `json:"domain_id,omitempty"` + Name string `json:"name,omitempty"` + Value string `json:"value,omitempty"` + Type DNSRecordType `json:"type,omitempty"` + Priority int `json:"priority,omitempty"` + TTL int `json:"ttl,omitempty"` + CreatedAt time.Time `json:"created_at,omitempty"` + UpdatedAt time.Time `json:"updated_at,omitempty"` +} + +// DNSRecordConfig describes the parameters for a new DNS record +// none of the fields are mandatory and will be automatically +// set with default values +type DNSRecordConfig struct { + Type DNSRecordType `json:"type"` + Name string `json:"name"` + Value string `json:"value"` + Priority int `json:"priority"` + TTL int `json:"ttl"` +} + +const ( + // DNSRecordTypeA represents an A record + DNSRecordTypeA = "A" + + // DNSRecordTypeCName represents an CNAME record + DNSRecordTypeCName = "CNAME" + + // DNSRecordTypeMX represents an MX record + DNSRecordTypeMX = "MX" + + // DNSRecordTypeSRV represents an SRV record + DNSRecordTypeSRV = "SRV" + + // DNSRecordTypeTXT represents an TXT record + DNSRecordTypeTXT = "TXT" +) + +var ( + // ErrDNSDomainNotFound is returned when the domain is not found + ErrDNSDomainNotFound = fmt.Errorf("domain not found") + + // ErrDNSRecordNotFound is returned when the record is not found + ErrDNSRecordNotFound = fmt.Errorf("record not found") +) + +// ListDNSDomains returns all Domains owned by the calling API account +func (c *Client) ListDNSDomains() ([]DNSDomain, error) { + url := "/v2/dns" + + resp, err := c.SendGetRequest(url) + if err != nil { + return nil, decodeError(err) + } + + var domains = make([]DNSDomain, 0) + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&domains); err != nil { + return nil, err + + } + + return domains, nil +} + +// FindDNSDomain finds a domain name by either part of the ID or part of the name +func (c *Client) FindDNSDomain(search string) (*DNSDomain, error) { + domains, err := c.ListDNSDomains() + if err != nil { + return nil, decodeError(err) + } + + exactMatch := false + partialMatchesCount := 0 + result := DNSDomain{} + + for _, value := range domains { + if value.Name == search || value.ID == search { + exactMatch = true + result = value + } else if strings.Contains(value.Name, search) || strings.Contains(value.ID, search) { + if !exactMatch { + result = value + partialMatchesCount++ + } + } + } + + if exactMatch || partialMatchesCount == 1 { + return &result, nil + } else if partialMatchesCount > 1 { + err := fmt.Errorf("unable to find %s because there were multiple matches", search) + return nil, MultipleMatchesError.wrap(err) + } else { + err := fmt.Errorf("unable to find %s, zero matches", search) + return nil, ZeroMatchesError.wrap(err) + } +} + +// CreateDNSDomain registers a new Domain +func (c *Client) CreateDNSDomain(name string) (*DNSDomain, error) { + url := "/v2/dns" + d := &dnsDomainConfig{Name: name} + body, err := c.SendPostRequest(url, d) + if err != nil { + return nil, decodeError(err) + } + + var n = &DNSDomain{} + if err := json.NewDecoder(bytes.NewReader(body)).Decode(n); err != nil { + return nil, err + } + + return n, nil +} + +// GetDNSDomain returns the DNS Domain that matches the name +func (c *Client) GetDNSDomain(name string) (*DNSDomain, error) { + ds, err := c.ListDNSDomains() + if err != nil { + return nil, decodeError(err) + } + + for _, d := range ds { + if d.Name == name { + return &d, nil + } + } + + return nil, ErrDNSDomainNotFound +} + +// UpdateDNSDomain updates the provided domain with name +func (c *Client) UpdateDNSDomain(d *DNSDomain, name string) (*DNSDomain, error) { + url := fmt.Sprintf("/v2/dns/%s", d.ID) + dc := &dnsDomainConfig{Name: name} + body, err := c.SendPutRequest(url, dc) + if err != nil { + return nil, decodeError(err) + } + + var r = &DNSDomain{} + if err := json.NewDecoder(bytes.NewReader(body)).Decode(r); err != nil { + return nil, err + } + + return r, nil +} + +// DeleteDNSDomain deletes the Domain that matches the name +func (c *Client) DeleteDNSDomain(d *DNSDomain) (*SimpleResponse, error) { + url := fmt.Sprintf("/v2/dns/%s", d.ID) + resp, err := c.SendDeleteRequest(url) + if err != nil { + return nil, decodeError(err) + } + + return c.DecodeSimpleResponse(resp) +} + +// CreateDNSRecord creates a new DNS record +func (c *Client) CreateDNSRecord(domainID string, r *DNSRecordConfig) (*DNSRecord, error) { + if len(domainID) == 0 { + return nil, fmt.Errorf("r.DomainID is empty") + } + + url := fmt.Sprintf("/v2/dns/%s/records", domainID) + body, err := c.SendPostRequest(url, r) + if err != nil { + return nil, decodeError(err) + } + + var record = &DNSRecord{} + if err := json.NewDecoder(bytes.NewReader(body)).Decode(record); err != nil { + return nil, err + } + + return record, nil +} + +// ListDNSRecords returns all the records associated with domainID +func (c *Client) ListDNSRecords(dnsDomainID string) ([]DNSRecord, error) { + url := fmt.Sprintf("/v2/dns/%s/records", dnsDomainID) + resp, err := c.SendGetRequest(url) + if err != nil { + return nil, decodeError(err) + } + + var rs = make([]DNSRecord, 0) + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&rs); err != nil { + return nil, err + + } + + return rs, nil +} + +// GetDNSRecord returns the Record that matches the domain ID and domain record ID +func (c *Client) GetDNSRecord(domainID, domainRecordID string) (*DNSRecord, error) { + rs, err := c.ListDNSRecords(domainID) + if err != nil { + return nil, decodeError(err) + } + + for _, r := range rs { + if r.ID == domainRecordID { + return &r, nil + } + } + + return nil, ErrDNSRecordNotFound +} + +// UpdateDNSRecord updates the DNS record +func (c *Client) UpdateDNSRecord(r *DNSRecord, rc *DNSRecordConfig) (*DNSRecord, error) { + url := fmt.Sprintf("/v2/dns/%s/records/%s", r.DNSDomainID, r.ID) + body, err := c.SendPutRequest(url, rc) + if err != nil { + return nil, decodeError(err) + } + + var dnsRecord = &DNSRecord{} + if err := json.NewDecoder(bytes.NewReader(body)).Decode(dnsRecord); err != nil { + return nil, err + } + + return dnsRecord, nil +} + +// DeleteDNSRecord deletes the DNS record +func (c *Client) DeleteDNSRecord(r *DNSRecord) (*SimpleResponse, error) { + if len(r.ID) == 0 { + err := fmt.Errorf("ID is empty") + return nil, IDisEmptyError.wrap(err) + } + + if len(r.DNSDomainID) == 0 { + err := fmt.Errorf("DNSDomainID is empty") + return nil, IDisEmptyError.wrap(err) + } + + url := fmt.Sprintf("/v2/dns/%s/records/%s", r.DNSDomainID, r.ID) + resp, err := c.SendDeleteRequest(url) + if err != nil { + return nil, decodeError(err) + } + + return c.DecodeSimpleResponse(resp) +} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/errors.go b/cluster-autoscaler/vendor/github.com/civo/civogo/errors.go new file mode 100644 index 000000000000..ad43189f0130 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/errors.go @@ -0,0 +1,1065 @@ +package civogo + +import ( + "encoding/json" + "errors" + "fmt" + "net" + "net/url" + "strings" +) + +// Errors raised by package civogo +var ( + ResponseDecodeFailedError = constError("ResponseDecodeFailed") + DisabledServiceError = constError("DisabledServiceError") + NoAPIKeySuppliedError = constError("NoAPIKeySuppliedError") + MultipleMatchesError = constError("MultipleMatchesError") + ZeroMatchesError = constError("ZeroMatchesError") + IDisEmptyError = constError("IDisEmptyError") + TimeoutError = constError("TimeoutError") + RegionUnavailableError = constError("RegionUnavailable") + + CivoStatsdRecordFailedError = constError("CivoStatsdRecordFailedError") + AuthenticationFailedError = constError("AuthenticationFailedError") + CommonError = constError("Error") + + // Volume Error + CannotRescueNewVolumeError = constError("CannotRescueNewVolumeError") + CannotRestoreNewVolumeError = constError("CannotRestoreNewVolumeError") + CannotScaleAlreadyRescalingClusterError = constError("CannotScaleAlreadyRescalingClusterError") + VolumeInvalidSizeError = constError("VolumeInvalidSizeError") + + DatabaseAccountDestroyError = constError("DatabaseAccountDestroyError") + DatabaseAccountNotFoundError = constError("DatabaseAccountNotFoundError") + DatabaseAccountAccessDeniedError = constError("DatabaseAccountAccessDeniedError") + DatabaseCreatingAccountError = constError("DatabaseCreatingAccountError") + + DatabaseUpdatingAccountError = constError("DatabaseUpdatingAccountError") + DatabaseAccountStatsError = constError("DatabaseAccountStatsError") + DatabaseActionListingError = constError("DatabaseActionListingError") + DatabaseActionCreateError = constError("DatabaseActionCreateError") + DatabaseAPIKeyCreateError = constError("DatabaseApiKeyCreateError") + DatabaseAPIKeyDuplicateError = constError("DatabaseApiKeyDuplicateError") + DatabaseAPIKeyNotFoundError = constError("DatabaseApiKeyNotFoundError") + + DatabaseAPIkeyDestroyError = constError("DatabaseAPIkeyDestroyError") + DatabaseAuditLogListingError = constError("DatabaseAuditLogListingError") + DatabaseBlueprintNotFoundError = constError("DatabaseBlueprintNotFoundError") + DatabaseBlueprintDeleteFailedError = constError("DatabaseBlueprintDeleteFailedError") + DatabaseBlueprintCreateError = constError("DatabaseBlueprintCreateError") + DatabaseBlueprintUpdateError = constError("DatabaseBlueprintUpdateError") + ParameterEmptyVolumeIDError = constError("ParameterEmptyVolumeIDError") + ParameterEmptyOpenstackVolumeIDError = constError("ParameterEmptyOpenstackVolumeIDError") + DatabaseChangeAPIKeyError = constError("DatabaseChangeAPIKeyError") + DatabaseChargeListingError = constError("DatabaseChargeListingError") + DatabaseConnectionFailedError = constError("DatabaseConnectionFailedError") + + DatabaseDNSDomainCreateError = constError("DatabaseDnsDomainCreateError") + DatabaseDNSDomainUpdateError = constError("DatabaseDnsDomainUpdateError") + DatabaseDNSDomainDuplicateNameError = constError("DatabaseDnsDomainDuplicateNameError") + DatabaseDNSDomainNotFoundError = constError("DatabaseDNSDomainNotFoundError") + DatabaseDNSRecordCreateError = constError("DatabaseDNSRecordCreateError") + DatabaseDNSRecordNotFoundError = constError("DatabaseDNSRecordNotFoundError") + DatabaseDNSRecordUpdateError = constError("DatabaseDNSRecordUpdateError") + DatabaseListingDNSDomainsError = constError("DatabaseListingDNSDomainsError") + + DatabaseFirewallCreateError = constError("DatabaseFirewallCreateError") + DatabaseFirewallRulesInvalidParams = constError("DatabaseFirewallRulesInvalidParams") + DatabaseFirewallDuplicateNameError = constError("DatabaseFirewallDuplicateNameError") + DatabaseFirewallMismatchError = constError("DatabaseFirewallMismatchError") + DatabaseFirewallNotFoundError = constError("DatabaseFirewallNotFoundError") + DatabaseFirewallSaveFailedError = constError("DatabaseFirewallSaveFailedError") + DatabaseFirewallDeleteFailedError = constError("DatabaseFirewallDeleteFailedError") + DatabaseFirewallRuleCreateError = constError("DatabaseFirewallRuleCreateError") + DatabaseFirewallRuleDeleteFailedError = constError("DatabaseFirewallRuleDeleteFailedError") + DatabaseFirewallRulesFindError = constError("DatabaseFirewallRulesFindError") + DatabaseListingFirewallsError = constError("DatabaseListingFirewallsError") + FirewallDuplicateError = constError("FirewallDuplicateError") + + // Instances Errors + DatabaseInstanceAlreadyinRescueStateError = constError("DatabaseInstanceAlreadyinRescueStateError") + DatabaseInstanceBuildError = constError("DatabaseInstanceBuildError") + DatabaseInstanceBuildMultipleWithExistingPublicIPError = constError("DatabaseInstanceBuildMultipleWithExistingPublicIPError") + DatabaseInstanceCreateError = constError("DatabaseInstanceCreateError") + DatabaseInstanceSnapshotTooBigError = constError("DatabaseInstanceSnapshotTooBigError") + DatabaseInstanceDuplicateError = constError("DatabaseInstanceDuplicateError") + DatabaseInstanceDuplicateNameError = constError("DatabaseInstanceDuplicateNameError") + DatabaseInstanceListError = constError("DatabaseInstanceListError") + DatabaseInstanceNotFoundError = constError("DatabaseInstanceNotFoundError") + DatabaseInstanceNotInOpenStackError = constError("DatabaseInstanceNotInOpenStackError") + DatabaseCannotManageClusterInstanceError = constError("DatabaseCannotManageClusterInstanceError") + DatabaseOldInstanceFindError = constError("DatabaseOldInstanceFindError") + DatabaseCannotMoveIPError = constError("DatabaseCannotMoveIPError") + DatabaseIPFindError = constError("DatabaseIPFindError") + + // Kubernetes Errors + DatabaseKubernetesClusterInvalidError = constError("DatabaseKubernetesClusterInvalid") + DatabaseKubernetesApplicationNotFoundError = constError("DatabaseKubernetesApplicationNotFound") + DatabaseKubernetesApplicationInvalidPlanError = constError("DatabaseKubernetesApplicationInvalidPlan") + DatabaseKubernetesClusterDuplicateError = constError("DatabaseKubernetesClusterDuplicate") + DatabaseKubernetesClusterNotFoundError = constError("DatabaseKubernetesClusterNotFound") + DatabaseKubernetesNodeNotFoundError = constError("DatabaseKubernetesNodeNotFound") + + DatabaseClusterPoolNotFoundError = constError("DatabaseClusterPoolNotFound") + DatabaseClusterPoolInstanceNotFoundError = constError("DatabaseClusterPoolInstanceNotFound") + DatabaseClusterPoolInstanceDeleteFailedError = constError("DatabaseClusterPoolInstanceDeleteFailed") + DatabaseClusterPoolNoSufficientInstancesAvailableError = constError("DatabaseClusterPoolNoSufficientInstancesAvailable") + + DatabaseListingAccountsError = constError("DatabaseListingAccountsError") + DatabaseListingMembershipsError = constError("DatabaseListingMembershipsError") + DatabaseMembershipCannotDeleteError = constError("DatabaseMembershipCannotDeleteError") + DatabaseMembershipsGrantAccessError = constError("DatabaseMembershipsGrantAccessError") + DatabaseMembershipsInvalidInvitationError = constError("DatabaseMembershipsInvalidInvitationError") + DatabaseMembershipsInvalidStatusError = constError("DatabaseMembershipsInvalidStatusError") + DatabaseMembershipsNotFoundError = constError("DatabaseMembershipsNotFoundError") + DatabaseMembershipsSuspendedError = constError("DatabaseMembershipsSuspendedError") + + DatabaseLoadBalancerSaveError = constError("DatabaseLoadBalancerSaveError") + DatabaseLoadBalancerDeleteError = constError("DatabaseLoadBalancerDeleteError") + DatabaseLoadBalancerUpdateError = constError("DatabaseLoadBalancerUpdateError") + DatabaseLoadBalancerDuplicateError = constError("DatabaseLoadBalancerDuplicateError") + DatabaseLoadBalancerExistsError = constError("DatabaseLoadBalancerExistsError") + DatabaseLoadBalancerNotFoundError = constError("DatabaseLoadBalancerNotFoundError") + + DatabaseNetworksListError = constError("DatabaseNetworksListError") + DatabaseNetworkCreateError = constError("DatabaseNetworkCreateError") + DatabaseNetworkExistsError = constError("DatabaseNetworkExistsError") + DatabaseNetworkDeleteLastError = constError("DatabaseNetworkDeleteLastError") + DatabaseNetworkDeleteWithInstanceError = constError("DatabaseNetworkDeleteWithInstanceError") + DatabaseNetworkDuplicateNameError = constError("DatabaseNetworkDuplicateNameError") + DatabaseNetworkLookupError = constError("DatabaseNetworkLookupError") + DatabaseNetworkNotFoundError = constError("DatabaseNetworkNotFoundError") + DatabaseNetworkSaveError = constError("DatabaseNetworkSaveError") + + DatabasePrivateIPFromPublicIPError = constError("DatabasePrivateIPFromPublicIPError") + + DatabaseQuotaNotFoundError = constError("DatabaseQuotaNotFoundError") + DatabaseQuotaUpdateError = constError("DatabaseQuotaUpdateError") + QuotaLimitReachedError = constError("QuotaLimitReachedError") + DatabaseServiceNotFoundError = constError("DatabaseServiceNotFoundError") + DatabaseSizeNotFoundError = constError("DatabaseServiceNotFoundError") + DatabaseSizesListError = constError("DatabaseSizesListError") + + DatabaseSnapshotCannotDeleteInUseError = constError("DatabaseSnapshotCannotDeleteInUseError") + DatabaseSnapshotCannotReplaceError = constError("DatabaseSnapshotCannotReplaceError") + DatabaseSnapshotCreateError = constError("DatabaseSnapshotCreateError") + DatabaseSnapshotCreateInstanceNotFoundError = constError("DatabaseSnapshotCreateInstanceNotFoundError") + DatabaseSnapshotCreateAlreadyInProcessError = constError("DatabaseSnapshotCreateAlreadyInProcessError") + DatabaseSnapshotNotFoundError = constError("DatabaseSnapshotNotFoundError") + DatabaseSnapshotsListError = constError("DatabaseSnapshotsListError") + + DatabaseSSHKeyDestroyError = constError("DatabaseSSHKeyDestroyError") + DatabaseSSHKeyCreateError = constError("DatabaseSSHKeyCreateError") + DatabaseSSHKeyUpdateError = constError("DatabaseSSHKeyUpdateError") + DatabaseSSHKeyDuplicateNameError = constError("DatabaseSSHKeyDuplicateNameError") + DatabaseSSHKeyNotFoundError = constError("DatabaseSSHKeyNotFoundError") + SSHKeyDuplicateError = constError("SSHKeyDuplicateError") + + DatabaseTeamCannotDeleteError = constError("DatabaseTeamCannotDeleteError") + DatabaseTeamCreateError = constError("DatabaseTeamCreateError") + DatabaseTeamListingError = constError("DatabaseTeamListingError") + DatabaseTeamMembershipCreateError = constError("DatabaseTeamMembershipCreateError") + DatabaseTeamNotFoundError = constError("DatabaseTeamNotFoundError") + DatabaseTemplateDestroyError = constError("DatabaseTemplateDestroyError") + DatabaseTemplateNotFoundError = constError("DatabaseTemplateNotFoundError") + DatabaseTemplateUpdateError = constError("DatabaseTemplateUpdateError") + DatabaseTemplateWouldConflictError = constError("DatabaseTemplateWouldConflictError") + DatabaseImageIDInvalidError = constError("DatabaseImageIDInvalidError") + + DatabaseUserAlreadyExistsError = constError("DatabaseUserAlreadyExistsError") + DatabaseUserNewError = constError("DatabaseUserNewError") + DatabaseUserConfirmedError = constError("DatabaseUserConfirmedError") + DatabaseUserSuspendedError = constError("DatabaseUserSuspendedError") + DatabaseUserLoginFailedError = constError("DatabaseUserLoginFailedError") + DatabaseUserNoChangeStatusError = constError("DatabaseUserNoChangeStatusError") + DatabaseUserNotFoundError = constError("DatabaseUserNotFoundError") + DatabaseUserPasswordInvalidError = constError("DatabaseUserPasswordInvalidError") + DatabaseUserPasswordSecuringFailedError = constError("DatabaseUserPasswordSecuringFailedError") + DatabaseUserUpdateError = constError("DatabaseUserUpdateError") + DatabaseCreatingUserError = constError("DatabaseCreatingUserError") + + DatabaseVolumeIDInvalidError = constError("DatabaseVolumeIDInvalidError") + DatabaseVolumeDuplicateNameError = constError("DatabaseVolumeDuplicateNameError") + DatabaseVolumeCannotMultipleAttachError = constError("DatabaseVolumeCannotMultipleAttachError") + DatabaseVolumeStillAttachedCannotResizeError = constError("DatabaseVolumeStillAttachedCannotResizeError") + DatabaseVolumeNotAttachedError = constError("DatabaseVolumeNotAttachedError") + DatabaseVolumeNotFoundError = constError("DatabaseVolumeNotFoundError") + DatabaseVolumeDeleteFailedError = constError("DatabaseVolumeDeleteFailedError") + + DatabaseWebhookDestroyError = constError("DatabaseWebhookDestroyError") + DatabaseWebhookNotFoundError = constError("DatabaseWebhookNotFoundError") + DatabaseWebhookUpdateError = constError("DatabaseWebhookUpdateError") + DatabaseWebhookWouldConflictError = constError("DatabaseWebhookWouldConflictError") + + OpenstackConnectionFailedError = constError("OpenstackConnectionFailedError") + OpenstackCreatingProjectError = constError("OpenstackCreatingProjectError") + OpenstackCreatingUserError = constError("OpenstackCreatingUserError") + OpenstackFirewallCreateError = constError("OpenstackFirewallCreateError") + OpenstackFirewallDestroyError = constError("OpenstackFirewallDestroyError") + OpenstackFirewallRuleDestroyError = constError("OpenstackFirewallRuleDestroyError") + OpenstackInstanceCreateError = constError("OpenstackInstanceCreateError") + OpenstackInstanceDestroyError = constError("OpenstackInstanceDestroyError") + OpenstackInstanceFindError = constError("OpenstackInstanceFindError") + OpenstackInstanceRebootError = constError("OpenstackInstanceRebootError") + OpenstackInstanceRebuildError = constError("OpenstackInstanceRebuildError") + OpenstackInstanceResizeError = constError("OpenstackInstanceResizeError") + OpenstackInstanceRestoreError = constError("OpenstackInstanceRestoreError") + OpenstackInstanceSetFirewallError = constError("OpenstackInstanceSetFirewallError") + OpenstackInstanceStartError = constError("OpenstackInstanceStartError") + OpenstackInstanceStopError = constError("OpenstackInstanceStopError") + OpenstackIPCreateError = constError("OpenstackIPCreateError") + OpenstackNetworkCreateFailedError = constError("OpenstackNetworkCreateFailedError") + OpenstackNnetworkDestroyFailedError = constError("OpenstackNnetworkDestroyFailedError") + OpenstackNetworkEnsureConfiguredError = constError("OpenstackNetworkEnsureConfiguredError") + OpenstackPublicIPConnectError = constError("OpenstackPublicIPConnectError") + OpenstackQuotaApplyError = constError("OpenstackQuotaApplyError") + OpenstackSnapshotDestroyError = constError("OpenstackSnapshotDestroyError") + OpenstackSSHKeyUploadError = constError("OpenstackSSHKeyUploadError") + OpenstackProjectDestroyError = constError("OpenstackProjectDestroyError") + OpenstackProjectFindError = constError("OpenstackProjectFindError") + OpenstackUserDestroyError = constError("OpenstackUserDestroyError") + OpenstackURLGlanceError = constError("OpenstackUrlGlanceError") + OpenstackURLNovaError = constError("OpenstackURLNovaError") + AuthenticationInvalidKeyError = constError("AuthenticationInvalidKeyError") + AuthenticationAccessDeniedError = constError("AuthenticationAccessDeniedError") + + InstanceStateMustBeActiveOrShutoffError = constError("InstanceStateMustBeActiveOrShutoffError") + MarshalingObjectsToJSONError = constError("MarshalingObjectsToJsonError") + NetworkCreateDefaultError = constError("NetworkCreateDefaultError") + NetworkDeleteDefaultError = constError("NetworkDeleteDefaultError") + ParameterTimeValueError = constError("ParameterTimeValueError") + ParameterDateRangeTooLongError = constError("ParameterDateRangeTooLongError") + ParameterDNSRecordTypeError = constError("ParameterDnsRecordTypeError") + ParameterDNSRecordCnameApexError = constError("ParameterDNSRecordCnameApexError") + ParameterPublicKeyEmptyError = constError("ParameterPublicKeyEmptyError") + ParameterDateRangeError = constError("ParameterDateRangeError") + ParameterIDMissingError = constError("ParameterIDMissingError") + ParameterIDToIntegerError = constError("ParameterIDToIntegerError") + ParameterImageAndVolumeIDMissingError = constError("ParameterImageAndVolumeIDMissingError") + ParameterLabelInvalidError = constError("ParameterLabelInvalidError") + ParameterNameInvalidError = constError("ParameterNameInvalidError") + ParameterPrivateIPMissingError = constError("ParameterPrivateIPMissingError") + ParameterPublicIPMissingError = constError("ParameterPublicIPMissingError") + ParameterSizeMissingError = constError("ParameterSizeMissingError") + ParameterVolumeSizeIncorrectError = constError("ParameterVolumeSizeIncorrectError") + ParameterVolumeSizeMustIncreaseError = constError("ParameterVolumeSizeMustIncreaseError") + CannotResizeVolumeError = constError("CannotResizeVolumeError") + ParameterSnapshotMissingError = constError("ParameterSnapshotMissingError") + ParameterSnapshotIncorrectFormatError = constError("ParameterSnapshotIncorrectFormatError") + ParameterStartPortMissingError = constError("ParameterStartPortMissingError") + DatabaseTemplateParseRequestError = constError("DatabaseTemplateParseRequestError") + ParameterValueMissingError = constError("ParameterValueMissingError") + + OutOFCapacityError = constError("OutOFCapacityError") + CannotGetConsoleError = constError("CannotGetConsoleError") + DatabaseDNSDomainInvalidError = constError("DatabaseDNSDomainInvalidError") + DatabaseFirewallExistsError = constError("DatabaseFirewallExistsError") + DatabaseKubernetesClusterNoPoolsError = constError("DatabaseKubernetesClusterNoPoolsError") + DatabaseKubernetesClusterInvalidVersionError = constError("DatabaseKubernetesClusterInvalidVersionError") + DatabaseNamespacesListError = constError("DatabaseNamespacesListError") + DatabaseNamespaceCreateError = constError("DatabaseNamespaceCreateError") + DatabaseNamespaceExistsError = constError("DatabaseNamespaceExistsError") + DatabaseNamespaceDeleteLastError = constError("DatabaseNamespaceDeleteLastError") + DatabaseNamespaceDeleteWithInstanceError = constError("DatabaseNamespaceDeleteWithInstanceError") + DatabaseNamespaceDuplicateNameError = constError("DatabaseNamespaceDuplicateNameError") + DatabaseNamespaceLookupError = constError("DatabaseNamespaceLookupError") + DatabaseNamespaceNotFoundError = constError("DatabaseNamespaceNotFoundError") + DatabaseNamespaceSaveError = constError("DatabaseNamespaceSaveError") + DatabaseQuotaLockFailedError = constError("DatabaseQuotaLockFailedError") + DatabaseDiskImageNotFoundError = constError("DatabaseDiskImageNotFoundError") + DatabaseDiskImageNotImplementedError = constError("DatabaseDiskImageNotImplementedError") + DatabaseTemplateExistsError = constError("DatabaseTemplateExistsError") + DatabaseTemplateSaveFailedError = constError("DatabaseTemplateSaveFailedError") + KubernetesClusterInvalidNameError = constError("KubernetesClusterInvalidNameError") + + AccountNotEnabledIncCardError = constError("AccountNotEnabledIncCardError") + AccountNotEnabledWithoutCardError = constError("AccountNotEnabledWithoutCardError") + + UnknownError = constError("UnknownError") + AuthenticationError = constError("AuthenticationError") + InternalServerError = constError("InternalServerError") +) + +type constError string + +func (err constError) Error() string { + return string(err) +} + +func (err constError) Is(target error) bool { + ts := target.Error() + es := string(err) + return ts == es || strings.HasPrefix(ts, es+": ") +} + +func (err constError) wrap(inner error) error { + return wrapError{msg: string(err), err: inner} +} + +type wrapError struct { + err error + msg string +} + +func (err wrapError) Error() string { + if err.err != nil { + return fmt.Sprintf("%s: %v", err.msg, err.err) + } + return err.msg +} + +func (err wrapError) Unwrap() error { + return err.err +} + +func (err wrapError) Is(target error) bool { + return constError(err.msg).Is(target) +} + +func decodeError(err error) error { + var response map[string]interface{} + var msg strings.Builder + + switch err := err.(type) { + case *url.Error: + if _, ok := err.Err.(net.Error); ok { + err := fmt.Errorf("we found a problem connected against the api") + return TimeoutError.wrap(err) + } + case net.Error: + if err.Timeout() { + err := fmt.Errorf("we found a network issue") + return TimeoutError.wrap(err) + } + if _, ok := err.(*net.DNSError); ok { + err := fmt.Errorf("we found a dns issue") + return TimeoutError.wrap(err) + } + case wrapError: + return err + case HTTPError: + errorData := err + reason := []byte(errorData.Reason) + + if err := json.Unmarshal(reason, &response); err != nil { + err := fmt.Errorf("failed to decode the response expected from the API - status: %s, code: %d, reason: %s", errorData.Status, errorData.Code, errorData.Reason) + return ResponseDecodeFailedError.wrap(err) + } + + if _, ok := response["status"].(float64); ok { + if response["status"].(float64) == 500 { + err := errors.New("internal Server Error") + return InternalServerError.wrap(err) + } + } + + if response["result"] == "requires_authentication" { + err := errors.New("authentication Error") + return AuthenticationError.wrap(err) + } + + if _, ok := response["reason"]; ok { + msg.WriteString(response["reason"].(string)) + if _, ok := response["details"]; ok { + msg.WriteString(", " + response["details"].(string)) + } + } + + switch response["code"] { + case "region_unavailable": + err := errors.New(msg.String()) + return RegionUnavailableError.wrap(err) + case "database_kubernetes_cluster_invalid": + err := errors.New(msg.String()) + return DatabaseKubernetesClusterInvalidError.wrap(err) + case "disabled_service": + err := errors.New(msg.String()) + return DisabledServiceError.wrap(err) + case "civostatsd_record_failed": + err := errors.New(msg.String()) + return CivoStatsdRecordFailedError.wrap(err) + case "authentication_failed": + err := errors.New(msg.String()) + return AuthenticationFailedError.wrap(err) + case "cannot_rescue_new_volume": + err := errors.New(msg.String()) + return CannotRescueNewVolumeError.wrap(err) + case "cannot_restore_new_volume": + err := errors.New(msg.String()) + return CannotRestoreNewVolumeError.wrap(err) + case "cannot_scale_already_rescaling_cluster": + err := errors.New(msg.String()) + return CannotScaleAlreadyRescalingClusterError.wrap(err) + case "database_account_destroy": + err := errors.New(msg.String()) + return DatabaseAccountDestroyError.wrap(err) + case "database_account_not_found": + err := errors.New(msg.String()) + return DatabaseAccountNotFoundError.wrap(err) + case "database_account_access_denied": + err := errors.New(msg.String()) + return DatabaseAccountAccessDeniedError.wrap(err) + case "database_creating_account": + err := errors.New(msg.String()) + return DatabaseCreatingAccountError.wrap(err) + case "database_updating_account": + err := errors.New(msg.String()) + return DatabaseUpdatingAccountError.wrap(err) + case "database_account_stats": + err := errors.New(msg.String()) + return DatabaseAccountStatsError.wrap(err) + case "database_action_listing": + err := errors.New(msg.String()) + return DatabaseActionListingError.wrap(err) + case "database_action_create": + err := errors.New(msg.String()) + return DatabaseActionCreateError.wrap(err) + case "database_api_key_create": + err := errors.New(msg.String()) + return DatabaseAPIKeyCreateError.wrap(err) + case "database_api_key_duplicate": + err := errors.New(msg.String()) + return DatabaseAPIKeyDuplicateError.wrap(err) + case "database_api_key_not_found": + err := errors.New(msg.String()) + return DatabaseAPIKeyNotFoundError.wrap(err) + case "database_api_key_destroy": + err := errors.New(msg.String()) + return DatabaseAPIkeyDestroyError.wrap(err) + case "database_audit_log_listing": + err := errors.New(msg.String()) + return DatabaseAuditLogListingError.wrap(err) + case "database_blueprint_not_found": + err := errors.New(msg.String()) + return DatabaseBlueprintNotFoundError.wrap(err) + case "database_blueprint_delete_failed": + err := errors.New(msg.String()) + return DatabaseBlueprintDeleteFailedError.wrap(err) + case "database_blueprint_create": + err := errors.New(msg.String()) + return DatabaseBlueprintCreateError.wrap(err) + case "database_blueprint_update": + err := errors.New(msg.String()) + return DatabaseBlueprintUpdateError.wrap(err) + case "parameter_empty_volume_id": + err := errors.New(msg.String()) + return ParameterEmptyVolumeIDError.wrap(err) + case "parameter_empty_openstack_volume_id": + err := errors.New(msg.String()) + return ParameterEmptyOpenstackVolumeIDError.wrap(err) + case "database_change_api_key": + err := errors.New(msg.String()) + return DatabaseChangeAPIKeyError.wrap(err) + case "database_charge_listing": + err := errors.New(msg.String()) + return DatabaseChargeListingError.wrap(err) + case "database_connection_failed": + err := errors.New(msg.String()) + return DatabaseConnectionFailedError.wrap(err) + case "database_dns_domain_create": + err := errors.New(msg.String()) + return DatabaseDNSDomainCreateError.wrap(err) + case "database_dns_domain_update": + err := errors.New(msg.String()) + return DatabaseDNSDomainUpdateError.wrap(err) + case "database_dns_domain_duplicate_name": + err := errors.New(msg.String()) + return DatabaseDNSDomainDuplicateNameError.wrap(err) + case "database_dns_domain_not_found": + err := errors.New(msg.String()) + return DatabaseDNSDomainNotFoundError.wrap(err) + case "database_dns_record_create": + err := errors.New(msg.String()) + return DatabaseDNSRecordCreateError.wrap(err) + case "database_dns_record_not_found": + err := errors.New(msg.String()) + return DatabaseDNSRecordNotFoundError.wrap(err) + case "database_dns_record_update": + err := errors.New(msg.String()) + return DatabaseDNSRecordUpdateError.wrap(err) + case "database_firewall_create": + err := errors.New(msg.String()) + return DatabaseFirewallCreateError.wrap(err) + case "database_firewall_duplicate_name": + err := errors.New(msg.String()) + return DatabaseFirewallDuplicateNameError.wrap(err) + case "database_firewall_rules_invalid_params": + err := errors.New(msg.String()) + return DatabaseFirewallRulesInvalidParams.wrap(err) + case "database_firewall_mismatch": + err := errors.New(msg.String()) + return DatabaseFirewallMismatchError.wrap(err) + case "database_firewall_not_found": + err := errors.New(msg.String()) + return DatabaseFirewallNotFoundError.wrap(err) + case "database_firewall_save_failed": + err := errors.New(msg.String()) + return DatabaseFirewallSaveFailedError.wrap(err) + case "database_firewall_delete_failed": + err := errors.New(msg.String()) + return DatabaseFirewallDeleteFailedError.wrap(err) + case "database_firewall_rule_create": + err := errors.New(msg.String()) + return DatabaseFirewallRuleCreateError.wrap(err) + case "database_firewall_rule_delete_failed": + err := errors.New(msg.String()) + return DatabaseFirewallRuleDeleteFailedError.wrap(err) + case "database_firewall_rules_find": + err := errors.New(msg.String()) + return DatabaseFirewallRulesFindError.wrap(err) + case "database_cannot_manage_cluster_instance": + err := errors.New(msg.String()) + return DatabaseCannotManageClusterInstanceError.wrap(err) + case "database_old_instance_find": + err := errors.New(msg.String()) + return DatabaseOldInstanceFindError.wrap(err) + case "database_cannot_move_ip": + err := errors.New(msg.String()) + return DatabaseCannotMoveIPError.wrap(err) + case "database_ip_find": + err := errors.New(msg.String()) + return DatabaseIPFindError.wrap(err) + case "database_listing_accounts": + err := errors.New(msg.String()) + return DatabaseListingAccountsError.wrap(err) + case "database_listing_firewalls": + err := errors.New(msg.String()) + return DatabaseListingFirewallsError.wrap(err) + case "database_listing_dns_domains": + err := errors.New(msg.String()) + return DatabaseListingDNSDomainsError.wrap(err) + case "database_listing_memberships": + err := errors.New(msg.String()) + return DatabaseListingMembershipsError.wrap(err) + case "database_loadbalancer_not_found": + err := errors.New(msg.String()) + return DatabaseLoadBalancerNotFoundError.wrap(err) + case "database_loadbalancer_exists": + err := errors.New(msg.String()) + return DatabaseLoadBalancerExistsError.wrap(err) + case "database_loadbalancer_save_failed": + err := errors.New(msg.String()) + return DatabaseLoadBalancerSaveError.wrap(err) + case "database_loadbalancer_deleted_failed": + err := errors.New(msg.String()) + return DatabaseLoadBalancerDeleteError.wrap(err) + case "database_loadbalancer_duplicate_name": + err := errors.New(msg.String()) + return DatabaseLoadBalancerDuplicateError.wrap(err) + case "database_loadbalancer_update_failed": + err := errors.New(msg.String()) + return DatabaseLoadBalancerUpdateError.wrap(err) + case "database_membership_cannot_delete": + err := errors.New(msg.String()) + return DatabaseMembershipCannotDeleteError.wrap(err) + case "database_memberships_grant_access": + err := errors.New(msg.String()) + return DatabaseMembershipsGrantAccessError.wrap(err) + case "database_memberships_invalid_invitation": + err := errors.New(msg.String()) + return DatabaseMembershipsInvalidInvitationError.wrap(err) + case "database_memberships_invalid_status": + err := errors.New(msg.String()) + return DatabaseMembershipsInvalidStatusError.wrap(err) + case "database_memberships_not_found": + err := errors.New(msg.String()) + return DatabaseMembershipsNotFoundError.wrap(err) + case "database_memberships_suspended": + err := errors.New(msg.String()) + return DatabaseMembershipsSuspendedError.wrap(err) + case "database_networks_list": + err := errors.New(msg.String()) + return DatabaseNetworksListError.wrap(err) + case "database_network_create": + err := errors.New(msg.String()) + return DatabaseNetworkCreateError.wrap(err) + case "database_network_exists": + err := errors.New(msg.String()) + return DatabaseNetworkExistsError.wrap(err) + case "database_network_delete_last": + err := errors.New(msg.String()) + return DatabaseNetworkDeleteLastError.wrap(err) + case "database_network_delete_with_instance": + err := errors.New(msg.String()) + return DatabaseNetworkDeleteWithInstanceError.wrap(err) + case "database_network_duplicate_name": + err := errors.New(msg.String()) + return DatabaseNetworkDuplicateNameError.wrap(err) + case "database_network_lookup": + err := errors.New(msg.String()) + return DatabaseNetworkLookupError.wrap(err) + case "database_network_not_found": + err := errors.New(msg.String()) + return DatabaseNetworkNotFoundError.wrap(err) + case "database_network_save": + err := errors.New(msg.String()) + return DatabaseNetworkSaveError.wrap(err) + case "database_private_ip_from_public_ip": + err := errors.New(msg.String()) + return DatabasePrivateIPFromPublicIPError.wrap(err) + case "database_quota_not_found": + err := errors.New(msg.String()) + return DatabaseQuotaNotFoundError.wrap(err) + case "database_quota_update": + err := errors.New(msg.String()) + return DatabaseQuotaUpdateError.wrap(err) + case "database_service_not_found": + err := errors.New(msg.String()) + return DatabaseServiceNotFoundError.wrap(err) + case "database_size_not_found": + err := errors.New(msg.String()) + return DatabaseSizeNotFoundError.wrap(err) + case "database_sizes_list": + err := errors.New(msg.String()) + return DatabaseSizesListError.wrap(err) + case "database_snapshot_cannot_delete_in_use": + err := errors.New(msg.String()) + return DatabaseSnapshotCannotDeleteInUseError.wrap(err) + case "database_snapshot_cannot_replace": + err := errors.New(msg.String()) + return DatabaseSnapshotCannotReplaceError.wrap(err) + case "database_snapshot_create": + err := errors.New(msg.String()) + return DatabaseSnapshotCreateError.wrap(err) + case "database_snapshot_create_instance_not_found": + err := errors.New(msg.String()) + return DatabaseSnapshotCreateInstanceNotFoundError.wrap(err) + case "database_snapshot_create_already_in_process": + err := errors.New(msg.String()) + return DatabaseSnapshotCreateAlreadyInProcessError.wrap(err) + case "database_snapshot_not_found": + err := errors.New(msg.String()) + return DatabaseSnapshotNotFoundError.wrap(err) + case "database_snapshots_list": + err := errors.New(msg.String()) + return DatabaseSnapshotsListError.wrap(err) + case "database_ssh_key_destroy": + err := errors.New(msg.String()) + return DatabaseSSHKeyDestroyError.wrap(err) + case "database_ssh_key_create": + err := errors.New(msg.String()) + return DatabaseSSHKeyCreateError.wrap(err) + case "database_ssh_key_update": + err := errors.New(msg.String()) + return DatabaseSSHKeyUpdateError.wrap(err) + case "database_ssh_key_duplicate_name": + err := errors.New(msg.String()) + return DatabaseSSHKeyDuplicateNameError.wrap(err) + case "database_ssh_key_not_found": + err := errors.New(msg.String()) + return DatabaseSSHKeyNotFoundError.wrap(err) + case "database_team_cannot_delete": + err := errors.New(msg.String()) + return DatabaseTeamCannotDeleteError.wrap(err) + case "database_team_create": + err := errors.New(msg.String()) + return DatabaseTeamCreateError.wrap(err) + case "database_team_listing": + err := errors.New(msg.String()) + return DatabaseTeamListingError.wrap(err) + case "database_team_membership_create": + err := errors.New(msg.String()) + return DatabaseTeamMembershipCreateError.wrap(err) + case "database_team_not_found": + err := errors.New(msg.String()) + return DatabaseTeamNotFoundError.wrap(err) + case "database_template_destroy": + err := errors.New(msg.String()) + return DatabaseTemplateDestroyError.wrap(err) + case "database_template_not_found": + err := errors.New(msg.String()) + return DatabaseTemplateNotFoundError.wrap(err) + case "database_template_update": + err := errors.New(msg.String()) + return DatabaseTemplateUpdateError.wrap(err) + case "database_template_would_conflict": + err := errors.New(msg.String()) + return DatabaseTemplateWouldConflictError.wrap(err) + case "database_image_id_invalid": + err := errors.New(msg.String()) + return DatabaseImageIDInvalidError.wrap(err) + case "database_volume_id_invalid": + err := errors.New(msg.String()) + return DatabaseVolumeIDInvalidError.wrap(err) + case "database_user_already_exists": + err := errors.New(msg.String()) + return DatabaseUserAlreadyExistsError.wrap(err) + case "database_user_new": + err := errors.New(msg.String()) + return DatabaseUserNewError.wrap(err) + case "database_user_confirmed": + err := errors.New(msg.String()) + return DatabaseUserConfirmedError.wrap(err) + case "database_user_suspended": + err := errors.New(msg.String()) + return DatabaseUserSuspendedError.wrap(err) + case "database_user_login_failed": + err := errors.New(msg.String()) + return DatabaseUserLoginFailedError.wrap(err) + case "database_user_no_change_status": + err := errors.New(msg.String()) + return DatabaseUserNoChangeStatusError.wrap(err) + case "database_user_not_found": + err := errors.New(msg.String()) + return DatabaseUserNotFoundError.wrap(err) + case "database_user_password_invalid": + err := errors.New(msg.String()) + return DatabaseUserPasswordInvalidError.wrap(err) + case "database_user_password_securing_failed": + err := errors.New(msg.String()) + return DatabaseUserPasswordSecuringFailedError.wrap(err) + case "database_user_update": + err := errors.New(msg.String()) + return DatabaseUserUpdateError.wrap(err) + case "database_creating_user": + err := errors.New(msg.String()) + return DatabaseCreatingUserError.wrap(err) + case "database_volume_duplicate_name": + err := errors.New(msg.String()) + return DatabaseVolumeDuplicateNameError.wrap(err) + case "database_volume_cannot_multiple_attach": + err := errors.New(msg.String()) + return DatabaseVolumeCannotMultipleAttachError.wrap(err) + case "database_volume_still_attached_cannot_resize": + err := errors.New(msg.String()) + return DatabaseVolumeStillAttachedCannotResizeError.wrap(err) + case "database_volume_not_attached": + err := errors.New(msg.String()) + return DatabaseVolumeNotAttachedError.wrap(err) + case "database_volume_not_found": + err := errors.New(msg.String()) + return DatabaseVolumeNotFoundError.wrap(err) + case "database_volume_delete_failed": + err := errors.New(msg.String()) + return DatabaseVolumeDeleteFailedError.wrap(err) + case "database_webhook_destroy": + err := errors.New(msg.String()) + return DatabaseWebhookDestroyError.wrap(err) + case "database_webhook_not_found": + err := errors.New(msg.String()) + return DatabaseWebhookNotFoundError.wrap(err) + case "database_webhook_update": + err := errors.New(msg.String()) + return DatabaseWebhookUpdateError.wrap(err) + case "database_webhook_would_conflict": + err := errors.New(msg.String()) + return DatabaseWebhookWouldConflictError.wrap(err) + case "openstack_connection_failed": + err := errors.New(msg.String()) + return OpenstackConnectionFailedError.wrap(err) + case "openstack_creating_project": + err := errors.New(msg.String()) + return OpenstackCreatingProjectError.wrap(err) + case "openstack_creating_user": + err := errors.New(msg.String()) + return OpenstackCreatingUserError.wrap(err) + case "openstack_firewall_create": + err := errors.New(msg.String()) + return OpenstackFirewallCreateError.wrap(err) + case "openstack_firewall_destroy": + err := errors.New(msg.String()) + return OpenstackFirewallDestroyError.wrap(err) + case "openstack_firewall_rule_destroy": + err := errors.New(msg.String()) + return OpenstackFirewallRuleDestroyError.wrap(err) + case "openstack_instance_create": + err := errors.New(msg.String()) + return OpenstackInstanceCreateError.wrap(err) + case "openstack_instance_destroy": + err := errors.New(msg.String()) + return OpenstackInstanceDestroyError.wrap(err) + case "openstack_instance_find": + err := errors.New(msg.String()) + return OpenstackInstanceFindError.wrap(err) + case "openstack_instance_reboot": + err := errors.New(msg.String()) + return OpenstackInstanceRebootError.wrap(err) + case "openstack_instance_rebuild": + err := errors.New(msg.String()) + return OpenstackInstanceRebuildError.wrap(err) + case "openstack_instance_resize": + err := errors.New(msg.String()) + return OpenstackInstanceResizeError.wrap(err) + case "openstack_instance_restore": + err := errors.New(msg.String()) + return OpenstackInstanceRestoreError.wrap(err) + case "openstack_instance_set_firewall": + err := errors.New(msg.String()) + return OpenstackInstanceSetFirewallError.wrap(err) + case "openstack_instance_start": + err := errors.New(msg.String()) + return OpenstackInstanceStartError.wrap(err) + case "openstack_instance_stop": + err := errors.New(msg.String()) + return OpenstackInstanceStopError.wrap(err) + case "openstack_ip_create": + err := errors.New(msg.String()) + return OpenstackIPCreateError.wrap(err) + case "openstack_network_create_failed": + err := errors.New(msg.String()) + return OpenstackNetworkCreateFailedError.wrap(err) + case "openstack_network_destroy_failed": + err := errors.New(msg.String()) + return OpenstackNnetworkDestroyFailedError.wrap(err) + case "openstack_network_ensure_configured": + err := errors.New(msg.String()) + return OpenstackNetworkEnsureConfiguredError.wrap(err) + case "openstack_public_ip_connect": + err := errors.New(msg.String()) + return OpenstackPublicIPConnectError.wrap(err) + case "openstack_quota_apply": + err := errors.New(msg.String()) + return OpenstackQuotaApplyError.wrap(err) + case "openstack_snapshot_destroy": + err := errors.New(msg.String()) + return OpenstackSnapshotDestroyError.wrap(err) + case "openstack_ssh_key_upload": + err := errors.New(msg.String()) + return OpenstackSSHKeyUploadError.wrap(err) + case "openstack_project_destroy": + err := errors.New(msg.String()) + return OpenstackProjectDestroyError.wrap(err) + case "openstack_project_find": + err := errors.New(msg.String()) + return OpenstackProjectFindError.wrap(err) + case "openstack_user_destroy": + err := errors.New(msg.String()) + return OpenstackUserDestroyError.wrap(err) + case "openstack_url_glance": + err := errors.New(msg.String()) + return OpenstackURLGlanceError.wrap(err) + case "openstack_url_nova": + err := errors.New(msg.String()) + return OpenstackURLNovaError.wrap(err) + case "authentication_invalid_key": + err := errors.New(msg.String()) + return AuthenticationInvalidKeyError.wrap(err) + case "authentication_access_denied": + err := errors.New(msg.String()) + return AuthenticationAccessDeniedError.wrap(err) + case "firewall_duplicate": + err := errors.New(msg.String()) + return FirewallDuplicateError.wrap(err) + case "instance_state_must_be_active_or_shutoff": + err := errors.New(msg.String()) + return InstanceStateMustBeActiveOrShutoffError.wrap(err) + case "marshaling_objects_to_json": + err := errors.New(msg.String()) + return MarshalingObjectsToJSONError.wrap(err) + case "network_create_default": + err := errors.New(msg.String()) + return NetworkCreateDefaultError.wrap(err) + case "network_delete_default": + err := errors.New(msg.String()) + return NetworkDeleteDefaultError.wrap(err) + case "parameter_time_value": + err := errors.New(msg.String()) + return ParameterTimeValueError.wrap(err) + case "parameter_date_range_too_long": + err := errors.New(msg.String()) + return ParameterDateRangeTooLongError.wrap(err) + case "parameter_dns_record_type": + err := errors.New(msg.String()) + return ParameterDNSRecordTypeError.wrap(err) + case "parameter_dns_record_cname_apex": + err := errors.New(msg.String()) + return ParameterDNSRecordCnameApexError.wrap(err) + case "parameter_public_key_empty": + err := errors.New(msg.String()) + return ParameterPublicKeyEmptyError.wrap(err) + case "parameter_date_range": + err := errors.New(msg.String()) + return ParameterDateRangeError.wrap(err) + case "parameter_id_missing": + err := errors.New(msg.String()) + return ParameterIDMissingError.wrap(err) + case "parameter_id_to_integer": + err := errors.New(msg.String()) + return ParameterIDToIntegerError.wrap(err) + case "parameter_image_and_volume_id_missing": + err := errors.New(msg.String()) + return ParameterImageAndVolumeIDMissingError.wrap(err) + case "parameter_label_invalid": + err := errors.New(msg.String()) + return ParameterLabelInvalidError.wrap(err) + case "parameter_name_invalid": + err := errors.New(msg.String()) + return ParameterNameInvalidError.wrap(err) + case "parameter_private_ip_missing": + err := errors.New(msg.String()) + return ParameterPrivateIPMissingError.wrap(err) + case "parameter_public_ip_missing": + err := errors.New(msg.String()) + return ParameterPublicIPMissingError.wrap(err) + case "parameter_size_missing": + err := errors.New(msg.String()) + return ParameterSizeMissingError.wrap(err) + case "parameter_volume_size_incorrect": + err := errors.New(msg.String()) + return ParameterVolumeSizeIncorrectError.wrap(err) + case "parameter_volume_size_must_increase": + err := errors.New(msg.String()) + return ParameterVolumeSizeMustIncreaseError.wrap(err) + case "parameter_snapshot_missing": + err := errors.New(msg.String()) + return ParameterSnapshotMissingError.wrap(err) + case "parameter_snapshot_incorrect_format": + err := errors.New(msg.String()) + return ParameterSnapshotIncorrectFormatError.wrap(err) + case "parameter_start_port_missing": + err := errors.New(msg.String()) + return ParameterStartPortMissingError.wrap(err) + case "database_template_parse_request": + err := errors.New(msg.String()) + return DatabaseTemplateParseRequestError.wrap(err) + case "parameter_value_missing": + err := errors.New(msg.String()) + return ParameterValueMissingError.wrap(err) + case "quota_limit_reached": + err := errors.New(msg.String()) + return QuotaLimitReachedError.wrap(err) + case "sshkey_duplicate": + err := errors.New(msg.String()) + return SSHKeyDuplicateError.wrap(err) + case "volume_invalid_size": + err := errors.New(msg.String()) + return VolumeInvalidSizeError.wrap(err) + case "cannot_resize_volume": + err := errors.New(msg.String()) + return CannotResizeVolumeError.wrap(err) + case "database_kubernetes_application_not_found": + err := errors.New(msg.String()) + return DatabaseKubernetesApplicationNotFoundError.wrap(err) + case "database_kubernetes_application_invalid_plan": + err := errors.New(msg.String()) + return DatabaseKubernetesApplicationInvalidPlanError.wrap(err) + case "database_kubernetes_cluster_duplicate": + err := errors.New(msg.String()) + return DatabaseKubernetesClusterDuplicateError.wrap(err) + case "database_kubernetes_cluster_not_found": + err := errors.New(msg.String()) + return DatabaseKubernetesClusterNotFoundError.wrap(err) + case "database_kubernetes_node_not_found": + err := errors.New(msg.String()) + return DatabaseKubernetesNodeNotFoundError.wrap(err) + case "database_cluster_pool_not_found": + err := errors.New(msg.String()) + return DatabaseClusterPoolNotFoundError.wrap(err) + case "database_cluster_pool_instance_not_found": + err := errors.New(msg.String()) + return DatabaseClusterPoolInstanceNotFoundError.wrap(err) + case "database_cluster_pool_instance_delete_failed": + err := errors.New(msg.String()) + return DatabaseClusterPoolInstanceDeleteFailedError.wrap(err) + case "database_cluster_pool_no_sufficient_instances_available": + err := errors.New(msg.String()) + return DatabaseClusterPoolNoSufficientInstancesAvailableError.wrap(err) + case "database_instance_already_in_rescue_state": + err := errors.New(msg.String()) + return DatabaseInstanceAlreadyinRescueStateError.wrap(err) + case "database_instance_build": + err := errors.New(msg.String()) + return DatabaseInstanceBuildError.wrap(err) + case "database_instance_build_multiple_with_existing_public_ip": + err := errors.New(msg.String()) + return DatabaseInstanceBuildMultipleWithExistingPublicIPError.wrap(err) + case "database_instance_create": + err := errors.New(msg.String()) + return DatabaseInstanceCreateError.wrap(err) + case "database_instance_snapshot_too_big": + err := errors.New(msg.String()) + return DatabaseInstanceSnapshotTooBigError.wrap(err) + case "instance_duplicate": + err := errors.New(msg.String()) + return DatabaseInstanceDuplicateError.wrap(err) + case "database_instance_duplicate_name": + err := errors.New(msg.String()) + return DatabaseInstanceDuplicateNameError.wrap(err) + case "database_instance_list": + err := errors.New(msg.String()) + return DatabaseInstanceListError.wrap(err) + case "database_instance_find": + err := errors.New(msg.String()) + return DatabaseInstanceNotFoundError.wrap(err) + case "database_instance_not_in_openstack": + err := errors.New(msg.String()) + return DatabaseInstanceNotInOpenStackError.wrap(err) + case "account_not_enabled_inc_card": + err := errors.New(msg.String()) + return AccountNotEnabledIncCardError.wrap(err) + case "account_not_enabled_without_card": + err := errors.New(msg.String()) + return AccountNotEnabledWithoutCardError.wrap(err) + case "out_of_capacity": + err := errors.New(msg.String()) + return OutOFCapacityError.wrap(err) + case "cannot_get_console": + err := errors.New(msg.String()) + return CannotGetConsoleError.wrap(err) + case "database_dns_domain_invalid": + err := errors.New(msg.String()) + return DatabaseDNSDomainInvalidError.wrap(err) + + case "database_firewall_exists": + err := errors.New(msg.String()) + return DatabaseFirewallExistsError.wrap(err) + case "database_kubernetes_cluster_no_pools": + err := errors.New(msg.String()) + return DatabaseKubernetesClusterNoPoolsError.wrap(err) + case "database_kubernetes_cluster_invalid_version": + err := errors.New(msg.String()) + return DatabaseKubernetesClusterInvalidVersionError.wrap(err) + case "database_namespaces_list": + err := errors.New(msg.String()) + return DatabaseNamespacesListError.wrap(err) + case "database_namespace_create": + err := errors.New(msg.String()) + return DatabaseNamespaceCreateError.wrap(err) + case "database_namespace_exists": + err := errors.New(msg.String()) + return DatabaseNamespaceExistsError.wrap(err) + case "database_namespace_delete_last": + err := errors.New(msg.String()) + return DatabaseNamespaceDeleteLastError.wrap(err) + case "database_namespace_delete_with_instance": + err := errors.New(msg.String()) + return DatabaseNamespaceDeleteWithInstanceError.wrap(err) + case "database_namespace_duplicate_name": + err := errors.New(msg.String()) + return DatabaseNamespaceDuplicateNameError.wrap(err) + case "database_namespace_lookup": + err := errors.New(msg.String()) + return DatabaseNamespaceLookupError.wrap(err) + case "database_namespace_not_found": + err := errors.New(msg.String()) + return DatabaseNamespaceNotFoundError.wrap(err) + case "database_namespace_save": + err := errors.New(msg.String()) + return DatabaseNamespaceSaveError.wrap(err) + case "database_quota_lock_failed": + err := errors.New(msg.String()) + return DatabaseQuotaLockFailedError.wrap(err) + case "database_disk_image_not_found": + err := errors.New(msg.String()) + return DatabaseDiskImageNotFoundError.wrap(err) + case "database_disk_image_not_implemented": + err := errors.New(msg.String()) + return DatabaseDiskImageNotImplementedError.wrap(err) + case "database_template_exists": + err := errors.New(msg.String()) + return DatabaseTemplateExistsError.wrap(err) + case "database_template_save_failed": + err := errors.New(msg.String()) + return DatabaseTemplateSaveFailedError.wrap(err) + case "kubernetes_cluster_invalid_name": + err := errors.New(msg.String()) + return KubernetesClusterInvalidNameError.wrap(err) + default: + err := fmt.Errorf(fmt.Sprintf("Unknown error response - status: %s, code: %d, reason: %s", errorData.Status, errorData.Code, errorData.Reason)) + return CommonError.wrap(err) + } + } + + return UnknownError.wrap(err) +} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/fake_client.go b/cluster-autoscaler/vendor/github.com/civo/civogo/fake_client.go new file mode 100644 index 000000000000..8bb6e9876fc2 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/fake_client.go @@ -0,0 +1,1750 @@ +package civogo + +import ( + "fmt" + "math/rand" + "strconv" + "strings" + "time" +) + +// FakeClient is a temporary storage structure for use when you don't want to communicate with a real Civo API server +type FakeClient struct { + LastID int64 + Charges []Charge + Domains []DNSDomain + DomainRecords []DNSRecord + Firewalls []Firewall + FirewallRules []FirewallRule + InstanceSizes []InstanceSize + Instances []Instance + Clusters []KubernetesCluster + Networks []Network + Volumes []Volume + SSHKeys []SSHKey + Webhooks []Webhook + DiskImage []DiskImage + Quota Quota + Organisation Organisation + OrganisationAccounts []Account + OrganisationRoles []Role + OrganisationTeams []Team + OrganisationTeamMembers map[string][]TeamMember + LoadBalancers []LoadBalancer + Pools []KubernetesPool + // Snapshots []Snapshot + // Templates []Template +} + +// Clienter is the interface the real civogo.Client and civogo.FakeClient implement +type Clienter interface { + // Charges + ListCharges(from, to time.Time) ([]Charge, error) + + // DNS + ListDNSDomains() ([]DNSDomain, error) + FindDNSDomain(search string) (*DNSDomain, error) + CreateDNSDomain(name string) (*DNSDomain, error) + GetDNSDomain(name string) (*DNSDomain, error) + UpdateDNSDomain(d *DNSDomain, name string) (*DNSDomain, error) + DeleteDNSDomain(d *DNSDomain) (*SimpleResponse, error) + CreateDNSRecord(domainID string, r *DNSRecordConfig) (*DNSRecord, error) + ListDNSRecords(dnsDomainID string) ([]DNSRecord, error) + GetDNSRecord(domainID, domainRecordID string) (*DNSRecord, error) + UpdateDNSRecord(r *DNSRecord, rc *DNSRecordConfig) (*DNSRecord, error) + DeleteDNSRecord(r *DNSRecord) (*SimpleResponse, error) + + // Firewalls + ListFirewalls() ([]Firewall, error) + FindFirewall(search string) (*Firewall, error) + NewFirewall(name, networkID string, CreateRules *bool) (*FirewallResult, error) + RenameFirewall(id string, f *FirewallConfig) (*SimpleResponse, error) + DeleteFirewall(id string) (*SimpleResponse, error) + NewFirewallRule(r *FirewallRuleConfig) (*FirewallRule, error) + ListFirewallRules(id string) ([]FirewallRule, error) + FindFirewallRule(firewallID string, search string) (*FirewallRule, error) + DeleteFirewallRule(id string, ruleID string) (*SimpleResponse, error) + + // Instances + ListInstances(page int, perPage int) (*PaginatedInstanceList, error) + ListAllInstances() ([]Instance, error) + FindInstance(search string) (*Instance, error) + GetInstance(id string) (*Instance, error) + NewInstanceConfig() (*InstanceConfig, error) + CreateInstance(config *InstanceConfig) (*Instance, error) + SetInstanceTags(i *Instance, tags string) (*SimpleResponse, error) + UpdateInstance(i *Instance) (*SimpleResponse, error) + DeleteInstance(id string) (*SimpleResponse, error) + RebootInstance(id string) (*SimpleResponse, error) + HardRebootInstance(id string) (*SimpleResponse, error) + SoftRebootInstance(id string) (*SimpleResponse, error) + StopInstance(id string) (*SimpleResponse, error) + StartInstance(id string) (*SimpleResponse, error) + GetInstanceConsoleURL(id string) (string, error) + UpgradeInstance(id, newSize string) (*SimpleResponse, error) + MovePublicIPToInstance(id, ipAddress string) (*SimpleResponse, error) + SetInstanceFirewall(id, firewallID string) (*SimpleResponse, error) + + // Instance sizes + ListInstanceSizes() ([]InstanceSize, error) + FindInstanceSizes(search string) (*InstanceSize, error) + + // Clusters + ListKubernetesClusters() (*PaginatedKubernetesClusters, error) + FindKubernetesCluster(search string) (*KubernetesCluster, error) + NewKubernetesClusters(kc *KubernetesClusterConfig) (*KubernetesCluster, error) + GetKubernetesCluster(id string) (*KubernetesCluster, error) + UpdateKubernetesCluster(id string, i *KubernetesClusterConfig) (*KubernetesCluster, error) + ListKubernetesMarketplaceApplications() ([]KubernetesMarketplaceApplication, error) + DeleteKubernetesCluster(id string) (*SimpleResponse, error) + RecycleKubernetesCluster(id string, hostname string) (*SimpleResponse, error) + ListAvailableKubernetesVersions() ([]KubernetesVersion, error) + ListKubernetesClusterInstances(id string) ([]Instance, error) + FindKubernetesClusterInstance(clusterID, search string) (*Instance, error) + + //Pools + ListKubernetesClusterPools(cid string) ([]KubernetesPool, error) + GetKubernetesClusterPool(cid, pid string) (*KubernetesPool, error) + FindKubernetesClusterPool(cid, search string) (*KubernetesPool, error) + DeleteKubernetesClusterPoolInstance(cid, pid, id string) (*SimpleResponse, error) + UpdateKubernetesClusterPool(cid, pid string, config *KubernetesClusterPoolConfig) (*KubernetesPool, error) + + // Networks + GetDefaultNetwork() (*Network, error) + NewNetwork(label string) (*NetworkResult, error) + ListNetworks() ([]Network, error) + FindNetwork(search string) (*Network, error) + RenameNetwork(label, id string) (*NetworkResult, error) + DeleteNetwork(id string) (*SimpleResponse, error) + + // Quota + GetQuota() (*Quota, error) + + // Regions + ListRegions() ([]Region, error) + + // Snapshots + // CreateSnapshot(name string, r *SnapshotConfig) (*Snapshot, error) + // ListSnapshots() ([]Snapshot, error) + // FindSnapshot(search string) (*Snapshot, error) + // DeleteSnapshot(name string) (*SimpleResponse, error) + + // SSHKeys + ListSSHKeys() ([]SSHKey, error) + NewSSHKey(name string, publicKey string) (*SimpleResponse, error) + UpdateSSHKey(name string, sshKeyID string) (*SSHKey, error) + FindSSHKey(search string) (*SSHKey, error) + DeleteSSHKey(id string) (*SimpleResponse, error) + + // Templates + // ListTemplates() ([]Template, error) + // NewTemplate(conf *Template) (*SimpleResponse, error) + // UpdateTemplate(id string, conf *Template) (*Template, error) + // GetTemplateByCode(code string) (*Template, error) + // FindTemplate(search string) (*Template, error) + // DeleteTemplate(id string) (*SimpleResponse, error) + + // DiskImages + ListDiskImages() ([]DiskImage, error) + GetDiskImage(id string) (*DiskImage, error) + FindDiskImage(search string) (*DiskImage, error) + + // Volumes + ListVolumes() ([]Volume, error) + GetVolume(id string) (*Volume, error) + FindVolume(search string) (*Volume, error) + NewVolume(v *VolumeConfig) (*VolumeResult, error) + ResizeVolume(id string, size int) (*SimpleResponse, error) + AttachVolume(id string, instance string) (*SimpleResponse, error) + DetachVolume(id string) (*SimpleResponse, error) + DeleteVolume(id string) (*SimpleResponse, error) + + // Webhooks + CreateWebhook(r *WebhookConfig) (*Webhook, error) + ListWebhooks() ([]Webhook, error) + FindWebhook(search string) (*Webhook, error) + UpdateWebhook(id string, r *WebhookConfig) (*Webhook, error) + DeleteWebhook(id string) (*SimpleResponse, error) + + // LoadBalancer + ListLoadBalancers() ([]LoadBalancer, error) + GetLoadBalancer(id string) (*LoadBalancer, error) + FindLoadBalancer(search string) (*LoadBalancer, error) + CreateLoadBalancer(r *LoadBalancerConfig) (*LoadBalancer, error) + UpdateLoadBalancer(id string, r *LoadBalancerUpdateConfig) (*LoadBalancer, error) + DeleteLoadBalancer(id string) (*SimpleResponse, error) +} + +// NewFakeClient initializes a Client that doesn't attach to a +func NewFakeClient() (*FakeClient, error) { + return &FakeClient{ + Quota: Quota{ + CPUCoreLimit: 10, + InstanceCountLimit: 10, + RAMMegabytesLimit: 100, + DiskGigabytesLimit: 100, + DiskVolumeCountLimit: 10, + DiskSnapshotCountLimit: 10, + PublicIPAddressLimit: 10, + NetworkCountLimit: 10, + SecurityGroupLimit: 10, + SecurityGroupRuleLimit: 10, + }, + InstanceSizes: []InstanceSize{ + { + ID: "g3.xsmall", + Name: "Extra small", + CPUCores: 1, + RAMMegabytes: 1024, + DiskGigabytes: 10, + }, + { + ID: "g3.small", + Name: "Small", + CPUCores: 2, + RAMMegabytes: 2048, + DiskGigabytes: 20, + }, + { + ID: "g3.medium", + Name: "Medium", + CPUCores: 4, + RAMMegabytes: 4096, + DiskGigabytes: 40, + }, + }, + DiskImage: []DiskImage{ + { + ID: "b82168fe-66f6-4b38-a3b8-5283542d5475", + Name: "centos-7", + Version: "7", + State: "available", + Distribution: "centos", + Description: "", + Label: "", + }, + { + ID: "b82168fe-66f6-4b38-a3b8-52835425895", + Name: "debian-9", + Version: "9", + State: "available", + Distribution: "debian", + Description: "", + Label: "", + }, + { + ID: "b82168fe-66f6-4b38-a3b8-52835428965", + Name: "debian-10", + Version: "10", + State: "available", + Distribution: "debian", + Description: "", + Label: "", + }, + { + ID: "b82168fe-66f6-4b38-a3b8-528354282548", + Name: "ubuntu-20-4", + Version: "20.4", + State: "available", + Distribution: "ubuntu", + Description: "", + Label: "", + }, + }, + }, nil +} + +func (c *FakeClient) generateID() string { + c.LastID++ + return strconv.FormatInt(c.LastID, 10) +} + +func (c *FakeClient) generatePublicIP() string { + s := rand.NewSource(time.Now().UnixNano()) + r := rand.New(s) + return fmt.Sprintf("%v.%v.%v.%v", r.Intn(256), r.Intn(256), r.Intn(256), r.Intn(256)) +} + +// ListCharges implemented in a fake way for automated tests +func (c *FakeClient) ListCharges(from, to time.Time) ([]Charge, error) { + return []Charge{}, nil +} + +// ListDNSDomains implemented in a fake way for automated tests +func (c *FakeClient) ListDNSDomains() ([]DNSDomain, error) { + return c.Domains, nil +} + +// FindDNSDomain implemented in a fake way for automated tests +func (c *FakeClient) FindDNSDomain(search string) (*DNSDomain, error) { + for _, domain := range c.Domains { + if strings.Contains(domain.Name, search) { + return &domain, nil + } + } + + err := fmt.Errorf("unable to find %s, zero matches", search) + return nil, ZeroMatchesError.wrap(err) +} + +// CreateDNSDomain implemented in a fake way for automated tests +func (c *FakeClient) CreateDNSDomain(name string) (*DNSDomain, error) { + domain := DNSDomain{ + ID: c.generateID(), + Name: name, + } + c.Domains = append(c.Domains, domain) + return &domain, nil +} + +// GetDNSDomain implemented in a fake way for automated tests +func (c *FakeClient) GetDNSDomain(name string) (*DNSDomain, error) { + for _, domain := range c.Domains { + if domain.Name == name { + return &domain, nil + } + } + + return nil, ErrDNSDomainNotFound +} + +// UpdateDNSDomain implemented in a fake way for automated tests +func (c *FakeClient) UpdateDNSDomain(d *DNSDomain, name string) (*DNSDomain, error) { + for i, domain := range c.Domains { + if domain.Name == d.Name { + c.Domains[i] = *d + return d, nil + } + } + + return nil, ErrDNSDomainNotFound +} + +// DeleteDNSDomain implemented in a fake way for automated tests +func (c *FakeClient) DeleteDNSDomain(d *DNSDomain) (*SimpleResponse, error) { + for i, domain := range c.Domains { + if domain.Name == d.Name { + c.Domains[len(c.Domains)-1], c.Domains[i] = c.Domains[i], c.Domains[len(c.Domains)-1] + c.Domains = c.Domains[:len(c.Domains)-1] + return &SimpleResponse{Result: "success"}, nil + } + } + + return nil, ErrDNSDomainNotFound +} + +// CreateDNSRecord implemented in a fake way for automated tests +func (c *FakeClient) CreateDNSRecord(domainID string, r *DNSRecordConfig) (*DNSRecord, error) { + record := DNSRecord{ + ID: c.generateID(), + DNSDomainID: domainID, + Name: r.Name, + Value: r.Value, + Type: r.Type, + } + + c.DomainRecords = append(c.DomainRecords, record) + return &record, nil +} + +// ListDNSRecords implemented in a fake way for automated tests +func (c *FakeClient) ListDNSRecords(dnsDomainID string) ([]DNSRecord, error) { + return c.DomainRecords, nil +} + +// GetDNSRecord implemented in a fake way for automated tests +func (c *FakeClient) GetDNSRecord(domainID, domainRecordID string) (*DNSRecord, error) { + for _, record := range c.DomainRecords { + if record.ID == domainRecordID && record.DNSDomainID == domainID { + return &record, nil + } + } + + return nil, ErrDNSRecordNotFound +} + +// UpdateDNSRecord implemented in a fake way for automated tests +func (c *FakeClient) UpdateDNSRecord(r *DNSRecord, rc *DNSRecordConfig) (*DNSRecord, error) { + for i, record := range c.DomainRecords { + if record.ID == r.ID { + record := DNSRecord{ + ID: c.generateID(), + DNSDomainID: record.DNSDomainID, + Name: rc.Name, + Value: rc.Value, + Type: rc.Type, + } + + c.DomainRecords[i] = record + return &record, nil + } + } + + return nil, ErrDNSRecordNotFound +} + +// DeleteDNSRecord implemented in a fake way for automated tests +func (c *FakeClient) DeleteDNSRecord(r *DNSRecord) (*SimpleResponse, error) { + for i, record := range c.DomainRecords { + if record.ID == r.ID { + c.DomainRecords[len(c.DomainRecords)-1], c.DomainRecords[i] = c.DomainRecords[i], c.DomainRecords[len(c.DomainRecords)-1] + c.DomainRecords = c.DomainRecords[:len(c.DomainRecords)-1] + return &SimpleResponse{Result: "success"}, nil + } + } + + return nil, ErrDNSRecordNotFound +} + +// ListFirewalls implemented in a fake way for automated tests +func (c *FakeClient) ListFirewalls() ([]Firewall, error) { + return c.Firewalls, nil +} + +// FindFirewall implemented in a fake way for automated tests +func (c *FakeClient) FindFirewall(search string) (*Firewall, error) { + for _, firewall := range c.Firewalls { + if strings.Contains(firewall.Name, search) { + return &firewall, nil + } + } + + err := fmt.Errorf("unable to find %s, zero matches", search) + return nil, ZeroMatchesError.wrap(err) +} + +// NewFirewall implemented in a fake way for automated tests +func (c *FakeClient) NewFirewall(name, networkID string, CreateRules *bool) (*FirewallResult, error) { + firewall := Firewall{ + ID: c.generateID(), + Name: name, + } + c.Firewalls = append(c.Firewalls, firewall) + + return &FirewallResult{ + ID: firewall.ID, + Name: firewall.Name, + Result: "success", + }, nil +} + +// RenameFirewall implemented in a fake way for automated tests +func (c *FakeClient) RenameFirewall(id string, f *FirewallConfig) (*SimpleResponse, error) { + for i, firewall := range c.Firewalls { + if firewall.ID == id { + c.Firewalls[i].Name = f.Name + return &SimpleResponse{Result: "success"}, nil + } + } + + err := fmt.Errorf("unable to find %s, zero matches", id) + return nil, ZeroMatchesError.wrap(err) +} + +// DeleteFirewall implemented in a fake way for automated tests +func (c *FakeClient) DeleteFirewall(id string) (*SimpleResponse, error) { + for i, firewall := range c.Firewalls { + if firewall.ID == id { + c.Firewalls[len(c.Firewalls)-1], c.Firewalls[i] = c.Firewalls[i], c.Firewalls[len(c.Firewalls)-1] + c.Firewalls = c.Firewalls[:len(c.Firewalls)-1] + return &SimpleResponse{Result: "success"}, nil + } + } + + return &SimpleResponse{Result: "failed"}, nil +} + +// NewFirewallRule implemented in a fake way for automated tests +func (c *FakeClient) NewFirewallRule(r *FirewallRuleConfig) (*FirewallRule, error) { + rule := FirewallRule{ + ID: c.generateID(), + Protocol: r.Protocol, + StartPort: r.StartPort, + EndPort: r.EndPort, + Cidr: r.Cidr, + Label: r.Label, + } + c.FirewallRules = append(c.FirewallRules, rule) + return &rule, nil +} + +// ListFirewallRules implemented in a fake way for automated tests +func (c *FakeClient) ListFirewallRules(id string) ([]FirewallRule, error) { + return c.FirewallRules, nil +} + +// FindFirewallRule implemented in a fake way for automated tests +func (c *FakeClient) FindFirewallRule(firewallID string, search string) (*FirewallRule, error) { + for _, rule := range c.FirewallRules { + if rule.FirewallID == firewallID && strings.Contains(rule.Label, search) { + return &rule, nil + } + } + + err := fmt.Errorf("unable to find %s, zero matches", search) + return nil, ZeroMatchesError.wrap(err) +} + +// DeleteFirewallRule implemented in a fake way for automated tests +func (c *FakeClient) DeleteFirewallRule(id string, ruleID string) (*SimpleResponse, error) { + for i, rule := range c.FirewallRules { + if rule.ID == ruleID { + c.FirewallRules[len(c.FirewallRules)-1], c.FirewallRules[i] = c.FirewallRules[i], c.FirewallRules[len(c.FirewallRules)-1] + c.FirewallRules = c.FirewallRules[:len(c.FirewallRules)-1] + return &SimpleResponse{Result: "success"}, nil + } + } + + return &SimpleResponse{Result: "failed"}, nil +} + +// ListInstances implemented in a fake way for automated tests +func (c *FakeClient) ListInstances(page int, perPage int) (*PaginatedInstanceList, error) { + return &PaginatedInstanceList{ + Items: c.Instances, + Page: page, + PerPage: perPage, + Pages: page, + }, nil +} + +// ListAllInstances implemented in a fake way for automated tests +func (c *FakeClient) ListAllInstances() ([]Instance, error) { + return c.Instances, nil +} + +// FindInstance implemented in a fake way for automated tests +func (c *FakeClient) FindInstance(search string) (*Instance, error) { + for _, instance := range c.Instances { + if strings.Contains(instance.Hostname, search) { + return &instance, nil + } + } + + err := fmt.Errorf("unable to find %s, zero matches", search) + return nil, ZeroMatchesError.wrap(err) +} + +// GetInstance implemented in a fake way for automated tests +func (c *FakeClient) GetInstance(id string) (*Instance, error) { + for _, instance := range c.Instances { + if instance.ID == id { + return &instance, nil + } + } + + err := fmt.Errorf("unable to find %s, zero matches", id) + return nil, ZeroMatchesError.wrap(err) +} + +// NewInstanceConfig implemented in a fake way for automated tests +func (c *FakeClient) NewInstanceConfig() (*InstanceConfig, error) { + return &InstanceConfig{}, nil +} + +// CreateInstance implemented in a fake way for automated tests +func (c *FakeClient) CreateInstance(config *InstanceConfig) (*Instance, error) { + instance := Instance{ + ID: c.generateID(), + Hostname: config.Hostname, + Size: config.Size, + Region: config.Region, + TemplateID: config.TemplateID, + InitialUser: config.InitialUser, + SSHKey: config.SSHKeyID, + Tags: config.Tags, + PublicIP: c.generatePublicIP(), + } + c.Instances = append(c.Instances, instance) + return &instance, nil +} + +// SetInstanceTags implemented in a fake way for automated tests +func (c *FakeClient) SetInstanceTags(i *Instance, tags string) (*SimpleResponse, error) { + for idx, instance := range c.Instances { + if instance.ID == i.ID { + c.Instances[idx].Tags = strings.Split(tags, " ") + return &SimpleResponse{Result: "success"}, nil + } + } + + return &SimpleResponse{Result: "failed"}, nil +} + +// UpdateInstance implemented in a fake way for automated tests +func (c *FakeClient) UpdateInstance(i *Instance) (*SimpleResponse, error) { + for idx, instance := range c.Instances { + if instance.ID == i.ID { + c.Instances[idx] = *i + return &SimpleResponse{Result: "success"}, nil + } + } + + return &SimpleResponse{Result: "failed"}, nil +} + +// DeleteInstance implemented in a fake way for automated tests +func (c *FakeClient) DeleteInstance(id string) (*SimpleResponse, error) { + for i, instance := range c.Instances { + if instance.ID == id { + c.Instances[len(c.Instances)-1], c.Instances[i] = c.Instances[i], c.Instances[len(c.Instances)-1] + c.Instances = c.Instances[:len(c.Instances)-1] + return &SimpleResponse{Result: "success"}, nil + } + } + + return &SimpleResponse{Result: "failed"}, nil +} + +// RebootInstance implemented in a fake way for automated tests +func (c *FakeClient) RebootInstance(id string) (*SimpleResponse, error) { + return &SimpleResponse{Result: "success"}, nil +} + +// HardRebootInstance implemented in a fake way for automated tests +func (c *FakeClient) HardRebootInstance(id string) (*SimpleResponse, error) { + return &SimpleResponse{Result: "success"}, nil +} + +// SoftRebootInstance implemented in a fake way for automated tests +func (c *FakeClient) SoftRebootInstance(id string) (*SimpleResponse, error) { + return &SimpleResponse{Result: "success"}, nil +} + +// StopInstance implemented in a fake way for automated tests +func (c *FakeClient) StopInstance(id string) (*SimpleResponse, error) { + return &SimpleResponse{Result: "success"}, nil +} + +// StartInstance implemented in a fake way for automated tests +func (c *FakeClient) StartInstance(id string) (*SimpleResponse, error) { + return &SimpleResponse{Result: "success"}, nil +} + +// GetInstanceConsoleURL implemented in a fake way for automated tests +func (c *FakeClient) GetInstanceConsoleURL(id string) (string, error) { + return fmt.Sprintf("https://console.example.com/%s", id), nil +} + +// UpgradeInstance implemented in a fake way for automated tests +func (c *FakeClient) UpgradeInstance(id, newSize string) (*SimpleResponse, error) { + for idx, instance := range c.Instances { + if instance.ID == id { + c.Instances[idx].Size = newSize + return &SimpleResponse{Result: "success"}, nil + } + } + + return &SimpleResponse{Result: "failed"}, nil +} + +// MovePublicIPToInstance implemented in a fake way for automated tests +func (c *FakeClient) MovePublicIPToInstance(id, ipAddress string) (*SimpleResponse, error) { + oldIndex := -1 + for idx, instance := range c.Instances { + if instance.PublicIP == ipAddress { + oldIndex = idx + } + } + + newIndex := -1 + for idx, instance := range c.Instances { + if instance.ID == id { + newIndex = idx + } + } + + if oldIndex == -1 || newIndex == -1 { + return &SimpleResponse{Result: "failed"}, nil + } + + c.Instances[newIndex].PublicIP = c.Instances[oldIndex].PublicIP + c.Instances[oldIndex].PublicIP = "" + + return &SimpleResponse{Result: "success"}, nil +} + +// SetInstanceFirewall implemented in a fake way for automated tests +func (c *FakeClient) SetInstanceFirewall(id, firewallID string) (*SimpleResponse, error) { + for idx, instance := range c.Instances { + if instance.ID == id { + c.Instances[idx].FirewallID = firewallID + return &SimpleResponse{Result: "success"}, nil + } + } + + return &SimpleResponse{Result: "failed"}, nil +} + +// ListInstanceSizes implemented in a fake way for automated tests +func (c *FakeClient) ListInstanceSizes() ([]InstanceSize, error) { + return c.InstanceSizes, nil +} + +// FindInstanceSizes implemented in a fake way for automated tests +func (c *FakeClient) FindInstanceSizes(search string) (*InstanceSize, error) { + for _, size := range c.InstanceSizes { + if strings.Contains(size.Name, search) || size.ID == search { + return &size, nil + } + } + + err := fmt.Errorf("unable to find %s, zero matches", search) + return nil, ZeroMatchesError.wrap(err) +} + +// ListKubernetesClusters implemented in a fake way for automated tests +func (c *FakeClient) ListKubernetesClusters() (*PaginatedKubernetesClusters, error) { + return &PaginatedKubernetesClusters{ + Items: c.Clusters, + Page: 1, + PerPage: 10, + Pages: 1, + }, nil +} + +// FindKubernetesCluster implemented in a fake way for automated tests +func (c *FakeClient) FindKubernetesCluster(search string) (*KubernetesCluster, error) { + for _, cluster := range c.Clusters { + if strings.Contains(cluster.Name, search) || cluster.ID == search { + return &cluster, nil + } + } + + err := fmt.Errorf("unable to find %s, zero matches", search) + return nil, ZeroMatchesError.wrap(err) +} + +// ListKubernetesClusterInstances implemented in a fake way for automated tests +func (c *FakeClient) ListKubernetesClusterInstances(id string) ([]Instance, error) { + for _, cluster := range c.Clusters { + if cluster.ID == id { + instaces := make([]Instance, 0) + for _, kins := range cluster.Instances { + for _, instance := range c.Instances { + if instance.ID == kins.ID { + instaces = append(instaces, instance) + } + } + } + return instaces, nil + } + } + + err := fmt.Errorf("unable to find %s, zero matches", id) + return nil, DatabaseKubernetesClusterNotFoundError.wrap(err) +} + +// FindKubernetesClusterInstance implemented in a fake way for automated tests +func (c *FakeClient) FindKubernetesClusterInstance(clusterID, search string) (*Instance, error) { + instances, err := c.ListKubernetesClusterInstances(clusterID) + if err != nil { + return nil, decodeError(err) + } + + exactMatch := false + partialMatchesCount := 0 + result := Instance{} + + for _, instance := range instances { + if instance.Hostname == search || instance.ID == search { + exactMatch = true + result = instance + } else if strings.Contains(instance.Hostname, search) || strings.Contains(instance.ID, search) { + if !exactMatch { + result = instance + partialMatchesCount++ + } + } + } + + if exactMatch || partialMatchesCount == 1 { + return &result, nil + } else if partialMatchesCount > 1 { + err := fmt.Errorf("unable to find %s because there were multiple matches", search) + return nil, MultipleMatchesError.wrap(err) + } else { + err := fmt.Errorf("unable to find %s, zero matches", search) + return nil, ZeroMatchesError.wrap(err) + } +} + +// NewKubernetesClusters implemented in a fake way for automated tests +func (c *FakeClient) NewKubernetesClusters(kc *KubernetesClusterConfig) (*KubernetesCluster, error) { + cluster := KubernetesCluster{ + ID: c.generateID(), + Name: kc.Name, + MasterIP: c.generatePublicIP(), + NumTargetNode: kc.NumTargetNodes, + TargetNodeSize: kc.TargetNodesSize, + Ready: true, + Status: "ACTIVE", + } + c.Clusters = append(c.Clusters, cluster) + return &cluster, nil +} + +// GetKubernetesCluster implemented in a fake way for automated tests +func (c *FakeClient) GetKubernetesCluster(id string) (*KubernetesCluster, error) { + for _, cluster := range c.Clusters { + if cluster.ID == id { + return &cluster, nil + } + } + + err := fmt.Errorf("unable to find %s, zero matches", id) + return nil, ZeroMatchesError.wrap(err) +} + +// UpdateKubernetesCluster implemented in a fake way for automated tests +func (c *FakeClient) UpdateKubernetesCluster(id string, kc *KubernetesClusterConfig) (*KubernetesCluster, error) { + for i, cluster := range c.Clusters { + if cluster.ID == id { + c.Clusters[i].Name = kc.Name + c.Clusters[i].NumTargetNode = kc.NumTargetNodes + c.Clusters[i].TargetNodeSize = kc.TargetNodesSize + return &cluster, nil + } + } + + err := fmt.Errorf("unable to find %s, zero matches", id) + return nil, ZeroMatchesError.wrap(err) +} + +// ListKubernetesMarketplaceApplications implemented in a fake way for automated tests +func (c *FakeClient) ListKubernetesMarketplaceApplications() ([]KubernetesMarketplaceApplication, error) { + return []KubernetesMarketplaceApplication{}, nil +} + +// DeleteKubernetesCluster implemented in a fake way for automated tests +func (c *FakeClient) DeleteKubernetesCluster(id string) (*SimpleResponse, error) { + for i, cluster := range c.Clusters { + if cluster.ID == id { + c.Clusters[len(c.Clusters)-1], c.Clusters[i] = c.Clusters[i], c.Clusters[len(c.Clusters)-1] + c.Clusters = c.Clusters[:len(c.Clusters)-1] + return &SimpleResponse{Result: "success"}, nil + } + } + + return &SimpleResponse{Result: "failed"}, nil +} + +// RecycleKubernetesCluster implemented in a fake way for automated tests +func (c *FakeClient) RecycleKubernetesCluster(id string, hostname string) (*SimpleResponse, error) { + return &SimpleResponse{Result: "success"}, nil +} + +// ListAvailableKubernetesVersions implemented in a fake way for automated tests +func (c *FakeClient) ListAvailableKubernetesVersions() ([]KubernetesVersion, error) { + return []KubernetesVersion{ + { + Version: "1.20+k3s1", + Type: "stable", + }, + }, nil +} + +// GetDefaultNetwork implemented in a fake way for automated tests +func (c *FakeClient) GetDefaultNetwork() (*Network, error) { + for _, network := range c.Networks { + if network.Default { + return &network, nil + } + } + + err := fmt.Errorf("unable to find default network, zero matches") + return nil, ZeroMatchesError.wrap(err) +} + +// NewNetwork implemented in a fake way for automated tests +func (c *FakeClient) NewNetwork(label string) (*NetworkResult, error) { + network := Network{ + ID: c.generateID(), + Name: label, + } + c.Networks = append(c.Networks, network) + + return &NetworkResult{ + ID: network.ID, + Label: network.Name, + Result: "success", + }, nil + +} + +// ListNetworks implemented in a fake way for automated tests +func (c *FakeClient) ListNetworks() ([]Network, error) { + return c.Networks, nil +} + +// FindNetwork implemented in a fake way for automated tests +func (c *FakeClient) FindNetwork(search string) (*Network, error) { + for _, network := range c.Networks { + if strings.Contains(network.Name, search) { + return &network, nil + } + } + + err := fmt.Errorf("unable to find default network, zero matches") + return nil, ZeroMatchesError.wrap(err) +} + +// RenameNetwork implemented in a fake way for automated tests +func (c *FakeClient) RenameNetwork(label, id string) (*NetworkResult, error) { + for i, network := range c.Networks { + if network.ID == id { + c.Networks[i].Label = label + return &NetworkResult{ + ID: network.ID, + Label: network.Label, + Result: "success", + }, nil + } + } + + err := fmt.Errorf("unable to find default network, zero matches") + return nil, ZeroMatchesError.wrap(err) +} + +// DeleteNetwork implemented in a fake way for automated tests +func (c *FakeClient) DeleteNetwork(id string) (*SimpleResponse, error) { + for i, network := range c.Networks { + if network.ID == id { + c.Networks[len(c.Networks)-1], c.Networks[i] = c.Networks[i], c.Networks[len(c.Networks)-1] + c.Networks = c.Networks[:len(c.Networks)-1] + return &SimpleResponse{Result: "success"}, nil + } + } + + return &SimpleResponse{Result: "failed"}, nil +} + +// GetQuota implemented in a fake way for automated tests +func (c *FakeClient) GetQuota() (*Quota, error) { + return &c.Quota, nil +} + +// ListRegions implemented in a fake way for automated tests +func (c *FakeClient) ListRegions() ([]Region, error) { + return []Region{ + { + Code: "FAKE1", + Name: "Fake testing region", + Default: true, + }, + }, nil +} + +// CreateSnapshot implemented in a fake way for automated tests +// func (c *FakeClient) CreateSnapshot(name string, r *SnapshotConfig) (*Snapshot, error) { +// snapshot := Snapshot{ +// ID: c.generateID(), +// Name: name, +// InstanceID: r.InstanceID, +// Cron: r.Cron, +// } +// c.Snapshots = append(c.Snapshots, snapshot) + +// return &snapshot, nil +// } + +// ListSnapshots implemented in a fake way for automated tests +// func (c *FakeClient) ListSnapshots() ([]Snapshot, error) { +// return c.Snapshots, nil +// } + +// FindSnapshot implemented in a fake way for automated tests +// func (c *FakeClient) FindSnapshot(search string) (*Snapshot, error) { +// for _, snapshot := range c.Snapshots { +// if strings.Contains(snapshot.Name, search) { +// return &snapshot, nil +// } +// } + +// err := fmt.Errorf("unable to find %s, zero matches", search) +// return nil, ZeroMatchesError.wrap(err) +// } + +// DeleteSnapshot implemented in a fake way for automated tests +// func (c *FakeClient) DeleteSnapshot(name string) (*SimpleResponse, error) { +// for i, snapshot := range c.Snapshots { +// if snapshot.Name == name { +// c.Snapshots[len(c.Snapshots)-1], c.Snapshots[i] = c.Snapshots[i], c.Snapshots[len(c.Snapshots)-1] +// c.Snapshots = c.Snapshots[:len(c.Snapshots)-1] +// return &SimpleResponse{Result: "success"}, nil +// } +// } + +// return &SimpleResponse{Result: "failed"}, nil +// } + +// ListSSHKeys implemented in a fake way for automated tests +func (c *FakeClient) ListSSHKeys() ([]SSHKey, error) { + return c.SSHKeys, nil +} + +// NewSSHKey implemented in a fake way for automated tests +func (c *FakeClient) NewSSHKey(name string, publicKey string) (*SimpleResponse, error) { + sshKey := SSHKey{ + Name: name, + Fingerprint: publicKey, // This is weird, but we're just storing a value + } + c.SSHKeys = append(c.SSHKeys, sshKey) + return &SimpleResponse{Result: "success"}, nil +} + +// UpdateSSHKey implemented in a fake way for automated tests +func (c *FakeClient) UpdateSSHKey(name string, sshKeyID string) (*SSHKey, error) { + for i, sshKey := range c.SSHKeys { + if sshKey.ID == sshKeyID { + c.SSHKeys[i].Name = name + return &sshKey, nil + } + } + + err := fmt.Errorf("unable to find SSH key %s, zero matches", sshKeyID) + return nil, ZeroMatchesError.wrap(err) +} + +// FindSSHKey implemented in a fake way for automated tests +func (c *FakeClient) FindSSHKey(search string) (*SSHKey, error) { + for _, sshKey := range c.SSHKeys { + if strings.Contains(sshKey.Name, search) { + return &sshKey, nil + } + } + + err := fmt.Errorf("unable to find SSH key %s, zero matches", search) + return nil, ZeroMatchesError.wrap(err) +} + +// DeleteSSHKey implemented in a fake way for automated tests +func (c *FakeClient) DeleteSSHKey(id string) (*SimpleResponse, error) { + for i, sshKey := range c.SSHKeys { + if sshKey.ID == id { + c.SSHKeys[len(c.SSHKeys)-1], c.SSHKeys[i] = c.SSHKeys[i], c.SSHKeys[len(c.SSHKeys)-1] + c.SSHKeys = c.SSHKeys[:len(c.SSHKeys)-1] + return &SimpleResponse{Result: "success"}, nil + } + } + + return &SimpleResponse{Result: "failed"}, nil +} + +// ListTemplates implemented in a fake way for automated tests +// func (c *FakeClient) ListTemplates() ([]Template, error) { +// return c.Templates, nil +// } + +// NewTemplate implemented in a fake way for automated tests +// func (c *FakeClient) NewTemplate(conf *Template) (*SimpleResponse, error) { +// template := Template{ +// ID: conf.ID, +// Name: conf.Name, +// CloudConfig: conf.CloudConfig, +// ImageID: conf.ImageID, +// } +// c.Templates = append(c.Templates, template) +// return &SimpleResponse{Result: "success"}, nil +// } + +// UpdateTemplate implemented in a fake way for automated tests +// func (c *FakeClient) UpdateTemplate(id string, conf *Template) (*Template, error) { +// for i, template := range c.Templates { +// if template.ID == id { +// c.Templates[i].Name = conf.Name +// c.Templates[i].CloudConfig = conf.CloudConfig +// c.Templates[i].ImageID = conf.ImageID +// return &template, nil +// } +// } + +// err := fmt.Errorf("unable to find SSH key %s, zero matches", id) +// return nil, ZeroMatchesError.wrap(err) +// } + +// GetTemplateByCode implemented in a fake way for automated tests +// func (c *FakeClient) GetTemplateByCode(code string) (*Template, error) { +// for _, template := range c.Templates { +// if template.Code == code { +// return &template, nil +// } +// } + +// err := fmt.Errorf("unable to find SSH key %s, zero matches", code) +// return nil, ZeroMatchesError.wrap(err) +// } + +// FindTemplate implemented in a fake way for automated tests +// func (c *FakeClient) FindTemplate(search string) (*Template, error) { +// for _, template := range c.Templates { +// if strings.Contains(template.Name, search) { +// return &template, nil +// } +// } + +// err := fmt.Errorf("unable to find template %s, zero matches", search) +// return nil, ZeroMatchesError.wrap(err) +// } + +// DeleteTemplate implemented in a fake way for automated tests +// func (c *FakeClient) DeleteTemplate(id string) (*SimpleResponse, error) { +// for i, template := range c.Templates { +// if template.ID == id { +// c.Templates[len(c.Templates)-1], c.Templates[i] = c.Templates[i], c.Templates[len(c.Templates)-1] +// c.Templates = c.Templates[:len(c.Templates)-1] +// return &SimpleResponse{Result: "success"}, nil +// } +// } + +// return &SimpleResponse{Result: "failed"}, nil +// } + +// ListDiskImages implemented in a fake way for automated tests +func (c *FakeClient) ListDiskImages() ([]DiskImage, error) { + return c.DiskImage, nil +} + +// GetDiskImage implemented in a fake way for automated tests +func (c *FakeClient) GetDiskImage(id string) (*DiskImage, error) { + for k, v := range c.DiskImage { + if v.ID == id { + return &c.DiskImage[k], nil + } + } + + err := fmt.Errorf("unable to find disk image %s, zero matches", id) + return nil, ZeroMatchesError.wrap(err) +} + +// FindDiskImage implemented in a fake way for automated tests +func (c *FakeClient) FindDiskImage(search string) (*DiskImage, error) { + for _, diskimage := range c.DiskImage { + if strings.Contains(diskimage.Name, search) || strings.Contains(diskimage.ID, search) { + return &diskimage, nil + } + } + + err := fmt.Errorf("unable to find volume %s, zero matches", search) + return nil, ZeroMatchesError.wrap(err) +} + +// ListVolumes implemented in a fake way for automated tests +func (c *FakeClient) ListVolumes() ([]Volume, error) { + return c.Volumes, nil +} + +// GetVolume implemented in a fake way for automated tests +func (c *FakeClient) GetVolume(id string) (*Volume, error) { + for _, volume := range c.Volumes { + if volume.ID == id { + return &volume, nil + } + } + + err := fmt.Errorf("unable to get volume %s", id) + return nil, ZeroMatchesError.wrap(err) +} + +// FindVolume implemented in a fake way for automated tests +func (c *FakeClient) FindVolume(search string) (*Volume, error) { + for _, volume := range c.Volumes { + if strings.Contains(volume.Name, search) || strings.Contains(volume.ID, search) { + return &volume, nil + } + } + + err := fmt.Errorf("unable to find volume %s, zero matches", search) + return nil, ZeroMatchesError.wrap(err) +} + +// NewVolume implemented in a fake way for automated tests +func (c *FakeClient) NewVolume(v *VolumeConfig) (*VolumeResult, error) { + volume := Volume{ + ID: c.generateID(), + Name: v.Name, + SizeGigabytes: v.SizeGigabytes, + } + c.Volumes = append(c.Volumes, volume) + + return &VolumeResult{ + ID: volume.ID, + Name: volume.Name, + Result: "success", + }, nil +} + +// ResizeVolume implemented in a fake way for automated tests +func (c *FakeClient) ResizeVolume(id string, size int) (*SimpleResponse, error) { + for i, volume := range c.Volumes { + if volume.ID == id { + c.Volumes[i].SizeGigabytes = size + return &SimpleResponse{Result: "success"}, nil + } + } + + err := fmt.Errorf("unable to find volume %s, zero matches", id) + return nil, ZeroMatchesError.wrap(err) +} + +// AttachVolume implemented in a fake way for automated tests +func (c *FakeClient) AttachVolume(id string, instance string) (*SimpleResponse, error) { + for i, volume := range c.Volumes { + if volume.ID == id { + c.Volumes[i].InstanceID = instance + return &SimpleResponse{Result: "success"}, nil + } + } + + err := fmt.Errorf("unable to find volume %s, zero matches", id) + return nil, ZeroMatchesError.wrap(err) +} + +// DetachVolume implemented in a fake way for automated tests +func (c *FakeClient) DetachVolume(id string) (*SimpleResponse, error) { + for i, volume := range c.Volumes { + if volume.ID == id { + c.Volumes[i].InstanceID = "" + return &SimpleResponse{Result: "success"}, nil + } + } + + err := fmt.Errorf("unable to find volume %s, zero matches", id) + return nil, ZeroMatchesError.wrap(err) +} + +// DeleteVolume implemented in a fake way for automated tests +func (c *FakeClient) DeleteVolume(id string) (*SimpleResponse, error) { + for i, volume := range c.Volumes { + if volume.ID == id { + c.Volumes[len(c.Volumes)-1], c.Volumes[i] = c.Volumes[i], c.Volumes[len(c.Volumes)-1] + c.Volumes = c.Volumes[:len(c.Volumes)-1] + return &SimpleResponse{Result: "success"}, nil + } + } + + return &SimpleResponse{Result: "failed"}, nil +} + +// CreateWebhook implemented in a fake way for automated tests +func (c *FakeClient) CreateWebhook(r *WebhookConfig) (*Webhook, error) { + webhook := Webhook{ + ID: c.generateID(), + Events: r.Events, + Secret: r.Secret, + URL: r.URL, + } + c.Webhooks = append(c.Webhooks, webhook) + + return &webhook, nil +} + +// ListWebhooks implemented in a fake way for automated tests +func (c *FakeClient) ListWebhooks() ([]Webhook, error) { + return c.Webhooks, nil +} + +// FindWebhook implemented in a fake way for automated tests +func (c *FakeClient) FindWebhook(search string) (*Webhook, error) { + for _, webhook := range c.Webhooks { + if strings.Contains(webhook.Secret, search) || strings.Contains(webhook.URL, search) { + return &webhook, nil + } + } + + err := fmt.Errorf("unable to find %s, zero matches", search) + return nil, ZeroMatchesError.wrap(err) +} + +// UpdateWebhook implemented in a fake way for automated tests +func (c *FakeClient) UpdateWebhook(id string, r *WebhookConfig) (*Webhook, error) { + for i, webhook := range c.Webhooks { + if webhook.ID == id { + c.Webhooks[i].Events = r.Events + c.Webhooks[i].Secret = r.Secret + c.Webhooks[i].URL = r.URL + + return &webhook, nil + } + } + + err := fmt.Errorf("unable to find %s, zero matches", id) + return nil, ZeroMatchesError.wrap(err) +} + +// DeleteWebhook implemented in a fake way for automated tests +func (c *FakeClient) DeleteWebhook(id string) (*SimpleResponse, error) { + for i, webhook := range c.Webhooks { + if webhook.ID == id { + c.Webhooks[len(c.Webhooks)-1], c.Webhooks[i] = c.Webhooks[i], c.Webhooks[len(c.Webhooks)-1] + c.Webhooks = c.Webhooks[:len(c.Webhooks)-1] + return &SimpleResponse{Result: "success"}, nil + } + } + + return &SimpleResponse{Result: "failed"}, nil +} + +// ListPermissions implemented in a fake way for automated tests +func (c *FakeClient) ListPermissions() ([]Permission, error) { + return []Permission{ + { + Name: "instance.create", + Description: "Create Compute instances", + }, + { + Name: "kubernetes.*", + Description: "Manage Civo Kubernetes clusters", + }, + }, nil +} + +// GetOrganisation implemented in a fake way for automated tests +func (c *FakeClient) GetOrganisation() (*Organisation, error) { + return &c.Organisation, nil +} + +// CreateOrganisation implemented in a fake way for automated tests +func (c *FakeClient) CreateOrganisation(name string) (*Organisation, error) { + c.Organisation.ID = c.generateID() + c.Organisation.Name = name + return &c.Organisation, nil +} + +// RenameOrganisation implemented in a fake way for automated tests +func (c *FakeClient) RenameOrganisation(name string) (*Organisation, error) { + c.Organisation.Name = name + return &c.Organisation, nil +} + +// AddAccountToOrganisation implemented in a fake way for automated tests +func (c *FakeClient) AddAccountToOrganisation(accountID string) ([]Account, error) { + c.OrganisationAccounts = append(c.OrganisationAccounts, Account{ + ID: accountID, + CreatedAt: time.Now(), + UpdatedAt: time.Now(), + }) + return c.ListAccountsInOrganisation() +} + +// ListAccountsInOrganisation implemented in a fake way for automated tests +func (c *FakeClient) ListAccountsInOrganisation() ([]Account, error) { + return c.OrganisationAccounts, nil +} + +// ListRoles implemented in a fake way for automated tests +func (c *FakeClient) ListRoles() ([]Role, error) { + return c.OrganisationRoles, nil +} + +// CreateRole implemented in a fake way for automated tests +func (c *FakeClient) CreateRole(name, permissions string) (*Role, error) { + role := Role{ + ID: c.generateID(), + Name: name, + Permissions: permissions, + } + c.OrganisationRoles = append(c.OrganisationRoles, role) + return &role, nil +} + +// DeleteRole implemented in a fake way for automated tests +func (c *FakeClient) DeleteRole(id string) (*SimpleResponse, error) { + for i, role := range c.OrganisationRoles { + if role.ID == id { + c.OrganisationRoles[len(c.OrganisationRoles)-1], c.OrganisationRoles[i] = c.OrganisationRoles[i], c.OrganisationRoles[len(c.OrganisationRoles)-1] + c.OrganisationRoles = c.OrganisationRoles[:len(c.OrganisationRoles)-1] + return &SimpleResponse{Result: "success"}, nil + } + } + + return &SimpleResponse{Result: "failed"}, fmt.Errorf("unable to find that role") +} + +// ListTeams implemented in a fake way for automated tests +func (c *FakeClient) ListTeams() ([]Team, error) { + return c.OrganisationTeams, nil +} + +// CreateTeam implemented in a fake way for automated tests +func (c *FakeClient) CreateTeam(name string) (*Team, error) { + team := Team{ + ID: c.generateID(), + Name: name, + CreatedAt: time.Time{}, + UpdatedAt: time.Time{}, + } + c.OrganisationTeams = append(c.OrganisationTeams, team) + return &team, nil +} + +// RenameTeam implemented in a fake way for automated tests +func (c *FakeClient) RenameTeam(teamID, name string) (*Team, error) { + for _, team := range c.OrganisationTeams { + if team.ID == teamID { + team.Name = name + return &team, nil + } + } + + return nil, fmt.Errorf("unable to find that role") +} + +// DeleteTeam implemented in a fake way for automated tests +func (c *FakeClient) DeleteTeam(id string) (*SimpleResponse, error) { + for i, team := range c.OrganisationTeams { + if team.ID == id { + c.OrganisationTeams[len(c.OrganisationTeams)-1], c.OrganisationTeams[i] = c.OrganisationTeams[i], c.OrganisationTeams[len(c.OrganisationTeams)-1] + c.OrganisationTeams = c.OrganisationTeams[:len(c.OrganisationTeams)-1] + return &SimpleResponse{Result: "success"}, nil + } + } + + return &SimpleResponse{Result: "failure"}, fmt.Errorf("unable to find that team") +} + +// ListTeamMembers implemented in a fake way for automated tests +func (c *FakeClient) ListTeamMembers(teamID string) ([]TeamMember, error) { + return c.OrganisationTeamMembers[teamID], nil +} + +// AddTeamMember implemented in a fake way for automated tests +func (c *FakeClient) AddTeamMember(teamID, userID, permissions, roles string) ([]TeamMember, error) { + c.OrganisationTeamMembers[teamID] = append(c.OrganisationTeamMembers[teamID], TeamMember{ + ID: c.generateID(), + TeamID: teamID, + UserID: userID, + Permissions: permissions, + Roles: roles, + CreatedAt: time.Now(), + UpdatedAt: time.Now(), + }) + + return c.ListTeamMembers(teamID) +} + +// UpdateTeamMember implemented in a fake way for automated tests +func (c *FakeClient) UpdateTeamMember(teamID, teamMemberID, permissions, roles string) (*TeamMember, error) { + for _, teamMember := range c.OrganisationTeamMembers[teamID] { + if teamMember.ID == teamMemberID { + teamMember.Permissions = permissions + teamMember.Roles = roles + return &teamMember, nil + } + } + + return nil, fmt.Errorf("unable to find that role") +} + +// RemoveTeamMember implemented in a fake way for automated tests +func (c *FakeClient) RemoveTeamMember(teamID, teamMemberID string) (*SimpleResponse, error) { + for i, teamMember := range c.OrganisationTeamMembers[teamID] { + if teamMember.ID == teamMemberID { + c.OrganisationTeamMembers[teamID][len(c.OrganisationTeamMembers[teamID])-1], c.OrganisationTeamMembers[teamID][i] = c.OrganisationTeamMembers[teamID][i], c.OrganisationTeamMembers[teamID][len(c.OrganisationTeamMembers[teamID])-1] + c.OrganisationTeamMembers[teamID] = c.OrganisationTeamMembers[teamID][:len(c.OrganisationTeamMembers[teamID])-1] + return &SimpleResponse{Result: "success"}, nil + } + } + + return &SimpleResponse{Result: "failure"}, fmt.Errorf("unable to find that team member") +} + +// ListLoadBalancers implemented in a fake way for automated tests +func (c *FakeClient) ListLoadBalancers() ([]LoadBalancer, error) { + return c.LoadBalancers, nil +} + +// GetLoadBalancer implemented in a fake way for automated tests +func (c *FakeClient) GetLoadBalancer(id string) (*LoadBalancer, error) { + for _, lb := range c.LoadBalancers { + if lb.ID == id { + return &lb, nil + } + } + + err := fmt.Errorf("unable to get load balancer %s", id) + return nil, DatabaseLoadBalancerNotFoundError.wrap(err) +} + +// FindLoadBalancer implemented in a fake way for automated tests +func (c *FakeClient) FindLoadBalancer(search string) (*LoadBalancer, error) { + exactMatch := false + partialMatchesCount := 0 + result := LoadBalancer{} + + for _, lb := range c.LoadBalancers { + if lb.ID == search || lb.Name == search { + exactMatch = true + result = lb + } else if strings.Contains(lb.Name, search) || strings.Contains(lb.ID, search) { + if !exactMatch { + result = lb + partialMatchesCount++ + } + } + } + + if exactMatch || partialMatchesCount == 1 { + return &result, nil + } else if partialMatchesCount > 1 { + err := fmt.Errorf("unable to find %s because there were multiple matches", search) + return nil, MultipleMatchesError.wrap(err) + } else { + err := fmt.Errorf("unable to find %s, zero matches", search) + return nil, ZeroMatchesError.wrap(err) + } +} + +// CreateLoadBalancer implemented in a fake way for automated tests +func (c *FakeClient) CreateLoadBalancer(r *LoadBalancerConfig) (*LoadBalancer, error) { + loadbalancer := LoadBalancer{ + ID: c.generateID(), + Name: r.Name, + Algorithm: r.Algorithm, + ExternalTrafficPolicy: r.ExternalTrafficPolicy, + SessionAffinityConfigTimeout: r.SessionAffinityConfigTimeout, + SessionAffinity: r.SessionAffinity, + EnableProxyProtocol: r.EnableProxyProtocol, + FirewallID: r.FirewallID, + ClusterID: r.ClusterID, + } + + if r.Algorithm == "" { + loadbalancer.Algorithm = "round_robin" + } + if r.FirewallID == "" { + loadbalancer.FirewallID = c.generateID() + } + if r.ExternalTrafficPolicy == "" { + loadbalancer.ExternalTrafficPolicy = "Cluster" + } + + backends := make([]LoadBalancerBackend, 0) + for _, b := range r.Backends { + backend := LoadBalancerBackend{ + IP: b.IP, + Protocol: b.Protocol, + SourcePort: b.SourcePort, + TargetPort: b.TargetPort, + } + backends = append(backends, backend) + } + loadbalancer.Backends = backends + loadbalancer.PublicIP = c.generatePublicIP() + loadbalancer.State = "available" + + c.LoadBalancers = append(c.LoadBalancers, loadbalancer) + return &loadbalancer, nil +} + +// UpdateLoadBalancer implemented in a fake way for automated tests +func (c *FakeClient) UpdateLoadBalancer(id string, r *LoadBalancerUpdateConfig) (*LoadBalancer, error) { + for _, lb := range c.LoadBalancers { + if lb.ID == id { + lb.Name = r.Name + lb.Algorithm = r.Algorithm + lb.EnableProxyProtocol = r.EnableProxyProtocol + lb.ExternalTrafficPolicy = r.ExternalTrafficPolicy + lb.SessionAffinity = r.SessionAffinity + lb.SessionAffinityConfigTimeout = r.SessionAffinityConfigTimeout + + backends := make([]LoadBalancerBackend, len(r.Backends)) + for i, b := range r.Backends { + backends[i].IP = b.IP + backends[i].Protocol = b.Protocol + backends[i].SourcePort = b.SourcePort + backends[i].TargetPort = b.TargetPort + } + + if r.ExternalTrafficPolicy == "" { + lb.ExternalTrafficPolicy = "Cluster" + } + + return &lb, nil + } + } + + err := fmt.Errorf("unable to find load balancer %s", id) + return nil, DatabaseLoadBalancerNotFoundError.wrap(err) +} + +// DeleteLoadBalancer implemented in a fake way for automated tests +func (c *FakeClient) DeleteLoadBalancer(id string) (*SimpleResponse, error) { + for i, lb := range c.LoadBalancers { + if lb.ID == id { + c.LoadBalancers[len(c.LoadBalancers)-1], c.LoadBalancers[i] = c.LoadBalancers[i], c.LoadBalancers[len(c.LoadBalancers)-1] + c.LoadBalancers = c.LoadBalancers[:len(c.LoadBalancers)-1] + return &SimpleResponse{Result: "success"}, nil + } + } + + return &SimpleResponse{Result: "failed"}, nil +} + +// ListKubernetesClusterPools implemented in a fake way for automated tests +func (c *FakeClient) ListKubernetesClusterPools(cid string) ([]KubernetesPool, error) { + pools := []KubernetesPool{} + found := false + + for _, cs := range c.Clusters { + if cs.ID == cid { + found = true + pools = cs.Pools + break + } + } + + if found { + return pools, nil + } + + err := fmt.Errorf("unable to get kubernetes cluster %s", cid) + return nil, DatabaseKubernetesClusterNotFoundError.wrap(err) +} + +// GetKubernetesClusterPool implemented in a fake way for automated tests +func (c *FakeClient) GetKubernetesClusterPool(cid, pid string) (*KubernetesPool, error) { + pool := &KubernetesPool{} + clusterFound := false + poolFound := false + + for _, cs := range c.Clusters { + if cs.ID == cid { + clusterFound = true + for _, p := range cs.Pools { + if p.ID == pid { + poolFound = true + pool = &p + break + } + } + } + } + + if !clusterFound { + err := fmt.Errorf("unable to get kubernetes cluster %s", cid) + return nil, DatabaseKubernetesClusterNotFoundError.wrap(err) + } + + if !poolFound { + err := fmt.Errorf("unable to get kubernetes pool %s", pid) + return nil, DatabaseKubernetesClusterNotFoundError.wrap(err) + } + + return pool, nil +} + +// FindKubernetesClusterPool implemented in a fake way for automated tests +func (c *FakeClient) FindKubernetesClusterPool(cid, search string) (*KubernetesPool, error) { + pool := &KubernetesPool{} + clusterFound := false + poolFound := false + + for _, cs := range c.Clusters { + if cs.ID == cid { + clusterFound = true + for _, p := range cs.Pools { + if p.ID == search || strings.Contains(p.ID, search) { + poolFound = true + pool = &p + break + } + } + } + } + + if !clusterFound { + err := fmt.Errorf("unable to get kubernetes cluster %s", cid) + return nil, DatabaseKubernetesClusterNotFoundError.wrap(err) + } + + if !poolFound { + err := fmt.Errorf("unable to get kubernetes pool %s", search) + return nil, DatabaseKubernetesClusterNotFoundError.wrap(err) + } + + return pool, nil +} + +// DeleteKubernetesClusterPoolInstance implemented in a fake way for automated tests +func (c *FakeClient) DeleteKubernetesClusterPoolInstance(cid, pid, id string) (*SimpleResponse, error) { + clusterFound := false + poolFound := false + instanceFound := false + + for ci, cs := range c.Clusters { + if cs.ID == cid { + clusterFound = true + for pi, p := range cs.Pools { + if p.ID == pid { + poolFound = true + for i, in := range p.Instances { + if in.ID == id { + instanceFound = true + p.Instances = append(p.Instances[:i], p.Instances[i+1:]...) + + instanceNames := []string{} + for _, in := range p.Instances { + instanceNames = append(instanceNames, in.Hostname) + } + p.InstanceNames = instanceNames + c.Clusters[ci].Pools[pi] = p + break + } + } + } + } + } + } + + if !clusterFound { + err := fmt.Errorf("unable to get kubernetes cluster %s", cid) + return nil, DatabaseKubernetesClusterNotFoundError.wrap(err) + } + + if !poolFound { + err := fmt.Errorf("unable to get kubernetes pool %s", pid) + return nil, DatabaseKubernetesClusterNotFoundError.wrap(err) + } + + if !instanceFound { + err := fmt.Errorf("unable to get kubernetes pool instance %s", id) + return nil, DatabaseKubernetesClusterNotFoundError.wrap(err) + } + + return &SimpleResponse{ + Result: "success", + }, nil +} + +// UpdateKubernetesClusterPool implemented in a fake way for automated tests +func (c *FakeClient) UpdateKubernetesClusterPool(cid, pid string, config *KubernetesClusterPoolConfig) (*KubernetesPool, error) { + clusterFound := false + poolFound := false + + pool := KubernetesPool{} + for _, cs := range c.Clusters { + if cs.ID == cid { + clusterFound = true + for _, p := range cs.Pools { + if p.ID == pid { + poolFound = true + p.Count = config.Count + pool = p + } + } + } + } + + if !clusterFound { + err := fmt.Errorf("unable to get kubernetes cluster %s", cid) + return nil, DatabaseKubernetesClusterNotFoundError.wrap(err) + } + + if !poolFound { + err := fmt.Errorf("unable to get kubernetes pool %s", pid) + return nil, DatabaseKubernetesClusterNotFoundError.wrap(err) + } + + return &pool, nil +} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/firewall.go b/cluster-autoscaler/vendor/github.com/civo/civogo/firewall.go new file mode 100644 index 000000000000..58878a40004e --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/firewall.go @@ -0,0 +1,222 @@ +package civogo + +import ( + "bytes" + "encoding/json" + "fmt" + "strings" +) + +// Firewall represents list of rule in Civo's infrastructure +type Firewall struct { + ID string `json:"id"` + Name string `json:"name,omitempty"` + RulesCount int `json:"rules_count,omitempty"` + InstanceCount int `json:"instance_count"` + ClusterCount int `json:"cluster_count"` + LoadBalancerCount int `json:"loadbalancer_count"` + NetworkID string `json:"network_id,omitempty"` +} + +// FirewallResult is the response from the Civo Firewall APIs +type FirewallResult struct { + ID string `json:"id"` + Name string `json:"name"` + Result string `json:"result"` +} + +// FirewallRule represents a single rule for a given firewall, regarding +// which ports to open and which protocol, to which CIDR +type FirewallRule struct { + ID string `json:"id"` + FirewallID string `json:"firewall_id"` + Protocol string `json:"protocol"` + StartPort string `json:"start_port"` + EndPort string `json:"end_port"` + Cidr []string `json:"cidr"` + Direction string `json:"direction"` + Action string `json:"action"` + Label string `json:"label,omitempty"` +} + +// FirewallRuleConfig is how you specify the details when creating a new rule +type FirewallRuleConfig struct { + FirewallID string `json:"firewall_id"` + Region string `json:"region"` + Protocol string `json:"protocol"` + StartPort string `json:"start_port"` + EndPort string `json:"end_port"` + Cidr []string `json:"cidr"` + Direction string `json:"direction"` + Action string `json:"action"` + Label string `json:"label,omitempty"` +} + +// FirewallConfig is how you specify the details when creating a new firewall +type FirewallConfig struct { + Name string `json:"name"` + Region string `json:"region"` + NetworkID string `json:"network_id"` + // CreateRules if not send the value will be nil, that mean the default rules will be created + CreateRules *bool `json:"create_rules,omitempty"` +} + +// ListFirewalls returns all firewall owned by the calling API account +func (c *Client) ListFirewalls() ([]Firewall, error) { + resp, err := c.SendGetRequest("/v2/firewalls") + if err != nil { + return nil, decodeError(err) + } + + firewall := make([]Firewall, 0) + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&firewall); err != nil { + return nil, err + } + + return firewall, nil +} + +// FindFirewall finds a firewall by either part of the ID or part of the name +func (c *Client) FindFirewall(search string) (*Firewall, error) { + firewalls, err := c.ListFirewalls() + if err != nil { + return nil, decodeError(err) + } + + exactMatch := false + partialMatchesCount := 0 + result := Firewall{} + + for _, value := range firewalls { + if value.Name == search || value.ID == search { + exactMatch = true + result = value + } else if strings.Contains(value.Name, search) || strings.Contains(value.ID, search) { + if !exactMatch { + result = value + partialMatchesCount++ + } + } + } + + if exactMatch || partialMatchesCount == 1 { + return &result, nil + } else if partialMatchesCount > 1 { + err := fmt.Errorf("unable to find %s because there were multiple matches", search) + return nil, MultipleMatchesError.wrap(err) + } else { + err := fmt.Errorf("unable to find %s, zero matches", search) + return nil, ZeroMatchesError.wrap(err) + } +} + +// NewFirewall creates a new firewall record +func (c *Client) NewFirewall(name, networkid string, CreateRules *bool) (*FirewallResult, error) { + fw := FirewallConfig{Name: name, Region: c.Region, NetworkID: networkid, CreateRules: CreateRules} + body, err := c.SendPostRequest("/v2/firewalls", fw) + if err != nil { + return nil, decodeError(err) + } + + result := &FirewallResult{} + if err := json.NewDecoder(bytes.NewReader(body)).Decode(result); err != nil { + return nil, err + } + + return result, nil +} + +// RenameFirewall rename firewall +func (c *Client) RenameFirewall(id string, f *FirewallConfig) (*SimpleResponse, error) { + f.Region = c.Region + resp, err := c.SendPutRequest(fmt.Sprintf("/v2/firewalls/%s", id), f) + if err != nil { + return nil, decodeError(err) + } + + return c.DecodeSimpleResponse(resp) +} + +// DeleteFirewall deletes an firewall +func (c *Client) DeleteFirewall(id string) (*SimpleResponse, error) { + resp, err := c.SendDeleteRequest("/v2/firewalls/" + id) + if err != nil { + return nil, decodeError(err) + } + + return c.DecodeSimpleResponse(resp) +} + +// NewFirewallRule creates a new rule within a firewall +func (c *Client) NewFirewallRule(r *FirewallRuleConfig) (*FirewallRule, error) { + if len(r.FirewallID) == 0 { + err := fmt.Errorf("the firewall ID is empty") + return nil, IDisEmptyError.wrap(err) + } + + r.Region = c.Region + + resp, err := c.SendPostRequest(fmt.Sprintf("/v2/firewalls/%s/rules", r.FirewallID), r) + if err != nil { + return nil, decodeError(err) + } + + rule := &FirewallRule{} + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(rule); err != nil { + return nil, err + } + + return rule, nil +} + +// ListFirewallRules get all rules for a firewall +func (c *Client) ListFirewallRules(id string) ([]FirewallRule, error) { + resp, err := c.SendGetRequest(fmt.Sprintf("/v2/firewalls/%s/rules", id)) + if err != nil { + return nil, decodeError(err) + } + + firewallRule := make([]FirewallRule, 0) + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&firewallRule); err != nil { + return nil, err + } + + return firewallRule, nil +} + +// FindFirewallRule finds a firewall Rule by ID or part of the same +func (c *Client) FindFirewallRule(firewallID string, search string) (*FirewallRule, error) { + firewallsRules, err := c.ListFirewallRules(firewallID) + if err != nil { + return nil, decodeError(err) + } + + found := -1 + + for i, firewallRule := range firewallsRules { + if strings.Contains(firewallRule.ID, search) { + if found != -1 { + err := fmt.Errorf("unable to find %s because there were multiple matches", search) + return nil, MultipleMatchesError.wrap(err) + } + found = i + } + } + + if found == -1 { + err := fmt.Errorf("unable to find %s, zero matches", search) + return nil, ZeroMatchesError.wrap(err) + } + + return &firewallsRules[found], nil +} + +// DeleteFirewallRule deletes an firewall +func (c *Client) DeleteFirewallRule(id string, ruleID string) (*SimpleResponse, error) { + resp, err := c.SendDeleteRequest(fmt.Sprintf("/v2/firewalls/%s/rules/%s", id, ruleID)) + if err != nil { + return nil, decodeError(err) + } + + return c.DecodeSimpleResponse(resp) +} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/go.mod b/cluster-autoscaler/vendor/github.com/civo/civogo/go.mod new file mode 100644 index 000000000000..6d62383b4e66 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/go.mod @@ -0,0 +1,5 @@ +module github.com/civo/civogo + +go 1.16 + +require github.com/onsi/gomega v1.18.0 diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/go.sum b/cluster-autoscaler/vendor/github.com/civo/civogo/go.sum new file mode 100644 index 000000000000..1d2304598104 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/go.sum @@ -0,0 +1,98 @@ +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= +github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= +github.com/onsi/ginkgo/v2 v2.0.0 h1:CcuG/HvWNkkaqCUpJifQY8z7qEMBJya6aLPx6ftGyjQ= +github.com/onsi/ginkgo/v2 v2.0.0/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= +github.com/onsi/gomega v1.18.0 h1:ngbYoRctxjl8SiF7XgP0NxBFbfHcg3wfHMMaFHWwMTM= +github.com/onsi/gomega v1.18.0/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5hitRs= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210428140749-89ef3d95e781 h1:DzZ89McO9/gWPsQXS/FVKAlG02ZjaQ6AlZRBimEYOd0= +golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e h1:fLOSk5Q00efkSvAm+4xcoXD+RRmLmmulPn5I3Y9F2EM= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/instance.go b/cluster-autoscaler/vendor/github.com/civo/civogo/instance.go new file mode 100644 index 000000000000..74f6b346e198 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/instance.go @@ -0,0 +1,362 @@ +package civogo + +import ( + "bytes" + "encoding/json" + "fmt" + "strings" + "time" + + "github.com/civo/civogo/utils" +) + +// Instance represents a virtual server within Civo's infrastructure +type Instance struct { + ID string `json:"id,omitempty"` + OpenstackServerID string `json:"openstack_server_id,omitempty"` + Hostname string `json:"hostname,omitempty"` + ReverseDNS string `json:"reverse_dns,omitempty"` + Size string `json:"size,omitempty"` + Region string `json:"region,omitempty"` + NetworkID string `json:"network_id,omitempty"` + PrivateIP string `json:"private_ip,omitempty"` + PublicIP string `json:"public_ip,omitempty"` + PseudoIP string `json:"pseudo_ip,omitempty"` + TemplateID string `json:"template_id,omitempty"` + SourceType string `json:"source_type,omitempty"` + SourceID string `json:"source_id,omitempty"` + SnapshotID string `json:"snapshot_id,omitempty"` + InitialUser string `json:"initial_user,omitempty"` + InitialPassword string `json:"initial_password,omitempty"` + SSHKey string `json:"ssh_key,omitempty"` + SSHKeyID string `json:"ssh_key_id,omitempty"` + Status string `json:"status,omitempty"` + Notes string `json:"notes,omitempty"` + FirewallID string `json:"firewall_id,omitempty"` + Tags []string `json:"tags,omitempty"` + CivostatsdToken string `json:"civostatsd_token,omitempty"` + CivostatsdStats string `json:"civostatsd_stats,omitempty"` + CivostatsdStatsPerMinute []string `json:"civostatsd_stats_per_minute,omitempty"` + CivostatsdStatsPerHour []string `json:"civostatsd_stats_per_hour,omitempty"` + OpenstackImageID string `json:"openstack_image_id,omitempty"` + RescuePassword string `json:"rescue_password,omitempty"` + VolumeBacked bool `json:"volume_backed,omitempty"` + CPUCores int `json:"cpu_cores,omitempty"` + RAMMegabytes int `json:"ram_mb,omitempty"` + DiskGigabytes int `json:"disk_gb,omitempty"` + Script string `json:"script,omitempty"` + CreatedAt time.Time `json:"created_at,omitempty"` +} + +//"cpu_cores":1,"ram_mb":2048,"disk_gb":25 + +// InstanceConsole represents a link to a webconsole for an instances +type InstanceConsole struct { + URL string `json:"url"` +} + +// PaginatedInstanceList returns a paginated list of Instance object +type PaginatedInstanceList struct { + Page int `json:"page"` + PerPage int `json:"per_page"` + Pages int `json:"pages"` + Items []Instance `json:"items"` +} + +// InstanceConfig describes the parameters for a new instance +// none of the fields are mandatory and will be automatically +// set with default values +type InstanceConfig struct { + Count int `json:"count"` + Hostname string `json:"hostname"` + ReverseDNS string `json:"reverse_dns"` + Size string `json:"size"` + Region string `json:"region"` + PublicIPRequired string `json:"public_ip"` + NetworkID string `json:"network_id"` + TemplateID string `json:"template_id"` + SourceType string `json:"source_type"` + SourceID string `json:"source_id"` + SnapshotID string `json:"snapshot_id"` + InitialUser string `json:"initial_user"` + SSHKeyID string `json:"ssh_key_id"` + Script string `json:"script"` + Tags []string `json:"-"` + TagsList string `json:"tags"` + FirewallID string `json:"firewall_id"` +} + +// ListInstances returns a page of Instances owned by the calling API account +func (c *Client) ListInstances(page int, perPage int) (*PaginatedInstanceList, error) { + url := "/v2/instances" + if page != 0 && perPage != 0 { + url = url + fmt.Sprintf("?page=%d&per_page=%d", page, perPage) + } + + resp, err := c.SendGetRequest(url) + if err != nil { + return nil, decodeError(err) + } + + PaginatedInstances := PaginatedInstanceList{} + err = json.NewDecoder(bytes.NewReader(resp)).Decode(&PaginatedInstances) + return &PaginatedInstances, err +} + +// ListAllInstances returns all (well, upto 99,999,999 instances) Instances owned by the calling API account +func (c *Client) ListAllInstances() ([]Instance, error) { + instances, err := c.ListInstances(1, 99999999) + if err != nil { + return []Instance{}, decodeError(err) + } + + return instances.Items, nil +} + +// FindInstance finds a instance by either part of the ID or part of the hostname +func (c *Client) FindInstance(search string) (*Instance, error) { + instances, err := c.ListAllInstances() + if err != nil { + return nil, decodeError(err) + } + + exactMatch := false + partialMatchesCount := 0 + result := Instance{} + + for _, value := range instances { + if value.Hostname == search || value.ID == search { + exactMatch = true + result = value + } else if strings.Contains(value.Hostname, search) || strings.Contains(value.ID, search) { + if !exactMatch { + result = value + partialMatchesCount++ + } + } + } + + if exactMatch || partialMatchesCount == 1 { + return &result, nil + } else if partialMatchesCount > 1 { + err := fmt.Errorf("unable to find %s because there were multiple matches", search) + return nil, MultipleMatchesError.wrap(err) + } else { + err := fmt.Errorf("unable to find %s, zero matches", search) + return nil, ZeroMatchesError.wrap(err) + } +} + +// GetInstance returns a single Instance by its full ID +func (c *Client) GetInstance(id string) (*Instance, error) { + resp, err := c.SendGetRequest("/v2/instances/" + id) + if err != nil { + return nil, decodeError(err) + } + + instance := Instance{} + err = json.NewDecoder(bytes.NewReader(resp)).Decode(&instance) + return &instance, err +} + +// NewInstanceConfig returns an initialized config for a new instance +func (c *Client) NewInstanceConfig() (*InstanceConfig, error) { + network, err := c.GetDefaultNetwork() + if err != nil { + return nil, decodeError(err) + } + + diskimage, err := c.GetDiskImageByName("ubuntu-focal") + if err != nil { + return nil, decodeError(err) + } + + return &InstanceConfig{ + Count: 1, + Hostname: utils.RandomName(), + ReverseDNS: "", + Size: "g3.medium", + Region: c.Region, + PublicIPRequired: "true", + NetworkID: network.ID, + TemplateID: diskimage.ID, + SnapshotID: "", + InitialUser: "civo", + SSHKeyID: "", + Script: "", + Tags: []string{""}, + FirewallID: "", + }, nil +} + +// CreateInstance creates a new instance in the account +func (c *Client) CreateInstance(config *InstanceConfig) (*Instance, error) { + config.TagsList = strings.Join(config.Tags, " ") + body, err := c.SendPostRequest("/v2/instances", config) + if err != nil { + return nil, decodeError(err) + } + + var instance Instance + if err := json.NewDecoder(bytes.NewReader(body)).Decode(&instance); err != nil { + return nil, err + } + + return &instance, nil +} + +// SetInstanceTags sets the tags for the specified instance +func (c *Client) SetInstanceTags(i *Instance, tags string) (*SimpleResponse, error) { + resp, err := c.SendPutRequest(fmt.Sprintf("/v2/instances/%s/tags", i.ID), map[string]string{ + "tags": tags, + "region": c.Region, + }) + if err != nil { + return nil, decodeError(err) + } + + response, err := c.DecodeSimpleResponse(resp) + return response, err +} + +// UpdateInstance updates an Instance's hostname, reverse DNS or notes +func (c *Client) UpdateInstance(i *Instance) (*SimpleResponse, error) { + params := map[string]string{ + "hostname": i.Hostname, + "reverse_dns": i.ReverseDNS, + "notes": i.Notes, + "region": c.Region, + } + + if i.Notes == "" { + params["notes_delete"] = "true" + } + + resp, err := c.SendPutRequest(fmt.Sprintf("/v2/instances/%s", i.ID), params) + if err != nil { + return nil, decodeError(err) + } + + response, err := c.DecodeSimpleResponse(resp) + return response, err +} + +// DeleteInstance deletes an instance and frees its resources +func (c *Client) DeleteInstance(id string) (*SimpleResponse, error) { + resp, err := c.SendDeleteRequest("/v2/instances/" + id) + if err != nil { + return nil, decodeError(err) + } + + response, err := c.DecodeSimpleResponse(resp) + return response, err +} + +// RebootInstance reboots an instance (short version of HardRebootInstance) +func (c *Client) RebootInstance(id string) (*SimpleResponse, error) { + return c.HardRebootInstance(id) +} + +// HardRebootInstance harshly reboots an instance (like shutting the power off and booting it again) +func (c *Client) HardRebootInstance(id string) (*SimpleResponse, error) { + resp, err := c.SendPostRequest(fmt.Sprintf("/v2/instances/%s/hard_reboots", id), map[string]string{ + "region": c.Region, + }) + if err != nil { + return nil, decodeError(err) + } + + response, err := c.DecodeSimpleResponse(resp) + return response, err +} + +// SoftRebootInstance requests the VM to shut down nicely +func (c *Client) SoftRebootInstance(id string) (*SimpleResponse, error) { + resp, err := c.SendPostRequest(fmt.Sprintf("/v2/instances/%s/soft_reboots", id), map[string]string{ + "region": c.Region, + }) + if err != nil { + return nil, decodeError(err) + } + + response, err := c.DecodeSimpleResponse(resp) + return response, err +} + +// StopInstance shuts the power down to the instance +func (c *Client) StopInstance(id string) (*SimpleResponse, error) { + resp, err := c.SendPutRequest(fmt.Sprintf("/v2/instances/%s/stop", id), map[string]string{ + "region": c.Region, + }) + if err != nil { + return nil, decodeError(err) + } + + response, err := c.DecodeSimpleResponse(resp) + return response, err +} + +// StartInstance starts the instance booting from the shutdown state +func (c *Client) StartInstance(id string) (*SimpleResponse, error) { + resp, err := c.SendPutRequest(fmt.Sprintf("/v2/instances/%s/start", id), map[string]string{ + "region": c.Region, + }) + if err != nil { + return nil, decodeError(err) + } + + response, err := c.DecodeSimpleResponse(resp) + return response, err +} + +// GetInstanceConsoleURL gets the web URL for an instance's console +func (c *Client) GetInstanceConsoleURL(id string) (string, error) { + resp, err := c.SendGetRequest(fmt.Sprintf("/v2/instances/%s/console", id)) + if err != nil { + return "", decodeError(err) + } + + console := InstanceConsole{} + err = json.NewDecoder(bytes.NewReader(resp)).Decode(&console) + return console.URL, err +} + +// UpgradeInstance resizes the instance up to the new specification +// it's not possible to resize the instance to a smaller size +func (c *Client) UpgradeInstance(id, newSize string) (*SimpleResponse, error) { + resp, err := c.SendPutRequest(fmt.Sprintf("/v2/instances/%s/resize", id), map[string]string{ + "size": newSize, + "region": c.Region, + }) + if err != nil { + return nil, decodeError(err) + } + + response, err := c.DecodeSimpleResponse(resp) + return response, err +} + +// MovePublicIPToInstance moves a public IP to the specified instance +func (c *Client) MovePublicIPToInstance(id, ipAddress string) (*SimpleResponse, error) { + resp, err := c.SendPutRequest(fmt.Sprintf("/v2/instances/%s/ip/%s", id, ipAddress), "") + if err != nil { + return nil, decodeError(err) + } + + response, err := c.DecodeSimpleResponse(resp) + return response, err +} + +// SetInstanceFirewall changes the current firewall for an instance +func (c *Client) SetInstanceFirewall(id, firewallID string) (*SimpleResponse, error) { + resp, err := c.SendPutRequest(fmt.Sprintf("/v2/instances/%s/firewall", id), map[string]string{ + "firewall_id": firewallID, + "region": c.Region, + }) + if err != nil { + return nil, decodeError(err) + } + + response, err := c.DecodeSimpleResponse(resp) + return response, err +} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/instance_size.go b/cluster-autoscaler/vendor/github.com/civo/civogo/instance_size.go new file mode 100644 index 000000000000..d794410536a3 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/instance_size.go @@ -0,0 +1,70 @@ +package civogo + +import ( + "bytes" + "encoding/json" + "fmt" + "strings" +) + +// InstanceSize represents an available size for instances to launch +type InstanceSize struct { + ID string `json:"id,omitempty"` + Name string `json:"name,omitempty"` + NiceName string `json:"nice_name,omitempty"` + CPUCores int `json:"cpu_cores,omitempty"` + RAMMegabytes int `json:"ram_mb,omitempty"` + DiskGigabytes int `json:"disk_gb,omitempty"` + TransferTerabytes int `json:"transfer_tb,omitempty"` + Description string `json:"description,omitempty"` + Selectable bool `json:"selectable,omitempty"` +} + +// ListInstanceSizes returns all availble sizes of instances +func (c *Client) ListInstanceSizes() ([]InstanceSize, error) { + resp, err := c.SendGetRequest("/v2/sizes") + if err != nil { + return nil, decodeError(err) + } + + sizes := make([]InstanceSize, 0) + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&sizes); err != nil { + return nil, err + } + + return sizes, nil +} + +// FindInstanceSizes finds a instance size name by either part of the ID or part of the name +func (c *Client) FindInstanceSizes(search string) (*InstanceSize, error) { + instanceSize, err := c.ListInstanceSizes() + if err != nil { + return nil, decodeError(err) + } + + exactMatch := false + partialMatchesCount := 0 + result := InstanceSize{} + + for _, value := range instanceSize { + if value.Name == search || value.ID == search { + exactMatch = true + result = value + } else if strings.Contains(value.Name, search) || strings.Contains(value.ID, search) { + if !exactMatch { + result = value + partialMatchesCount++ + } + } + } + + if exactMatch || partialMatchesCount == 1 { + return &result, nil + } else if partialMatchesCount > 1 { + err := fmt.Errorf("unable to find %s because there were multiple matches", search) + return nil, MultipleMatchesError.wrap(err) + } else { + err := fmt.Errorf("unable to find %s, zero matches", search) + return nil, ZeroMatchesError.wrap(err) + } +} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/kubernetes.go b/cluster-autoscaler/vendor/github.com/civo/civogo/kubernetes.go new file mode 100644 index 000000000000..90e498e1f562 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/kubernetes.go @@ -0,0 +1,362 @@ +package civogo + +import ( + "bytes" + "encoding/json" + "fmt" + "strings" + "time" +) + +// KubernetesInstance represents a single node/master within a Kubernetes cluster +type KubernetesInstance struct { + ID string `json:"id"` + Hostname string `json:"hostname,omitempty"` + Size string `json:"size,omitempty"` + Region string `json:"region,omitempty"` + SourceType string `json:"source_type,omitempty"` + SourceID string `json:"source_id,omitempty"` + InitialUser string `json:"initial_user,omitempty"` + InitialPassword string `json:"initial_password,omitempty"` + Status string `json:"status,omitempty"` + FirewallID string `json:"firewall_id,omitempty"` + PublicIP string `json:"public_ip,omitempty"` + CPUCores int `json:"cpu_cores,omitempty"` + RAMMegabytes int `json:"ram_mb,omitempty"` + DiskGigabytes int `json:"disk_gb,omitempty"` + Tags []string `json:"tags,omitempty"` + CreatedAt time.Time `json:"created_at,omitempty"` + CivoStatsdToken string `json:"civostatsd_token,omitempty"` +} + +// KubernetesPool represents a single pool within a Kubernetes cluster +type KubernetesPool struct { + ID string `json:"id"` + Count int `json:"count,omitempty"` + Size string `json:"size,omitempty"` + InstanceNames []string `json:"instance_names,omitempty"` + Instances []KubernetesInstance `json:"instances,omitempty"` +} + +// KubernetesInstalledApplication is an application within our marketplace available for +// installation +type KubernetesInstalledApplication struct { + Application string `json:"application,omitempty"` + Name string `json:"name,omitempty"` + Version string `json:"version,omitempty"` + Dependencies []string `json:"dependencies,omitempty"` + Maintainer string `json:"maintainer,omitempty"` + Description string `json:"description,omitempty"` + PostInstall string `json:"post_install,omitempty"` + Installed bool `json:"installed,omitempty"` + URL string `json:"url,omitempty"` + Category string `json:"category,omitempty"` + UpdatedAt time.Time `json:"updated_at,omitempty"` + ImageURL string `json:"image_url,omitempty"` + Plan string `json:"plan,omitempty"` + Configuration map[string]ApplicationConfiguration `json:"configuration,omitempty"` +} + +// ApplicationConfiguration is a configuration for installed application +type ApplicationConfiguration map[string]string + +// KubernetesCluster is a Kubernetes item inside the cluster +type KubernetesCluster struct { + ID string `json:"id"` + Name string `json:"name,omitempty"` + GeneratedName string `json:"generated_name,omitempty"` + Version string `json:"version,omitempty"` + Status string `json:"status,omitempty"` + Ready bool `json:"ready,omitempty"` + NumTargetNode int `json:"num_target_nodes,omitempty"` + TargetNodeSize string `json:"target_nodes_size,omitempty"` + BuiltAt time.Time `json:"built_at,omitempty"` + KubeConfig string `json:"kubeconfig,omitempty"` + KubernetesVersion string `json:"kubernetes_version,omitempty"` + APIEndPoint string `json:"api_endpoint,omitempty"` + MasterIP string `json:"master_ip,omitempty"` + DNSEntry string `json:"dns_entry,omitempty"` + UpgradeAvailableTo string `json:"upgrade_available_to,omitempty"` + Legacy bool `json:"legacy,omitempty"` + NetworkID string `json:"network_id,omitempty"` + NameSpace string `json:"namespace,omitempty"` + Tags []string `json:"tags,omitempty"` + CreatedAt time.Time `json:"created_at,omitempty"` + Instances []KubernetesInstance `json:"instances,omitempty"` + Pools []KubernetesPool `json:"pools,omitempty"` + RequiredPools []RequiredPools `json:"required_pools,omitempty"` + InstalledApplications []KubernetesInstalledApplication `json:"installed_applications,omitempty"` + FirewallID string `json:"firewall_id,omitempty"` + CNIPlugin string `json:"cni_plugin,omitempty"` + CCMInstalled string `json:"ccm_installed,omitempty"` +} + +// RequiredPools returns the required pools for a given Kubernetes cluster +type RequiredPools struct { + ID string `json:"id"` + Size string `json:"size"` + Count int `json:"count"` +} + +// PaginatedKubernetesClusters is a Kubernetes k3s cluster +type PaginatedKubernetesClusters struct { + Page int `json:"page"` + PerPage int `json:"per_page"` + Pages int `json:"pages"` + Items []KubernetesCluster `json:"items"` +} + +// KubernetesClusterConfig is used to create a new cluster +type KubernetesClusterConfig struct { + Name string `json:"name,omitempty"` + Region string `json:"region,omitempty"` + NumTargetNodes int `json:"num_target_nodes,omitempty"` + TargetNodesSize string `json:"target_nodes_size,omitempty"` + KubernetesVersion string `json:"kubernetes_version,omitempty"` + NodeDestroy string `json:"node_destroy,omitempty"` + NetworkID string `json:"network_id,omitempty"` + Tags string `json:"tags,omitempty"` + Pools []KubernetesClusterPoolConfig `json:"pools,omitempty"` + Applications string `json:"applications,omitempty"` + InstanceFirewall string `json:"instance_firewall,omitempty"` + FirewallRule string `json:"firewall_rule,omitempty"` + CNIPlugin string `json:"cni_plugin,omitempty"` +} + +//KubernetesClusterPoolConfig is used to create a new cluster pool +type KubernetesClusterPoolConfig struct { + ID string `json:"id,omitempty"` + Count int `json:"count,omitempty"` + Size string `json:"size,omitempty"` +} + +// KubernetesPlanConfiguration is a value within a configuration for +// an application's plan +type KubernetesPlanConfiguration struct { + Value string `json:"value"` +} + +// KubernetesMarketplacePlan is a plan for +type KubernetesMarketplacePlan struct { + Label string `json:"label"` + Configuration map[string]KubernetesPlanConfiguration `json:"configuration"` +} + +// KubernetesMarketplaceApplication is an application within our marketplace +// available for installation +type KubernetesMarketplaceApplication struct { + Name string `json:"name"` + Title string `json:"title,omitempty"` + Version string `json:"version"` + Default bool `json:"default,omitempty"` + Dependencies []string `json:"dependencies,omitempty"` + Maintainer string `json:"maintainer"` + Description string `json:"description"` + PostInstall string `json:"post_install"` + URL string `json:"url"` + Category string `json:"category"` + Plans []KubernetesMarketplacePlan `json:"plans"` +} + +// KubernetesVersion represents an available version of k3s to install +type KubernetesVersion struct { + Version string `json:"version"` + Type string `json:"type"` + Default bool `json:"default,omitempty"` +} + +// ListKubernetesClusters returns all cluster of kubernetes in the account +func (c *Client) ListKubernetesClusters() (*PaginatedKubernetesClusters, error) { + resp, err := c.SendGetRequest("/v2/kubernetes/clusters") + if err != nil { + return nil, decodeError(err) + } + + kubernetes := &PaginatedKubernetesClusters{} + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&kubernetes); err != nil { + return nil, err + } + + return kubernetes, nil +} + +// FindKubernetesCluster finds a Kubernetes cluster by either part of the ID or part of the name +func (c *Client) FindKubernetesCluster(search string) (*KubernetesCluster, error) { + clusters, err := c.ListKubernetesClusters() + if err != nil { + return nil, decodeError(err) + } + + exactMatch := false + partialMatchesCount := 0 + result := KubernetesCluster{} + + for _, value := range clusters.Items { + if strings.EqualFold(value.Name, search) || value.ID == search { + exactMatch = true + result = value + } else if strings.Contains(strings.ToUpper(value.Name), strings.ToUpper(search)) || strings.Contains(value.ID, search) { + if !exactMatch { + result = value + partialMatchesCount++ + } + } + } + + if exactMatch || partialMatchesCount == 1 { + return &result, nil + } else if partialMatchesCount > 1 { + err := fmt.Errorf("unable to find %s because there were multiple matches", search) + return nil, MultipleMatchesError.wrap(err) + } else { + err := fmt.Errorf("unable to find %s, zero matches", search) + return nil, ZeroMatchesError.wrap(err) + } +} + +// NewKubernetesClusters create a new cluster of kubernetes +func (c *Client) NewKubernetesClusters(kc *KubernetesClusterConfig) (*KubernetesCluster, error) { + kc.Region = c.Region + body, err := c.SendPostRequest("/v2/kubernetes/clusters", kc) + if err != nil { + return nil, decodeError(err) + } + + kubernetes := &KubernetesCluster{} + if err := json.NewDecoder(bytes.NewReader(body)).Decode(kubernetes); err != nil { + return nil, err + } + + return kubernetes, nil +} + +// GetKubernetesCluster returns a single kubernetes cluster by its full ID +func (c *Client) GetKubernetesCluster(id string) (*KubernetesCluster, error) { + resp, err := c.SendGetRequest(fmt.Sprintf("/v2/kubernetes/clusters/%s", id)) + if err != nil { + return nil, decodeError(err) + } + + kubernetes := &KubernetesCluster{} + if err = json.NewDecoder(bytes.NewReader(resp)).Decode(kubernetes); err != nil { + return nil, err + } + return kubernetes, nil +} + +// UpdateKubernetesCluster update a single kubernetes cluster by its full ID +func (c *Client) UpdateKubernetesCluster(id string, i *KubernetesClusterConfig) (*KubernetesCluster, error) { + i.Region = c.Region + resp, err := c.SendPutRequest(fmt.Sprintf("/v2/kubernetes/clusters/%s", id), i) + if err != nil { + return nil, decodeError(err) + } + + kubernetes := &KubernetesCluster{} + if err = json.NewDecoder(bytes.NewReader(resp)).Decode(kubernetes); err != nil { + return nil, err + } + return kubernetes, nil +} + +// ListKubernetesMarketplaceApplications returns all application inside marketplace +func (c *Client) ListKubernetesMarketplaceApplications() ([]KubernetesMarketplaceApplication, error) { + resp, err := c.SendGetRequest("/v2/kubernetes/applications") + if err != nil { + return nil, decodeError(err) + } + + kubernetes := make([]KubernetesMarketplaceApplication, 0) + if err = json.NewDecoder(bytes.NewReader(resp)).Decode(&kubernetes); err != nil { + return nil, err + } + + return kubernetes, nil +} + +// DeleteKubernetesCluster deletes a cluster +func (c *Client) DeleteKubernetesCluster(id string) (*SimpleResponse, error) { + resp, err := c.SendDeleteRequest(fmt.Sprintf("/v2/kubernetes/clusters/%s", id)) + if err != nil { + return nil, decodeError(err) + } + + return c.DecodeSimpleResponse(resp) +} + +// RecycleKubernetesCluster create a new cluster of kubernetes +func (c *Client) RecycleKubernetesCluster(id string, hostname string) (*SimpleResponse, error) { + body, err := c.SendPostRequest(fmt.Sprintf("/v2/kubernetes/clusters/%s/recycle", id), map[string]string{ + "hostname": hostname, + "region": c.Region, + }) + if err != nil { + return nil, decodeError(err) + } + + return c.DecodeSimpleResponse(body) +} + +// ListAvailableKubernetesVersions returns all version of kubernetes available +func (c *Client) ListAvailableKubernetesVersions() ([]KubernetesVersion, error) { + resp, err := c.SendGetRequest("/v2/kubernetes/versions") + if err != nil { + return nil, decodeError(err) + } + + kubernetes := make([]KubernetesVersion, 0) + if err = json.NewDecoder(bytes.NewReader(resp)).Decode(&kubernetes); err != nil { + return nil, err + } + + return kubernetes, nil +} + +// ListKubernetesClusterInstances returns all cluster instances +func (c *Client) ListKubernetesClusterInstances(id string) ([]Instance, error) { + resp, err := c.SendGetRequest(fmt.Sprintf("/v2/kubernetes/clusters/%s/instances", id)) + if err != nil { + return nil, decodeError(err) + } + + instances := make([]Instance, 0) + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&instances); err != nil { + return nil, err + } + + return instances, nil +} + +// FindKubernetesClusterInstance finds a Kubernetes cluster instance by either part of the ID or part of the name +func (c *Client) FindKubernetesClusterInstance(clusterID, search string) (*Instance, error) { + instances, err := c.ListKubernetesClusterInstances(clusterID) + if err != nil { + return nil, decodeError(err) + } + + exactMatch := false + partialMatchesCount := 0 + result := Instance{} + + for _, value := range instances { + if strings.EqualFold(value.Hostname, search) || value.ID == search { + exactMatch = true + result = value + } else if strings.Contains(strings.ToUpper(value.Hostname), strings.ToUpper(search)) || strings.Contains(value.ID, search) { + if !exactMatch { + result = value + partialMatchesCount++ + } + } + } + + if exactMatch || partialMatchesCount == 1 { + return &result, nil + } else if partialMatchesCount > 1 { + err := fmt.Errorf("unable to find %s because there were multiple matches", search) + return nil, MultipleMatchesError.wrap(err) + } else { + err := fmt.Errorf("unable to find %s, zero matches", search) + return nil, ZeroMatchesError.wrap(err) + } +} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/loadbalancer.go b/cluster-autoscaler/vendor/github.com/civo/civogo/loadbalancer.go new file mode 100644 index 000000000000..fd5f8e3bcc98 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/loadbalancer.go @@ -0,0 +1,176 @@ +package civogo + +import ( + "bytes" + "encoding/json" + "fmt" + "strings" +) + +// LoadBalancerBackend represents a backend instance being load-balanced +type LoadBalancerBackend struct { + IP string `json:"ip"` + Protocol string `json:"protocol,omitempty"` + SourcePort int32 `json:"source_port"` + TargetPort int32 `json:"target_port"` + HealthCheckPort int32 `json:"health_check_port,omitempty"` +} + +// LoadBalancerBackendConfig is the configuration for creating backends +type LoadBalancerBackendConfig struct { + IP string `json:"ip"` + Protocol string `json:"protocol,omitempty"` + SourcePort int32 `json:"source_port"` + TargetPort int32 `json:"target_port"` + HealthCheckPort int32 `json:"health_check_port,omitempty"` +} + +// LoadBalancer represents a load balancer configuration within Civo +type LoadBalancer struct { + ID string `json:"id"` + Name string `json:"name"` + Algorithm string `json:"algorithm"` + Backends []LoadBalancerBackend `json:"backends"` + ExternalTrafficPolicy string `json:"external_traffic_policy,omitempty"` + SessionAffinity string `json:"session_affinity,omitempty"` + SessionAffinityConfigTimeout int32 `json:"session_affinity_config_timeout,omitempty"` + EnableProxyProtocol string `json:"enable_proxy_protocol,omitempty"` + PublicIP string `json:"public_ip"` + PrivateIP string `json:"private_ip"` + FirewallID string `json:"firewall_id"` + ClusterID string `json:"cluster_id,omitempty"` + State string `json:"state"` +} + +// LoadBalancerConfig represents a load balancer to be created +type LoadBalancerConfig struct { + Region string `json:"region"` + Name string `json:"name"` + NetworkID string `json:"network_id,omitempty"` + Algorithm string `json:"algorithm,omitempty"` + Backends []LoadBalancerBackendConfig `json:"backends"` + ExternalTrafficPolicy string `json:"external_traffic_policy,omitempty"` + SessionAffinity string `json:"session_affinity,omitempty"` + SessionAffinityConfigTimeout int32 `json:"session_affinity_config_timeout,omitempty"` + EnableProxyProtocol string `json:"enable_proxy_protocol,omitempty"` + ClusterID string `json:"cluster_id,omitempty"` + FirewallID string `json:"firewall_id,omitempty"` + FirewallRules string `json:"firewall_rule,omitempty"` +} + +// LoadBalancerUpdateConfig represents a load balancer to be updated +type LoadBalancerUpdateConfig struct { + Region string `json:"region"` + Name string `json:"name,omitempty"` + Algorithm string `json:"algorithm,omitempty"` + Backends []LoadBalancerBackendConfig `json:"backends,omitempty"` + ExternalTrafficPolicy string `json:"external_traffic_policy,omitempty"` + SessionAffinity string `json:"session_affinity,omitempty"` + SessionAffinityConfigTimeout int32 `json:"session_affinity_config_timeout,omitempty"` + EnableProxyProtocol string `json:"enable_proxy_protocol,omitempty"` + FirewallID string `json:"firewall_id,omitempty"` +} + +// ListLoadBalancers returns all load balancers owned by the calling API account +func (c *Client) ListLoadBalancers() ([]LoadBalancer, error) { + resp, err := c.SendGetRequest("/v2/loadbalancers") + if err != nil { + return nil, decodeError(err) + } + + loadbalancer := make([]LoadBalancer, 0) + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&loadbalancer); err != nil { + return nil, decodeError(err) + } + + return loadbalancer, nil +} + +// GetLoadBalancer returns a load balancer +func (c *Client) GetLoadBalancer(id string) (*LoadBalancer, error) { + resp, err := c.SendGetRequest(fmt.Sprintf("/v2/loadbalancers/%s", id)) + if err != nil { + return nil, decodeError(err) + } + + loadbalancer := &LoadBalancer{} + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&loadbalancer); err != nil { + return nil, decodeError(err) + } + + return loadbalancer, nil +} + +// FindLoadBalancer finds a load balancer by either part of the ID or part of the name +func (c *Client) FindLoadBalancer(search string) (*LoadBalancer, error) { + lbs, err := c.ListLoadBalancers() + if err != nil { + return nil, decodeError(err) + } + + exactMatch := false + partialMatchesCount := 0 + result := LoadBalancer{} + + for _, value := range lbs { + if value.Name == search || value.ID == search { + exactMatch = true + result = value + } else if strings.Contains(value.Name, search) || strings.Contains(value.ID, search) { + if !exactMatch { + result = value + partialMatchesCount++ + } + } + } + + if exactMatch || partialMatchesCount == 1 { + return &result, nil + } else if partialMatchesCount > 1 { + err := fmt.Errorf("unable to find %s because there were multiple matches", search) + return nil, MultipleMatchesError.wrap(err) + } else { + err := fmt.Errorf("unable to find %s, zero matches", search) + return nil, ZeroMatchesError.wrap(err) + } +} + +// CreateLoadBalancer creates a new load balancer +func (c *Client) CreateLoadBalancer(r *LoadBalancerConfig) (*LoadBalancer, error) { + body, err := c.SendPostRequest("/v2/loadbalancers", r) + if err != nil { + return nil, decodeError(err) + } + + loadbalancer := &LoadBalancer{} + if err := json.NewDecoder(bytes.NewReader(body)).Decode(loadbalancer); err != nil { + return nil, err + } + + return loadbalancer, nil +} + +// UpdateLoadBalancer updates a load balancer +func (c *Client) UpdateLoadBalancer(id string, r *LoadBalancerUpdateConfig) (*LoadBalancer, error) { + body, err := c.SendPutRequest(fmt.Sprintf("/v2/loadbalancers/%s", id), r) + if err != nil { + return nil, decodeError(err) + } + + loadbalancer := &LoadBalancer{} + if err := json.NewDecoder(bytes.NewReader(body)).Decode(loadbalancer); err != nil { + return nil, err + } + + return loadbalancer, nil +} + +// DeleteLoadBalancer deletes a load balancer +func (c *Client) DeleteLoadBalancer(id string) (*SimpleResponse, error) { + resp, err := c.SendDeleteRequest(fmt.Sprintf("/v2/loadbalancers/%s", id)) + if err != nil { + return nil, decodeError(err) + } + + return c.DecodeSimpleResponse(resp) +} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/network.go b/cluster-autoscaler/vendor/github.com/civo/civogo/network.go new file mode 100644 index 000000000000..2abcf3bf7504 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/network.go @@ -0,0 +1,140 @@ +package civogo + +import ( + "bytes" + "encoding/json" + "errors" + "fmt" + "strings" +) + +// Network represents a private network for instances to connect to +type Network struct { + ID string `json:"id"` + Name string `json:"name,omitempty"` + Default bool `json:"default,omitempty"` + CIDR string `json:"cidr,omitempty"` + Label string `json:"label,omitempty"` + Status string `json:"status,omitempty"` +} + +type networkConfig struct { + Label string `json:"label"` + Region string `json:"region"` +} + +// NetworkResult represents the result from a network create/update call +type NetworkResult struct { + ID string `json:"id"` + Label string `json:"label"` + Result string `json:"result"` +} + +// GetDefaultNetwork finds the default private network for an account +func (c *Client) GetDefaultNetwork() (*Network, error) { + resp, err := c.SendGetRequest("/v2/networks") + if err != nil { + return nil, decodeError(err) + } + + networks := make([]Network, 0) + json.NewDecoder(bytes.NewReader(resp)).Decode(&networks) + for _, network := range networks { + if network.Default { + return &network, nil + } + } + + return nil, errors.New("no default network found") +} + +// NewNetwork creates a new private network +func (c *Client) NewNetwork(label string) (*NetworkResult, error) { + nc := networkConfig{Label: label, Region: c.Region} + body, err := c.SendPostRequest("/v2/networks", nc) + if err != nil { + return nil, decodeError(err) + } + + var result = &NetworkResult{} + if err := json.NewDecoder(bytes.NewReader(body)).Decode(result); err != nil { + return nil, err + } + + return result, nil +} + +// ListNetworks list all private networks +func (c *Client) ListNetworks() ([]Network, error) { + resp, err := c.SendGetRequest("/v2/networks") + if err != nil { + return nil, decodeError(err) + } + + networks := make([]Network, 0) + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&networks); err != nil { + return nil, err + } + + return networks, nil +} + +// FindNetwork finds a network by either part of the ID or part of the name +func (c *Client) FindNetwork(search string) (*Network, error) { + networks, err := c.ListNetworks() + if err != nil { + return nil, decodeError(err) + } + + exactMatch := false + partialMatchesCount := 0 + result := Network{} + + for _, value := range networks { + if value.Name == search || value.ID == search || value.Label == search { + exactMatch = true + result = value + } else if strings.Contains(value.Name, search) || strings.Contains(value.ID, search) || strings.Contains(value.Label, search) { + if !exactMatch { + result = value + partialMatchesCount++ + } + } + } + + if exactMatch || partialMatchesCount == 1 { + return &result, nil + } else if partialMatchesCount > 1 { + err := fmt.Errorf("unable to find %s because there were multiple matches", search) + return nil, MultipleMatchesError.wrap(err) + } else { + err := fmt.Errorf("unable to find %s, zero matches", search) + return nil, ZeroMatchesError.wrap(err) + } +} + +// RenameNetwork renames an existing private network +func (c *Client) RenameNetwork(label, id string) (*NetworkResult, error) { + nc := networkConfig{Label: label, Region: c.Region} + body, err := c.SendPutRequest("/v2/networks/"+id, nc) + if err != nil { + return nil, decodeError(err) + } + + var result = &NetworkResult{} + if err := json.NewDecoder(bytes.NewReader(body)).Decode(result); err != nil { + return nil, err + } + + return result, nil +} + +// DeleteNetwork deletes a private network +func (c *Client) DeleteNetwork(id string) (*SimpleResponse, error) { + resp, err := c.SendDeleteRequest(fmt.Sprintf("/v2/networks/%s", id)) + if err != nil { + return nil, decodeError(err) + } + + return c.DecodeSimpleResponse(resp) +} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/organisation.go b/cluster-autoscaler/vendor/github.com/civo/civogo/organisation.go new file mode 100644 index 000000000000..729d5bf82ce8 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/organisation.go @@ -0,0 +1,115 @@ +package civogo + +import ( + "bytes" + "encoding/json" + "time" +) + +// Organisation represents a group of accounts treated as a single entity +type Organisation struct { + ID string `json:"id"` + Name string `json:"name"` + Token string `json:"token"` + CreatedAt time.Time `json:"created_at,omitempty"` + UpdatedAt time.Time `json:"updated_at,omitempty"` +} + +// Account is the owner of Civo resources such as instances, Kubernetes clusters, volumes, etc +// Really the Account should be defined with Account endpoints, but there aren't any that are +// publicly-useful +type Account struct { + ID string `json:"id"` + CreatedAt time.Time `json:"created_at,omitempty"` + UpdatedAt time.Time `json:"updated_at,omitempty"` + Label string `json:"label,omitempty"` + EmailAddress string `json:"email_address,omitempty"` + APIKey string `json:"api_key,omitempty"` + Token string `json:"token,omitempty"` + Flags string `json:"flags,omitempty"` + Timezone string `json:"timezone,omitempty"` + Partner string `json:"partner,omitempty"` + DefaultUserID string `json:"default_user_id,omitempty"` + Status string `json:"status,omitempty"` + EmailConfirmed bool `json:"email_confirmed,omitempty"` + CreditCardAdded bool `json:"credit_card_added,omitempty"` + Enabled bool `json:"enabled,omitempty"` +} + +// GetOrganisation returns the organisation associated with the current account +func (c *Client) GetOrganisation() (*Organisation, error) { + resp, err := c.SendGetRequest("/v2/organisation") + if err != nil { + return nil, decodeError(err) + } + + organisation := &Organisation{} + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(organisation); err != nil { + return nil, err + } + + return organisation, nil +} + +// CreateOrganisation creates an organisation with the current account as the only linked member (errors if it's already linked) +func (c *Client) CreateOrganisation(name string) (*Organisation, error) { + data := map[string]string{"name": name} + resp, err := c.SendPostRequest("/v2/organisation", data) + if err != nil { + return nil, decodeError(err) + } + + organisation := &Organisation{} + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(organisation); err != nil { + return nil, err + } + + return organisation, nil +} + +// RenameOrganisation changes the human set name of the organisation (e.g. for re-branding efforts) +func (c *Client) RenameOrganisation(name string) (*Organisation, error) { + data := map[string]string{"name": name} + resp, err := c.SendPutRequest("/v2/organisation", data) + if err != nil { + return nil, decodeError(err) + } + + organisation := &Organisation{} + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(organisation); err != nil { + return nil, err + } + + return organisation, nil +} + +// AddAccountToOrganisation sets the link between second, third, etc accounts and the existing organisation +func (c *Client) AddAccountToOrganisation(organisationID, organisationToken string) ([]Account, error) { + data := map[string]string{"organisation_id": organisationID, "organisation_token": organisationToken} + resp, err := c.SendPostRequest("/v2/organisation/accounts", data) + if err != nil { + return nil, decodeError(err) + } + + accounts := make([]Account, 0) + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&accounts); err != nil { + return nil, err + } + + return accounts, nil +} + +// ListAccountsInOrganisation returns all the accounts in the current account's organisation +func (c *Client) ListAccountsInOrganisation() ([]Account, error) { + resp, err := c.SendGetRequest("/v2/organisation/accounts") + if err != nil { + return nil, decodeError(err) + } + + accounts := make([]Account, 0) + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&accounts); err != nil { + return nil, err + } + + return accounts, nil +} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/permission.go b/cluster-autoscaler/vendor/github.com/civo/civogo/permission.go new file mode 100644 index 000000000000..de23efb8a59d --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/permission.go @@ -0,0 +1,28 @@ +package civogo + +import ( + "bytes" + "encoding/json" +) + +// Permission represents a permission and the description for it +type Permission struct { + Code string `json:"code"` + Name string `json:"name,omitempty"` + Description string `json:"description,omitempty"` +} + +// ListPermissions returns all permissions available to be assigned to team member +func (c *Client) ListPermissions() ([]Permission, error) { + resp, err := c.SendGetRequest("/v2/permissions") + if err != nil { + return nil, decodeError(err) + } + + permissions := make([]Permission, 0) + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&permissions); err != nil { + return nil, err + } + + return permissions, nil +} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/pool.go b/cluster-autoscaler/vendor/github.com/civo/civogo/pool.go new file mode 100644 index 000000000000..df247d868573 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/pool.go @@ -0,0 +1,97 @@ +package civogo + +import ( + "bytes" + "encoding/json" + "fmt" + "strings" +) + +// ListKubernetesClusterPools returns all the pools for a kubernetes cluster +func (c *Client) ListKubernetesClusterPools(cid string) ([]KubernetesPool, error) { + resp, err := c.SendGetRequest(fmt.Sprintf("/v2/kubernetes/clusters/%s/pools", cid)) + if err != nil { + return nil, decodeError(err) + } + + pools := make([]KubernetesPool, 0) + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&pools); err != nil { + return nil, decodeError(err) + } + + return pools, nil +} + +// GetKubernetesClusterPool returns a pool for a kubernetes cluster +func (c *Client) GetKubernetesClusterPool(cid, pid string) (*KubernetesPool, error) { + resp, err := c.SendGetRequest(fmt.Sprintf("/v2/kubernetes/clusters/%s/pools/%s", cid, pid)) + if err != nil { + return nil, decodeError(err) + } + + pool := &KubernetesPool{} + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&pool); err != nil { + return nil, decodeError(err) + } + + return pool, nil +} + +// FindKubernetesClusterPool finds a pool by either part of the ID +func (c *Client) FindKubernetesClusterPool(cid, search string) (*KubernetesPool, error) { + pools, err := c.ListKubernetesClusterPools(cid) + if err != nil { + return nil, decodeError(err) + } + + exactMatch := false + partialMatchesCount := 0 + result := KubernetesPool{} + + for _, value := range pools { + if value.ID == search { + exactMatch = true + result = value + } else if strings.Contains(value.ID, search) { + if !exactMatch { + result = value + partialMatchesCount++ + } + } + } + + if exactMatch || partialMatchesCount == 1 { + return &result, nil + } else if partialMatchesCount > 1 { + err := fmt.Errorf("unable to find %s because there were multiple matches", search) + return nil, MultipleMatchesError.wrap(err) + } else { + err := fmt.Errorf("unable to find %s, zero matches", search) + return nil, ZeroMatchesError.wrap(err) + } +} + +// DeleteKubernetesClusterPoolInstance deletes a instance from pool +func (c *Client) DeleteKubernetesClusterPoolInstance(cid, pid, id string) (*SimpleResponse, error) { + resp, err := c.SendDeleteRequest(fmt.Sprintf("/v2/kubernetes/clusters/%s/pools/%s/instances/%s", cid, pid, id)) + if err != nil { + return nil, decodeError(err) + } + + return c.DecodeSimpleResponse(resp) +} + +// UpdateKubernetesClusterPool updates a pool for a kubernetes cluster +func (c *Client) UpdateKubernetesClusterPool(cid, pid string, config *KubernetesClusterPoolConfig) (*KubernetesPool, error) { + resp, err := c.SendPutRequest(fmt.Sprintf("/v2/kubernetes/clusters/%s/pools/%s", cid, pid), config) + if err != nil { + return nil, decodeError(err) + } + + pool := &KubernetesPool{} + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&pool); err != nil { + return nil, decodeError(err) + } + + return pool, nil +} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/quota.go b/cluster-autoscaler/vendor/github.com/civo/civogo/quota.go new file mode 100644 index 000000000000..965ced06db92 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/quota.go @@ -0,0 +1,54 @@ +package civogo + +import ( + "bytes" + "encoding/json" +) + +// Quota represents the available limits and usage for an account's Civo quota +type Quota struct { + ID string `json:"id"` + DefaultUserID string `json:"default_user_id"` + DefaultUserEmailAddress string `json:"default_user_email_address"` + InstanceCountLimit int `json:"instance_count_limit"` + InstanceCountUsage int `json:"instance_count_usage"` + CPUCoreLimit int `json:"cpu_core_limit"` + CPUCoreUsage int `json:"cpu_core_usage"` + RAMMegabytesLimit int `json:"ram_mb_limit"` + RAMMegabytesUsage int `json:"ram_mb_usage"` + DiskGigabytesLimit int `json:"disk_gb_limit"` + DiskGigabytesUsage int `json:"disk_gb_usage"` + DiskVolumeCountLimit int `json:"disk_volume_count_limit"` + DiskVolumeCountUsage int `json:"disk_volume_count_usage"` + DiskSnapshotCountLimit int `json:"disk_snapshot_count_limit"` + DiskSnapshotCountUsage int `json:"disk_snapshot_count_usage"` + PublicIPAddressLimit int `json:"public_ip_address_limit"` + PublicIPAddressUsage int `json:"public_ip_address_usage"` + SubnetCountLimit int `json:"subnet_count_limit"` + SubnetCountUsage int `json:"subnet_count_usage"` + NetworkCountLimit int `json:"network_count_limit"` + NetworkCountUsage int `json:"network_count_usage"` + SecurityGroupLimit int `json:"security_group_limit"` + SecurityGroupUsage int `json:"security_group_usage"` + SecurityGroupRuleLimit int `json:"security_group_rule_limit"` + SecurityGroupRuleUsage int `json:"security_group_rule_usage"` + PortCountLimit int `json:"port_count_limit"` + PortCountUsage int `json:"port_count_usage"` + LoadBalancerCountLimit int `json:"loadbalancer_count_limit"` + LoadBalancerCountUsage int `json:"loadbalancer_count_usage"` +} + +// GetQuota returns all load balancers owned by the calling API account +func (c *Client) GetQuota() (*Quota, error) { + resp, err := c.SendGetRequest("/v2/quota") + if err != nil { + return nil, decodeError(err) + } + + var quota Quota + if err := json.NewDecoder(bytes.NewReader(resp)).Decode("a); err != nil { + return nil, err + } + + return "a, nil +} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/region.go b/cluster-autoscaler/vendor/github.com/civo/civogo/region.go new file mode 100644 index 000000000000..afb94a780319 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/region.go @@ -0,0 +1,96 @@ +package civogo + +import ( + "bytes" + "encoding/json" + "errors" + "fmt" + "strings" +) + +// Region represents a geographical/DC region for Civo resources +type Region struct { + Code string `json:"code"` + Name string `json:"name"` + Type string `json:"type"` + OutOfCapacity bool `json:"out_of_capacity"` + Country string `json:"country"` + CountryName string `json:"country_name"` + Features Feature `json:"features"` + Default bool `json:"default"` +} + +// Feature represent a all feature inside a region +type Feature struct { + Iaas bool `json:"iaas"` + Kubernetes bool `json:"kubernetes"` +} + +// ListRegions returns all load balancers owned by the calling API account +func (c *Client) ListRegions() ([]Region, error) { + resp, err := c.SendGetRequest("/v2/regions") + if err != nil { + return nil, decodeError(err) + } + + regions := make([]Region, 0) + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(®ions); err != nil { + return nil, err + } + + return regions, nil +} + +// FindRegion is a function to find a region +func (c *Client) FindRegion(search string) (*Region, error) { + allregion, err := c.ListRegions() + if err != nil { + return nil, decodeError(err) + } + + exactMatch := false + partialMatchesCount := 0 + result := Region{} + search = strings.ToUpper(search) + + for _, value := range allregion { + name := strings.ToUpper(value.Name) + code := strings.ToUpper(value.Code) + + if name == search || code == search { + exactMatch = true + result = value + } else if strings.Contains(name, search) || strings.Contains(code, search) { + if !exactMatch { + result = value + partialMatchesCount++ + } + } + } + + if exactMatch || partialMatchesCount == 1 { + return &result, nil + } else if partialMatchesCount > 1 { + err := fmt.Errorf("unable to find %s because there were multiple matches", search) + return nil, MultipleMatchesError.wrap(err) + } else { + err := fmt.Errorf("unable to find %s, zero matches", search) + return nil, ZeroMatchesError.wrap(err) + } +} + +// GetDefaultRegion finds the default region for an account +func (c *Client) GetDefaultRegion() (*Region, error) { + allregion, err := c.ListRegions() + if err != nil { + return nil, decodeError(err) + } + + for _, region := range allregion { + if region.Default { + return ®ion, nil + } + } + + return nil, errors.New("no default region found") +} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/role.go b/cluster-autoscaler/vendor/github.com/civo/civogo/role.go new file mode 100644 index 000000000000..185213464be7 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/role.go @@ -0,0 +1,58 @@ +package civogo + +import ( + "bytes" + "encoding/json" + "time" +) + +// Role represents a set of permissions +type Role struct { + ID string `json:"id"` + Name string `json:"name,omitempty"` + Permissions string `json:"permissions,omitempty"` + BuiltIn bool `json:"built_in,omitempty"` + CreatedAt time.Time `json:"created_at,omitempty"` + UpdatedAt time.Time `json:"updated_at,omitempty"` +} + +// ListRoles returns all roles (built-in and user defined) +func (c *Client) ListRoles() ([]Role, error) { + resp, err := c.SendGetRequest("/v2/roles") + if err != nil { + return nil, decodeError(err) + } + + roles := make([]Role, 0) + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&roles); err != nil { + return nil, err + } + + return roles, nil +} + +// CreateRole creates a new role with a set of permissions for use within an organisation +func (c *Client) CreateRole(name, permissions string) (*Role, error) { + data := map[string]string{"name": name, "permissions": permissions} + resp, err := c.SendPostRequest("/v2/roles", data) + if err != nil { + return nil, decodeError(err) + } + + role := &Role{} + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(role); err != nil { + return nil, err + } + + return role, nil +} + +// DeleteRole removes a non-built-in role from an organisation +func (c *Client) DeleteRole(id string) (*SimpleResponse, error) { + resp, err := c.SendDeleteRequest("/v2/roles/" + id) + if err != nil { + return nil, decodeError(err) + } + + return c.DecodeSimpleResponse(resp) +} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/snapshot.go.disabled b/cluster-autoscaler/vendor/github.com/civo/civogo/snapshot.go.disabled new file mode 100644 index 000000000000..230147c39819 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/snapshot.go.disabled @@ -0,0 +1,107 @@ +package civogo + +import ( + "bytes" + "encoding/json" + "fmt" + "strings" + "time" +) + +// Snapshot is a backup of an instance +type Snapshot struct { + ID string `json:"id"` + InstanceID string `json:"instance_id"` + Hostname string `json:"hostname"` + Template string `json:"template_id"` + Region string `json:"region"` + Name string `json:"name"` + Safe int `json:"safe"` + SizeGigabytes int `json:"size_gb"` + State string `json:"state"` + Cron string `json:"cron_timing,omitempty"` + RequestedAt time.Time `json:"requested_at,omitempty"` + CompletedAt time.Time `json:"completed_at,omitempty"` +} + +// SnapshotConfig represents the options required for creating a new snapshot +type SnapshotConfig struct { + InstanceID string `json:"instance_id"` + Safe bool `json:"safe"` + Cron string `json:"cron_timing"` + Region string `json:"region"` +} + +// CreateSnapshot create a new or update an old snapshot +func (c *Client) CreateSnapshot(name string, r *SnapshotConfig) (*Snapshot, error) { + body, err := c.SendPutRequest(fmt.Sprintf("/v2/snapshots/%s", name), r) + if err != nil { + return nil, decodeError(err) + } + + var n = &Snapshot{} + if err := json.NewDecoder(bytes.NewReader(body)).Decode(n); err != nil { + return nil, err + } + + return n, nil +} + +// ListSnapshots returns a list of all snapshots within the current account +func (c *Client) ListSnapshots() ([]Snapshot, error) { + resp, err := c.SendGetRequest("/v2/snapshots") + if err != nil { + return nil, decodeError(err) + } + + snapshots := make([]Snapshot, 0) + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&snapshots); err != nil { + return nil, err + } + + return snapshots, nil +} + +// FindSnapshot finds a snapshot by either part of the ID or part of the name +func (c *Client) FindSnapshot(search string) (*Snapshot, error) { + snapshots, err := c.ListSnapshots() + if err != nil { + return nil, decodeError(err) + } + + exactMatch := false + partialMatchesCount := 0 + result := Snapshot{} + + for _, value := range snapshots { + if value.Name == search || value.ID == search { + exactMatch = true + result = value + } else if strings.Contains(value.Name, search) || strings.Contains(value.ID, search) { + if !exactMatch { + result = value + partialMatchesCount++ + } + } + } + + if exactMatch || partialMatchesCount == 1 { + return &result, nil + } else if partialMatchesCount > 1 { + err := fmt.Errorf("unable to find %s because there were multiple matches", search) + return nil, MultipleMatchesError.wrap(err) + } else { + err := fmt.Errorf("unable to find %s, zero matches", search) + return nil, ZeroMatchesError.wrap(err) + } +} + +// DeleteSnapshot deletes a snapshot +func (c *Client) DeleteSnapshot(name string) (*SimpleResponse, error) { + resp, err := c.SendDeleteRequest(fmt.Sprintf("/v2/snapshots/%s", name)) + if err != nil { + return nil, decodeError(err) + } + + return c.DecodeSimpleResponse(resp) +} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/snapshot_test.go.disabled b/cluster-autoscaler/vendor/github.com/civo/civogo/snapshot_test.go.disabled new file mode 100644 index 000000000000..b4540fd48a4a --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/snapshot_test.go.disabled @@ -0,0 +1,180 @@ +package civogo + +import ( + "reflect" + "testing" +) + +func TestCreateSnapshot(t *testing.T) { + client, server, _ := NewClientForTesting(map[string]string{ + "/v2/snapshots/my-backup": `{ + "id": "0ca69adc-ff39-4fc1-8f08-d91434e86fac", + "instance_id": "44aab548-61ca-11e5-860e-5cf9389be614", + "hostname": "server1.prod.example.com", + "template_id": "0b213794-d795-4483-8982-9f249c0262b9", + "openstack_snapshot_id": null, + "region": "lon1", + "name": "my-backup", + "safe": 1, + "size_gb": 0, + "state": "new", + "cron_timing": null, + "requested_at": null, + "completed_at": null + }`, + }) + defer server.Close() + + cfg := &SnapshotConfig{ + InstanceID: "44aab548-61ca-11e5-860e-5cf9389be614", + Safe: true, + Cron: "", + } + got, err := client.CreateSnapshot("my-backup", cfg) + if err != nil { + t.Errorf("Request returned an error: %s", err) + return + } + + expected := &Snapshot{ + ID: "0ca69adc-ff39-4fc1-8f08-d91434e86fac", + InstanceID: "44aab548-61ca-11e5-860e-5cf9389be614", + Hostname: "server1.prod.example.com", + Template: "0b213794-d795-4483-8982-9f249c0262b9", + Region: "lon1", + Name: "my-backup", + Safe: 1, + SizeGigabytes: 0, + State: "new", + } + + if !reflect.DeepEqual(got, expected) { + t.Errorf("Expected %+v, got %+v", expected, got) + } +} + +func TestListSnapshots(t *testing.T) { + client, server, _ := NewClientForTesting(map[string]string{ + "/v2/snapshots": `[{ + "id": "0ca69adc-ff39-4fc1-8f08-d91434e86fac", + "instance_id": "44aab548-61ca-11e5-860e-5cf9389be614", + "hostname": "server1.prod.example.com", + "template_id": "0b213794-d795-4483-8982-9f249c0262b9", + "openstack_snapshot_id": null, + "region": "lon1", + "name": "my-backup", + "safe": 1, + "size_gb": 0, + "state": "new", + "cron_timing": null, + "requested_at": null, + "completed_at": null + }]`, + }) + defer server.Close() + got, err := client.ListSnapshots() + + if err != nil { + t.Errorf("Request returned an error: %s", err) + return + } + expected := []Snapshot{{ + ID: "0ca69adc-ff39-4fc1-8f08-d91434e86fac", + InstanceID: "44aab548-61ca-11e5-860e-5cf9389be614", + Hostname: "server1.prod.example.com", + Template: "0b213794-d795-4483-8982-9f249c0262b9", + Region: "lon1", + Name: "my-backup", + Safe: 1, + SizeGigabytes: 0, + State: "new", + }} + if !reflect.DeepEqual(got, expected) { + t.Errorf("Expected %+v, got %+v", expected, got) + } +} + +func TestFindSnapshot(t *testing.T) { + client, server, _ := NewClientForTesting(map[string]string{ + "/v2/snapshots": `[ + { + "id": "0ca69adc-ff39-4fc1-8f08-d91434e86fac", + "instance_id": "44aab548-61ca-11e5-860e-5cf9389be614", + "hostname": "server1.prod.example.com", + "template_id": "0b213794-d795-4483-8982-9f249c0262b9", + "openstack_snapshot_id": null, + "region": "lon1", + "name": "my-backup", + "safe": 1, + "size_gb": 0, + "state": "new", + "cron_timing": null, + "requested_at": null, + "completed_at": null + }, + { + "id": "aadec58e-26f4-43e7-8963-18739519ef76", + "instance_id": "44aab548-61ca-11e5-860e-5cf9389be614", + "hostname": "server1.prod.example.com", + "template_id": "0b213794-d795-4483-8982-9f249c0262b9", + "openstack_snapshot_id": null, + "region": "lon1", + "name": "other-backup", + "safe": 1, + "size_gb": 0, + "state": "new", + "cron_timing": null, + "requested_at": null, + "completed_at": null + } + ]`, + }) + defer server.Close() + + got, _ := client.FindSnapshot("ff39") + if got.ID != "0ca69adc-ff39-4fc1-8f08-d91434e86fac" { + t.Errorf("Expected %s, got %s", "0ca69adc-ff39-4fc1-8f08-d91434e86fac", got.ID) + } + + got, _ = client.FindSnapshot("26f4") + if got.ID != "aadec58e-26f4-43e7-8963-18739519ef76" { + t.Errorf("Expected %s, got %s", "aadec58e-26f4-43e7-8963-18739519ef76", got.ID) + } + + got, _ = client.FindSnapshot("my") + if got.ID != "0ca69adc-ff39-4fc1-8f08-d91434e86fac" { + t.Errorf("Expected %s, got %s", "0ca69adc-ff39-4fc1-8f08-d91434e86fac", got.ID) + } + + got, _ = client.FindSnapshot("other") + if got.ID != "aadec58e-26f4-43e7-8963-18739519ef76" { + t.Errorf("Expected %s, got %s", "aadec58e-26f4-43e7-8963-18739519ef76", got.ID) + } + + _, err := client.FindSnapshot("backup") + if err.Error() != "MultipleMatchesError: unable to find backup because there were multiple matches" { + t.Errorf("Expected %s, got %s", "unable to find backup because there were multiple matches", err.Error()) + } + + _, err = client.FindSnapshot("missing") + if err.Error() != "ZeroMatchesError: unable to find missing, zero matches" { + t.Errorf("Expected %s, got %s", "unable to find missing, zero matches", err.Error()) + } +} + +func TestDeleteSnapshot(t *testing.T) { + client, server, _ := NewClientForTesting(map[string]string{ + "/v2/snapshots/my-backup": `{"result": "success"}`, + }) + defer server.Close() + got, err := client.DeleteSnapshot("my-backup") + if err != nil { + t.Errorf("Request returned an error: %s", err) + return + } + + expected := &SimpleResponse{Result: "success"} + if !reflect.DeepEqual(got, expected) { + t.Errorf("Expected %+v, got %+v", expected, got) + } +} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/ssh_key.go b/cluster-autoscaler/vendor/github.com/civo/civogo/ssh_key.go new file mode 100644 index 000000000000..826020428053 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/ssh_key.go @@ -0,0 +1,104 @@ +package civogo + +import ( + "bytes" + "encoding/json" + "fmt" + "strings" +) + +// SSHKey represents an SSH public key, uploaded to access instances +type SSHKey struct { + ID string `json:"id"` + Name string `json:"name"` + Fingerprint string `json:"fingerprint"` +} + +// ListSSHKeys list all SSH key for an account +func (c *Client) ListSSHKeys() ([]SSHKey, error) { + resp, err := c.SendGetRequest("/v2/sshkeys") + if err != nil { + return nil, err + } + + sshKeys := make([]SSHKey, 0) + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&sshKeys); err != nil { + return nil, decodeError(err) + } + + return sshKeys, nil +} + +// NewSSHKey creates a new SSH key record +func (c *Client) NewSSHKey(name string, publicKey string) (*SimpleResponse, error) { + resp, err := c.SendPostRequest("/v2/sshkeys", map[string]string{ + "name": name, + "public_key": publicKey, + }) + if err != nil { + return nil, decodeError(err) + } + + return c.DecodeSimpleResponse(resp) +} + +// UpdateSSHKey update a SSH key record +func (c *Client) UpdateSSHKey(name string, sshKeyID string) (*SSHKey, error) { + resp, err := c.SendPutRequest(fmt.Sprintf("/v2/sshkeys/%s", sshKeyID), map[string]string{ + "name": name, + }) + if err != nil { + return nil, decodeError(err) + } + + result := &SSHKey{} + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(result); err != nil { + return nil, err + } + + return result, nil +} + +// FindSSHKey finds an SSH key by either part of the ID or part of the name +func (c *Client) FindSSHKey(search string) (*SSHKey, error) { + keys, err := c.ListSSHKeys() + if err != nil { + return nil, decodeError(err) + } + + exactMatch := false + partialMatchesCount := 0 + result := SSHKey{} + + for _, value := range keys { + if value.Name == search || value.ID == search { + exactMatch = true + result = value + } else if strings.Contains(value.Name, search) || strings.Contains(value.ID, search) { + if !exactMatch { + result = value + partialMatchesCount++ + } + } + } + + if exactMatch || partialMatchesCount == 1 { + return &result, nil + } else if partialMatchesCount > 1 { + err := fmt.Errorf("unable to find %s because there were multiple matches", search) + return nil, MultipleMatchesError.wrap(err) + } else { + err := fmt.Errorf("unable to find %s, zero matches", search) + return nil, ZeroMatchesError.wrap(err) + } +} + +// DeleteSSHKey deletes an SSH key +func (c *Client) DeleteSSHKey(id string) (*SimpleResponse, error) { + resp, err := c.SendDeleteRequest(fmt.Sprintf("/v2/sshkeys/%s", id)) + if err != nil { + return nil, decodeError(err) + } + + return c.DecodeSimpleResponse(resp) +} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/team.go b/cluster-autoscaler/vendor/github.com/civo/civogo/team.go new file mode 100644 index 000000000000..d2a49c6cd550 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/team.go @@ -0,0 +1,171 @@ +package civogo + +import ( + "bytes" + "encoding/json" + "fmt" + "strings" + "time" +) + +// Team is a named group of users (has many members) +type Team struct { + ID string `json:"id"` + Name string `json:"name,omitempty"` + CreatedAt time.Time `json:"created_at,omitempty"` + UpdatedAt time.Time `json:"updated_at,omitempty"` +} + +// TeamMember is a link record between User and Team. +type TeamMember struct { + ID string `json:"id"` + TeamID string `json:"team_id,omitempty"` + UserID string `json:"user_id,omitempty"` + Permissions string `json:"permissions,omitempty"` + Roles string `json:"roles,omitempty"` + CreatedAt time.Time `json:"created_at,omitempty"` + UpdatedAt time.Time `json:"updated_at,omitempty"` +} + +// ListTeams returns all teams for the current account +func (c *Client) ListTeams() ([]Team, error) { + resp, err := c.SendGetRequest("/v2/teams") + if err != nil { + return nil, decodeError(err) + } + + teams := make([]Team, 0) + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&teams); err != nil { + return nil, err + } + + return teams, nil +} + +// CreateTeam creates a new team in the account +func (c *Client) CreateTeam(name string) (*Team, error) { + data := map[string]string{"name": name} + resp, err := c.SendPostRequest("/v2/teams", data) + if err != nil { + return nil, decodeError(err) + } + + team := &Team{} + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(team); err != nil { + return nil, err + } + + return team, nil +} + +//FindTeam finds a team by either part of the ID or part of the name +func (c *Client) FindTeam(search string) (*Team, error) { + teams, err := c.ListTeams() + if err != nil { + return nil, decodeError(err) + } + + exactMatch := false + partialMatchesCount := 0 + result := Team{} + + for _, value := range teams { + if value.Name == search || value.ID == search { + exactMatch = true + result = value + } else if strings.Contains(value.Name, search) || strings.Contains(value.ID, search) { + if !exactMatch { + result = value + partialMatchesCount++ + } + } + } + + if exactMatch || partialMatchesCount == 1 { + return &result, nil + } else if partialMatchesCount > 1 { + err := fmt.Errorf("unable to find %s team because there were multiple matches", search) + return nil, MultipleMatchesError.wrap(err) + } else { + err := fmt.Errorf("unable to find %s team, zero matches", search) + return nil, ZeroMatchesError.wrap(err) + } +} + +// RenameTeam changes the human set name for a team +func (c *Client) RenameTeam(teamID, name string) (*Team, error) { + data := map[string]string{"name": name} + resp, err := c.SendPutRequest("/v2/teams/"+teamID, data) + if err != nil { + return nil, decodeError(err) + } + + team := &Team{} + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(team); err != nil { + return nil, err + } + + return team, nil +} + +// DeleteTeam removes a team (and therefore all team member access) +func (c *Client) DeleteTeam(id string) (*SimpleResponse, error) { + resp, err := c.SendDeleteRequest("/v2/teams/" + id) + if err != nil { + return nil, decodeError(err) + } + + return c.DecodeSimpleResponse(resp) +} + +// ListTeamMembers returns a list of all team members (and their permissions) in the specified team +func (c *Client) ListTeamMembers(teamID string) ([]TeamMember, error) { + resp, err := c.SendGetRequest("/v2/teams/" + teamID + "/members") + if err != nil { + return nil, decodeError(err) + } + + teamMembers := make([]TeamMember, 0) + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&teamMembers); err != nil { + return nil, err + } + + return teamMembers, nil +} + +// AddTeamMember adds a team member to the specified team, with permissions and roles (which are combinative) +func (c *Client) AddTeamMember(teamID, userID, permissions, roles string) ([]TeamMember, error) { + data := map[string]string{"user_id": userID, "permissions": permissions, "roles": roles} + _, err := c.SendPostRequest("/v2/teams/"+teamID+"/members", data) + if err != nil { + return nil, decodeError(err) + } + + return c.ListTeamMembers(teamID) +} + +// UpdateTeamMember changes the permissions or roles for a specified team member +func (c *Client) UpdateTeamMember(teamID, teamMemberID, permissions, roles string) (*TeamMember, error) { + data := map[string]string{"permissions": permissions, "roles": roles} + resp, err := c.SendPostRequest("/v2/teams/"+teamID+"/members/"+teamMemberID, data) + if err != nil { + return nil, decodeError(err) + } + + teamMember := &TeamMember{} + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(teamMember); err != nil { + return nil, err + } + + return teamMember, nil +} + +// RemoveTeamMember removes the specified team member from the specified team +func (c *Client) RemoveTeamMember(teamID, teamMemberID string) (*SimpleResponse, error) { + resp, err := c.SendDeleteRequest("/v2/teams/" + teamID + "/members/" + teamMemberID) + if err != nil { + return nil, decodeError(err) + } + + return c.DecodeSimpleResponse(resp) +} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/template.go.disabled b/cluster-autoscaler/vendor/github.com/civo/civogo/template.go.disabled new file mode 100644 index 000000000000..9a7f97e8670b --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/template.go.disabled @@ -0,0 +1,132 @@ +package civogo + +import ( + "bytes" + "encoding/json" + "errors" + "fmt" + "strings" +) + +// Template represents a Template for launching instances from +type Template struct { + ID string `json:"id"` + Code string `json:"code"` + Name string `json:"name"` + Region string `json:"region"` + AccountID string `json:"account_id,omitempty"` + ImageID string `json:"image_id,omitempty"` + VolumeID string `json:"volume_id"` + ShortDescription string `json:"short_description"` + Description string `json:"description"` + DefaultUsername string `json:"default_username"` + CloudConfig string `json:"cloud_config"` +} + +// ListTemplates return all template in system +func (c *Client) ListTemplates() ([]Template, error) { + resp, err := c.SendGetRequest("/v2/templates") + if err != nil { + return nil, decodeError(err) + } + + templates := make([]Template, 0) + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&templates); err != nil { + return nil, err + } + + return templates, nil +} + +// NewTemplate will create a new template for the current user +func (c *Client) NewTemplate(conf *Template) (*SimpleResponse, error) { + if conf.ImageID == "" && conf.VolumeID == "" { + return nil, errors.New("if image id is not present, volume id must be") + } + + resp, err := c.SendPostRequest("/v2/templates", conf) + if err != nil { + return nil, decodeError(err) + } + + return c.DecodeSimpleResponse(resp) +} + +// UpdateTemplate will update a template for the current user +func (c *Client) UpdateTemplate(id string, conf *Template) (*Template, error) { + if conf.ImageID == "" && conf.VolumeID == "" { + return nil, errors.New("if image id is not present, volume id must be") + } + + resp, err := c.SendPutRequest(fmt.Sprintf("/v2/templates/%s", id), conf) + if err != nil { + return nil, decodeError(err) + } + + template := &Template{} + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(template); err != nil { + return nil, err + } + + return template, nil +} + +// GetTemplateByCode finds the Template for an account with the specified code +func (c *Client) GetTemplateByCode(code string) (*Template, error) { + resp, err := c.ListTemplates() + if err != nil { + return nil, decodeError(err) + } + + for _, template := range resp { + if template.Code == code { + return &template, nil + } + } + + return nil, errors.New("template not found") +} + +// FindTemplate finds a template by either part of the ID or part of the code +func (c *Client) FindTemplate(search string) (*Template, error) { + templateList, err := c.ListTemplates() + if err != nil { + return nil, decodeError(err) + } + + exactMatch := false + partialMatchesCount := 0 + result := Template{} + + for _, value := range templateList { + if value.Code == search || value.ID == search { + exactMatch = true + result = value + } else if strings.Contains(value.Code, search) || strings.Contains(value.ID, search) { + if !exactMatch { + result = value + partialMatchesCount++ + } + } + } + + if exactMatch || partialMatchesCount == 1 { + return &result, nil + } else if partialMatchesCount > 1 { + err := fmt.Errorf("unable to find %s because there were multiple matches", search) + return nil, MultipleMatchesError.wrap(err) + } else { + err := fmt.Errorf("unable to find %s, zero matches", search) + return nil, ZeroMatchesError.wrap(err) + } +} + +// DeleteTemplate deletes requested template +func (c *Client) DeleteTemplate(id string) (*SimpleResponse, error) { + resp, err := c.SendDeleteRequest(fmt.Sprintf("/v2/templates/%s", id)) + if err != nil { + return nil, decodeError(err) + } + + return c.DecodeSimpleResponse(resp) +} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/template_test.go.disabled b/cluster-autoscaler/vendor/github.com/civo/civogo/template_test.go.disabled new file mode 100644 index 000000000000..2d04ce7c7ced --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/template_test.go.disabled @@ -0,0 +1,158 @@ +package civogo + +import ( + "reflect" + "testing" +) + +func TestGetTemplateByCode(t *testing.T) { + client, server, _ := NewClientForTesting(map[string]string{ + "/v2/templates": `[{"id": "1", "code": "centos-7"},{"id": "2", "code": "ubuntu-18.04"}]`, + }) + defer server.Close() + + got, err := client.GetTemplateByCode("ubuntu-18.04") + if err != nil { + t.Errorf("Request returned an error: %s", err) + return + } + if got.ID != "2" { + t.Errorf("Expected %s, got %s", "12345", got.ID) + } +} + +func TestListTemplates(t *testing.T) { + client, server, _ := NewClientForTesting(map[string]string{ + "/v2/templates": `[{ + "id": "773aea72-d068-4cb7-8e08-28841acef0cb", + "code": "ubuntu-18.04", + "name": "Ubuntu 18.04", + "account_id": null, + "image_id": null, + "volume_id": "61c2cfe2-f7f3-46e7-b5c9-7b03ae25ea86", + "short_description": "Ubuntu 18.04", + "description": "The freely available Ubuntu 18.04 OS, minimally installed with just OpenSSH server", + "default_username": "ubuntu", + "cloud_config": "#cloud-config contents" + }]`, + }) + defer server.Close() + got, err := client.ListTemplates() + + if err != nil { + t.Errorf("Request returned an error: %s", err) + return + } + expected := []Template{ + { + ID: "773aea72-d068-4cb7-8e08-28841acef0cb", + Code: "ubuntu-18.04", + Name: "Ubuntu 18.04", + VolumeID: "61c2cfe2-f7f3-46e7-b5c9-7b03ae25ea86", + ShortDescription: "Ubuntu 18.04", + Description: "The freely available Ubuntu 18.04 OS, minimally installed with just OpenSSH server", + DefaultUsername: "ubuntu", + CloudConfig: "#cloud-config contents", + }, + } + if !reflect.DeepEqual(got, expected) { + t.Errorf("Expected %+v, got %+v", expected, got) + } + +} + +func TestNewTemplate(t *testing.T) { + client, server, _ := NewClientForTesting(map[string]string{ + "/v2/templates": `{ + "result": "success", + "id": "283d5ee6-fa9f-4e40-8e1a-bdc28812d593" + }`, + }) + defer server.Close() + + conf := &Template{ + Code: "test", + Name: "Test", + ImageID: "811a8dfb-8202-49ad-b1ef-1e6320b20497", + ShortDescription: "my custom", + Description: "my custom image from golang", + DefaultUsername: "root", + } + + got, err := client.NewTemplate(conf) + if err != nil { + t.Errorf("Request returned an error: %s", err) + return + } + + expected := &SimpleResponse{Result: "success", ID: "283d5ee6-fa9f-4e40-8e1a-bdc28812d593"} + if !reflect.DeepEqual(got, expected) { + t.Errorf("Expected %+v, got %+v", expected, got) + } + +} + +func TestUpdateTemplate(t *testing.T) { + client, server, _ := NewClientForTesting(map[string]string{ + "/v2/templates/283d5ee6-fa9f-4e40-8e1a-bdc28812d593": `{ + "id": "283d5ee6-fa9f-4e40-8e1a-bdc28812d593", + "code": "my-linux-1.0", + "name": "My Linux 1.0", + "account_id": null, + "image_id": "811a8dfb-8202-49ad-b1ef-1e6320b20497", + "volume_id": null, + "short_description": "...", + "description": "...", + "default_username": "Ubuntu", + "cloud_config": "..." + }`, + }) + defer server.Close() + + conf := &Template{ + Code: "my-linux-1.0", + Name: "My Linux 1.0", + ImageID: "811a8dfb-8202-49ad-b1ef-1e6320b20497", + ShortDescription: "...", + Description: "...", + DefaultUsername: "Ubuntu", + } + + got, err := client.UpdateTemplate("283d5ee6-fa9f-4e40-8e1a-bdc28812d593", conf) + if err != nil { + t.Errorf("Request returned an error: %s", err) + return + } + + expected := &Template{ + ID: "283d5ee6-fa9f-4e40-8e1a-bdc28812d593", + Code: "my-linux-1.0", + Name: "My Linux 1.0", + ImageID: "811a8dfb-8202-49ad-b1ef-1e6320b20497", + ShortDescription: "...", + Description: "...", + DefaultUsername: "Ubuntu", + CloudConfig: "...", + } + if !reflect.DeepEqual(got, expected) { + t.Errorf("Expected %+v, got %+v", expected, got) + } + +} + +func TestDeleteTemplate(t *testing.T) { + client, server, _ := NewClientForTesting(map[string]string{ + "/v2/templates/12346": `{"result": "success"}`, + }) + defer server.Close() + got, err := client.DeleteTemplate("12346") + if err != nil { + t.Errorf("Request returned an error: %s", err) + return + } + + expected := &SimpleResponse{Result: "success"} + if !reflect.DeepEqual(got, expected) { + t.Errorf("Expected %+v, got %+v", expected, got) + } +} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/user.go b/cluster-autoscaler/vendor/github.com/civo/civogo/user.go new file mode 100644 index 000000000000..8412bae5621c --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/user.go @@ -0,0 +1,53 @@ +package civogo + +import ( + "bytes" + "encoding/json" + "time" +) + +// User is the user struct +type User struct { + ID string `json:"id"` + FirstName string `json:"first_name"` + LastName string `json:"last_name"` + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` + CompanyName string `json:"company_name"` + EmailAddress string `json:"email_address"` + Status string `json:"status"` + Flags string `json:"flags"` + Token string `json:"token"` + MarketingAllowed int `json:"marketing_allowed"` + DefaultAccountID string `json:"default_account_id"` + // DefaultAccountID string `json:"account_id"` + PasswordDigest string `json:"password_digest"` + Partner string `json:"partner"` + PartnerUserID string `json:"partner_user_id"` + ReferralID string `json:"referral_id"` + LastChosenRegion string `json:"last_chosen_region"` +} + +// UserEverything is the combination structure for all team related data for the current user and account +type UserEverything struct { + User User + Accounts []Account + Organisations []Organisation + Teams []Team + Roles []Role +} + +// GetUserEverything returns the organisation associated with the current account +func (c *Client) GetUserEverything(userID string) (*UserEverything, error) { + resp, err := c.SendGetRequest("/v2/users/" + userID + "/everything") + if err != nil { + return nil, decodeError(err) + } + + everything := &UserEverything{} + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(everything); err != nil { + return nil, err + } + + return everything, nil +} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/utils/random.go b/cluster-autoscaler/vendor/github.com/civo/civogo/utils/random.go new file mode 100644 index 000000000000..f6f172c325f8 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/utils/random.go @@ -0,0 +1,48 @@ +package utils + +import ( + "math/rand" + "time" +) + +var adjectives = [...]string{ + "aged", "ancient", "autumn", "billowing", "bitter", "black", "blue", "bold", + "broad", "broken", "calm", "cold", "cool", "crimson", "curly", "damp", + "dark", "dawn", "delicate", "divine", "dry", "empty", "falling", "fancy", + "flat", "floral", "fragrant", "frosty", "gentle", "green", "hidden", "holy", + "icy", "jolly", "late", "lingering", "little", "lively", "long", "lucky", + "misty", "morning", "muddy", "mute", "nameless", "noisy", "odd", "old", + "orange", "patient", "plain", "polished", "proud", "purple", "quiet", "rapid", + "raspy", "red", "restless", "rough", "round", "royal", "shiny", "shrill", + "shy", "silent", "small", "snowy", "soft", "solitary", "sparkling", "spring", + "square", "steep", "still", "summer", "super", "sweet", "throbbing", "tight", + "tiny", "twilight", "wandering", "weathered", "white", "wild", "winter", "wispy", + "withered", "yellow", "young", +} + +var nouns = [...]string{ + "waterfall", "river", "breeze", "moon", "rain", "wind", "sea", "morning", + "snow", "lake", "sunset", "pine", "shadow", "leaf", "dawn", "glitter", + "forest", "hill", "cloud", "meadow", "sun", "glade", "bird", "brook", + "butterfly", "bush", "dew", "dust", "field", "fire", "flower", "firefly", + "feather", "grass", "haze", "mountain", "night", "pond", "darkness", + "snowflake", "silence", "sound", "sky", "shape", "surf", "thunder", + "violet", "water", "wildflower", "wave", "water", "resonance", "sun", + "wood", "dream", "cherry", "tree", "fog", "frost", "voice", + "frog", "smoke", "star", "ibex", "roe", "deer", "cave", "stream", "creek", "ditch", "puddle", + "oak", "fox", "wolf", "owl", "eagle", "hawk", "badger", "nightingale", + "ocean", "island", "marsh", "swamp", "blaze", "glow", "hail", "echo", + "flame", "twilight", "whale", "raven", "blossom", "mist", "ray", "beam", + "stone", "rock", "cliff", "reef", "crag", "peak", "summit", "wetland", + "glacier", "thunderstorm", "ice", "firn", "spark", "boulder", "rabbit", + "abyss", "avalanche", "moor", "reed", "harbor", "chamber", "savannah", + "garden", "brook", "earth", "oasis", "bastion", "ridge", "bayou", "citadel", + "shore", "cavern", "gorge", "spring", "arrow", "heap", +} + +// RandomName generates a Heroku-style random name for instances/clusters/etc +func RandomName() string { + rand.Seed(time.Now().Unix()) + + return adjectives[rand.Intn(len(adjectives))] + "-" + nouns[rand.Intn(len(nouns))] +} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/volume.go b/cluster-autoscaler/vendor/github.com/civo/civogo/volume.go new file mode 100644 index 000000000000..78ea231e851e --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/volume.go @@ -0,0 +1,177 @@ +package civogo + +import ( + "bytes" + "encoding/json" + "fmt" + "strings" + "time" +) + +// Volume is a block of attachable storage for our IAAS products +// https://www.civo.com/api/volumes +type Volume struct { + ID string `json:"id"` + Name string `json:"name"` + InstanceID string `json:"instance_id"` + ClusterID string `json:"cluster_id"` + NetworkID string `json:"network_id"` + MountPoint string `json:"mountpoint"` + Status string `json:"status"` + SizeGigabytes int `json:"size_gb"` + Bootable bool `json:"bootable"` + CreatedAt time.Time `json:"created_at"` +} + +// VolumeResult is the response from one of our simple API calls +type VolumeResult struct { + ID string `json:"id"` + Name string `json:"name"` + Result string `json:"result"` +} + +// VolumeConfig are the settings required to create a new Volume +type VolumeConfig struct { + Name string `json:"name"` + Namespace string `json:"namespace"` + ClusterID string `json:"cluster_id"` + NetworkID string `json:"network_id"` + Region string `json:"region"` + SizeGigabytes int `json:"size_gb"` + Bootable bool `json:"bootable"` +} + +// ListVolumes returns all volumes owned by the calling API account +// https://www.civo.com/api/volumes#list-volumes +func (c *Client) ListVolumes() ([]Volume, error) { + resp, err := c.SendGetRequest("/v2/volumes") + if err != nil { + return nil, decodeError(err) + } + + var volumes = make([]Volume, 0) + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&volumes); err != nil { + return nil, err + } + + return volumes, nil +} + +// GetVolume finds a volume by the full ID +func (c *Client) GetVolume(id string) (*Volume, error) { + resp, err := c.SendGetRequest(fmt.Sprintf("/v2/volumes/%s", id)) + if err != nil { + return nil, decodeError(err) + } + + var volume = Volume{} + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&volume); err != nil { + return nil, err + } + + return &volume, nil +} + +// FindVolume finds a volume by either part of the ID or part of the name +func (c *Client) FindVolume(search string) (*Volume, error) { + volumes, err := c.ListVolumes() + if err != nil { + return nil, decodeError(err) + } + + exactMatch := false + partialMatchesCount := 0 + result := Volume{} + + for _, value := range volumes { + if value.Name == search || value.ID == search { + exactMatch = true + result = value + } else if strings.Contains(value.Name, search) || strings.Contains(value.ID, search) { + if !exactMatch { + result = value + partialMatchesCount++ + } + } + } + + if exactMatch || partialMatchesCount == 1 { + return &result, nil + } else if partialMatchesCount > 1 { + err := fmt.Errorf("unable to find %s because there were multiple matches", search) + return nil, MultipleMatchesError.wrap(err) + } else { + err := fmt.Errorf("unable to find %s, zero matches", search) + return nil, ZeroMatchesError.wrap(err) + } +} + +// NewVolume creates a new volume +// https://www.civo.com/api/volumes#create-a-new-volume +func (c *Client) NewVolume(v *VolumeConfig) (*VolumeResult, error) { + body, err := c.SendPostRequest("/v2/volumes", v) + if err != nil { + return nil, decodeError(err) + } + + var result = &VolumeResult{} + if err := json.NewDecoder(bytes.NewReader(body)).Decode(result); err != nil { + return nil, err + } + + return result, nil +} + +// ResizeVolume resizes a volume +// https://www.civo.com/api/volumes#resizing-a-volume +func (c *Client) ResizeVolume(id string, size int) (*SimpleResponse, error) { + resp, err := c.SendPutRequest(fmt.Sprintf("/v2/volumes/%s/resize", id), map[string]int{ + "size_gb": size, + }) + if err != nil { + return nil, decodeError(err) + } + + response, err := c.DecodeSimpleResponse(resp) + return response, err +} + +// AttachVolume attaches a volume to an instance +// https://www.civo.com/api/volumes#attach-a-volume-to-an-instance +func (c *Client) AttachVolume(id string, instance string) (*SimpleResponse, error) { + resp, err := c.SendPutRequest(fmt.Sprintf("/v2/volumes/%s/attach", id), map[string]string{ + "instance_id": instance, + "region": c.Region, + }) + if err != nil { + return nil, decodeError(err) + } + + response, err := c.DecodeSimpleResponse(resp) + return response, err +} + +// DetachVolume attach volume from any instances +// https://www.civo.com/api/volumes#attach-a-volume-to-an-instance +func (c *Client) DetachVolume(id string) (*SimpleResponse, error) { + resp, err := c.SendPutRequest(fmt.Sprintf("/v2/volumes/%s/detach", id), map[string]string{ + "region": c.Region, + }) + if err != nil { + return nil, decodeError(err) + } + + response, err := c.DecodeSimpleResponse(resp) + return response, err +} + +// DeleteVolume deletes a volumes +// https://www.civo.com/api/volumes#deleting-a-volume +func (c *Client) DeleteVolume(id string) (*SimpleResponse, error) { + resp, err := c.SendDeleteRequest(fmt.Sprintf("/v2/volumes/%s", id)) + if err != nil { + return nil, decodeError(err) + } + + return c.DecodeSimpleResponse(resp) +} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/webhook.go b/cluster-autoscaler/vendor/github.com/civo/civogo/webhook.go new file mode 100644 index 000000000000..2a2b6070e103 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/webhook.go @@ -0,0 +1,115 @@ +package civogo + +import ( + "bytes" + "encoding/json" + "fmt" + "strings" +) + +// Webhook is a representation of a saved webhook callback from changes in Civo +type Webhook struct { + ID string `json:"id"` + Events []string `json:"events"` + URL string `json:"url"` + Secret string `json:"secret"` + Disabled bool `json:"disabled"` + Failures int `json:"failures"` + LasrFailureReason string `json:"last_failure_reason"` +} + +// WebhookConfig represents the options required for creating a new webhook +type WebhookConfig struct { + Events []string `json:"events"` + URL string `json:"url"` + Secret string `json:"secret"` +} + +// CreateWebhook creates a new webhook +func (c *Client) CreateWebhook(r *WebhookConfig) (*Webhook, error) { + body, err := c.SendPostRequest("/v2/webhooks", r) + if err != nil { + return nil, decodeError(err) + } + + var n = &Webhook{} + if err := json.NewDecoder(bytes.NewReader(body)).Decode(n); err != nil { + return nil, err + } + + return n, nil +} + +// ListWebhooks returns a list of all webhook within the current account +func (c *Client) ListWebhooks() ([]Webhook, error) { + resp, err := c.SendGetRequest("/v2/webhooks") + if err != nil { + return nil, decodeError(err) + } + + webhook := make([]Webhook, 0) + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&webhook); err != nil { + return nil, err + } + + return webhook, nil +} + +// FindWebhook finds a webhook by either part of the ID or part of the name +func (c *Client) FindWebhook(search string) (*Webhook, error) { + webhooks, err := c.ListWebhooks() + if err != nil { + return nil, decodeError(err) + } + + exactMatch := false + partialMatchesCount := 0 + result := Webhook{} + + for _, value := range webhooks { + if value.URL == search || value.ID == search { + exactMatch = true + result = value + } else if strings.Contains(value.URL, search) || strings.Contains(value.ID, search) { + if !exactMatch { + result = value + partialMatchesCount++ + } + } + } + + if exactMatch || partialMatchesCount == 1 { + return &result, nil + } else if partialMatchesCount > 1 { + err := fmt.Errorf("unable to find %s because there were multiple matches", search) + return nil, MultipleMatchesError.wrap(err) + } else { + err := fmt.Errorf("unable to find %s, zero matches", search) + return nil, ZeroMatchesError.wrap(err) + } +} + +// UpdateWebhook updates a webhook +func (c *Client) UpdateWebhook(id string, r *WebhookConfig) (*Webhook, error) { + body, err := c.SendPutRequest(fmt.Sprintf("/v2/webhooks/%s", id), r) + if err != nil { + return nil, decodeError(err) + } + + var n = &Webhook{} + if err := json.NewDecoder(bytes.NewReader(body)).Decode(n); err != nil { + return nil, err + } + + return n, nil +} + +// DeleteWebhook deletes a webhook +func (c *Client) DeleteWebhook(id string) (*SimpleResponse, error) { + resp, err := c.SendDeleteRequest(fmt.Sprintf("/v2/webhooks/%s", id)) + if err != nil { + return nil, decodeError(err) + } + + return c.DecodeSimpleResponse(resp) +} diff --git a/cluster-autoscaler/vendor/modules.txt b/cluster-autoscaler/vendor/modules.txt index fe0a10608f9b..5c457cd2afc5 100644 --- a/cluster-autoscaler/vendor/modules.txt +++ b/cluster-autoscaler/vendor/modules.txt @@ -161,6 +161,10 @@ github.com/cilium/ebpf/internal github.com/cilium/ebpf/internal/btf github.com/cilium/ebpf/internal/unix github.com/cilium/ebpf/link +# github.com/civo/civogo v0.2.77 +## explicit +github.com/civo/civogo +github.com/civo/civogo/utils # github.com/clusterhq/flocker-go v0.0.0-20160920122132-2b8b7259d313 github.com/clusterhq/flocker-go # github.com/container-storage-interface/spec v1.5.0 diff --git a/cluster-autoscaler/vendor/sigs.k8s.io/cloud-provider-azure/pkg/provider/doc.go b/cluster-autoscaler/vendor/sigs.k8s.io/cloud-provider-azure/pkg/provider/doc.go index fb46d8c807f6..26587698b0cb 100644 --- a/cluster-autoscaler/vendor/sigs.k8s.io/cloud-provider-azure/pkg/provider/doc.go +++ b/cluster-autoscaler/vendor/sigs.k8s.io/cloud-provider-azure/pkg/provider/doc.go @@ -16,4 +16,4 @@ limitations under the License. // Package provider is an implementation of CloudProvider Interface, LoadBalancer // and Instances for Azure. -package provider // import "sigs.k8s.io/cloud-provider-azure/pkg/provider" +package provider // import "sigs.k8s.io/cloud-provider-azure/pkg/provider From abccd6d20eaeea68334f5ac1e44fc856339c77ce Mon Sep 17 00:00:00 2001 From: Vishal Anarase Date: Tue, 3 May 2022 20:39:26 +0530 Subject: [PATCH 03/11] Bump up civogo version Signed-off-by: Vishal Anarse --- .../cloudprovider/civo/civo_manager.go | 8 ++- .../cloudprovider/civo/civo_node_group.go | 12 ++-- cluster-autoscaler/go.mod | 2 +- cluster-autoscaler/go.sum | 4 +- .../vendor/github.com/civo/civogo/account.go | 43 ++++++++++++ .../github.com/civo/civogo/application.go | 65 +---------------- .../civo/civogo/application_size.go | 70 ------------------- .../github.com/civo/civogo/fake_client.go | 4 +- .../vendor/github.com/civo/civogo/pool.go | 10 ++- cluster-autoscaler/vendor/modules.txt | 2 +- 10 files changed, 74 insertions(+), 146 deletions(-) create mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/account.go delete mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/application_size.go diff --git a/cluster-autoscaler/cloudprovider/civo/civo_manager.go b/cluster-autoscaler/cloudprovider/civo/civo_manager.go index f728ae34d8e4..04d0ec5a2c4f 100644 --- a/cluster-autoscaler/cloudprovider/civo/civo_manager.go +++ b/cluster-autoscaler/cloudprovider/civo/civo_manager.go @@ -31,11 +31,15 @@ import ( "k8s.io/klog/v2" ) +var ( + Region string +) + type nodeGroupClient interface { // ListKubernetesClusterPools lists all node pools in the Kubernetes cluster. ListKubernetesClusterPools(clusterID string) ([]civogo.KubernetesPool, error) // UpdateKubernetesClusterPool updates an existing Kubernetes cluster pool with the Civo API. - UpdateKubernetesClusterPool(cid, pid string, config *civogo.KubernetesClusterPoolConfig) (*civogo.KubernetesPool, error) + UpdateKubernetesClusterPool(cid, pid string, config *civogo.KubernetesClusterPoolUpdateConfig) (*civogo.KubernetesPool, error) // DeleteKubernetesClusterPoolInstance deletes a instance from pool DeleteKubernetesClusterPoolInstance(clusterID, poolID, instanceID string) (*civogo.SimpleResponse, error) } @@ -94,6 +98,8 @@ func newManager(configReader io.Reader, discoveryOpts cloudprovider.NodeGroupDis return nil, errors.New("region was not provided") } + Region = cfg.Region + civoClient, err := civogo.NewClientWithURL(cfg.ApiKey, cfg.ApiURL, cfg.Region) if err != nil { return nil, fmt.Errorf("couldn't initialize Civo client: %s", err) diff --git a/cluster-autoscaler/cloudprovider/civo/civo_node_group.go b/cluster-autoscaler/cloudprovider/civo/civo_node_group.go index a6fd3fc7d146..3f5723365755 100644 --- a/cluster-autoscaler/cloudprovider/civo/civo_node_group.go +++ b/cluster-autoscaler/cloudprovider/civo/civo_node_group.go @@ -80,8 +80,9 @@ func (n *NodeGroup) IncreaseSize(delta int) error { n.nodePool.Count, targetSize, n.MaxSize()) } - req := &civogo.KubernetesClusterPoolConfig{ - Count: targetSize, + req := &civogo.KubernetesClusterPoolUpdateConfig{ + Count: targetSize, + Region: Region, } updatedNodePool, err := n.client.UpdateKubernetesClusterPool(n.clusterID, n.id, req) if err != nil { @@ -135,8 +136,9 @@ func (n *NodeGroup) DecreaseTargetSize(delta int) error { n.nodePool.Count, targetSize, n.MinSize()) } - req := &civogo.KubernetesClusterPoolConfig{ - Count: targetSize, + req := &civogo.KubernetesClusterPoolUpdateConfig{ + Count: targetSize, + Region: Region, } updatedNodePool, err := n.client.UpdateKubernetesClusterPool(n.clusterID, n.id, req) @@ -241,7 +243,7 @@ func toInstanceStatus(nodeState string) *cloudprovider.InstanceStatus { st := &cloudprovider.InstanceStatus{} switch nodeState { - case "BUILD", "BUILD_PENDING": + case "BUILDING": st.State = cloudprovider.InstanceCreating case "ACTIVE": st.State = cloudprovider.InstanceRunning diff --git a/cluster-autoscaler/go.mod b/cluster-autoscaler/go.mod index 2e68df221bc3..ecc78d854845 100644 --- a/cluster-autoscaler/go.mod +++ b/cluster-autoscaler/go.mod @@ -12,7 +12,7 @@ require ( github.com/Azure/go-autorest/autorest/to v0.4.0 github.com/Azure/skewer v0.0.14 github.com/aws/aws-sdk-go v1.38.49 - github.com/civo/civogo v0.2.77 + github.com/civo/civogo v0.2.81 github.com/digitalocean/godo v1.27.0 github.com/ghodss/yaml v1.0.0 github.com/gofrs/uuid v4.0.0+incompatible diff --git a/cluster-autoscaler/go.sum b/cluster-autoscaler/go.sum index cb53c62abc35..09664defa43e 100644 --- a/cluster-autoscaler/go.sum +++ b/cluster-autoscaler/go.sum @@ -161,8 +161,8 @@ github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMn github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= github.com/cilium/ebpf v0.7.0 h1:1k/q3ATgxSXRdrmPfH8d7YK0GfqVsEKZAX9dQZvs56k= github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA= -github.com/civo/civogo v0.2.77 h1:r2fF0bBPbjeLBSFV+m3NWohwVZbdMZjZgxTwnxOcv6M= -github.com/civo/civogo v0.2.77/go.mod h1:WUgi+GbpYlgXTbpU5Lx4scLc2XuoYhb9o20FMwPalBo= +github.com/civo/civogo v0.2.81 h1:2v/+JvkNtOyfAdjOT01cm7V2ALCrNMKNpk//NL5ZEwM= +github.com/civo/civogo v0.2.81/go.mod h1:WUgi+GbpYlgXTbpU5Lx4scLc2XuoYhb9o20FMwPalBo= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/clusterhq/flocker-go v0.0.0-20160920122132-2b8b7259d313 h1:eIHD9GNM3Hp7kcRW5mvcz7WTR3ETeoYYKwpgA04kaXE= github.com/clusterhq/flocker-go v0.0.0-20160920122132-2b8b7259d313/go.mod h1:P1wt9Z3DP8O6W3rvwCt0REIlshg1InHImaLW0t3ObY0= diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/account.go b/cluster-autoscaler/vendor/github.com/civo/civogo/account.go new file mode 100644 index 000000000000..d31863faab5f --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/account.go @@ -0,0 +1,43 @@ +package civogo + +import ( + "bytes" + "encoding/json" +) + +// PaginatedAccounts returns a paginated list of Account object +type PaginatedAccounts struct { + Page int `json:"page"` + PerPage int `json:"per_page"` + Pages int `json:"pages"` + Items []Account `json:"items"` +} + +// ListAccounts lists all accounts +func (c *Client) ListAccounts() (*PaginatedAccounts, error) { + resp, err := c.SendGetRequest("/v2/accounts") + if err != nil { + return nil, decodeError(err) + } + + accounts := &PaginatedAccounts{} + if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&accounts); err != nil { + return nil, decodeError(err) + } + + return accounts, nil +} + +// GetAccountID returns the account ID +func (c *Client) GetAccountID() string { + accounts, err := c.ListAccounts() + if err != nil { + return "" + } + + if len(accounts.Items) == 0 { + return "No account found" + } + + return accounts.Items[0].ID +} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/application.go b/cluster-autoscaler/vendor/github.com/civo/civogo/application.go index 695df97b18cd..c658a7abf845 100644 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/application.go +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/application.go @@ -66,8 +66,8 @@ type EnvVar struct { // ProcessInfo contains the information about the process obtained from Procfile type ProcessInfo struct { - ProcessType string `json:"process_type"` - ProcessCount int `json:"process_count"` + ProcessType string `json:"processType"` + ProcessCount int `json:"processCount"` } // ErrAppDomainNotFound is returned when the domain is not found @@ -192,64 +192,3 @@ func (c *Client) DeleteApplication(id string) (*SimpleResponse, error) { return c.DecodeSimpleResponse(resp) } - -// ListAppDomains lists all domains for an application -func (c *Client) ListAppDomains(id string) ([]string, error) { - resp, err := c.SendGetRequest(fmt.Sprintf("/v2/applications/%s/domains", id)) - if err != nil { - return nil, decodeError(err) - } - - appDomain := make([]string, 0) - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&appDomain); err != nil { - return nil, err - } - - return appDomain, nil -} - -//FindAppDomain finds an app domain inside an application by the domain name -func (c *Client) FindAppDomain(search, id string) (string, error) { - appDomains, err := c.ListAppDomains(id) - if err != nil { - return "", decodeError(err) - } - - for _, domain := range appDomains { - if domain == search { - return domain, nil - } - } - return "", ErrAppDomainNotFound -} - -//DeleteAppDomain deletes an app domain from an application -func (c *Client) DeleteAppDomain(domains []string, appID, domain string) (*SimpleResponse, error) { - if len(domains) == 0 { - err := fmt.Errorf("there is no domain to delete") - return nil, err - } - - url := fmt.Sprintf("/v2/applications/%s/domains/%s", appID, domain) - resp, err := c.SendDeleteRequest(url) - if err != nil { - return nil, decodeError(err) - } - - return c.DecodeSimpleResponse(resp) -} - -// GetAppConfig returns the config for an application -func (c *Client) GetAppConfig(id string) (*EnvVar, error) { - resp, err := c.SendGetRequest(fmt.Sprintf("/v2/applications/%s/config", id)) - if err != nil { - return nil, decodeError(err) - } - - appConfig := &EnvVar{} - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&appConfig); err != nil { - return nil, err - } - - return appConfig, nil -} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/application_size.go b/cluster-autoscaler/vendor/github.com/civo/civogo/application_size.go deleted file mode 100644 index ad762e5a03ed..000000000000 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/application_size.go +++ /dev/null @@ -1,70 +0,0 @@ -package civogo - -import ( - "bytes" - "encoding/json" - "fmt" - "strings" -) - -// ApplicationSize represents an available size for applications to launch -type ApplicationSize struct { - ID string `json:"id,omitempty"` - Name string `json:"name,omitempty"` - NiceName string `json:"nice_name,omitempty"` - CPUCores int `json:"cpu_cores,omitempty"` - RAMMegabytes int `json:"ram_mb,omitempty"` - DiskGigabytes int `json:"disk_gb,omitempty"` - TransferTerabytes int `json:"transfer_tb,omitempty"` - Description string `json:"description,omitempty"` - Selectable bool `json:"selectable,omitempty"` -} - -// ListApplicationSizes returns all availble sizes of applications -func (c *Client) ListApplicationSizes() ([]ApplicationSize, error) { - resp, err := c.SendGetRequest("/v2/applications/sizes") - if err != nil { - return nil, decodeError(err) - } - - sizes := make([]ApplicationSize, 0) - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&sizes); err != nil { - return nil, err - } - - return sizes, nil -} - -// FindApplicationSizes finds a application size name by either part of the ID or part of the name -func (c *Client) FindApplicationSizes(search string) (*ApplicationSize, error) { - appSize, err := c.ListApplicationSizes() - if err != nil { - return nil, decodeError(err) - } - - exactMatch := false - partialMatchesCount := 0 - result := ApplicationSize{} - - for _, value := range appSize { - if value.Name == search || value.ID == search { - exactMatch = true - result = value - } else if strings.Contains(value.Name, search) || strings.Contains(value.ID, search) { - if !exactMatch { - result = value - partialMatchesCount++ - } - } - } - - if exactMatch || partialMatchesCount == 1 { - return &result, nil - } else if partialMatchesCount > 1 { - err := fmt.Errorf("unable to find %s because there were multiple matches", search) - return nil, MultipleMatchesError.wrap(err) - } else { - err := fmt.Errorf("unable to find %s, zero matches", search) - return nil, ZeroMatchesError.wrap(err) - } -} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/fake_client.go b/cluster-autoscaler/vendor/github.com/civo/civogo/fake_client.go index 8bb6e9876fc2..cba23a0d9617 100644 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/fake_client.go +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/fake_client.go @@ -107,7 +107,7 @@ type Clienter interface { GetKubernetesClusterPool(cid, pid string) (*KubernetesPool, error) FindKubernetesClusterPool(cid, search string) (*KubernetesPool, error) DeleteKubernetesClusterPoolInstance(cid, pid, id string) (*SimpleResponse, error) - UpdateKubernetesClusterPool(cid, pid string, config *KubernetesClusterPoolConfig) (*KubernetesPool, error) + UpdateKubernetesClusterPool(cid, pid string, config *KubernetesClusterPoolUpdateConfig) (*KubernetesPool, error) // Networks GetDefaultNetwork() (*Network, error) @@ -1718,7 +1718,7 @@ func (c *FakeClient) DeleteKubernetesClusterPoolInstance(cid, pid, id string) (* } // UpdateKubernetesClusterPool implemented in a fake way for automated tests -func (c *FakeClient) UpdateKubernetesClusterPool(cid, pid string, config *KubernetesClusterPoolConfig) (*KubernetesPool, error) { +func (c *FakeClient) UpdateKubernetesClusterPool(cid, pid string, config *KubernetesClusterPoolUpdateConfig) (*KubernetesPool, error) { clusterFound := false poolFound := false diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/pool.go b/cluster-autoscaler/vendor/github.com/civo/civogo/pool.go index df247d868573..c8000c3cdf26 100644 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/pool.go +++ b/cluster-autoscaler/vendor/github.com/civo/civogo/pool.go @@ -7,6 +7,14 @@ import ( "strings" ) +//KubernetesClusterPoolUpdateConfig is used to create a new cluster pool +type KubernetesClusterPoolUpdateConfig struct { + ID string `json:"id,omitempty"` + Count int `json:"count,omitempty"` + Size string `json:"size,omitempty"` + Region string `json:"region,omitempty"` +} + // ListKubernetesClusterPools returns all the pools for a kubernetes cluster func (c *Client) ListKubernetesClusterPools(cid string) ([]KubernetesPool, error) { resp, err := c.SendGetRequest(fmt.Sprintf("/v2/kubernetes/clusters/%s/pools", cid)) @@ -82,7 +90,7 @@ func (c *Client) DeleteKubernetesClusterPoolInstance(cid, pid, id string) (*Simp } // UpdateKubernetesClusterPool updates a pool for a kubernetes cluster -func (c *Client) UpdateKubernetesClusterPool(cid, pid string, config *KubernetesClusterPoolConfig) (*KubernetesPool, error) { +func (c *Client) UpdateKubernetesClusterPool(cid, pid string, config *KubernetesClusterPoolUpdateConfig) (*KubernetesPool, error) { resp, err := c.SendPutRequest(fmt.Sprintf("/v2/kubernetes/clusters/%s/pools/%s", cid, pid), config) if err != nil { return nil, decodeError(err) diff --git a/cluster-autoscaler/vendor/modules.txt b/cluster-autoscaler/vendor/modules.txt index 5c457cd2afc5..7d091da4198e 100644 --- a/cluster-autoscaler/vendor/modules.txt +++ b/cluster-autoscaler/vendor/modules.txt @@ -161,7 +161,7 @@ github.com/cilium/ebpf/internal github.com/cilium/ebpf/internal/btf github.com/cilium/ebpf/internal/unix github.com/cilium/ebpf/link -# github.com/civo/civogo v0.2.77 +# github.com/civo/civogo v0.2.81 ## explicit github.com/civo/civogo github.com/civo/civogo/utils From 7f5b31b136adc83334f46c2aaebff2e3f68199e9 Mon Sep 17 00:00:00 2001 From: Vishal Anarase Date: Tue, 3 May 2022 20:42:37 +0530 Subject: [PATCH 04/11] Adding cloudprovider civo tests Signed-off-by: Vishal Anarse --- .../civo/civo_cloud_provider_test.go | 261 +++++++++++ .../cloudprovider/civo/civo_manager_test.go | 176 ++++++++ .../civo/civo_node_group_test.go | 407 ++++++++++++++++++ 3 files changed, 844 insertions(+) create mode 100644 cluster-autoscaler/cloudprovider/civo/civo_cloud_provider_test.go create mode 100644 cluster-autoscaler/cloudprovider/civo/civo_manager_test.go create mode 100644 cluster-autoscaler/cloudprovider/civo/civo_node_group_test.go diff --git a/cluster-autoscaler/cloudprovider/civo/civo_cloud_provider_test.go b/cluster-autoscaler/cloudprovider/civo/civo_cloud_provider_test.go new file mode 100644 index 000000000000..62884f87380c --- /dev/null +++ b/cluster-autoscaler/cloudprovider/civo/civo_cloud_provider_test.go @@ -0,0 +1,261 @@ +/* +Copyright 2022 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package civo + +import ( + "bytes" + "testing" + + "github.com/civo/civogo" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" + "github.com/stretchr/testify/require" + apiv1 "k8s.io/api/core/v1" + "k8s.io/autoscaler/cluster-autoscaler/cloudprovider" +) + +type civoClientMock struct { + mock.Mock +} + +func (m *civoClientMock) ListKubernetesClusterPools(clusterID string) ([]civogo.KubernetesPool, error) { + args := m.Called(clusterID) + return args.Get(0).([]civogo.KubernetesPool), args.Error(1) +} + +func (m *civoClientMock) UpdateKubernetesClusterPool(cid, pid string, config *civogo.KubernetesClusterPoolUpdateConfig) (*civogo.KubernetesPool, error) { + args := m.Called(cid, pid, config) + return args.Get(0).(*civogo.KubernetesPool), args.Error(1) +} + +func (m *civoClientMock) DeleteKubernetesClusterPoolInstance(clusterID, poolID, instanceID string) (*civogo.SimpleResponse, error) { + args := m.Called(clusterID, poolID, instanceID) + return args.Get(0).(*civogo.SimpleResponse), args.Error(1) +} + +func testCloudProvider(t *testing.T, client *civoClientMock) *civoCloudProvider { + cfg := `{"cluster_id": "123456", "api_key": "123-123-123", "api_url": "https://api.civo.com", "region": "test"}` + + nodeGroupSpecs := []string{"1:10:workers"} + nodeGroupDiscoveryOptions := cloudprovider.NodeGroupDiscoveryOptions{NodeGroupSpecs: nodeGroupSpecs} + manager, err := newManager(bytes.NewBufferString(cfg), nodeGroupDiscoveryOptions) + assert.NoError(t, err) + rl := &cloudprovider.ResourceLimiter{} + + // fill the test provider with some example + if client == nil { + client = &civoClientMock{} + + client.On("ListKubernetesClusterPools", manager.clusterID).Return( + []civogo.KubernetesPool{ + { + ID: "1", + Count: 2, + Size: "small", + InstanceNames: []string{"test-1", "test-2"}, + Instances: []civogo.KubernetesInstance{ + { + ID: "1", + Hostname: "test-1", + Status: "ACTIVE", + }, + { + ID: "2", + Hostname: "test-1", + Status: "ACTIVE", + }, + }, + }, + { + ID: "2", + Count: 2, + Size: "small", + InstanceNames: []string{"test-1", "test-2"}, + Instances: []civogo.KubernetesInstance{ + { + ID: "3", + Hostname: "test-3", + Status: "ACTIVE", + }, + { + ID: "4", + Hostname: "test-4", + Status: "BUILDING", + }, + }, + }, + }, + nil, + ).Once() + } + + manager.client = client + + provider, err := newCivoCloudProvider(manager, rl) + assert.NoError(t, err) + return provider +} + +func TestNewCivoCloudProvider(t *testing.T) { + t.Run("success", func(t *testing.T) { + _ = testCloudProvider(t, nil) + }) +} + +func TestCivoCloudProvider_Name(t *testing.T) { + provider := testCloudProvider(t, nil) + + t.Run("success", func(t *testing.T) { + name := provider.Name() + assert.Equal(t, cloudprovider.CivoProviderName, name, "provider name doesn't match") + }) +} + +func TestCivoCloudProvider_NodeGroups(t *testing.T) { + provider := testCloudProvider(t, nil) + + t.Run("success", func(t *testing.T) { + nodegroups := provider.NodeGroups() + assert.Equal(t, len(nodegroups), 2, "number of node groups does not match") + nodes, _ := nodegroups[0].Nodes() + assert.Equal(t, len(nodes), 2, "number of nodes in workers node group does not match") + + }) + + t.Run("zero groups", func(t *testing.T) { + provider.manager.nodeGroups = []*NodeGroup{} + nodes := provider.NodeGroups() + assert.Equal(t, len(nodes), 0, "number of nodes do not match") + }) +} + +func TestCivoCloudProvider_NodeGroupForNode(t *testing.T) { + cfg := `{"cluster_id": "123456", "api_key": "123-123-123", "api_url": "https://api.civo.com", "region": "test"}` + + nodeGroupSpecs := []string{"1:10:workers"} + nodeGroupDiscoveryOptions := cloudprovider.NodeGroupDiscoveryOptions{NodeGroupSpecs: nodeGroupSpecs} + manager, err := newManager(bytes.NewBufferString(cfg), nodeGroupDiscoveryOptions) + assert.NoError(t, err) + + t.Run("success", func(t *testing.T) { + client := &civoClientMock{} + client.On("ListKubernetesClusterPools", manager.clusterID).Return( + []civogo.KubernetesPool{ + { + ID: "1", + Count: 2, + Instances: []civogo.KubernetesInstance{ + { + ID: "11", + Hostname: "kube-node-11", + Status: "ACTIVE", + }, + { + ID: "22", + Hostname: "kube-node-22", + Status: "ACTIVE", + }, + }, + }, + { + ID: "2", + Count: 2, + Instances: []civogo.KubernetesInstance{ + { + ID: "111", + Hostname: "kube-node-111", + Status: "ACTIVE", + }, + { + ID: "222", + Hostname: "kube-node-222", + Status: "ACTIVE", + }, + }, + }, + }, + nil, + ).Once() + + provider := testCloudProvider(t, client) + + // let's get the nodeGroup for the node with ID 11 + node := &apiv1.Node{ + Spec: apiv1.NodeSpec{ + ProviderID: "civo://11", + }, + } + + nodeGroup, err := provider.NodeGroupForNode(node) + require.NoError(t, err) + require.NotNil(t, nodeGroup) + require.Equal(t, nodeGroup.Id(), "1", "node group ID does not match") + }) + + t.Run("node does not exist", func(t *testing.T) { + client := &civoClientMock{} + client.On("ListKubernetesClusterPools", manager.clusterID).Return( + []civogo.KubernetesPool{ + { + ID: "1", + Count: 2, + Instances: []civogo.KubernetesInstance{ + { + ID: "11", + Hostname: "kube-node-11", + Status: "ACTIVE", + }, + { + ID: "22", + Hostname: "kube-node-22", + Status: "ACTIVE", + }, + }, + }, + { + ID: "2", + Count: 2, + Instances: []civogo.KubernetesInstance{ + { + ID: "111", + Hostname: "kube-node-111", + Status: "ACTIVE", + }, + { + ID: "222", + Hostname: "kube-node-222", + Status: "ACTIVE", + }, + }, + }, + }, + nil, + ).Once() + + provider := testCloudProvider(t, client) + + node := &apiv1.Node{ + Spec: apiv1.NodeSpec{ + ProviderID: "civo://non-existing-node", + }, + } + + nodeGroup, err := provider.NodeGroupForNode(node) + require.NoError(t, err) + require.Nil(t, nodeGroup) + }) +} diff --git a/cluster-autoscaler/cloudprovider/civo/civo_manager_test.go b/cluster-autoscaler/cloudprovider/civo/civo_manager_test.go new file mode 100644 index 000000000000..6704788d6f73 --- /dev/null +++ b/cluster-autoscaler/cloudprovider/civo/civo_manager_test.go @@ -0,0 +1,176 @@ +/* +Copyright 2022 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package civo + +import ( + "bytes" + "errors" + "testing" + + "k8s.io/autoscaler/cluster-autoscaler/cloudprovider" + + "github.com/civo/civogo" + "github.com/stretchr/testify/assert" +) + +func TestNewManager(t *testing.T) { + t.Run("success", func(t *testing.T) { + cfg := `{"cluster_id": "123456", "api_key": "123-123-123", "api_url": "https://api.civo.com", "region": "test"}` + nodeGroupSpecs := []string{"1:10:workers"} + nodeGroupDiscoveryOptions := cloudprovider.NodeGroupDiscoveryOptions{NodeGroupSpecs: nodeGroupSpecs} + manager, err := newManager(bytes.NewBufferString(cfg), nodeGroupDiscoveryOptions) + assert.NoError(t, err) + assert.Equal(t, "123456", manager.clusterID, "cluster ID does not match") + assert.Equal(t, nodeGroupDiscoveryOptions, manager.discoveryOpts, "node group discovery options do not match") + }) + + t.Run("empty api_key", func(t *testing.T) { + cfg := `{"cluster_id": "123456", "api_key": "", "api_url": "https://api.civo.com", "region": "test"}` + nodeGroupSpecs := []string{"1:10:workers"} + nodeGroupDiscoveryOptions := cloudprovider.NodeGroupDiscoveryOptions{NodeGroupSpecs: nodeGroupSpecs} + _, err := newManager(bytes.NewBufferString(cfg), nodeGroupDiscoveryOptions) + assert.EqualError(t, err, errors.New("civo API Key was not provided").Error()) + }) + + t.Run("empty cluster ID", func(t *testing.T) { + cfg := `{"cluster_id": "", "api_key": "123-123-123", "api_url": "https://api.civo.com", "region": "test"}` + nodeGroupSpecs := []string{"1:10:workers"} + nodeGroupDiscoveryOptions := cloudprovider.NodeGroupDiscoveryOptions{NodeGroupSpecs: nodeGroupSpecs} + _, err := newManager(bytes.NewBufferString(cfg), nodeGroupDiscoveryOptions) + assert.EqualError(t, err, errors.New("cluster ID was not provided").Error()) + }) +} + +func TestCivoManager_Refresh(t *testing.T) { + t.Run("success", func(t *testing.T) { + cfg := `{"cluster_id": "123456", "api_key": "123-123-123", "api_url": "https://api.civo.com", "region": "test"}` + nodeGroupSpecs := []string{"1:10:workers"} + nodeGroupDiscoveryOptions := cloudprovider.NodeGroupDiscoveryOptions{NodeGroupSpecs: nodeGroupSpecs} + manager, err := newManager(bytes.NewBufferString(cfg), nodeGroupDiscoveryOptions) + assert.NoError(t, err) + + client := &civoClientMock{} + + client.On("ListKubernetesClusterPools", manager.clusterID).Return( + []civogo.KubernetesPool{ + { + ID: "1", + Count: 2, + Size: "small", + InstanceNames: []string{"test-1", "test-2"}, + Instances: []civogo.KubernetesInstance{ + { + ID: "1", + Hostname: "test-1", + Status: "ACTIVE", + }, + { + ID: "2", + Hostname: "test-1", + Status: "ACTIVE", + }, + }, + }, + { + ID: "2", + Count: 2, + Size: "small", + InstanceNames: []string{"test-1", "test-2"}, + Instances: []civogo.KubernetesInstance{ + { + ID: "3", + Hostname: "test-3", + Status: "ACTIVE", + }, + { + ID: "4", + Hostname: "test-4", + Status: "BUILDING", + }, + }, + }, + }, + nil, + ).Once() + + manager.client = client + err = manager.Refresh() + assert.NoError(t, err) + assert.Equal(t, 2, len(manager.nodeGroups), "number of node groups do not match") + }) +} + +func TestCivoManager_RefreshWithNodeSpec(t *testing.T) { + t.Run("success", func(t *testing.T) { + cfg := `{"cluster_id": "123456", "api_key": "123-123-123", "api_url": "https://api.civo.com", "region": "test"}` + nodeGroupSpecs := []string{"1:10:workers"} + nodeGroupDiscoveryOptions := cloudprovider.NodeGroupDiscoveryOptions{NodeGroupSpecs: nodeGroupSpecs} + manager, err := newManager(bytes.NewBufferString(cfg), nodeGroupDiscoveryOptions) + assert.NoError(t, err) + + client := &civoClientMock{} + + client.On("ListKubernetesClusterPools", manager.clusterID).Return( + []civogo.KubernetesPool{ + { + ID: "1", + Count: 2, + Size: "small", + InstanceNames: []string{"test-1", "test-2"}, + Instances: []civogo.KubernetesInstance{ + { + ID: "1", + Hostname: "test-1", + Status: "ACTIVE", + }, + { + ID: "2", + Hostname: "test-1", + Status: "ACTIVE", + }, + }, + }, + { + ID: "2", + Count: 2, + Size: "small", + InstanceNames: []string{"test-1", "test-2"}, + Instances: []civogo.KubernetesInstance{ + { + ID: "3", + Hostname: "test-3", + Status: "ACTIVE", + }, + { + ID: "4", + Hostname: "test-4", + Status: "BUILDING", + }, + }, + }, + }, + nil, + ).Once() + + manager.client = client + err = manager.Refresh() + assert.NoError(t, err) + assert.Equal(t, 2, len(manager.nodeGroups), "number of node groups do not match") + assert.Equal(t, 1, manager.nodeGroups[0].minSize, "minimum node for node group does not match") + assert.Equal(t, 10, manager.nodeGroups[0].maxSize, "maximum node for node group does not match") + }) +} diff --git a/cluster-autoscaler/cloudprovider/civo/civo_node_group_test.go b/cluster-autoscaler/cloudprovider/civo/civo_node_group_test.go new file mode 100644 index 000000000000..e853519d5bfe --- /dev/null +++ b/cluster-autoscaler/cloudprovider/civo/civo_node_group_test.go @@ -0,0 +1,407 @@ +/* +Copyright 2022 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package civo + +import ( + "errors" + "fmt" + "testing" + + "github.com/civo/civogo" + "github.com/stretchr/testify/assert" + apiv1 "k8s.io/api/core/v1" + "k8s.io/autoscaler/cluster-autoscaler/cloudprovider" +) + +func TestNodeGroup_TargetSize(t *testing.T) { + t.Run("success", func(t *testing.T) { + numberOfNodes := 3 + + client := &civoClientMock{} + ng := testNodeGroup(client, &civogo.KubernetesPool{ + Count: numberOfNodes, + }, 1, 10) + + size, err := ng.TargetSize() + assert.NoError(t, err) + assert.Equal(t, numberOfNodes, size, "target size is not correct") + }) +} + +func TestNodeGroup_IncreaseSize(t *testing.T) { + t.Run("success", func(t *testing.T) { + numberOfNodes := 3 + client := &civoClientMock{} + ng := testNodeGroup(client, &civogo.KubernetesPool{ + Count: numberOfNodes, + }, 1, 10) + + delta := 2 + + newCount := numberOfNodes + delta + client.On("UpdateKubernetesClusterPool", + ng.clusterID, + ng.id, + &civogo.KubernetesClusterPoolConfig{ + Count: newCount, + }, + ).Return( + &civogo.KubernetesPool{Count: newCount}, + nil, + ).Once() + + err := ng.IncreaseSize(delta) + assert.NoError(t, err) + }) + + t.Run("successful increase to maximum", func(t *testing.T) { + // Increase from 2 nodes to 3 (but 2 worker nodes which is the max) + numberOfNodes := 2 + maxNodes := 3 + + client := &civoClientMock{} + ng := testNodeGroup(client, &civogo.KubernetesPool{ + Count: numberOfNodes, + }, 1, maxNodes) + + delta := 1 + + newCount := numberOfNodes + delta + client.On("UpdateKubernetesClusterPool", + ng.clusterID, + ng.id, + &civogo.KubernetesClusterPoolConfig{ + Count: newCount, + }, + ).Return( + &civogo.KubernetesPool{Count: newCount}, + nil, + ).Once() + + err := ng.IncreaseSize(delta) + assert.NoError(t, err) + }) + + t.Run("negative increase", func(t *testing.T) { + numberOfNodes := 3 + client := &civoClientMock{} + ng := testNodeGroup(client, &civogo.KubernetesPool{ + Count: numberOfNodes, + }, 1, 10) + + delta := -1 + err := ng.IncreaseSize(delta) + exp := fmt.Errorf("delta must be positive, have: %d", delta) + assert.EqualError(t, err, exp.Error(), "size increase must be positive") + }) + + t.Run("zero increase", func(t *testing.T) { + numberOfNodes := 3 + client := &civoClientMock{} + ng := testNodeGroup(client, &civogo.KubernetesPool{ + Count: numberOfNodes, + }, 1, 10) + + delta := 0 + err := ng.IncreaseSize(delta) + exp := fmt.Errorf("delta must be positive, have: %d", delta) + assert.EqualError(t, err, exp.Error(), "size increase must be positive") + }) + + t.Run("large increase above maximum", func(t *testing.T) { + numberOfNodes := 95 + maxNodes := 100 + delta := 10 + client := &civoClientMock{} + ng := testNodeGroup(client, &civogo.KubernetesPool{ + Count: numberOfNodes, + }, 1, maxNodes) + + exp := fmt.Errorf("size increase is too large. current: %d desired: %d max: %d", + numberOfNodes, numberOfNodes+delta, ng.MaxSize()) + err := ng.IncreaseSize(delta) + assert.EqualError(t, err, exp.Error(), "size increase is too large") + }) +} + +func TestNodeGroup_DecreaseTargetSize(t *testing.T) { + t.Run("success", func(t *testing.T) { + numberOfNodes := 5 + + client := &civoClientMock{} + ng := testNodeGroup(client, &civogo.KubernetesPool{ + Count: numberOfNodes, + }, 1, 10) + + delta := -2 + + newCount := numberOfNodes + delta + client.On("UpdateKubernetesClusterPool", + ng.clusterID, + ng.id, + &civogo.KubernetesClusterPoolConfig{ + Count: newCount, + }, + ).Return( + &civogo.KubernetesPool{Count: newCount}, + nil, + ).Once() + + err := ng.DecreaseTargetSize(delta) + assert.NoError(t, err) + }) + + t.Run("positive decrease", func(t *testing.T) { + numberOfNodes := 5 + client := &civoClientMock{} + ng := testNodeGroup(client, &civogo.KubernetesPool{ + Count: numberOfNodes, + }, 1, 10) + + delta := 1 + err := ng.DecreaseTargetSize(delta) + + exp := fmt.Errorf("delta must be negative, have: %d", delta) + assert.EqualError(t, err, exp.Error(), "size decrease must be negative") + }) + + t.Run("zero decrease", func(t *testing.T) { + numberOfNodes := 5 + client := &civoClientMock{} + ng := testNodeGroup(client, &civogo.KubernetesPool{ + Count: numberOfNodes, + }, 1, 10) + + delta := 0 + exp := fmt.Errorf("delta must be negative, have: %d", delta) + + err := ng.DecreaseTargetSize(delta) + assert.EqualError(t, err, exp.Error(), "size decrease must be negative") + }) + + t.Run("small decrease below minimum", func(t *testing.T) { + delta := -2 + numberOfNodes := 2 + client := &civoClientMock{} + ng := testNodeGroup(client, &civogo.KubernetesPool{ + Count: numberOfNodes, + }, 1, 5) + + exp := fmt.Errorf("size decrease is too small. current: %d desired: %d min: %d", + numberOfNodes, numberOfNodes+delta, ng.MinSize()) + err := ng.DecreaseTargetSize(delta) + assert.EqualError(t, err, exp.Error(), "size decrease is too small") + }) +} + +func TestNodeGroup_DeleteNodes(t *testing.T) { + t.Run("success", func(t *testing.T) { + client := &civoClientMock{} + ng := testNodeGroup(client, &civogo.KubernetesPool{ + Count: 3, + }, 1, 10) + + nodes := []*apiv1.Node{ + {Spec: apiv1.NodeSpec{ProviderID: "civo://1"}}, + {Spec: apiv1.NodeSpec{ProviderID: "civo://2"}}, + {Spec: apiv1.NodeSpec{ProviderID: "civo://3"}}, + } + + // this should be called three times (the number of nodes) + client.On("DeleteKubernetesClusterPoolInstance", + ng.clusterID, + ng.id, + "1", + ).Return( + &civogo.SimpleResponse{Result: "success"}, + nil, + ).Once() + client.On("DeleteKubernetesClusterPoolInstance", + ng.clusterID, + ng.id, + "2", + ).Return( + &civogo.SimpleResponse{Result: "success"}, + nil, + ).Once() + client.On("DeleteKubernetesClusterPoolInstance", + ng.clusterID, + ng.id, + "3", + ).Return( + &civogo.SimpleResponse{Result: "success"}, + nil, + ).Once() + + err := ng.DeleteNodes(nodes) + assert.NoError(t, err) + }) + + t.Run("client deleting node fails", func(t *testing.T) { + client := &civoClientMock{} + ng := testNodeGroup(client, &civogo.KubernetesPool{ + Count: 3, + }, 1, 10) + + nodes := []*apiv1.Node{ + {Spec: apiv1.NodeSpec{ProviderID: "civo://1"}}, + {Spec: apiv1.NodeSpec{ProviderID: "civo://2"}}, + {Spec: apiv1.NodeSpec{ProviderID: "civo://3"}}, + } + + // client is called twice, first run is successfully but the second one + // fails with a random error. In this case DeleteNodes() should return + // immediately. + client.On("DeleteKubernetesClusterPoolInstance", + ng.clusterID, + ng.id, + "1", + ).Return( + &civogo.SimpleResponse{Result: "success"}, + nil, + ).Once() + client.On("DeleteKubernetesClusterPoolInstance", + ng.clusterID, + ng.id, + "2", + ).Return( + &civogo.SimpleResponse{}, + errors.New("random error"), + ).Once() + + err := ng.DeleteNodes(nodes) + assert.Error(t, err) + }) +} + +func TestNodeGroup_Nodes(t *testing.T) { + t.Run("success", func(t *testing.T) { + client := &civoClientMock{} + ng := testNodeGroup(client, &civogo.KubernetesPool{ + ID: "1", + Count: 5, + Instances: []civogo.KubernetesInstance{ + { + ID: "1", + Hostname: "kube-node-1", + Status: "ACTIVE", + }, + { + ID: "2", + Hostname: "kube-node-2", + Status: "BUILDING", + }, + { + ID: "3", + Hostname: "kube-node-3", + Status: "DELETING", + }, + { + ID: "4", + Hostname: "kube-node-4", + Status: "BANANAS", + }, + { + ID: "5", + Hostname: "kube-node-5", + }, + }}, 1, 10) + + exp := []cloudprovider.Instance{ + { + Id: "civo://1", + Status: &cloudprovider.InstanceStatus{ + State: cloudprovider.InstanceRunning, + }, + }, + { + Id: "civo://2", + Status: &cloudprovider.InstanceStatus{ + State: cloudprovider.InstanceCreating, + }, + }, + { + Id: "civo://3", + Status: &cloudprovider.InstanceStatus{ + State: cloudprovider.InstanceDeleting, + }, + }, + { + Id: "civo://4", + Status: &cloudprovider.InstanceStatus{ + ErrorInfo: &cloudprovider.InstanceErrorInfo{ + ErrorClass: cloudprovider.OtherErrorClass, + ErrorCode: "no-code-civo", + ErrorMessage: "BANANAS", + }, + }, + }, + { + Id: "civo://5", + }, + } + + nodes, err := ng.Nodes() + assert.NoError(t, err) + assert.Equal(t, exp, nodes, "nodes do not match") + }) + + t.Run("failure (nil node pool)", func(t *testing.T) { + client := &civoClientMock{} + ng := testNodeGroup(client, nil, 1, 10) + + _, err := ng.Nodes() + assert.Error(t, err, "Nodes() should return an error") + }) +} + +func TestNodeGroup_Debug(t *testing.T) { + t.Run("success", func(t *testing.T) { + client := &civoClientMock{} + ng := testNodeGroup(client, &civogo.KubernetesPool{Count: 2}, 1, 200) + d := ng.Debug() + exp := "cluster ID: 1 (min:1 max:200)" + assert.Equal(t, exp, d, "debug string do not match") + }) +} + +func TestNodeGroup_Exist(t *testing.T) { + t.Run("success", func(t *testing.T) { + client := &civoClientMock{} + ng := testNodeGroup(client, &civogo.KubernetesPool{Count: 3}, 1, 200) + exist := ng.Exist() + assert.Equal(t, true, exist, "node group should exist") + }) + + t.Run("failure", func(t *testing.T) { + client := &civoClientMock{} + ng := testNodeGroup(client, nil, 1, 200) + exist := ng.Exist() + assert.Equal(t, false, exist, "node group should not exist") + }) +} + +func testNodeGroup(client nodeGroupClient, np *civogo.KubernetesPool, min int, max int) *NodeGroup { + return &NodeGroup{ + id: "1", + clusterID: "1", + client: client, + nodePool: np, + minSize: min, + maxSize: max, + } +} From 6d67fe5cf46974d36fbbcc911f59efbfc7af91a2 Mon Sep 17 00:00:00 2001 From: Vishal Anarase Date: Wed, 4 May 2022 16:47:03 +0530 Subject: [PATCH 05/11] Update README.md and example secret Signed-off-by: Vishal Anarse --- cluster-autoscaler/cloudprovider/civo/README.md | 7 ++++--- .../civo/examples/cluster-autoscaler-standard.yaml | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/cluster-autoscaler/cloudprovider/civo/README.md b/cluster-autoscaler/cloudprovider/civo/README.md index 8325d0cbee3c..120592abb919 100644 --- a/cluster-autoscaler/cloudprovider/civo/README.md +++ b/cluster-autoscaler/cloudprovider/civo/README.md @@ -8,16 +8,17 @@ simple. You need to set: - Your Civo Cloud API Key - The Kubernetes Cluster's ID (not the name) +- The region of the cluster - The minimum and maximum number of **worker** nodes you want (the master is excluded) See the [cluster-autoscaler-standard.yaml](examples/cluster-autoscaler-standard.yaml) example configuration, but to summarise you should set a `nodes` startup parameter for cluster autoscaler to specify a node group called `workers` e.g. `--nodes=1:10:workers`. -The remaining parameters can be set via environment variables (`CIVO_API_KEY` and `CIVO_CLUSTER_ID`) as in the +The remaining parameters can be set via environment variables (`CIVO_API_KEY`, `CIVO_CLUSTER_ID` and `CIVO_REGION`) as in the example YAML. -It is also possible to get these parameters through a YAML or JSON file mounted into the container +It is also possible to get these parameters through a YAML file mounted into the container (for example via a Kubernetes Secret). The path configured with a startup parameter e.g. -`--cloud-config=/etc/kubernetes/cloud.config`. In this case the YAML/JSON keys are `api_key` and `cluster_id`. +`--cloud-config=/etc/kubernetes/cloud.config`. In this case the YAML keys are `api_url`, `api_key`, `cluster_id` and `region`. diff --git a/cluster-autoscaler/cloudprovider/civo/examples/cluster-autoscaler-standard.yaml b/cluster-autoscaler/cloudprovider/civo/examples/cluster-autoscaler-standard.yaml index 12c41ec19781..45a165f6227b 100644 --- a/cluster-autoscaler/cloudprovider/civo/examples/cluster-autoscaler-standard.yaml +++ b/cluster-autoscaler/cloudprovider/civo/examples/cluster-autoscaler-standard.yaml @@ -190,7 +190,7 @@ metadata: app: cluster-autoscaler type: Opaque stringData: - api-url: "http://6e1f-31-24-105-13.ngrok.io" + api-url: "http://api.civo.com" api-key: "CJoNKBnMqGSFPma1e8tSOZm9DBsKQGKUlcVfhCBiGU2kWMWnam" cluster-id: "43fd01e1-d063-4c32-8b35-0c94be18caac" region: "DEV" From 9141c5627a089221c53f3f79d6c27e07965aaabb Mon Sep 17 00:00:00 2001 From: Vishal Anarase Date: Wed, 4 May 2022 19:53:39 +0530 Subject: [PATCH 06/11] Fix linting errors Signed-off-by: Vishal Anarse --- cluster-autoscaler/cloudprovider/civo/civo_manager.go | 1 + cluster-autoscaler/cloudprovider/civo/civo_node_group.go | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/cluster-autoscaler/cloudprovider/civo/civo_manager.go b/cluster-autoscaler/cloudprovider/civo/civo_manager.go index 04d0ec5a2c4f..7c7445be0d2f 100644 --- a/cluster-autoscaler/cloudprovider/civo/civo_manager.go +++ b/cluster-autoscaler/cloudprovider/civo/civo_manager.go @@ -32,6 +32,7 @@ import ( ) var ( + // Region is the region where the cluster is located. Region string ) diff --git a/cluster-autoscaler/cloudprovider/civo/civo_node_group.go b/cluster-autoscaler/cloudprovider/civo/civo_node_group.go index 3f5723365755..598ea53972a2 100644 --- a/cluster-autoscaler/cloudprovider/civo/civo_node_group.go +++ b/cluster-autoscaler/cloudprovider/civo/civo_node_group.go @@ -52,6 +52,7 @@ func (n *NodeGroup) MinSize() int { return n.minSize } +// GetOptions returns the options used to create this node group. func (n *NodeGroup) GetOptions(autoscaler.NodeGroupAutoscalingOptions) (*autoscaler.NodeGroupAutoscalingOptions, error) { return n.getOptions, nil } @@ -169,7 +170,6 @@ func (n *NodeGroup) Debug() string { // Nodes returns a list of all nodes that belong to this node group. It is // required that Instance objects returned by this method have Id field set. // Other fields are optional. - func (n *NodeGroup) Nodes() ([]cloudprovider.Instance, error) { if n.nodePool == nil { return nil, errors.New("node pool instance is not created") From 6a3a722f95dbfe6874f3ed9a77fdda3677170af8 Mon Sep 17 00:00:00 2001 From: Vishal Anarse Date: Mon, 6 Jun 2022 12:13:18 +0530 Subject: [PATCH 07/11] Update owners Signed-off-by: Vishal Anarse --- cluster-autoscaler/cloudprovider/civo/OWNERS | 2 -- 1 file changed, 2 deletions(-) diff --git a/cluster-autoscaler/cloudprovider/civo/OWNERS b/cluster-autoscaler/cloudprovider/civo/OWNERS index 521df0e8d518..a01564959ff1 100644 --- a/cluster-autoscaler/cloudprovider/civo/OWNERS +++ b/cluster-autoscaler/cloudprovider/civo/OWNERS @@ -1,6 +1,4 @@ approvers: -- cablespaghetti - vishalanarase reviewers: -- cablespaghetti - vishalanarase From 2c75d820d5ceebc041275c64028256034d2b28dd Mon Sep 17 00:00:00 2001 From: Vishal Anarse Date: Mon, 6 Jun 2022 12:21:19 +0530 Subject: [PATCH 08/11] Update vendor Signed-off-by: Vishal Anarse --- .../vendor/sigs.k8s.io/cloud-provider-azure/pkg/provider/doc.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cluster-autoscaler/vendor/sigs.k8s.io/cloud-provider-azure/pkg/provider/doc.go b/cluster-autoscaler/vendor/sigs.k8s.io/cloud-provider-azure/pkg/provider/doc.go index 26587698b0cb..fb46d8c807f6 100644 --- a/cluster-autoscaler/vendor/sigs.k8s.io/cloud-provider-azure/pkg/provider/doc.go +++ b/cluster-autoscaler/vendor/sigs.k8s.io/cloud-provider-azure/pkg/provider/doc.go @@ -16,4 +16,4 @@ limitations under the License. // Package provider is an implementation of CloudProvider Interface, LoadBalancer // and Instances for Azure. -package provider // import "sigs.k8s.io/cloud-provider-azure/pkg/provider +package provider // import "sigs.k8s.io/cloud-provider-azure/pkg/provider" From b026bd9c0bc019de8f3285a6484b6f28dd7cd180 Mon Sep 17 00:00:00 2001 From: Vishal Anarse Date: Mon, 6 Jun 2022 14:10:55 +0530 Subject: [PATCH 09/11] Fix node group tests Signed-off-by: Vishal Anarse --- .../cloudprovider/civo/civo_node_group_test.go | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/cluster-autoscaler/cloudprovider/civo/civo_node_group_test.go b/cluster-autoscaler/cloudprovider/civo/civo_node_group_test.go index e853519d5bfe..119357571993 100644 --- a/cluster-autoscaler/cloudprovider/civo/civo_node_group_test.go +++ b/cluster-autoscaler/cloudprovider/civo/civo_node_group_test.go @@ -56,8 +56,9 @@ func TestNodeGroup_IncreaseSize(t *testing.T) { client.On("UpdateKubernetesClusterPool", ng.clusterID, ng.id, - &civogo.KubernetesClusterPoolConfig{ - Count: newCount, + &civogo.KubernetesClusterPoolUpdateConfig{ + Count: newCount, + Region: "test", }, ).Return( &civogo.KubernetesPool{Count: newCount}, @@ -84,8 +85,9 @@ func TestNodeGroup_IncreaseSize(t *testing.T) { client.On("UpdateKubernetesClusterPool", ng.clusterID, ng.id, - &civogo.KubernetesClusterPoolConfig{ - Count: newCount, + &civogo.KubernetesClusterPoolUpdateConfig{ + Count: newCount, + Region: "test", }, ).Return( &civogo.KubernetesPool{Count: newCount}, @@ -153,8 +155,9 @@ func TestNodeGroup_DecreaseTargetSize(t *testing.T) { client.On("UpdateKubernetesClusterPool", ng.clusterID, ng.id, - &civogo.KubernetesClusterPoolConfig{ - Count: newCount, + &civogo.KubernetesClusterPoolUpdateConfig{ + Count: newCount, + Region: "test", }, ).Return( &civogo.KubernetesPool{Count: newCount}, @@ -396,6 +399,7 @@ func TestNodeGroup_Exist(t *testing.T) { } func testNodeGroup(client nodeGroupClient, np *civogo.KubernetesPool, min int, max int) *NodeGroup { + Region = "test" return &NodeGroup{ id: "1", clusterID: "1", From bd70028b5d0a271523eb49f21455404a7d2e4556 Mon Sep 17 00:00:00 2001 From: Vishal Anarse Date: Wed, 8 Jun 2022 19:02:13 +0530 Subject: [PATCH 10/11] Remove civocloud dependencies from vendor Signed-off-by: Vishal Anarse --- cluster-autoscaler/cloudprovider/civo/OWNERS | 14 +- .../civo/civo-cloud-sdk-go}/client.go | 7 +- .../civo/civo-cloud-sdk-go}/disk_image.go | 2 +- .../civo/civo-cloud-sdk-go}/errors.go | 2 +- .../civo/civo-cloud-sdk-go}/instance.go | 4 +- .../civo/civo-cloud-sdk-go}/kubernetes.go | 2 +- .../civo/civo-cloud-sdk-go}/network.go | 2 +- .../civo/civo-cloud-sdk-go}/pool.go | 2 +- .../civo/civo-cloud-sdk-go}/utils/random.go | 0 .../civo/civo_cloud_provider_test.go | 32 +- .../cloudprovider/civo/civo_manager.go | 10 +- .../cloudprovider/civo/civo_manager_test.go | 14 +- .../cloudprovider/civo/civo_node_group.go | 12 +- .../civo/civo_node_group_test.go | 58 +- .../examples/cluster-autoscaler-standard.yaml | 2 +- cluster-autoscaler/go.mod | 1 - cluster-autoscaler/go.sum | 2 - .../github.com/civo/civogo/.editorconfig | 21 - .../vendor/github.com/civo/civogo/.gitignore | 4 - .../github.com/civo/civogo/CHANGELOG.md | 1341 --- .../vendor/github.com/civo/civogo/CODEOWNERS | 3 - .../github.com/civo/civogo/CONTRIBUTING.md | 29 - .../vendor/github.com/civo/civogo/LICENSE | 21 - .../vendor/github.com/civo/civogo/README.md | 163 - .../vendor/github.com/civo/civogo/account.go | 43 - .../github.com/civo/civogo/application.go | 194 - .../github.com/civo/civogo/changelog.yml | 9970 ----------------- .../vendor/github.com/civo/civogo/charge.go | 36 - .../vendor/github.com/civo/civogo/dns.go | 281 - .../github.com/civo/civogo/fake_client.go | 1750 --- .../vendor/github.com/civo/civogo/firewall.go | 222 - .../vendor/github.com/civo/civogo/go.mod | 5 - .../vendor/github.com/civo/civogo/go.sum | 98 - .../github.com/civo/civogo/instance_size.go | 70 - .../github.com/civo/civogo/loadbalancer.go | 176 - .../github.com/civo/civogo/organisation.go | 115 - .../github.com/civo/civogo/permission.go | 28 - .../vendor/github.com/civo/civogo/quota.go | 54 - .../vendor/github.com/civo/civogo/region.go | 96 - .../vendor/github.com/civo/civogo/role.go | 58 - .../civo/civogo/snapshot.go.disabled | 107 - .../civo/civogo/snapshot_test.go.disabled | 180 - .../vendor/github.com/civo/civogo/ssh_key.go | 104 - .../vendor/github.com/civo/civogo/team.go | 171 - .../civo/civogo/template.go.disabled | 132 - .../civo/civogo/template_test.go.disabled | 158 - .../vendor/github.com/civo/civogo/user.go | 53 - .../vendor/github.com/civo/civogo/volume.go | 177 - .../vendor/github.com/civo/civogo/webhook.go | 115 - cluster-autoscaler/vendor/modules.txt | 4 - 50 files changed, 83 insertions(+), 16062 deletions(-) rename cluster-autoscaler/{vendor/github.com/civo/civogo => cloudprovider/civo/civo-cloud-sdk-go}/client.go (98%) rename cluster-autoscaler/{vendor/github.com/civo/civogo => cloudprovider/civo/civo-cloud-sdk-go}/disk_image.go (99%) rename cluster-autoscaler/{vendor/github.com/civo/civogo => cloudprovider/civo/civo-cloud-sdk-go}/errors.go (99%) rename cluster-autoscaler/{vendor/github.com/civo/civogo => cloudprovider/civo/civo-cloud-sdk-go}/instance.go (99%) rename cluster-autoscaler/{vendor/github.com/civo/civogo => cloudprovider/civo/civo-cloud-sdk-go}/kubernetes.go (99%) rename cluster-autoscaler/{vendor/github.com/civo/civogo => cloudprovider/civo/civo-cloud-sdk-go}/network.go (99%) rename cluster-autoscaler/{vendor/github.com/civo/civogo => cloudprovider/civo/civo-cloud-sdk-go}/pool.go (99%) rename cluster-autoscaler/{vendor/github.com/civo/civogo => cloudprovider/civo/civo-cloud-sdk-go}/utils/random.go (100%) delete mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/.editorconfig delete mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/.gitignore delete mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/CHANGELOG.md delete mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/CODEOWNERS delete mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/CONTRIBUTING.md delete mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/LICENSE delete mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/README.md delete mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/account.go delete mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/application.go delete mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/changelog.yml delete mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/charge.go delete mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/dns.go delete mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/fake_client.go delete mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/firewall.go delete mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/go.mod delete mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/go.sum delete mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/instance_size.go delete mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/loadbalancer.go delete mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/organisation.go delete mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/permission.go delete mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/quota.go delete mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/region.go delete mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/role.go delete mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/snapshot.go.disabled delete mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/snapshot_test.go.disabled delete mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/ssh_key.go delete mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/team.go delete mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/template.go.disabled delete mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/template_test.go.disabled delete mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/user.go delete mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/volume.go delete mode 100644 cluster-autoscaler/vendor/github.com/civo/civogo/webhook.go diff --git a/cluster-autoscaler/cloudprovider/civo/OWNERS b/cluster-autoscaler/cloudprovider/civo/OWNERS index a01564959ff1..0cc8aeb9b18f 100644 --- a/cluster-autoscaler/cloudprovider/civo/OWNERS +++ b/cluster-autoscaler/cloudprovider/civo/OWNERS @@ -1,4 +1,10 @@ -approvers: -- vishalanarase -reviewers: -- vishalanarase +#approvers: +#- DMajrekar +#- birdiesanders +#- vishalanarase +#- RealHarshThakur +#reviewers: +#- DMajrekar +#- birdiesanders +#- vishalanarase +#- RealHarshThakur diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/client.go b/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/client.go similarity index 98% rename from cluster-autoscaler/vendor/github.com/civo/civogo/client.go rename to cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/client.go index 4fad870897c9..dbba8a61de5e 100644 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/client.go +++ b/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/client.go @@ -1,4 +1,4 @@ -package civogo +package civocloud import ( "bytes" @@ -13,9 +13,6 @@ import ( "strings" ) -// Version represents the version of the civogo lib -const Version = "0.2.21" - // Client is the means of connecting to the Civo API service type Client struct { BaseURL *url.URL @@ -70,7 +67,7 @@ func NewClientWithURL(apiKey, civoAPIURL, region string) (*Client, error) { client := &Client{ BaseURL: parsedURL, - UserAgent: "civogo/" + Version, + UserAgent: "autoscaler", APIKey: apiKey, Region: region, httpClient: &http.Client{ diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/disk_image.go b/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/disk_image.go similarity index 99% rename from cluster-autoscaler/vendor/github.com/civo/civogo/disk_image.go rename to cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/disk_image.go index aad394910652..57e95c0eaddd 100644 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/disk_image.go +++ b/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/disk_image.go @@ -1,4 +1,4 @@ -package civogo +package civocloud import ( "bytes" diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/errors.go b/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/errors.go similarity index 99% rename from cluster-autoscaler/vendor/github.com/civo/civogo/errors.go rename to cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/errors.go index ad43189f0130..e72eff8776df 100644 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/errors.go +++ b/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/errors.go @@ -1,4 +1,4 @@ -package civogo +package civocloud import ( "encoding/json" diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/instance.go b/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/instance.go similarity index 99% rename from cluster-autoscaler/vendor/github.com/civo/civogo/instance.go rename to cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/instance.go index 74f6b346e198..9c2a48a39e78 100644 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/instance.go +++ b/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/instance.go @@ -1,4 +1,4 @@ -package civogo +package civocloud import ( "bytes" @@ -7,7 +7,7 @@ import ( "strings" "time" - "github.com/civo/civogo/utils" + "k8s.io/autoscaler/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/utils" ) // Instance represents a virtual server within Civo's infrastructure diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/kubernetes.go b/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/kubernetes.go similarity index 99% rename from cluster-autoscaler/vendor/github.com/civo/civogo/kubernetes.go rename to cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/kubernetes.go index 90e498e1f562..9a48aa0acc43 100644 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/kubernetes.go +++ b/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/kubernetes.go @@ -1,4 +1,4 @@ -package civogo +package civocloud import ( "bytes" diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/network.go b/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/network.go similarity index 99% rename from cluster-autoscaler/vendor/github.com/civo/civogo/network.go rename to cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/network.go index 2abcf3bf7504..51db64e51c8a 100644 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/network.go +++ b/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/network.go @@ -1,4 +1,4 @@ -package civogo +package civocloud import ( "bytes" diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/pool.go b/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/pool.go similarity index 99% rename from cluster-autoscaler/vendor/github.com/civo/civogo/pool.go rename to cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/pool.go index c8000c3cdf26..1a86b1ba8d34 100644 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/pool.go +++ b/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/pool.go @@ -1,4 +1,4 @@ -package civogo +package civocloud import ( "bytes" diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/utils/random.go b/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/utils/random.go similarity index 100% rename from cluster-autoscaler/vendor/github.com/civo/civogo/utils/random.go rename to cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/utils/random.go diff --git a/cluster-autoscaler/cloudprovider/civo/civo_cloud_provider_test.go b/cluster-autoscaler/cloudprovider/civo/civo_cloud_provider_test.go index 62884f87380c..56a0107a7648 100644 --- a/cluster-autoscaler/cloudprovider/civo/civo_cloud_provider_test.go +++ b/cluster-autoscaler/cloudprovider/civo/civo_cloud_provider_test.go @@ -20,31 +20,31 @@ import ( "bytes" "testing" - "github.com/civo/civogo" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" apiv1 "k8s.io/api/core/v1" "k8s.io/autoscaler/cluster-autoscaler/cloudprovider" + civocloud "k8s.io/autoscaler/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go" ) type civoClientMock struct { mock.Mock } -func (m *civoClientMock) ListKubernetesClusterPools(clusterID string) ([]civogo.KubernetesPool, error) { +func (m *civoClientMock) ListKubernetesClusterPools(clusterID string) ([]civocloud.KubernetesPool, error) { args := m.Called(clusterID) - return args.Get(0).([]civogo.KubernetesPool), args.Error(1) + return args.Get(0).([]civocloud.KubernetesPool), args.Error(1) } -func (m *civoClientMock) UpdateKubernetesClusterPool(cid, pid string, config *civogo.KubernetesClusterPoolUpdateConfig) (*civogo.KubernetesPool, error) { +func (m *civoClientMock) UpdateKubernetesClusterPool(cid, pid string, config *civocloud.KubernetesClusterPoolUpdateConfig) (*civocloud.KubernetesPool, error) { args := m.Called(cid, pid, config) - return args.Get(0).(*civogo.KubernetesPool), args.Error(1) + return args.Get(0).(*civocloud.KubernetesPool), args.Error(1) } -func (m *civoClientMock) DeleteKubernetesClusterPoolInstance(clusterID, poolID, instanceID string) (*civogo.SimpleResponse, error) { +func (m *civoClientMock) DeleteKubernetesClusterPoolInstance(clusterID, poolID, instanceID string) (*civocloud.SimpleResponse, error) { args := m.Called(clusterID, poolID, instanceID) - return args.Get(0).(*civogo.SimpleResponse), args.Error(1) + return args.Get(0).(*civocloud.SimpleResponse), args.Error(1) } func testCloudProvider(t *testing.T, client *civoClientMock) *civoCloudProvider { @@ -61,13 +61,13 @@ func testCloudProvider(t *testing.T, client *civoClientMock) *civoCloudProvider client = &civoClientMock{} client.On("ListKubernetesClusterPools", manager.clusterID).Return( - []civogo.KubernetesPool{ + []civocloud.KubernetesPool{ { ID: "1", Count: 2, Size: "small", InstanceNames: []string{"test-1", "test-2"}, - Instances: []civogo.KubernetesInstance{ + Instances: []civocloud.KubernetesInstance{ { ID: "1", Hostname: "test-1", @@ -85,7 +85,7 @@ func testCloudProvider(t *testing.T, client *civoClientMock) *civoCloudProvider Count: 2, Size: "small", InstanceNames: []string{"test-1", "test-2"}, - Instances: []civogo.KubernetesInstance{ + Instances: []civocloud.KubernetesInstance{ { ID: "3", Hostname: "test-3", @@ -154,11 +154,11 @@ func TestCivoCloudProvider_NodeGroupForNode(t *testing.T) { t.Run("success", func(t *testing.T) { client := &civoClientMock{} client.On("ListKubernetesClusterPools", manager.clusterID).Return( - []civogo.KubernetesPool{ + []civocloud.KubernetesPool{ { ID: "1", Count: 2, - Instances: []civogo.KubernetesInstance{ + Instances: []civocloud.KubernetesInstance{ { ID: "11", Hostname: "kube-node-11", @@ -174,7 +174,7 @@ func TestCivoCloudProvider_NodeGroupForNode(t *testing.T) { { ID: "2", Count: 2, - Instances: []civogo.KubernetesInstance{ + Instances: []civocloud.KubernetesInstance{ { ID: "111", Hostname: "kube-node-111", @@ -209,11 +209,11 @@ func TestCivoCloudProvider_NodeGroupForNode(t *testing.T) { t.Run("node does not exist", func(t *testing.T) { client := &civoClientMock{} client.On("ListKubernetesClusterPools", manager.clusterID).Return( - []civogo.KubernetesPool{ + []civocloud.KubernetesPool{ { ID: "1", Count: 2, - Instances: []civogo.KubernetesInstance{ + Instances: []civocloud.KubernetesInstance{ { ID: "11", Hostname: "kube-node-11", @@ -229,7 +229,7 @@ func TestCivoCloudProvider_NodeGroupForNode(t *testing.T) { { ID: "2", Count: 2, - Instances: []civogo.KubernetesInstance{ + Instances: []civocloud.KubernetesInstance{ { ID: "111", Hostname: "kube-node-111", diff --git a/cluster-autoscaler/cloudprovider/civo/civo_manager.go b/cluster-autoscaler/cloudprovider/civo/civo_manager.go index 7c7445be0d2f..f3c8cfded034 100644 --- a/cluster-autoscaler/cloudprovider/civo/civo_manager.go +++ b/cluster-autoscaler/cloudprovider/civo/civo_manager.go @@ -27,7 +27,7 @@ import ( "k8s.io/autoscaler/cluster-autoscaler/cloudprovider" "k8s.io/autoscaler/cluster-autoscaler/config/dynamic" - "github.com/civo/civogo" + civocloud "k8s.io/autoscaler/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go" "k8s.io/klog/v2" ) @@ -38,11 +38,11 @@ var ( type nodeGroupClient interface { // ListKubernetesClusterPools lists all node pools in the Kubernetes cluster. - ListKubernetesClusterPools(clusterID string) ([]civogo.KubernetesPool, error) + ListKubernetesClusterPools(clusterID string) ([]civocloud.KubernetesPool, error) // UpdateKubernetesClusterPool updates an existing Kubernetes cluster pool with the Civo API. - UpdateKubernetesClusterPool(cid, pid string, config *civogo.KubernetesClusterPoolUpdateConfig) (*civogo.KubernetesPool, error) + UpdateKubernetesClusterPool(cid, pid string, config *civocloud.KubernetesClusterPoolUpdateConfig) (*civocloud.KubernetesPool, error) // DeleteKubernetesClusterPoolInstance deletes a instance from pool - DeleteKubernetesClusterPoolInstance(clusterID, poolID, instanceID string) (*civogo.SimpleResponse, error) + DeleteKubernetesClusterPoolInstance(clusterID, poolID, instanceID string) (*civocloud.SimpleResponse, error) } // Manager handles Civo communication and data caching of @@ -101,7 +101,7 @@ func newManager(configReader io.Reader, discoveryOpts cloudprovider.NodeGroupDis Region = cfg.Region - civoClient, err := civogo.NewClientWithURL(cfg.ApiKey, cfg.ApiURL, cfg.Region) + civoClient, err := civocloud.NewClientWithURL(cfg.ApiKey, cfg.ApiURL, cfg.Region) if err != nil { return nil, fmt.Errorf("couldn't initialize Civo client: %s", err) } diff --git a/cluster-autoscaler/cloudprovider/civo/civo_manager_test.go b/cluster-autoscaler/cloudprovider/civo/civo_manager_test.go index 6704788d6f73..36edcf785846 100644 --- a/cluster-autoscaler/cloudprovider/civo/civo_manager_test.go +++ b/cluster-autoscaler/cloudprovider/civo/civo_manager_test.go @@ -22,8 +22,8 @@ import ( "testing" "k8s.io/autoscaler/cluster-autoscaler/cloudprovider" + civocloud "k8s.io/autoscaler/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go" - "github.com/civo/civogo" "github.com/stretchr/testify/assert" ) @@ -66,13 +66,13 @@ func TestCivoManager_Refresh(t *testing.T) { client := &civoClientMock{} client.On("ListKubernetesClusterPools", manager.clusterID).Return( - []civogo.KubernetesPool{ + []civocloud.KubernetesPool{ { ID: "1", Count: 2, Size: "small", InstanceNames: []string{"test-1", "test-2"}, - Instances: []civogo.KubernetesInstance{ + Instances: []civocloud.KubernetesInstance{ { ID: "1", Hostname: "test-1", @@ -90,7 +90,7 @@ func TestCivoManager_Refresh(t *testing.T) { Count: 2, Size: "small", InstanceNames: []string{"test-1", "test-2"}, - Instances: []civogo.KubernetesInstance{ + Instances: []civocloud.KubernetesInstance{ { ID: "3", Hostname: "test-3", @@ -125,13 +125,13 @@ func TestCivoManager_RefreshWithNodeSpec(t *testing.T) { client := &civoClientMock{} client.On("ListKubernetesClusterPools", manager.clusterID).Return( - []civogo.KubernetesPool{ + []civocloud.KubernetesPool{ { ID: "1", Count: 2, Size: "small", InstanceNames: []string{"test-1", "test-2"}, - Instances: []civogo.KubernetesInstance{ + Instances: []civocloud.KubernetesInstance{ { ID: "1", Hostname: "test-1", @@ -149,7 +149,7 @@ func TestCivoManager_RefreshWithNodeSpec(t *testing.T) { Count: 2, Size: "small", InstanceNames: []string{"test-1", "test-2"}, - Instances: []civogo.KubernetesInstance{ + Instances: []civocloud.KubernetesInstance{ { ID: "3", Hostname: "test-3", diff --git a/cluster-autoscaler/cloudprovider/civo/civo_node_group.go b/cluster-autoscaler/cloudprovider/civo/civo_node_group.go index 598ea53972a2..4b2d860cd9da 100644 --- a/cluster-autoscaler/cloudprovider/civo/civo_node_group.go +++ b/cluster-autoscaler/cloudprovider/civo/civo_node_group.go @@ -20,7 +20,7 @@ import ( "errors" "fmt" - "github.com/civo/civogo" + civocloud "k8s.io/autoscaler/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go" apiv1 "k8s.io/api/core/v1" "k8s.io/autoscaler/cluster-autoscaler/cloudprovider" @@ -36,7 +36,7 @@ type NodeGroup struct { id string clusterID string client nodeGroupClient - nodePool *civogo.KubernetesPool + nodePool *civocloud.KubernetesPool minSize int maxSize int getOptions *autoscaler.NodeGroupAutoscalingOptions @@ -81,7 +81,7 @@ func (n *NodeGroup) IncreaseSize(delta int) error { n.nodePool.Count, targetSize, n.MaxSize()) } - req := &civogo.KubernetesClusterPoolUpdateConfig{ + req := &civocloud.KubernetesClusterPoolUpdateConfig{ Count: targetSize, Region: Region, } @@ -137,7 +137,7 @@ func (n *NodeGroup) DecreaseTargetSize(delta int) error { n.nodePool.Count, targetSize, n.MinSize()) } - req := &civogo.KubernetesClusterPoolUpdateConfig{ + req := &civocloud.KubernetesClusterPoolUpdateConfig{ Count: targetSize, Region: Region, } @@ -217,7 +217,7 @@ func (n *NodeGroup) Autoprovisioned() bool { // toInstances converts a slice of civogo.KubernetesInstance to // cloudprovider.Instance -func toInstances(nodes []civogo.KubernetesInstance) []cloudprovider.Instance { +func toInstances(nodes []civocloud.KubernetesInstance) []cloudprovider.Instance { instances := make([]cloudprovider.Instance, 0, len(nodes)) for _, nd := range nodes { instances = append(instances, toInstance(nd)) @@ -227,7 +227,7 @@ func toInstances(nodes []civogo.KubernetesInstance) []cloudprovider.Instance { // toInstance converts the given civogo.KubernetesInstance to a // cloudprovider.Instance -func toInstance(node civogo.KubernetesInstance) cloudprovider.Instance { +func toInstance(node civocloud.KubernetesInstance) cloudprovider.Instance { return cloudprovider.Instance{ Id: toProviderID(node.ID), Status: toInstanceStatus(node.Status), diff --git a/cluster-autoscaler/cloudprovider/civo/civo_node_group_test.go b/cluster-autoscaler/cloudprovider/civo/civo_node_group_test.go index 119357571993..1349dba46868 100644 --- a/cluster-autoscaler/cloudprovider/civo/civo_node_group_test.go +++ b/cluster-autoscaler/cloudprovider/civo/civo_node_group_test.go @@ -21,10 +21,10 @@ import ( "fmt" "testing" - "github.com/civo/civogo" "github.com/stretchr/testify/assert" apiv1 "k8s.io/api/core/v1" "k8s.io/autoscaler/cluster-autoscaler/cloudprovider" + civocloud "k8s.io/autoscaler/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go" ) func TestNodeGroup_TargetSize(t *testing.T) { @@ -32,7 +32,7 @@ func TestNodeGroup_TargetSize(t *testing.T) { numberOfNodes := 3 client := &civoClientMock{} - ng := testNodeGroup(client, &civogo.KubernetesPool{ + ng := testNodeGroup(client, &civocloud.KubernetesPool{ Count: numberOfNodes, }, 1, 10) @@ -46,7 +46,7 @@ func TestNodeGroup_IncreaseSize(t *testing.T) { t.Run("success", func(t *testing.T) { numberOfNodes := 3 client := &civoClientMock{} - ng := testNodeGroup(client, &civogo.KubernetesPool{ + ng := testNodeGroup(client, &civocloud.KubernetesPool{ Count: numberOfNodes, }, 1, 10) @@ -56,12 +56,12 @@ func TestNodeGroup_IncreaseSize(t *testing.T) { client.On("UpdateKubernetesClusterPool", ng.clusterID, ng.id, - &civogo.KubernetesClusterPoolUpdateConfig{ + &civocloud.KubernetesClusterPoolUpdateConfig{ Count: newCount, Region: "test", }, ).Return( - &civogo.KubernetesPool{Count: newCount}, + &civocloud.KubernetesPool{Count: newCount}, nil, ).Once() @@ -75,7 +75,7 @@ func TestNodeGroup_IncreaseSize(t *testing.T) { maxNodes := 3 client := &civoClientMock{} - ng := testNodeGroup(client, &civogo.KubernetesPool{ + ng := testNodeGroup(client, &civocloud.KubernetesPool{ Count: numberOfNodes, }, 1, maxNodes) @@ -85,12 +85,12 @@ func TestNodeGroup_IncreaseSize(t *testing.T) { client.On("UpdateKubernetesClusterPool", ng.clusterID, ng.id, - &civogo.KubernetesClusterPoolUpdateConfig{ + &civocloud.KubernetesClusterPoolUpdateConfig{ Count: newCount, Region: "test", }, ).Return( - &civogo.KubernetesPool{Count: newCount}, + &civocloud.KubernetesPool{Count: newCount}, nil, ).Once() @@ -101,7 +101,7 @@ func TestNodeGroup_IncreaseSize(t *testing.T) { t.Run("negative increase", func(t *testing.T) { numberOfNodes := 3 client := &civoClientMock{} - ng := testNodeGroup(client, &civogo.KubernetesPool{ + ng := testNodeGroup(client, &civocloud.KubernetesPool{ Count: numberOfNodes, }, 1, 10) @@ -114,7 +114,7 @@ func TestNodeGroup_IncreaseSize(t *testing.T) { t.Run("zero increase", func(t *testing.T) { numberOfNodes := 3 client := &civoClientMock{} - ng := testNodeGroup(client, &civogo.KubernetesPool{ + ng := testNodeGroup(client, &civocloud.KubernetesPool{ Count: numberOfNodes, }, 1, 10) @@ -129,7 +129,7 @@ func TestNodeGroup_IncreaseSize(t *testing.T) { maxNodes := 100 delta := 10 client := &civoClientMock{} - ng := testNodeGroup(client, &civogo.KubernetesPool{ + ng := testNodeGroup(client, &civocloud.KubernetesPool{ Count: numberOfNodes, }, 1, maxNodes) @@ -145,7 +145,7 @@ func TestNodeGroup_DecreaseTargetSize(t *testing.T) { numberOfNodes := 5 client := &civoClientMock{} - ng := testNodeGroup(client, &civogo.KubernetesPool{ + ng := testNodeGroup(client, &civocloud.KubernetesPool{ Count: numberOfNodes, }, 1, 10) @@ -155,12 +155,12 @@ func TestNodeGroup_DecreaseTargetSize(t *testing.T) { client.On("UpdateKubernetesClusterPool", ng.clusterID, ng.id, - &civogo.KubernetesClusterPoolUpdateConfig{ + &civocloud.KubernetesClusterPoolUpdateConfig{ Count: newCount, Region: "test", }, ).Return( - &civogo.KubernetesPool{Count: newCount}, + &civocloud.KubernetesPool{Count: newCount}, nil, ).Once() @@ -171,7 +171,7 @@ func TestNodeGroup_DecreaseTargetSize(t *testing.T) { t.Run("positive decrease", func(t *testing.T) { numberOfNodes := 5 client := &civoClientMock{} - ng := testNodeGroup(client, &civogo.KubernetesPool{ + ng := testNodeGroup(client, &civocloud.KubernetesPool{ Count: numberOfNodes, }, 1, 10) @@ -185,7 +185,7 @@ func TestNodeGroup_DecreaseTargetSize(t *testing.T) { t.Run("zero decrease", func(t *testing.T) { numberOfNodes := 5 client := &civoClientMock{} - ng := testNodeGroup(client, &civogo.KubernetesPool{ + ng := testNodeGroup(client, &civocloud.KubernetesPool{ Count: numberOfNodes, }, 1, 10) @@ -200,7 +200,7 @@ func TestNodeGroup_DecreaseTargetSize(t *testing.T) { delta := -2 numberOfNodes := 2 client := &civoClientMock{} - ng := testNodeGroup(client, &civogo.KubernetesPool{ + ng := testNodeGroup(client, &civocloud.KubernetesPool{ Count: numberOfNodes, }, 1, 5) @@ -214,7 +214,7 @@ func TestNodeGroup_DecreaseTargetSize(t *testing.T) { func TestNodeGroup_DeleteNodes(t *testing.T) { t.Run("success", func(t *testing.T) { client := &civoClientMock{} - ng := testNodeGroup(client, &civogo.KubernetesPool{ + ng := testNodeGroup(client, &civocloud.KubernetesPool{ Count: 3, }, 1, 10) @@ -230,7 +230,7 @@ func TestNodeGroup_DeleteNodes(t *testing.T) { ng.id, "1", ).Return( - &civogo.SimpleResponse{Result: "success"}, + &civocloud.SimpleResponse{Result: "success"}, nil, ).Once() client.On("DeleteKubernetesClusterPoolInstance", @@ -238,7 +238,7 @@ func TestNodeGroup_DeleteNodes(t *testing.T) { ng.id, "2", ).Return( - &civogo.SimpleResponse{Result: "success"}, + &civocloud.SimpleResponse{Result: "success"}, nil, ).Once() client.On("DeleteKubernetesClusterPoolInstance", @@ -246,7 +246,7 @@ func TestNodeGroup_DeleteNodes(t *testing.T) { ng.id, "3", ).Return( - &civogo.SimpleResponse{Result: "success"}, + &civocloud.SimpleResponse{Result: "success"}, nil, ).Once() @@ -256,7 +256,7 @@ func TestNodeGroup_DeleteNodes(t *testing.T) { t.Run("client deleting node fails", func(t *testing.T) { client := &civoClientMock{} - ng := testNodeGroup(client, &civogo.KubernetesPool{ + ng := testNodeGroup(client, &civocloud.KubernetesPool{ Count: 3, }, 1, 10) @@ -274,7 +274,7 @@ func TestNodeGroup_DeleteNodes(t *testing.T) { ng.id, "1", ).Return( - &civogo.SimpleResponse{Result: "success"}, + &civocloud.SimpleResponse{Result: "success"}, nil, ).Once() client.On("DeleteKubernetesClusterPoolInstance", @@ -282,7 +282,7 @@ func TestNodeGroup_DeleteNodes(t *testing.T) { ng.id, "2", ).Return( - &civogo.SimpleResponse{}, + &civocloud.SimpleResponse{}, errors.New("random error"), ).Once() @@ -294,10 +294,10 @@ func TestNodeGroup_DeleteNodes(t *testing.T) { func TestNodeGroup_Nodes(t *testing.T) { t.Run("success", func(t *testing.T) { client := &civoClientMock{} - ng := testNodeGroup(client, &civogo.KubernetesPool{ + ng := testNodeGroup(client, &civocloud.KubernetesPool{ ID: "1", Count: 5, - Instances: []civogo.KubernetesInstance{ + Instances: []civocloud.KubernetesInstance{ { ID: "1", Hostname: "kube-node-1", @@ -375,7 +375,7 @@ func TestNodeGroup_Nodes(t *testing.T) { func TestNodeGroup_Debug(t *testing.T) { t.Run("success", func(t *testing.T) { client := &civoClientMock{} - ng := testNodeGroup(client, &civogo.KubernetesPool{Count: 2}, 1, 200) + ng := testNodeGroup(client, &civocloud.KubernetesPool{Count: 2}, 1, 200) d := ng.Debug() exp := "cluster ID: 1 (min:1 max:200)" assert.Equal(t, exp, d, "debug string do not match") @@ -385,7 +385,7 @@ func TestNodeGroup_Debug(t *testing.T) { func TestNodeGroup_Exist(t *testing.T) { t.Run("success", func(t *testing.T) { client := &civoClientMock{} - ng := testNodeGroup(client, &civogo.KubernetesPool{Count: 3}, 1, 200) + ng := testNodeGroup(client, &civocloud.KubernetesPool{Count: 3}, 1, 200) exist := ng.Exist() assert.Equal(t, true, exist, "node group should exist") }) @@ -398,7 +398,7 @@ func TestNodeGroup_Exist(t *testing.T) { }) } -func testNodeGroup(client nodeGroupClient, np *civogo.KubernetesPool, min int, max int) *NodeGroup { +func testNodeGroup(client nodeGroupClient, np *civocloud.KubernetesPool, min int, max int) *NodeGroup { Region = "test" return &NodeGroup{ id: "1", diff --git a/cluster-autoscaler/cloudprovider/civo/examples/cluster-autoscaler-standard.yaml b/cluster-autoscaler/cloudprovider/civo/examples/cluster-autoscaler-standard.yaml index 45a165f6227b..e6c469430492 100644 --- a/cluster-autoscaler/cloudprovider/civo/examples/cluster-autoscaler-standard.yaml +++ b/cluster-autoscaler/cloudprovider/civo/examples/cluster-autoscaler-standard.yaml @@ -141,7 +141,7 @@ spec: spec: serviceAccountName: cluster-autoscaler containers: - - image: vishalanarase/cluster-autoscaler-arm64:dev + - image: k8s.gcr.io/autoscaling/cluster-autoscaler:latest # or your custom image name: cluster-autoscaler imagePullPolicy: Always resources: diff --git a/cluster-autoscaler/go.mod b/cluster-autoscaler/go.mod index ecc78d854845..7f951c17de1b 100644 --- a/cluster-autoscaler/go.mod +++ b/cluster-autoscaler/go.mod @@ -12,7 +12,6 @@ require ( github.com/Azure/go-autorest/autorest/to v0.4.0 github.com/Azure/skewer v0.0.14 github.com/aws/aws-sdk-go v1.38.49 - github.com/civo/civogo v0.2.81 github.com/digitalocean/godo v1.27.0 github.com/ghodss/yaml v1.0.0 github.com/gofrs/uuid v4.0.0+incompatible diff --git a/cluster-autoscaler/go.sum b/cluster-autoscaler/go.sum index 09664defa43e..2b6861f95d04 100644 --- a/cluster-autoscaler/go.sum +++ b/cluster-autoscaler/go.sum @@ -161,8 +161,6 @@ github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMn github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= github.com/cilium/ebpf v0.7.0 h1:1k/q3ATgxSXRdrmPfH8d7YK0GfqVsEKZAX9dQZvs56k= github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA= -github.com/civo/civogo v0.2.81 h1:2v/+JvkNtOyfAdjOT01cm7V2ALCrNMKNpk//NL5ZEwM= -github.com/civo/civogo v0.2.81/go.mod h1:WUgi+GbpYlgXTbpU5Lx4scLc2XuoYhb9o20FMwPalBo= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/clusterhq/flocker-go v0.0.0-20160920122132-2b8b7259d313 h1:eIHD9GNM3Hp7kcRW5mvcz7WTR3ETeoYYKwpgA04kaXE= github.com/clusterhq/flocker-go v0.0.0-20160920122132-2b8b7259d313/go.mod h1:P1wt9Z3DP8O6W3rvwCt0REIlshg1InHImaLW0t3ObY0= diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/.editorconfig b/cluster-autoscaler/vendor/github.com/civo/civogo/.editorconfig deleted file mode 100644 index 559b914c44b1..000000000000 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/.editorconfig +++ /dev/null @@ -1,21 +0,0 @@ -root = true - -[*] -insert_final_newline = true -charset = utf-8 -trim_trailing_whitespace = true -indent_style = tab -indent_size = 2 - -[{Makefile,go.mod,go.sum,*.go,.gitmodules}] -indent_style = tab -indent_size = 2 - -[*.md] -indent_size = 4 -trim_trailing_whitespace = false - -eclint_indent_style = unset - -[Dockerfile] -indent_size = 4 diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/.gitignore b/cluster-autoscaler/vendor/github.com/civo/civogo/.gitignore deleted file mode 100644 index 0d89ec065afe..000000000000 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -# Default ignored files -.idea -.vscode -.DS_Store diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/CHANGELOG.md b/cluster-autoscaler/vendor/github.com/civo/civogo/CHANGELOG.md deleted file mode 100644 index 9d9c6f422179..000000000000 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/CHANGELOG.md +++ /dev/null @@ -1,1341 +0,0 @@ - -0.2.57 -============= -2021-11-02 - -* Remove implicit call to templates (#63) (ff81332) - -0.2.54 -============= -2021-09-27 - -* Provide region when reboot, stop and start instance (#62) (e04b7763) - -0.2.52 -============= -2021-08-30 - -* Add new struct fields for cluster firewall (#60) (d69977c6) -* Update the changelog (6f7d2d14) - -0.2.51 -============= -2021-08-20 - -* Add firewall ID to instance config (for creating instance) (#59) (63eb8ece) - -0.2.50 -============= -2021-08-20 - -* Exclude disk images with name containing "k3s" (#58) (4a2e2643) -* Fix lint issues (51b3d43b) -* Fixing capitalisation of decodeERROR to go standards and UnknowError typo (cd1195df) -* Add endpoints for team/permission management (e0bec13d) - -0.2.49 -============= -2021-07-16 - -* Remove unnecessary code from the error handler file and add new error handler (14fc34c7) - -0.2.48 -============= -2021-07-15 - -* Change de default error in case the error is not in the list (1bf187fd) -* Added a new error handler (cf996f92) - -0.2.47 -============= -2021-05-23 - -* Fixed error in the recycle kuberntes node (d9a041df) -* Updated the Change log (267f348f) - -0.2.46 -============= -2021-05-21 - -* Added omitempty to some models, to prevent show empty result (f99bbb6a) -* Fixed test for the instance (63305185) - -0.2.45 -============= -2021-05-10 - -* Fixed error in the instance controller (a9f4749f) -* Added new error handler (bfb7b690) - -0.2.44 -============= -2021-05-05 - -* Merge branch 'master' of https://github.com/civo/civogo (7f556d7b) -* Added the pool option to kubernestes object (2459ccd5) - -0.2.43 -============= -2021-05-04 - -* Added change to kubernetes and volume (0f3b7fb6) -* Add cluster_id to volume creation (47dce610) -* Fix CHANGELOG (7a917e8e) -* Add GetVolume call to save always returning then filtering down to a single volume (419cda25) -* Add Status to volume (4884e404) -* Added region to volume attach/detach (093df491) -* Update CHANGELOG for 0.2.38 (9c1df9d1) -* Update VolumeConfig to have a namespace attribute (89995b6a) -* Update fake_client.go (d629abae) - -0.2.37 -============= -2021-04-08 - -* Added new methods for DiskImage (cd0f7879) - -0.2.36 -============= -2021-04-06 - -* Added omitempty to kubernetes config, that way we only send the filled fields (af03bb1f) -* Updated the changelog (dc3ea1df) - -0.2.35 -============= -2021-04-02 - -* Merge branch 'master' of https://github.com/civo/civogo (772d0a16) -* Fixed error in the code, added a new handler for network error (c47419ce) -* Updated the changelog (ed132dec) -* Added new fields to kubernetes struct (43e5e9a8) -* Updated the changelog (699e5392) -* Merge branch 'master' of https://github.com/civo/civogo (1e9c4c70) -* Fixed error in the struct for InstalledApplication in kubernetes (ff8a577c) -* Updated the changelog (0cf2bd6e) -* Added network to the firewall struct (f173564c) -* Added GetDefaultRegion to the region (e2bd46f7) -* Updated the changelog (9c6173fb) -* Added default field to the region (79f15aa1) -* Updated the changelog (b45dffe1) -* Feature/add region (#50) (19e61587) -* Clusternames should be considered case insensitive (#49) (dfcbfaec) -* Update Change log (c237384c) -* Fixed check in handler for errors (c5ae6fb3) -* Update Change log (5564e235) -* Fixed lint check in the actions (346fe0ff) -* Fixed some bugs in the error handler (a0333a83) -* Update Change log (ce2a8a20) -* Added option to use proxy if is present in the system (3c3da053) -* Update Change log (d6c63e63) -* Fixed the recycle option in Kubernetes (405567d0) -* Update Change log (4b69a797) -* Updated all find function to all command (8ac5d69e) -* Update Change log (dd52c163) -* Fixed an error in the struct of the creation of intances (e7cd9f3b) -* Update Change log (ede2e4c1) -* Added two more error to the error handler (c1e74133) -* Fixed error in the DNS test (b0996760) -* Update Change log (d6191cc6) -* Added new record type to DNS (6e3d7b1e) -* Update Change log (fc9cd8ff) -* improved error handling in the library (7a0e384f) -* Update test.yml (0aa9f6bf) -* Update test.yml (73500add) -* Update test.yml (f3d121d8) -* Update test.yml (2df11af6) -* Update Change log (c024bec2) -* Updated all test (d8b73535) -* Update Change log (63a3ae56) -* Added constant errors to the lib (4095fdfc) -* Update the chnage log (b11ac276) -* Added FindTemplate fucntion to the template module (59a86819) -* Update the change log (4cc1b488) -* Revert "Update the change log" (21b44c0e) -* Update the change log (8cfac7bc) -* Add constant errors (#41) (c983d56e) -* Added CPU, RAM and SSD fields to Instance struct (f6135e29) -* Added new feature (b74d3224) -* Fixed error in the cluster upgrade cmd (c49389ab) -* Add the new UpgradeAvailableTo field to KubernetesCluster (9c392181) -* Change application struct in the kubernetes module (#39) (59b86eba) -* Change application struct in kubernetes (c1839b96) -* added new way to search in network (923b509b) -* feat(kubernetes): new added option at the moment scaling down the cluster (#35) (1906a5fc) -* Add pagination for Kubernetes clusters (#34) (6ce671a8) -* (hotfix) change snapshot config (77d29967) -* Change PublicIPRequired to a string to support IP moving (d0635c7e) -* add template endpoints (c73d51fa) -* Minor tweaks to SSH key struct (d20f49e0) -* update the ssh key file (f5eab5e2) -* Add new option to ssh (fdf845a6) -* Fail the build if any lint issues (95ae34b1) -* add rename endpoint for firewall (588340b6) -* Updated the lib to use json and not form for all request (09617776) -* Add body to client error responses (a8ebeb95) -* Merge pull request #25 from alejandrojnm/hostfix/add_function_firewall (5ccea39d) -* Merge pull request #24 from alejandrojnm/hotfix/urgent_fix (7b07ee24) -* Change GetDNSRecord to find by ID not name (4f53b021) -* Remove DNSDomainID from DNSRecordConfig (edfa5583) -* Merge pull request #23 from alejandrojnm/feature/update_dns_record (d8c0e967) -* Fix instance test (5ae22ab1) -* Fix signature of SetInstanceTags (c470a7d5) -* Add GetInstanceConsoleURL method (1032a3be) -* Check links in go documentation (efbe8dbc) -* Change link to docs (83fdce86) -* Update badges (7cbcb38c) -* Fix tests after some minor refactoring (f149ccdc) -* Change GB to Gigabytes (f0fa3a15) -* Fix lint issues (62a82aec) -* Change workflow to custom action (143ac314) -* Move lint to its own action (541c21a6) -* Use user-contributed lint action (4e265ae4) -* Install golint before running it (0aa650f4) -* Add lint to tests and Go 1.14 (0bbdcd0c) -* Add changelog (f2cd42c5) -* Add Find* methods to all areas (d9686526) -* Fix some linting issues with Kubernetes (8dafd66a) -* Add LICENSE (dd906190) -* Return an error if creating a client with an empty API key (ee8dab3b) -* Remove progress table from README as its now module complete (1bfa0af0) -* Add minor tweaks to Webhooks (0471e7d2) -* Merge pull request #21 from alejandrojnm/feature/webhook (2d7d45db) -* Change minor naming issues in snapshot module (fc4a75b7) -* Merge pull request #20 from alejandrojnm/feature/api_snapshots (4b2ae45c) -* Fix a couple of comments (81e4652e) -* Add charge endpoint (457dfa5d) -* Change awkward names of units in field names (f20cab75) -* Add instance size endpoints (971a4a47) -* Add quota endpoint (7b54da2c) -* Add region endpoint (66b590cc) -* Change List functions to be plural and prefixing DNS (e3433bb0) -* Update display of README progress (43d6bc08) -* Merge pull request #19 from alejandrojnm/hotfix/loadbalance_readme (eacb35ca) -* Merge pull request #18 from alejandrojnm/master (41c7acb3) -* Merge pull request #16 from alejandrojnm/add-kubernetes-apis (730f2dd4) -* Add minor changes to Load Balancer methods (b8d5ddb8) -* Merge pull request #14 from alejandrojnm/feature/loadbalancer (e69c9746) -* Merge pull request #11 from rberrelleza/get-record (5590adda) -* Merge pull request #12 from rberrelleza/add-owners (338c4dfd) -* Add client.LastJSONResponse for the CLI to use (5378d41d) -* Merge pull request #7 from rberrelleza/fix-casing-forms (b3aba767) -* Merge pull request #9 from alejandrojnm/hostfix-network (f66cbcbb) -* Change string to map of strings (ab4ebaa8) -* Cleanup some minor issues (a69bef1d) -* Merge pull request #3 from rberrelleza/add-dns-apis (34870810) -* Merge pull request #4 from alejandrojnm/add-firewall-apis (554cc2b3) -* Merge pull request #5 from alejandrojnm/add-volumes-apis (9e8048fc) -* Merge pull request #6 from alejandrojnm/add-network-options (bbb04c3d) -* Change order of automated tests (57fae691) -* Ensure gofmt code compliance (e6d1cdcb) -* Remove panic (5d9bf4a7) -* Remove string interpolation, more go idiomatic this way (50fd2f10) -* Move JSON parsing for SimpleResponse to a helper method (8e8caf0a) -* Add CONTRIBUTING guide (a6d63538) -* Add status bage to README (1eabf12e) -* Add Go module support (2e043e15) -* Add GitHub action to test golang (e9c40745) -* Fix tests (08e7668c) -* Add Instance functions (264d4c87) -* Add Instance methods,first version (cd217b8b) -* Add tests for instance (31634d0f) -* Add Instance listing/fetching/creating (dc16cca8) -* - Add more options to the network options (5e258256) -* - Add New network options (6fbeb8a8) -* Add option to create a new network (e4a70af4) -* Fix error in volumes.go in the VolumesConfig (3db7ca46) -* Add volumes option to the civogo (52dca353) -* - Fix a error in firewall.go (5aecfa1c) -* - Fix some error in firewall.go (070605de) -* Add firewall option to the civogo (572557b6) -* fix test (ebde1c12) -* handle http errors (9c0f0967) -* add tests (37733dc1) -* Add functions to manipulate records (5f324bc9) -* - Fix a error network, now you can rename a network (79674176) -* Merge pull request #1 from civo/master (cbeb0cd4) -* change config for `form` (1ea969af) -* Add a default owner for the repo (fb92d21f) -* use Create instead of New (3055381e) -* New and delete Domain (5c6fe06b) -* add a result const (9c28c61c) -* fix GetDomain test (9df135c1) -* get and list records (5bf08246) -* update and new domain (acb6cd6a) -* - Update name in loadbalancer_test.go (4048f9c1) -* - Update the loadbalancer_test.go (fea3cf5b) -* - Fix some error in types in loadbalancer.go and loadbalancer_test.go (84b247e5) -* - Now can add, delete update and list the load balance (e2e8858b) -* - Initial files (4002274e) -* - Fix all recommendation from Andy, change NumTargetNodes from string to int, and in UpdateKubernetesClusters change map[string]string in favor of map[string]interface{} (2fdaa159) -* - Fix all recommendation from Andy (fa672090) -* - Final change in the kubernetes interface (7e0221f0) -* - Some change in kubernetes (9bb817f9) -* - First commit for kubernetes (05711724) -* - Update README.md with a list of all modules (58429347) -* Merge pull request #3 from civo/master (5a3cfcd6) -* Merge pull request #2 from civo/master (311f778e) -* - Update README.md, Fix error in loadbalancer.go (74877fa8) -* - Done the snapshot module (d2ede4b0) -* - First part of the snapshot api (eaf506c7) -* Merge branch 'master' into feature/api_snapshots (2408aaa3) -* Merge pull request #4 from civo/master (6d43cd65) -* Merge pull request #5 from civo/master (6e2137e8) -* - Add webhook module (467bd9a5) -* Merge pull request #6 from civo/master (55ee0710) -* - Fix some bug in dns.go dns_test.go (2edd5469) -* - Add option to update dns record (8ff8a494) -* Merge pull request #7 from civo/master (08c1c198) -* fix(loadbalancer): Fix data in test (29eab040) -* fix(loadbalancer): Fix struct in loadbalancer (450e0188) -* fix(firewall): Fix error in firewall test (f8658cf3) -* fix(firewall): Fix struct in firewall (6b4ca011) -* - Fix some bug in firewall.go and firewall_test.go (7f13e1c8) -* Merge pull request #9 from civo/master (27235987) -* Merge pull request #8 from civo/master (d118d875) -* fix(firewall): Change the id passed to the function (aff66676) -* fix(firewall): Fix name in the firewall (c480c528) -* fix(firewall): Fix name in the firewall (874f9ef6) -* feat(firewall): Add new option to search rule (58a86032) -* Merge pull request #11 from civo/master (53dc6a1e) -* Merge pull request #10 from alejandrojnm/hotfix/urgent_fix (99662c54) -* updated README.md (#51) (fce968e2) - -0.2.34 -============= -2021-03-16 - -* Fix more cases were we were updating a by-value array (a2afa167) - -0.2.33 -============= -2021-03-16 - -* Finding a volume by ID should work in the fake client (1f6ff05c) - -0.2.32 -============= -2021-03-11 - -* Update changelog (863f3d0d) -* Add simple fake tests to ensure it conforms to the interface and the pattern works (06e89dda) - -0.2.31 -============= -2021-03-11 - -* Fix error in NewFirewall definition for FakeClient (a5721041) - -0.2.30 -============= -2021-03-10 - -* Add fake client (#53) (318bdea6) -* Updated the changelog (ed132dec) -* Added new fields to kubernetes struct (43e5e9a8) -* Updated the changelog (699e5392) -* Merge branch 'master' of https://github.com/civo/civogo (1e9c4c70) -* Fixed error in the struct for InstalledApplication in kubernetes (ff8a577c) -* Updated the changelog (0cf2bd6e) -* Added network to the firewall struct (f173564c) -* Added GetDefaultRegion to the region (e2bd46f7) -* Updated the changelog (9c6173fb) -* Added default field to the region (79f15aa1) -* Updated the changelog (b45dffe1) -* Feature/add region (#50) (19e61587) -* Clusternames should be considered case insensitive (#49) (dfcbfaec) -* Update Change log (c237384c) -* Fixed check in handler for errors (c5ae6fb3) -* Update Change log (5564e235) -* Fixed lint check in the actions (346fe0ff) -* Fixed some bugs in the error handler (a0333a83) -* Update Change log (ce2a8a20) -* Added option to use proxy if is present in the system (3c3da053) -* Update Change log (d6c63e63) -* Fixed the recycle option in Kubernetes (405567d0) -* Update Change log (4b69a797) -* Updated all find function to all command (8ac5d69e) -* Update Change log (dd52c163) -* Fixed an error in the struct of the creation of intances (e7cd9f3b) -* Update Change log (ede2e4c1) -* Added two more error to the error handler (c1e74133) -* Fixed error in the DNS test (b0996760) -* Update Change log (d6191cc6) -* Added new record type to DNS (6e3d7b1e) -* Update Change log (fc9cd8ff) -* improved error handling in the library (7a0e384f) -* Update test.yml (0aa9f6bf) -* Update test.yml (73500add) -* Update test.yml (f3d121d8) -* Update test.yml (2df11af6) -* Update Change log (c024bec2) -* Updated all test (d8b73535) -* Update Change log (63a3ae56) -* Added constant errors to the lib (4095fdfc) -* Update the chnage log (b11ac276) -* Added FindTemplate fucntion to the template module (59a86819) -* Update the change log (4cc1b488) -* Revert "Update the change log" (21b44c0e) -* Update the change log (8cfac7bc) -* Add constant errors (#41) (c983d56e) -* Added CPU, RAM and SSD fields to Instance struct (f6135e29) -* Added new feature (b74d3224) -* Fixed error in the cluster upgrade cmd (c49389ab) -* Add the new UpgradeAvailableTo field to KubernetesCluster (9c392181) -* Change application struct in the kubernetes module (#39) (59b86eba) -* Change application struct in kubernetes (c1839b96) -* added new way to search in network (923b509b) -* feat(kubernetes): new added option at the moment scaling down the cluster (#35) (1906a5fc) -* Add pagination for Kubernetes clusters (#34) (6ce671a8) - -0.2.29 -============= -2021-02-28 - -* Updated the changelog (ed132dec) -* Added new fields to kubernetes struct (43e5e9a8) - -0.2.28 -============= -2021-02-26 - -* Updated the changelog (699e5392) -* Merge branch 'master' of https://github.com/civo/civogo (1e9c4c70) -* Fixed error in the struct for InstalledApplication in kubernetes (ff8a577c) -* Updated the changelog (0cf2bd6e) - -0.2.27 -============= -2021-02-10 - -* Added network to the firewall struct (f173564c) - -0.2.26 -============= -2021-02-09 - -* Added GetDefaultRegion to the region (e2bd46f7) -* Updated the changelog (9c6173fb) - -0.2.25 -============= -2021-02-09 - -* Added default field to the region (79f15aa1) -* Updated the changelog (b45dffe1) - -0.2.24 -============= -2021-02-08 - -* Feature/add region (#50) (19e61587) -* Clusternames should be considered case insensitive (#49) (dfcbfaec) - -0.2.23 -============= -2020-12-04 - -* Update Change log (c237384c) -* Fixed check in handler for errors (c5ae6fb3) - -0.2.22 -============= -2020-11-18 - -* Update Change log (5564e235) -* Fixed lint check in the actions (346fe0ff) -* Fixed some bugs in the error handler (a0333a83) - -0.2.21 -============= -2020-10-31 - -* Update Change log (ce2a8a20) -* Added option to use proxy if is present in the system (3c3da053) - -0.2.20 -============= -2020-10-31 - -* Update Change log (d6c63e63) -* Fixed the recycle option in Kubernetes (405567d0) -* Update Change log (4b69a797) -* Updated all find function to all command (8ac5d69e) -* Update Change log (dd52c163) -* Fixed an error in the struct of the creation of intances (e7cd9f3b) -* Update Change log (ede2e4c1) -* Added two more error to the error handler (c1e74133) -* Fixed error in the DNS test (b0996760) -* Update Change log (d6191cc6) -* Added new record type to DNS (6e3d7b1e) -* Update Change log (fc9cd8ff) -* improved error handling in the library (7a0e384f) -* Update test.yml (0aa9f6bf) -* Update test.yml (73500add) -* Update test.yml (f3d121d8) -* Update test.yml (2df11af6) -* Update Change log (c024bec2) -* Updated all test (d8b73535) -* Update Change log (63a3ae56) -* Added constant errors to the lib (4095fdfc) -* Update the chnage log (b11ac276) -* Added FindTemplate fucntion to the template module (59a86819) -* Update the change log (4cc1b488) -* Revert "Update the change log" (21b44c0e) -* Update the change log (8cfac7bc) -* Add constant errors (#41) (c983d56e) -* Added CPU, RAM and SSD fields to Instance struct (f6135e29) -* Added new feature (b74d3224) -* Fixed error in the cluster upgrade cmd (c49389ab) -* Add the new UpgradeAvailableTo field to KubernetesCluster (9c392181) -* Change application struct in the kubernetes module (#39) (59b86eba) -* Change application struct in kubernetes (c1839b96) -* added new way to search in network (923b509b) -* feat(kubernetes): new added option at the moment scaling down the cluster (#35) (1906a5fc) -* Add pagination for Kubernetes clusters (#34) (6ce671a8) -* (hotfix) change snapshot config (77d29967) - -0.2.19 -============= -2020-09-25 - -* Update Change log (dd52c163) -* Fixed an error in the struct of the creation of intances (e7cd9f3b) - -0.2.18 -============= -2020-09-23 - -* Update Change log (ede2e4c1) -* Added two more error to the error handler (c1e74133) -* Fixed error in the DNS test (b0996760) - -0.2.17 -============= -2020-09-13 - -* Update Change log (d6191cc6) -* Added new record type to DNS (6e3d7b1e) - -0.2.16 -============= -2020-08-24 - -* Update Change log (fc9cd8ff) -* improved error handling in the library (7a0e384f) - -0.2.15 -============= -2020-08-17 - -* Update test.yml (0aa9f6bf) -* Update test.yml (73500add) -* Update test.yml (f3d121d8) -* Update test.yml (2df11af6) -* Update Change log (c024bec2) -* Updated all test (d8b73535) -* Update Change log (63a3ae56) -* Added constant errors to the lib (4095fdfc) - -0.2.14 -============= -2020-08-11 - -* Update the chnage log (b11ac276) -* Added FindTemplate fucntion to the template module (59a86819) -* Update the change log (4cc1b488) -* Revert "Update the change log" (21b44c0e) -* Update the change log (8cfac7bc) - -0.2.13 -============= -2020-07-31 - -* Add constant errors (#41) (c983d56e) - -0.2.12 -============= -2020-07-07 - -* Added CPU, RAM and SSD fields to Instance struct (f6135e29) - -0.2.11 -============= -2020-07-06 - -* Added new feature (b74d3224) - -0.2.10 -============= -2020-06-24 - -* Fixed error in the cluster upgrade cmd (c49389ab) -* Add the new UpgradeAvailableTo field to KubernetesCluster (9c392181) -* Change application struct in the kubernetes module (#39) (59b86eba) -* Change application struct in kubernetes (c1839b96) -* added new way to search in network (923b509b) -* feat(kubernetes): new added option at the moment scaling down the cluster (#35) (1906a5fc) -* Add pagination for Kubernetes clusters (#34) (6ce671a8) -* (hotfix) change snapshot config (77d29967) -* Change PublicIPRequired to a string to support IP moving (d0635c7e) - -0.2.9 -============= -2020-06-19 - -* Add the new UpgradeAvailableTo field to KubernetesCluster (9c392181) - -0.2.8 -============= -2020-05-12 - -* Change application struct in the kubernetes module (#39) (59b86eba) - -0.2.7 -============= -2020-05-11 - -* Change application struct in kubernetes (c1839b96) - -0.2.6 -============= -2020-05-06 - -* added new way to search in network (923b509b) - -0.2.5 -============= -2020-04-15 - -* feat(kubernetes): new added option at the moment scaling down the cluster (#35) (1906a5fc) - -0.2.4 -============= -2020-04-07 - -* Add pagination for Kubernetes clusters (#34) (6ce671a8) -* (hotfix) change snapshot config (77d29967) -* Change PublicIPRequired to a string to support IP moving (d0635c7e) -* add template endpoints (c73d51fa) -* Minor tweaks to SSH key struct (d20f49e0) -* update the ssh key file (f5eab5e2) -* Add new option to ssh (fdf845a6) -* Fail the build if any lint issues (95ae34b1) -* add rename endpoint for firewall (588340b6) -* Updated the lib to use json and not form for all request (09617776) -* Add body to client error responses (a8ebeb95) -* Merge pull request #25 from alejandrojnm/hostfix/add_function_firewall (5ccea39d) -* Merge pull request #24 from alejandrojnm/hotfix/urgent_fix (7b07ee24) -* Change GetDNSRecord to find by ID not name (4f53b021) -* Remove DNSDomainID from DNSRecordConfig (edfa5583) -* Merge pull request #23 from alejandrojnm/feature/update_dns_record (d8c0e967) -* Fix instance test (5ae22ab1) -* Fix signature of SetInstanceTags (c470a7d5) -* Add GetInstanceConsoleURL method (1032a3be) -* Check links in go documentation (efbe8dbc) -* Change link to docs (83fdce86) -* Update badges (7cbcb38c) -* Fix tests after some minor refactoring (f149ccdc) -* Change GB to Gigabytes (f0fa3a15) -* Fix lint issues (62a82aec) -* Change workflow to custom action (143ac314) -* Move lint to its own action (541c21a6) -* Use user-contributed lint action (4e265ae4) -* Install golint before running it (0aa650f4) -* Add lint to tests and Go 1.14 (0bbdcd0c) -* Add changelog (f2cd42c5) -* Add Find* methods to all areas (d9686526) -* Fix some linting issues with Kubernetes (8dafd66a) -* Add LICENSE (dd906190) -* Return an error if creating a client with an empty API key (ee8dab3b) -* Remove progress table from README as its now module complete (1bfa0af0) -* Add minor tweaks to Webhooks (0471e7d2) -* Merge pull request #21 from alejandrojnm/feature/webhook (2d7d45db) -* Change minor naming issues in snapshot module (fc4a75b7) -* Merge pull request #20 from alejandrojnm/feature/api_snapshots (4b2ae45c) -* Fix a couple of comments (81e4652e) -* Add charge endpoint (457dfa5d) -* Change awkward names of units in field names (f20cab75) -* Add instance size endpoints (971a4a47) -* Add quota endpoint (7b54da2c) -* Add region endpoint (66b590cc) -* Change List functions to be plural and prefixing DNS (e3433bb0) -* Update display of README progress (43d6bc08) -* Merge pull request #19 from alejandrojnm/hotfix/loadbalance_readme (eacb35ca) -* Merge pull request #18 from alejandrojnm/master (41c7acb3) -* Merge pull request #16 from alejandrojnm/add-kubernetes-apis (730f2dd4) -* Add minor changes to Load Balancer methods (b8d5ddb8) -* Merge pull request #14 from alejandrojnm/feature/loadbalancer (e69c9746) -* Merge pull request #11 from rberrelleza/get-record (5590adda) -* Merge pull request #12 from rberrelleza/add-owners (338c4dfd) -* Add client.LastJSONResponse for the CLI to use (5378d41d) -* Merge pull request #7 from rberrelleza/fix-casing-forms (b3aba767) -* Merge pull request #9 from alejandrojnm/hostfix-network (f66cbcbb) -* Change string to map of strings (ab4ebaa8) -* Cleanup some minor issues (a69bef1d) -* Merge pull request #3 from rberrelleza/add-dns-apis (34870810) -* Merge pull request #4 from alejandrojnm/add-firewall-apis (554cc2b3) -* Merge pull request #5 from alejandrojnm/add-volumes-apis (9e8048fc) -* Merge pull request #6 from alejandrojnm/add-network-options (bbb04c3d) -* Change order of automated tests (57fae691) -* Ensure gofmt code compliance (e6d1cdcb) -* Remove panic (5d9bf4a7) -* Remove string interpolation, more go idiomatic this way (50fd2f10) -* Move JSON parsing for SimpleResponse to a helper method (8e8caf0a) -* Add CONTRIBUTING guide (a6d63538) -* Add status bage to README (1eabf12e) -* Add Go module support (2e043e15) -* Add GitHub action to test golang (e9c40745) -* Fix tests (08e7668c) -* Add Instance functions (264d4c87) -* Add Instance methods,first version (cd217b8b) -* Add tests for instance (31634d0f) -* Add Instance listing/fetching/creating (dc16cca8) -* - Add more options to the network options (5e258256) -* - Add New network options (6fbeb8a8) -* Add option to create a new network (e4a70af4) -* Fix error in volumes.go in the VolumesConfig (3db7ca46) -* Add volumes option to the civogo (52dca353) -* - Fix a error in firewall.go (5aecfa1c) -* - Fix some error in firewall.go (070605de) -* Add firewall option to the civogo (572557b6) -* fix test (ebde1c12) -* handle http errors (9c0f0967) -* add tests (37733dc1) -* Add functions to manipulate records (5f324bc9) -* - Fix a error network, now you can rename a network (79674176) -* Merge pull request #1 from civo/master (cbeb0cd4) -* change config for `form` (1ea969af) -* Add a default owner for the repo (fb92d21f) -* use Create instead of New (3055381e) -* New and delete Domain (5c6fe06b) -* add a result const (9c28c61c) -* fix GetDomain test (9df135c1) -* get and list records (5bf08246) -* update and new domain (acb6cd6a) -* - Update name in loadbalancer_test.go (4048f9c1) -* - Update the loadbalancer_test.go (fea3cf5b) -* - Fix some error in types in loadbalancer.go and loadbalancer_test.go (84b247e5) -* - Now can add, delete update and list the load balance (e2e8858b) -* - Initial files (4002274e) -* - Fix all recommendation from Andy, change NumTargetNodes from string to int, and in UpdateKubernetesClusters change map[string]string in favor of map[string]interface{} (2fdaa159) -* - Fix all recommendation from Andy (fa672090) -* - Final change in the kubernetes interface (7e0221f0) -* - Some change in kubernetes (9bb817f9) -* - First commit for kubernetes (05711724) -* - Update README.md with a list of all modules (58429347) -* Merge pull request #3 from civo/master (5a3cfcd6) -* Merge pull request #2 from civo/master (311f778e) -* - Update README.md, Fix error in loadbalancer.go (74877fa8) -* - Done the snapshot module (d2ede4b0) -* - First part of the snapshot api (eaf506c7) -* Merge branch 'master' into feature/api_snapshots (2408aaa3) -* Merge pull request #4 from civo/master (6d43cd65) -* Merge pull request #5 from civo/master (6e2137e8) -* - Add webhook module (467bd9a5) -* Merge pull request #6 from civo/master (55ee0710) -* - Fix some bug in dns.go dns_test.go (2edd5469) -* - Add option to update dns record (8ff8a494) -* Merge pull request #7 from civo/master (08c1c198) -* fix(loadbalancer): Fix data in test (29eab040) -* fix(loadbalancer): Fix struct in loadbalancer (450e0188) -* fix(firewall): Fix error in firewall test (f8658cf3) -* fix(firewall): Fix struct in firewall (6b4ca011) -* - Fix some bug in firewall.go and firewall_test.go (7f13e1c8) -* Merge pull request #9 from civo/master (27235987) -* Merge pull request #8 from civo/master (d118d875) -* fix(firewall): Change the id passed to the function (aff66676) -* fix(firewall): Fix name in the firewall (c480c528) -* fix(firewall): Fix name in the firewall (874f9ef6) -* feat(firewall): Add new option to search rule (58a86032) -* Merge pull request #11 from civo/master (53dc6a1e) -* Merge pull request #10 from alejandrojnm/hotfix/urgent_fix (99662c54) - -0.2.3 -============= -2020-04-03 - -* (hotfix) change snapshot config (77d29967) -* Change PublicIPRequired to a string to support IP moving (d0635c7e) -* add template endpoints (c73d51fa) -* Minor tweaks to SSH key struct (d20f49e0) -* update the ssh key file (f5eab5e2) -* Add new option to ssh (fdf845a6) -* Fail the build if any lint issues (95ae34b1) -* add rename endpoint for firewall (588340b6) -* Updated the lib to use json and not form for all request (09617776) -* Add body to client error responses (a8ebeb95) -* Merge pull request #25 from alejandrojnm/hostfix/add_function_firewall (5ccea39d) -* Merge pull request #24 from alejandrojnm/hotfix/urgent_fix (7b07ee24) -* Change GetDNSRecord to find by ID not name (4f53b021) -* Remove DNSDomainID from DNSRecordConfig (edfa5583) -* Merge pull request #23 from alejandrojnm/feature/update_dns_record (d8c0e967) -* Fix instance test (5ae22ab1) -* Fix signature of SetInstanceTags (c470a7d5) -* Add GetInstanceConsoleURL method (1032a3be) -* Check links in go documentation (efbe8dbc) -* Change link to docs (83fdce86) -* Update badges (7cbcb38c) -* Fix tests after some minor refactoring (f149ccdc) -* Change GB to Gigabytes (f0fa3a15) -* Fix lint issues (62a82aec) -* Change workflow to custom action (143ac314) -* Move lint to its own action (541c21a6) -* Use user-contributed lint action (4e265ae4) -* Install golint before running it (0aa650f4) -* Add lint to tests and Go 1.14 (0bbdcd0c) -* Add changelog (f2cd42c5) -* Add Find* methods to all areas (d9686526) -* Fix some linting issues with Kubernetes (8dafd66a) -* Add LICENSE (dd906190) -* Return an error if creating a client with an empty API key (ee8dab3b) -* Remove progress table from README as its now module complete (1bfa0af0) -* Add minor tweaks to Webhooks (0471e7d2) -* Merge pull request #21 from alejandrojnm/feature/webhook (2d7d45db) -* Change minor naming issues in snapshot module (fc4a75b7) -* Merge pull request #20 from alejandrojnm/feature/api_snapshots (4b2ae45c) -* Fix a couple of comments (81e4652e) -* Add charge endpoint (457dfa5d) -* Change awkward names of units in field names (f20cab75) -* Add instance size endpoints (971a4a47) -* Add quota endpoint (7b54da2c) -* Add region endpoint (66b590cc) -* Change List functions to be plural and prefixing DNS (e3433bb0) -* Update display of README progress (43d6bc08) -* Merge pull request #19 from alejandrojnm/hotfix/loadbalance_readme (eacb35ca) -* Merge pull request #18 from alejandrojnm/master (41c7acb3) -* Merge pull request #16 from alejandrojnm/add-kubernetes-apis (730f2dd4) -* Add minor changes to Load Balancer methods (b8d5ddb8) -* Merge pull request #14 from alejandrojnm/feature/loadbalancer (e69c9746) -* Merge pull request #11 from rberrelleza/get-record (5590adda) -* Merge pull request #12 from rberrelleza/add-owners (338c4dfd) -* Add client.LastJSONResponse for the CLI to use (5378d41d) -* Merge pull request #7 from rberrelleza/fix-casing-forms (b3aba767) -* Merge pull request #9 from alejandrojnm/hostfix-network (f66cbcbb) -* Change string to map of strings (ab4ebaa8) -* Cleanup some minor issues (a69bef1d) -* Merge pull request #3 from rberrelleza/add-dns-apis (34870810) -* Merge pull request #4 from alejandrojnm/add-firewall-apis (554cc2b3) -* Merge pull request #5 from alejandrojnm/add-volumes-apis (9e8048fc) -* Merge pull request #6 from alejandrojnm/add-network-options (bbb04c3d) -* Change order of automated tests (57fae691) -* Ensure gofmt code compliance (e6d1cdcb) -* Remove panic (5d9bf4a7) -* Remove string interpolation, more go idiomatic this way (50fd2f10) -* Move JSON parsing for SimpleResponse to a helper method (8e8caf0a) -* Add CONTRIBUTING guide (a6d63538) -* Add status bage to README (1eabf12e) -* Add Go module support (2e043e15) -* Add GitHub action to test golang (e9c40745) -* Fix tests (08e7668c) -* Add Instance functions (264d4c87) -* Add Instance methods,first version (cd217b8b) -* Add tests for instance (31634d0f) -* Add Instance listing/fetching/creating (dc16cca8) -* - Add more options to the network options (5e258256) -* - Add New network options (6fbeb8a8) -* Add option to create a new network (e4a70af4) -* Fix error in volumes.go in the VolumesConfig (3db7ca46) -* Add volumes option to the civogo (52dca353) -* - Fix a error in firewall.go (5aecfa1c) -* - Fix some error in firewall.go (070605de) -* Add firewall option to the civogo (572557b6) -* fix test (ebde1c12) -* handle http errors (9c0f0967) -* add tests (37733dc1) -* Add functions to manipulate records (5f324bc9) -* - Fix a error network, now you can rename a network (79674176) -* Merge pull request #1 from civo/master (cbeb0cd4) -* change config for `form` (1ea969af) -* Add a default owner for the repo (fb92d21f) -* use Create instead of New (3055381e) -* New and delete Domain (5c6fe06b) -* add a result const (9c28c61c) -* fix GetDomain test (9df135c1) -* get and list records (5bf08246) -* update and new domain (acb6cd6a) -* - Update name in loadbalancer_test.go (4048f9c1) -* - Update the loadbalancer_test.go (fea3cf5b) -* - Fix some error in types in loadbalancer.go and loadbalancer_test.go (84b247e5) -* - Now can add, delete update and list the load balance (e2e8858b) -* - Initial files (4002274e) -* - Fix all recommendation from Andy, change NumTargetNodes from string to int, and in UpdateKubernetesClusters change map[string]string in favor of map[string]interface{} (2fdaa159) -* - Fix all recommendation from Andy (fa672090) -* - Final change in the kubernetes interface (7e0221f0) -* - Some change in kubernetes (9bb817f9) -* - First commit for kubernetes (05711724) -* - Update README.md with a list of all modules (58429347) -* Merge pull request #3 from civo/master (5a3cfcd6) -* Merge pull request #2 from civo/master (311f778e) -* - Update README.md, Fix error in loadbalancer.go (74877fa8) -* - Done the snapshot module (d2ede4b0) -* - First part of the snapshot api (eaf506c7) -* Merge branch 'master' into feature/api_snapshots (2408aaa3) -* Merge pull request #4 from civo/master (6d43cd65) -* Merge pull request #5 from civo/master (6e2137e8) -* - Add webhook module (467bd9a5) -* Merge pull request #6 from civo/master (55ee0710) -* - Fix some bug in dns.go dns_test.go (2edd5469) -* - Add option to update dns record (8ff8a494) -* Merge pull request #7 from civo/master (08c1c198) -* fix(loadbalancer): Fix data in test (29eab040) -* fix(loadbalancer): Fix struct in loadbalancer (450e0188) -* fix(firewall): Fix error in firewall test (f8658cf3) -* fix(firewall): Fix struct in firewall (6b4ca011) -* - Fix some bug in firewall.go and firewall_test.go (7f13e1c8) -* Merge pull request #9 from civo/master (27235987) -* Merge pull request #8 from civo/master (d118d875) -* fix(firewall): Change the id passed to the function (aff66676) -* fix(firewall): Fix name in the firewall (c480c528) -* fix(firewall): Fix name in the firewall (874f9ef6) -* feat(firewall): Add new option to search rule (58a86032) -* Merge pull request #11 from civo/master (53dc6a1e) -* Merge pull request #10 from alejandrojnm/hotfix/urgent_fix (99662c54) - -0.2.2 -============= -2020-03-27 - -* Change PublicIPRequired to a string to support IP moving (d0635c7e) -* add template endpoints (c73d51fa) -* Minor tweaks to SSH key struct (d20f49e0) -* update the ssh key file (f5eab5e2) -* Add new option to ssh (fdf845a6) -* Fail the build if any lint issues (95ae34b1) -* add rename endpoint for firewall (588340b6) -* Updated the lib to use json and not form for all request (09617776) -* Add body to client error responses (a8ebeb95) -* Merge pull request #25 from alejandrojnm/hostfix/add_function_firewall (5ccea39d) -* Merge pull request #24 from alejandrojnm/hotfix/urgent_fix (7b07ee24) -* Change GetDNSRecord to find by ID not name (4f53b021) -* Remove DNSDomainID from DNSRecordConfig (edfa5583) -* Merge pull request #23 from alejandrojnm/feature/update_dns_record (d8c0e967) -* Fix instance test (5ae22ab1) -* Fix signature of SetInstanceTags (c470a7d5) -* Add GetInstanceConsoleURL method (1032a3be) -* Check links in go documentation (efbe8dbc) -* Change link to docs (83fdce86) -* Update badges (7cbcb38c) -* Fix tests after some minor refactoring (f149ccdc) -* Change GB to Gigabytes (f0fa3a15) -* Fix lint issues (62a82aec) -* Change workflow to custom action (143ac314) -* Move lint to its own action (541c21a6) -* Use user-contributed lint action (4e265ae4) -* Install golint before running it (0aa650f4) -* Add lint to tests and Go 1.14 (0bbdcd0c) -* Add changelog (f2cd42c5) -* Add Find* methods to all areas (d9686526) -* Fix some linting issues with Kubernetes (8dafd66a) -* Add LICENSE (dd906190) -* Return an error if creating a client with an empty API key (ee8dab3b) -* Remove progress table from README as its now module complete (1bfa0af0) -* Add minor tweaks to Webhooks (0471e7d2) -* Merge pull request #21 from alejandrojnm/feature/webhook (2d7d45db) -* Change minor naming issues in snapshot module (fc4a75b7) -* Merge pull request #20 from alejandrojnm/feature/api_snapshots (4b2ae45c) -* Fix a couple of comments (81e4652e) -* Add charge endpoint (457dfa5d) -* Change awkward names of units in field names (f20cab75) -* Add instance size endpoints (971a4a47) -* Add quota endpoint (7b54da2c) -* Add region endpoint (66b590cc) -* Change List functions to be plural and prefixing DNS (e3433bb0) -* Update display of README progress (43d6bc08) -* Merge pull request #19 from alejandrojnm/hotfix/loadbalance_readme (eacb35ca) -* Merge pull request #18 from alejandrojnm/master (41c7acb3) -* Merge pull request #16 from alejandrojnm/add-kubernetes-apis (730f2dd4) -* Add minor changes to Load Balancer methods (b8d5ddb8) -* Merge pull request #14 from alejandrojnm/feature/loadbalancer (e69c9746) -* Merge pull request #11 from rberrelleza/get-record (5590adda) -* Merge pull request #12 from rberrelleza/add-owners (338c4dfd) -* Add client.LastJSONResponse for the CLI to use (5378d41d) -* Merge pull request #7 from rberrelleza/fix-casing-forms (b3aba767) -* Merge pull request #9 from alejandrojnm/hostfix-network (f66cbcbb) -* Change string to map of strings (ab4ebaa8) -* Cleanup some minor issues (a69bef1d) -* Merge pull request #3 from rberrelleza/add-dns-apis (34870810) -* Merge pull request #4 from alejandrojnm/add-firewall-apis (554cc2b3) -* Merge pull request #5 from alejandrojnm/add-volumes-apis (9e8048fc) -* Merge pull request #6 from alejandrojnm/add-network-options (bbb04c3d) -* Change order of automated tests (57fae691) -* Ensure gofmt code compliance (e6d1cdcb) -* Remove panic (5d9bf4a7) -* Remove string interpolation, more go idiomatic this way (50fd2f10) -* Move JSON parsing for SimpleResponse to a helper method (8e8caf0a) -* Add CONTRIBUTING guide (a6d63538) -* Add status bage to README (1eabf12e) -* Add Go module support (2e043e15) -* Add GitHub action to test golang (e9c40745) -* Fix tests (08e7668c) -* Add Instance functions (264d4c87) -* Add Instance methods,first version (cd217b8b) -* Add tests for instance (31634d0f) -* Add Instance listing/fetching/creating (dc16cca8) -* - Add more options to the network options (5e258256) -* - Add New network options (6fbeb8a8) -* Add option to create a new network (e4a70af4) -* Fix error in volumes.go in the VolumesConfig (3db7ca46) -* Add volumes option to the civogo (52dca353) -* - Fix a error in firewall.go (5aecfa1c) -* - Fix some error in firewall.go (070605de) -* Add firewall option to the civogo (572557b6) -* fix test (ebde1c12) -* handle http errors (9c0f0967) -* add tests (37733dc1) -* Add functions to manipulate records (5f324bc9) -* - Fix a error network, now you can rename a network (79674176) -* Merge pull request #1 from civo/master (cbeb0cd4) -* change config for `form` (1ea969af) -* Add a default owner for the repo (fb92d21f) -* use Create instead of New (3055381e) -* New and delete Domain (5c6fe06b) -* add a result const (9c28c61c) -* fix GetDomain test (9df135c1) -* get and list records (5bf08246) -* update and new domain (acb6cd6a) -* - Update name in loadbalancer_test.go (4048f9c1) -* - Update the loadbalancer_test.go (fea3cf5b) -* - Fix some error in types in loadbalancer.go and loadbalancer_test.go (84b247e5) -* - Now can add, delete update and list the load balance (e2e8858b) -* - Initial files (4002274e) -* - Fix all recommendation from Andy, change NumTargetNodes from string to int, and in UpdateKubernetesClusters change map[string]string in favor of map[string]interface{} (2fdaa159) -* - Fix all recommendation from Andy (fa672090) -* - Final change in the kubernetes interface (7e0221f0) -* - Some change in kubernetes (9bb817f9) -* - First commit for kubernetes (05711724) -* - Update README.md with a list of all modules (58429347) -* Merge pull request #3 from civo/master (5a3cfcd6) -* Merge pull request #2 from civo/master (311f778e) -* - Update README.md, Fix error in loadbalancer.go (74877fa8) -* - Done the snapshot module (d2ede4b0) -* - First part of the snapshot api (eaf506c7) -* Merge branch 'master' into feature/api_snapshots (2408aaa3) -* Merge pull request #4 from civo/master (6d43cd65) -* Merge pull request #5 from civo/master (6e2137e8) -* - Add webhook module (467bd9a5) -* Merge pull request #6 from civo/master (55ee0710) -* - Fix some bug in dns.go dns_test.go (2edd5469) -* - Add option to update dns record (8ff8a494) -* Merge pull request #7 from civo/master (08c1c198) -* fix(loadbalancer): Fix data in test (29eab040) -* fix(loadbalancer): Fix struct in loadbalancer (450e0188) -* fix(firewall): Fix error in firewall test (f8658cf3) -* fix(firewall): Fix struct in firewall (6b4ca011) -* - Fix some bug in firewall.go and firewall_test.go (7f13e1c8) -* Merge pull request #9 from civo/master (27235987) -* Merge pull request #8 from civo/master (d118d875) -* fix(firewall): Change the id passed to the function (aff66676) -* fix(firewall): Fix name in the firewall (c480c528) -* fix(firewall): Fix name in the firewall (874f9ef6) -* feat(firewall): Add new option to search rule (58a86032) -* Merge pull request #11 from civo/master (53dc6a1e) -* Merge pull request #10 from alejandrojnm/hotfix/urgent_fix (99662c54) - -0.2.1 -============= -2020-03-27 - -* add template endpoints (c73d51fa) - -0.2.0 -============= -2020-03-24 - -* Minor tweaks to SSH key struct (d20f49e0) -* update the ssh key file (f5eab5e2) -* Add new option to ssh (fdf845a6) -* Fail the build if any lint issues (95ae34b1) - -0.1.9 -============= -2020-03-20 - -* add rename endpoint for firewall (588340b6) -* Updated the lib to use json and not form for all request (09617776) -* Add body to client error responses (a8ebeb95) -* Merge pull request #25 from alejandrojnm/hostfix/add_function_firewall (5ccea39d) -* Merge pull request #24 from alejandrojnm/hotfix/urgent_fix (7b07ee24) -* Change GetDNSRecord to find by ID not name (4f53b021) -* Remove DNSDomainID from DNSRecordConfig (edfa5583) -* Merge pull request #23 from alejandrojnm/feature/update_dns_record (d8c0e967) -* Fix instance test (5ae22ab1) -* Fix signature of SetInstanceTags (c470a7d5) -* Add GetInstanceConsoleURL method (1032a3be) -* Check links in go documentation (efbe8dbc) -* Change link to docs (83fdce86) -* Update badges (7cbcb38c) -* Fix tests after some minor refactoring (f149ccdc) -* Change GB to Gigabytes (f0fa3a15) -* Fix lint issues (62a82aec) -* Change workflow to custom action (143ac314) -* Move lint to its own action (541c21a6) -* Use user-contributed lint action (4e265ae4) -* Install golint before running it (0aa650f4) -* Add lint to tests and Go 1.14 (0bbdcd0c) -* Add changelog (f2cd42c5) -* Add Find* methods to all areas (d9686526) -* Fix some linting issues with Kubernetes (8dafd66a) -* Add LICENSE (dd906190) -* Return an error if creating a client with an empty API key (ee8dab3b) -* Remove progress table from README as its now module complete (1bfa0af0) -* Add minor tweaks to Webhooks (0471e7d2) -* Merge pull request #21 from alejandrojnm/feature/webhook (2d7d45db) -* Change minor naming issues in snapshot module (fc4a75b7) -* Merge pull request #20 from alejandrojnm/feature/api_snapshots (4b2ae45c) -* Fix a couple of comments (81e4652e) -* Add charge endpoint (457dfa5d) -* Change awkward names of units in field names (f20cab75) -* Add instance size endpoints (971a4a47) -* Add quota endpoint (7b54da2c) -* Add region endpoint (66b590cc) -* Change List functions to be plural and prefixing DNS (e3433bb0) -* Update display of README progress (43d6bc08) -* Merge pull request #19 from alejandrojnm/hotfix/loadbalance_readme (eacb35ca) -* Merge pull request #18 from alejandrojnm/master (41c7acb3) -* Merge pull request #16 from alejandrojnm/add-kubernetes-apis (730f2dd4) -* Add minor changes to Load Balancer methods (b8d5ddb8) -* Merge pull request #14 from alejandrojnm/feature/loadbalancer (e69c9746) -* Merge pull request #11 from rberrelleza/get-record (5590adda) -* Merge pull request #12 from rberrelleza/add-owners (338c4dfd) -* Add client.LastJSONResponse for the CLI to use (5378d41d) -* Merge pull request #7 from rberrelleza/fix-casing-forms (b3aba767) -* Merge pull request #9 from alejandrojnm/hostfix-network (f66cbcbb) -* Change string to map of strings (ab4ebaa8) -* Cleanup some minor issues (a69bef1d) -* Merge pull request #3 from rberrelleza/add-dns-apis (34870810) -* Merge pull request #4 from alejandrojnm/add-firewall-apis (554cc2b3) -* Merge pull request #5 from alejandrojnm/add-volumes-apis (9e8048fc) -* Merge pull request #6 from alejandrojnm/add-network-options (bbb04c3d) -* Change order of automated tests (57fae691) -* Ensure gofmt code compliance (e6d1cdcb) -* Remove panic (5d9bf4a7) -* Remove string interpolation, more go idiomatic this way (50fd2f10) -* Move JSON parsing for SimpleResponse to a helper method (8e8caf0a) -* Add CONTRIBUTING guide (a6d63538) -* Add status bage to README (1eabf12e) -* Add Go module support (2e043e15) -* Add GitHub action to test golang (e9c40745) -* Fix tests (08e7668c) -* Add Instance functions (264d4c87) -* Add Instance methods,first version (cd217b8b) -* Add tests for instance (31634d0f) -* Add Instance listing/fetching/creating (dc16cca8) -* - Add more options to the network options (5e258256) -* - Add New network options (6fbeb8a8) -* Add option to create a new network (e4a70af4) -* Fix error in volumes.go in the VolumesConfig (3db7ca46) -* Add volumes option to the civogo (52dca353) -* - Fix a error in firewall.go (5aecfa1c) -* - Fix some error in firewall.go (070605de) -* Add firewall option to the civogo (572557b6) -* fix test (ebde1c12) -* handle http errors (9c0f0967) -* add tests (37733dc1) -* Add functions to manipulate records (5f324bc9) -* - Fix a error network, now you can rename a network (79674176) -* Merge pull request #1 from civo/master (cbeb0cd4) -* change config for `form` (1ea969af) -* Add a default owner for the repo (fb92d21f) -* use Create instead of New (3055381e) -* New and delete Domain (5c6fe06b) -* add a result const (9c28c61c) -* fix GetDomain test (9df135c1) -* get and list records (5bf08246) -* update and new domain (acb6cd6a) -* - Update name in loadbalancer_test.go (4048f9c1) -* - Update the loadbalancer_test.go (fea3cf5b) -* - Fix some error in types in loadbalancer.go and loadbalancer_test.go (84b247e5) -* - Now can add, delete update and list the load balance (e2e8858b) -* - Initial files (4002274e) -* - Fix all recommendation from Andy, change NumTargetNodes from string to int, and in UpdateKubernetesClusters change map[string]string in favor of map[string]interface{} (2fdaa159) -* - Fix all recommendation from Andy (fa672090) -* - Final change in the kubernetes interface (7e0221f0) -* - Some change in kubernetes (9bb817f9) -* - First commit for kubernetes (05711724) -* - Update README.md with a list of all modules (58429347) -* Merge pull request #3 from civo/master (5a3cfcd6) -* Merge pull request #2 from civo/master (311f778e) -* - Update README.md, Fix error in loadbalancer.go (74877fa8) -* - Done the snapshot module (d2ede4b0) -* - First part of the snapshot api (eaf506c7) -* Merge branch 'master' into feature/api_snapshots (2408aaa3) -* Merge pull request #4 from civo/master (6d43cd65) -* Merge pull request #5 from civo/master (6e2137e8) -* - Add webhook module (467bd9a5) -* Merge pull request #6 from civo/master (55ee0710) -* - Fix some bug in dns.go dns_test.go (2edd5469) -* - Add option to update dns record (8ff8a494) -* Merge pull request #7 from civo/master (08c1c198) -* fix(loadbalancer): Fix data in test (29eab040) -* fix(loadbalancer): Fix struct in loadbalancer (450e0188) -* fix(firewall): Fix error in firewall test (f8658cf3) -* fix(firewall): Fix struct in firewall (6b4ca011) -* - Fix some bug in firewall.go and firewall_test.go (7f13e1c8) -* Merge pull request #9 from civo/master (27235987) -* Merge pull request #8 from civo/master (d118d875) -* fix(firewall): Change the id passed to the function (aff66676) -* fix(firewall): Fix name in the firewall (c480c528) -* fix(firewall): Fix name in the firewall (874f9ef6) -* feat(firewall): Add new option to search rule (58a86032) -* Merge pull request #11 from civo/master (53dc6a1e) -* Merge pull request #10 from alejandrojnm/hotfix/urgent_fix (99662c54) - -0.1.8 -============= -2020-03-19 - -* Updated the lib to use json and not form for all request (09617776) -* Add body to client error responses (a8ebeb95) - -0.1.7 -============= -2020-03-16 - -* Merge pull request #25 from alejandrojnm/hostfix/add_function_firewall (5ccea39d) - -0.1.6 -============= -2020-03-16 - -* Merge pull request #24 from alejandrojnm/hotfix/urgent_fix (7b07ee24) - -0.1.5 -============= -2020-03-12 - -* Change GetDNSRecord to find by ID not name (4f53b021) - -0.1.4 -============= -2020-03-12 - -* Remove DNSDomainID from DNSRecordConfig (edfa5583) -* Merge pull request #23 from alejandrojnm/feature/update_dns_record (d8c0e967) - -0.1.3 -============= -2020-03-10 - -* Fix instance test (5ae22ab1) - -0.1.2 -============= -2020-03-10 - -* Fix signature of SetInstanceTags (c470a7d5) - -0.1.1 -============= -2020-03-10 - -* Add GetInstanceConsoleURL method (1032a3be) -* Check links in go documentation (efbe8dbc) -* Change link to docs (83fdce86) -* Update badges (7cbcb38c) -* Fix tests after some minor refactoring (f149ccdc) -* Change GB to Gigabytes (f0fa3a15) -* Fix lint issues (62a82aec) -* Change workflow to custom action (143ac314) -* Move lint to its own action (541c21a6) -* Use user-contributed lint action (4e265ae4) -* Install golint before running it (0aa650f4) -* Add lint to tests and Go 1.14 (0bbdcd0c) - -0.1.0 -============= -2020-03-03 - -* Add changelog (f2cd42c5) -* Add Find* methods to all areas (d9686526) -* Fix some linting issues with Kubernetes (8dafd66a) -* Add LICENSE (dd906190) -* Return an error if creating a client with an empty API key (ee8dab3b) -* Remove progress table from README as its now module complete (1bfa0af0) -* Add minor tweaks to Webhooks (0471e7d2) -* Merge pull request #21 from alejandrojnm/feature/webhook (2d7d45db) -* Change minor naming issues in snapshot module (fc4a75b7) -* Merge pull request #20 from alejandrojnm/feature/api_snapshots (4b2ae45c) -* Fix a couple of comments (81e4652e) -* Add charge endpoint (457dfa5d) -* Change awkward names of units in field names (f20cab75) -* Add instance size endpoints (971a4a47) -* Add quota endpoint (7b54da2c) -* Add region endpoint (66b590cc) -* Change List functions to be plural and prefixing DNS (e3433bb0) -* Update display of README progress (43d6bc08) -* Merge pull request #19 from alejandrojnm/hotfix/loadbalance_readme (eacb35ca) -* Merge pull request #18 from alejandrojnm/master (41c7acb3) -* Merge pull request #16 from alejandrojnm/add-kubernetes-apis (730f2dd4) -* Add minor changes to Load Balancer methods (b8d5ddb8) -* Merge pull request #14 from alejandrojnm/feature/loadbalancer (e69c9746) -* Merge pull request #11 from rberrelleza/get-record (5590adda) -* Merge pull request #12 from rberrelleza/add-owners (338c4dfd) -* Add client.LastJSONResponse for the CLI to use (5378d41d) -* Merge pull request #7 from rberrelleza/fix-casing-forms (b3aba767) -* Merge pull request #9 from alejandrojnm/hostfix-network (f66cbcbb) -* Change string to map of strings (ab4ebaa8) -* Cleanup some minor issues (a69bef1d) -* Merge pull request #3 from rberrelleza/add-dns-apis (34870810) -* Merge pull request #4 from alejandrojnm/add-firewall-apis (554cc2b3) -* Merge pull request #5 from alejandrojnm/add-volumes-apis (9e8048fc) -* Merge pull request #6 from alejandrojnm/add-network-options (bbb04c3d) -* Change order of automated tests (57fae691) -* Ensure gofmt code compliance (e6d1cdcb) -* Remove panic (5d9bf4a7) -* Remove string interpolation, more go idiomatic this way (50fd2f10) -* Move JSON parsing for SimpleResponse to a helper method (8e8caf0a) -* Add CONTRIBUTING guide (a6d63538) -* Add status bage to README (1eabf12e) -* Add Go module support (2e043e15) -* Add GitHub action to test golang (e9c40745) -* Fix tests (08e7668c) -* Add Instance functions (264d4c87) -* Add Instance methods,first version (cd217b8b) -* Add tests for instance (31634d0f) -* Add Instance listing/fetching/creating (dc16cca8) -* - Add more options to the network options (5e258256) -* - Add New network options (6fbeb8a8) -* Add option to create a new network (e4a70af4) -* Fix error in volumes.go in the VolumesConfig (3db7ca46) -* Add volumes option to the civogo (52dca353) -* - Fix a error in firewall.go (5aecfa1c) -* - Fix some error in firewall.go (070605de) -* Add firewall option to the civogo (572557b6) -* fix test (ebde1c12) -* handle http errors (9c0f0967) -* add tests (37733dc1) -* Add functions to manipulate records (5f324bc9) -* - Fix a error network, now you can rename a network (79674176) -* Merge pull request #1 from civo/master (cbeb0cd4) -* change config for `form` (1ea969af) -* Add a default owner for the repo (fb92d21f) -* use Create instead of New (3055381e) -* New and delete Domain (5c6fe06b) -* add a result const (9c28c61c) -* fix GetDomain test (9df135c1) -* get and list records (5bf08246) -* update and new domain (acb6cd6a) -* - Update name in loadbalancer_test.go (4048f9c1) -* - Update the loadbalancer_test.go (fea3cf5b) -* - Fix some error in types in loadbalancer.go and loadbalancer_test.go (84b247e5) -* - Now can add, delete update and list the load balance (e2e8858b) -* - Initial files (4002274e) -* - Fix all recommendation from Andy, change NumTargetNodes from string to int, and in UpdateKubernetesClusters change map[string]string in favor of map[string]interface{} (2fdaa159) -* - Fix all recommendation from Andy (fa672090) -* - Final change in the kubernetes interface (7e0221f0) -* - Some change in kubernetes (9bb817f9) -* - First commit for kubernetes (05711724) -* - Update README.md with a list of all modules (58429347) -* Merge pull request #3 from civo/master (5a3cfcd6) -* Merge pull request #2 from civo/master (311f778e) -* - Update README.md, Fix error in loadbalancer.go (74877fa8) -* - Done the snapshot module (d2ede4b0) -* - First part of the snapshot api (eaf506c7) -* Merge branch 'master' into feature/api_snapshots (2408aaa3) -* Merge pull request #4 from civo/master (6d43cd65) -* Merge pull request #5 from civo/master (6e2137e8) -* - Add webhook module (467bd9a5) -* Merge pull request #6 from civo/master (55ee0710) - - diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/CODEOWNERS b/cluster-autoscaler/vendor/github.com/civo/civogo/CODEOWNERS deleted file mode 100644 index 636029f12177..000000000000 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/CODEOWNERS +++ /dev/null @@ -1,3 +0,0 @@ -# These owners will be the default owners for everything in -# the repo. -* @andyjeffries \ No newline at end of file diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/CONTRIBUTING.md b/cluster-autoscaler/vendor/github.com/civo/civogo/CONTRIBUTING.md deleted file mode 100644 index d0d0734cb51e..000000000000 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/CONTRIBUTING.md +++ /dev/null @@ -1,29 +0,0 @@ -# Contributing - -If you submit a pull request, please keep the following guidelines in mind: - -1. Code should be `go fmt` compliant. -2. Types, structs and funcs should be documented. -3. Tests pass. - -## Getting set up - -Assuming your `$GOPATH` is set up according to your desires, run: - -```sh -go get github.com/civo/civogo -``` - -If outside `$GOPATH`, just clone the repository: - -```sh -git clone https://github.com/civo/civogo -``` - -## Running tests - -When working on code in this repository, tests can be run via: - -```sh -go test . -``` diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/LICENSE b/cluster-autoscaler/vendor/github.com/civo/civogo/LICENSE deleted file mode 100644 index 709a164a2861..000000000000 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License - -Copyright (c) 2020 Civo Ltd. https://www.civo.com - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/README.md b/cluster-autoscaler/vendor/github.com/civo/civogo/README.md deleted file mode 100644 index fb58d17d8a1b..000000000000 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/README.md +++ /dev/null @@ -1,163 +0,0 @@ -# Civogo - The Golang client library for Civo - -[![go.dev reference](https://img.shields.io/badge/go.dev-reference-007d9c?logo=go&logoColor=white&style=flat-square)](https://pkg.go.dev/github.com/civo/civogo?tab=doc) -[![Build Status](https://github.com/civo/civogo/workflows/Test/badge.svg)](https://github.com/civo/civogo/actions) -[![Lint](https://github.com/civo/civogo/workflows/Lint/badge.svg)](https://github.com/civo/civogo/actions) - -Civogo is a Go client library for accessing the Civo cloud API. - -You can view the client API docs at [https://pkg.go.dev/github.com/civo/civogo](https://pkg.go.dev/github.com/civo/civogo) and view the API documentation at [https://api.civo.com](https://api.civo.com) - - -## Install - -```sh -go get github.com/civo/civogo -``` - -## Usage - -```go -import "github.com/civo/civogo" -``` - -From there you create a Civo client specifying your API key and a region. Then you can use public methods to interact with Civo's API. - -### Authentication - -You will need both an API key and a region code to create a new client. - -Your API key is listed within the [Civo control panel's security page](https://www.civo.com/account/security). You can also reset the token there, for example, if accidentally put it in source code and found it had been leaked. - -For the region code, use any region you know exists, e.g. `LON1`. See the [API documentation](https://github.com/civo/civogo.git) for details. - -```go -package main - -import ( - "context" - "github.com/civo/civogo" -) - -const ( - apiKey = "mykeygoeshere" - regionCode = "LON1" -) - -func main() { - client, err := civogo.NewClient(apiKey, regionCode) - // ... -} -``` - -## Examples - -To create a new Instance: - -```go -config, err := client.NewInstanceConfig() -if err != nil { - t.Errorf("Failed to create a new config: %s", err) - return err -} - -config.Hostname = "foo.example.com" - -instance, err := client.CreateInstance(config) -if err != nil { - t.Errorf("Failed to create instance: %s", err) - return err -} -``` - -To get all Instances: - -```go -instances, err := client.ListAllInstances() -if err != nil { - t.Errorf("Failed to create instance: %s", err) - return err -} - -for _, i := range instances { - fmt.Println(i.Hostname) -} -``` - -### Pagination - -If a list of objects is paginated by the API, you must request pages individually. For example, to fetch all instances without using the `ListAllInstances` method: - -```go -func MyListAllInstances(client *civogo.Client) ([]civogo.Instance, error) { - list := []civogo.Instance{} - - pageOfItems, err := client.ListInstances(1, 50) - if err != nil { - return []civogo.Instance{}, err - } - - if pageOfItems.Pages == 1 { - return pageOfItems.Items, nil - } - - for page := 2; page<=pageOfItems.Pages; page++ { - pageOfItems, err := client.ListInstances(1, 50) - if err != nil { - return []civogo.Instance{}, err - } - - list = append(list, pageOfItems.Items) - } - - return list, nil -} -``` - -## Error handler -​ -In the latest version of the library we have added a new way to handle errors. -Below are some examples of how to use the new error handler, and the complete list of errors is [here](errors.go). -​ -This is an example of how to make use of the new errors, suppose we want to create a new Kubernetes cluster, and do it this way but choose a name that already exists within the clusters that we have: -​ -```go -// kubernetes config -configK8s := &civogo.KubernetesClusterConfig{ - NumTargetNodes: 5, - Name: "existent-name", -} -// Send to create the cluster -resp, err := client.NewKubernetesClusters(configK8s) -if err != nil { - if errors.Is(err, civogo.DatabaseKubernetesClusterDuplicateError) { - // add some actions - } -} -``` -The following lines are new: -​ -```go -if err != nil { - if errors.Is(err, civogo.DatabaseKubernetesClusterDuplicateError) { - // add some actions - } -} -``` -In this way. we can make decisions faster based on known errors, and we know what to expect. There is also the option of being able to say this to account for some errors but not others: -​ -```go -if err != nil { - if errors.Is(err, civogo.DatabaseKubernetesClusterDuplicateError) { - // add some actions - } - if errors.Is(err, civogo.UnknownError) { - // exit with error - } -} -``` -We can use `UnknownError` for errors that are not defined. - -## Contributing - -If you want to get involved, we'd love to receive a pull request - or an offer to help over our KUBE100 Slack channel. Please see the [contribution guidelines](CONTRIBUTING.md). diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/account.go b/cluster-autoscaler/vendor/github.com/civo/civogo/account.go deleted file mode 100644 index d31863faab5f..000000000000 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/account.go +++ /dev/null @@ -1,43 +0,0 @@ -package civogo - -import ( - "bytes" - "encoding/json" -) - -// PaginatedAccounts returns a paginated list of Account object -type PaginatedAccounts struct { - Page int `json:"page"` - PerPage int `json:"per_page"` - Pages int `json:"pages"` - Items []Account `json:"items"` -} - -// ListAccounts lists all accounts -func (c *Client) ListAccounts() (*PaginatedAccounts, error) { - resp, err := c.SendGetRequest("/v2/accounts") - if err != nil { - return nil, decodeError(err) - } - - accounts := &PaginatedAccounts{} - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&accounts); err != nil { - return nil, decodeError(err) - } - - return accounts, nil -} - -// GetAccountID returns the account ID -func (c *Client) GetAccountID() string { - accounts, err := c.ListAccounts() - if err != nil { - return "" - } - - if len(accounts.Items) == 0 { - return "No account found" - } - - return accounts.Items[0].ID -} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/application.go b/cluster-autoscaler/vendor/github.com/civo/civogo/application.go deleted file mode 100644 index c658a7abf845..000000000000 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/application.go +++ /dev/null @@ -1,194 +0,0 @@ -package civogo - -import ( - "bytes" - "encoding/json" - "fmt" - "strings" - - "github.com/civo/civogo/utils" -) - -// Application is the struct for the Application model -type Application struct { - Name string `json:"name" validate:"required"` - ID string `json:"id"` - NetworkID string `json:"network_id" validate:"required"` - Description string `json:"description"` - Image string `json:"image"` - Size string `json:"size"` - ProcessInfo []ProcessInfo `json:"process_info,omitempty"` - Domains []string `json:"domains,omitempty"` - SSHKeyIDs []string `json:"ssh_key_ids,omitempty"` - Config []EnvVar `json:"config,omitempty"` - // Status can be one of: - // - "building": Implies platform is building - // - "available": Implies platform is available to accept image - // - "ready": Implies app is ready - Status string `json:"status"` -} - -// ApplicationConfig describes the parameters for a new CivoApp -type ApplicationConfig struct { - Name string `json:"name" validate:"required"` - NetworkID string `json:"network_id" validate:"required"` - Description string `json:"description"` - Size string `json:"size"` - SSHKeyIDs []string `json:"ssh_key_ids,omitempty"` -} - -// UpdateApplicationRequest is the struct for the UpdateApplication request -type UpdateApplicationRequest struct { - Name string `json:"name"` - Advanced bool `json:"advanced"` - Image string `json:"image" ` - Description string `json:"description"` - ProcessInfo []ProcessInfo `json:"process_info"` - Size string `json:"size" schema:"size"` - SSHKeyIDs []string `json:"ssh_key_ids" ` - Config []EnvVar `json:"config"` - Domains []string `json:"domains"` -} - -// PaginatedApplications returns a paginated list of Application object -type PaginatedApplications struct { - Page int `json:"page"` - PerPage int `json:"per_page"` - Pages int `json:"pages"` - Items []Application `json:"items"` -} - -// EnvVar holds key-value pairs for an application -type EnvVar struct { - Name string `json:"name"` - Value string `json:"value"` -} - -// ProcessInfo contains the information about the process obtained from Procfile -type ProcessInfo struct { - ProcessType string `json:"processType"` - ProcessCount int `json:"processCount"` -} - -// ErrAppDomainNotFound is returned when the domain is not found -var ErrAppDomainNotFound = fmt.Errorf("domain not found") - -// ListApplications returns all applications in that specific region -func (c *Client) ListApplications() (*PaginatedApplications, error) { - resp, err := c.SendGetRequest("/v2/applications") - if err != nil { - return nil, decodeError(err) - } - - application := &PaginatedApplications{} - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&application); err != nil { - return nil, decodeError(err) - } - - return application, nil -} - -// GetApplication returns an application by ID -func (c *Client) GetApplication(id string) (*Application, error) { - resp, err := c.SendGetRequest(fmt.Sprintf("/v2/applications/%s", id)) - if err != nil { - return nil, decodeError(err) - } - - application := &Application{} - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&application); err != nil { - return nil, decodeError(err) - } - - return application, nil -} - -// NewApplicationConfig returns an initialized config for a new application -func (c *Client) NewApplicationConfig() (*ApplicationConfig, error) { - network, err := c.GetDefaultNetwork() - if err != nil { - return nil, decodeError(err) - } - - return &ApplicationConfig{ - Name: utils.RandomName(), - NetworkID: network.ID, - Description: "", - Size: "small", - SSHKeyIDs: []string{}, - }, nil -} - -// FindApplication finds an application by either part of the ID or part of the name -func (c *Client) FindApplication(search string) (*Application, error) { - apps, err := c.ListApplications() - if err != nil { - return nil, decodeError(err) - } - - exactMatch := false - partialMatchesCount := 0 - result := Application{} - - for _, value := range apps.Items { - if value.Name == search || value.ID == search { - exactMatch = true - result = value - } else if strings.Contains(value.Name, search) || strings.Contains(value.ID, search) { - if !exactMatch { - result = value - partialMatchesCount++ - } - } - } - - if exactMatch || partialMatchesCount == 1 { - return &result, nil - } else if partialMatchesCount > 1 { - err := fmt.Errorf("unable to find %s because there were multiple matches", search) - return nil, MultipleMatchesError.wrap(err) - } else { - err := fmt.Errorf("unable to find %s, zero matches", search) - return nil, ZeroMatchesError.wrap(err) - } -} - -// CreateApplication creates a new application -func (c *Client) CreateApplication(config *ApplicationConfig) (*Application, error) { - body, err := c.SendPostRequest("/v2/applications", config) - if err != nil { - return nil, decodeError(err) - } - - var application Application - if err := json.NewDecoder(bytes.NewReader(body)).Decode(&application); err != nil { - return nil, err - } - - return &application, nil -} - -// UpdateApplication updates an application -func (c *Client) UpdateApplication(id string, application *UpdateApplicationRequest) (*Application, error) { - body, err := c.SendPutRequest(fmt.Sprintf("/v2/applications/%s", id), application) - if err != nil { - return nil, decodeError(err) - } - - updatedApplication := &Application{} - if err := json.NewDecoder(bytes.NewReader(body)).Decode(updatedApplication); err != nil { - return nil, err - } - - return updatedApplication, nil -} - -// DeleteApplication deletes an application -func (c *Client) DeleteApplication(id string) (*SimpleResponse, error) { - resp, err := c.SendDeleteRequest(fmt.Sprintf("/v2/applications/%s", id)) - if err != nil { - return nil, decodeError(err) - } - - return c.DecodeSimpleResponse(resp) -} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/changelog.yml b/cluster-autoscaler/vendor/github.com/civo/civogo/changelog.yml deleted file mode 100644 index 694ac5014d1f..000000000000 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/changelog.yml +++ /dev/null @@ -1,9970 +0,0 @@ -- semver: 0.2.52 - date: 2021-08-30T17:14:48.6307+08:00 - packager: "" - changes: - - commit: d69977c64e9f3f1d6157a803959f9080604719ec - note: |- - Add new struct fields for cluster firewall (#60) - - * Add new struct fields for cluster firewall - - * Add firewall ID to Kubernetes cluster response struct - - * Update KubernetesClusterConfig struct to match with latest create cluster API - author: - name: Zulh - email: 75463191+zulh-civo@users.noreply.github.com - committer: - name: GitHub - email: noreply@github.com - - commit: 6f7d2d147b622a300b893e827763ddd1f112172d - note: Update the changelog - author: - name: Alejandro J. Nuñez Madrazo - email: alejandrojnm@gmail.com - committer: - name: Alejandro J. Nuñez Madrazo - email: alejandrojnm@gmail.com -- semver: 0.2.51 - date: 2021-08-20T12:14:51.369192+01:00 - packager: "" - changes: - - commit: 63eb8ecec32ae5be6e9f6d0ceb2c13b16d1bb267 - note: Add firewall ID to instance config (for creating instance) (#59) - author: - name: Zulh - email: 75463191+zulh-civo@users.noreply.github.com - committer: - name: GitHub - email: noreply@github.com -- semver: 0.2.50 - date: 2021-08-20T12:23:36.242834+08:00 - packager: "" - changes: - - commit: 4a2e2643ca1789e4872237e0835846aaa665ac5c - note: |- - Exclude disk images with name containing "k3s" (#58) - - * Exclude disk images with name containing "k3s" - - * Update test for list disk images - author: - name: Zulh - email: 75463191+zulh-civo@users.noreply.github.com - committer: - name: GitHub - email: noreply@github.com - - commit: 51b3d43babc815cc240d6c99501db78a4c378050 - note: Fix lint issues - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: cd1195dfa60d57e1da591963430e0c09f2df95dd - note: Fixing capitalisation of decodeERROR to go standards and UnknowError typo - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: e0bec13da9a80fa3918a011714ced02afd539c55 - note: Add endpoints for team/permission management - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk -- semver: 0.2.49 - date: 2021-07-16T12:30:09.316057+01:00 - packager: "" - changes: - - commit: 14fc34c7e36117ef6f157b65f4e2f8b31bce1bb9 - note: Remove unnecessary code from the error handler file and add new error handler - author: - name: Alejandro J. Nuñez Madrazo - email: alejandrojnm@gmail.com - committer: - name: Alejandro J. Nuñez Madrazo - email: alejandrojnm@gmail.com -- semver: 0.2.48 - date: 2021-07-15T11:53:46.121998+01:00 - packager: "" - changes: - - commit: 1bf187fd4a931290d35dd6f958d58a3974b892eb - note: Change de default error in case the error is not in the list - author: - name: Alejandro J. Nuñez Madrazo - email: alejandrojnm@gmail.com - committer: - name: Alejandro J. Nuñez Madrazo - email: alejandrojnm@gmail.com - - commit: cf996f9295eb3dbd5abf2a86ff9c2e228606a345 - note: Added a new error handler - author: - name: Alejandro J. Nuñez Madrazo - email: alejandrojnm@gmail.com - committer: - name: Alejandro J. Nuñez Madrazo - email: alejandrojnm@gmail.com -- semver: 0.2.47 - date: 2021-05-23T13:25:26.738282-04:00 - packager: "" - changes: - - commit: d9a041df7e1b8cebf655f4014b9ef5d8b4fa5fc6 - note: Fixed error in the recycle kuberntes node - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 267f348f2e404285cf4149f65c8bfae12869d2f2 - note: Updated the Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com -- semver: 0.2.46 - date: 2021-05-21T13:09:09.675418-04:00 - packager: "" - changes: - - commit: f99bbb6ae86a8db55f93a0a50afdc5c57d387666 - note: Added omitempty to some models, to prevent show empty result - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 63305185fe1c8f3e8ea4979b3a4b6341e3288ee3 - note: Fixed test for the instance - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com -- semver: 0.2.45 - date: 2021-05-10T19:01:56.384997-04:00 - packager: "" - changes: - - commit: a9f4749fb821be83bc00884e1fbd5d7de929f624 - note: Fixed error in the instance controller - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: bfb7b690a7b2670bad78e167cd409544c783658f - note: Added new error handler - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com -- semver: 0.2.44 - date: 2021-05-05T15:35:27.258593-04:00 - packager: "" - changes: - - commit: 7f556d7baea82d2865473a62227d6cfbb2bacf3b - note: Merge branch 'master' of https://github.com/civo/civogo - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 2459ccd5996ba324d34c314eba018dbd956682c0 - note: Added the pool option to kubernestes object - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com -- semver: 0.2.43 - date: 2021-05-04T14:36:19.830021-04:00 - packager: "" - changes: - - commit: 0f3b7fb64f1abf43b0d2cca474d5e99ecf4fdc14 - note: Added change to kubernetes and volume - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 47dce610da9a7723127fec2e1eb889aa22149082 - note: Add cluster_id to volume creation - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 7a917e8e0bea22b2562d9d55b4d1e781c4416900 - note: Fix CHANGELOG - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 419cda25a3b238ca9e7e9b8764b0ac8b34580da2 - note: Add GetVolume call to save always returning then filtering down to a single volume - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 4884e404fea291d97a45ef152627546468e1cb5b - note: Add Status to volume - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 093df491fff19409feba5c1ec00a864761e63f73 - note: Added region to volume attach/detach - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 9c1df9d1265f68cf4e43c71765b2b3a14c6097c9 - note: Update CHANGELOG for 0.2.38 - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 89995b6a3c11fa719cf4032fde44ef1aac7235a2 - note: Update VolumeConfig to have a namespace attribute - author: - name: Andy Jeffries - email: andy@civo.com - committer: - name: GitHub - email: noreply@github.com - - commit: d629abae9e8d247bbaad1c7d219818cc12d6dac4 - note: |- - Update fake_client.go - - Change the exported comment - author: - name: Alejandro J. Nuñez Madrazo - email: alejandro@civo.com - committer: - name: GitHub - email: noreply@github.com -- semver: 0.2.37 - date: 2021-04-08T18:36:06.453078-04:00 - packager: "" - changes: - - commit: cd0f7879862db418cffc6ac247592581f172bc54 - note: Added new methods for DiskImage - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com -- semver: 0.2.36 - date: 2021-04-06T17:50:34.823396-04:00 - packager: "" - changes: - - commit: af03bb1f5ad66e9052487dd0c8a58a6841bf3ccf - note: Added omitempty to kubernetes config, that way we only send the filled fields - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: dc3ea1df0ae34e25cc3f58941464de50cc37c1bc - note: Updated the changelog - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com -- semver: 0.2.35 - date: 2021-04-02T09:06:28-04:00 - packager: Andy Jeffries - changes: - - commit: 772d0a1612fbf038120f1aa3dc4200b7550b4e50 - note: Merge branch 'master' of https://github.com/civo/civogo - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: c47419cea0066134990e87d1e2e737a6b84c7088 - note: Fixed error in the code, added a new handler for network error - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: ed132dec901c76543ccef5fac8f6288f80187db1 - note: Updated the changelog - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 43e5e9a89fb7bdf03d65682afebe0f07fade2b43 - note: Added new fields to kubernetes struct - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 699e53929987df042438444281d58d8071363803 - note: Updated the changelog - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 1e9c4c700ffaa9b0fc037ca667e3610f47871e06 - note: Merge branch 'master' of https://github.com/civo/civogo - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: ff8a577c5c93b2258016910721533fa98de080f8 - note: Fixed error in the struct for InstalledApplication in kubernetes - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 0cf2bd6e0417c94bf0461137d7aaa2298874bb8d - note: Updated the changelog - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: f173564c6be0f5b7d6e72d4274bf902afdc0280d - note: Added network to the firewall struct - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: e2bd46f772f32145e74633c0973c7edccf776b8e - note: Added GetDefaultRegion to the region - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 9c6173fb794c52dc6c33d1dd6f4117bb7d6cf2a3 - note: Updated the changelog - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 79f15aa1d17f1641461787b0acaa41f6f4e71658 - note: Added default field to the region - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: b45dffe1afcb096985322f20956734e4b80f74d8 - note: Updated the changelog - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 19e61587c19d7e959a5fb67bc43d2e673c0cb4da - note: |- - Feature/add region (#50) - - * Added the region to the client, also add new error to the handler and add region to kubernetes - * Update the civogo lib to use region in all request - author: - name: Alejandro J. Nuñez Madrazo - email: alejandro@civo.com - committer: - name: GitHub - email: noreply@github.com - - commit: dfcbfaecabd8590f6ce0cbd49fddd32f61075b4f - note: |- - Clusternames should be considered case insensitive (#49) - - This commit makes the following changes: - * FindKubernetesCluster is case insensitive now - * Test FindKubernetesCluster for case insensitivity - - The current implementation is not optimal though, as the fuzzy matching does not fully support Unicode. - However this should fix most issues for now. - author: - name: Björn Heinrichs - email: BjoernAkAManf@users.noreply.github.com - committer: - name: GitHub - email: noreply@github.com - - commit: c237384c2566853c1874618b56f3808c0d57d343 - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: c5ae6fb346f25352c77277c5494a75837e815aff - note: Fixed check in handler for errors - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 5564e23594cba6c56411471181fd4818e3234687 - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 346fe0ff40991b8d166dee7bc68048925f20e0ce - note: |- - Fixed lint check in the actions - Close #47 - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: a0333a838477b52afbe49d784c04c3a1a9c324d8 - note: |- - Fixed some bugs in the error handler - Close #44 #45 - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: ce2a8a202812a703836bb25deb3ad2c058b55b29 - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 3c3da053c9c572c0cf8fa53fbdb34fb66ecadf76 - note: Added option to use proxy if is present in the system - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: d6c63e6316bffa2d8475ad49aeb67a078aeec921 - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 405567d04342264662a1b2534c7625f2dfc6c20d - note: |- - Fixed the recycle option in Kubernetes - Close #43 - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 4b69a79706e406f55059e5001b56c48d851c71bf - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 8ac5d69e54e7a2062a658fcb408c9c3df36bbcb4 - note: Updated all find function to all command - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: dd52c16377b510e6f3204428e91864f57b206bcb - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: e7cd9f3bf9eca1b133fe7ea581fe9e9082d9fb50 - note: Fixed an error in the struct of the creation of intances - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: ede2e4c16f26ee40d2f6667b0a3ae6f5997f77d9 - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: c1e741339cf2649d23be4221038a341f70354f72 - note: Added two more error to the error handler - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: b0996760a7f270ab96b1fa1bddeca3fce677a523 - note: Fixed error in the DNS test - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: d6191cc66fa48dd378750b1cbe1b7a916ed1581c - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 6e3d7b1e23638f3e547dfbf46721b73156de5f5b - note: Added new record type to DNS - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: fc9cd8ff4b520e066d91684776f14805029b5715 - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 7a0e384f1a206b5e2947bfdb13d80cc6f36ace21 - note: improved error handling in the library - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 0aa9f6bf5ff71f44df9898cd9b2e76b68b0d8749 - note: |- - Update test.yml - - remove macos - author: - name: Alejandro J. Nuñez Madrazo - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 73500add744d21de8426963d233fb1130c88a354 - note: |- - Update test.yml - - use 'os' instead of 'platform' for job matrices - author: - name: Alejandro J. Nuñez Madrazo - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: f3d121d848f622ab2484d64fc438deaa2b825f9c - note: |- - Update test.yml - - Left alone Go 1.14 for the test - author: - name: Alejandro J. Nuñez Madrazo - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 2df11af67fb7cb803025322e6b9ec3d01c62c5de - note: |- - Update test.yml - - Remove test form Go 1.12 and added test form 1.15 - author: - name: Alejandro J. Nuñez Madrazo - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: c024bec299949116e03727b2b5a21c657267f3c9 - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: d8b735350335f4d83b5aca63df666c0e0301c716 - note: Updated all test - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 63a3ae563a9598e217d72f4556b498a689b27db1 - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 4095fdfc81941f24ec77f72fe6b85a8c5f320667 - note: Added constant errors to the lib - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: b11ac2760e0169dc9892d7787a0c61d8c7a50a84 - note: Update the chnage log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 59a86819f532221f86fe0482eb5a6786c3253b85 - note: Added FindTemplate fucntion to the template module - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 4cc1b488aa148a9733b6e2d3309264df8e57ba87 - note: Update the change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 21b44c0e538c42e386ababbdaec877e28ca2d0e1 - note: |- - Revert "Update the change log" - - This reverts commit 8cfac7bccda269767dad34f431659476da3718a5. - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 8cfac7bccda269767dad34f431659476da3718a5 - note: Update the change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: c983d56e0287a996bfb8ef625b4be075400b85e3 - note: |- - Add constant errors (#41) - - * Added a constant errors - * Added error handler to the system - * Modify the error handler for kubernetes module - * Fix message in the errors.go - * Added new feature - * Added all error declaration and the editorconfig - * Added the rest of the errors - * Added the decoder to the rest of controller - * Removed unnecessary comment - * Added a new error help to README - author: - name: Alejandro J. Nuñez Madrazo - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: f6135e298230a0bab389fdcc1e9ff257e4b393b7 - note: |- - Added CPU, RAM and SSD fields to Instance struct - and KubernetesInstance struct - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: b74d3224c16f179105b2ca0f604a8431279d9170 - note: |- - Added new feature - - added master_ip to the kubernetes response, - to be able to use it in the cli and in the terraform provider - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: c49389ab6568b274fd5d1127c0faf14fe06728b7 - note: Fixed error in the cluster upgrade cmd - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 9c3921814c5ee645a864f0d762884d30752dd21a - note: Add the new UpgradeAvailableTo field to KubernetesCluster - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 59b86eba96a0a68b46c42b949dbbec76901875f7 - note: |- - Change application struct in the kubernetes module (#39) - - * fix(kubernetes): Change application struct - - - Change the applications struct, the configuration field, add custom struct for that field - - BREAKING CHANGE: No - - * fix(kubernetes): Added comment in struct - - - Added comment to the ApplicationConfiguration struct inside kubernetes module - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: c1839b96b8a3ca88404da075e0bbf648f0f95d32 - note: |- - Change application struct in kubernetes - - Change the applications struct, the `default` field from string to bool - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 923b509b5ba5e589ad2ce0138e561ecbf192b9ee - note: |- - added new way to search in network - - Add the option to search by Label when you use the FindNetwork - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 1906a5fcaf704a03f48ca52f2e66d38b32f134ce - note: |- - feat(kubernetes): new added option at the moment scaling down the cluster (#35) - - Now if you are scaling down by one, you can give a hint on the node's - name to be destroyed using the node_destroy param - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 6ce671a875acd36a36314b9a98fd3f864ce67cf7 - note: |- - Add pagination for Kubernetes clusters (#34) - - * (hotfix) changed the kubernetes cluster config - - - Modify the kubernetes cluster config to add pagination - - Changed the old kubernetesCluster in favor of kubernetesItem - - BREAKING CHANGE: No - - * (hotfix) fixed comment - - - fix comment inside kubernetes.go - - BREAKING CHANGE: No - - * (hotfix) fixed code style - - - fix code style in kubernetes.go - - BREAKING CHANGE: No - - * refactor(kubernetes): modify the struct for kubernets object - - - modify the struct for kubernets object - - fixed error in code - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 77d299673245240c5e0e1804975de4d7aee02d9a - note: |- - (hotfix) change snapshot config - - - remove `form` from snapshot config and change by `json` - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: d0635c7e96f4509ebdabe9a4deb8acc0cc0c26d4 - note: Change PublicIPRequired to a string to support IP moving - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: c73d51fa77fac7f76213c697982fce3c3dfe7f0d - note: |- - add template endpoints - - * add new feature to Template module - - - You can now list all templates, create a new one, update and delete any templates that belonged to the user - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: d20f49e0bb1d86ab27b776e668a94f9cc006304d - note: Minor tweaks to SSH key struct - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: f5eab5e2065315493319829ed213b2732e80f154 - note: |- - update the ssh key file - - Fix some bug reported, in comment and variables - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: fdf845a601aac8e283f0bdb580c41018d3b737cc - note: |- - Add new option to ssh - - Now you can create, update and delete the ssh keys, at the same time we add ID to the client to return the ID when the backend does it, as in the case of creating an ssh key - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 95ae34b13fe3a49d18805975a5691e7f37c93c63 - note: Fail the build if any lint issues - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 588340b6dfe663e4b7b7dd13b5bc36f1523a538e - note: |- - add rename endpoint for firewall - - Now you can rename a firewall using RenameFirewall function, It is no - longer necessary to delete the firewall to rename it - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 0961777679546b5521fbc9a7bf0c0b292dd53c9b - note: |- - Updated the lib to use json and not form for all request - - * We change the client to send all request in JSON format, to avoid build a custom form procesator - * Fix failing test - had trailing whitespace - * Change all test to use the new way in client.go - * Add Reason to the HTTPError struct, now we return the reason of the error from the server - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: a8ebeb95a5cd84ea46b5dedb487b276901580196 - note: Add body to client error responses - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 5ccea39dd4e8bf03139b64e07f7af025b84c5cd8 - note: |- - Merge pull request #25 from alejandrojnm/hostfix/add_function_firewall - - Hostfix/add function firewall - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 7b07ee24a3525d8de8e3ee1dda8b755f5cdea526 - note: |- - Merge pull request #24 from alejandrojnm/hotfix/urgent_fix - - Fix some issues with firewalls and load balancer structs - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 4f53b0218a35dbc39e02e756e1fe8ecb246ede28 - note: Change GetDNSRecord to find by ID not name - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: edfa55837775b27b8683ee9af5333740387fe22c - note: |- - Remove DNSDomainID from DNSRecordConfig - - Feels like that shouldn't be part of an update, so it's easier to specify: - - CreateDNSRecord(domainID string, r *DNSRecordConfig) - - for creating and just: - - UpdateDNSRecord(r *DNSRecord, rc *DNSRecordConfig) - - for updating. Also feels like the order should be "update X with Y" so DNSRecord - is first and DNSRecordConfig is second. - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: d8c0e9675381e118bb8f510c10ddd4120417b56d - note: |- - Merge pull request #23 from alejandrojnm/feature/update_dns_record - - Feature/update dns record - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 5ae22ab13db666397668c3fa83ea38e69d79a1e3 - note: Fix instance test - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: c470a7d51e1e71c1de6f5f9f9c0a2cac6f8e4c75 - note: Fix signature of SetInstanceTags - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 1032a3be04fa705d30221fcf4fb739c80600f290 - note: Add GetInstanceConsoleURL method - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: efbe8dbc06a3169ce046d2205395a27ba7c7331a - note: Check links in go documentation - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 83fdce86fa5e722f4dce62cafbbb9111ba68a161 - note: Change link to docs - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 7cbcb38c513e3b2fe42ef7480a0d0054c269abf1 - note: Update badges - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: f149ccdce08e326133fe16513b3e499303fe6fee - note: Fix tests after some minor refactoring - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: f0fa3a15db27988b4de21d7b14c7e9e4cdf8caaf - note: Change GB to Gigabytes - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 62a82aec36c7655126dd88cb20d05f447655ac66 - note: Fix lint issues - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 143ac3148aa72b247dd39af2225282ba3205b4da - note: |- - Change workflow to custom action - - The workflow version failed with "go env" not set, so switched to custom - version from https://stackoverflow.com/questions/59236611/github-actions-run-golint-on-wihdows - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 541c21a62f26842a3b4bc43ee66c1eea47b942bf - note: Move lint to its own action - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 4e265ae4f1fae45da83d060901125d7ce2b3982d - note: Use user-contributed lint action - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 0aa650f472ae4fec1696040b75b437d85320e58b - note: Install golint before running it - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 0bbdcd0cff82ea6bb1d9bd4fb7c5f91a6c74e599 - note: Add lint to tests and Go 1.14 - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: f2cd42c5c84822a9ac1c3a232da8bfefa2b76a02 - note: Add changelog - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: d9686526113499826afd4b2b5589b983dc224daa - note: Add Find* methods to all areas - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 8dafd66a091217f93726871970a852c50ff3e52a - note: Fix some linting issues with Kubernetes - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: dd906190213e1d954ab9e7a5cf384cbbd1fdedfb - note: Add LICENSE - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: ee8dab3b93a31c5d0bccac7f6f845a1b577af2b0 - note: Return an error if creating a client with an empty API key - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 1bfa0af0534d761f6fc73d1706b4922e3ba6d941 - note: Remove progress table from README as its now module complete - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 0471e7d2ba28233ff1fd60b0b8fc636178311cb5 - note: Add minor tweaks to Webhooks - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 2d7d45db3e0597fcd84e4f23306bfb0ae22c9e26 - note: |- - Merge pull request #21 from alejandrojnm/feature/webhook - - Add webhooks endpoints - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: fc4a75b783d1bbad1d7bd4f6cdde0ab0b45554b1 - note: Change minor naming issues in snapshot module - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 4b2ae45ccdd0d014d5b704f691bf075d79ab4292 - note: |- - Merge pull request #20 from alejandrojnm/feature/api_snapshots - - Feature/api snapshots - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 81e4652eaae0f4dc2e411751944fcad1d6fa1e66 - note: Fix a couple of comments - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 457dfa5d2a5712e0261b87433bf2a69276be22b6 - note: Add charge endpoint - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: f20cab75a729c4eee1f4978975a58520a39a6f73 - note: Change awkward names of units in field names - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 971a4a4718a87d5116396669c90f8ceb377439c2 - note: Add instance size endpoints - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 7b54da2cb550104a67e82da4d22fd1de6cd06971 - note: Add quota endpoint - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 66b590cc78a4c893ffb557e454563e9ca59c910e - note: Add region endpoint - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: e3433bb00eff673964bf28640aa71bd7d899cdff - note: Change List functions to be plural and prefixing DNS - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 43d6bc08956f7845f2429a8e8faa8887edfd9d52 - note: Update display of README progress - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: eacb35cab0d0d9ab3d04e43c3dc8b4bcff8f6bb3 - note: |- - Merge pull request #19 from alejandrojnm/hotfix/loadbalance_readme - - Add status to README and a small fix for Loadbalancer - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 41c7acb325009f5fde2a9b92a267b2cfade1290b - note: |- - Merge pull request #18 from alejandrojnm/master - - Update Readme.md to add module status - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 730f2dd40debc53b4fe3389b6f9cdf3cc620e3a0 - note: |- - Merge pull request #16 from alejandrojnm/add-kubernetes-apis - - Add Kubernetes apis - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: b8d5ddb852a3fd9b3c20d902e8895a1ee620cbf5 - note: Add minor changes to Load Balancer methods - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: e69c9746d6d7bbd2211c4abc1481f46503135ef2 - note: |- - Merge pull request #14 from alejandrojnm/feature/loadbalancer - - Add Load Balancer endpoints - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 5590adda1b4b5420c9d19ed900ba378d303b3a63 - note: |- - Merge pull request #11 from rberrelleza/get-record - - Add DNS record management - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 338c4dfdb9ab84aeb06d7358a8583d8194df0ad9 - note: |- - Merge pull request #12 from rberrelleza/add-owners - - Add a default owner for the repo - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 5378d41d0f19a14aa6a71646c11d412b0e9d36c5 - note: Add client.LastJSONResponse for the CLI to use - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: b3aba767c3d70f854069a85636b70f2983884646 - note: |- - Merge pull request #7 from rberrelleza/fix-casing-forms - - Change dnsconfig to `form` - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: f66cbcbb6f2d16db7b3091577a30bfc58fb611c4 - note: |- - Merge pull request #9 from alejandrojnm/hostfix-network - - Hotfix network - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: ab4ebaa89596799021be66d4adb7a172a8c753f0 - note: Change string to map of strings - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: a69bef1d9ea8463c546b54cd2bf1e52c4b15b324 - note: Cleanup some minor issues - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 3487081009646150d4cd44ee6774aa6b3e4a5cc7 - note: |- - Merge pull request #3 from rberrelleza/add-dns-apis - - Add DNS records endpoints - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 554cc2b36c626b59a5ef174380ae6c61b935f951 - note: |- - Merge pull request #4 from alejandrojnm/add-firewall-apis - - Add firewall endpoints - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 9e8048fc98ff620887057dfcf8e3e2752882516d - note: |- - Merge pull request #5 from alejandrojnm/add-volumes-apis - - Add volumes option to the civogo - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: bbb04c3d1af1ab96bb0e7ea4cd157480c25eff82 - note: |- - Merge pull request #6 from alejandrojnm/add-network-options - - Add network endpoints - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 57fae6917c372e1dbf8fa927c3d0cc5c770a5fc8 - note: Change order of automated tests - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: e6d1cdcbe3f473c3de7aac2e6a23ed81bb168932 - note: Ensure gofmt code compliance - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 5d9bf4a7ee1d758e426278525121a8f738b19c00 - note: Remove panic - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 50fd2f10b190a719e60bc5e48b19de9fc902b709 - note: Remove string interpolation, more go idiomatic this way - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 8e8caf0ad47fff2e62fadcf552eb5e4d66592e77 - note: Move JSON parsing for SimpleResponse to a helper method - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: a6d635388fa4a8a708b00b362c9a5d946779624b - note: Add CONTRIBUTING guide - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 1eabf12ecbbe2318011749069a761602c4988184 - note: Add status bage to README - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 2e043e1546b936f207b93eb6488da31a399a9f18 - note: Add Go module support - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: e9c407451c8caa0b91d55b2315323bae137a4124 - note: Add GitHub action to test golang - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 08e7668c39025c13262b3685ede9568667c84d96 - note: Fix tests - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 264d4c873ddc48f8b00f8aaaba44d97264f01d08 - note: Add Instance functions - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: cd217b8bbf02d8dd370fce08f64da5000f34e659 - note: Add Instance methods,first version - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 31634d0fc3a2ecf92a5f992bc82faf1d67d5b146 - note: Add tests for instance - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: dc16cca826555de0b1226064eef67e8d22e69f45 - note: Add Instance listing/fetching/creating - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 5e258256e4e9bbb76665dfbc5435d08ff5567439 - note: '- Add more options to the network options' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 6fbeb8a827c5f9b28a243165b5a31ed120baa196 - note: |- - - Add New network options - - Add Delete network options - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: e4a70af4d6c36c82dee1ddc015b02f7450b17465 - note: Add option to create a new network - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 3db7ca46a0208c62525443bd3bc680f2855b9b2e - note: Fix error in volumes.go in the VolumesConfig - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 52dca3536f567ec0ada3a13d8923bdc6598c88b1 - note: Add volumes option to the civogo - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 5aecfa1c5b38fb45443565cee4aa3a7f8718c228 - note: '- Fix a error in firewall.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 070605dee9a7ab13ae9dc6443aa628b93735cfc5 - note: '- Fix some error in firewall.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 572557b65acf6a0444d407bb8d85fee9b1dccaa0 - note: Add firewall option to the civogo - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: ebde1c1205efd5a21ff7931cb4c1f6aaa97aa650 - note: fix test - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 9c0f096760956e26781d06630fd055e90b80b928 - note: handle http errors - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 37733dc1cb98f5f4ab8eeb702e754ddca02be5ef - note: add tests - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 5f324bc9940b1b2f676a58faeebeec34ba182486 - note: Add functions to manipulate records - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 796741761997915ffece15e93d55c68a478930c3 - note: '- Fix a error network, now you can rename a network' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: cbeb0cd40a5b9be863e715f1b681298a92fa1049 - note: |- - Merge pull request #1 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 1ea969afe47fb4a2a0c1c4d8c45f6cfb8961b134 - note: change config for `form` - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: fb92d21fa6fad853937e6c44104b0e9df3b91115 - note: Add a default owner for the repo - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 3055381e458838dd5278daa93144d1ce9e82b3b7 - note: use Create instead of New - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 5c6fe06b4d2bac5093e0485ebb898216d27cc785 - note: New and delete Domain - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 9c28c61c82ce04c59a1d4c1b20a92ded718aa649 - note: add a result const - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 9df135c1f437b38ca5b6bbd8aa93f8a45f412d69 - note: fix GetDomain test - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 5bf0824610f72dd832d2ad0cbf684ae764dd2552 - note: get and list records - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: acb6cd6ac36758505dea3a868fcceb101b9ba425 - note: update and new domain - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 4048f9c18c147e8a4258a18170f01a085ebfa30e - note: '- Update name in loadbalancer_test.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: fea3cf5be57ec93b3e9052f6fd3e40f41bdea316 - note: '- Update the loadbalancer_test.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 84b247e534fa56e8b53b5a474f151df63371e768 - note: '- Fix some error in types in loadbalancer.go and loadbalancer_test.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: e2e8858b03fb2bb26df7853fa31e97fe762f889b - note: '- Now can add, delete update and list the load balance' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 4002274e27a2980ce88257ee8ffb51b5b25f5e9b - note: '- Initial files' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 2fdaa159c41e721e365dffe87ab33a84aa78b99f - note: '- Fix all recommendation from Andy, change NumTargetNodes from string to int, and in UpdateKubernetesClusters change map[string]string in favor of map[string]interface{}' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: fa67209028b2616a7128101cea1039dfac200467 - note: '- Fix all recommendation from Andy' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 7e0221f080d6ba59ffdcd1c08f3a96946e8cf453 - note: '- Final change in the kubernetes interface' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 9bb817f9d012fd569ce9577797408187aede4e82 - note: '- Some change in kubernetes' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 05711724bd7c1df917ba699a5b993eafee39f9a6 - note: '- First commit for kubernetes' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 58429347d9be7dd2c8f3db25e0596d60c2de3516 - note: '- Update README.md with a list of all modules' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 5a3cfcd6c379cc41d86f71a21ba0320db470a3e7 - note: |- - Merge pull request #3 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 311f778ec931617fe92fb795d62499a0c0eb599e - note: |- - Merge pull request #2 from civo/master - - Update - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 74877fa8e299032deeb3f0fdc189aaa333929b9a - note: '- Update README.md, Fix error in loadbalancer.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: d2ede4b06ad1b578c28736bcbf1d3051f5b97ad0 - note: '- Done the snapshot module' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: eaf506c73ee7d8681e716deef622f7cb3bcbcf8a - note: '- First part of the snapshot api' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 2408aaa379cf8c5acba5c31e64847cb10530d0a0 - note: Merge branch 'master' into feature/api_snapshots - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 6d43cd657bf1fb75fe9e7ee5faf0357909847867 - note: |- - Merge pull request #4 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 6e2137e8aa7c99e188592c97026908cdc7a84117 - note: |- - Merge pull request #5 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 467bd9a5d170511356b49c7a7a2d2780b25f02cd - note: '- Add webhook module' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 55ee07109c846cb600f98864aff6df16d9acb658 - note: |- - Merge pull request #6 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 2edd54691ce38cc5c3cb8bf4316cfa8030774aea - note: '- Fix some bug in dns.go dns_test.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 8ff8a494d235357be3a222c758a99c4879bf104f - note: '- Add option to update dns record' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 08c1c1989d6f1e213690cc66fbc0a6ede16bc603 - note: |- - Merge pull request #7 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 29eab04018cd7e38cabd9b76a9eca7841a4d9377 - note: |- - fix(loadbalancer): Fix data in test - - Fix data in the test of the loadbalancer - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 450e018849e739b2d5b38aa6449e61aa430f2ee6 - note: |- - fix(loadbalancer): Fix struct in loadbalancer - - Error in the struct of the loadbalancer configuration - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: f8658cf3a98c4a74c7e839b7bf914a502d6d066a - note: |- - fix(firewall): Fix error in firewall test - - Error in firewall_test.go - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 6b4ca011ae13951259053634016f04d7747cb9c9 - note: |- - fix(firewall): Fix struct in firewall - - Error in the struct of the firewall configuration and new creation - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 7f13e1c8323128da35faffd55c26cac0244a06f9 - note: '- Fix some bug in firewall.go and firewall_test.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 272359878aad1fefc046c00343bd731a4749ff13 - note: |- - Merge pull request #9 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: d118d875d3887b4ff64c415f29f7243db012bf89 - note: |- - Merge pull request #8 from civo/master - - Fix some linting issues with Kubernetes - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: aff666767bdbca9947863df2b4b4f093e3e6a2f5 - note: |- - fix(firewall): Change the id passed to the function - - Change the id name from idfirewall to firewallID - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: c480c52808b433d8919748b807c8e05e6810699b - note: |- - fix(firewall): Fix name in the firewall - - Fixed test - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 874f9ef69a736e3854aa28b9a806ee1aca24317e - note: |- - fix(firewall): Fix name in the firewall - - Fixed function name FindFirewallRules to FindFirewallRule - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 58a860321ed5dbc77fb93ad0034f8d29b005b139 - note: |- - feat(firewall): Add new option to search rule - - Added option to search rule inside a firewall rules list - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 53dc6a1e21508df425c12d3ab56674cbbef0be8c - note: |- - Merge pull request #11 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 99662c54e9b092e02309236c97ab882221f309a5 - note: |- - Merge pull request #10 from alejandrojnm/hotfix/urgent_fix - - - Fix some bug in firewall.go and firewall_test.go - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: fce968e2f9e9454836ec60c165f00267c2d0e4df - note: |- - updated README.md (#51) - - Corrections - author: - name: Amit Chaudhary - email: amit2cha@gmail.com - committer: - name: GitHub - email: noreply@github.com -- semver: 0.2.34 - date: 2021-03-16T12:31:02Z - packager: Andy Jeffries - changes: - - commit: a2afa1671eafbc1145bde3f39be8d2b16349bb43 - note: Fix more cases were we were updating a by-value array - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk -- semver: 0.2.33 - date: 2021-03-16T12:22:28Z - packager: Andy Jeffries - changes: - - commit: 1f6ff05c24e01bdec6250dffc3d403c2d2891e46 - note: Finding a volume by ID should work in the fake client - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk -- semver: 0.2.32 - date: 2021-03-11T10:02:16Z - packager: Andy Jeffries - changes: - - commit: 863f3d0d24f101ffa7d07bbe64971a72ea6917d2 - note: Update changelog - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 06e89ddac116fd7b811079a929d520c191b8472b - note: Add simple fake tests to ensure it conforms to the interface and the pattern works - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk -- semver: 0.2.31 - date: 2021-03-11T09:49:13Z - packager: Andy Jeffries - changes: - - commit: a5721041343cafe7e2cc7c527129f0782286121c - note: Fix error in NewFirewall definition for FakeClient - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk -- semver: 0.2.30 - date: 2021-03-10T13:51:04-05:00 - packager: Andy Jeffries - changes: - - commit: 318bdea6ebd40c0edb0afa024819baa736abbec8 - note: |- - Add fake client (#53) - - * Rename incorrectly named singular method - * Add a non-backend backed fake client for local tests that use civogo - * Fix issues with tests - author: - name: Andy Jeffries - email: andy@civo.com - committer: - name: GitHub - email: noreply@github.com - - commit: ed132dec901c76543ccef5fac8f6288f80187db1 - note: Updated the changelog - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 43e5e9a89fb7bdf03d65682afebe0f07fade2b43 - note: Added new fields to kubernetes struct - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 699e53929987df042438444281d58d8071363803 - note: Updated the changelog - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 1e9c4c700ffaa9b0fc037ca667e3610f47871e06 - note: Merge branch 'master' of https://github.com/civo/civogo - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: ff8a577c5c93b2258016910721533fa98de080f8 - note: Fixed error in the struct for InstalledApplication in kubernetes - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 0cf2bd6e0417c94bf0461137d7aaa2298874bb8d - note: Updated the changelog - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: f173564c6be0f5b7d6e72d4274bf902afdc0280d - note: Added network to the firewall struct - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: e2bd46f772f32145e74633c0973c7edccf776b8e - note: Added GetDefaultRegion to the region - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 9c6173fb794c52dc6c33d1dd6f4117bb7d6cf2a3 - note: Updated the changelog - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 79f15aa1d17f1641461787b0acaa41f6f4e71658 - note: Added default field to the region - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: b45dffe1afcb096985322f20956734e4b80f74d8 - note: Updated the changelog - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 19e61587c19d7e959a5fb67bc43d2e673c0cb4da - note: |- - Feature/add region (#50) - - * Added the region to the client, also add new error to the handler and add region to kubernetes - * Update the civogo lib to use region in all request - author: - name: Alejandro J. Nuñez Madrazo - email: alejandro@civo.com - committer: - name: GitHub - email: noreply@github.com - - commit: dfcbfaecabd8590f6ce0cbd49fddd32f61075b4f - note: |- - Clusternames should be considered case insensitive (#49) - - This commit makes the following changes: - * FindKubernetesCluster is case insensitive now - * Test FindKubernetesCluster for case insensitivity - - The current implementation is not optimal though, as the fuzzy matching does not fully support Unicode. - However this should fix most issues for now. - author: - name: Björn Heinrichs - email: BjoernAkAManf@users.noreply.github.com - committer: - name: GitHub - email: noreply@github.com - - commit: c237384c2566853c1874618b56f3808c0d57d343 - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: c5ae6fb346f25352c77277c5494a75837e815aff - note: Fixed check in handler for errors - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 5564e23594cba6c56411471181fd4818e3234687 - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 346fe0ff40991b8d166dee7bc68048925f20e0ce - note: |- - Fixed lint check in the actions - Close #47 - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: a0333a838477b52afbe49d784c04c3a1a9c324d8 - note: |- - Fixed some bugs in the error handler - Close #44 #45 - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: ce2a8a202812a703836bb25deb3ad2c058b55b29 - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 3c3da053c9c572c0cf8fa53fbdb34fb66ecadf76 - note: Added option to use proxy if is present in the system - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: d6c63e6316bffa2d8475ad49aeb67a078aeec921 - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 405567d04342264662a1b2534c7625f2dfc6c20d - note: |- - Fixed the recycle option in Kubernetes - Close #43 - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 4b69a79706e406f55059e5001b56c48d851c71bf - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 8ac5d69e54e7a2062a658fcb408c9c3df36bbcb4 - note: Updated all find function to all command - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: dd52c16377b510e6f3204428e91864f57b206bcb - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: e7cd9f3bf9eca1b133fe7ea581fe9e9082d9fb50 - note: Fixed an error in the struct of the creation of intances - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: ede2e4c16f26ee40d2f6667b0a3ae6f5997f77d9 - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: c1e741339cf2649d23be4221038a341f70354f72 - note: Added two more error to the error handler - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: b0996760a7f270ab96b1fa1bddeca3fce677a523 - note: Fixed error in the DNS test - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: d6191cc66fa48dd378750b1cbe1b7a916ed1581c - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 6e3d7b1e23638f3e547dfbf46721b73156de5f5b - note: Added new record type to DNS - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: fc9cd8ff4b520e066d91684776f14805029b5715 - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 7a0e384f1a206b5e2947bfdb13d80cc6f36ace21 - note: improved error handling in the library - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 0aa9f6bf5ff71f44df9898cd9b2e76b68b0d8749 - note: |- - Update test.yml - - remove macos - author: - name: Alejandro J. Nuñez Madrazo - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 73500add744d21de8426963d233fb1130c88a354 - note: |- - Update test.yml - - use 'os' instead of 'platform' for job matrices - author: - name: Alejandro J. Nuñez Madrazo - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: f3d121d848f622ab2484d64fc438deaa2b825f9c - note: |- - Update test.yml - - Left alone Go 1.14 for the test - author: - name: Alejandro J. Nuñez Madrazo - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 2df11af67fb7cb803025322e6b9ec3d01c62c5de - note: |- - Update test.yml - - Remove test form Go 1.12 and added test form 1.15 - author: - name: Alejandro J. Nuñez Madrazo - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: c024bec299949116e03727b2b5a21c657267f3c9 - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: d8b735350335f4d83b5aca63df666c0e0301c716 - note: Updated all test - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 63a3ae563a9598e217d72f4556b498a689b27db1 - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 4095fdfc81941f24ec77f72fe6b85a8c5f320667 - note: Added constant errors to the lib - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: b11ac2760e0169dc9892d7787a0c61d8c7a50a84 - note: Update the chnage log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 59a86819f532221f86fe0482eb5a6786c3253b85 - note: Added FindTemplate fucntion to the template module - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 4cc1b488aa148a9733b6e2d3309264df8e57ba87 - note: Update the change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 21b44c0e538c42e386ababbdaec877e28ca2d0e1 - note: |- - Revert "Update the change log" - - This reverts commit 8cfac7bccda269767dad34f431659476da3718a5. - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 8cfac7bccda269767dad34f431659476da3718a5 - note: Update the change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: c983d56e0287a996bfb8ef625b4be075400b85e3 - note: |- - Add constant errors (#41) - - * Added a constant errors - * Added error handler to the system - * Modify the error handler for kubernetes module - * Fix message in the errors.go - * Added new feature - * Added all error declaration and the editorconfig - * Added the rest of the errors - * Added the decoder to the rest of controller - * Removed unnecessary comment - * Added a new error help to README - author: - name: Alejandro J. Nuñez Madrazo - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: f6135e298230a0bab389fdcc1e9ff257e4b393b7 - note: |- - Added CPU, RAM and SSD fields to Instance struct - and KubernetesInstance struct - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: b74d3224c16f179105b2ca0f604a8431279d9170 - note: |- - Added new feature - - added master_ip to the kubernetes response, - to be able to use it in the cli and in the terraform provider - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: c49389ab6568b274fd5d1127c0faf14fe06728b7 - note: Fixed error in the cluster upgrade cmd - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 9c3921814c5ee645a864f0d762884d30752dd21a - note: Add the new UpgradeAvailableTo field to KubernetesCluster - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 59b86eba96a0a68b46c42b949dbbec76901875f7 - note: |- - Change application struct in the kubernetes module (#39) - - * fix(kubernetes): Change application struct - - - Change the applications struct, the configuration field, add custom struct for that field - - BREAKING CHANGE: No - - * fix(kubernetes): Added comment in struct - - - Added comment to the ApplicationConfiguration struct inside kubernetes module - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: c1839b96b8a3ca88404da075e0bbf648f0f95d32 - note: |- - Change application struct in kubernetes - - Change the applications struct, the `default` field from string to bool - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 923b509b5ba5e589ad2ce0138e561ecbf192b9ee - note: |- - added new way to search in network - - Add the option to search by Label when you use the FindNetwork - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 1906a5fcaf704a03f48ca52f2e66d38b32f134ce - note: |- - feat(kubernetes): new added option at the moment scaling down the cluster (#35) - - Now if you are scaling down by one, you can give a hint on the node's - name to be destroyed using the node_destroy param - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 6ce671a875acd36a36314b9a98fd3f864ce67cf7 - note: |- - Add pagination for Kubernetes clusters (#34) - - * (hotfix) changed the kubernetes cluster config - - - Modify the kubernetes cluster config to add pagination - - Changed the old kubernetesCluster in favor of kubernetesItem - - BREAKING CHANGE: No - - * (hotfix) fixed comment - - - fix comment inside kubernetes.go - - BREAKING CHANGE: No - - * (hotfix) fixed code style - - - fix code style in kubernetes.go - - BREAKING CHANGE: No - - * refactor(kubernetes): modify the struct for kubernets object - - - modify the struct for kubernets object - - fixed error in code - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com -- semver: 0.2.29 - date: 2021-02-28T18:11:43-05:00 - packager: Andy Jeffries - changes: - - commit: ed132dec901c76543ccef5fac8f6288f80187db1 - note: Updated the changelog - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 43e5e9a89fb7bdf03d65682afebe0f07fade2b43 - note: Added new fields to kubernetes struct - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com -- semver: 0.2.28 - date: 2021-02-26T08:51:12-05:00 - packager: Andy Jeffries - changes: - - commit: 699e53929987df042438444281d58d8071363803 - note: Updated the changelog - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 1e9c4c700ffaa9b0fc037ca667e3610f47871e06 - note: Merge branch 'master' of https://github.com/civo/civogo - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: ff8a577c5c93b2258016910721533fa98de080f8 - note: Fixed error in the struct for InstalledApplication in kubernetes - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 0cf2bd6e0417c94bf0461137d7aaa2298874bb8d - note: Updated the changelog - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com -- semver: 0.2.27 - date: 2021-02-09T22:41:07-05:00 - packager: Andy Jeffries - changes: - - commit: f173564c6be0f5b7d6e72d4274bf902afdc0280d - note: Added network to the firewall struct - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com -- semver: 0.2.26 - date: 2021-02-09T10:29:08-05:00 - packager: Andy Jeffries - changes: - - commit: e2bd46f772f32145e74633c0973c7edccf776b8e - note: Added GetDefaultRegion to the region - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 9c6173fb794c52dc6c33d1dd6f4117bb7d6cf2a3 - note: Updated the changelog - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com -- semver: 0.2.25 - date: 2021-02-09T09:40:24-05:00 - packager: Andy Jeffries - changes: - - commit: 79f15aa1d17f1641461787b0acaa41f6f4e71658 - note: Added default field to the region - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: b45dffe1afcb096985322f20956734e4b80f74d8 - note: Updated the changelog - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com -- semver: 0.2.24 - date: 2021-02-08T10:10:36-05:00 - packager: Andy Jeffries - changes: - - commit: 19e61587c19d7e959a5fb67bc43d2e673c0cb4da - note: |- - Feature/add region (#50) - - * Added the region to the client, also add new error to the handler and add region to kubernetes - * Update the civogo lib to use region in all request - author: - name: Alejandro J. Nuñez Madrazo - email: alejandro@civo.com - committer: - name: GitHub - email: noreply@github.com - - commit: dfcbfaecabd8590f6ce0cbd49fddd32f61075b4f - note: |- - Clusternames should be considered case insensitive (#49) - - This commit makes the following changes: - * FindKubernetesCluster is case insensitive now - * Test FindKubernetesCluster for case insensitivity - - The current implementation is not optimal though, as the fuzzy matching does not fully support Unicode. - However this should fix most issues for now. - author: - name: Björn Heinrichs - email: BjoernAkAManf@users.noreply.github.com - committer: - name: GitHub - email: noreply@github.com -- semver: 0.2.23 - date: 2020-12-04T12:14:41-05:00 - packager: Andy Jeffries - changes: - - commit: c237384c2566853c1874618b56f3808c0d57d343 - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: c5ae6fb346f25352c77277c5494a75837e815aff - note: Fixed check in handler for errors - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com -- semver: 0.2.22 - date: 2020-11-17T20:44:23-05:00 - packager: Andy Jeffries - changes: - - commit: 5564e23594cba6c56411471181fd4818e3234687 - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 346fe0ff40991b8d166dee7bc68048925f20e0ce - note: |- - Fixed lint check in the actions - Close #47 - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: a0333a838477b52afbe49d784c04c3a1a9c324d8 - note: |- - Fixed some bugs in the error handler - Close #44 #45 - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com -- semver: 0.2.21 - date: 2020-10-31T12:07:22-04:00 - packager: Andy Jeffries - changes: - - commit: ce2a8a202812a703836bb25deb3ad2c058b55b29 - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 3c3da053c9c572c0cf8fa53fbdb34fb66ecadf76 - note: Added option to use proxy if is present in the system - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com -- semver: 0.2.20 - date: 2020-10-30T23:17:49-04:00 - packager: Andy Jeffries - changes: - - commit: d6c63e6316bffa2d8475ad49aeb67a078aeec921 - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 405567d04342264662a1b2534c7625f2dfc6c20d - note: |- - Fixed the recycle option in Kubernetes - Close #43 - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 4b69a79706e406f55059e5001b56c48d851c71bf - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 8ac5d69e54e7a2062a658fcb408c9c3df36bbcb4 - note: Updated all find function to all command - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: dd52c16377b510e6f3204428e91864f57b206bcb - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: e7cd9f3bf9eca1b133fe7ea581fe9e9082d9fb50 - note: Fixed an error in the struct of the creation of intances - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: ede2e4c16f26ee40d2f6667b0a3ae6f5997f77d9 - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: c1e741339cf2649d23be4221038a341f70354f72 - note: Added two more error to the error handler - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: b0996760a7f270ab96b1fa1bddeca3fce677a523 - note: Fixed error in the DNS test - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: d6191cc66fa48dd378750b1cbe1b7a916ed1581c - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 6e3d7b1e23638f3e547dfbf46721b73156de5f5b - note: Added new record type to DNS - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: fc9cd8ff4b520e066d91684776f14805029b5715 - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 7a0e384f1a206b5e2947bfdb13d80cc6f36ace21 - note: improved error handling in the library - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 0aa9f6bf5ff71f44df9898cd9b2e76b68b0d8749 - note: |- - Update test.yml - - remove macos - author: - name: Alejandro J. Nuñez Madrazo - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 73500add744d21de8426963d233fb1130c88a354 - note: |- - Update test.yml - - use 'os' instead of 'platform' for job matrices - author: - name: Alejandro J. Nuñez Madrazo - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: f3d121d848f622ab2484d64fc438deaa2b825f9c - note: |- - Update test.yml - - Left alone Go 1.14 for the test - author: - name: Alejandro J. Nuñez Madrazo - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 2df11af67fb7cb803025322e6b9ec3d01c62c5de - note: |- - Update test.yml - - Remove test form Go 1.12 and added test form 1.15 - author: - name: Alejandro J. Nuñez Madrazo - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: c024bec299949116e03727b2b5a21c657267f3c9 - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: d8b735350335f4d83b5aca63df666c0e0301c716 - note: Updated all test - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 63a3ae563a9598e217d72f4556b498a689b27db1 - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 4095fdfc81941f24ec77f72fe6b85a8c5f320667 - note: Added constant errors to the lib - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: b11ac2760e0169dc9892d7787a0c61d8c7a50a84 - note: Update the chnage log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 59a86819f532221f86fe0482eb5a6786c3253b85 - note: Added FindTemplate fucntion to the template module - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 4cc1b488aa148a9733b6e2d3309264df8e57ba87 - note: Update the change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 21b44c0e538c42e386ababbdaec877e28ca2d0e1 - note: |- - Revert "Update the change log" - - This reverts commit 8cfac7bccda269767dad34f431659476da3718a5. - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 8cfac7bccda269767dad34f431659476da3718a5 - note: Update the change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: c983d56e0287a996bfb8ef625b4be075400b85e3 - note: |- - Add constant errors (#41) - - * Added a constant errors - * Added error handler to the system - * Modify the error handler for kubernetes module - * Fix message in the errors.go - * Added new feature - * Added all error declaration and the editorconfig - * Added the rest of the errors - * Added the decoder to the rest of controller - * Removed unnecessary comment - * Added a new error help to README - author: - name: Alejandro J. Nuñez Madrazo - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: f6135e298230a0bab389fdcc1e9ff257e4b393b7 - note: |- - Added CPU, RAM and SSD fields to Instance struct - and KubernetesInstance struct - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: b74d3224c16f179105b2ca0f604a8431279d9170 - note: |- - Added new feature - - added master_ip to the kubernetes response, - to be able to use it in the cli and in the terraform provider - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: c49389ab6568b274fd5d1127c0faf14fe06728b7 - note: Fixed error in the cluster upgrade cmd - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 9c3921814c5ee645a864f0d762884d30752dd21a - note: Add the new UpgradeAvailableTo field to KubernetesCluster - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 59b86eba96a0a68b46c42b949dbbec76901875f7 - note: |- - Change application struct in the kubernetes module (#39) - - * fix(kubernetes): Change application struct - - - Change the applications struct, the configuration field, add custom struct for that field - - BREAKING CHANGE: No - - * fix(kubernetes): Added comment in struct - - - Added comment to the ApplicationConfiguration struct inside kubernetes module - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: c1839b96b8a3ca88404da075e0bbf648f0f95d32 - note: |- - Change application struct in kubernetes - - Change the applications struct, the `default` field from string to bool - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 923b509b5ba5e589ad2ce0138e561ecbf192b9ee - note: |- - added new way to search in network - - Add the option to search by Label when you use the FindNetwork - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 1906a5fcaf704a03f48ca52f2e66d38b32f134ce - note: |- - feat(kubernetes): new added option at the moment scaling down the cluster (#35) - - Now if you are scaling down by one, you can give a hint on the node's - name to be destroyed using the node_destroy param - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 6ce671a875acd36a36314b9a98fd3f864ce67cf7 - note: |- - Add pagination for Kubernetes clusters (#34) - - * (hotfix) changed the kubernetes cluster config - - - Modify the kubernetes cluster config to add pagination - - Changed the old kubernetesCluster in favor of kubernetesItem - - BREAKING CHANGE: No - - * (hotfix) fixed comment - - - fix comment inside kubernetes.go - - BREAKING CHANGE: No - - * (hotfix) fixed code style - - - fix code style in kubernetes.go - - BREAKING CHANGE: No - - * refactor(kubernetes): modify the struct for kubernets object - - - modify the struct for kubernets object - - fixed error in code - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 77d299673245240c5e0e1804975de4d7aee02d9a - note: |- - (hotfix) change snapshot config - - - remove `form` from snapshot config and change by `json` - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk -- semver: 0.2.19 - date: 2020-09-25T13:27:33-04:00 - packager: Andy Jeffries - changes: - - commit: dd52c16377b510e6f3204428e91864f57b206bcb - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: e7cd9f3bf9eca1b133fe7ea581fe9e9082d9fb50 - note: Fixed an error in the struct of the creation of intances - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com -- semver: 0.2.18 - date: 2020-09-23T10:44:54-04:00 - packager: Andy Jeffries - changes: - - commit: ede2e4c16f26ee40d2f6667b0a3ae6f5997f77d9 - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: c1e741339cf2649d23be4221038a341f70354f72 - note: Added two more error to the error handler - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: b0996760a7f270ab96b1fa1bddeca3fce677a523 - note: Fixed error in the DNS test - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com -- semver: 0.2.17 - date: 2020-09-12T22:13:34-04:00 - packager: Andy Jeffries - changes: - - commit: d6191cc66fa48dd378750b1cbe1b7a916ed1581c - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 6e3d7b1e23638f3e547dfbf46721b73156de5f5b - note: Added new record type to DNS - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com -- semver: 0.2.16 - date: 2020-08-24T15:13:17-04:00 - packager: Andy Jeffries - changes: - - commit: fc9cd8ff4b520e066d91684776f14805029b5715 - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 7a0e384f1a206b5e2947bfdb13d80cc6f36ace21 - note: improved error handling in the library - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com -- semver: 0.2.15 - date: 2020-08-17T13:22:37-04:00 - packager: Andy Jeffries - changes: - - commit: 0aa9f6bf5ff71f44df9898cd9b2e76b68b0d8749 - note: |- - Update test.yml - - remove macos - author: - name: Alejandro J. Nuñez Madrazo - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 73500add744d21de8426963d233fb1130c88a354 - note: |- - Update test.yml - - use 'os' instead of 'platform' for job matrices - author: - name: Alejandro J. Nuñez Madrazo - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: f3d121d848f622ab2484d64fc438deaa2b825f9c - note: |- - Update test.yml - - Left alone Go 1.14 for the test - author: - name: Alejandro J. Nuñez Madrazo - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 2df11af67fb7cb803025322e6b9ec3d01c62c5de - note: |- - Update test.yml - - Remove test form Go 1.12 and added test form 1.15 - author: - name: Alejandro J. Nuñez Madrazo - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: c024bec299949116e03727b2b5a21c657267f3c9 - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: d8b735350335f4d83b5aca63df666c0e0301c716 - note: Updated all test - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 63a3ae563a9598e217d72f4556b498a689b27db1 - note: Update Change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 4095fdfc81941f24ec77f72fe6b85a8c5f320667 - note: Added constant errors to the lib - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com -- semver: 0.2.14 - date: 2020-08-11T10:30:25-04:00 - packager: Andy Jeffries - changes: - - commit: b11ac2760e0169dc9892d7787a0c61d8c7a50a84 - note: Update the chnage log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 59a86819f532221f86fe0482eb5a6786c3253b85 - note: Added FindTemplate fucntion to the template module - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 4cc1b488aa148a9733b6e2d3309264df8e57ba87 - note: Update the change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 21b44c0e538c42e386ababbdaec877e28ca2d0e1 - note: |- - Revert "Update the change log" - - This reverts commit 8cfac7bccda269767dad34f431659476da3718a5. - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 8cfac7bccda269767dad34f431659476da3718a5 - note: Update the change log - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com -- semver: 0.2.13 - date: 2020-07-31T10:25:57-04:00 - packager: Andy Jeffries - changes: - - commit: c983d56e0287a996bfb8ef625b4be075400b85e3 - note: |- - Add constant errors (#41) - - * Added a constant errors - * Added error handler to the system - * Modify the error handler for kubernetes module - * Fix message in the errors.go - * Added new feature - * Added all error declaration and the editorconfig - * Added the rest of the errors - * Added the decoder to the rest of controller - * Removed unnecessary comment - * Added a new error help to README - author: - name: Alejandro J. Nuñez Madrazo - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com -- semver: 0.2.12 - date: 2020-07-07T09:45:00-04:00 - packager: Andy Jeffries - changes: - - commit: f6135e298230a0bab389fdcc1e9ff257e4b393b7 - note: |- - Added CPU, RAM and SSD fields to Instance struct - and KubernetesInstance struct - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com -- semver: 0.2.11 - date: 2020-07-06T09:23:57-04:00 - packager: Andy Jeffries - changes: - - commit: b74d3224c16f179105b2ca0f604a8431279d9170 - note: |- - Added new feature - - added master_ip to the kubernetes response, - to be able to use it in the cli and in the terraform provider - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com -- semver: 0.2.10 - date: 2020-06-24T11:05:24-04:00 - packager: Andy Jeffries - changes: - - commit: c49389ab6568b274fd5d1127c0faf14fe06728b7 - note: Fixed error in the cluster upgrade cmd - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 9c3921814c5ee645a864f0d762884d30752dd21a - note: Add the new UpgradeAvailableTo field to KubernetesCluster - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 59b86eba96a0a68b46c42b949dbbec76901875f7 - note: |- - Change application struct in the kubernetes module (#39) - - * fix(kubernetes): Change application struct - - - Change the applications struct, the configuration field, add custom struct for that field - - BREAKING CHANGE: No - - * fix(kubernetes): Added comment in struct - - - Added comment to the ApplicationConfiguration struct inside kubernetes module - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: c1839b96b8a3ca88404da075e0bbf648f0f95d32 - note: |- - Change application struct in kubernetes - - Change the applications struct, the `default` field from string to bool - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 923b509b5ba5e589ad2ce0138e561ecbf192b9ee - note: |- - added new way to search in network - - Add the option to search by Label when you use the FindNetwork - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 1906a5fcaf704a03f48ca52f2e66d38b32f134ce - note: |- - feat(kubernetes): new added option at the moment scaling down the cluster (#35) - - Now if you are scaling down by one, you can give a hint on the node's - name to be destroyed using the node_destroy param - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 6ce671a875acd36a36314b9a98fd3f864ce67cf7 - note: |- - Add pagination for Kubernetes clusters (#34) - - * (hotfix) changed the kubernetes cluster config - - - Modify the kubernetes cluster config to add pagination - - Changed the old kubernetesCluster in favor of kubernetesItem - - BREAKING CHANGE: No - - * (hotfix) fixed comment - - - fix comment inside kubernetes.go - - BREAKING CHANGE: No - - * (hotfix) fixed code style - - - fix code style in kubernetes.go - - BREAKING CHANGE: No - - * refactor(kubernetes): modify the struct for kubernets object - - - modify the struct for kubernets object - - fixed error in code - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 77d299673245240c5e0e1804975de4d7aee02d9a - note: |- - (hotfix) change snapshot config - - - remove `form` from snapshot config and change by `json` - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: d0635c7e96f4509ebdabe9a4deb8acc0cc0c26d4 - note: Change PublicIPRequired to a string to support IP moving - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk -- semver: 0.2.9 - date: 2020-06-19T16:00:53+01:00 - packager: Andy Jeffries - changes: - - commit: 9c3921814c5ee645a864f0d762884d30752dd21a - note: Add the new UpgradeAvailableTo field to KubernetesCluster - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk -- semver: 0.2.8 - date: 2020-05-12T15:17:52+01:00 - packager: Andy Jeffries - changes: - - commit: 59b86eba96a0a68b46c42b949dbbec76901875f7 - note: |- - Change application struct in the kubernetes module (#39) - - * fix(kubernetes): Change application struct - - - Change the applications struct, the configuration field, add custom struct for that field - - BREAKING CHANGE: No - - * fix(kubernetes): Added comment in struct - - - Added comment to the ApplicationConfiguration struct inside kubernetes module - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com -- semver: 0.2.7 - date: 2020-05-10T22:41:39-04:00 - packager: Andy Jeffries - changes: - - commit: c1839b96b8a3ca88404da075e0bbf648f0f95d32 - note: |- - Change application struct in kubernetes - - Change the applications struct, the `default` field from string to bool - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com -- semver: 0.2.6 - date: 2020-05-06T12:11:08-04:00 - packager: Andy Jeffries - changes: - - commit: 923b509b5ba5e589ad2ce0138e561ecbf192b9ee - note: |- - added new way to search in network - - Add the option to search by Label when you use the FindNetwork - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com -- semver: 0.2.5 - date: 2020-04-15T14:49:35+01:00 - packager: Andy Jeffries - changes: - - commit: 1906a5fcaf704a03f48ca52f2e66d38b32f134ce - note: |- - feat(kubernetes): new added option at the moment scaling down the cluster (#35) - - Now if you are scaling down by one, you can give a hint on the node's - name to be destroyed using the node_destroy param - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com -- semver: 0.2.4 - date: 2020-04-07T14:50:23+01:00 - packager: Andy Jeffries - changes: - - commit: 6ce671a875acd36a36314b9a98fd3f864ce67cf7 - note: |- - Add pagination for Kubernetes clusters (#34) - - * (hotfix) changed the kubernetes cluster config - - - Modify the kubernetes cluster config to add pagination - - Changed the old kubernetesCluster in favor of kubernetesItem - - BREAKING CHANGE: No - - * (hotfix) fixed comment - - - fix comment inside kubernetes.go - - BREAKING CHANGE: No - - * (hotfix) fixed code style - - - fix code style in kubernetes.go - - BREAKING CHANGE: No - - * refactor(kubernetes): modify the struct for kubernets object - - - modify the struct for kubernets object - - fixed error in code - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 77d299673245240c5e0e1804975de4d7aee02d9a - note: |- - (hotfix) change snapshot config - - - remove `form` from snapshot config and change by `json` - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: d0635c7e96f4509ebdabe9a4deb8acc0cc0c26d4 - note: Change PublicIPRequired to a string to support IP moving - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: c73d51fa77fac7f76213c697982fce3c3dfe7f0d - note: |- - add template endpoints - - * add new feature to Template module - - - You can now list all templates, create a new one, update and delete any templates that belonged to the user - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: d20f49e0bb1d86ab27b776e668a94f9cc006304d - note: Minor tweaks to SSH key struct - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: f5eab5e2065315493319829ed213b2732e80f154 - note: |- - update the ssh key file - - Fix some bug reported, in comment and variables - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: fdf845a601aac8e283f0bdb580c41018d3b737cc - note: |- - Add new option to ssh - - Now you can create, update and delete the ssh keys, at the same time we add ID to the client to return the ID when the backend does it, as in the case of creating an ssh key - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 95ae34b13fe3a49d18805975a5691e7f37c93c63 - note: Fail the build if any lint issues - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 588340b6dfe663e4b7b7dd13b5bc36f1523a538e - note: |- - add rename endpoint for firewall - - Now you can rename a firewall using RenameFirewall function, It is no - longer necessary to delete the firewall to rename it - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 0961777679546b5521fbc9a7bf0c0b292dd53c9b - note: |- - Updated the lib to use json and not form for all request - - * We change the client to send all request in JSON format, to avoid build a custom form procesator - * Fix failing test - had trailing whitespace - * Change all test to use the new way in client.go - * Add Reason to the HTTPError struct, now we return the reason of the error from the server - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: a8ebeb95a5cd84ea46b5dedb487b276901580196 - note: Add body to client error responses - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 5ccea39dd4e8bf03139b64e07f7af025b84c5cd8 - note: |- - Merge pull request #25 from alejandrojnm/hostfix/add_function_firewall - - Hostfix/add function firewall - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 7b07ee24a3525d8de8e3ee1dda8b755f5cdea526 - note: |- - Merge pull request #24 from alejandrojnm/hotfix/urgent_fix - - Fix some issues with firewalls and load balancer structs - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 4f53b0218a35dbc39e02e756e1fe8ecb246ede28 - note: Change GetDNSRecord to find by ID not name - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: edfa55837775b27b8683ee9af5333740387fe22c - note: |- - Remove DNSDomainID from DNSRecordConfig - - Feels like that shouldn't be part of an update, so it's easier to specify: - - CreateDNSRecord(domainID string, r *DNSRecordConfig) - - for creating and just: - - UpdateDNSRecord(r *DNSRecord, rc *DNSRecordConfig) - - for updating. Also feels like the order should be "update X with Y" so DNSRecord - is first and DNSRecordConfig is second. - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: d8c0e9675381e118bb8f510c10ddd4120417b56d - note: |- - Merge pull request #23 from alejandrojnm/feature/update_dns_record - - Feature/update dns record - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 5ae22ab13db666397668c3fa83ea38e69d79a1e3 - note: Fix instance test - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: c470a7d51e1e71c1de6f5f9f9c0a2cac6f8e4c75 - note: Fix signature of SetInstanceTags - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 1032a3be04fa705d30221fcf4fb739c80600f290 - note: Add GetInstanceConsoleURL method - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: efbe8dbc06a3169ce046d2205395a27ba7c7331a - note: Check links in go documentation - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 83fdce86fa5e722f4dce62cafbbb9111ba68a161 - note: Change link to docs - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 7cbcb38c513e3b2fe42ef7480a0d0054c269abf1 - note: Update badges - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: f149ccdce08e326133fe16513b3e499303fe6fee - note: Fix tests after some minor refactoring - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: f0fa3a15db27988b4de21d7b14c7e9e4cdf8caaf - note: Change GB to Gigabytes - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 62a82aec36c7655126dd88cb20d05f447655ac66 - note: Fix lint issues - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 143ac3148aa72b247dd39af2225282ba3205b4da - note: |- - Change workflow to custom action - - The workflow version failed with "go env" not set, so switched to custom - version from https://stackoverflow.com/questions/59236611/github-actions-run-golint-on-wihdows - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 541c21a62f26842a3b4bc43ee66c1eea47b942bf - note: Move lint to its own action - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 4e265ae4f1fae45da83d060901125d7ce2b3982d - note: Use user-contributed lint action - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 0aa650f472ae4fec1696040b75b437d85320e58b - note: Install golint before running it - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 0bbdcd0cff82ea6bb1d9bd4fb7c5f91a6c74e599 - note: Add lint to tests and Go 1.14 - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: f2cd42c5c84822a9ac1c3a232da8bfefa2b76a02 - note: Add changelog - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: d9686526113499826afd4b2b5589b983dc224daa - note: Add Find* methods to all areas - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 8dafd66a091217f93726871970a852c50ff3e52a - note: Fix some linting issues with Kubernetes - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: dd906190213e1d954ab9e7a5cf384cbbd1fdedfb - note: Add LICENSE - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: ee8dab3b93a31c5d0bccac7f6f845a1b577af2b0 - note: Return an error if creating a client with an empty API key - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 1bfa0af0534d761f6fc73d1706b4922e3ba6d941 - note: Remove progress table from README as its now module complete - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 0471e7d2ba28233ff1fd60b0b8fc636178311cb5 - note: Add minor tweaks to Webhooks - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 2d7d45db3e0597fcd84e4f23306bfb0ae22c9e26 - note: |- - Merge pull request #21 from alejandrojnm/feature/webhook - - Add webhooks endpoints - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: fc4a75b783d1bbad1d7bd4f6cdde0ab0b45554b1 - note: Change minor naming issues in snapshot module - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 4b2ae45ccdd0d014d5b704f691bf075d79ab4292 - note: |- - Merge pull request #20 from alejandrojnm/feature/api_snapshots - - Feature/api snapshots - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 81e4652eaae0f4dc2e411751944fcad1d6fa1e66 - note: Fix a couple of comments - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 457dfa5d2a5712e0261b87433bf2a69276be22b6 - note: Add charge endpoint - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: f20cab75a729c4eee1f4978975a58520a39a6f73 - note: Change awkward names of units in field names - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 971a4a4718a87d5116396669c90f8ceb377439c2 - note: Add instance size endpoints - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 7b54da2cb550104a67e82da4d22fd1de6cd06971 - note: Add quota endpoint - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 66b590cc78a4c893ffb557e454563e9ca59c910e - note: Add region endpoint - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: e3433bb00eff673964bf28640aa71bd7d899cdff - note: Change List functions to be plural and prefixing DNS - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 43d6bc08956f7845f2429a8e8faa8887edfd9d52 - note: Update display of README progress - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: eacb35cab0d0d9ab3d04e43c3dc8b4bcff8f6bb3 - note: |- - Merge pull request #19 from alejandrojnm/hotfix/loadbalance_readme - - Add status to README and a small fix for Loadbalancer - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 41c7acb325009f5fde2a9b92a267b2cfade1290b - note: |- - Merge pull request #18 from alejandrojnm/master - - Update Readme.md to add module status - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 730f2dd40debc53b4fe3389b6f9cdf3cc620e3a0 - note: |- - Merge pull request #16 from alejandrojnm/add-kubernetes-apis - - Add Kubernetes apis - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: b8d5ddb852a3fd9b3c20d902e8895a1ee620cbf5 - note: Add minor changes to Load Balancer methods - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: e69c9746d6d7bbd2211c4abc1481f46503135ef2 - note: |- - Merge pull request #14 from alejandrojnm/feature/loadbalancer - - Add Load Balancer endpoints - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 5590adda1b4b5420c9d19ed900ba378d303b3a63 - note: |- - Merge pull request #11 from rberrelleza/get-record - - Add DNS record management - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 338c4dfdb9ab84aeb06d7358a8583d8194df0ad9 - note: |- - Merge pull request #12 from rberrelleza/add-owners - - Add a default owner for the repo - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 5378d41d0f19a14aa6a71646c11d412b0e9d36c5 - note: Add client.LastJSONResponse for the CLI to use - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: b3aba767c3d70f854069a85636b70f2983884646 - note: |- - Merge pull request #7 from rberrelleza/fix-casing-forms - - Change dnsconfig to `form` - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: f66cbcbb6f2d16db7b3091577a30bfc58fb611c4 - note: |- - Merge pull request #9 from alejandrojnm/hostfix-network - - Hotfix network - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: ab4ebaa89596799021be66d4adb7a172a8c753f0 - note: Change string to map of strings - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: a69bef1d9ea8463c546b54cd2bf1e52c4b15b324 - note: Cleanup some minor issues - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 3487081009646150d4cd44ee6774aa6b3e4a5cc7 - note: |- - Merge pull request #3 from rberrelleza/add-dns-apis - - Add DNS records endpoints - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 554cc2b36c626b59a5ef174380ae6c61b935f951 - note: |- - Merge pull request #4 from alejandrojnm/add-firewall-apis - - Add firewall endpoints - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 9e8048fc98ff620887057dfcf8e3e2752882516d - note: |- - Merge pull request #5 from alejandrojnm/add-volumes-apis - - Add volumes option to the civogo - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: bbb04c3d1af1ab96bb0e7ea4cd157480c25eff82 - note: |- - Merge pull request #6 from alejandrojnm/add-network-options - - Add network endpoints - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 57fae6917c372e1dbf8fa927c3d0cc5c770a5fc8 - note: Change order of automated tests - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: e6d1cdcbe3f473c3de7aac2e6a23ed81bb168932 - note: Ensure gofmt code compliance - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 5d9bf4a7ee1d758e426278525121a8f738b19c00 - note: Remove panic - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 50fd2f10b190a719e60bc5e48b19de9fc902b709 - note: Remove string interpolation, more go idiomatic this way - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 8e8caf0ad47fff2e62fadcf552eb5e4d66592e77 - note: Move JSON parsing for SimpleResponse to a helper method - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: a6d635388fa4a8a708b00b362c9a5d946779624b - note: Add CONTRIBUTING guide - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 1eabf12ecbbe2318011749069a761602c4988184 - note: Add status bage to README - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 2e043e1546b936f207b93eb6488da31a399a9f18 - note: Add Go module support - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: e9c407451c8caa0b91d55b2315323bae137a4124 - note: Add GitHub action to test golang - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 08e7668c39025c13262b3685ede9568667c84d96 - note: Fix tests - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 264d4c873ddc48f8b00f8aaaba44d97264f01d08 - note: Add Instance functions - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: cd217b8bbf02d8dd370fce08f64da5000f34e659 - note: Add Instance methods,first version - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 31634d0fc3a2ecf92a5f992bc82faf1d67d5b146 - note: Add tests for instance - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: dc16cca826555de0b1226064eef67e8d22e69f45 - note: Add Instance listing/fetching/creating - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 5e258256e4e9bbb76665dfbc5435d08ff5567439 - note: '- Add more options to the network options' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 6fbeb8a827c5f9b28a243165b5a31ed120baa196 - note: |- - - Add New network options - - Add Delete network options - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: e4a70af4d6c36c82dee1ddc015b02f7450b17465 - note: Add option to create a new network - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 3db7ca46a0208c62525443bd3bc680f2855b9b2e - note: Fix error in volumes.go in the VolumesConfig - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 52dca3536f567ec0ada3a13d8923bdc6598c88b1 - note: Add volumes option to the civogo - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 5aecfa1c5b38fb45443565cee4aa3a7f8718c228 - note: '- Fix a error in firewall.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 070605dee9a7ab13ae9dc6443aa628b93735cfc5 - note: '- Fix some error in firewall.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 572557b65acf6a0444d407bb8d85fee9b1dccaa0 - note: Add firewall option to the civogo - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: ebde1c1205efd5a21ff7931cb4c1f6aaa97aa650 - note: fix test - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 9c0f096760956e26781d06630fd055e90b80b928 - note: handle http errors - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 37733dc1cb98f5f4ab8eeb702e754ddca02be5ef - note: add tests - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 5f324bc9940b1b2f676a58faeebeec34ba182486 - note: Add functions to manipulate records - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 796741761997915ffece15e93d55c68a478930c3 - note: '- Fix a error network, now you can rename a network' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: cbeb0cd40a5b9be863e715f1b681298a92fa1049 - note: |- - Merge pull request #1 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 1ea969afe47fb4a2a0c1c4d8c45f6cfb8961b134 - note: change config for `form` - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: fb92d21fa6fad853937e6c44104b0e9df3b91115 - note: Add a default owner for the repo - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 3055381e458838dd5278daa93144d1ce9e82b3b7 - note: use Create instead of New - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 5c6fe06b4d2bac5093e0485ebb898216d27cc785 - note: New and delete Domain - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 9c28c61c82ce04c59a1d4c1b20a92ded718aa649 - note: add a result const - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 9df135c1f437b38ca5b6bbd8aa93f8a45f412d69 - note: fix GetDomain test - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 5bf0824610f72dd832d2ad0cbf684ae764dd2552 - note: get and list records - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: acb6cd6ac36758505dea3a868fcceb101b9ba425 - note: update and new domain - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 4048f9c18c147e8a4258a18170f01a085ebfa30e - note: '- Update name in loadbalancer_test.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: fea3cf5be57ec93b3e9052f6fd3e40f41bdea316 - note: '- Update the loadbalancer_test.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 84b247e534fa56e8b53b5a474f151df63371e768 - note: '- Fix some error in types in loadbalancer.go and loadbalancer_test.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: e2e8858b03fb2bb26df7853fa31e97fe762f889b - note: '- Now can add, delete update and list the load balance' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 4002274e27a2980ce88257ee8ffb51b5b25f5e9b - note: '- Initial files' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 2fdaa159c41e721e365dffe87ab33a84aa78b99f - note: '- Fix all recommendation from Andy, change NumTargetNodes from string to int, and in UpdateKubernetesClusters change map[string]string in favor of map[string]interface{}' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: fa67209028b2616a7128101cea1039dfac200467 - note: '- Fix all recommendation from Andy' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 7e0221f080d6ba59ffdcd1c08f3a96946e8cf453 - note: '- Final change in the kubernetes interface' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 9bb817f9d012fd569ce9577797408187aede4e82 - note: '- Some change in kubernetes' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 05711724bd7c1df917ba699a5b993eafee39f9a6 - note: '- First commit for kubernetes' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 58429347d9be7dd2c8f3db25e0596d60c2de3516 - note: '- Update README.md with a list of all modules' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 5a3cfcd6c379cc41d86f71a21ba0320db470a3e7 - note: |- - Merge pull request #3 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 311f778ec931617fe92fb795d62499a0c0eb599e - note: |- - Merge pull request #2 from civo/master - - Update - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 74877fa8e299032deeb3f0fdc189aaa333929b9a - note: '- Update README.md, Fix error in loadbalancer.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: d2ede4b06ad1b578c28736bcbf1d3051f5b97ad0 - note: '- Done the snapshot module' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: eaf506c73ee7d8681e716deef622f7cb3bcbcf8a - note: '- First part of the snapshot api' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 2408aaa379cf8c5acba5c31e64847cb10530d0a0 - note: Merge branch 'master' into feature/api_snapshots - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 6d43cd657bf1fb75fe9e7ee5faf0357909847867 - note: |- - Merge pull request #4 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 6e2137e8aa7c99e188592c97026908cdc7a84117 - note: |- - Merge pull request #5 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 467bd9a5d170511356b49c7a7a2d2780b25f02cd - note: '- Add webhook module' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 55ee07109c846cb600f98864aff6df16d9acb658 - note: |- - Merge pull request #6 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 2edd54691ce38cc5c3cb8bf4316cfa8030774aea - note: '- Fix some bug in dns.go dns_test.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 8ff8a494d235357be3a222c758a99c4879bf104f - note: '- Add option to update dns record' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 08c1c1989d6f1e213690cc66fbc0a6ede16bc603 - note: |- - Merge pull request #7 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 29eab04018cd7e38cabd9b76a9eca7841a4d9377 - note: |- - fix(loadbalancer): Fix data in test - - Fix data in the test of the loadbalancer - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 450e018849e739b2d5b38aa6449e61aa430f2ee6 - note: |- - fix(loadbalancer): Fix struct in loadbalancer - - Error in the struct of the loadbalancer configuration - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: f8658cf3a98c4a74c7e839b7bf914a502d6d066a - note: |- - fix(firewall): Fix error in firewall test - - Error in firewall_test.go - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 6b4ca011ae13951259053634016f04d7747cb9c9 - note: |- - fix(firewall): Fix struct in firewall - - Error in the struct of the firewall configuration and new creation - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 7f13e1c8323128da35faffd55c26cac0244a06f9 - note: '- Fix some bug in firewall.go and firewall_test.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 272359878aad1fefc046c00343bd731a4749ff13 - note: |- - Merge pull request #9 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: d118d875d3887b4ff64c415f29f7243db012bf89 - note: |- - Merge pull request #8 from civo/master - - Fix some linting issues with Kubernetes - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: aff666767bdbca9947863df2b4b4f093e3e6a2f5 - note: |- - fix(firewall): Change the id passed to the function - - Change the id name from idfirewall to firewallID - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: c480c52808b433d8919748b807c8e05e6810699b - note: |- - fix(firewall): Fix name in the firewall - - Fixed test - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 874f9ef69a736e3854aa28b9a806ee1aca24317e - note: |- - fix(firewall): Fix name in the firewall - - Fixed function name FindFirewallRules to FindFirewallRule - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 58a860321ed5dbc77fb93ad0034f8d29b005b139 - note: |- - feat(firewall): Add new option to search rule - - Added option to search rule inside a firewall rules list - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 53dc6a1e21508df425c12d3ab56674cbbef0be8c - note: |- - Merge pull request #11 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 99662c54e9b092e02309236c97ab882221f309a5 - note: |- - Merge pull request #10 from alejandrojnm/hotfix/urgent_fix - - - Fix some bug in firewall.go and firewall_test.go - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com -- semver: 0.2.3 - date: 2020-04-03T15:55:34+01:00 - packager: Andy Jeffries - changes: - - commit: 77d299673245240c5e0e1804975de4d7aee02d9a - note: |- - (hotfix) change snapshot config - - - remove `form` from snapshot config and change by `json` - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: d0635c7e96f4509ebdabe9a4deb8acc0cc0c26d4 - note: Change PublicIPRequired to a string to support IP moving - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: c73d51fa77fac7f76213c697982fce3c3dfe7f0d - note: |- - add template endpoints - - * add new feature to Template module - - - You can now list all templates, create a new one, update and delete any templates that belonged to the user - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: d20f49e0bb1d86ab27b776e668a94f9cc006304d - note: Minor tweaks to SSH key struct - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: f5eab5e2065315493319829ed213b2732e80f154 - note: |- - update the ssh key file - - Fix some bug reported, in comment and variables - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: fdf845a601aac8e283f0bdb580c41018d3b737cc - note: |- - Add new option to ssh - - Now you can create, update and delete the ssh keys, at the same time we add ID to the client to return the ID when the backend does it, as in the case of creating an ssh key - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 95ae34b13fe3a49d18805975a5691e7f37c93c63 - note: Fail the build if any lint issues - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 588340b6dfe663e4b7b7dd13b5bc36f1523a538e - note: |- - add rename endpoint for firewall - - Now you can rename a firewall using RenameFirewall function, It is no - longer necessary to delete the firewall to rename it - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 0961777679546b5521fbc9a7bf0c0b292dd53c9b - note: |- - Updated the lib to use json and not form for all request - - * We change the client to send all request in JSON format, to avoid build a custom form procesator - * Fix failing test - had trailing whitespace - * Change all test to use the new way in client.go - * Add Reason to the HTTPError struct, now we return the reason of the error from the server - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: a8ebeb95a5cd84ea46b5dedb487b276901580196 - note: Add body to client error responses - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 5ccea39dd4e8bf03139b64e07f7af025b84c5cd8 - note: |- - Merge pull request #25 from alejandrojnm/hostfix/add_function_firewall - - Hostfix/add function firewall - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 7b07ee24a3525d8de8e3ee1dda8b755f5cdea526 - note: |- - Merge pull request #24 from alejandrojnm/hotfix/urgent_fix - - Fix some issues with firewalls and load balancer structs - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 4f53b0218a35dbc39e02e756e1fe8ecb246ede28 - note: Change GetDNSRecord to find by ID not name - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: edfa55837775b27b8683ee9af5333740387fe22c - note: |- - Remove DNSDomainID from DNSRecordConfig - - Feels like that shouldn't be part of an update, so it's easier to specify: - - CreateDNSRecord(domainID string, r *DNSRecordConfig) - - for creating and just: - - UpdateDNSRecord(r *DNSRecord, rc *DNSRecordConfig) - - for updating. Also feels like the order should be "update X with Y" so DNSRecord - is first and DNSRecordConfig is second. - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: d8c0e9675381e118bb8f510c10ddd4120417b56d - note: |- - Merge pull request #23 from alejandrojnm/feature/update_dns_record - - Feature/update dns record - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 5ae22ab13db666397668c3fa83ea38e69d79a1e3 - note: Fix instance test - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: c470a7d51e1e71c1de6f5f9f9c0a2cac6f8e4c75 - note: Fix signature of SetInstanceTags - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 1032a3be04fa705d30221fcf4fb739c80600f290 - note: Add GetInstanceConsoleURL method - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: efbe8dbc06a3169ce046d2205395a27ba7c7331a - note: Check links in go documentation - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 83fdce86fa5e722f4dce62cafbbb9111ba68a161 - note: Change link to docs - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 7cbcb38c513e3b2fe42ef7480a0d0054c269abf1 - note: Update badges - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: f149ccdce08e326133fe16513b3e499303fe6fee - note: Fix tests after some minor refactoring - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: f0fa3a15db27988b4de21d7b14c7e9e4cdf8caaf - note: Change GB to Gigabytes - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 62a82aec36c7655126dd88cb20d05f447655ac66 - note: Fix lint issues - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 143ac3148aa72b247dd39af2225282ba3205b4da - note: |- - Change workflow to custom action - - The workflow version failed with "go env" not set, so switched to custom - version from https://stackoverflow.com/questions/59236611/github-actions-run-golint-on-wihdows - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 541c21a62f26842a3b4bc43ee66c1eea47b942bf - note: Move lint to its own action - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 4e265ae4f1fae45da83d060901125d7ce2b3982d - note: Use user-contributed lint action - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 0aa650f472ae4fec1696040b75b437d85320e58b - note: Install golint before running it - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 0bbdcd0cff82ea6bb1d9bd4fb7c5f91a6c74e599 - note: Add lint to tests and Go 1.14 - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: f2cd42c5c84822a9ac1c3a232da8bfefa2b76a02 - note: Add changelog - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: d9686526113499826afd4b2b5589b983dc224daa - note: Add Find* methods to all areas - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 8dafd66a091217f93726871970a852c50ff3e52a - note: Fix some linting issues with Kubernetes - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: dd906190213e1d954ab9e7a5cf384cbbd1fdedfb - note: Add LICENSE - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: ee8dab3b93a31c5d0bccac7f6f845a1b577af2b0 - note: Return an error if creating a client with an empty API key - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 1bfa0af0534d761f6fc73d1706b4922e3ba6d941 - note: Remove progress table from README as its now module complete - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 0471e7d2ba28233ff1fd60b0b8fc636178311cb5 - note: Add minor tweaks to Webhooks - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 2d7d45db3e0597fcd84e4f23306bfb0ae22c9e26 - note: |- - Merge pull request #21 from alejandrojnm/feature/webhook - - Add webhooks endpoints - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: fc4a75b783d1bbad1d7bd4f6cdde0ab0b45554b1 - note: Change minor naming issues in snapshot module - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 4b2ae45ccdd0d014d5b704f691bf075d79ab4292 - note: |- - Merge pull request #20 from alejandrojnm/feature/api_snapshots - - Feature/api snapshots - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 81e4652eaae0f4dc2e411751944fcad1d6fa1e66 - note: Fix a couple of comments - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 457dfa5d2a5712e0261b87433bf2a69276be22b6 - note: Add charge endpoint - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: f20cab75a729c4eee1f4978975a58520a39a6f73 - note: Change awkward names of units in field names - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 971a4a4718a87d5116396669c90f8ceb377439c2 - note: Add instance size endpoints - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 7b54da2cb550104a67e82da4d22fd1de6cd06971 - note: Add quota endpoint - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 66b590cc78a4c893ffb557e454563e9ca59c910e - note: Add region endpoint - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: e3433bb00eff673964bf28640aa71bd7d899cdff - note: Change List functions to be plural and prefixing DNS - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 43d6bc08956f7845f2429a8e8faa8887edfd9d52 - note: Update display of README progress - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: eacb35cab0d0d9ab3d04e43c3dc8b4bcff8f6bb3 - note: |- - Merge pull request #19 from alejandrojnm/hotfix/loadbalance_readme - - Add status to README and a small fix for Loadbalancer - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 41c7acb325009f5fde2a9b92a267b2cfade1290b - note: |- - Merge pull request #18 from alejandrojnm/master - - Update Readme.md to add module status - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 730f2dd40debc53b4fe3389b6f9cdf3cc620e3a0 - note: |- - Merge pull request #16 from alejandrojnm/add-kubernetes-apis - - Add Kubernetes apis - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: b8d5ddb852a3fd9b3c20d902e8895a1ee620cbf5 - note: Add minor changes to Load Balancer methods - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: e69c9746d6d7bbd2211c4abc1481f46503135ef2 - note: |- - Merge pull request #14 from alejandrojnm/feature/loadbalancer - - Add Load Balancer endpoints - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 5590adda1b4b5420c9d19ed900ba378d303b3a63 - note: |- - Merge pull request #11 from rberrelleza/get-record - - Add DNS record management - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 338c4dfdb9ab84aeb06d7358a8583d8194df0ad9 - note: |- - Merge pull request #12 from rberrelleza/add-owners - - Add a default owner for the repo - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 5378d41d0f19a14aa6a71646c11d412b0e9d36c5 - note: Add client.LastJSONResponse for the CLI to use - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: b3aba767c3d70f854069a85636b70f2983884646 - note: |- - Merge pull request #7 from rberrelleza/fix-casing-forms - - Change dnsconfig to `form` - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: f66cbcbb6f2d16db7b3091577a30bfc58fb611c4 - note: |- - Merge pull request #9 from alejandrojnm/hostfix-network - - Hotfix network - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: ab4ebaa89596799021be66d4adb7a172a8c753f0 - note: Change string to map of strings - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: a69bef1d9ea8463c546b54cd2bf1e52c4b15b324 - note: Cleanup some minor issues - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 3487081009646150d4cd44ee6774aa6b3e4a5cc7 - note: |- - Merge pull request #3 from rberrelleza/add-dns-apis - - Add DNS records endpoints - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 554cc2b36c626b59a5ef174380ae6c61b935f951 - note: |- - Merge pull request #4 from alejandrojnm/add-firewall-apis - - Add firewall endpoints - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 9e8048fc98ff620887057dfcf8e3e2752882516d - note: |- - Merge pull request #5 from alejandrojnm/add-volumes-apis - - Add volumes option to the civogo - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: bbb04c3d1af1ab96bb0e7ea4cd157480c25eff82 - note: |- - Merge pull request #6 from alejandrojnm/add-network-options - - Add network endpoints - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 57fae6917c372e1dbf8fa927c3d0cc5c770a5fc8 - note: Change order of automated tests - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: e6d1cdcbe3f473c3de7aac2e6a23ed81bb168932 - note: Ensure gofmt code compliance - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 5d9bf4a7ee1d758e426278525121a8f738b19c00 - note: Remove panic - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 50fd2f10b190a719e60bc5e48b19de9fc902b709 - note: Remove string interpolation, more go idiomatic this way - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 8e8caf0ad47fff2e62fadcf552eb5e4d66592e77 - note: Move JSON parsing for SimpleResponse to a helper method - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: a6d635388fa4a8a708b00b362c9a5d946779624b - note: Add CONTRIBUTING guide - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 1eabf12ecbbe2318011749069a761602c4988184 - note: Add status bage to README - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 2e043e1546b936f207b93eb6488da31a399a9f18 - note: Add Go module support - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: e9c407451c8caa0b91d55b2315323bae137a4124 - note: Add GitHub action to test golang - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 08e7668c39025c13262b3685ede9568667c84d96 - note: Fix tests - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 264d4c873ddc48f8b00f8aaaba44d97264f01d08 - note: Add Instance functions - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: cd217b8bbf02d8dd370fce08f64da5000f34e659 - note: Add Instance methods,first version - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 31634d0fc3a2ecf92a5f992bc82faf1d67d5b146 - note: Add tests for instance - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: dc16cca826555de0b1226064eef67e8d22e69f45 - note: Add Instance listing/fetching/creating - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 5e258256e4e9bbb76665dfbc5435d08ff5567439 - note: '- Add more options to the network options' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 6fbeb8a827c5f9b28a243165b5a31ed120baa196 - note: |- - - Add New network options - - Add Delete network options - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: e4a70af4d6c36c82dee1ddc015b02f7450b17465 - note: Add option to create a new network - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 3db7ca46a0208c62525443bd3bc680f2855b9b2e - note: Fix error in volumes.go in the VolumesConfig - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 52dca3536f567ec0ada3a13d8923bdc6598c88b1 - note: Add volumes option to the civogo - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 5aecfa1c5b38fb45443565cee4aa3a7f8718c228 - note: '- Fix a error in firewall.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 070605dee9a7ab13ae9dc6443aa628b93735cfc5 - note: '- Fix some error in firewall.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 572557b65acf6a0444d407bb8d85fee9b1dccaa0 - note: Add firewall option to the civogo - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: ebde1c1205efd5a21ff7931cb4c1f6aaa97aa650 - note: fix test - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 9c0f096760956e26781d06630fd055e90b80b928 - note: handle http errors - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 37733dc1cb98f5f4ab8eeb702e754ddca02be5ef - note: add tests - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 5f324bc9940b1b2f676a58faeebeec34ba182486 - note: Add functions to manipulate records - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 796741761997915ffece15e93d55c68a478930c3 - note: '- Fix a error network, now you can rename a network' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: cbeb0cd40a5b9be863e715f1b681298a92fa1049 - note: |- - Merge pull request #1 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 1ea969afe47fb4a2a0c1c4d8c45f6cfb8961b134 - note: change config for `form` - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: fb92d21fa6fad853937e6c44104b0e9df3b91115 - note: Add a default owner for the repo - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 3055381e458838dd5278daa93144d1ce9e82b3b7 - note: use Create instead of New - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 5c6fe06b4d2bac5093e0485ebb898216d27cc785 - note: New and delete Domain - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 9c28c61c82ce04c59a1d4c1b20a92ded718aa649 - note: add a result const - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 9df135c1f437b38ca5b6bbd8aa93f8a45f412d69 - note: fix GetDomain test - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 5bf0824610f72dd832d2ad0cbf684ae764dd2552 - note: get and list records - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: acb6cd6ac36758505dea3a868fcceb101b9ba425 - note: update and new domain - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 4048f9c18c147e8a4258a18170f01a085ebfa30e - note: '- Update name in loadbalancer_test.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: fea3cf5be57ec93b3e9052f6fd3e40f41bdea316 - note: '- Update the loadbalancer_test.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 84b247e534fa56e8b53b5a474f151df63371e768 - note: '- Fix some error in types in loadbalancer.go and loadbalancer_test.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: e2e8858b03fb2bb26df7853fa31e97fe762f889b - note: '- Now can add, delete update and list the load balance' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 4002274e27a2980ce88257ee8ffb51b5b25f5e9b - note: '- Initial files' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 2fdaa159c41e721e365dffe87ab33a84aa78b99f - note: '- Fix all recommendation from Andy, change NumTargetNodes from string to int, and in UpdateKubernetesClusters change map[string]string in favor of map[string]interface{}' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: fa67209028b2616a7128101cea1039dfac200467 - note: '- Fix all recommendation from Andy' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 7e0221f080d6ba59ffdcd1c08f3a96946e8cf453 - note: '- Final change in the kubernetes interface' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 9bb817f9d012fd569ce9577797408187aede4e82 - note: '- Some change in kubernetes' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 05711724bd7c1df917ba699a5b993eafee39f9a6 - note: '- First commit for kubernetes' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 58429347d9be7dd2c8f3db25e0596d60c2de3516 - note: '- Update README.md with a list of all modules' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 5a3cfcd6c379cc41d86f71a21ba0320db470a3e7 - note: |- - Merge pull request #3 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 311f778ec931617fe92fb795d62499a0c0eb599e - note: |- - Merge pull request #2 from civo/master - - Update - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 74877fa8e299032deeb3f0fdc189aaa333929b9a - note: '- Update README.md, Fix error in loadbalancer.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: d2ede4b06ad1b578c28736bcbf1d3051f5b97ad0 - note: '- Done the snapshot module' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: eaf506c73ee7d8681e716deef622f7cb3bcbcf8a - note: '- First part of the snapshot api' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 2408aaa379cf8c5acba5c31e64847cb10530d0a0 - note: Merge branch 'master' into feature/api_snapshots - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 6d43cd657bf1fb75fe9e7ee5faf0357909847867 - note: |- - Merge pull request #4 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 6e2137e8aa7c99e188592c97026908cdc7a84117 - note: |- - Merge pull request #5 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 467bd9a5d170511356b49c7a7a2d2780b25f02cd - note: '- Add webhook module' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 55ee07109c846cb600f98864aff6df16d9acb658 - note: |- - Merge pull request #6 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 2edd54691ce38cc5c3cb8bf4316cfa8030774aea - note: '- Fix some bug in dns.go dns_test.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 8ff8a494d235357be3a222c758a99c4879bf104f - note: '- Add option to update dns record' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 08c1c1989d6f1e213690cc66fbc0a6ede16bc603 - note: |- - Merge pull request #7 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 29eab04018cd7e38cabd9b76a9eca7841a4d9377 - note: |- - fix(loadbalancer): Fix data in test - - Fix data in the test of the loadbalancer - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 450e018849e739b2d5b38aa6449e61aa430f2ee6 - note: |- - fix(loadbalancer): Fix struct in loadbalancer - - Error in the struct of the loadbalancer configuration - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: f8658cf3a98c4a74c7e839b7bf914a502d6d066a - note: |- - fix(firewall): Fix error in firewall test - - Error in firewall_test.go - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 6b4ca011ae13951259053634016f04d7747cb9c9 - note: |- - fix(firewall): Fix struct in firewall - - Error in the struct of the firewall configuration and new creation - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 7f13e1c8323128da35faffd55c26cac0244a06f9 - note: '- Fix some bug in firewall.go and firewall_test.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 272359878aad1fefc046c00343bd731a4749ff13 - note: |- - Merge pull request #9 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: d118d875d3887b4ff64c415f29f7243db012bf89 - note: |- - Merge pull request #8 from civo/master - - Fix some linting issues with Kubernetes - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: aff666767bdbca9947863df2b4b4f093e3e6a2f5 - note: |- - fix(firewall): Change the id passed to the function - - Change the id name from idfirewall to firewallID - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: c480c52808b433d8919748b807c8e05e6810699b - note: |- - fix(firewall): Fix name in the firewall - - Fixed test - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 874f9ef69a736e3854aa28b9a806ee1aca24317e - note: |- - fix(firewall): Fix name in the firewall - - Fixed function name FindFirewallRules to FindFirewallRule - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 58a860321ed5dbc77fb93ad0034f8d29b005b139 - note: |- - feat(firewall): Add new option to search rule - - Added option to search rule inside a firewall rules list - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 53dc6a1e21508df425c12d3ab56674cbbef0be8c - note: |- - Merge pull request #11 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 99662c54e9b092e02309236c97ab882221f309a5 - note: |- - Merge pull request #10 from alejandrojnm/hotfix/urgent_fix - - - Fix some bug in firewall.go and firewall_test.go - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com -- semver: 0.2.2 - date: 2020-03-27T12:22:39Z - packager: Andy Jeffries - changes: - - commit: d0635c7e96f4509ebdabe9a4deb8acc0cc0c26d4 - note: Change PublicIPRequired to a string to support IP moving - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: c73d51fa77fac7f76213c697982fce3c3dfe7f0d - note: |- - add template endpoints - - * add new feature to Template module - - - You can now list all templates, create a new one, update and delete any templates that belonged to the user - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: d20f49e0bb1d86ab27b776e668a94f9cc006304d - note: Minor tweaks to SSH key struct - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: f5eab5e2065315493319829ed213b2732e80f154 - note: |- - update the ssh key file - - Fix some bug reported, in comment and variables - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: fdf845a601aac8e283f0bdb580c41018d3b737cc - note: |- - Add new option to ssh - - Now you can create, update and delete the ssh keys, at the same time we add ID to the client to return the ID when the backend does it, as in the case of creating an ssh key - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 95ae34b13fe3a49d18805975a5691e7f37c93c63 - note: Fail the build if any lint issues - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 588340b6dfe663e4b7b7dd13b5bc36f1523a538e - note: |- - add rename endpoint for firewall - - Now you can rename a firewall using RenameFirewall function, It is no - longer necessary to delete the firewall to rename it - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 0961777679546b5521fbc9a7bf0c0b292dd53c9b - note: |- - Updated the lib to use json and not form for all request - - * We change the client to send all request in JSON format, to avoid build a custom form procesator - * Fix failing test - had trailing whitespace - * Change all test to use the new way in client.go - * Add Reason to the HTTPError struct, now we return the reason of the error from the server - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: a8ebeb95a5cd84ea46b5dedb487b276901580196 - note: Add body to client error responses - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 5ccea39dd4e8bf03139b64e07f7af025b84c5cd8 - note: |- - Merge pull request #25 from alejandrojnm/hostfix/add_function_firewall - - Hostfix/add function firewall - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 7b07ee24a3525d8de8e3ee1dda8b755f5cdea526 - note: |- - Merge pull request #24 from alejandrojnm/hotfix/urgent_fix - - Fix some issues with firewalls and load balancer structs - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 4f53b0218a35dbc39e02e756e1fe8ecb246ede28 - note: Change GetDNSRecord to find by ID not name - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: edfa55837775b27b8683ee9af5333740387fe22c - note: |- - Remove DNSDomainID from DNSRecordConfig - - Feels like that shouldn't be part of an update, so it's easier to specify: - - CreateDNSRecord(domainID string, r *DNSRecordConfig) - - for creating and just: - - UpdateDNSRecord(r *DNSRecord, rc *DNSRecordConfig) - - for updating. Also feels like the order should be "update X with Y" so DNSRecord - is first and DNSRecordConfig is second. - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: d8c0e9675381e118bb8f510c10ddd4120417b56d - note: |- - Merge pull request #23 from alejandrojnm/feature/update_dns_record - - Feature/update dns record - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 5ae22ab13db666397668c3fa83ea38e69d79a1e3 - note: Fix instance test - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: c470a7d51e1e71c1de6f5f9f9c0a2cac6f8e4c75 - note: Fix signature of SetInstanceTags - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 1032a3be04fa705d30221fcf4fb739c80600f290 - note: Add GetInstanceConsoleURL method - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: efbe8dbc06a3169ce046d2205395a27ba7c7331a - note: Check links in go documentation - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 83fdce86fa5e722f4dce62cafbbb9111ba68a161 - note: Change link to docs - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 7cbcb38c513e3b2fe42ef7480a0d0054c269abf1 - note: Update badges - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: f149ccdce08e326133fe16513b3e499303fe6fee - note: Fix tests after some minor refactoring - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: f0fa3a15db27988b4de21d7b14c7e9e4cdf8caaf - note: Change GB to Gigabytes - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 62a82aec36c7655126dd88cb20d05f447655ac66 - note: Fix lint issues - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 143ac3148aa72b247dd39af2225282ba3205b4da - note: |- - Change workflow to custom action - - The workflow version failed with "go env" not set, so switched to custom - version from https://stackoverflow.com/questions/59236611/github-actions-run-golint-on-wihdows - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 541c21a62f26842a3b4bc43ee66c1eea47b942bf - note: Move lint to its own action - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 4e265ae4f1fae45da83d060901125d7ce2b3982d - note: Use user-contributed lint action - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 0aa650f472ae4fec1696040b75b437d85320e58b - note: Install golint before running it - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 0bbdcd0cff82ea6bb1d9bd4fb7c5f91a6c74e599 - note: Add lint to tests and Go 1.14 - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: f2cd42c5c84822a9ac1c3a232da8bfefa2b76a02 - note: Add changelog - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: d9686526113499826afd4b2b5589b983dc224daa - note: Add Find* methods to all areas - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 8dafd66a091217f93726871970a852c50ff3e52a - note: Fix some linting issues with Kubernetes - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: dd906190213e1d954ab9e7a5cf384cbbd1fdedfb - note: Add LICENSE - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: ee8dab3b93a31c5d0bccac7f6f845a1b577af2b0 - note: Return an error if creating a client with an empty API key - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 1bfa0af0534d761f6fc73d1706b4922e3ba6d941 - note: Remove progress table from README as its now module complete - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 0471e7d2ba28233ff1fd60b0b8fc636178311cb5 - note: Add minor tweaks to Webhooks - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 2d7d45db3e0597fcd84e4f23306bfb0ae22c9e26 - note: |- - Merge pull request #21 from alejandrojnm/feature/webhook - - Add webhooks endpoints - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: fc4a75b783d1bbad1d7bd4f6cdde0ab0b45554b1 - note: Change minor naming issues in snapshot module - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 4b2ae45ccdd0d014d5b704f691bf075d79ab4292 - note: |- - Merge pull request #20 from alejandrojnm/feature/api_snapshots - - Feature/api snapshots - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 81e4652eaae0f4dc2e411751944fcad1d6fa1e66 - note: Fix a couple of comments - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 457dfa5d2a5712e0261b87433bf2a69276be22b6 - note: Add charge endpoint - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: f20cab75a729c4eee1f4978975a58520a39a6f73 - note: Change awkward names of units in field names - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 971a4a4718a87d5116396669c90f8ceb377439c2 - note: Add instance size endpoints - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 7b54da2cb550104a67e82da4d22fd1de6cd06971 - note: Add quota endpoint - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 66b590cc78a4c893ffb557e454563e9ca59c910e - note: Add region endpoint - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: e3433bb00eff673964bf28640aa71bd7d899cdff - note: Change List functions to be plural and prefixing DNS - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 43d6bc08956f7845f2429a8e8faa8887edfd9d52 - note: Update display of README progress - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: eacb35cab0d0d9ab3d04e43c3dc8b4bcff8f6bb3 - note: |- - Merge pull request #19 from alejandrojnm/hotfix/loadbalance_readme - - Add status to README and a small fix for Loadbalancer - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 41c7acb325009f5fde2a9b92a267b2cfade1290b - note: |- - Merge pull request #18 from alejandrojnm/master - - Update Readme.md to add module status - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 730f2dd40debc53b4fe3389b6f9cdf3cc620e3a0 - note: |- - Merge pull request #16 from alejandrojnm/add-kubernetes-apis - - Add Kubernetes apis - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: b8d5ddb852a3fd9b3c20d902e8895a1ee620cbf5 - note: Add minor changes to Load Balancer methods - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: e69c9746d6d7bbd2211c4abc1481f46503135ef2 - note: |- - Merge pull request #14 from alejandrojnm/feature/loadbalancer - - Add Load Balancer endpoints - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 5590adda1b4b5420c9d19ed900ba378d303b3a63 - note: |- - Merge pull request #11 from rberrelleza/get-record - - Add DNS record management - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 338c4dfdb9ab84aeb06d7358a8583d8194df0ad9 - note: |- - Merge pull request #12 from rberrelleza/add-owners - - Add a default owner for the repo - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 5378d41d0f19a14aa6a71646c11d412b0e9d36c5 - note: Add client.LastJSONResponse for the CLI to use - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: b3aba767c3d70f854069a85636b70f2983884646 - note: |- - Merge pull request #7 from rberrelleza/fix-casing-forms - - Change dnsconfig to `form` - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: f66cbcbb6f2d16db7b3091577a30bfc58fb611c4 - note: |- - Merge pull request #9 from alejandrojnm/hostfix-network - - Hotfix network - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: ab4ebaa89596799021be66d4adb7a172a8c753f0 - note: Change string to map of strings - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: a69bef1d9ea8463c546b54cd2bf1e52c4b15b324 - note: Cleanup some minor issues - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 3487081009646150d4cd44ee6774aa6b3e4a5cc7 - note: |- - Merge pull request #3 from rberrelleza/add-dns-apis - - Add DNS records endpoints - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 554cc2b36c626b59a5ef174380ae6c61b935f951 - note: |- - Merge pull request #4 from alejandrojnm/add-firewall-apis - - Add firewall endpoints - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 9e8048fc98ff620887057dfcf8e3e2752882516d - note: |- - Merge pull request #5 from alejandrojnm/add-volumes-apis - - Add volumes option to the civogo - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: bbb04c3d1af1ab96bb0e7ea4cd157480c25eff82 - note: |- - Merge pull request #6 from alejandrojnm/add-network-options - - Add network endpoints - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 57fae6917c372e1dbf8fa927c3d0cc5c770a5fc8 - note: Change order of automated tests - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: e6d1cdcbe3f473c3de7aac2e6a23ed81bb168932 - note: Ensure gofmt code compliance - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 5d9bf4a7ee1d758e426278525121a8f738b19c00 - note: Remove panic - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 50fd2f10b190a719e60bc5e48b19de9fc902b709 - note: Remove string interpolation, more go idiomatic this way - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 8e8caf0ad47fff2e62fadcf552eb5e4d66592e77 - note: Move JSON parsing for SimpleResponse to a helper method - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: a6d635388fa4a8a708b00b362c9a5d946779624b - note: Add CONTRIBUTING guide - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 1eabf12ecbbe2318011749069a761602c4988184 - note: Add status bage to README - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 2e043e1546b936f207b93eb6488da31a399a9f18 - note: Add Go module support - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: e9c407451c8caa0b91d55b2315323bae137a4124 - note: Add GitHub action to test golang - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 08e7668c39025c13262b3685ede9568667c84d96 - note: Fix tests - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 264d4c873ddc48f8b00f8aaaba44d97264f01d08 - note: Add Instance functions - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: cd217b8bbf02d8dd370fce08f64da5000f34e659 - note: Add Instance methods,first version - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 31634d0fc3a2ecf92a5f992bc82faf1d67d5b146 - note: Add tests for instance - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: dc16cca826555de0b1226064eef67e8d22e69f45 - note: Add Instance listing/fetching/creating - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 5e258256e4e9bbb76665dfbc5435d08ff5567439 - note: '- Add more options to the network options' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 6fbeb8a827c5f9b28a243165b5a31ed120baa196 - note: |- - - Add New network options - - Add Delete network options - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: e4a70af4d6c36c82dee1ddc015b02f7450b17465 - note: Add option to create a new network - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 3db7ca46a0208c62525443bd3bc680f2855b9b2e - note: Fix error in volumes.go in the VolumesConfig - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 52dca3536f567ec0ada3a13d8923bdc6598c88b1 - note: Add volumes option to the civogo - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 5aecfa1c5b38fb45443565cee4aa3a7f8718c228 - note: '- Fix a error in firewall.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 070605dee9a7ab13ae9dc6443aa628b93735cfc5 - note: '- Fix some error in firewall.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 572557b65acf6a0444d407bb8d85fee9b1dccaa0 - note: Add firewall option to the civogo - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: ebde1c1205efd5a21ff7931cb4c1f6aaa97aa650 - note: fix test - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 9c0f096760956e26781d06630fd055e90b80b928 - note: handle http errors - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 37733dc1cb98f5f4ab8eeb702e754ddca02be5ef - note: add tests - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 5f324bc9940b1b2f676a58faeebeec34ba182486 - note: Add functions to manipulate records - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 796741761997915ffece15e93d55c68a478930c3 - note: '- Fix a error network, now you can rename a network' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: cbeb0cd40a5b9be863e715f1b681298a92fa1049 - note: |- - Merge pull request #1 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 1ea969afe47fb4a2a0c1c4d8c45f6cfb8961b134 - note: change config for `form` - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: fb92d21fa6fad853937e6c44104b0e9df3b91115 - note: Add a default owner for the repo - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 3055381e458838dd5278daa93144d1ce9e82b3b7 - note: use Create instead of New - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 5c6fe06b4d2bac5093e0485ebb898216d27cc785 - note: New and delete Domain - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 9c28c61c82ce04c59a1d4c1b20a92ded718aa649 - note: add a result const - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 9df135c1f437b38ca5b6bbd8aa93f8a45f412d69 - note: fix GetDomain test - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 5bf0824610f72dd832d2ad0cbf684ae764dd2552 - note: get and list records - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: acb6cd6ac36758505dea3a868fcceb101b9ba425 - note: update and new domain - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 4048f9c18c147e8a4258a18170f01a085ebfa30e - note: '- Update name in loadbalancer_test.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: fea3cf5be57ec93b3e9052f6fd3e40f41bdea316 - note: '- Update the loadbalancer_test.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 84b247e534fa56e8b53b5a474f151df63371e768 - note: '- Fix some error in types in loadbalancer.go and loadbalancer_test.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: e2e8858b03fb2bb26df7853fa31e97fe762f889b - note: '- Now can add, delete update and list the load balance' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 4002274e27a2980ce88257ee8ffb51b5b25f5e9b - note: '- Initial files' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 2fdaa159c41e721e365dffe87ab33a84aa78b99f - note: '- Fix all recommendation from Andy, change NumTargetNodes from string to int, and in UpdateKubernetesClusters change map[string]string in favor of map[string]interface{}' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: fa67209028b2616a7128101cea1039dfac200467 - note: '- Fix all recommendation from Andy' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 7e0221f080d6ba59ffdcd1c08f3a96946e8cf453 - note: '- Final change in the kubernetes interface' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 9bb817f9d012fd569ce9577797408187aede4e82 - note: '- Some change in kubernetes' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 05711724bd7c1df917ba699a5b993eafee39f9a6 - note: '- First commit for kubernetes' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 58429347d9be7dd2c8f3db25e0596d60c2de3516 - note: '- Update README.md with a list of all modules' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 5a3cfcd6c379cc41d86f71a21ba0320db470a3e7 - note: |- - Merge pull request #3 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 311f778ec931617fe92fb795d62499a0c0eb599e - note: |- - Merge pull request #2 from civo/master - - Update - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 74877fa8e299032deeb3f0fdc189aaa333929b9a - note: '- Update README.md, Fix error in loadbalancer.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: d2ede4b06ad1b578c28736bcbf1d3051f5b97ad0 - note: '- Done the snapshot module' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: eaf506c73ee7d8681e716deef622f7cb3bcbcf8a - note: '- First part of the snapshot api' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 2408aaa379cf8c5acba5c31e64847cb10530d0a0 - note: Merge branch 'master' into feature/api_snapshots - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 6d43cd657bf1fb75fe9e7ee5faf0357909847867 - note: |- - Merge pull request #4 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 6e2137e8aa7c99e188592c97026908cdc7a84117 - note: |- - Merge pull request #5 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 467bd9a5d170511356b49c7a7a2d2780b25f02cd - note: '- Add webhook module' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 55ee07109c846cb600f98864aff6df16d9acb658 - note: |- - Merge pull request #6 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 2edd54691ce38cc5c3cb8bf4316cfa8030774aea - note: '- Fix some bug in dns.go dns_test.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 8ff8a494d235357be3a222c758a99c4879bf104f - note: '- Add option to update dns record' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 08c1c1989d6f1e213690cc66fbc0a6ede16bc603 - note: |- - Merge pull request #7 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 29eab04018cd7e38cabd9b76a9eca7841a4d9377 - note: |- - fix(loadbalancer): Fix data in test - - Fix data in the test of the loadbalancer - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 450e018849e739b2d5b38aa6449e61aa430f2ee6 - note: |- - fix(loadbalancer): Fix struct in loadbalancer - - Error in the struct of the loadbalancer configuration - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: f8658cf3a98c4a74c7e839b7bf914a502d6d066a - note: |- - fix(firewall): Fix error in firewall test - - Error in firewall_test.go - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 6b4ca011ae13951259053634016f04d7747cb9c9 - note: |- - fix(firewall): Fix struct in firewall - - Error in the struct of the firewall configuration and new creation - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 7f13e1c8323128da35faffd55c26cac0244a06f9 - note: '- Fix some bug in firewall.go and firewall_test.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 272359878aad1fefc046c00343bd731a4749ff13 - note: |- - Merge pull request #9 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: d118d875d3887b4ff64c415f29f7243db012bf89 - note: |- - Merge pull request #8 from civo/master - - Fix some linting issues with Kubernetes - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: aff666767bdbca9947863df2b4b4f093e3e6a2f5 - note: |- - fix(firewall): Change the id passed to the function - - Change the id name from idfirewall to firewallID - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: c480c52808b433d8919748b807c8e05e6810699b - note: |- - fix(firewall): Fix name in the firewall - - Fixed test - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 874f9ef69a736e3854aa28b9a806ee1aca24317e - note: |- - fix(firewall): Fix name in the firewall - - Fixed function name FindFirewallRules to FindFirewallRule - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 58a860321ed5dbc77fb93ad0034f8d29b005b139 - note: |- - feat(firewall): Add new option to search rule - - Added option to search rule inside a firewall rules list - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 53dc6a1e21508df425c12d3ab56674cbbef0be8c - note: |- - Merge pull request #11 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 99662c54e9b092e02309236c97ab882221f309a5 - note: |- - Merge pull request #10 from alejandrojnm/hotfix/urgent_fix - - - Fix some bug in firewall.go and firewall_test.go - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com -- semver: 0.2.1 - date: 2020-03-27T08:15:58Z - packager: Andy Jeffries - changes: - - commit: c73d51fa77fac7f76213c697982fce3c3dfe7f0d - note: |- - add template endpoints - - * add new feature to Template module - - - You can now list all templates, create a new one, update and delete any templates that belonged to the user - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com -- semver: 0.2.0 - date: 2020-03-24T13:03:58Z - packager: Andy Jeffries - changes: - - commit: d20f49e0bb1d86ab27b776e668a94f9cc006304d - note: Minor tweaks to SSH key struct - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: f5eab5e2065315493319829ed213b2732e80f154 - note: |- - update the ssh key file - - Fix some bug reported, in comment and variables - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: fdf845a601aac8e283f0bdb580c41018d3b737cc - note: |- - Add new option to ssh - - Now you can create, update and delete the ssh keys, at the same time we add ID to the client to return the ID when the backend does it, as in the case of creating an ssh key - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 95ae34b13fe3a49d18805975a5691e7f37c93c63 - note: Fail the build if any lint issues - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk -- semver: 0.1.9 - date: 2020-03-20T15:32:52Z - packager: Andy Jeffries - changes: - - commit: 588340b6dfe663e4b7b7dd13b5bc36f1523a538e - note: |- - add rename endpoint for firewall - - Now you can rename a firewall using RenameFirewall function, It is no - longer necessary to delete the firewall to rename it - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 0961777679546b5521fbc9a7bf0c0b292dd53c9b - note: |- - Updated the lib to use json and not form for all request - - * We change the client to send all request in JSON format, to avoid build a custom form procesator - * Fix failing test - had trailing whitespace - * Change all test to use the new way in client.go - * Add Reason to the HTTPError struct, now we return the reason of the error from the server - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: a8ebeb95a5cd84ea46b5dedb487b276901580196 - note: Add body to client error responses - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 5ccea39dd4e8bf03139b64e07f7af025b84c5cd8 - note: |- - Merge pull request #25 from alejandrojnm/hostfix/add_function_firewall - - Hostfix/add function firewall - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 7b07ee24a3525d8de8e3ee1dda8b755f5cdea526 - note: |- - Merge pull request #24 from alejandrojnm/hotfix/urgent_fix - - Fix some issues with firewalls and load balancer structs - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 4f53b0218a35dbc39e02e756e1fe8ecb246ede28 - note: Change GetDNSRecord to find by ID not name - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: edfa55837775b27b8683ee9af5333740387fe22c - note: |- - Remove DNSDomainID from DNSRecordConfig - - Feels like that shouldn't be part of an update, so it's easier to specify: - - CreateDNSRecord(domainID string, r *DNSRecordConfig) - - for creating and just: - - UpdateDNSRecord(r *DNSRecord, rc *DNSRecordConfig) - - for updating. Also feels like the order should be "update X with Y" so DNSRecord - is first and DNSRecordConfig is second. - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: d8c0e9675381e118bb8f510c10ddd4120417b56d - note: |- - Merge pull request #23 from alejandrojnm/feature/update_dns_record - - Feature/update dns record - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 5ae22ab13db666397668c3fa83ea38e69d79a1e3 - note: Fix instance test - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: c470a7d51e1e71c1de6f5f9f9c0a2cac6f8e4c75 - note: Fix signature of SetInstanceTags - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 1032a3be04fa705d30221fcf4fb739c80600f290 - note: Add GetInstanceConsoleURL method - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: efbe8dbc06a3169ce046d2205395a27ba7c7331a - note: Check links in go documentation - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 83fdce86fa5e722f4dce62cafbbb9111ba68a161 - note: Change link to docs - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 7cbcb38c513e3b2fe42ef7480a0d0054c269abf1 - note: Update badges - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: f149ccdce08e326133fe16513b3e499303fe6fee - note: Fix tests after some minor refactoring - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: f0fa3a15db27988b4de21d7b14c7e9e4cdf8caaf - note: Change GB to Gigabytes - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 62a82aec36c7655126dd88cb20d05f447655ac66 - note: Fix lint issues - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 143ac3148aa72b247dd39af2225282ba3205b4da - note: |- - Change workflow to custom action - - The workflow version failed with "go env" not set, so switched to custom - version from https://stackoverflow.com/questions/59236611/github-actions-run-golint-on-wihdows - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 541c21a62f26842a3b4bc43ee66c1eea47b942bf - note: Move lint to its own action - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 4e265ae4f1fae45da83d060901125d7ce2b3982d - note: Use user-contributed lint action - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 0aa650f472ae4fec1696040b75b437d85320e58b - note: Install golint before running it - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 0bbdcd0cff82ea6bb1d9bd4fb7c5f91a6c74e599 - note: Add lint to tests and Go 1.14 - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: f2cd42c5c84822a9ac1c3a232da8bfefa2b76a02 - note: Add changelog - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: d9686526113499826afd4b2b5589b983dc224daa - note: Add Find* methods to all areas - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 8dafd66a091217f93726871970a852c50ff3e52a - note: Fix some linting issues with Kubernetes - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: dd906190213e1d954ab9e7a5cf384cbbd1fdedfb - note: Add LICENSE - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: ee8dab3b93a31c5d0bccac7f6f845a1b577af2b0 - note: Return an error if creating a client with an empty API key - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 1bfa0af0534d761f6fc73d1706b4922e3ba6d941 - note: Remove progress table from README as its now module complete - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 0471e7d2ba28233ff1fd60b0b8fc636178311cb5 - note: Add minor tweaks to Webhooks - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 2d7d45db3e0597fcd84e4f23306bfb0ae22c9e26 - note: |- - Merge pull request #21 from alejandrojnm/feature/webhook - - Add webhooks endpoints - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: fc4a75b783d1bbad1d7bd4f6cdde0ab0b45554b1 - note: Change minor naming issues in snapshot module - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 4b2ae45ccdd0d014d5b704f691bf075d79ab4292 - note: |- - Merge pull request #20 from alejandrojnm/feature/api_snapshots - - Feature/api snapshots - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 81e4652eaae0f4dc2e411751944fcad1d6fa1e66 - note: Fix a couple of comments - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 457dfa5d2a5712e0261b87433bf2a69276be22b6 - note: Add charge endpoint - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: f20cab75a729c4eee1f4978975a58520a39a6f73 - note: Change awkward names of units in field names - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 971a4a4718a87d5116396669c90f8ceb377439c2 - note: Add instance size endpoints - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 7b54da2cb550104a67e82da4d22fd1de6cd06971 - note: Add quota endpoint - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 66b590cc78a4c893ffb557e454563e9ca59c910e - note: Add region endpoint - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: e3433bb00eff673964bf28640aa71bd7d899cdff - note: Change List functions to be plural and prefixing DNS - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 43d6bc08956f7845f2429a8e8faa8887edfd9d52 - note: Update display of README progress - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: eacb35cab0d0d9ab3d04e43c3dc8b4bcff8f6bb3 - note: |- - Merge pull request #19 from alejandrojnm/hotfix/loadbalance_readme - - Add status to README and a small fix for Loadbalancer - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 41c7acb325009f5fde2a9b92a267b2cfade1290b - note: |- - Merge pull request #18 from alejandrojnm/master - - Update Readme.md to add module status - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 730f2dd40debc53b4fe3389b6f9cdf3cc620e3a0 - note: |- - Merge pull request #16 from alejandrojnm/add-kubernetes-apis - - Add Kubernetes apis - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: b8d5ddb852a3fd9b3c20d902e8895a1ee620cbf5 - note: Add minor changes to Load Balancer methods - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: e69c9746d6d7bbd2211c4abc1481f46503135ef2 - note: |- - Merge pull request #14 from alejandrojnm/feature/loadbalancer - - Add Load Balancer endpoints - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 5590adda1b4b5420c9d19ed900ba378d303b3a63 - note: |- - Merge pull request #11 from rberrelleza/get-record - - Add DNS record management - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 338c4dfdb9ab84aeb06d7358a8583d8194df0ad9 - note: |- - Merge pull request #12 from rberrelleza/add-owners - - Add a default owner for the repo - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 5378d41d0f19a14aa6a71646c11d412b0e9d36c5 - note: Add client.LastJSONResponse for the CLI to use - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: b3aba767c3d70f854069a85636b70f2983884646 - note: |- - Merge pull request #7 from rberrelleza/fix-casing-forms - - Change dnsconfig to `form` - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: f66cbcbb6f2d16db7b3091577a30bfc58fb611c4 - note: |- - Merge pull request #9 from alejandrojnm/hostfix-network - - Hotfix network - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: ab4ebaa89596799021be66d4adb7a172a8c753f0 - note: Change string to map of strings - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: a69bef1d9ea8463c546b54cd2bf1e52c4b15b324 - note: Cleanup some minor issues - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 3487081009646150d4cd44ee6774aa6b3e4a5cc7 - note: |- - Merge pull request #3 from rberrelleza/add-dns-apis - - Add DNS records endpoints - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 554cc2b36c626b59a5ef174380ae6c61b935f951 - note: |- - Merge pull request #4 from alejandrojnm/add-firewall-apis - - Add firewall endpoints - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 9e8048fc98ff620887057dfcf8e3e2752882516d - note: |- - Merge pull request #5 from alejandrojnm/add-volumes-apis - - Add volumes option to the civogo - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: bbb04c3d1af1ab96bb0e7ea4cd157480c25eff82 - note: |- - Merge pull request #6 from alejandrojnm/add-network-options - - Add network endpoints - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 57fae6917c372e1dbf8fa927c3d0cc5c770a5fc8 - note: Change order of automated tests - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: e6d1cdcbe3f473c3de7aac2e6a23ed81bb168932 - note: Ensure gofmt code compliance - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 5d9bf4a7ee1d758e426278525121a8f738b19c00 - note: Remove panic - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 50fd2f10b190a719e60bc5e48b19de9fc902b709 - note: Remove string interpolation, more go idiomatic this way - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 8e8caf0ad47fff2e62fadcf552eb5e4d66592e77 - note: Move JSON parsing for SimpleResponse to a helper method - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: a6d635388fa4a8a708b00b362c9a5d946779624b - note: Add CONTRIBUTING guide - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 1eabf12ecbbe2318011749069a761602c4988184 - note: Add status bage to README - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 2e043e1546b936f207b93eb6488da31a399a9f18 - note: Add Go module support - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: e9c407451c8caa0b91d55b2315323bae137a4124 - note: Add GitHub action to test golang - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 08e7668c39025c13262b3685ede9568667c84d96 - note: Fix tests - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 264d4c873ddc48f8b00f8aaaba44d97264f01d08 - note: Add Instance functions - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: cd217b8bbf02d8dd370fce08f64da5000f34e659 - note: Add Instance methods,first version - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 31634d0fc3a2ecf92a5f992bc82faf1d67d5b146 - note: Add tests for instance - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: dc16cca826555de0b1226064eef67e8d22e69f45 - note: Add Instance listing/fetching/creating - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 5e258256e4e9bbb76665dfbc5435d08ff5567439 - note: '- Add more options to the network options' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 6fbeb8a827c5f9b28a243165b5a31ed120baa196 - note: |- - - Add New network options - - Add Delete network options - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: e4a70af4d6c36c82dee1ddc015b02f7450b17465 - note: Add option to create a new network - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 3db7ca46a0208c62525443bd3bc680f2855b9b2e - note: Fix error in volumes.go in the VolumesConfig - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 52dca3536f567ec0ada3a13d8923bdc6598c88b1 - note: Add volumes option to the civogo - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 5aecfa1c5b38fb45443565cee4aa3a7f8718c228 - note: '- Fix a error in firewall.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 070605dee9a7ab13ae9dc6443aa628b93735cfc5 - note: '- Fix some error in firewall.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 572557b65acf6a0444d407bb8d85fee9b1dccaa0 - note: Add firewall option to the civogo - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: ebde1c1205efd5a21ff7931cb4c1f6aaa97aa650 - note: fix test - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 9c0f096760956e26781d06630fd055e90b80b928 - note: handle http errors - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 37733dc1cb98f5f4ab8eeb702e754ddca02be5ef - note: add tests - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 5f324bc9940b1b2f676a58faeebeec34ba182486 - note: Add functions to manipulate records - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 796741761997915ffece15e93d55c68a478930c3 - note: '- Fix a error network, now you can rename a network' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: cbeb0cd40a5b9be863e715f1b681298a92fa1049 - note: |- - Merge pull request #1 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 1ea969afe47fb4a2a0c1c4d8c45f6cfb8961b134 - note: change config for `form` - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: fb92d21fa6fad853937e6c44104b0e9df3b91115 - note: Add a default owner for the repo - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 3055381e458838dd5278daa93144d1ce9e82b3b7 - note: use Create instead of New - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 5c6fe06b4d2bac5093e0485ebb898216d27cc785 - note: New and delete Domain - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 9c28c61c82ce04c59a1d4c1b20a92ded718aa649 - note: add a result const - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 9df135c1f437b38ca5b6bbd8aa93f8a45f412d69 - note: fix GetDomain test - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 5bf0824610f72dd832d2ad0cbf684ae764dd2552 - note: get and list records - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: acb6cd6ac36758505dea3a868fcceb101b9ba425 - note: update and new domain - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 4048f9c18c147e8a4258a18170f01a085ebfa30e - note: '- Update name in loadbalancer_test.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: fea3cf5be57ec93b3e9052f6fd3e40f41bdea316 - note: '- Update the loadbalancer_test.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 84b247e534fa56e8b53b5a474f151df63371e768 - note: '- Fix some error in types in loadbalancer.go and loadbalancer_test.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: e2e8858b03fb2bb26df7853fa31e97fe762f889b - note: '- Now can add, delete update and list the load balance' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 4002274e27a2980ce88257ee8ffb51b5b25f5e9b - note: '- Initial files' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 2fdaa159c41e721e365dffe87ab33a84aa78b99f - note: '- Fix all recommendation from Andy, change NumTargetNodes from string to int, and in UpdateKubernetesClusters change map[string]string in favor of map[string]interface{}' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: fa67209028b2616a7128101cea1039dfac200467 - note: '- Fix all recommendation from Andy' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 7e0221f080d6ba59ffdcd1c08f3a96946e8cf453 - note: '- Final change in the kubernetes interface' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 9bb817f9d012fd569ce9577797408187aede4e82 - note: '- Some change in kubernetes' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 05711724bd7c1df917ba699a5b993eafee39f9a6 - note: '- First commit for kubernetes' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 58429347d9be7dd2c8f3db25e0596d60c2de3516 - note: '- Update README.md with a list of all modules' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 5a3cfcd6c379cc41d86f71a21ba0320db470a3e7 - note: |- - Merge pull request #3 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 311f778ec931617fe92fb795d62499a0c0eb599e - note: |- - Merge pull request #2 from civo/master - - Update - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 74877fa8e299032deeb3f0fdc189aaa333929b9a - note: '- Update README.md, Fix error in loadbalancer.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: d2ede4b06ad1b578c28736bcbf1d3051f5b97ad0 - note: '- Done the snapshot module' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: eaf506c73ee7d8681e716deef622f7cb3bcbcf8a - note: '- First part of the snapshot api' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 2408aaa379cf8c5acba5c31e64847cb10530d0a0 - note: Merge branch 'master' into feature/api_snapshots - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 6d43cd657bf1fb75fe9e7ee5faf0357909847867 - note: |- - Merge pull request #4 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 6e2137e8aa7c99e188592c97026908cdc7a84117 - note: |- - Merge pull request #5 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 467bd9a5d170511356b49c7a7a2d2780b25f02cd - note: '- Add webhook module' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 55ee07109c846cb600f98864aff6df16d9acb658 - note: |- - Merge pull request #6 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 2edd54691ce38cc5c3cb8bf4316cfa8030774aea - note: '- Fix some bug in dns.go dns_test.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 8ff8a494d235357be3a222c758a99c4879bf104f - note: '- Add option to update dns record' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 08c1c1989d6f1e213690cc66fbc0a6ede16bc603 - note: |- - Merge pull request #7 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 29eab04018cd7e38cabd9b76a9eca7841a4d9377 - note: |- - fix(loadbalancer): Fix data in test - - Fix data in the test of the loadbalancer - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 450e018849e739b2d5b38aa6449e61aa430f2ee6 - note: |- - fix(loadbalancer): Fix struct in loadbalancer - - Error in the struct of the loadbalancer configuration - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: f8658cf3a98c4a74c7e839b7bf914a502d6d066a - note: |- - fix(firewall): Fix error in firewall test - - Error in firewall_test.go - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 6b4ca011ae13951259053634016f04d7747cb9c9 - note: |- - fix(firewall): Fix struct in firewall - - Error in the struct of the firewall configuration and new creation - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 7f13e1c8323128da35faffd55c26cac0244a06f9 - note: '- Fix some bug in firewall.go and firewall_test.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 272359878aad1fefc046c00343bd731a4749ff13 - note: |- - Merge pull request #9 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: d118d875d3887b4ff64c415f29f7243db012bf89 - note: |- - Merge pull request #8 from civo/master - - Fix some linting issues with Kubernetes - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: aff666767bdbca9947863df2b4b4f093e3e6a2f5 - note: |- - fix(firewall): Change the id passed to the function - - Change the id name from idfirewall to firewallID - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: c480c52808b433d8919748b807c8e05e6810699b - note: |- - fix(firewall): Fix name in the firewall - - Fixed test - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 874f9ef69a736e3854aa28b9a806ee1aca24317e - note: |- - fix(firewall): Fix name in the firewall - - Fixed function name FindFirewallRules to FindFirewallRule - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 58a860321ed5dbc77fb93ad0034f8d29b005b139 - note: |- - feat(firewall): Add new option to search rule - - Added option to search rule inside a firewall rules list - - BREAKING CHANGE: No - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 53dc6a1e21508df425c12d3ab56674cbbef0be8c - note: |- - Merge pull request #11 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 99662c54e9b092e02309236c97ab882221f309a5 - note: |- - Merge pull request #10 from alejandrojnm/hotfix/urgent_fix - - - Fix some bug in firewall.go and firewall_test.go - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com -- semver: 0.1.8 - date: 2020-03-19T14:52:36-04:00 - packager: Andy Jeffries - changes: - - commit: 0961777679546b5521fbc9a7bf0c0b292dd53c9b - note: |- - Updated the lib to use json and not form for all request - - * We change the client to send all request in JSON format, to avoid build a custom form procesator - * Fix failing test - had trailing whitespace - * Change all test to use the new way in client.go - * Add Reason to the HTTPError struct, now we return the reason of the error from the server - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: a8ebeb95a5cd84ea46b5dedb487b276901580196 - note: Add body to client error responses - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk -- semver: 0.1.7 - date: 2020-03-16T16:14:11Z - packager: Andy Jeffries - changes: - - commit: 5ccea39dd4e8bf03139b64e07f7af025b84c5cd8 - note: |- - Merge pull request #25 from alejandrojnm/hostfix/add_function_firewall - - Hostfix/add function firewall - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com -- semver: 0.1.6 - date: 2020-03-16T09:28:32Z - packager: Andy Jeffries - changes: - - commit: 7b07ee24a3525d8de8e3ee1dda8b755f5cdea526 - note: |- - Merge pull request #24 from alejandrojnm/hotfix/urgent_fix - - Fix some issues with firewalls and load balancer structs - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com -- semver: 0.1.5 - date: 2020-03-12T14:55:17Z - packager: Andy Jeffries - changes: - - commit: 4f53b0218a35dbc39e02e756e1fe8ecb246ede28 - note: Change GetDNSRecord to find by ID not name - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk -- semver: 0.1.4 - date: 2020-03-12T13:54:40Z - packager: Andy Jeffries - changes: - - commit: edfa55837775b27b8683ee9af5333740387fe22c - note: |- - Remove DNSDomainID from DNSRecordConfig - - Feels like that shouldn't be part of an update, so it's easier to specify: - - CreateDNSRecord(domainID string, r *DNSRecordConfig) - - for creating and just: - - UpdateDNSRecord(r *DNSRecord, rc *DNSRecordConfig) - - for updating. Also feels like the order should be "update X with Y" so DNSRecord - is first and DNSRecordConfig is second. - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: d8c0e9675381e118bb8f510c10ddd4120417b56d - note: |- - Merge pull request #23 from alejandrojnm/feature/update_dns_record - - Feature/update dns record - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com -- semver: 0.1.3 - date: 2020-03-10T16:13:36Z - packager: Andy Jeffries - changes: - - commit: 5ae22ab13db666397668c3fa83ea38e69d79a1e3 - note: Fix instance test - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk -- semver: 0.1.2 - date: 2020-03-10T16:11:39Z - packager: Andy Jeffries - changes: - - commit: c470a7d51e1e71c1de6f5f9f9c0a2cac6f8e4c75 - note: Fix signature of SetInstanceTags - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk -- semver: 0.1.1 - date: 2020-03-10T14:19:51Z - packager: Andy Jeffries - changes: - - commit: 1032a3be04fa705d30221fcf4fb739c80600f290 - note: Add GetInstanceConsoleURL method - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: efbe8dbc06a3169ce046d2205395a27ba7c7331a - note: Check links in go documentation - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 83fdce86fa5e722f4dce62cafbbb9111ba68a161 - note: Change link to docs - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 7cbcb38c513e3b2fe42ef7480a0d0054c269abf1 - note: Update badges - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: f149ccdce08e326133fe16513b3e499303fe6fee - note: Fix tests after some minor refactoring - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: f0fa3a15db27988b4de21d7b14c7e9e4cdf8caaf - note: Change GB to Gigabytes - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 62a82aec36c7655126dd88cb20d05f447655ac66 - note: Fix lint issues - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 143ac3148aa72b247dd39af2225282ba3205b4da - note: |- - Change workflow to custom action - - The workflow version failed with "go env" not set, so switched to custom - version from https://stackoverflow.com/questions/59236611/github-actions-run-golint-on-wihdows - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 541c21a62f26842a3b4bc43ee66c1eea47b942bf - note: Move lint to its own action - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 4e265ae4f1fae45da83d060901125d7ce2b3982d - note: Use user-contributed lint action - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 0aa650f472ae4fec1696040b75b437d85320e58b - note: Install golint before running it - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 0bbdcd0cff82ea6bb1d9bd4fb7c5f91a6c74e599 - note: Add lint to tests and Go 1.14 - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk -- semver: 0.1.0 - date: 2020-03-03T15:18:31Z - packager: Andy Jeffries - changes: - - commit: f2cd42c5c84822a9ac1c3a232da8bfefa2b76a02 - note: Add changelog - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: d9686526113499826afd4b2b5589b983dc224daa - note: Add Find* methods to all areas - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 8dafd66a091217f93726871970a852c50ff3e52a - note: Fix some linting issues with Kubernetes - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: dd906190213e1d954ab9e7a5cf384cbbd1fdedfb - note: Add LICENSE - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: ee8dab3b93a31c5d0bccac7f6f845a1b577af2b0 - note: Return an error if creating a client with an empty API key - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 1bfa0af0534d761f6fc73d1706b4922e3ba6d941 - note: Remove progress table from README as its now module complete - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 0471e7d2ba28233ff1fd60b0b8fc636178311cb5 - note: Add minor tweaks to Webhooks - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 2d7d45db3e0597fcd84e4f23306bfb0ae22c9e26 - note: |- - Merge pull request #21 from alejandrojnm/feature/webhook - - Add webhooks endpoints - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: fc4a75b783d1bbad1d7bd4f6cdde0ab0b45554b1 - note: Change minor naming issues in snapshot module - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 4b2ae45ccdd0d014d5b704f691bf075d79ab4292 - note: |- - Merge pull request #20 from alejandrojnm/feature/api_snapshots - - Feature/api snapshots - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 81e4652eaae0f4dc2e411751944fcad1d6fa1e66 - note: Fix a couple of comments - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 457dfa5d2a5712e0261b87433bf2a69276be22b6 - note: Add charge endpoint - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: f20cab75a729c4eee1f4978975a58520a39a6f73 - note: Change awkward names of units in field names - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 971a4a4718a87d5116396669c90f8ceb377439c2 - note: Add instance size endpoints - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 7b54da2cb550104a67e82da4d22fd1de6cd06971 - note: Add quota endpoint - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 66b590cc78a4c893ffb557e454563e9ca59c910e - note: Add region endpoint - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: e3433bb00eff673964bf28640aa71bd7d899cdff - note: Change List functions to be plural and prefixing DNS - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 43d6bc08956f7845f2429a8e8faa8887edfd9d52 - note: Update display of README progress - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: eacb35cab0d0d9ab3d04e43c3dc8b4bcff8f6bb3 - note: |- - Merge pull request #19 from alejandrojnm/hotfix/loadbalance_readme - - Add status to README and a small fix for Loadbalancer - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 41c7acb325009f5fde2a9b92a267b2cfade1290b - note: |- - Merge pull request #18 from alejandrojnm/master - - Update Readme.md to add module status - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 730f2dd40debc53b4fe3389b6f9cdf3cc620e3a0 - note: |- - Merge pull request #16 from alejandrojnm/add-kubernetes-apis - - Add Kubernetes apis - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: b8d5ddb852a3fd9b3c20d902e8895a1ee620cbf5 - note: Add minor changes to Load Balancer methods - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: e69c9746d6d7bbd2211c4abc1481f46503135ef2 - note: |- - Merge pull request #14 from alejandrojnm/feature/loadbalancer - - Add Load Balancer endpoints - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 5590adda1b4b5420c9d19ed900ba378d303b3a63 - note: |- - Merge pull request #11 from rberrelleza/get-record - - Add DNS record management - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 338c4dfdb9ab84aeb06d7358a8583d8194df0ad9 - note: |- - Merge pull request #12 from rberrelleza/add-owners - - Add a default owner for the repo - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 5378d41d0f19a14aa6a71646c11d412b0e9d36c5 - note: Add client.LastJSONResponse for the CLI to use - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: b3aba767c3d70f854069a85636b70f2983884646 - note: |- - Merge pull request #7 from rberrelleza/fix-casing-forms - - Change dnsconfig to `form` - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: f66cbcbb6f2d16db7b3091577a30bfc58fb611c4 - note: |- - Merge pull request #9 from alejandrojnm/hostfix-network - - Hotfix network - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: ab4ebaa89596799021be66d4adb7a172a8c753f0 - note: Change string to map of strings - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: a69bef1d9ea8463c546b54cd2bf1e52c4b15b324 - note: Cleanup some minor issues - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 3487081009646150d4cd44ee6774aa6b3e4a5cc7 - note: |- - Merge pull request #3 from rberrelleza/add-dns-apis - - Add DNS records endpoints - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 554cc2b36c626b59a5ef174380ae6c61b935f951 - note: |- - Merge pull request #4 from alejandrojnm/add-firewall-apis - - Add firewall endpoints - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 9e8048fc98ff620887057dfcf8e3e2752882516d - note: |- - Merge pull request #5 from alejandrojnm/add-volumes-apis - - Add volumes option to the civogo - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: bbb04c3d1af1ab96bb0e7ea4cd157480c25eff82 - note: |- - Merge pull request #6 from alejandrojnm/add-network-options - - Add network endpoints - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: GitHub - email: noreply@github.com - - commit: 57fae6917c372e1dbf8fa927c3d0cc5c770a5fc8 - note: Change order of automated tests - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: e6d1cdcbe3f473c3de7aac2e6a23ed81bb168932 - note: Ensure gofmt code compliance - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 5d9bf4a7ee1d758e426278525121a8f738b19c00 - note: Remove panic - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 50fd2f10b190a719e60bc5e48b19de9fc902b709 - note: Remove string interpolation, more go idiomatic this way - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 8e8caf0ad47fff2e62fadcf552eb5e4d66592e77 - note: Move JSON parsing for SimpleResponse to a helper method - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: a6d635388fa4a8a708b00b362c9a5d946779624b - note: Add CONTRIBUTING guide - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 1eabf12ecbbe2318011749069a761602c4988184 - note: Add status bage to README - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 2e043e1546b936f207b93eb6488da31a399a9f18 - note: Add Go module support - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: e9c407451c8caa0b91d55b2315323bae137a4124 - note: Add GitHub action to test golang - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 08e7668c39025c13262b3685ede9568667c84d96 - note: Fix tests - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 264d4c873ddc48f8b00f8aaaba44d97264f01d08 - note: Add Instance functions - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: cd217b8bbf02d8dd370fce08f64da5000f34e659 - note: Add Instance methods,first version - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 31634d0fc3a2ecf92a5f992bc82faf1d67d5b146 - note: Add tests for instance - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: dc16cca826555de0b1226064eef67e8d22e69f45 - note: Add Instance listing/fetching/creating - author: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - committer: - name: Andy Jeffries - email: andy@andyjeffries.co.uk - - commit: 5e258256e4e9bbb76665dfbc5435d08ff5567439 - note: '- Add more options to the network options' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 6fbeb8a827c5f9b28a243165b5a31ed120baa196 - note: |- - - Add New network options - - Add Delete network options - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: e4a70af4d6c36c82dee1ddc015b02f7450b17465 - note: Add option to create a new network - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 3db7ca46a0208c62525443bd3bc680f2855b9b2e - note: Fix error in volumes.go in the VolumesConfig - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 52dca3536f567ec0ada3a13d8923bdc6598c88b1 - note: Add volumes option to the civogo - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 5aecfa1c5b38fb45443565cee4aa3a7f8718c228 - note: '- Fix a error in firewall.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 070605dee9a7ab13ae9dc6443aa628b93735cfc5 - note: '- Fix some error in firewall.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 572557b65acf6a0444d407bb8d85fee9b1dccaa0 - note: Add firewall option to the civogo - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: ebde1c1205efd5a21ff7931cb4c1f6aaa97aa650 - note: fix test - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 9c0f096760956e26781d06630fd055e90b80b928 - note: handle http errors - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 37733dc1cb98f5f4ab8eeb702e754ddca02be5ef - note: add tests - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 5f324bc9940b1b2f676a58faeebeec34ba182486 - note: Add functions to manipulate records - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 796741761997915ffece15e93d55c68a478930c3 - note: '- Fix a error network, now you can rename a network' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: cbeb0cd40a5b9be863e715f1b681298a92fa1049 - note: |- - Merge pull request #1 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 1ea969afe47fb4a2a0c1c4d8c45f6cfb8961b134 - note: change config for `form` - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: fb92d21fa6fad853937e6c44104b0e9df3b91115 - note: Add a default owner for the repo - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 3055381e458838dd5278daa93144d1ce9e82b3b7 - note: use Create instead of New - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 5c6fe06b4d2bac5093e0485ebb898216d27cc785 - note: New and delete Domain - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 9c28c61c82ce04c59a1d4c1b20a92ded718aa649 - note: add a result const - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 9df135c1f437b38ca5b6bbd8aa93f8a45f412d69 - note: fix GetDomain test - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 5bf0824610f72dd832d2ad0cbf684ae764dd2552 - note: get and list records - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: acb6cd6ac36758505dea3a868fcceb101b9ba425 - note: update and new domain - author: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - committer: - name: Ramiro Berrelleza - email: rberrelleza@gmail.com - - commit: 4048f9c18c147e8a4258a18170f01a085ebfa30e - note: '- Update name in loadbalancer_test.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: fea3cf5be57ec93b3e9052f6fd3e40f41bdea316 - note: '- Update the loadbalancer_test.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 84b247e534fa56e8b53b5a474f151df63371e768 - note: '- Fix some error in types in loadbalancer.go and loadbalancer_test.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: e2e8858b03fb2bb26df7853fa31e97fe762f889b - note: '- Now can add, delete update and list the load balance' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 4002274e27a2980ce88257ee8ffb51b5b25f5e9b - note: '- Initial files' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 2fdaa159c41e721e365dffe87ab33a84aa78b99f - note: '- Fix all recommendation from Andy, change NumTargetNodes from string to int, and in UpdateKubernetesClusters change map[string]string in favor of map[string]interface{}' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: fa67209028b2616a7128101cea1039dfac200467 - note: '- Fix all recommendation from Andy' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 7e0221f080d6ba59ffdcd1c08f3a96946e8cf453 - note: '- Final change in the kubernetes interface' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 9bb817f9d012fd569ce9577797408187aede4e82 - note: '- Some change in kubernetes' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 05711724bd7c1df917ba699a5b993eafee39f9a6 - note: '- First commit for kubernetes' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 58429347d9be7dd2c8f3db25e0596d60c2de3516 - note: '- Update README.md with a list of all modules' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 5a3cfcd6c379cc41d86f71a21ba0320db470a3e7 - note: |- - Merge pull request #3 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 311f778ec931617fe92fb795d62499a0c0eb599e - note: |- - Merge pull request #2 from civo/master - - Update - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 74877fa8e299032deeb3f0fdc189aaa333929b9a - note: '- Update README.md, Fix error in loadbalancer.go' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: d2ede4b06ad1b578c28736bcbf1d3051f5b97ad0 - note: '- Done the snapshot module' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: eaf506c73ee7d8681e716deef622f7cb3bcbcf8a - note: '- First part of the snapshot api' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 2408aaa379cf8c5acba5c31e64847cb10530d0a0 - note: Merge branch 'master' into feature/api_snapshots - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 6d43cd657bf1fb75fe9e7ee5faf0357909847867 - note: |- - Merge pull request #4 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 6e2137e8aa7c99e188592c97026908cdc7a84117 - note: |- - Merge pull request #5 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com - - commit: 467bd9a5d170511356b49c7a7a2d2780b25f02cd - note: '- Add webhook module' - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: Alejandro JNM - email: alejandrojnm@gmail.com - - commit: 55ee07109c846cb600f98864aff6df16d9acb658 - note: |- - Merge pull request #6 from civo/master - - Update master - author: - name: Alejandro JNM - email: alejandrojnm@gmail.com - committer: - name: GitHub - email: noreply@github.com diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/charge.go b/cluster-autoscaler/vendor/github.com/civo/civogo/charge.go deleted file mode 100644 index 6f09f6bd8c45..000000000000 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/charge.go +++ /dev/null @@ -1,36 +0,0 @@ -package civogo - -import ( - "bytes" - "encoding/json" - "fmt" - "time" -) - -// Charge represents a Civo resource with number of hours within the specified billing period -type Charge struct { - Code string `json:"code"` - Label string `json:"label"` - From time.Time `json:"from"` - To time.Time `json:"to"` - NumHours int `json:"num_hours"` - SizeGigabytes int `json:"size_gb"` -} - -// ListCharges returns all charges for the calling API account -func (c *Client) ListCharges(from, to time.Time) ([]Charge, error) { - url := "/v2/charges" - url = url + fmt.Sprintf("?from=%s&to=%s", from.Format(time.RFC3339), to.Format(time.RFC3339)) - - resp, err := c.SendGetRequest(url) - if err != nil { - return nil, decodeError(err) - } - - charges := make([]Charge, 0) - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&charges); err != nil { - return nil, err - } - - return charges, nil -} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/dns.go b/cluster-autoscaler/vendor/github.com/civo/civogo/dns.go deleted file mode 100644 index 0ab501204bf9..000000000000 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/dns.go +++ /dev/null @@ -1,281 +0,0 @@ -package civogo - -import ( - "bytes" - "encoding/json" - "fmt" - "strings" - "time" -) - -// DNSDomain represents a domain registered within Civo's infrastructure -type DNSDomain struct { - // The ID of the domain - ID string `json:"id"` - - // The ID of the account - AccountID string `json:"account_id"` - - // The Name of the domain - Name string `json:"name"` -} - -type dnsDomainConfig struct { - Name string `json:"name"` -} - -// DNSRecordType represents the allowed record types: a, cname, mx or txt -type DNSRecordType string - -// DNSRecord represents a DNS record registered within Civo's infrastructure -type DNSRecord struct { - ID string `json:"id"` - AccountID string `json:"account_id,omitempty"` - DNSDomainID string `json:"domain_id,omitempty"` - Name string `json:"name,omitempty"` - Value string `json:"value,omitempty"` - Type DNSRecordType `json:"type,omitempty"` - Priority int `json:"priority,omitempty"` - TTL int `json:"ttl,omitempty"` - CreatedAt time.Time `json:"created_at,omitempty"` - UpdatedAt time.Time `json:"updated_at,omitempty"` -} - -// DNSRecordConfig describes the parameters for a new DNS record -// none of the fields are mandatory and will be automatically -// set with default values -type DNSRecordConfig struct { - Type DNSRecordType `json:"type"` - Name string `json:"name"` - Value string `json:"value"` - Priority int `json:"priority"` - TTL int `json:"ttl"` -} - -const ( - // DNSRecordTypeA represents an A record - DNSRecordTypeA = "A" - - // DNSRecordTypeCName represents an CNAME record - DNSRecordTypeCName = "CNAME" - - // DNSRecordTypeMX represents an MX record - DNSRecordTypeMX = "MX" - - // DNSRecordTypeSRV represents an SRV record - DNSRecordTypeSRV = "SRV" - - // DNSRecordTypeTXT represents an TXT record - DNSRecordTypeTXT = "TXT" -) - -var ( - // ErrDNSDomainNotFound is returned when the domain is not found - ErrDNSDomainNotFound = fmt.Errorf("domain not found") - - // ErrDNSRecordNotFound is returned when the record is not found - ErrDNSRecordNotFound = fmt.Errorf("record not found") -) - -// ListDNSDomains returns all Domains owned by the calling API account -func (c *Client) ListDNSDomains() ([]DNSDomain, error) { - url := "/v2/dns" - - resp, err := c.SendGetRequest(url) - if err != nil { - return nil, decodeError(err) - } - - var domains = make([]DNSDomain, 0) - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&domains); err != nil { - return nil, err - - } - - return domains, nil -} - -// FindDNSDomain finds a domain name by either part of the ID or part of the name -func (c *Client) FindDNSDomain(search string) (*DNSDomain, error) { - domains, err := c.ListDNSDomains() - if err != nil { - return nil, decodeError(err) - } - - exactMatch := false - partialMatchesCount := 0 - result := DNSDomain{} - - for _, value := range domains { - if value.Name == search || value.ID == search { - exactMatch = true - result = value - } else if strings.Contains(value.Name, search) || strings.Contains(value.ID, search) { - if !exactMatch { - result = value - partialMatchesCount++ - } - } - } - - if exactMatch || partialMatchesCount == 1 { - return &result, nil - } else if partialMatchesCount > 1 { - err := fmt.Errorf("unable to find %s because there were multiple matches", search) - return nil, MultipleMatchesError.wrap(err) - } else { - err := fmt.Errorf("unable to find %s, zero matches", search) - return nil, ZeroMatchesError.wrap(err) - } -} - -// CreateDNSDomain registers a new Domain -func (c *Client) CreateDNSDomain(name string) (*DNSDomain, error) { - url := "/v2/dns" - d := &dnsDomainConfig{Name: name} - body, err := c.SendPostRequest(url, d) - if err != nil { - return nil, decodeError(err) - } - - var n = &DNSDomain{} - if err := json.NewDecoder(bytes.NewReader(body)).Decode(n); err != nil { - return nil, err - } - - return n, nil -} - -// GetDNSDomain returns the DNS Domain that matches the name -func (c *Client) GetDNSDomain(name string) (*DNSDomain, error) { - ds, err := c.ListDNSDomains() - if err != nil { - return nil, decodeError(err) - } - - for _, d := range ds { - if d.Name == name { - return &d, nil - } - } - - return nil, ErrDNSDomainNotFound -} - -// UpdateDNSDomain updates the provided domain with name -func (c *Client) UpdateDNSDomain(d *DNSDomain, name string) (*DNSDomain, error) { - url := fmt.Sprintf("/v2/dns/%s", d.ID) - dc := &dnsDomainConfig{Name: name} - body, err := c.SendPutRequest(url, dc) - if err != nil { - return nil, decodeError(err) - } - - var r = &DNSDomain{} - if err := json.NewDecoder(bytes.NewReader(body)).Decode(r); err != nil { - return nil, err - } - - return r, nil -} - -// DeleteDNSDomain deletes the Domain that matches the name -func (c *Client) DeleteDNSDomain(d *DNSDomain) (*SimpleResponse, error) { - url := fmt.Sprintf("/v2/dns/%s", d.ID) - resp, err := c.SendDeleteRequest(url) - if err != nil { - return nil, decodeError(err) - } - - return c.DecodeSimpleResponse(resp) -} - -// CreateDNSRecord creates a new DNS record -func (c *Client) CreateDNSRecord(domainID string, r *DNSRecordConfig) (*DNSRecord, error) { - if len(domainID) == 0 { - return nil, fmt.Errorf("r.DomainID is empty") - } - - url := fmt.Sprintf("/v2/dns/%s/records", domainID) - body, err := c.SendPostRequest(url, r) - if err != nil { - return nil, decodeError(err) - } - - var record = &DNSRecord{} - if err := json.NewDecoder(bytes.NewReader(body)).Decode(record); err != nil { - return nil, err - } - - return record, nil -} - -// ListDNSRecords returns all the records associated with domainID -func (c *Client) ListDNSRecords(dnsDomainID string) ([]DNSRecord, error) { - url := fmt.Sprintf("/v2/dns/%s/records", dnsDomainID) - resp, err := c.SendGetRequest(url) - if err != nil { - return nil, decodeError(err) - } - - var rs = make([]DNSRecord, 0) - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&rs); err != nil { - return nil, err - - } - - return rs, nil -} - -// GetDNSRecord returns the Record that matches the domain ID and domain record ID -func (c *Client) GetDNSRecord(domainID, domainRecordID string) (*DNSRecord, error) { - rs, err := c.ListDNSRecords(domainID) - if err != nil { - return nil, decodeError(err) - } - - for _, r := range rs { - if r.ID == domainRecordID { - return &r, nil - } - } - - return nil, ErrDNSRecordNotFound -} - -// UpdateDNSRecord updates the DNS record -func (c *Client) UpdateDNSRecord(r *DNSRecord, rc *DNSRecordConfig) (*DNSRecord, error) { - url := fmt.Sprintf("/v2/dns/%s/records/%s", r.DNSDomainID, r.ID) - body, err := c.SendPutRequest(url, rc) - if err != nil { - return nil, decodeError(err) - } - - var dnsRecord = &DNSRecord{} - if err := json.NewDecoder(bytes.NewReader(body)).Decode(dnsRecord); err != nil { - return nil, err - } - - return dnsRecord, nil -} - -// DeleteDNSRecord deletes the DNS record -func (c *Client) DeleteDNSRecord(r *DNSRecord) (*SimpleResponse, error) { - if len(r.ID) == 0 { - err := fmt.Errorf("ID is empty") - return nil, IDisEmptyError.wrap(err) - } - - if len(r.DNSDomainID) == 0 { - err := fmt.Errorf("DNSDomainID is empty") - return nil, IDisEmptyError.wrap(err) - } - - url := fmt.Sprintf("/v2/dns/%s/records/%s", r.DNSDomainID, r.ID) - resp, err := c.SendDeleteRequest(url) - if err != nil { - return nil, decodeError(err) - } - - return c.DecodeSimpleResponse(resp) -} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/fake_client.go b/cluster-autoscaler/vendor/github.com/civo/civogo/fake_client.go deleted file mode 100644 index cba23a0d9617..000000000000 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/fake_client.go +++ /dev/null @@ -1,1750 +0,0 @@ -package civogo - -import ( - "fmt" - "math/rand" - "strconv" - "strings" - "time" -) - -// FakeClient is a temporary storage structure for use when you don't want to communicate with a real Civo API server -type FakeClient struct { - LastID int64 - Charges []Charge - Domains []DNSDomain - DomainRecords []DNSRecord - Firewalls []Firewall - FirewallRules []FirewallRule - InstanceSizes []InstanceSize - Instances []Instance - Clusters []KubernetesCluster - Networks []Network - Volumes []Volume - SSHKeys []SSHKey - Webhooks []Webhook - DiskImage []DiskImage - Quota Quota - Organisation Organisation - OrganisationAccounts []Account - OrganisationRoles []Role - OrganisationTeams []Team - OrganisationTeamMembers map[string][]TeamMember - LoadBalancers []LoadBalancer - Pools []KubernetesPool - // Snapshots []Snapshot - // Templates []Template -} - -// Clienter is the interface the real civogo.Client and civogo.FakeClient implement -type Clienter interface { - // Charges - ListCharges(from, to time.Time) ([]Charge, error) - - // DNS - ListDNSDomains() ([]DNSDomain, error) - FindDNSDomain(search string) (*DNSDomain, error) - CreateDNSDomain(name string) (*DNSDomain, error) - GetDNSDomain(name string) (*DNSDomain, error) - UpdateDNSDomain(d *DNSDomain, name string) (*DNSDomain, error) - DeleteDNSDomain(d *DNSDomain) (*SimpleResponse, error) - CreateDNSRecord(domainID string, r *DNSRecordConfig) (*DNSRecord, error) - ListDNSRecords(dnsDomainID string) ([]DNSRecord, error) - GetDNSRecord(domainID, domainRecordID string) (*DNSRecord, error) - UpdateDNSRecord(r *DNSRecord, rc *DNSRecordConfig) (*DNSRecord, error) - DeleteDNSRecord(r *DNSRecord) (*SimpleResponse, error) - - // Firewalls - ListFirewalls() ([]Firewall, error) - FindFirewall(search string) (*Firewall, error) - NewFirewall(name, networkID string, CreateRules *bool) (*FirewallResult, error) - RenameFirewall(id string, f *FirewallConfig) (*SimpleResponse, error) - DeleteFirewall(id string) (*SimpleResponse, error) - NewFirewallRule(r *FirewallRuleConfig) (*FirewallRule, error) - ListFirewallRules(id string) ([]FirewallRule, error) - FindFirewallRule(firewallID string, search string) (*FirewallRule, error) - DeleteFirewallRule(id string, ruleID string) (*SimpleResponse, error) - - // Instances - ListInstances(page int, perPage int) (*PaginatedInstanceList, error) - ListAllInstances() ([]Instance, error) - FindInstance(search string) (*Instance, error) - GetInstance(id string) (*Instance, error) - NewInstanceConfig() (*InstanceConfig, error) - CreateInstance(config *InstanceConfig) (*Instance, error) - SetInstanceTags(i *Instance, tags string) (*SimpleResponse, error) - UpdateInstance(i *Instance) (*SimpleResponse, error) - DeleteInstance(id string) (*SimpleResponse, error) - RebootInstance(id string) (*SimpleResponse, error) - HardRebootInstance(id string) (*SimpleResponse, error) - SoftRebootInstance(id string) (*SimpleResponse, error) - StopInstance(id string) (*SimpleResponse, error) - StartInstance(id string) (*SimpleResponse, error) - GetInstanceConsoleURL(id string) (string, error) - UpgradeInstance(id, newSize string) (*SimpleResponse, error) - MovePublicIPToInstance(id, ipAddress string) (*SimpleResponse, error) - SetInstanceFirewall(id, firewallID string) (*SimpleResponse, error) - - // Instance sizes - ListInstanceSizes() ([]InstanceSize, error) - FindInstanceSizes(search string) (*InstanceSize, error) - - // Clusters - ListKubernetesClusters() (*PaginatedKubernetesClusters, error) - FindKubernetesCluster(search string) (*KubernetesCluster, error) - NewKubernetesClusters(kc *KubernetesClusterConfig) (*KubernetesCluster, error) - GetKubernetesCluster(id string) (*KubernetesCluster, error) - UpdateKubernetesCluster(id string, i *KubernetesClusterConfig) (*KubernetesCluster, error) - ListKubernetesMarketplaceApplications() ([]KubernetesMarketplaceApplication, error) - DeleteKubernetesCluster(id string) (*SimpleResponse, error) - RecycleKubernetesCluster(id string, hostname string) (*SimpleResponse, error) - ListAvailableKubernetesVersions() ([]KubernetesVersion, error) - ListKubernetesClusterInstances(id string) ([]Instance, error) - FindKubernetesClusterInstance(clusterID, search string) (*Instance, error) - - //Pools - ListKubernetesClusterPools(cid string) ([]KubernetesPool, error) - GetKubernetesClusterPool(cid, pid string) (*KubernetesPool, error) - FindKubernetesClusterPool(cid, search string) (*KubernetesPool, error) - DeleteKubernetesClusterPoolInstance(cid, pid, id string) (*SimpleResponse, error) - UpdateKubernetesClusterPool(cid, pid string, config *KubernetesClusterPoolUpdateConfig) (*KubernetesPool, error) - - // Networks - GetDefaultNetwork() (*Network, error) - NewNetwork(label string) (*NetworkResult, error) - ListNetworks() ([]Network, error) - FindNetwork(search string) (*Network, error) - RenameNetwork(label, id string) (*NetworkResult, error) - DeleteNetwork(id string) (*SimpleResponse, error) - - // Quota - GetQuota() (*Quota, error) - - // Regions - ListRegions() ([]Region, error) - - // Snapshots - // CreateSnapshot(name string, r *SnapshotConfig) (*Snapshot, error) - // ListSnapshots() ([]Snapshot, error) - // FindSnapshot(search string) (*Snapshot, error) - // DeleteSnapshot(name string) (*SimpleResponse, error) - - // SSHKeys - ListSSHKeys() ([]SSHKey, error) - NewSSHKey(name string, publicKey string) (*SimpleResponse, error) - UpdateSSHKey(name string, sshKeyID string) (*SSHKey, error) - FindSSHKey(search string) (*SSHKey, error) - DeleteSSHKey(id string) (*SimpleResponse, error) - - // Templates - // ListTemplates() ([]Template, error) - // NewTemplate(conf *Template) (*SimpleResponse, error) - // UpdateTemplate(id string, conf *Template) (*Template, error) - // GetTemplateByCode(code string) (*Template, error) - // FindTemplate(search string) (*Template, error) - // DeleteTemplate(id string) (*SimpleResponse, error) - - // DiskImages - ListDiskImages() ([]DiskImage, error) - GetDiskImage(id string) (*DiskImage, error) - FindDiskImage(search string) (*DiskImage, error) - - // Volumes - ListVolumes() ([]Volume, error) - GetVolume(id string) (*Volume, error) - FindVolume(search string) (*Volume, error) - NewVolume(v *VolumeConfig) (*VolumeResult, error) - ResizeVolume(id string, size int) (*SimpleResponse, error) - AttachVolume(id string, instance string) (*SimpleResponse, error) - DetachVolume(id string) (*SimpleResponse, error) - DeleteVolume(id string) (*SimpleResponse, error) - - // Webhooks - CreateWebhook(r *WebhookConfig) (*Webhook, error) - ListWebhooks() ([]Webhook, error) - FindWebhook(search string) (*Webhook, error) - UpdateWebhook(id string, r *WebhookConfig) (*Webhook, error) - DeleteWebhook(id string) (*SimpleResponse, error) - - // LoadBalancer - ListLoadBalancers() ([]LoadBalancer, error) - GetLoadBalancer(id string) (*LoadBalancer, error) - FindLoadBalancer(search string) (*LoadBalancer, error) - CreateLoadBalancer(r *LoadBalancerConfig) (*LoadBalancer, error) - UpdateLoadBalancer(id string, r *LoadBalancerUpdateConfig) (*LoadBalancer, error) - DeleteLoadBalancer(id string) (*SimpleResponse, error) -} - -// NewFakeClient initializes a Client that doesn't attach to a -func NewFakeClient() (*FakeClient, error) { - return &FakeClient{ - Quota: Quota{ - CPUCoreLimit: 10, - InstanceCountLimit: 10, - RAMMegabytesLimit: 100, - DiskGigabytesLimit: 100, - DiskVolumeCountLimit: 10, - DiskSnapshotCountLimit: 10, - PublicIPAddressLimit: 10, - NetworkCountLimit: 10, - SecurityGroupLimit: 10, - SecurityGroupRuleLimit: 10, - }, - InstanceSizes: []InstanceSize{ - { - ID: "g3.xsmall", - Name: "Extra small", - CPUCores: 1, - RAMMegabytes: 1024, - DiskGigabytes: 10, - }, - { - ID: "g3.small", - Name: "Small", - CPUCores: 2, - RAMMegabytes: 2048, - DiskGigabytes: 20, - }, - { - ID: "g3.medium", - Name: "Medium", - CPUCores: 4, - RAMMegabytes: 4096, - DiskGigabytes: 40, - }, - }, - DiskImage: []DiskImage{ - { - ID: "b82168fe-66f6-4b38-a3b8-5283542d5475", - Name: "centos-7", - Version: "7", - State: "available", - Distribution: "centos", - Description: "", - Label: "", - }, - { - ID: "b82168fe-66f6-4b38-a3b8-52835425895", - Name: "debian-9", - Version: "9", - State: "available", - Distribution: "debian", - Description: "", - Label: "", - }, - { - ID: "b82168fe-66f6-4b38-a3b8-52835428965", - Name: "debian-10", - Version: "10", - State: "available", - Distribution: "debian", - Description: "", - Label: "", - }, - { - ID: "b82168fe-66f6-4b38-a3b8-528354282548", - Name: "ubuntu-20-4", - Version: "20.4", - State: "available", - Distribution: "ubuntu", - Description: "", - Label: "", - }, - }, - }, nil -} - -func (c *FakeClient) generateID() string { - c.LastID++ - return strconv.FormatInt(c.LastID, 10) -} - -func (c *FakeClient) generatePublicIP() string { - s := rand.NewSource(time.Now().UnixNano()) - r := rand.New(s) - return fmt.Sprintf("%v.%v.%v.%v", r.Intn(256), r.Intn(256), r.Intn(256), r.Intn(256)) -} - -// ListCharges implemented in a fake way for automated tests -func (c *FakeClient) ListCharges(from, to time.Time) ([]Charge, error) { - return []Charge{}, nil -} - -// ListDNSDomains implemented in a fake way for automated tests -func (c *FakeClient) ListDNSDomains() ([]DNSDomain, error) { - return c.Domains, nil -} - -// FindDNSDomain implemented in a fake way for automated tests -func (c *FakeClient) FindDNSDomain(search string) (*DNSDomain, error) { - for _, domain := range c.Domains { - if strings.Contains(domain.Name, search) { - return &domain, nil - } - } - - err := fmt.Errorf("unable to find %s, zero matches", search) - return nil, ZeroMatchesError.wrap(err) -} - -// CreateDNSDomain implemented in a fake way for automated tests -func (c *FakeClient) CreateDNSDomain(name string) (*DNSDomain, error) { - domain := DNSDomain{ - ID: c.generateID(), - Name: name, - } - c.Domains = append(c.Domains, domain) - return &domain, nil -} - -// GetDNSDomain implemented in a fake way for automated tests -func (c *FakeClient) GetDNSDomain(name string) (*DNSDomain, error) { - for _, domain := range c.Domains { - if domain.Name == name { - return &domain, nil - } - } - - return nil, ErrDNSDomainNotFound -} - -// UpdateDNSDomain implemented in a fake way for automated tests -func (c *FakeClient) UpdateDNSDomain(d *DNSDomain, name string) (*DNSDomain, error) { - for i, domain := range c.Domains { - if domain.Name == d.Name { - c.Domains[i] = *d - return d, nil - } - } - - return nil, ErrDNSDomainNotFound -} - -// DeleteDNSDomain implemented in a fake way for automated tests -func (c *FakeClient) DeleteDNSDomain(d *DNSDomain) (*SimpleResponse, error) { - for i, domain := range c.Domains { - if domain.Name == d.Name { - c.Domains[len(c.Domains)-1], c.Domains[i] = c.Domains[i], c.Domains[len(c.Domains)-1] - c.Domains = c.Domains[:len(c.Domains)-1] - return &SimpleResponse{Result: "success"}, nil - } - } - - return nil, ErrDNSDomainNotFound -} - -// CreateDNSRecord implemented in a fake way for automated tests -func (c *FakeClient) CreateDNSRecord(domainID string, r *DNSRecordConfig) (*DNSRecord, error) { - record := DNSRecord{ - ID: c.generateID(), - DNSDomainID: domainID, - Name: r.Name, - Value: r.Value, - Type: r.Type, - } - - c.DomainRecords = append(c.DomainRecords, record) - return &record, nil -} - -// ListDNSRecords implemented in a fake way for automated tests -func (c *FakeClient) ListDNSRecords(dnsDomainID string) ([]DNSRecord, error) { - return c.DomainRecords, nil -} - -// GetDNSRecord implemented in a fake way for automated tests -func (c *FakeClient) GetDNSRecord(domainID, domainRecordID string) (*DNSRecord, error) { - for _, record := range c.DomainRecords { - if record.ID == domainRecordID && record.DNSDomainID == domainID { - return &record, nil - } - } - - return nil, ErrDNSRecordNotFound -} - -// UpdateDNSRecord implemented in a fake way for automated tests -func (c *FakeClient) UpdateDNSRecord(r *DNSRecord, rc *DNSRecordConfig) (*DNSRecord, error) { - for i, record := range c.DomainRecords { - if record.ID == r.ID { - record := DNSRecord{ - ID: c.generateID(), - DNSDomainID: record.DNSDomainID, - Name: rc.Name, - Value: rc.Value, - Type: rc.Type, - } - - c.DomainRecords[i] = record - return &record, nil - } - } - - return nil, ErrDNSRecordNotFound -} - -// DeleteDNSRecord implemented in a fake way for automated tests -func (c *FakeClient) DeleteDNSRecord(r *DNSRecord) (*SimpleResponse, error) { - for i, record := range c.DomainRecords { - if record.ID == r.ID { - c.DomainRecords[len(c.DomainRecords)-1], c.DomainRecords[i] = c.DomainRecords[i], c.DomainRecords[len(c.DomainRecords)-1] - c.DomainRecords = c.DomainRecords[:len(c.DomainRecords)-1] - return &SimpleResponse{Result: "success"}, nil - } - } - - return nil, ErrDNSRecordNotFound -} - -// ListFirewalls implemented in a fake way for automated tests -func (c *FakeClient) ListFirewalls() ([]Firewall, error) { - return c.Firewalls, nil -} - -// FindFirewall implemented in a fake way for automated tests -func (c *FakeClient) FindFirewall(search string) (*Firewall, error) { - for _, firewall := range c.Firewalls { - if strings.Contains(firewall.Name, search) { - return &firewall, nil - } - } - - err := fmt.Errorf("unable to find %s, zero matches", search) - return nil, ZeroMatchesError.wrap(err) -} - -// NewFirewall implemented in a fake way for automated tests -func (c *FakeClient) NewFirewall(name, networkID string, CreateRules *bool) (*FirewallResult, error) { - firewall := Firewall{ - ID: c.generateID(), - Name: name, - } - c.Firewalls = append(c.Firewalls, firewall) - - return &FirewallResult{ - ID: firewall.ID, - Name: firewall.Name, - Result: "success", - }, nil -} - -// RenameFirewall implemented in a fake way for automated tests -func (c *FakeClient) RenameFirewall(id string, f *FirewallConfig) (*SimpleResponse, error) { - for i, firewall := range c.Firewalls { - if firewall.ID == id { - c.Firewalls[i].Name = f.Name - return &SimpleResponse{Result: "success"}, nil - } - } - - err := fmt.Errorf("unable to find %s, zero matches", id) - return nil, ZeroMatchesError.wrap(err) -} - -// DeleteFirewall implemented in a fake way for automated tests -func (c *FakeClient) DeleteFirewall(id string) (*SimpleResponse, error) { - for i, firewall := range c.Firewalls { - if firewall.ID == id { - c.Firewalls[len(c.Firewalls)-1], c.Firewalls[i] = c.Firewalls[i], c.Firewalls[len(c.Firewalls)-1] - c.Firewalls = c.Firewalls[:len(c.Firewalls)-1] - return &SimpleResponse{Result: "success"}, nil - } - } - - return &SimpleResponse{Result: "failed"}, nil -} - -// NewFirewallRule implemented in a fake way for automated tests -func (c *FakeClient) NewFirewallRule(r *FirewallRuleConfig) (*FirewallRule, error) { - rule := FirewallRule{ - ID: c.generateID(), - Protocol: r.Protocol, - StartPort: r.StartPort, - EndPort: r.EndPort, - Cidr: r.Cidr, - Label: r.Label, - } - c.FirewallRules = append(c.FirewallRules, rule) - return &rule, nil -} - -// ListFirewallRules implemented in a fake way for automated tests -func (c *FakeClient) ListFirewallRules(id string) ([]FirewallRule, error) { - return c.FirewallRules, nil -} - -// FindFirewallRule implemented in a fake way for automated tests -func (c *FakeClient) FindFirewallRule(firewallID string, search string) (*FirewallRule, error) { - for _, rule := range c.FirewallRules { - if rule.FirewallID == firewallID && strings.Contains(rule.Label, search) { - return &rule, nil - } - } - - err := fmt.Errorf("unable to find %s, zero matches", search) - return nil, ZeroMatchesError.wrap(err) -} - -// DeleteFirewallRule implemented in a fake way for automated tests -func (c *FakeClient) DeleteFirewallRule(id string, ruleID string) (*SimpleResponse, error) { - for i, rule := range c.FirewallRules { - if rule.ID == ruleID { - c.FirewallRules[len(c.FirewallRules)-1], c.FirewallRules[i] = c.FirewallRules[i], c.FirewallRules[len(c.FirewallRules)-1] - c.FirewallRules = c.FirewallRules[:len(c.FirewallRules)-1] - return &SimpleResponse{Result: "success"}, nil - } - } - - return &SimpleResponse{Result: "failed"}, nil -} - -// ListInstances implemented in a fake way for automated tests -func (c *FakeClient) ListInstances(page int, perPage int) (*PaginatedInstanceList, error) { - return &PaginatedInstanceList{ - Items: c.Instances, - Page: page, - PerPage: perPage, - Pages: page, - }, nil -} - -// ListAllInstances implemented in a fake way for automated tests -func (c *FakeClient) ListAllInstances() ([]Instance, error) { - return c.Instances, nil -} - -// FindInstance implemented in a fake way for automated tests -func (c *FakeClient) FindInstance(search string) (*Instance, error) { - for _, instance := range c.Instances { - if strings.Contains(instance.Hostname, search) { - return &instance, nil - } - } - - err := fmt.Errorf("unable to find %s, zero matches", search) - return nil, ZeroMatchesError.wrap(err) -} - -// GetInstance implemented in a fake way for automated tests -func (c *FakeClient) GetInstance(id string) (*Instance, error) { - for _, instance := range c.Instances { - if instance.ID == id { - return &instance, nil - } - } - - err := fmt.Errorf("unable to find %s, zero matches", id) - return nil, ZeroMatchesError.wrap(err) -} - -// NewInstanceConfig implemented in a fake way for automated tests -func (c *FakeClient) NewInstanceConfig() (*InstanceConfig, error) { - return &InstanceConfig{}, nil -} - -// CreateInstance implemented in a fake way for automated tests -func (c *FakeClient) CreateInstance(config *InstanceConfig) (*Instance, error) { - instance := Instance{ - ID: c.generateID(), - Hostname: config.Hostname, - Size: config.Size, - Region: config.Region, - TemplateID: config.TemplateID, - InitialUser: config.InitialUser, - SSHKey: config.SSHKeyID, - Tags: config.Tags, - PublicIP: c.generatePublicIP(), - } - c.Instances = append(c.Instances, instance) - return &instance, nil -} - -// SetInstanceTags implemented in a fake way for automated tests -func (c *FakeClient) SetInstanceTags(i *Instance, tags string) (*SimpleResponse, error) { - for idx, instance := range c.Instances { - if instance.ID == i.ID { - c.Instances[idx].Tags = strings.Split(tags, " ") - return &SimpleResponse{Result: "success"}, nil - } - } - - return &SimpleResponse{Result: "failed"}, nil -} - -// UpdateInstance implemented in a fake way for automated tests -func (c *FakeClient) UpdateInstance(i *Instance) (*SimpleResponse, error) { - for idx, instance := range c.Instances { - if instance.ID == i.ID { - c.Instances[idx] = *i - return &SimpleResponse{Result: "success"}, nil - } - } - - return &SimpleResponse{Result: "failed"}, nil -} - -// DeleteInstance implemented in a fake way for automated tests -func (c *FakeClient) DeleteInstance(id string) (*SimpleResponse, error) { - for i, instance := range c.Instances { - if instance.ID == id { - c.Instances[len(c.Instances)-1], c.Instances[i] = c.Instances[i], c.Instances[len(c.Instances)-1] - c.Instances = c.Instances[:len(c.Instances)-1] - return &SimpleResponse{Result: "success"}, nil - } - } - - return &SimpleResponse{Result: "failed"}, nil -} - -// RebootInstance implemented in a fake way for automated tests -func (c *FakeClient) RebootInstance(id string) (*SimpleResponse, error) { - return &SimpleResponse{Result: "success"}, nil -} - -// HardRebootInstance implemented in a fake way for automated tests -func (c *FakeClient) HardRebootInstance(id string) (*SimpleResponse, error) { - return &SimpleResponse{Result: "success"}, nil -} - -// SoftRebootInstance implemented in a fake way for automated tests -func (c *FakeClient) SoftRebootInstance(id string) (*SimpleResponse, error) { - return &SimpleResponse{Result: "success"}, nil -} - -// StopInstance implemented in a fake way for automated tests -func (c *FakeClient) StopInstance(id string) (*SimpleResponse, error) { - return &SimpleResponse{Result: "success"}, nil -} - -// StartInstance implemented in a fake way for automated tests -func (c *FakeClient) StartInstance(id string) (*SimpleResponse, error) { - return &SimpleResponse{Result: "success"}, nil -} - -// GetInstanceConsoleURL implemented in a fake way for automated tests -func (c *FakeClient) GetInstanceConsoleURL(id string) (string, error) { - return fmt.Sprintf("https://console.example.com/%s", id), nil -} - -// UpgradeInstance implemented in a fake way for automated tests -func (c *FakeClient) UpgradeInstance(id, newSize string) (*SimpleResponse, error) { - for idx, instance := range c.Instances { - if instance.ID == id { - c.Instances[idx].Size = newSize - return &SimpleResponse{Result: "success"}, nil - } - } - - return &SimpleResponse{Result: "failed"}, nil -} - -// MovePublicIPToInstance implemented in a fake way for automated tests -func (c *FakeClient) MovePublicIPToInstance(id, ipAddress string) (*SimpleResponse, error) { - oldIndex := -1 - for idx, instance := range c.Instances { - if instance.PublicIP == ipAddress { - oldIndex = idx - } - } - - newIndex := -1 - for idx, instance := range c.Instances { - if instance.ID == id { - newIndex = idx - } - } - - if oldIndex == -1 || newIndex == -1 { - return &SimpleResponse{Result: "failed"}, nil - } - - c.Instances[newIndex].PublicIP = c.Instances[oldIndex].PublicIP - c.Instances[oldIndex].PublicIP = "" - - return &SimpleResponse{Result: "success"}, nil -} - -// SetInstanceFirewall implemented in a fake way for automated tests -func (c *FakeClient) SetInstanceFirewall(id, firewallID string) (*SimpleResponse, error) { - for idx, instance := range c.Instances { - if instance.ID == id { - c.Instances[idx].FirewallID = firewallID - return &SimpleResponse{Result: "success"}, nil - } - } - - return &SimpleResponse{Result: "failed"}, nil -} - -// ListInstanceSizes implemented in a fake way for automated tests -func (c *FakeClient) ListInstanceSizes() ([]InstanceSize, error) { - return c.InstanceSizes, nil -} - -// FindInstanceSizes implemented in a fake way for automated tests -func (c *FakeClient) FindInstanceSizes(search string) (*InstanceSize, error) { - for _, size := range c.InstanceSizes { - if strings.Contains(size.Name, search) || size.ID == search { - return &size, nil - } - } - - err := fmt.Errorf("unable to find %s, zero matches", search) - return nil, ZeroMatchesError.wrap(err) -} - -// ListKubernetesClusters implemented in a fake way for automated tests -func (c *FakeClient) ListKubernetesClusters() (*PaginatedKubernetesClusters, error) { - return &PaginatedKubernetesClusters{ - Items: c.Clusters, - Page: 1, - PerPage: 10, - Pages: 1, - }, nil -} - -// FindKubernetesCluster implemented in a fake way for automated tests -func (c *FakeClient) FindKubernetesCluster(search string) (*KubernetesCluster, error) { - for _, cluster := range c.Clusters { - if strings.Contains(cluster.Name, search) || cluster.ID == search { - return &cluster, nil - } - } - - err := fmt.Errorf("unable to find %s, zero matches", search) - return nil, ZeroMatchesError.wrap(err) -} - -// ListKubernetesClusterInstances implemented in a fake way for automated tests -func (c *FakeClient) ListKubernetesClusterInstances(id string) ([]Instance, error) { - for _, cluster := range c.Clusters { - if cluster.ID == id { - instaces := make([]Instance, 0) - for _, kins := range cluster.Instances { - for _, instance := range c.Instances { - if instance.ID == kins.ID { - instaces = append(instaces, instance) - } - } - } - return instaces, nil - } - } - - err := fmt.Errorf("unable to find %s, zero matches", id) - return nil, DatabaseKubernetesClusterNotFoundError.wrap(err) -} - -// FindKubernetesClusterInstance implemented in a fake way for automated tests -func (c *FakeClient) FindKubernetesClusterInstance(clusterID, search string) (*Instance, error) { - instances, err := c.ListKubernetesClusterInstances(clusterID) - if err != nil { - return nil, decodeError(err) - } - - exactMatch := false - partialMatchesCount := 0 - result := Instance{} - - for _, instance := range instances { - if instance.Hostname == search || instance.ID == search { - exactMatch = true - result = instance - } else if strings.Contains(instance.Hostname, search) || strings.Contains(instance.ID, search) { - if !exactMatch { - result = instance - partialMatchesCount++ - } - } - } - - if exactMatch || partialMatchesCount == 1 { - return &result, nil - } else if partialMatchesCount > 1 { - err := fmt.Errorf("unable to find %s because there were multiple matches", search) - return nil, MultipleMatchesError.wrap(err) - } else { - err := fmt.Errorf("unable to find %s, zero matches", search) - return nil, ZeroMatchesError.wrap(err) - } -} - -// NewKubernetesClusters implemented in a fake way for automated tests -func (c *FakeClient) NewKubernetesClusters(kc *KubernetesClusterConfig) (*KubernetesCluster, error) { - cluster := KubernetesCluster{ - ID: c.generateID(), - Name: kc.Name, - MasterIP: c.generatePublicIP(), - NumTargetNode: kc.NumTargetNodes, - TargetNodeSize: kc.TargetNodesSize, - Ready: true, - Status: "ACTIVE", - } - c.Clusters = append(c.Clusters, cluster) - return &cluster, nil -} - -// GetKubernetesCluster implemented in a fake way for automated tests -func (c *FakeClient) GetKubernetesCluster(id string) (*KubernetesCluster, error) { - for _, cluster := range c.Clusters { - if cluster.ID == id { - return &cluster, nil - } - } - - err := fmt.Errorf("unable to find %s, zero matches", id) - return nil, ZeroMatchesError.wrap(err) -} - -// UpdateKubernetesCluster implemented in a fake way for automated tests -func (c *FakeClient) UpdateKubernetesCluster(id string, kc *KubernetesClusterConfig) (*KubernetesCluster, error) { - for i, cluster := range c.Clusters { - if cluster.ID == id { - c.Clusters[i].Name = kc.Name - c.Clusters[i].NumTargetNode = kc.NumTargetNodes - c.Clusters[i].TargetNodeSize = kc.TargetNodesSize - return &cluster, nil - } - } - - err := fmt.Errorf("unable to find %s, zero matches", id) - return nil, ZeroMatchesError.wrap(err) -} - -// ListKubernetesMarketplaceApplications implemented in a fake way for automated tests -func (c *FakeClient) ListKubernetesMarketplaceApplications() ([]KubernetesMarketplaceApplication, error) { - return []KubernetesMarketplaceApplication{}, nil -} - -// DeleteKubernetesCluster implemented in a fake way for automated tests -func (c *FakeClient) DeleteKubernetesCluster(id string) (*SimpleResponse, error) { - for i, cluster := range c.Clusters { - if cluster.ID == id { - c.Clusters[len(c.Clusters)-1], c.Clusters[i] = c.Clusters[i], c.Clusters[len(c.Clusters)-1] - c.Clusters = c.Clusters[:len(c.Clusters)-1] - return &SimpleResponse{Result: "success"}, nil - } - } - - return &SimpleResponse{Result: "failed"}, nil -} - -// RecycleKubernetesCluster implemented in a fake way for automated tests -func (c *FakeClient) RecycleKubernetesCluster(id string, hostname string) (*SimpleResponse, error) { - return &SimpleResponse{Result: "success"}, nil -} - -// ListAvailableKubernetesVersions implemented in a fake way for automated tests -func (c *FakeClient) ListAvailableKubernetesVersions() ([]KubernetesVersion, error) { - return []KubernetesVersion{ - { - Version: "1.20+k3s1", - Type: "stable", - }, - }, nil -} - -// GetDefaultNetwork implemented in a fake way for automated tests -func (c *FakeClient) GetDefaultNetwork() (*Network, error) { - for _, network := range c.Networks { - if network.Default { - return &network, nil - } - } - - err := fmt.Errorf("unable to find default network, zero matches") - return nil, ZeroMatchesError.wrap(err) -} - -// NewNetwork implemented in a fake way for automated tests -func (c *FakeClient) NewNetwork(label string) (*NetworkResult, error) { - network := Network{ - ID: c.generateID(), - Name: label, - } - c.Networks = append(c.Networks, network) - - return &NetworkResult{ - ID: network.ID, - Label: network.Name, - Result: "success", - }, nil - -} - -// ListNetworks implemented in a fake way for automated tests -func (c *FakeClient) ListNetworks() ([]Network, error) { - return c.Networks, nil -} - -// FindNetwork implemented in a fake way for automated tests -func (c *FakeClient) FindNetwork(search string) (*Network, error) { - for _, network := range c.Networks { - if strings.Contains(network.Name, search) { - return &network, nil - } - } - - err := fmt.Errorf("unable to find default network, zero matches") - return nil, ZeroMatchesError.wrap(err) -} - -// RenameNetwork implemented in a fake way for automated tests -func (c *FakeClient) RenameNetwork(label, id string) (*NetworkResult, error) { - for i, network := range c.Networks { - if network.ID == id { - c.Networks[i].Label = label - return &NetworkResult{ - ID: network.ID, - Label: network.Label, - Result: "success", - }, nil - } - } - - err := fmt.Errorf("unable to find default network, zero matches") - return nil, ZeroMatchesError.wrap(err) -} - -// DeleteNetwork implemented in a fake way for automated tests -func (c *FakeClient) DeleteNetwork(id string) (*SimpleResponse, error) { - for i, network := range c.Networks { - if network.ID == id { - c.Networks[len(c.Networks)-1], c.Networks[i] = c.Networks[i], c.Networks[len(c.Networks)-1] - c.Networks = c.Networks[:len(c.Networks)-1] - return &SimpleResponse{Result: "success"}, nil - } - } - - return &SimpleResponse{Result: "failed"}, nil -} - -// GetQuota implemented in a fake way for automated tests -func (c *FakeClient) GetQuota() (*Quota, error) { - return &c.Quota, nil -} - -// ListRegions implemented in a fake way for automated tests -func (c *FakeClient) ListRegions() ([]Region, error) { - return []Region{ - { - Code: "FAKE1", - Name: "Fake testing region", - Default: true, - }, - }, nil -} - -// CreateSnapshot implemented in a fake way for automated tests -// func (c *FakeClient) CreateSnapshot(name string, r *SnapshotConfig) (*Snapshot, error) { -// snapshot := Snapshot{ -// ID: c.generateID(), -// Name: name, -// InstanceID: r.InstanceID, -// Cron: r.Cron, -// } -// c.Snapshots = append(c.Snapshots, snapshot) - -// return &snapshot, nil -// } - -// ListSnapshots implemented in a fake way for automated tests -// func (c *FakeClient) ListSnapshots() ([]Snapshot, error) { -// return c.Snapshots, nil -// } - -// FindSnapshot implemented in a fake way for automated tests -// func (c *FakeClient) FindSnapshot(search string) (*Snapshot, error) { -// for _, snapshot := range c.Snapshots { -// if strings.Contains(snapshot.Name, search) { -// return &snapshot, nil -// } -// } - -// err := fmt.Errorf("unable to find %s, zero matches", search) -// return nil, ZeroMatchesError.wrap(err) -// } - -// DeleteSnapshot implemented in a fake way for automated tests -// func (c *FakeClient) DeleteSnapshot(name string) (*SimpleResponse, error) { -// for i, snapshot := range c.Snapshots { -// if snapshot.Name == name { -// c.Snapshots[len(c.Snapshots)-1], c.Snapshots[i] = c.Snapshots[i], c.Snapshots[len(c.Snapshots)-1] -// c.Snapshots = c.Snapshots[:len(c.Snapshots)-1] -// return &SimpleResponse{Result: "success"}, nil -// } -// } - -// return &SimpleResponse{Result: "failed"}, nil -// } - -// ListSSHKeys implemented in a fake way for automated tests -func (c *FakeClient) ListSSHKeys() ([]SSHKey, error) { - return c.SSHKeys, nil -} - -// NewSSHKey implemented in a fake way for automated tests -func (c *FakeClient) NewSSHKey(name string, publicKey string) (*SimpleResponse, error) { - sshKey := SSHKey{ - Name: name, - Fingerprint: publicKey, // This is weird, but we're just storing a value - } - c.SSHKeys = append(c.SSHKeys, sshKey) - return &SimpleResponse{Result: "success"}, nil -} - -// UpdateSSHKey implemented in a fake way for automated tests -func (c *FakeClient) UpdateSSHKey(name string, sshKeyID string) (*SSHKey, error) { - for i, sshKey := range c.SSHKeys { - if sshKey.ID == sshKeyID { - c.SSHKeys[i].Name = name - return &sshKey, nil - } - } - - err := fmt.Errorf("unable to find SSH key %s, zero matches", sshKeyID) - return nil, ZeroMatchesError.wrap(err) -} - -// FindSSHKey implemented in a fake way for automated tests -func (c *FakeClient) FindSSHKey(search string) (*SSHKey, error) { - for _, sshKey := range c.SSHKeys { - if strings.Contains(sshKey.Name, search) { - return &sshKey, nil - } - } - - err := fmt.Errorf("unable to find SSH key %s, zero matches", search) - return nil, ZeroMatchesError.wrap(err) -} - -// DeleteSSHKey implemented in a fake way for automated tests -func (c *FakeClient) DeleteSSHKey(id string) (*SimpleResponse, error) { - for i, sshKey := range c.SSHKeys { - if sshKey.ID == id { - c.SSHKeys[len(c.SSHKeys)-1], c.SSHKeys[i] = c.SSHKeys[i], c.SSHKeys[len(c.SSHKeys)-1] - c.SSHKeys = c.SSHKeys[:len(c.SSHKeys)-1] - return &SimpleResponse{Result: "success"}, nil - } - } - - return &SimpleResponse{Result: "failed"}, nil -} - -// ListTemplates implemented in a fake way for automated tests -// func (c *FakeClient) ListTemplates() ([]Template, error) { -// return c.Templates, nil -// } - -// NewTemplate implemented in a fake way for automated tests -// func (c *FakeClient) NewTemplate(conf *Template) (*SimpleResponse, error) { -// template := Template{ -// ID: conf.ID, -// Name: conf.Name, -// CloudConfig: conf.CloudConfig, -// ImageID: conf.ImageID, -// } -// c.Templates = append(c.Templates, template) -// return &SimpleResponse{Result: "success"}, nil -// } - -// UpdateTemplate implemented in a fake way for automated tests -// func (c *FakeClient) UpdateTemplate(id string, conf *Template) (*Template, error) { -// for i, template := range c.Templates { -// if template.ID == id { -// c.Templates[i].Name = conf.Name -// c.Templates[i].CloudConfig = conf.CloudConfig -// c.Templates[i].ImageID = conf.ImageID -// return &template, nil -// } -// } - -// err := fmt.Errorf("unable to find SSH key %s, zero matches", id) -// return nil, ZeroMatchesError.wrap(err) -// } - -// GetTemplateByCode implemented in a fake way for automated tests -// func (c *FakeClient) GetTemplateByCode(code string) (*Template, error) { -// for _, template := range c.Templates { -// if template.Code == code { -// return &template, nil -// } -// } - -// err := fmt.Errorf("unable to find SSH key %s, zero matches", code) -// return nil, ZeroMatchesError.wrap(err) -// } - -// FindTemplate implemented in a fake way for automated tests -// func (c *FakeClient) FindTemplate(search string) (*Template, error) { -// for _, template := range c.Templates { -// if strings.Contains(template.Name, search) { -// return &template, nil -// } -// } - -// err := fmt.Errorf("unable to find template %s, zero matches", search) -// return nil, ZeroMatchesError.wrap(err) -// } - -// DeleteTemplate implemented in a fake way for automated tests -// func (c *FakeClient) DeleteTemplate(id string) (*SimpleResponse, error) { -// for i, template := range c.Templates { -// if template.ID == id { -// c.Templates[len(c.Templates)-1], c.Templates[i] = c.Templates[i], c.Templates[len(c.Templates)-1] -// c.Templates = c.Templates[:len(c.Templates)-1] -// return &SimpleResponse{Result: "success"}, nil -// } -// } - -// return &SimpleResponse{Result: "failed"}, nil -// } - -// ListDiskImages implemented in a fake way for automated tests -func (c *FakeClient) ListDiskImages() ([]DiskImage, error) { - return c.DiskImage, nil -} - -// GetDiskImage implemented in a fake way for automated tests -func (c *FakeClient) GetDiskImage(id string) (*DiskImage, error) { - for k, v := range c.DiskImage { - if v.ID == id { - return &c.DiskImage[k], nil - } - } - - err := fmt.Errorf("unable to find disk image %s, zero matches", id) - return nil, ZeroMatchesError.wrap(err) -} - -// FindDiskImage implemented in a fake way for automated tests -func (c *FakeClient) FindDiskImage(search string) (*DiskImage, error) { - for _, diskimage := range c.DiskImage { - if strings.Contains(diskimage.Name, search) || strings.Contains(diskimage.ID, search) { - return &diskimage, nil - } - } - - err := fmt.Errorf("unable to find volume %s, zero matches", search) - return nil, ZeroMatchesError.wrap(err) -} - -// ListVolumes implemented in a fake way for automated tests -func (c *FakeClient) ListVolumes() ([]Volume, error) { - return c.Volumes, nil -} - -// GetVolume implemented in a fake way for automated tests -func (c *FakeClient) GetVolume(id string) (*Volume, error) { - for _, volume := range c.Volumes { - if volume.ID == id { - return &volume, nil - } - } - - err := fmt.Errorf("unable to get volume %s", id) - return nil, ZeroMatchesError.wrap(err) -} - -// FindVolume implemented in a fake way for automated tests -func (c *FakeClient) FindVolume(search string) (*Volume, error) { - for _, volume := range c.Volumes { - if strings.Contains(volume.Name, search) || strings.Contains(volume.ID, search) { - return &volume, nil - } - } - - err := fmt.Errorf("unable to find volume %s, zero matches", search) - return nil, ZeroMatchesError.wrap(err) -} - -// NewVolume implemented in a fake way for automated tests -func (c *FakeClient) NewVolume(v *VolumeConfig) (*VolumeResult, error) { - volume := Volume{ - ID: c.generateID(), - Name: v.Name, - SizeGigabytes: v.SizeGigabytes, - } - c.Volumes = append(c.Volumes, volume) - - return &VolumeResult{ - ID: volume.ID, - Name: volume.Name, - Result: "success", - }, nil -} - -// ResizeVolume implemented in a fake way for automated tests -func (c *FakeClient) ResizeVolume(id string, size int) (*SimpleResponse, error) { - for i, volume := range c.Volumes { - if volume.ID == id { - c.Volumes[i].SizeGigabytes = size - return &SimpleResponse{Result: "success"}, nil - } - } - - err := fmt.Errorf("unable to find volume %s, zero matches", id) - return nil, ZeroMatchesError.wrap(err) -} - -// AttachVolume implemented in a fake way for automated tests -func (c *FakeClient) AttachVolume(id string, instance string) (*SimpleResponse, error) { - for i, volume := range c.Volumes { - if volume.ID == id { - c.Volumes[i].InstanceID = instance - return &SimpleResponse{Result: "success"}, nil - } - } - - err := fmt.Errorf("unable to find volume %s, zero matches", id) - return nil, ZeroMatchesError.wrap(err) -} - -// DetachVolume implemented in a fake way for automated tests -func (c *FakeClient) DetachVolume(id string) (*SimpleResponse, error) { - for i, volume := range c.Volumes { - if volume.ID == id { - c.Volumes[i].InstanceID = "" - return &SimpleResponse{Result: "success"}, nil - } - } - - err := fmt.Errorf("unable to find volume %s, zero matches", id) - return nil, ZeroMatchesError.wrap(err) -} - -// DeleteVolume implemented in a fake way for automated tests -func (c *FakeClient) DeleteVolume(id string) (*SimpleResponse, error) { - for i, volume := range c.Volumes { - if volume.ID == id { - c.Volumes[len(c.Volumes)-1], c.Volumes[i] = c.Volumes[i], c.Volumes[len(c.Volumes)-1] - c.Volumes = c.Volumes[:len(c.Volumes)-1] - return &SimpleResponse{Result: "success"}, nil - } - } - - return &SimpleResponse{Result: "failed"}, nil -} - -// CreateWebhook implemented in a fake way for automated tests -func (c *FakeClient) CreateWebhook(r *WebhookConfig) (*Webhook, error) { - webhook := Webhook{ - ID: c.generateID(), - Events: r.Events, - Secret: r.Secret, - URL: r.URL, - } - c.Webhooks = append(c.Webhooks, webhook) - - return &webhook, nil -} - -// ListWebhooks implemented in a fake way for automated tests -func (c *FakeClient) ListWebhooks() ([]Webhook, error) { - return c.Webhooks, nil -} - -// FindWebhook implemented in a fake way for automated tests -func (c *FakeClient) FindWebhook(search string) (*Webhook, error) { - for _, webhook := range c.Webhooks { - if strings.Contains(webhook.Secret, search) || strings.Contains(webhook.URL, search) { - return &webhook, nil - } - } - - err := fmt.Errorf("unable to find %s, zero matches", search) - return nil, ZeroMatchesError.wrap(err) -} - -// UpdateWebhook implemented in a fake way for automated tests -func (c *FakeClient) UpdateWebhook(id string, r *WebhookConfig) (*Webhook, error) { - for i, webhook := range c.Webhooks { - if webhook.ID == id { - c.Webhooks[i].Events = r.Events - c.Webhooks[i].Secret = r.Secret - c.Webhooks[i].URL = r.URL - - return &webhook, nil - } - } - - err := fmt.Errorf("unable to find %s, zero matches", id) - return nil, ZeroMatchesError.wrap(err) -} - -// DeleteWebhook implemented in a fake way for automated tests -func (c *FakeClient) DeleteWebhook(id string) (*SimpleResponse, error) { - for i, webhook := range c.Webhooks { - if webhook.ID == id { - c.Webhooks[len(c.Webhooks)-1], c.Webhooks[i] = c.Webhooks[i], c.Webhooks[len(c.Webhooks)-1] - c.Webhooks = c.Webhooks[:len(c.Webhooks)-1] - return &SimpleResponse{Result: "success"}, nil - } - } - - return &SimpleResponse{Result: "failed"}, nil -} - -// ListPermissions implemented in a fake way for automated tests -func (c *FakeClient) ListPermissions() ([]Permission, error) { - return []Permission{ - { - Name: "instance.create", - Description: "Create Compute instances", - }, - { - Name: "kubernetes.*", - Description: "Manage Civo Kubernetes clusters", - }, - }, nil -} - -// GetOrganisation implemented in a fake way for automated tests -func (c *FakeClient) GetOrganisation() (*Organisation, error) { - return &c.Organisation, nil -} - -// CreateOrganisation implemented in a fake way for automated tests -func (c *FakeClient) CreateOrganisation(name string) (*Organisation, error) { - c.Organisation.ID = c.generateID() - c.Organisation.Name = name - return &c.Organisation, nil -} - -// RenameOrganisation implemented in a fake way for automated tests -func (c *FakeClient) RenameOrganisation(name string) (*Organisation, error) { - c.Organisation.Name = name - return &c.Organisation, nil -} - -// AddAccountToOrganisation implemented in a fake way for automated tests -func (c *FakeClient) AddAccountToOrganisation(accountID string) ([]Account, error) { - c.OrganisationAccounts = append(c.OrganisationAccounts, Account{ - ID: accountID, - CreatedAt: time.Now(), - UpdatedAt: time.Now(), - }) - return c.ListAccountsInOrganisation() -} - -// ListAccountsInOrganisation implemented in a fake way for automated tests -func (c *FakeClient) ListAccountsInOrganisation() ([]Account, error) { - return c.OrganisationAccounts, nil -} - -// ListRoles implemented in a fake way for automated tests -func (c *FakeClient) ListRoles() ([]Role, error) { - return c.OrganisationRoles, nil -} - -// CreateRole implemented in a fake way for automated tests -func (c *FakeClient) CreateRole(name, permissions string) (*Role, error) { - role := Role{ - ID: c.generateID(), - Name: name, - Permissions: permissions, - } - c.OrganisationRoles = append(c.OrganisationRoles, role) - return &role, nil -} - -// DeleteRole implemented in a fake way for automated tests -func (c *FakeClient) DeleteRole(id string) (*SimpleResponse, error) { - for i, role := range c.OrganisationRoles { - if role.ID == id { - c.OrganisationRoles[len(c.OrganisationRoles)-1], c.OrganisationRoles[i] = c.OrganisationRoles[i], c.OrganisationRoles[len(c.OrganisationRoles)-1] - c.OrganisationRoles = c.OrganisationRoles[:len(c.OrganisationRoles)-1] - return &SimpleResponse{Result: "success"}, nil - } - } - - return &SimpleResponse{Result: "failed"}, fmt.Errorf("unable to find that role") -} - -// ListTeams implemented in a fake way for automated tests -func (c *FakeClient) ListTeams() ([]Team, error) { - return c.OrganisationTeams, nil -} - -// CreateTeam implemented in a fake way for automated tests -func (c *FakeClient) CreateTeam(name string) (*Team, error) { - team := Team{ - ID: c.generateID(), - Name: name, - CreatedAt: time.Time{}, - UpdatedAt: time.Time{}, - } - c.OrganisationTeams = append(c.OrganisationTeams, team) - return &team, nil -} - -// RenameTeam implemented in a fake way for automated tests -func (c *FakeClient) RenameTeam(teamID, name string) (*Team, error) { - for _, team := range c.OrganisationTeams { - if team.ID == teamID { - team.Name = name - return &team, nil - } - } - - return nil, fmt.Errorf("unable to find that role") -} - -// DeleteTeam implemented in a fake way for automated tests -func (c *FakeClient) DeleteTeam(id string) (*SimpleResponse, error) { - for i, team := range c.OrganisationTeams { - if team.ID == id { - c.OrganisationTeams[len(c.OrganisationTeams)-1], c.OrganisationTeams[i] = c.OrganisationTeams[i], c.OrganisationTeams[len(c.OrganisationTeams)-1] - c.OrganisationTeams = c.OrganisationTeams[:len(c.OrganisationTeams)-1] - return &SimpleResponse{Result: "success"}, nil - } - } - - return &SimpleResponse{Result: "failure"}, fmt.Errorf("unable to find that team") -} - -// ListTeamMembers implemented in a fake way for automated tests -func (c *FakeClient) ListTeamMembers(teamID string) ([]TeamMember, error) { - return c.OrganisationTeamMembers[teamID], nil -} - -// AddTeamMember implemented in a fake way for automated tests -func (c *FakeClient) AddTeamMember(teamID, userID, permissions, roles string) ([]TeamMember, error) { - c.OrganisationTeamMembers[teamID] = append(c.OrganisationTeamMembers[teamID], TeamMember{ - ID: c.generateID(), - TeamID: teamID, - UserID: userID, - Permissions: permissions, - Roles: roles, - CreatedAt: time.Now(), - UpdatedAt: time.Now(), - }) - - return c.ListTeamMembers(teamID) -} - -// UpdateTeamMember implemented in a fake way for automated tests -func (c *FakeClient) UpdateTeamMember(teamID, teamMemberID, permissions, roles string) (*TeamMember, error) { - for _, teamMember := range c.OrganisationTeamMembers[teamID] { - if teamMember.ID == teamMemberID { - teamMember.Permissions = permissions - teamMember.Roles = roles - return &teamMember, nil - } - } - - return nil, fmt.Errorf("unable to find that role") -} - -// RemoveTeamMember implemented in a fake way for automated tests -func (c *FakeClient) RemoveTeamMember(teamID, teamMemberID string) (*SimpleResponse, error) { - for i, teamMember := range c.OrganisationTeamMembers[teamID] { - if teamMember.ID == teamMemberID { - c.OrganisationTeamMembers[teamID][len(c.OrganisationTeamMembers[teamID])-1], c.OrganisationTeamMembers[teamID][i] = c.OrganisationTeamMembers[teamID][i], c.OrganisationTeamMembers[teamID][len(c.OrganisationTeamMembers[teamID])-1] - c.OrganisationTeamMembers[teamID] = c.OrganisationTeamMembers[teamID][:len(c.OrganisationTeamMembers[teamID])-1] - return &SimpleResponse{Result: "success"}, nil - } - } - - return &SimpleResponse{Result: "failure"}, fmt.Errorf("unable to find that team member") -} - -// ListLoadBalancers implemented in a fake way for automated tests -func (c *FakeClient) ListLoadBalancers() ([]LoadBalancer, error) { - return c.LoadBalancers, nil -} - -// GetLoadBalancer implemented in a fake way for automated tests -func (c *FakeClient) GetLoadBalancer(id string) (*LoadBalancer, error) { - for _, lb := range c.LoadBalancers { - if lb.ID == id { - return &lb, nil - } - } - - err := fmt.Errorf("unable to get load balancer %s", id) - return nil, DatabaseLoadBalancerNotFoundError.wrap(err) -} - -// FindLoadBalancer implemented in a fake way for automated tests -func (c *FakeClient) FindLoadBalancer(search string) (*LoadBalancer, error) { - exactMatch := false - partialMatchesCount := 0 - result := LoadBalancer{} - - for _, lb := range c.LoadBalancers { - if lb.ID == search || lb.Name == search { - exactMatch = true - result = lb - } else if strings.Contains(lb.Name, search) || strings.Contains(lb.ID, search) { - if !exactMatch { - result = lb - partialMatchesCount++ - } - } - } - - if exactMatch || partialMatchesCount == 1 { - return &result, nil - } else if partialMatchesCount > 1 { - err := fmt.Errorf("unable to find %s because there were multiple matches", search) - return nil, MultipleMatchesError.wrap(err) - } else { - err := fmt.Errorf("unable to find %s, zero matches", search) - return nil, ZeroMatchesError.wrap(err) - } -} - -// CreateLoadBalancer implemented in a fake way for automated tests -func (c *FakeClient) CreateLoadBalancer(r *LoadBalancerConfig) (*LoadBalancer, error) { - loadbalancer := LoadBalancer{ - ID: c.generateID(), - Name: r.Name, - Algorithm: r.Algorithm, - ExternalTrafficPolicy: r.ExternalTrafficPolicy, - SessionAffinityConfigTimeout: r.SessionAffinityConfigTimeout, - SessionAffinity: r.SessionAffinity, - EnableProxyProtocol: r.EnableProxyProtocol, - FirewallID: r.FirewallID, - ClusterID: r.ClusterID, - } - - if r.Algorithm == "" { - loadbalancer.Algorithm = "round_robin" - } - if r.FirewallID == "" { - loadbalancer.FirewallID = c.generateID() - } - if r.ExternalTrafficPolicy == "" { - loadbalancer.ExternalTrafficPolicy = "Cluster" - } - - backends := make([]LoadBalancerBackend, 0) - for _, b := range r.Backends { - backend := LoadBalancerBackend{ - IP: b.IP, - Protocol: b.Protocol, - SourcePort: b.SourcePort, - TargetPort: b.TargetPort, - } - backends = append(backends, backend) - } - loadbalancer.Backends = backends - loadbalancer.PublicIP = c.generatePublicIP() - loadbalancer.State = "available" - - c.LoadBalancers = append(c.LoadBalancers, loadbalancer) - return &loadbalancer, nil -} - -// UpdateLoadBalancer implemented in a fake way for automated tests -func (c *FakeClient) UpdateLoadBalancer(id string, r *LoadBalancerUpdateConfig) (*LoadBalancer, error) { - for _, lb := range c.LoadBalancers { - if lb.ID == id { - lb.Name = r.Name - lb.Algorithm = r.Algorithm - lb.EnableProxyProtocol = r.EnableProxyProtocol - lb.ExternalTrafficPolicy = r.ExternalTrafficPolicy - lb.SessionAffinity = r.SessionAffinity - lb.SessionAffinityConfigTimeout = r.SessionAffinityConfigTimeout - - backends := make([]LoadBalancerBackend, len(r.Backends)) - for i, b := range r.Backends { - backends[i].IP = b.IP - backends[i].Protocol = b.Protocol - backends[i].SourcePort = b.SourcePort - backends[i].TargetPort = b.TargetPort - } - - if r.ExternalTrafficPolicy == "" { - lb.ExternalTrafficPolicy = "Cluster" - } - - return &lb, nil - } - } - - err := fmt.Errorf("unable to find load balancer %s", id) - return nil, DatabaseLoadBalancerNotFoundError.wrap(err) -} - -// DeleteLoadBalancer implemented in a fake way for automated tests -func (c *FakeClient) DeleteLoadBalancer(id string) (*SimpleResponse, error) { - for i, lb := range c.LoadBalancers { - if lb.ID == id { - c.LoadBalancers[len(c.LoadBalancers)-1], c.LoadBalancers[i] = c.LoadBalancers[i], c.LoadBalancers[len(c.LoadBalancers)-1] - c.LoadBalancers = c.LoadBalancers[:len(c.LoadBalancers)-1] - return &SimpleResponse{Result: "success"}, nil - } - } - - return &SimpleResponse{Result: "failed"}, nil -} - -// ListKubernetesClusterPools implemented in a fake way for automated tests -func (c *FakeClient) ListKubernetesClusterPools(cid string) ([]KubernetesPool, error) { - pools := []KubernetesPool{} - found := false - - for _, cs := range c.Clusters { - if cs.ID == cid { - found = true - pools = cs.Pools - break - } - } - - if found { - return pools, nil - } - - err := fmt.Errorf("unable to get kubernetes cluster %s", cid) - return nil, DatabaseKubernetesClusterNotFoundError.wrap(err) -} - -// GetKubernetesClusterPool implemented in a fake way for automated tests -func (c *FakeClient) GetKubernetesClusterPool(cid, pid string) (*KubernetesPool, error) { - pool := &KubernetesPool{} - clusterFound := false - poolFound := false - - for _, cs := range c.Clusters { - if cs.ID == cid { - clusterFound = true - for _, p := range cs.Pools { - if p.ID == pid { - poolFound = true - pool = &p - break - } - } - } - } - - if !clusterFound { - err := fmt.Errorf("unable to get kubernetes cluster %s", cid) - return nil, DatabaseKubernetesClusterNotFoundError.wrap(err) - } - - if !poolFound { - err := fmt.Errorf("unable to get kubernetes pool %s", pid) - return nil, DatabaseKubernetesClusterNotFoundError.wrap(err) - } - - return pool, nil -} - -// FindKubernetesClusterPool implemented in a fake way for automated tests -func (c *FakeClient) FindKubernetesClusterPool(cid, search string) (*KubernetesPool, error) { - pool := &KubernetesPool{} - clusterFound := false - poolFound := false - - for _, cs := range c.Clusters { - if cs.ID == cid { - clusterFound = true - for _, p := range cs.Pools { - if p.ID == search || strings.Contains(p.ID, search) { - poolFound = true - pool = &p - break - } - } - } - } - - if !clusterFound { - err := fmt.Errorf("unable to get kubernetes cluster %s", cid) - return nil, DatabaseKubernetesClusterNotFoundError.wrap(err) - } - - if !poolFound { - err := fmt.Errorf("unable to get kubernetes pool %s", search) - return nil, DatabaseKubernetesClusterNotFoundError.wrap(err) - } - - return pool, nil -} - -// DeleteKubernetesClusterPoolInstance implemented in a fake way for automated tests -func (c *FakeClient) DeleteKubernetesClusterPoolInstance(cid, pid, id string) (*SimpleResponse, error) { - clusterFound := false - poolFound := false - instanceFound := false - - for ci, cs := range c.Clusters { - if cs.ID == cid { - clusterFound = true - for pi, p := range cs.Pools { - if p.ID == pid { - poolFound = true - for i, in := range p.Instances { - if in.ID == id { - instanceFound = true - p.Instances = append(p.Instances[:i], p.Instances[i+1:]...) - - instanceNames := []string{} - for _, in := range p.Instances { - instanceNames = append(instanceNames, in.Hostname) - } - p.InstanceNames = instanceNames - c.Clusters[ci].Pools[pi] = p - break - } - } - } - } - } - } - - if !clusterFound { - err := fmt.Errorf("unable to get kubernetes cluster %s", cid) - return nil, DatabaseKubernetesClusterNotFoundError.wrap(err) - } - - if !poolFound { - err := fmt.Errorf("unable to get kubernetes pool %s", pid) - return nil, DatabaseKubernetesClusterNotFoundError.wrap(err) - } - - if !instanceFound { - err := fmt.Errorf("unable to get kubernetes pool instance %s", id) - return nil, DatabaseKubernetesClusterNotFoundError.wrap(err) - } - - return &SimpleResponse{ - Result: "success", - }, nil -} - -// UpdateKubernetesClusterPool implemented in a fake way for automated tests -func (c *FakeClient) UpdateKubernetesClusterPool(cid, pid string, config *KubernetesClusterPoolUpdateConfig) (*KubernetesPool, error) { - clusterFound := false - poolFound := false - - pool := KubernetesPool{} - for _, cs := range c.Clusters { - if cs.ID == cid { - clusterFound = true - for _, p := range cs.Pools { - if p.ID == pid { - poolFound = true - p.Count = config.Count - pool = p - } - } - } - } - - if !clusterFound { - err := fmt.Errorf("unable to get kubernetes cluster %s", cid) - return nil, DatabaseKubernetesClusterNotFoundError.wrap(err) - } - - if !poolFound { - err := fmt.Errorf("unable to get kubernetes pool %s", pid) - return nil, DatabaseKubernetesClusterNotFoundError.wrap(err) - } - - return &pool, nil -} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/firewall.go b/cluster-autoscaler/vendor/github.com/civo/civogo/firewall.go deleted file mode 100644 index 58878a40004e..000000000000 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/firewall.go +++ /dev/null @@ -1,222 +0,0 @@ -package civogo - -import ( - "bytes" - "encoding/json" - "fmt" - "strings" -) - -// Firewall represents list of rule in Civo's infrastructure -type Firewall struct { - ID string `json:"id"` - Name string `json:"name,omitempty"` - RulesCount int `json:"rules_count,omitempty"` - InstanceCount int `json:"instance_count"` - ClusterCount int `json:"cluster_count"` - LoadBalancerCount int `json:"loadbalancer_count"` - NetworkID string `json:"network_id,omitempty"` -} - -// FirewallResult is the response from the Civo Firewall APIs -type FirewallResult struct { - ID string `json:"id"` - Name string `json:"name"` - Result string `json:"result"` -} - -// FirewallRule represents a single rule for a given firewall, regarding -// which ports to open and which protocol, to which CIDR -type FirewallRule struct { - ID string `json:"id"` - FirewallID string `json:"firewall_id"` - Protocol string `json:"protocol"` - StartPort string `json:"start_port"` - EndPort string `json:"end_port"` - Cidr []string `json:"cidr"` - Direction string `json:"direction"` - Action string `json:"action"` - Label string `json:"label,omitempty"` -} - -// FirewallRuleConfig is how you specify the details when creating a new rule -type FirewallRuleConfig struct { - FirewallID string `json:"firewall_id"` - Region string `json:"region"` - Protocol string `json:"protocol"` - StartPort string `json:"start_port"` - EndPort string `json:"end_port"` - Cidr []string `json:"cidr"` - Direction string `json:"direction"` - Action string `json:"action"` - Label string `json:"label,omitempty"` -} - -// FirewallConfig is how you specify the details when creating a new firewall -type FirewallConfig struct { - Name string `json:"name"` - Region string `json:"region"` - NetworkID string `json:"network_id"` - // CreateRules if not send the value will be nil, that mean the default rules will be created - CreateRules *bool `json:"create_rules,omitempty"` -} - -// ListFirewalls returns all firewall owned by the calling API account -func (c *Client) ListFirewalls() ([]Firewall, error) { - resp, err := c.SendGetRequest("/v2/firewalls") - if err != nil { - return nil, decodeError(err) - } - - firewall := make([]Firewall, 0) - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&firewall); err != nil { - return nil, err - } - - return firewall, nil -} - -// FindFirewall finds a firewall by either part of the ID or part of the name -func (c *Client) FindFirewall(search string) (*Firewall, error) { - firewalls, err := c.ListFirewalls() - if err != nil { - return nil, decodeError(err) - } - - exactMatch := false - partialMatchesCount := 0 - result := Firewall{} - - for _, value := range firewalls { - if value.Name == search || value.ID == search { - exactMatch = true - result = value - } else if strings.Contains(value.Name, search) || strings.Contains(value.ID, search) { - if !exactMatch { - result = value - partialMatchesCount++ - } - } - } - - if exactMatch || partialMatchesCount == 1 { - return &result, nil - } else if partialMatchesCount > 1 { - err := fmt.Errorf("unable to find %s because there were multiple matches", search) - return nil, MultipleMatchesError.wrap(err) - } else { - err := fmt.Errorf("unable to find %s, zero matches", search) - return nil, ZeroMatchesError.wrap(err) - } -} - -// NewFirewall creates a new firewall record -func (c *Client) NewFirewall(name, networkid string, CreateRules *bool) (*FirewallResult, error) { - fw := FirewallConfig{Name: name, Region: c.Region, NetworkID: networkid, CreateRules: CreateRules} - body, err := c.SendPostRequest("/v2/firewalls", fw) - if err != nil { - return nil, decodeError(err) - } - - result := &FirewallResult{} - if err := json.NewDecoder(bytes.NewReader(body)).Decode(result); err != nil { - return nil, err - } - - return result, nil -} - -// RenameFirewall rename firewall -func (c *Client) RenameFirewall(id string, f *FirewallConfig) (*SimpleResponse, error) { - f.Region = c.Region - resp, err := c.SendPutRequest(fmt.Sprintf("/v2/firewalls/%s", id), f) - if err != nil { - return nil, decodeError(err) - } - - return c.DecodeSimpleResponse(resp) -} - -// DeleteFirewall deletes an firewall -func (c *Client) DeleteFirewall(id string) (*SimpleResponse, error) { - resp, err := c.SendDeleteRequest("/v2/firewalls/" + id) - if err != nil { - return nil, decodeError(err) - } - - return c.DecodeSimpleResponse(resp) -} - -// NewFirewallRule creates a new rule within a firewall -func (c *Client) NewFirewallRule(r *FirewallRuleConfig) (*FirewallRule, error) { - if len(r.FirewallID) == 0 { - err := fmt.Errorf("the firewall ID is empty") - return nil, IDisEmptyError.wrap(err) - } - - r.Region = c.Region - - resp, err := c.SendPostRequest(fmt.Sprintf("/v2/firewalls/%s/rules", r.FirewallID), r) - if err != nil { - return nil, decodeError(err) - } - - rule := &FirewallRule{} - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(rule); err != nil { - return nil, err - } - - return rule, nil -} - -// ListFirewallRules get all rules for a firewall -func (c *Client) ListFirewallRules(id string) ([]FirewallRule, error) { - resp, err := c.SendGetRequest(fmt.Sprintf("/v2/firewalls/%s/rules", id)) - if err != nil { - return nil, decodeError(err) - } - - firewallRule := make([]FirewallRule, 0) - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&firewallRule); err != nil { - return nil, err - } - - return firewallRule, nil -} - -// FindFirewallRule finds a firewall Rule by ID or part of the same -func (c *Client) FindFirewallRule(firewallID string, search string) (*FirewallRule, error) { - firewallsRules, err := c.ListFirewallRules(firewallID) - if err != nil { - return nil, decodeError(err) - } - - found := -1 - - for i, firewallRule := range firewallsRules { - if strings.Contains(firewallRule.ID, search) { - if found != -1 { - err := fmt.Errorf("unable to find %s because there were multiple matches", search) - return nil, MultipleMatchesError.wrap(err) - } - found = i - } - } - - if found == -1 { - err := fmt.Errorf("unable to find %s, zero matches", search) - return nil, ZeroMatchesError.wrap(err) - } - - return &firewallsRules[found], nil -} - -// DeleteFirewallRule deletes an firewall -func (c *Client) DeleteFirewallRule(id string, ruleID string) (*SimpleResponse, error) { - resp, err := c.SendDeleteRequest(fmt.Sprintf("/v2/firewalls/%s/rules/%s", id, ruleID)) - if err != nil { - return nil, decodeError(err) - } - - return c.DecodeSimpleResponse(resp) -} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/go.mod b/cluster-autoscaler/vendor/github.com/civo/civogo/go.mod deleted file mode 100644 index 6d62383b4e66..000000000000 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/go.mod +++ /dev/null @@ -1,5 +0,0 @@ -module github.com/civo/civogo - -go 1.16 - -require github.com/onsi/gomega v1.18.0 diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/go.sum b/cluster-autoscaler/vendor/github.com/civo/civogo/go.sum deleted file mode 100644 index 1d2304598104..000000000000 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/go.sum +++ /dev/null @@ -1,98 +0,0 @@ -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= -github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= -github.com/onsi/ginkgo/v2 v2.0.0 h1:CcuG/HvWNkkaqCUpJifQY8z7qEMBJya6aLPx6ftGyjQ= -github.com/onsi/ginkgo/v2 v2.0.0/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= -github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= -github.com/onsi/gomega v1.18.0 h1:ngbYoRctxjl8SiF7XgP0NxBFbfHcg3wfHMMaFHWwMTM= -github.com/onsi/gomega v1.18.0/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5hitRs= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210428140749-89ef3d95e781 h1:DzZ89McO9/gWPsQXS/FVKAlG02ZjaQ6AlZRBimEYOd0= -golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e h1:fLOSk5Q00efkSvAm+4xcoXD+RRmLmmulPn5I3Y9F2EM= -golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/instance_size.go b/cluster-autoscaler/vendor/github.com/civo/civogo/instance_size.go deleted file mode 100644 index d794410536a3..000000000000 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/instance_size.go +++ /dev/null @@ -1,70 +0,0 @@ -package civogo - -import ( - "bytes" - "encoding/json" - "fmt" - "strings" -) - -// InstanceSize represents an available size for instances to launch -type InstanceSize struct { - ID string `json:"id,omitempty"` - Name string `json:"name,omitempty"` - NiceName string `json:"nice_name,omitempty"` - CPUCores int `json:"cpu_cores,omitempty"` - RAMMegabytes int `json:"ram_mb,omitempty"` - DiskGigabytes int `json:"disk_gb,omitempty"` - TransferTerabytes int `json:"transfer_tb,omitempty"` - Description string `json:"description,omitempty"` - Selectable bool `json:"selectable,omitempty"` -} - -// ListInstanceSizes returns all availble sizes of instances -func (c *Client) ListInstanceSizes() ([]InstanceSize, error) { - resp, err := c.SendGetRequest("/v2/sizes") - if err != nil { - return nil, decodeError(err) - } - - sizes := make([]InstanceSize, 0) - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&sizes); err != nil { - return nil, err - } - - return sizes, nil -} - -// FindInstanceSizes finds a instance size name by either part of the ID or part of the name -func (c *Client) FindInstanceSizes(search string) (*InstanceSize, error) { - instanceSize, err := c.ListInstanceSizes() - if err != nil { - return nil, decodeError(err) - } - - exactMatch := false - partialMatchesCount := 0 - result := InstanceSize{} - - for _, value := range instanceSize { - if value.Name == search || value.ID == search { - exactMatch = true - result = value - } else if strings.Contains(value.Name, search) || strings.Contains(value.ID, search) { - if !exactMatch { - result = value - partialMatchesCount++ - } - } - } - - if exactMatch || partialMatchesCount == 1 { - return &result, nil - } else if partialMatchesCount > 1 { - err := fmt.Errorf("unable to find %s because there were multiple matches", search) - return nil, MultipleMatchesError.wrap(err) - } else { - err := fmt.Errorf("unable to find %s, zero matches", search) - return nil, ZeroMatchesError.wrap(err) - } -} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/loadbalancer.go b/cluster-autoscaler/vendor/github.com/civo/civogo/loadbalancer.go deleted file mode 100644 index fd5f8e3bcc98..000000000000 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/loadbalancer.go +++ /dev/null @@ -1,176 +0,0 @@ -package civogo - -import ( - "bytes" - "encoding/json" - "fmt" - "strings" -) - -// LoadBalancerBackend represents a backend instance being load-balanced -type LoadBalancerBackend struct { - IP string `json:"ip"` - Protocol string `json:"protocol,omitempty"` - SourcePort int32 `json:"source_port"` - TargetPort int32 `json:"target_port"` - HealthCheckPort int32 `json:"health_check_port,omitempty"` -} - -// LoadBalancerBackendConfig is the configuration for creating backends -type LoadBalancerBackendConfig struct { - IP string `json:"ip"` - Protocol string `json:"protocol,omitempty"` - SourcePort int32 `json:"source_port"` - TargetPort int32 `json:"target_port"` - HealthCheckPort int32 `json:"health_check_port,omitempty"` -} - -// LoadBalancer represents a load balancer configuration within Civo -type LoadBalancer struct { - ID string `json:"id"` - Name string `json:"name"` - Algorithm string `json:"algorithm"` - Backends []LoadBalancerBackend `json:"backends"` - ExternalTrafficPolicy string `json:"external_traffic_policy,omitempty"` - SessionAffinity string `json:"session_affinity,omitempty"` - SessionAffinityConfigTimeout int32 `json:"session_affinity_config_timeout,omitempty"` - EnableProxyProtocol string `json:"enable_proxy_protocol,omitempty"` - PublicIP string `json:"public_ip"` - PrivateIP string `json:"private_ip"` - FirewallID string `json:"firewall_id"` - ClusterID string `json:"cluster_id,omitempty"` - State string `json:"state"` -} - -// LoadBalancerConfig represents a load balancer to be created -type LoadBalancerConfig struct { - Region string `json:"region"` - Name string `json:"name"` - NetworkID string `json:"network_id,omitempty"` - Algorithm string `json:"algorithm,omitempty"` - Backends []LoadBalancerBackendConfig `json:"backends"` - ExternalTrafficPolicy string `json:"external_traffic_policy,omitempty"` - SessionAffinity string `json:"session_affinity,omitempty"` - SessionAffinityConfigTimeout int32 `json:"session_affinity_config_timeout,omitempty"` - EnableProxyProtocol string `json:"enable_proxy_protocol,omitempty"` - ClusterID string `json:"cluster_id,omitempty"` - FirewallID string `json:"firewall_id,omitempty"` - FirewallRules string `json:"firewall_rule,omitempty"` -} - -// LoadBalancerUpdateConfig represents a load balancer to be updated -type LoadBalancerUpdateConfig struct { - Region string `json:"region"` - Name string `json:"name,omitempty"` - Algorithm string `json:"algorithm,omitempty"` - Backends []LoadBalancerBackendConfig `json:"backends,omitempty"` - ExternalTrafficPolicy string `json:"external_traffic_policy,omitempty"` - SessionAffinity string `json:"session_affinity,omitempty"` - SessionAffinityConfigTimeout int32 `json:"session_affinity_config_timeout,omitempty"` - EnableProxyProtocol string `json:"enable_proxy_protocol,omitempty"` - FirewallID string `json:"firewall_id,omitempty"` -} - -// ListLoadBalancers returns all load balancers owned by the calling API account -func (c *Client) ListLoadBalancers() ([]LoadBalancer, error) { - resp, err := c.SendGetRequest("/v2/loadbalancers") - if err != nil { - return nil, decodeError(err) - } - - loadbalancer := make([]LoadBalancer, 0) - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&loadbalancer); err != nil { - return nil, decodeError(err) - } - - return loadbalancer, nil -} - -// GetLoadBalancer returns a load balancer -func (c *Client) GetLoadBalancer(id string) (*LoadBalancer, error) { - resp, err := c.SendGetRequest(fmt.Sprintf("/v2/loadbalancers/%s", id)) - if err != nil { - return nil, decodeError(err) - } - - loadbalancer := &LoadBalancer{} - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&loadbalancer); err != nil { - return nil, decodeError(err) - } - - return loadbalancer, nil -} - -// FindLoadBalancer finds a load balancer by either part of the ID or part of the name -func (c *Client) FindLoadBalancer(search string) (*LoadBalancer, error) { - lbs, err := c.ListLoadBalancers() - if err != nil { - return nil, decodeError(err) - } - - exactMatch := false - partialMatchesCount := 0 - result := LoadBalancer{} - - for _, value := range lbs { - if value.Name == search || value.ID == search { - exactMatch = true - result = value - } else if strings.Contains(value.Name, search) || strings.Contains(value.ID, search) { - if !exactMatch { - result = value - partialMatchesCount++ - } - } - } - - if exactMatch || partialMatchesCount == 1 { - return &result, nil - } else if partialMatchesCount > 1 { - err := fmt.Errorf("unable to find %s because there were multiple matches", search) - return nil, MultipleMatchesError.wrap(err) - } else { - err := fmt.Errorf("unable to find %s, zero matches", search) - return nil, ZeroMatchesError.wrap(err) - } -} - -// CreateLoadBalancer creates a new load balancer -func (c *Client) CreateLoadBalancer(r *LoadBalancerConfig) (*LoadBalancer, error) { - body, err := c.SendPostRequest("/v2/loadbalancers", r) - if err != nil { - return nil, decodeError(err) - } - - loadbalancer := &LoadBalancer{} - if err := json.NewDecoder(bytes.NewReader(body)).Decode(loadbalancer); err != nil { - return nil, err - } - - return loadbalancer, nil -} - -// UpdateLoadBalancer updates a load balancer -func (c *Client) UpdateLoadBalancer(id string, r *LoadBalancerUpdateConfig) (*LoadBalancer, error) { - body, err := c.SendPutRequest(fmt.Sprintf("/v2/loadbalancers/%s", id), r) - if err != nil { - return nil, decodeError(err) - } - - loadbalancer := &LoadBalancer{} - if err := json.NewDecoder(bytes.NewReader(body)).Decode(loadbalancer); err != nil { - return nil, err - } - - return loadbalancer, nil -} - -// DeleteLoadBalancer deletes a load balancer -func (c *Client) DeleteLoadBalancer(id string) (*SimpleResponse, error) { - resp, err := c.SendDeleteRequest(fmt.Sprintf("/v2/loadbalancers/%s", id)) - if err != nil { - return nil, decodeError(err) - } - - return c.DecodeSimpleResponse(resp) -} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/organisation.go b/cluster-autoscaler/vendor/github.com/civo/civogo/organisation.go deleted file mode 100644 index 729d5bf82ce8..000000000000 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/organisation.go +++ /dev/null @@ -1,115 +0,0 @@ -package civogo - -import ( - "bytes" - "encoding/json" - "time" -) - -// Organisation represents a group of accounts treated as a single entity -type Organisation struct { - ID string `json:"id"` - Name string `json:"name"` - Token string `json:"token"` - CreatedAt time.Time `json:"created_at,omitempty"` - UpdatedAt time.Time `json:"updated_at,omitempty"` -} - -// Account is the owner of Civo resources such as instances, Kubernetes clusters, volumes, etc -// Really the Account should be defined with Account endpoints, but there aren't any that are -// publicly-useful -type Account struct { - ID string `json:"id"` - CreatedAt time.Time `json:"created_at,omitempty"` - UpdatedAt time.Time `json:"updated_at,omitempty"` - Label string `json:"label,omitempty"` - EmailAddress string `json:"email_address,omitempty"` - APIKey string `json:"api_key,omitempty"` - Token string `json:"token,omitempty"` - Flags string `json:"flags,omitempty"` - Timezone string `json:"timezone,omitempty"` - Partner string `json:"partner,omitempty"` - DefaultUserID string `json:"default_user_id,omitempty"` - Status string `json:"status,omitempty"` - EmailConfirmed bool `json:"email_confirmed,omitempty"` - CreditCardAdded bool `json:"credit_card_added,omitempty"` - Enabled bool `json:"enabled,omitempty"` -} - -// GetOrganisation returns the organisation associated with the current account -func (c *Client) GetOrganisation() (*Organisation, error) { - resp, err := c.SendGetRequest("/v2/organisation") - if err != nil { - return nil, decodeError(err) - } - - organisation := &Organisation{} - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(organisation); err != nil { - return nil, err - } - - return organisation, nil -} - -// CreateOrganisation creates an organisation with the current account as the only linked member (errors if it's already linked) -func (c *Client) CreateOrganisation(name string) (*Organisation, error) { - data := map[string]string{"name": name} - resp, err := c.SendPostRequest("/v2/organisation", data) - if err != nil { - return nil, decodeError(err) - } - - organisation := &Organisation{} - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(organisation); err != nil { - return nil, err - } - - return organisation, nil -} - -// RenameOrganisation changes the human set name of the organisation (e.g. for re-branding efforts) -func (c *Client) RenameOrganisation(name string) (*Organisation, error) { - data := map[string]string{"name": name} - resp, err := c.SendPutRequest("/v2/organisation", data) - if err != nil { - return nil, decodeError(err) - } - - organisation := &Organisation{} - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(organisation); err != nil { - return nil, err - } - - return organisation, nil -} - -// AddAccountToOrganisation sets the link between second, third, etc accounts and the existing organisation -func (c *Client) AddAccountToOrganisation(organisationID, organisationToken string) ([]Account, error) { - data := map[string]string{"organisation_id": organisationID, "organisation_token": organisationToken} - resp, err := c.SendPostRequest("/v2/organisation/accounts", data) - if err != nil { - return nil, decodeError(err) - } - - accounts := make([]Account, 0) - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&accounts); err != nil { - return nil, err - } - - return accounts, nil -} - -// ListAccountsInOrganisation returns all the accounts in the current account's organisation -func (c *Client) ListAccountsInOrganisation() ([]Account, error) { - resp, err := c.SendGetRequest("/v2/organisation/accounts") - if err != nil { - return nil, decodeError(err) - } - - accounts := make([]Account, 0) - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&accounts); err != nil { - return nil, err - } - - return accounts, nil -} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/permission.go b/cluster-autoscaler/vendor/github.com/civo/civogo/permission.go deleted file mode 100644 index de23efb8a59d..000000000000 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/permission.go +++ /dev/null @@ -1,28 +0,0 @@ -package civogo - -import ( - "bytes" - "encoding/json" -) - -// Permission represents a permission and the description for it -type Permission struct { - Code string `json:"code"` - Name string `json:"name,omitempty"` - Description string `json:"description,omitempty"` -} - -// ListPermissions returns all permissions available to be assigned to team member -func (c *Client) ListPermissions() ([]Permission, error) { - resp, err := c.SendGetRequest("/v2/permissions") - if err != nil { - return nil, decodeError(err) - } - - permissions := make([]Permission, 0) - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&permissions); err != nil { - return nil, err - } - - return permissions, nil -} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/quota.go b/cluster-autoscaler/vendor/github.com/civo/civogo/quota.go deleted file mode 100644 index 965ced06db92..000000000000 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/quota.go +++ /dev/null @@ -1,54 +0,0 @@ -package civogo - -import ( - "bytes" - "encoding/json" -) - -// Quota represents the available limits and usage for an account's Civo quota -type Quota struct { - ID string `json:"id"` - DefaultUserID string `json:"default_user_id"` - DefaultUserEmailAddress string `json:"default_user_email_address"` - InstanceCountLimit int `json:"instance_count_limit"` - InstanceCountUsage int `json:"instance_count_usage"` - CPUCoreLimit int `json:"cpu_core_limit"` - CPUCoreUsage int `json:"cpu_core_usage"` - RAMMegabytesLimit int `json:"ram_mb_limit"` - RAMMegabytesUsage int `json:"ram_mb_usage"` - DiskGigabytesLimit int `json:"disk_gb_limit"` - DiskGigabytesUsage int `json:"disk_gb_usage"` - DiskVolumeCountLimit int `json:"disk_volume_count_limit"` - DiskVolumeCountUsage int `json:"disk_volume_count_usage"` - DiskSnapshotCountLimit int `json:"disk_snapshot_count_limit"` - DiskSnapshotCountUsage int `json:"disk_snapshot_count_usage"` - PublicIPAddressLimit int `json:"public_ip_address_limit"` - PublicIPAddressUsage int `json:"public_ip_address_usage"` - SubnetCountLimit int `json:"subnet_count_limit"` - SubnetCountUsage int `json:"subnet_count_usage"` - NetworkCountLimit int `json:"network_count_limit"` - NetworkCountUsage int `json:"network_count_usage"` - SecurityGroupLimit int `json:"security_group_limit"` - SecurityGroupUsage int `json:"security_group_usage"` - SecurityGroupRuleLimit int `json:"security_group_rule_limit"` - SecurityGroupRuleUsage int `json:"security_group_rule_usage"` - PortCountLimit int `json:"port_count_limit"` - PortCountUsage int `json:"port_count_usage"` - LoadBalancerCountLimit int `json:"loadbalancer_count_limit"` - LoadBalancerCountUsage int `json:"loadbalancer_count_usage"` -} - -// GetQuota returns all load balancers owned by the calling API account -func (c *Client) GetQuota() (*Quota, error) { - resp, err := c.SendGetRequest("/v2/quota") - if err != nil { - return nil, decodeError(err) - } - - var quota Quota - if err := json.NewDecoder(bytes.NewReader(resp)).Decode("a); err != nil { - return nil, err - } - - return "a, nil -} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/region.go b/cluster-autoscaler/vendor/github.com/civo/civogo/region.go deleted file mode 100644 index afb94a780319..000000000000 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/region.go +++ /dev/null @@ -1,96 +0,0 @@ -package civogo - -import ( - "bytes" - "encoding/json" - "errors" - "fmt" - "strings" -) - -// Region represents a geographical/DC region for Civo resources -type Region struct { - Code string `json:"code"` - Name string `json:"name"` - Type string `json:"type"` - OutOfCapacity bool `json:"out_of_capacity"` - Country string `json:"country"` - CountryName string `json:"country_name"` - Features Feature `json:"features"` - Default bool `json:"default"` -} - -// Feature represent a all feature inside a region -type Feature struct { - Iaas bool `json:"iaas"` - Kubernetes bool `json:"kubernetes"` -} - -// ListRegions returns all load balancers owned by the calling API account -func (c *Client) ListRegions() ([]Region, error) { - resp, err := c.SendGetRequest("/v2/regions") - if err != nil { - return nil, decodeError(err) - } - - regions := make([]Region, 0) - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(®ions); err != nil { - return nil, err - } - - return regions, nil -} - -// FindRegion is a function to find a region -func (c *Client) FindRegion(search string) (*Region, error) { - allregion, err := c.ListRegions() - if err != nil { - return nil, decodeError(err) - } - - exactMatch := false - partialMatchesCount := 0 - result := Region{} - search = strings.ToUpper(search) - - for _, value := range allregion { - name := strings.ToUpper(value.Name) - code := strings.ToUpper(value.Code) - - if name == search || code == search { - exactMatch = true - result = value - } else if strings.Contains(name, search) || strings.Contains(code, search) { - if !exactMatch { - result = value - partialMatchesCount++ - } - } - } - - if exactMatch || partialMatchesCount == 1 { - return &result, nil - } else if partialMatchesCount > 1 { - err := fmt.Errorf("unable to find %s because there were multiple matches", search) - return nil, MultipleMatchesError.wrap(err) - } else { - err := fmt.Errorf("unable to find %s, zero matches", search) - return nil, ZeroMatchesError.wrap(err) - } -} - -// GetDefaultRegion finds the default region for an account -func (c *Client) GetDefaultRegion() (*Region, error) { - allregion, err := c.ListRegions() - if err != nil { - return nil, decodeError(err) - } - - for _, region := range allregion { - if region.Default { - return ®ion, nil - } - } - - return nil, errors.New("no default region found") -} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/role.go b/cluster-autoscaler/vendor/github.com/civo/civogo/role.go deleted file mode 100644 index 185213464be7..000000000000 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/role.go +++ /dev/null @@ -1,58 +0,0 @@ -package civogo - -import ( - "bytes" - "encoding/json" - "time" -) - -// Role represents a set of permissions -type Role struct { - ID string `json:"id"` - Name string `json:"name,omitempty"` - Permissions string `json:"permissions,omitempty"` - BuiltIn bool `json:"built_in,omitempty"` - CreatedAt time.Time `json:"created_at,omitempty"` - UpdatedAt time.Time `json:"updated_at,omitempty"` -} - -// ListRoles returns all roles (built-in and user defined) -func (c *Client) ListRoles() ([]Role, error) { - resp, err := c.SendGetRequest("/v2/roles") - if err != nil { - return nil, decodeError(err) - } - - roles := make([]Role, 0) - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&roles); err != nil { - return nil, err - } - - return roles, nil -} - -// CreateRole creates a new role with a set of permissions for use within an organisation -func (c *Client) CreateRole(name, permissions string) (*Role, error) { - data := map[string]string{"name": name, "permissions": permissions} - resp, err := c.SendPostRequest("/v2/roles", data) - if err != nil { - return nil, decodeError(err) - } - - role := &Role{} - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(role); err != nil { - return nil, err - } - - return role, nil -} - -// DeleteRole removes a non-built-in role from an organisation -func (c *Client) DeleteRole(id string) (*SimpleResponse, error) { - resp, err := c.SendDeleteRequest("/v2/roles/" + id) - if err != nil { - return nil, decodeError(err) - } - - return c.DecodeSimpleResponse(resp) -} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/snapshot.go.disabled b/cluster-autoscaler/vendor/github.com/civo/civogo/snapshot.go.disabled deleted file mode 100644 index 230147c39819..000000000000 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/snapshot.go.disabled +++ /dev/null @@ -1,107 +0,0 @@ -package civogo - -import ( - "bytes" - "encoding/json" - "fmt" - "strings" - "time" -) - -// Snapshot is a backup of an instance -type Snapshot struct { - ID string `json:"id"` - InstanceID string `json:"instance_id"` - Hostname string `json:"hostname"` - Template string `json:"template_id"` - Region string `json:"region"` - Name string `json:"name"` - Safe int `json:"safe"` - SizeGigabytes int `json:"size_gb"` - State string `json:"state"` - Cron string `json:"cron_timing,omitempty"` - RequestedAt time.Time `json:"requested_at,omitempty"` - CompletedAt time.Time `json:"completed_at,omitempty"` -} - -// SnapshotConfig represents the options required for creating a new snapshot -type SnapshotConfig struct { - InstanceID string `json:"instance_id"` - Safe bool `json:"safe"` - Cron string `json:"cron_timing"` - Region string `json:"region"` -} - -// CreateSnapshot create a new or update an old snapshot -func (c *Client) CreateSnapshot(name string, r *SnapshotConfig) (*Snapshot, error) { - body, err := c.SendPutRequest(fmt.Sprintf("/v2/snapshots/%s", name), r) - if err != nil { - return nil, decodeError(err) - } - - var n = &Snapshot{} - if err := json.NewDecoder(bytes.NewReader(body)).Decode(n); err != nil { - return nil, err - } - - return n, nil -} - -// ListSnapshots returns a list of all snapshots within the current account -func (c *Client) ListSnapshots() ([]Snapshot, error) { - resp, err := c.SendGetRequest("/v2/snapshots") - if err != nil { - return nil, decodeError(err) - } - - snapshots := make([]Snapshot, 0) - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&snapshots); err != nil { - return nil, err - } - - return snapshots, nil -} - -// FindSnapshot finds a snapshot by either part of the ID or part of the name -func (c *Client) FindSnapshot(search string) (*Snapshot, error) { - snapshots, err := c.ListSnapshots() - if err != nil { - return nil, decodeError(err) - } - - exactMatch := false - partialMatchesCount := 0 - result := Snapshot{} - - for _, value := range snapshots { - if value.Name == search || value.ID == search { - exactMatch = true - result = value - } else if strings.Contains(value.Name, search) || strings.Contains(value.ID, search) { - if !exactMatch { - result = value - partialMatchesCount++ - } - } - } - - if exactMatch || partialMatchesCount == 1 { - return &result, nil - } else if partialMatchesCount > 1 { - err := fmt.Errorf("unable to find %s because there were multiple matches", search) - return nil, MultipleMatchesError.wrap(err) - } else { - err := fmt.Errorf("unable to find %s, zero matches", search) - return nil, ZeroMatchesError.wrap(err) - } -} - -// DeleteSnapshot deletes a snapshot -func (c *Client) DeleteSnapshot(name string) (*SimpleResponse, error) { - resp, err := c.SendDeleteRequest(fmt.Sprintf("/v2/snapshots/%s", name)) - if err != nil { - return nil, decodeError(err) - } - - return c.DecodeSimpleResponse(resp) -} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/snapshot_test.go.disabled b/cluster-autoscaler/vendor/github.com/civo/civogo/snapshot_test.go.disabled deleted file mode 100644 index b4540fd48a4a..000000000000 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/snapshot_test.go.disabled +++ /dev/null @@ -1,180 +0,0 @@ -package civogo - -import ( - "reflect" - "testing" -) - -func TestCreateSnapshot(t *testing.T) { - client, server, _ := NewClientForTesting(map[string]string{ - "/v2/snapshots/my-backup": `{ - "id": "0ca69adc-ff39-4fc1-8f08-d91434e86fac", - "instance_id": "44aab548-61ca-11e5-860e-5cf9389be614", - "hostname": "server1.prod.example.com", - "template_id": "0b213794-d795-4483-8982-9f249c0262b9", - "openstack_snapshot_id": null, - "region": "lon1", - "name": "my-backup", - "safe": 1, - "size_gb": 0, - "state": "new", - "cron_timing": null, - "requested_at": null, - "completed_at": null - }`, - }) - defer server.Close() - - cfg := &SnapshotConfig{ - InstanceID: "44aab548-61ca-11e5-860e-5cf9389be614", - Safe: true, - Cron: "", - } - got, err := client.CreateSnapshot("my-backup", cfg) - if err != nil { - t.Errorf("Request returned an error: %s", err) - return - } - - expected := &Snapshot{ - ID: "0ca69adc-ff39-4fc1-8f08-d91434e86fac", - InstanceID: "44aab548-61ca-11e5-860e-5cf9389be614", - Hostname: "server1.prod.example.com", - Template: "0b213794-d795-4483-8982-9f249c0262b9", - Region: "lon1", - Name: "my-backup", - Safe: 1, - SizeGigabytes: 0, - State: "new", - } - - if !reflect.DeepEqual(got, expected) { - t.Errorf("Expected %+v, got %+v", expected, got) - } -} - -func TestListSnapshots(t *testing.T) { - client, server, _ := NewClientForTesting(map[string]string{ - "/v2/snapshots": `[{ - "id": "0ca69adc-ff39-4fc1-8f08-d91434e86fac", - "instance_id": "44aab548-61ca-11e5-860e-5cf9389be614", - "hostname": "server1.prod.example.com", - "template_id": "0b213794-d795-4483-8982-9f249c0262b9", - "openstack_snapshot_id": null, - "region": "lon1", - "name": "my-backup", - "safe": 1, - "size_gb": 0, - "state": "new", - "cron_timing": null, - "requested_at": null, - "completed_at": null - }]`, - }) - defer server.Close() - got, err := client.ListSnapshots() - - if err != nil { - t.Errorf("Request returned an error: %s", err) - return - } - expected := []Snapshot{{ - ID: "0ca69adc-ff39-4fc1-8f08-d91434e86fac", - InstanceID: "44aab548-61ca-11e5-860e-5cf9389be614", - Hostname: "server1.prod.example.com", - Template: "0b213794-d795-4483-8982-9f249c0262b9", - Region: "lon1", - Name: "my-backup", - Safe: 1, - SizeGigabytes: 0, - State: "new", - }} - if !reflect.DeepEqual(got, expected) { - t.Errorf("Expected %+v, got %+v", expected, got) - } -} - -func TestFindSnapshot(t *testing.T) { - client, server, _ := NewClientForTesting(map[string]string{ - "/v2/snapshots": `[ - { - "id": "0ca69adc-ff39-4fc1-8f08-d91434e86fac", - "instance_id": "44aab548-61ca-11e5-860e-5cf9389be614", - "hostname": "server1.prod.example.com", - "template_id": "0b213794-d795-4483-8982-9f249c0262b9", - "openstack_snapshot_id": null, - "region": "lon1", - "name": "my-backup", - "safe": 1, - "size_gb": 0, - "state": "new", - "cron_timing": null, - "requested_at": null, - "completed_at": null - }, - { - "id": "aadec58e-26f4-43e7-8963-18739519ef76", - "instance_id": "44aab548-61ca-11e5-860e-5cf9389be614", - "hostname": "server1.prod.example.com", - "template_id": "0b213794-d795-4483-8982-9f249c0262b9", - "openstack_snapshot_id": null, - "region": "lon1", - "name": "other-backup", - "safe": 1, - "size_gb": 0, - "state": "new", - "cron_timing": null, - "requested_at": null, - "completed_at": null - } - ]`, - }) - defer server.Close() - - got, _ := client.FindSnapshot("ff39") - if got.ID != "0ca69adc-ff39-4fc1-8f08-d91434e86fac" { - t.Errorf("Expected %s, got %s", "0ca69adc-ff39-4fc1-8f08-d91434e86fac", got.ID) - } - - got, _ = client.FindSnapshot("26f4") - if got.ID != "aadec58e-26f4-43e7-8963-18739519ef76" { - t.Errorf("Expected %s, got %s", "aadec58e-26f4-43e7-8963-18739519ef76", got.ID) - } - - got, _ = client.FindSnapshot("my") - if got.ID != "0ca69adc-ff39-4fc1-8f08-d91434e86fac" { - t.Errorf("Expected %s, got %s", "0ca69adc-ff39-4fc1-8f08-d91434e86fac", got.ID) - } - - got, _ = client.FindSnapshot("other") - if got.ID != "aadec58e-26f4-43e7-8963-18739519ef76" { - t.Errorf("Expected %s, got %s", "aadec58e-26f4-43e7-8963-18739519ef76", got.ID) - } - - _, err := client.FindSnapshot("backup") - if err.Error() != "MultipleMatchesError: unable to find backup because there were multiple matches" { - t.Errorf("Expected %s, got %s", "unable to find backup because there were multiple matches", err.Error()) - } - - _, err = client.FindSnapshot("missing") - if err.Error() != "ZeroMatchesError: unable to find missing, zero matches" { - t.Errorf("Expected %s, got %s", "unable to find missing, zero matches", err.Error()) - } -} - -func TestDeleteSnapshot(t *testing.T) { - client, server, _ := NewClientForTesting(map[string]string{ - "/v2/snapshots/my-backup": `{"result": "success"}`, - }) - defer server.Close() - got, err := client.DeleteSnapshot("my-backup") - if err != nil { - t.Errorf("Request returned an error: %s", err) - return - } - - expected := &SimpleResponse{Result: "success"} - if !reflect.DeepEqual(got, expected) { - t.Errorf("Expected %+v, got %+v", expected, got) - } -} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/ssh_key.go b/cluster-autoscaler/vendor/github.com/civo/civogo/ssh_key.go deleted file mode 100644 index 826020428053..000000000000 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/ssh_key.go +++ /dev/null @@ -1,104 +0,0 @@ -package civogo - -import ( - "bytes" - "encoding/json" - "fmt" - "strings" -) - -// SSHKey represents an SSH public key, uploaded to access instances -type SSHKey struct { - ID string `json:"id"` - Name string `json:"name"` - Fingerprint string `json:"fingerprint"` -} - -// ListSSHKeys list all SSH key for an account -func (c *Client) ListSSHKeys() ([]SSHKey, error) { - resp, err := c.SendGetRequest("/v2/sshkeys") - if err != nil { - return nil, err - } - - sshKeys := make([]SSHKey, 0) - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&sshKeys); err != nil { - return nil, decodeError(err) - } - - return sshKeys, nil -} - -// NewSSHKey creates a new SSH key record -func (c *Client) NewSSHKey(name string, publicKey string) (*SimpleResponse, error) { - resp, err := c.SendPostRequest("/v2/sshkeys", map[string]string{ - "name": name, - "public_key": publicKey, - }) - if err != nil { - return nil, decodeError(err) - } - - return c.DecodeSimpleResponse(resp) -} - -// UpdateSSHKey update a SSH key record -func (c *Client) UpdateSSHKey(name string, sshKeyID string) (*SSHKey, error) { - resp, err := c.SendPutRequest(fmt.Sprintf("/v2/sshkeys/%s", sshKeyID), map[string]string{ - "name": name, - }) - if err != nil { - return nil, decodeError(err) - } - - result := &SSHKey{} - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(result); err != nil { - return nil, err - } - - return result, nil -} - -// FindSSHKey finds an SSH key by either part of the ID or part of the name -func (c *Client) FindSSHKey(search string) (*SSHKey, error) { - keys, err := c.ListSSHKeys() - if err != nil { - return nil, decodeError(err) - } - - exactMatch := false - partialMatchesCount := 0 - result := SSHKey{} - - for _, value := range keys { - if value.Name == search || value.ID == search { - exactMatch = true - result = value - } else if strings.Contains(value.Name, search) || strings.Contains(value.ID, search) { - if !exactMatch { - result = value - partialMatchesCount++ - } - } - } - - if exactMatch || partialMatchesCount == 1 { - return &result, nil - } else if partialMatchesCount > 1 { - err := fmt.Errorf("unable to find %s because there were multiple matches", search) - return nil, MultipleMatchesError.wrap(err) - } else { - err := fmt.Errorf("unable to find %s, zero matches", search) - return nil, ZeroMatchesError.wrap(err) - } -} - -// DeleteSSHKey deletes an SSH key -func (c *Client) DeleteSSHKey(id string) (*SimpleResponse, error) { - resp, err := c.SendDeleteRequest(fmt.Sprintf("/v2/sshkeys/%s", id)) - if err != nil { - return nil, decodeError(err) - } - - return c.DecodeSimpleResponse(resp) -} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/team.go b/cluster-autoscaler/vendor/github.com/civo/civogo/team.go deleted file mode 100644 index d2a49c6cd550..000000000000 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/team.go +++ /dev/null @@ -1,171 +0,0 @@ -package civogo - -import ( - "bytes" - "encoding/json" - "fmt" - "strings" - "time" -) - -// Team is a named group of users (has many members) -type Team struct { - ID string `json:"id"` - Name string `json:"name,omitempty"` - CreatedAt time.Time `json:"created_at,omitempty"` - UpdatedAt time.Time `json:"updated_at,omitempty"` -} - -// TeamMember is a link record between User and Team. -type TeamMember struct { - ID string `json:"id"` - TeamID string `json:"team_id,omitempty"` - UserID string `json:"user_id,omitempty"` - Permissions string `json:"permissions,omitempty"` - Roles string `json:"roles,omitempty"` - CreatedAt time.Time `json:"created_at,omitempty"` - UpdatedAt time.Time `json:"updated_at,omitempty"` -} - -// ListTeams returns all teams for the current account -func (c *Client) ListTeams() ([]Team, error) { - resp, err := c.SendGetRequest("/v2/teams") - if err != nil { - return nil, decodeError(err) - } - - teams := make([]Team, 0) - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&teams); err != nil { - return nil, err - } - - return teams, nil -} - -// CreateTeam creates a new team in the account -func (c *Client) CreateTeam(name string) (*Team, error) { - data := map[string]string{"name": name} - resp, err := c.SendPostRequest("/v2/teams", data) - if err != nil { - return nil, decodeError(err) - } - - team := &Team{} - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(team); err != nil { - return nil, err - } - - return team, nil -} - -//FindTeam finds a team by either part of the ID or part of the name -func (c *Client) FindTeam(search string) (*Team, error) { - teams, err := c.ListTeams() - if err != nil { - return nil, decodeError(err) - } - - exactMatch := false - partialMatchesCount := 0 - result := Team{} - - for _, value := range teams { - if value.Name == search || value.ID == search { - exactMatch = true - result = value - } else if strings.Contains(value.Name, search) || strings.Contains(value.ID, search) { - if !exactMatch { - result = value - partialMatchesCount++ - } - } - } - - if exactMatch || partialMatchesCount == 1 { - return &result, nil - } else if partialMatchesCount > 1 { - err := fmt.Errorf("unable to find %s team because there were multiple matches", search) - return nil, MultipleMatchesError.wrap(err) - } else { - err := fmt.Errorf("unable to find %s team, zero matches", search) - return nil, ZeroMatchesError.wrap(err) - } -} - -// RenameTeam changes the human set name for a team -func (c *Client) RenameTeam(teamID, name string) (*Team, error) { - data := map[string]string{"name": name} - resp, err := c.SendPutRequest("/v2/teams/"+teamID, data) - if err != nil { - return nil, decodeError(err) - } - - team := &Team{} - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(team); err != nil { - return nil, err - } - - return team, nil -} - -// DeleteTeam removes a team (and therefore all team member access) -func (c *Client) DeleteTeam(id string) (*SimpleResponse, error) { - resp, err := c.SendDeleteRequest("/v2/teams/" + id) - if err != nil { - return nil, decodeError(err) - } - - return c.DecodeSimpleResponse(resp) -} - -// ListTeamMembers returns a list of all team members (and their permissions) in the specified team -func (c *Client) ListTeamMembers(teamID string) ([]TeamMember, error) { - resp, err := c.SendGetRequest("/v2/teams/" + teamID + "/members") - if err != nil { - return nil, decodeError(err) - } - - teamMembers := make([]TeamMember, 0) - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&teamMembers); err != nil { - return nil, err - } - - return teamMembers, nil -} - -// AddTeamMember adds a team member to the specified team, with permissions and roles (which are combinative) -func (c *Client) AddTeamMember(teamID, userID, permissions, roles string) ([]TeamMember, error) { - data := map[string]string{"user_id": userID, "permissions": permissions, "roles": roles} - _, err := c.SendPostRequest("/v2/teams/"+teamID+"/members", data) - if err != nil { - return nil, decodeError(err) - } - - return c.ListTeamMembers(teamID) -} - -// UpdateTeamMember changes the permissions or roles for a specified team member -func (c *Client) UpdateTeamMember(teamID, teamMemberID, permissions, roles string) (*TeamMember, error) { - data := map[string]string{"permissions": permissions, "roles": roles} - resp, err := c.SendPostRequest("/v2/teams/"+teamID+"/members/"+teamMemberID, data) - if err != nil { - return nil, decodeError(err) - } - - teamMember := &TeamMember{} - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(teamMember); err != nil { - return nil, err - } - - return teamMember, nil -} - -// RemoveTeamMember removes the specified team member from the specified team -func (c *Client) RemoveTeamMember(teamID, teamMemberID string) (*SimpleResponse, error) { - resp, err := c.SendDeleteRequest("/v2/teams/" + teamID + "/members/" + teamMemberID) - if err != nil { - return nil, decodeError(err) - } - - return c.DecodeSimpleResponse(resp) -} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/template.go.disabled b/cluster-autoscaler/vendor/github.com/civo/civogo/template.go.disabled deleted file mode 100644 index 9a7f97e8670b..000000000000 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/template.go.disabled +++ /dev/null @@ -1,132 +0,0 @@ -package civogo - -import ( - "bytes" - "encoding/json" - "errors" - "fmt" - "strings" -) - -// Template represents a Template for launching instances from -type Template struct { - ID string `json:"id"` - Code string `json:"code"` - Name string `json:"name"` - Region string `json:"region"` - AccountID string `json:"account_id,omitempty"` - ImageID string `json:"image_id,omitempty"` - VolumeID string `json:"volume_id"` - ShortDescription string `json:"short_description"` - Description string `json:"description"` - DefaultUsername string `json:"default_username"` - CloudConfig string `json:"cloud_config"` -} - -// ListTemplates return all template in system -func (c *Client) ListTemplates() ([]Template, error) { - resp, err := c.SendGetRequest("/v2/templates") - if err != nil { - return nil, decodeError(err) - } - - templates := make([]Template, 0) - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&templates); err != nil { - return nil, err - } - - return templates, nil -} - -// NewTemplate will create a new template for the current user -func (c *Client) NewTemplate(conf *Template) (*SimpleResponse, error) { - if conf.ImageID == "" && conf.VolumeID == "" { - return nil, errors.New("if image id is not present, volume id must be") - } - - resp, err := c.SendPostRequest("/v2/templates", conf) - if err != nil { - return nil, decodeError(err) - } - - return c.DecodeSimpleResponse(resp) -} - -// UpdateTemplate will update a template for the current user -func (c *Client) UpdateTemplate(id string, conf *Template) (*Template, error) { - if conf.ImageID == "" && conf.VolumeID == "" { - return nil, errors.New("if image id is not present, volume id must be") - } - - resp, err := c.SendPutRequest(fmt.Sprintf("/v2/templates/%s", id), conf) - if err != nil { - return nil, decodeError(err) - } - - template := &Template{} - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(template); err != nil { - return nil, err - } - - return template, nil -} - -// GetTemplateByCode finds the Template for an account with the specified code -func (c *Client) GetTemplateByCode(code string) (*Template, error) { - resp, err := c.ListTemplates() - if err != nil { - return nil, decodeError(err) - } - - for _, template := range resp { - if template.Code == code { - return &template, nil - } - } - - return nil, errors.New("template not found") -} - -// FindTemplate finds a template by either part of the ID or part of the code -func (c *Client) FindTemplate(search string) (*Template, error) { - templateList, err := c.ListTemplates() - if err != nil { - return nil, decodeError(err) - } - - exactMatch := false - partialMatchesCount := 0 - result := Template{} - - for _, value := range templateList { - if value.Code == search || value.ID == search { - exactMatch = true - result = value - } else if strings.Contains(value.Code, search) || strings.Contains(value.ID, search) { - if !exactMatch { - result = value - partialMatchesCount++ - } - } - } - - if exactMatch || partialMatchesCount == 1 { - return &result, nil - } else if partialMatchesCount > 1 { - err := fmt.Errorf("unable to find %s because there were multiple matches", search) - return nil, MultipleMatchesError.wrap(err) - } else { - err := fmt.Errorf("unable to find %s, zero matches", search) - return nil, ZeroMatchesError.wrap(err) - } -} - -// DeleteTemplate deletes requested template -func (c *Client) DeleteTemplate(id string) (*SimpleResponse, error) { - resp, err := c.SendDeleteRequest(fmt.Sprintf("/v2/templates/%s", id)) - if err != nil { - return nil, decodeError(err) - } - - return c.DecodeSimpleResponse(resp) -} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/template_test.go.disabled b/cluster-autoscaler/vendor/github.com/civo/civogo/template_test.go.disabled deleted file mode 100644 index 2d04ce7c7ced..000000000000 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/template_test.go.disabled +++ /dev/null @@ -1,158 +0,0 @@ -package civogo - -import ( - "reflect" - "testing" -) - -func TestGetTemplateByCode(t *testing.T) { - client, server, _ := NewClientForTesting(map[string]string{ - "/v2/templates": `[{"id": "1", "code": "centos-7"},{"id": "2", "code": "ubuntu-18.04"}]`, - }) - defer server.Close() - - got, err := client.GetTemplateByCode("ubuntu-18.04") - if err != nil { - t.Errorf("Request returned an error: %s", err) - return - } - if got.ID != "2" { - t.Errorf("Expected %s, got %s", "12345", got.ID) - } -} - -func TestListTemplates(t *testing.T) { - client, server, _ := NewClientForTesting(map[string]string{ - "/v2/templates": `[{ - "id": "773aea72-d068-4cb7-8e08-28841acef0cb", - "code": "ubuntu-18.04", - "name": "Ubuntu 18.04", - "account_id": null, - "image_id": null, - "volume_id": "61c2cfe2-f7f3-46e7-b5c9-7b03ae25ea86", - "short_description": "Ubuntu 18.04", - "description": "The freely available Ubuntu 18.04 OS, minimally installed with just OpenSSH server", - "default_username": "ubuntu", - "cloud_config": "#cloud-config contents" - }]`, - }) - defer server.Close() - got, err := client.ListTemplates() - - if err != nil { - t.Errorf("Request returned an error: %s", err) - return - } - expected := []Template{ - { - ID: "773aea72-d068-4cb7-8e08-28841acef0cb", - Code: "ubuntu-18.04", - Name: "Ubuntu 18.04", - VolumeID: "61c2cfe2-f7f3-46e7-b5c9-7b03ae25ea86", - ShortDescription: "Ubuntu 18.04", - Description: "The freely available Ubuntu 18.04 OS, minimally installed with just OpenSSH server", - DefaultUsername: "ubuntu", - CloudConfig: "#cloud-config contents", - }, - } - if !reflect.DeepEqual(got, expected) { - t.Errorf("Expected %+v, got %+v", expected, got) - } - -} - -func TestNewTemplate(t *testing.T) { - client, server, _ := NewClientForTesting(map[string]string{ - "/v2/templates": `{ - "result": "success", - "id": "283d5ee6-fa9f-4e40-8e1a-bdc28812d593" - }`, - }) - defer server.Close() - - conf := &Template{ - Code: "test", - Name: "Test", - ImageID: "811a8dfb-8202-49ad-b1ef-1e6320b20497", - ShortDescription: "my custom", - Description: "my custom image from golang", - DefaultUsername: "root", - } - - got, err := client.NewTemplate(conf) - if err != nil { - t.Errorf("Request returned an error: %s", err) - return - } - - expected := &SimpleResponse{Result: "success", ID: "283d5ee6-fa9f-4e40-8e1a-bdc28812d593"} - if !reflect.DeepEqual(got, expected) { - t.Errorf("Expected %+v, got %+v", expected, got) - } - -} - -func TestUpdateTemplate(t *testing.T) { - client, server, _ := NewClientForTesting(map[string]string{ - "/v2/templates/283d5ee6-fa9f-4e40-8e1a-bdc28812d593": `{ - "id": "283d5ee6-fa9f-4e40-8e1a-bdc28812d593", - "code": "my-linux-1.0", - "name": "My Linux 1.0", - "account_id": null, - "image_id": "811a8dfb-8202-49ad-b1ef-1e6320b20497", - "volume_id": null, - "short_description": "...", - "description": "...", - "default_username": "Ubuntu", - "cloud_config": "..." - }`, - }) - defer server.Close() - - conf := &Template{ - Code: "my-linux-1.0", - Name: "My Linux 1.0", - ImageID: "811a8dfb-8202-49ad-b1ef-1e6320b20497", - ShortDescription: "...", - Description: "...", - DefaultUsername: "Ubuntu", - } - - got, err := client.UpdateTemplate("283d5ee6-fa9f-4e40-8e1a-bdc28812d593", conf) - if err != nil { - t.Errorf("Request returned an error: %s", err) - return - } - - expected := &Template{ - ID: "283d5ee6-fa9f-4e40-8e1a-bdc28812d593", - Code: "my-linux-1.0", - Name: "My Linux 1.0", - ImageID: "811a8dfb-8202-49ad-b1ef-1e6320b20497", - ShortDescription: "...", - Description: "...", - DefaultUsername: "Ubuntu", - CloudConfig: "...", - } - if !reflect.DeepEqual(got, expected) { - t.Errorf("Expected %+v, got %+v", expected, got) - } - -} - -func TestDeleteTemplate(t *testing.T) { - client, server, _ := NewClientForTesting(map[string]string{ - "/v2/templates/12346": `{"result": "success"}`, - }) - defer server.Close() - got, err := client.DeleteTemplate("12346") - if err != nil { - t.Errorf("Request returned an error: %s", err) - return - } - - expected := &SimpleResponse{Result: "success"} - if !reflect.DeepEqual(got, expected) { - t.Errorf("Expected %+v, got %+v", expected, got) - } -} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/user.go b/cluster-autoscaler/vendor/github.com/civo/civogo/user.go deleted file mode 100644 index 8412bae5621c..000000000000 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/user.go +++ /dev/null @@ -1,53 +0,0 @@ -package civogo - -import ( - "bytes" - "encoding/json" - "time" -) - -// User is the user struct -type User struct { - ID string `json:"id"` - FirstName string `json:"first_name"` - LastName string `json:"last_name"` - CreatedAt time.Time `json:"created_at"` - UpdatedAt time.Time `json:"updated_at"` - CompanyName string `json:"company_name"` - EmailAddress string `json:"email_address"` - Status string `json:"status"` - Flags string `json:"flags"` - Token string `json:"token"` - MarketingAllowed int `json:"marketing_allowed"` - DefaultAccountID string `json:"default_account_id"` - // DefaultAccountID string `json:"account_id"` - PasswordDigest string `json:"password_digest"` - Partner string `json:"partner"` - PartnerUserID string `json:"partner_user_id"` - ReferralID string `json:"referral_id"` - LastChosenRegion string `json:"last_chosen_region"` -} - -// UserEverything is the combination structure for all team related data for the current user and account -type UserEverything struct { - User User - Accounts []Account - Organisations []Organisation - Teams []Team - Roles []Role -} - -// GetUserEverything returns the organisation associated with the current account -func (c *Client) GetUserEverything(userID string) (*UserEverything, error) { - resp, err := c.SendGetRequest("/v2/users/" + userID + "/everything") - if err != nil { - return nil, decodeError(err) - } - - everything := &UserEverything{} - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(everything); err != nil { - return nil, err - } - - return everything, nil -} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/volume.go b/cluster-autoscaler/vendor/github.com/civo/civogo/volume.go deleted file mode 100644 index 78ea231e851e..000000000000 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/volume.go +++ /dev/null @@ -1,177 +0,0 @@ -package civogo - -import ( - "bytes" - "encoding/json" - "fmt" - "strings" - "time" -) - -// Volume is a block of attachable storage for our IAAS products -// https://www.civo.com/api/volumes -type Volume struct { - ID string `json:"id"` - Name string `json:"name"` - InstanceID string `json:"instance_id"` - ClusterID string `json:"cluster_id"` - NetworkID string `json:"network_id"` - MountPoint string `json:"mountpoint"` - Status string `json:"status"` - SizeGigabytes int `json:"size_gb"` - Bootable bool `json:"bootable"` - CreatedAt time.Time `json:"created_at"` -} - -// VolumeResult is the response from one of our simple API calls -type VolumeResult struct { - ID string `json:"id"` - Name string `json:"name"` - Result string `json:"result"` -} - -// VolumeConfig are the settings required to create a new Volume -type VolumeConfig struct { - Name string `json:"name"` - Namespace string `json:"namespace"` - ClusterID string `json:"cluster_id"` - NetworkID string `json:"network_id"` - Region string `json:"region"` - SizeGigabytes int `json:"size_gb"` - Bootable bool `json:"bootable"` -} - -// ListVolumes returns all volumes owned by the calling API account -// https://www.civo.com/api/volumes#list-volumes -func (c *Client) ListVolumes() ([]Volume, error) { - resp, err := c.SendGetRequest("/v2/volumes") - if err != nil { - return nil, decodeError(err) - } - - var volumes = make([]Volume, 0) - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&volumes); err != nil { - return nil, err - } - - return volumes, nil -} - -// GetVolume finds a volume by the full ID -func (c *Client) GetVolume(id string) (*Volume, error) { - resp, err := c.SendGetRequest(fmt.Sprintf("/v2/volumes/%s", id)) - if err != nil { - return nil, decodeError(err) - } - - var volume = Volume{} - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&volume); err != nil { - return nil, err - } - - return &volume, nil -} - -// FindVolume finds a volume by either part of the ID or part of the name -func (c *Client) FindVolume(search string) (*Volume, error) { - volumes, err := c.ListVolumes() - if err != nil { - return nil, decodeError(err) - } - - exactMatch := false - partialMatchesCount := 0 - result := Volume{} - - for _, value := range volumes { - if value.Name == search || value.ID == search { - exactMatch = true - result = value - } else if strings.Contains(value.Name, search) || strings.Contains(value.ID, search) { - if !exactMatch { - result = value - partialMatchesCount++ - } - } - } - - if exactMatch || partialMatchesCount == 1 { - return &result, nil - } else if partialMatchesCount > 1 { - err := fmt.Errorf("unable to find %s because there were multiple matches", search) - return nil, MultipleMatchesError.wrap(err) - } else { - err := fmt.Errorf("unable to find %s, zero matches", search) - return nil, ZeroMatchesError.wrap(err) - } -} - -// NewVolume creates a new volume -// https://www.civo.com/api/volumes#create-a-new-volume -func (c *Client) NewVolume(v *VolumeConfig) (*VolumeResult, error) { - body, err := c.SendPostRequest("/v2/volumes", v) - if err != nil { - return nil, decodeError(err) - } - - var result = &VolumeResult{} - if err := json.NewDecoder(bytes.NewReader(body)).Decode(result); err != nil { - return nil, err - } - - return result, nil -} - -// ResizeVolume resizes a volume -// https://www.civo.com/api/volumes#resizing-a-volume -func (c *Client) ResizeVolume(id string, size int) (*SimpleResponse, error) { - resp, err := c.SendPutRequest(fmt.Sprintf("/v2/volumes/%s/resize", id), map[string]int{ - "size_gb": size, - }) - if err != nil { - return nil, decodeError(err) - } - - response, err := c.DecodeSimpleResponse(resp) - return response, err -} - -// AttachVolume attaches a volume to an instance -// https://www.civo.com/api/volumes#attach-a-volume-to-an-instance -func (c *Client) AttachVolume(id string, instance string) (*SimpleResponse, error) { - resp, err := c.SendPutRequest(fmt.Sprintf("/v2/volumes/%s/attach", id), map[string]string{ - "instance_id": instance, - "region": c.Region, - }) - if err != nil { - return nil, decodeError(err) - } - - response, err := c.DecodeSimpleResponse(resp) - return response, err -} - -// DetachVolume attach volume from any instances -// https://www.civo.com/api/volumes#attach-a-volume-to-an-instance -func (c *Client) DetachVolume(id string) (*SimpleResponse, error) { - resp, err := c.SendPutRequest(fmt.Sprintf("/v2/volumes/%s/detach", id), map[string]string{ - "region": c.Region, - }) - if err != nil { - return nil, decodeError(err) - } - - response, err := c.DecodeSimpleResponse(resp) - return response, err -} - -// DeleteVolume deletes a volumes -// https://www.civo.com/api/volumes#deleting-a-volume -func (c *Client) DeleteVolume(id string) (*SimpleResponse, error) { - resp, err := c.SendDeleteRequest(fmt.Sprintf("/v2/volumes/%s", id)) - if err != nil { - return nil, decodeError(err) - } - - return c.DecodeSimpleResponse(resp) -} diff --git a/cluster-autoscaler/vendor/github.com/civo/civogo/webhook.go b/cluster-autoscaler/vendor/github.com/civo/civogo/webhook.go deleted file mode 100644 index 2a2b6070e103..000000000000 --- a/cluster-autoscaler/vendor/github.com/civo/civogo/webhook.go +++ /dev/null @@ -1,115 +0,0 @@ -package civogo - -import ( - "bytes" - "encoding/json" - "fmt" - "strings" -) - -// Webhook is a representation of a saved webhook callback from changes in Civo -type Webhook struct { - ID string `json:"id"` - Events []string `json:"events"` - URL string `json:"url"` - Secret string `json:"secret"` - Disabled bool `json:"disabled"` - Failures int `json:"failures"` - LasrFailureReason string `json:"last_failure_reason"` -} - -// WebhookConfig represents the options required for creating a new webhook -type WebhookConfig struct { - Events []string `json:"events"` - URL string `json:"url"` - Secret string `json:"secret"` -} - -// CreateWebhook creates a new webhook -func (c *Client) CreateWebhook(r *WebhookConfig) (*Webhook, error) { - body, err := c.SendPostRequest("/v2/webhooks", r) - if err != nil { - return nil, decodeError(err) - } - - var n = &Webhook{} - if err := json.NewDecoder(bytes.NewReader(body)).Decode(n); err != nil { - return nil, err - } - - return n, nil -} - -// ListWebhooks returns a list of all webhook within the current account -func (c *Client) ListWebhooks() ([]Webhook, error) { - resp, err := c.SendGetRequest("/v2/webhooks") - if err != nil { - return nil, decodeError(err) - } - - webhook := make([]Webhook, 0) - if err := json.NewDecoder(bytes.NewReader(resp)).Decode(&webhook); err != nil { - return nil, err - } - - return webhook, nil -} - -// FindWebhook finds a webhook by either part of the ID or part of the name -func (c *Client) FindWebhook(search string) (*Webhook, error) { - webhooks, err := c.ListWebhooks() - if err != nil { - return nil, decodeError(err) - } - - exactMatch := false - partialMatchesCount := 0 - result := Webhook{} - - for _, value := range webhooks { - if value.URL == search || value.ID == search { - exactMatch = true - result = value - } else if strings.Contains(value.URL, search) || strings.Contains(value.ID, search) { - if !exactMatch { - result = value - partialMatchesCount++ - } - } - } - - if exactMatch || partialMatchesCount == 1 { - return &result, nil - } else if partialMatchesCount > 1 { - err := fmt.Errorf("unable to find %s because there were multiple matches", search) - return nil, MultipleMatchesError.wrap(err) - } else { - err := fmt.Errorf("unable to find %s, zero matches", search) - return nil, ZeroMatchesError.wrap(err) - } -} - -// UpdateWebhook updates a webhook -func (c *Client) UpdateWebhook(id string, r *WebhookConfig) (*Webhook, error) { - body, err := c.SendPutRequest(fmt.Sprintf("/v2/webhooks/%s", id), r) - if err != nil { - return nil, decodeError(err) - } - - var n = &Webhook{} - if err := json.NewDecoder(bytes.NewReader(body)).Decode(n); err != nil { - return nil, err - } - - return n, nil -} - -// DeleteWebhook deletes a webhook -func (c *Client) DeleteWebhook(id string) (*SimpleResponse, error) { - resp, err := c.SendDeleteRequest(fmt.Sprintf("/v2/webhooks/%s", id)) - if err != nil { - return nil, decodeError(err) - } - - return c.DecodeSimpleResponse(resp) -} diff --git a/cluster-autoscaler/vendor/modules.txt b/cluster-autoscaler/vendor/modules.txt index 7d091da4198e..fe0a10608f9b 100644 --- a/cluster-autoscaler/vendor/modules.txt +++ b/cluster-autoscaler/vendor/modules.txt @@ -161,10 +161,6 @@ github.com/cilium/ebpf/internal github.com/cilium/ebpf/internal/btf github.com/cilium/ebpf/internal/unix github.com/cilium/ebpf/link -# github.com/civo/civogo v0.2.81 -## explicit -github.com/civo/civogo -github.com/civo/civogo/utils # github.com/clusterhq/flocker-go v0.0.0-20160920122132-2b8b7259d313 github.com/clusterhq/flocker-go # github.com/container-storage-interface/spec v1.5.0 From 8647a2f7422d34c3e83ececed1c779ff1487b3fd Mon Sep 17 00:00:00 2001 From: Vishal Anarse Date: Wed, 8 Jun 2022 19:08:46 +0530 Subject: [PATCH 11/11] Fix boilerplate header Signed-off-by: Vishal Anarse --- .../civo/civo-cloud-sdk-go/client.go | 16 ++++++++++++++++ .../civo/civo-cloud-sdk-go/disk_image.go | 16 ++++++++++++++++ .../civo/civo-cloud-sdk-go/errors.go | 16 ++++++++++++++++ .../civo/civo-cloud-sdk-go/instance.go | 16 ++++++++++++++++ .../civo/civo-cloud-sdk-go/kubernetes.go | 16 ++++++++++++++++ .../civo/civo-cloud-sdk-go/network.go | 16 ++++++++++++++++ .../cloudprovider/civo/civo-cloud-sdk-go/pool.go | 16 ++++++++++++++++ .../civo/civo-cloud-sdk-go/utils/random.go | 16 ++++++++++++++++ 8 files changed, 128 insertions(+) diff --git a/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/client.go b/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/client.go index dbba8a61de5e..0b67d950b1ed 100644 --- a/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/client.go +++ b/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/client.go @@ -1,3 +1,19 @@ +/* +Copyright 2022 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + package civocloud import ( diff --git a/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/disk_image.go b/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/disk_image.go index 57e95c0eaddd..894d67190272 100644 --- a/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/disk_image.go +++ b/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/disk_image.go @@ -1,3 +1,19 @@ +/* +Copyright 2022 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + package civocloud import ( diff --git a/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/errors.go b/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/errors.go index e72eff8776df..0bcd9553ef83 100644 --- a/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/errors.go +++ b/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/errors.go @@ -1,3 +1,19 @@ +/* +Copyright 2022 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + package civocloud import ( diff --git a/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/instance.go b/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/instance.go index 9c2a48a39e78..fe980d1ad490 100644 --- a/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/instance.go +++ b/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/instance.go @@ -1,3 +1,19 @@ +/* +Copyright 2022 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + package civocloud import ( diff --git a/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/kubernetes.go b/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/kubernetes.go index 9a48aa0acc43..fb13c8e1157c 100644 --- a/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/kubernetes.go +++ b/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/kubernetes.go @@ -1,3 +1,19 @@ +/* +Copyright 2022 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + package civocloud import ( diff --git a/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/network.go b/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/network.go index 51db64e51c8a..b67776a6a942 100644 --- a/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/network.go +++ b/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/network.go @@ -1,3 +1,19 @@ +/* +Copyright 2022 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + package civocloud import ( diff --git a/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/pool.go b/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/pool.go index 1a86b1ba8d34..39f17466356d 100644 --- a/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/pool.go +++ b/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/pool.go @@ -1,3 +1,19 @@ +/* +Copyright 2022 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + package civocloud import ( diff --git a/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/utils/random.go b/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/utils/random.go index f6f172c325f8..7e4f6deb8264 100644 --- a/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/utils/random.go +++ b/cluster-autoscaler/cloudprovider/civo/civo-cloud-sdk-go/utils/random.go @@ -1,3 +1,19 @@ +/* +Copyright 2022 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + package utils import (