Merge pull request #52983 from kubermatic/use-notimplemented-error

Automatic merge from submit-queue. If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>.

Use custom error for "unimplemented"

**What this PR does / why we need it**:
This introduces a new error type `NotImplemented` which is used in cloud-providers to tell that this functionality is not implemented.

Needed for https://github.com/kubernetes/kubernetes/pull/52645 to avoid doing a string comparison.
This commit is contained in:
Kubernetes Submit Queue 2017-09-29 01:05:50 -07:00 committed by GitHub
commit d58e322bdb
9 changed files with 18 additions and 22 deletions

View File

@ -176,6 +176,7 @@ type Routes interface {
var ( var (
InstanceNotFound = errors.New("instance not found") InstanceNotFound = errors.New("instance not found")
DiskNotFound = errors.New("disk is not found") DiskNotFound = errors.New("disk is not found")
NotImplemented = errors.New("unimplemented")
) )
// Zone represents the location of a particular machine. // Zone represents the location of a particular machine.

View File

@ -618,7 +618,7 @@ func newEc2Filter(name string, values ...string) *ec2.Filter {
// AddSSHKeyToAllInstances is currently not implemented. // AddSSHKeyToAllInstances is currently not implemented.
func (c *Cloud) AddSSHKeyToAllInstances(user string, keyData []byte) error { func (c *Cloud) AddSSHKeyToAllInstances(user string, keyData []byte) error {
return errors.New("unimplemented") return cloudprovider.NotImplemented
} }
// CurrentNodeName returns the name of the current node // CurrentNodeName returns the name of the current node
@ -1152,7 +1152,7 @@ func (c *Cloud) ExternalID(nodeName types.NodeName) (string, error) {
// InstanceExistsByProviderID returns true if the instance with the given provider id still exists and is running. // InstanceExistsByProviderID returns true if the instance with the given provider id still exists and is running.
// If false is returned with no error, the instance will be immediately deleted by the cloud controller manager. // If false is returned with no error, the instance will be immediately deleted by the cloud controller manager.
func (c *Cloud) InstanceExistsByProviderID(providerID string) (bool, error) { func (c *Cloud) InstanceExistsByProviderID(providerID string) (bool, error) {
return false, errors.New("unimplemented") return false, cloudprovider.NotImplemented
} }
// InstanceID returns the cloud provider ID of the node with the specified nodeName. // InstanceID returns the cloud provider ID of the node with the specified nodeName.

View File

@ -17,7 +17,6 @@ limitations under the License.
package azure package azure
import ( import (
"errors"
"fmt" "fmt"
"k8s.io/api/core/v1" "k8s.io/api/core/v1"
@ -90,7 +89,7 @@ func (az *Cloud) ExternalID(name types.NodeName) (string, error) {
// InstanceExistsByProviderID returns true if the instance with the given provider id still exists and is running. // InstanceExistsByProviderID returns true if the instance with the given provider id still exists and is running.
// If false is returned with no error, the instance will be immediately deleted by the cloud controller manager. // If false is returned with no error, the instance will be immediately deleted by the cloud controller manager.
func (az *Cloud) InstanceExistsByProviderID(providerID string) (bool, error) { func (az *Cloud) InstanceExistsByProviderID(providerID string) (bool, error) {
return false, errors.New("unimplemented") return false, cloudprovider.NotImplemented
} }
func (az *Cloud) isCurrentInstance(name types.NodeName) (bool, error) { func (az *Cloud) isCurrentInstance(name types.NodeName) (bool, error) {

View File

@ -17,7 +17,6 @@ limitations under the License.
package fake package fake
import ( import (
"errors"
"fmt" "fmt"
"net" "net"
"regexp" "regexp"
@ -191,7 +190,7 @@ func (f *FakeCloud) EnsureLoadBalancerDeleted(clusterName string, service *v1.Se
} }
func (f *FakeCloud) AddSSHKeyToAllInstances(user string, keyData []byte) error { func (f *FakeCloud) AddSSHKeyToAllInstances(user string, keyData []byte) error {
return errors.New("unimplemented") return cloudprovider.NotImplemented
} }
// Implementation of Instances.CurrentNodeName // Implementation of Instances.CurrentNodeName

View File

@ -17,7 +17,6 @@ limitations under the License.
package gce package gce
import ( import (
"errors"
"fmt" "fmt"
"net" "net"
"net/http" "net/http"
@ -157,7 +156,7 @@ func (gce *GCECloud) ExternalID(nodeName types.NodeName) (string, error) {
// InstanceExistsByProviderID returns true if the instance with the given provider id still exists and is running. // InstanceExistsByProviderID returns true if the instance with the given provider id still exists and is running.
// If false is returned with no error, the instance will be immediately deleted by the cloud controller manager. // If false is returned with no error, the instance will be immediately deleted by the cloud controller manager.
func (gce *GCECloud) InstanceExistsByProviderID(providerID string) (bool, error) { func (gce *GCECloud) InstanceExistsByProviderID(providerID string) (bool, error) {
return false, errors.New("unimplemented") return false, cloudprovider.NotImplemented
} }
// InstanceID returns the cloud provider ID of the node with the specified NodeName. // InstanceID returns the cloud provider ID of the node with the specified NodeName.

View File

@ -17,7 +17,6 @@ limitations under the License.
package openstack package openstack
import ( import (
"errors"
"fmt" "fmt"
"regexp" "regexp"
@ -63,7 +62,7 @@ func (i *Instances) CurrentNodeName(hostname string) (types.NodeName, error) {
} }
func (i *Instances) AddSSHKeyToAllInstances(user string, keyData []byte) error { func (i *Instances) AddSSHKeyToAllInstances(user string, keyData []byte) error {
return errors.New("unimplemented") return cloudprovider.NotImplemented
} }
func (i *Instances) NodeAddresses(name types.NodeName) ([]v1.NodeAddress, error) { func (i *Instances) NodeAddresses(name types.NodeName) ([]v1.NodeAddress, error) {
@ -117,7 +116,7 @@ func (i *Instances) ExternalID(name types.NodeName) (string, error) {
// InstanceExistsByProviderID returns true if the instance with the given provider id still exists and is running. // InstanceExistsByProviderID returns true if the instance with the given provider id still exists and is running.
// If false is returned with no error, the instance will be immediately deleted by the cloud controller manager. // If false is returned with no error, the instance will be immediately deleted by the cloud controller manager.
func (i *Instances) InstanceExistsByProviderID(providerID string) (bool, error) { func (i *Instances) InstanceExistsByProviderID(providerID string) (bool, error) {
return false, errors.New("unimplemented") return false, cloudprovider.NotImplemented
} }
// InstanceID returns the kubelet's cloud provider ID. // InstanceID returns the kubelet's cloud provider ID.

View File

@ -18,7 +18,6 @@ package ovirt
import ( import (
"encoding/xml" "encoding/xml"
"errors"
"fmt" "fmt"
"io" "io"
"io/ioutil" "io/ioutil"
@ -192,7 +191,7 @@ func (v *OVirtCloud) NodeAddresses(nodeName types.NodeName) ([]v1.NodeAddress, e
// This method will not be called from the node that is requesting this ID. i.e. metadata service // This method will not be called from the node that is requesting this ID. i.e. metadata service
// and other local methods cannot be used here // and other local methods cannot be used here
func (v *OVirtCloud) NodeAddressesByProviderID(providerID string) ([]v1.NodeAddress, error) { func (v *OVirtCloud) NodeAddressesByProviderID(providerID string) ([]v1.NodeAddress, error) {
return []v1.NodeAddress{}, errors.New("unimplemented") return []v1.NodeAddress{}, cloudprovider.NotImplemented
} }
// mapNodeNameToInstanceName maps from a k8s NodeName to an ovirt instance name (the hostname) // mapNodeNameToInstanceName maps from a k8s NodeName to an ovirt instance name (the hostname)
@ -214,7 +213,7 @@ func (v *OVirtCloud) ExternalID(nodeName types.NodeName) (string, error) {
// InstanceExistsByProviderID returns true if the instance with the given provider id still exists and is running. // InstanceExistsByProviderID returns true if the instance with the given provider id still exists and is running.
// If false is returned with no error, the instance will be immediately deleted by the cloud controller manager. // If false is returned with no error, the instance will be immediately deleted by the cloud controller manager.
func (v *OVirtCloud) InstanceExistsByProviderID(providerID string) (bool, error) { func (v *OVirtCloud) InstanceExistsByProviderID(providerID string) (bool, error) {
return false, errors.New("unimplemented") return false, cloudprovider.NotImplemented
} }
// InstanceID returns the cloud provider ID of the node with the specified NodeName. // InstanceID returns the cloud provider ID of the node with the specified NodeName.
@ -233,7 +232,7 @@ func (v *OVirtCloud) InstanceID(nodeName types.NodeName) (string, error) {
// This method will not be called from the node that is requesting this ID. i.e. metadata service // This method will not be called from the node that is requesting this ID. i.e. metadata service
// and other local methods cannot be used here // and other local methods cannot be used here
func (v *OVirtCloud) InstanceTypeByProviderID(providerID string) (string, error) { func (v *OVirtCloud) InstanceTypeByProviderID(providerID string) (string, error) {
return "", errors.New("unimplemented") return "", cloudprovider.NotImplemented
} }
// InstanceType returns the type of the specified instance. // InstanceType returns the type of the specified instance.
@ -321,5 +320,5 @@ func (v *OVirtCloud) CurrentNodeName(hostname string) (types.NodeName, error) {
} }
func (v *OVirtCloud) AddSSHKeyToAllInstances(user string, keyData []byte) error { func (v *OVirtCloud) AddSSHKeyToAllInstances(user string, keyData []byte) error {
return errors.New("unimplemented") return cloudprovider.NotImplemented
} }

View File

@ -421,11 +421,11 @@ func (pc *PCCloud) NodeAddresses(nodeName k8stypes.NodeName) ([]v1.NodeAddress,
// This method will not be called from the node that is requesting this ID. i.e. metadata service // This method will not be called from the node that is requesting this ID. i.e. metadata service
// and other local methods cannot be used here // and other local methods cannot be used here
func (pc *PCCloud) NodeAddressesByProviderID(providerID string) ([]v1.NodeAddress, error) { func (pc *PCCloud) NodeAddressesByProviderID(providerID string) ([]v1.NodeAddress, error) {
return []v1.NodeAddress{}, errors.New("unimplemented") return []v1.NodeAddress{}, cloudprovider.NotImplemented
} }
func (pc *PCCloud) AddSSHKeyToAllInstances(user string, keyData []byte) error { func (pc *PCCloud) AddSSHKeyToAllInstances(user string, keyData []byte) error {
return errors.New("unimplemented") return cloudprovider.NotImplemented
} }
func (pc *PCCloud) CurrentNodeName(hostname string) (k8stypes.NodeName, error) { func (pc *PCCloud) CurrentNodeName(hostname string) (k8stypes.NodeName, error) {
@ -473,7 +473,7 @@ func (pc *PCCloud) ExternalID(nodeName k8stypes.NodeName) (string, error) {
// InstanceExistsByProviderID returns true if the instance with the given provider id still exists and is running. // InstanceExistsByProviderID returns true if the instance with the given provider id still exists and is running.
// If false is returned with no error, the instance will be immediately deleted by the cloud controller manager. // If false is returned with no error, the instance will be immediately deleted by the cloud controller manager.
func (pc *PCCloud) InstanceExistsByProviderID(providerID string) (bool, error) { func (pc *PCCloud) InstanceExistsByProviderID(providerID string) (bool, error) {
return false, errors.New("unimplemented") return false, cloudprovider.NotImplemented
} }
// InstanceID returns the cloud provider ID of the specified instance. // InstanceID returns the cloud provider ID of the specified instance.
@ -497,7 +497,7 @@ func (pc *PCCloud) InstanceID(nodeName k8stypes.NodeName) (string, error) {
// This method will not be called from the node that is requesting this ID. i.e. metadata service // This method will not be called from the node that is requesting this ID. i.e. metadata service
// and other local methods cannot be used here // and other local methods cannot be used here
func (pc *PCCloud) InstanceTypeByProviderID(providerID string) (string, error) { func (pc *PCCloud) InstanceTypeByProviderID(providerID string) (string, error) {
return "", errors.New("unimplemented") return "", cloudprovider.NotImplemented
} }
func (pc *PCCloud) InstanceType(nodeName k8stypes.NodeName) (string, error) { func (pc *PCCloud) InstanceType(nodeName k8stypes.NodeName) (string, error) {

View File

@ -354,7 +354,7 @@ func (vs *VSphere) NodeAddressesByProviderID(providerID string) ([]v1.NodeAddres
// AddSSHKeyToAllInstances add SSH key to all instances // AddSSHKeyToAllInstances add SSH key to all instances
func (vs *VSphere) AddSSHKeyToAllInstances(user string, keyData []byte) error { func (vs *VSphere) AddSSHKeyToAllInstances(user string, keyData []byte) error {
return errors.New("unimplemented") return cloudprovider.NotImplemented
} }
// CurrentNodeName gives the current node name // CurrentNodeName gives the current node name
@ -380,7 +380,7 @@ func (vs *VSphere) ExternalID(nodeName k8stypes.NodeName) (string, error) {
// InstanceExistsByProviderID returns true if the instance with the given provider id still exists and is running. // InstanceExistsByProviderID returns true if the instance with the given provider id still exists and is running.
// If false is returned with no error, the instance will be immediately deleted by the cloud controller manager. // If false is returned with no error, the instance will be immediately deleted by the cloud controller manager.
func (vs *VSphere) InstanceExistsByProviderID(providerID string) (bool, error) { func (vs *VSphere) InstanceExistsByProviderID(providerID string) (bool, error) {
return false, errors.New("unimplemented") return false, cloudprovider.NotImplemented
} }
// InstanceID returns the cloud provider ID of the node with the specified Name. // InstanceID returns the cloud provider ID of the node with the specified Name.