diff --git a/libnetwork/controller.go b/libnetwork/controller.go index 331c7f8e1b..d54d13340a 100644 --- a/libnetwork/controller.go +++ b/libnetwork/controller.go @@ -845,7 +845,7 @@ func (c *Controller) NetworkByID(id string) (*Network, error) { // NewSandbox creates a new sandbox for containerID. func (c *Controller) NewSandbox(containerID string, options ...SandboxOption) (*Sandbox, error) { if containerID == "" { - return nil, types.BadRequestErrorf("invalid container ID") + return nil, types.InvalidParameterErrorf("invalid container ID") } var sb *Sandbox @@ -1105,7 +1105,7 @@ func (c *Controller) getIPAMDriver(name string) (ipamapi.Ipam, *ipamapi.Capabili // Now that we resolved the plugin, try again looking up the registry id, cap = c.ipamRegistry.IPAM(name) if id == nil { - return nil, nil, types.BadRequestErrorf("invalid ipam driver: %q", name) + return nil, nil, types.InvalidParameterErrorf("invalid ipam driver: %q", name) } } diff --git a/libnetwork/datastore/datastore.go b/libnetwork/datastore/datastore.go index baa024b8b4..b25c9fc937 100644 --- a/libnetwork/datastore/datastore.go +++ b/libnetwork/datastore/datastore.go @@ -221,13 +221,13 @@ func (ds *Store) PutObjectAtomic(kvObject KVObject) error { defer ds.mu.Unlock() if kvObject == nil { - return types.BadRequestErrorf("invalid KV Object : nil") + return types.InvalidParameterErrorf("invalid KV Object : nil") } kvObjValue := kvObject.Value() if kvObjValue == nil { - return types.BadRequestErrorf("invalid KV Object with a nil Value for key %s", Key(kvObject.Key()...)) + return types.InvalidParameterErrorf("invalid KV Object with a nil Value for key %s", Key(kvObject.Key()...)) } if kvObject.Skip() { @@ -375,7 +375,7 @@ func (ds *Store) DeleteObjectAtomic(kvObject KVObject) error { defer ds.mu.Unlock() if kvObject == nil { - return types.BadRequestErrorf("invalid KV Object : nil") + return types.InvalidParameterErrorf("invalid KV Object : nil") } previous := &store.KVPair{Key: Key(kvObject.Key()...), LastIndex: kvObject.Index()} diff --git a/libnetwork/datastore/mockstore_test.go b/libnetwork/datastore/mockstore_test.go index 39db246ed8..6570e0d7bd 100644 --- a/libnetwork/datastore/mockstore_test.go +++ b/libnetwork/datastore/mockstore_test.go @@ -62,14 +62,14 @@ func (s *MockStore) AtomicPut(key string, newValue []byte, previous *store.KVPai if previous == nil { if mData != nil { - return nil, types.BadRequestErrorf("atomic put failed because key exists") + return nil, types.InvalidParameterErrorf("atomic put failed because key exists") } // Else OK. } else { if mData == nil { - return nil, types.BadRequestErrorf("atomic put failed because key exists") + return nil, types.InvalidParameterErrorf("atomic put failed because key exists") } if mData != nil && mData.Index != previous.LastIndex { - return nil, types.BadRequestErrorf("atomic put failed due to mismatched Index") + return nil, types.InvalidParameterErrorf("atomic put failed due to mismatched Index") } // Else OK. } if err := s.Put(key, newValue); err != nil { @@ -83,7 +83,7 @@ func (s *MockStore) AtomicPut(key string, newValue []byte, previous *store.KVPai func (s *MockStore) AtomicDelete(key string, previous *store.KVPair) error { mData := s.db[key] if mData != nil && mData.Index != previous.LastIndex { - return types.BadRequestErrorf("atomic delete failed due to mismatched Index") + return types.InvalidParameterErrorf("atomic delete failed due to mismatched Index") } delete(s.db, key) return nil diff --git a/libnetwork/driverapi/ipamdata.go b/libnetwork/driverapi/ipamdata.go index 5d47122e2f..c7ce4e309a 100644 --- a/libnetwork/driverapi/ipamdata.go +++ b/libnetwork/driverapi/ipamdata.go @@ -68,26 +68,26 @@ func (i *IPAMData) UnmarshalJSON(data []byte) error { func (i *IPAMData) Validate() error { var isV6 bool if i.Pool == nil { - return types.BadRequestErrorf("invalid pool") + return types.InvalidParameterErrorf("invalid pool") } if i.Gateway == nil { - return types.BadRequestErrorf("invalid gateway address") + return types.InvalidParameterErrorf("invalid gateway address") } isV6 = i.IsV6() if isV6 && i.Gateway.IP.To4() != nil || !isV6 && i.Gateway.IP.To4() == nil { - return types.BadRequestErrorf("incongruent ip versions for pool and gateway") + return types.InvalidParameterErrorf("incongruent ip versions for pool and gateway") } for k, sip := range i.AuxAddresses { if isV6 && sip.IP.To4() != nil || !isV6 && sip.IP.To4() == nil { - return types.BadRequestErrorf("incongruent ip versions for pool and secondary ip address %s", k) + return types.InvalidParameterErrorf("incongruent ip versions for pool and secondary ip address %s", k) } } if !i.Pool.Contains(i.Gateway.IP) { - return types.BadRequestErrorf("invalid gateway address (%s) does not belong to the pool (%s)", i.Gateway, i.Pool) + return types.InvalidParameterErrorf("invalid gateway address (%s) does not belong to the pool (%s)", i.Gateway, i.Pool) } for k, sip := range i.AuxAddresses { if !i.Pool.Contains(sip.IP) { - return types.BadRequestErrorf("invalid secondary address %s (%s) does not belong to the pool (%s)", k, i.Gateway, i.Pool) + return types.InvalidParameterErrorf("invalid secondary address %s (%s) does not belong to the pool (%s)", k, i.Gateway, i.Pool) } } return nil diff --git a/libnetwork/drivers/bridge/bridge_linux.go b/libnetwork/drivers/bridge/bridge_linux.go index 94aaae4f94..b786648834 100644 --- a/libnetwork/drivers/bridge/bridge_linux.go +++ b/libnetwork/drivers/bridge/bridge_linux.go @@ -277,7 +277,7 @@ func (c *networkConfiguration) fromLabels(labels map[string]string) error { } func parseErr(label, value, errString string) error { - return types.BadRequestErrorf("failed to parse %s value: %v (%s)", label, value, errString) + return types.InvalidParameterErrorf("failed to parse %s value: %v (%s)", label, value, errString) } func (n *bridgeNetwork) registerIptCleanFunc(clean iptableCleanFunc) { @@ -289,7 +289,7 @@ func (n *bridgeNetwork) getDriverChains(version iptables.IPVersion) (*iptables.C defer n.Unlock() if n.driver == nil { - return nil, nil, nil, nil, types.BadRequestErrorf("no driver found") + return nil, nil, nil, nil, types.InvalidParameterErrorf("no driver found") } if version == iptables.IPv6 { @@ -445,7 +445,7 @@ func (d *driver) getNetwork(id string) (*bridgeNetwork, error) { defer d.Unlock() if id == "" { - return nil, types.BadRequestErrorf("invalid network id: %s", id) + return nil, types.InvalidParameterErrorf("invalid network id: %s", id) } if nw, ok := d.networks[id]; ok { @@ -476,7 +476,7 @@ func parseNetworkGenericOptions(data interface{}) (*networkConfiguration, error) config = opaqueConfig.(*networkConfiguration) } default: - err = types.BadRequestErrorf("do not recognize network configuration format: %T", opt) + err = types.InvalidParameterErrorf("do not recognize network configuration format: %T", opt) } return config, err @@ -488,7 +488,7 @@ func (c *networkConfiguration) processIPAM(id string, ipamV4Data, ipamV6Data []d } if len(ipamV4Data) == 0 { - return types.BadRequestErrorf("bridge network %s requires ipv4 configuration", id) + return types.InvalidParameterErrorf("bridge network %s requires ipv4 configuration", id) } if ipamV4Data[0].Gateway != nil { @@ -592,7 +592,7 @@ func (d *driver) DecodeTableEntry(tablename string, key string, value []byte) (s // Create a new network using bridge plugin func (d *driver) CreateNetwork(id string, option map[string]interface{}, nInfo driverapi.NetworkInfo, ipV4Data, ipV6Data []driverapi.IPAMData) error { if len(ipV4Data) == 0 || ipV4Data[0].Pool.String() == "0.0.0.0/0" { - return types.BadRequestErrorf("ipv4 pool is empty") + return types.InvalidParameterErrorf("ipv4 pool is empty") } // Sanity checks d.Lock() @@ -1479,7 +1479,7 @@ func parseConnectivityOptions(cOptions map[string]interface{}) (*connectivityCon if pb, ok := opt.([]types.PortBinding); ok { cc.PortBindings = pb } else { - return nil, types.BadRequestErrorf("Invalid port mapping data in connectivity configuration: %v", opt) + return nil, types.InvalidParameterErrorf("Invalid port mapping data in connectivity configuration: %v", opt) } } @@ -1487,7 +1487,7 @@ func parseConnectivityOptions(cOptions map[string]interface{}) (*connectivityCon if ports, ok := opt.([]types.TransportPort); ok { cc.ExposedPorts = ports } else { - return nil, types.BadRequestErrorf("Invalid exposed ports data in connectivity configuration: %v", opt) + return nil, types.InvalidParameterErrorf("Invalid exposed ports data in connectivity configuration: %v", opt) } } diff --git a/libnetwork/drivers/bridge/bridge_linux_test.go b/libnetwork/drivers/bridge/bridge_linux_test.go index 6277ee1ab7..dde9d7bf2e 100644 --- a/libnetwork/drivers/bridge/bridge_linux_test.go +++ b/libnetwork/drivers/bridge/bridge_linux_test.go @@ -574,7 +574,7 @@ func (i *testInterface) SetMacAddress(mac net.HardwareAddr) error { return types.ForbiddenErrorf("endpoint interface MAC address present (%s). Cannot be modified with %s.", i.mac, mac) } if mac == nil { - return types.BadRequestErrorf("tried to set nil MAC address to endpoint interface") + return types.InvalidParameterErrorf("tried to set nil MAC address to endpoint interface") } i.mac = types.GetMacCopy(mac) return nil @@ -582,7 +582,7 @@ func (i *testInterface) SetMacAddress(mac net.HardwareAddr) error { func (i *testInterface) SetIPAddress(address *net.IPNet) error { if address.IP == nil { - return types.BadRequestErrorf("tried to set nil IP address to endpoint interface") + return types.InvalidParameterErrorf("tried to set nil IP address to endpoint interface") } if address.IP.To4() == nil { return setAddress(&i.addrv6, address) diff --git a/libnetwork/drivers/bridge/errors.go b/libnetwork/drivers/bridge/errors.go index 1357ce55e0..ad72900c12 100644 --- a/libnetwork/drivers/bridge/errors.go +++ b/libnetwork/drivers/bridge/errors.go @@ -41,8 +41,8 @@ func (eiec *ErrInvalidEndpointConfig) Error() string { return "trying to create an endpoint with an invalid endpoint configuration" } -// BadRequest denotes the type of this error -func (eiec *ErrInvalidEndpointConfig) BadRequest() {} +// InvalidParameter denotes the type of this error +func (eiec *ErrInvalidEndpointConfig) InvalidParameter() {} // ErrNetworkExists error is returned when a network already exists and another network is created. type ErrNetworkExists struct{} @@ -81,8 +81,8 @@ func (eig *ErrInvalidGateway) Error() string { return "default gateway ip must be part of the network" } -// BadRequest denotes the type of this error -func (eig *ErrInvalidGateway) BadRequest() {} +// InvalidParameter denotes the type of this error +func (eig *ErrInvalidGateway) InvalidParameter() {} // ErrInvalidContainerSubnet is returned when the container subnet (FixedCIDR) is not valid. type ErrInvalidContainerSubnet struct{} @@ -91,8 +91,8 @@ func (eis *ErrInvalidContainerSubnet) Error() string { return "container subnet must be a subset of bridge network" } -// BadRequest denotes the type of this error -func (eis *ErrInvalidContainerSubnet) BadRequest() {} +// InvalidParameter denotes the type of this error +func (eis *ErrInvalidContainerSubnet) InvalidParameter() {} // ErrInvalidMtu is returned when the user provided MTU is not valid. type ErrInvalidMtu int @@ -101,8 +101,8 @@ func (eim ErrInvalidMtu) Error() string { return fmt.Sprintf("invalid MTU number: %d", int(eim)) } -// BadRequest denotes the type of this error -func (eim ErrInvalidMtu) BadRequest() {} +// InvalidParameter denotes the type of this error +func (eim ErrInvalidMtu) InvalidParameter() {} // ErrUnsupportedAddressType is returned when the specified address type is not supported. type ErrUnsupportedAddressType string @@ -111,8 +111,8 @@ func (uat ErrUnsupportedAddressType) Error() string { return fmt.Sprintf("unsupported address type: %s", string(uat)) } -// BadRequest denotes the type of this error -func (uat ErrUnsupportedAddressType) BadRequest() {} +// InvalidParameter denotes the type of this error +func (uat ErrUnsupportedAddressType) InvalidParameter() {} // ActiveEndpointsError is returned when there are // still active endpoints in the network being deleted. @@ -144,8 +144,8 @@ func (ieie InvalidEndpointIDError) Error() string { return fmt.Sprintf("invalid endpoint id: %s", string(ieie)) } -// BadRequest denotes the type of this error -func (ieie InvalidEndpointIDError) BadRequest() {} +// InvalidParameter denotes the type of this error +func (ieie InvalidEndpointIDError) InvalidParameter() {} // EndpointNotFoundError is returned when the no endpoint // with the passed endpoint id is found. diff --git a/libnetwork/drivers/ipvlan/ipvlan_network.go b/libnetwork/drivers/ipvlan/ipvlan_network.go index cb8e9ff5c7..84befa4f11 100644 --- a/libnetwork/drivers/ipvlan/ipvlan_network.go +++ b/libnetwork/drivers/ipvlan/ipvlan_network.go @@ -227,7 +227,7 @@ func parseNetworkGenericOptions(data interface{}) (*configuration, error) { } return opaqueConfig.(*configuration), nil default: - return nil, types.BadRequestErrorf("unrecognized network configuration format: %v", opt) + return nil, types.InvalidParameterErrorf("unrecognized network configuration format: %v", opt) } } diff --git a/libnetwork/drivers/ipvlan/ipvlan_state.go b/libnetwork/drivers/ipvlan/ipvlan_state.go index 2971542d66..55243897b7 100644 --- a/libnetwork/drivers/ipvlan/ipvlan_state.go +++ b/libnetwork/drivers/ipvlan/ipvlan_state.go @@ -94,7 +94,7 @@ func (d *driver) getNetwork(id string) (*network, error) { d.Lock() defer d.Unlock() if id == "" { - return nil, types.BadRequestErrorf("invalid network id: %s", id) + return nil, types.InvalidParameterErrorf("invalid network id: %s", id) } if nw, ok := d.networks[id]; ok { diff --git a/libnetwork/drivers/macvlan/macvlan_network.go b/libnetwork/drivers/macvlan/macvlan_network.go index 6418135310..db6141cc51 100644 --- a/libnetwork/drivers/macvlan/macvlan_network.go +++ b/libnetwork/drivers/macvlan/macvlan_network.go @@ -206,7 +206,7 @@ func parseNetworkGenericOptions(data interface{}) (*configuration, error) { } return opaqueConfig.(*configuration), nil default: - return nil, types.BadRequestErrorf("unrecognized network configuration format: %v", opt) + return nil, types.InvalidParameterErrorf("unrecognized network configuration format: %v", opt) } } diff --git a/libnetwork/drivers/macvlan/macvlan_state.go b/libnetwork/drivers/macvlan/macvlan_state.go index 45fa0921ca..2135b7bd7a 100644 --- a/libnetwork/drivers/macvlan/macvlan_state.go +++ b/libnetwork/drivers/macvlan/macvlan_state.go @@ -93,7 +93,7 @@ func (d *driver) getNetwork(id string) (*network, error) { d.Lock() defer d.Unlock() if id == "" { - return nil, types.BadRequestErrorf("invalid network id: %s", id) + return nil, types.InvalidParameterErrorf("invalid network id: %s", id) } if nw, ok := d.networks[id]; ok { return nw, nil diff --git a/libnetwork/drivers/overlay/encryption.go b/libnetwork/drivers/overlay/encryption.go index 1bb719fe44..bc1efd9bee 100644 --- a/libnetwork/drivers/overlay/encryption.go +++ b/libnetwork/drivers/overlay/encryption.go @@ -519,12 +519,12 @@ func (d *driver) updateKeys(newKey, primary, pruneKey *key) error { if (newKey != nil && newIdx == -1) || (primary != nil && priIdx == -1) || (pruneKey != nil && delIdx == -1) { - return types.BadRequestErrorf("cannot find proper key indices while processing key update:"+ + return types.InvalidParameterErrorf("cannot find proper key indices while processing key update:"+ "(newIdx,priIdx,delIdx):(%d, %d, %d)", newIdx, priIdx, delIdx) } if priIdx != -1 && priIdx == delIdx { - return types.BadRequestErrorf("attempting to both make a key (index %d) primary and delete it", priIdx) + return types.InvalidParameterErrorf("attempting to both make a key (index %d) primary and delete it", priIdx) } d.secMapWalk(func(rIPs string, spis []*spi) ([]*spi, bool) { diff --git a/libnetwork/drivers/overlay/ov_network.go b/libnetwork/drivers/overlay/ov_network.go index 0b80905e43..c7826529e9 100644 --- a/libnetwork/drivers/overlay/ov_network.go +++ b/libnetwork/drivers/overlay/ov_network.go @@ -83,7 +83,7 @@ func (d *driver) CreateNetwork(id string, option map[string]interface{}, nInfo d return fmt.Errorf("invalid network id") } if len(ipV4Data) == 0 || ipV4Data[0].Pool.String() == "0.0.0.0/0" { - return types.BadRequestErrorf("ipv4 pool is empty") + return types.InvalidParameterErrorf("ipv4 pool is empty") } // Since we perform lazy configuration make sure we try diff --git a/libnetwork/drivers/remote/driver_test.go b/libnetwork/drivers/remote/driver_test.go index 6ef0bc1152..be16e5437e 100644 --- a/libnetwork/drivers/remote/driver_test.go +++ b/libnetwork/drivers/remote/driver_test.go @@ -128,7 +128,7 @@ func (test *testEndpoint) SetMacAddress(mac net.HardwareAddr) error { return types.ForbiddenErrorf("endpoint interface MAC address present (%s). Cannot be modified with %s.", test.macAddress, mac) } if mac == nil { - return types.BadRequestErrorf("tried to set nil MAC address to endpoint interface") + return types.InvalidParameterErrorf("tried to set nil MAC address to endpoint interface") } test.macAddress = mac.String() return nil @@ -136,7 +136,7 @@ func (test *testEndpoint) SetMacAddress(mac net.HardwareAddr) error { func (test *testEndpoint) SetIPAddress(address *net.IPNet) error { if address.IP == nil { - return types.BadRequestErrorf("tried to set nil IP address to endpoint interface") + return types.InvalidParameterErrorf("tried to set nil IP address to endpoint interface") } if address.IP.To4() == nil { return setAddress(&test.addressIPv6, address) diff --git a/libnetwork/drivers/windows/overlay/ov_network_windows.go b/libnetwork/drivers/windows/overlay/ov_network_windows.go index 3b5aed9817..b118e8c8db 100644 --- a/libnetwork/drivers/windows/overlay/ov_network_windows.go +++ b/libnetwork/drivers/windows/overlay/ov_network_windows.go @@ -76,7 +76,7 @@ func (d *driver) CreateNetwork(id string, option map[string]interface{}, nInfo d } if len(ipV4Data) == 0 || ipV4Data[0].Pool.String() == "0.0.0.0/0" { - return types.BadRequestErrorf("ipv4 pool is empty") + return types.InvalidParameterErrorf("ipv4 pool is empty") } staleNetworks = make([]string, 0) diff --git a/libnetwork/drivers/windows/windows.go b/libnetwork/drivers/windows/windows.go index 5033ab70e0..b70961c4f0 100644 --- a/libnetwork/drivers/windows/windows.go +++ b/libnetwork/drivers/windows/windows.go @@ -199,7 +199,7 @@ func (d *driver) parseNetworkOptions(id string, genericOptions map[string]string config.MacPools = make([]hcsshim.MacPool, 0) s := strings.Split(value, ",") if len(s)%2 != 0 { - return nil, types.BadRequestErrorf("Invalid mac pool. You must specify both a start range and an end range") + return nil, types.InvalidParameterErrorf("Invalid mac pool. You must specify both a start range and an end range") } for i := 0; i < len(s)-1; i += 2 { config.MacPools = append(config.MacPools, hcsshim.MacPool{ @@ -242,7 +242,7 @@ func (c *networkConfiguration) processIPAM(id string, ipamV4Data, ipamV6Data []d } if len(ipamV4Data) == 0 { - return types.BadRequestErrorf("network %s requires ipv4 configuration", id) + return types.InvalidParameterErrorf("network %s requires ipv4 configuration", id) } return nil diff --git a/libnetwork/drivers/windows/windows_test.go b/libnetwork/drivers/windows/windows_test.go index 1f289d328b..b92b361786 100644 --- a/libnetwork/drivers/windows/windows_test.go +++ b/libnetwork/drivers/windows/windows_test.go @@ -103,7 +103,7 @@ func (test *testEndpoint) SetMacAddress(mac net.HardwareAddr) error { } if mac == nil { - return types.BadRequestErrorf("tried to set nil MAC address to endpoint interface") + return types.InvalidParameterErrorf("tried to set nil MAC address to endpoint interface") } test.macAddress = mac.String() return nil @@ -111,7 +111,7 @@ func (test *testEndpoint) SetMacAddress(mac net.HardwareAddr) error { func (test *testEndpoint) SetIPAddress(address *net.IPNet) error { if address.IP == nil { - return types.BadRequestErrorf("tried to set nil IP address to endpoint interface") + return types.InvalidParameterErrorf("tried to set nil IP address to endpoint interface") } test.address = address.String() diff --git a/libnetwork/endpoint.go b/libnetwork/endpoint.go index 7cd63eb70e..bbaf429a4b 100644 --- a/libnetwork/endpoint.go +++ b/libnetwork/endpoint.go @@ -397,7 +397,7 @@ func (ep *Endpoint) getNetworkFromStore() (*Network, error) { // the network resources allocated for the endpoint. func (ep *Endpoint) Join(sb *Sandbox, options ...EndpointOption) error { if sb == nil || sb.ID() == "" || sb.Key() == "" { - return types.BadRequestErrorf("invalid Sandbox passed to endpoint join: %v", sb) + return types.InvalidParameterErrorf("invalid Sandbox passed to endpoint join: %v", sb) } sb.joinLeaveStart() @@ -658,7 +658,7 @@ func (ep *Endpoint) hasInterface(iName string) bool { // Leave detaches the network resources populated in the sandbox. func (ep *Endpoint) Leave(sb *Sandbox, options ...EndpointOption) error { if sb == nil || sb.ID() == "" || sb.Key() == "" { - return types.BadRequestErrorf("invalid Sandbox passed to endpoint leave: %v", sb) + return types.InvalidParameterErrorf("invalid Sandbox passed to endpoint leave: %v", sb) } sb.joinLeaveStart() @@ -1112,7 +1112,7 @@ func (ep *Endpoint) assignAddressVersion(ipVer int, ipam ipamapi.Ipam) error { } } if progAdd != nil { - return types.BadRequestErrorf("Invalid address %s: It does not belong to any of this network's subnets", prefAdd) + return types.InvalidParameterErrorf("Invalid address %s: It does not belong to any of this network's subnets", prefAdd) } return fmt.Errorf("no available IPv%d addresses on this network's address pools: %s (%s)", ipVer, n.Name(), n.ID()) } diff --git a/libnetwork/endpoint_info.go b/libnetwork/endpoint_info.go index 8d41509380..53e6d21495 100644 --- a/libnetwork/endpoint_info.go +++ b/libnetwork/endpoint_info.go @@ -239,7 +239,7 @@ func (epi *endpointInterface) SetMacAddress(mac net.HardwareAddr) error { return types.ForbiddenErrorf("endpoint interface MAC address present (%s). Cannot be modified with %s.", epi.mac, mac) } if mac == nil { - return types.BadRequestErrorf("tried to set nil MAC address to endpoint interface") + return types.InvalidParameterErrorf("tried to set nil MAC address to endpoint interface") } epi.mac = types.GetMacCopy(mac) return nil @@ -247,7 +247,7 @@ func (epi *endpointInterface) SetMacAddress(mac net.HardwareAddr) error { func (epi *endpointInterface) SetIPAddress(address *net.IPNet) error { if address.IP == nil { - return types.BadRequestErrorf("tried to set nil IP address to endpoint interface") + return types.InvalidParameterErrorf("tried to set nil IP address to endpoint interface") } if address.IP.To4() == nil { return setAddress(&epi.addrv6, address) diff --git a/libnetwork/error.go b/libnetwork/error.go index adcf47b308..1f33103b6d 100644 --- a/libnetwork/error.go +++ b/libnetwork/error.go @@ -32,8 +32,8 @@ func (ii ErrInvalidID) Error() string { return fmt.Sprintf("invalid id: %s", string(ii)) } -// BadRequest denotes the type of this error -func (ii ErrInvalidID) BadRequest() {} +// InvalidParameter denotes the type of this error +func (ii ErrInvalidID) InvalidParameter() {} // ErrInvalidName is returned when a query-by-name or resource create method is // invoked with an empty name parameter @@ -43,8 +43,8 @@ func (in ErrInvalidName) Error() string { return fmt.Sprintf("invalid name: %s", string(in)) } -// BadRequest denotes the type of this error -func (in ErrInvalidName) BadRequest() {} +// InvalidParameter denotes the type of this error +func (in ErrInvalidName) InvalidParameter() {} // NetworkNameError is returned when a network with the same name already exists. type NetworkNameError string diff --git a/libnetwork/errors_test.go b/libnetwork/errors_test.go index 7a44aaa9b1..d01ef9bfc0 100644 --- a/libnetwork/errors_test.go +++ b/libnetwork/errors_test.go @@ -10,9 +10,9 @@ func TestErrorInterfaces(t *testing.T) { badRequestErrorList := []error{ErrInvalidID(""), ErrInvalidName("")} for _, err := range badRequestErrorList { switch u := err.(type) { - case types.BadRequestError: + case types.InvalidParameterError: default: - t.Errorf("Failed to detect err %v is of type BadRequestError. Got type: %T", err, u) + t.Errorf("Failed to detect err %v is of type InvalidParameterError. Got type: %T", err, u) } } diff --git a/libnetwork/ipam/allocator.go b/libnetwork/ipam/allocator.go index 9b5363ab6c..882c4cbb94 100644 --- a/libnetwork/ipam/allocator.go +++ b/libnetwork/ipam/allocator.go @@ -119,7 +119,7 @@ func (a *Allocator) ReleasePool(poolID string) error { log.G(context.TODO()).Debugf("ReleasePool(%s)", poolID) k, err := PoolIDFromString(poolID) if err != nil { - return types.BadRequestErrorf("invalid pool id: %s", poolID) + return types.InvalidParameterErrorf("invalid pool id: %s", poolID) } aSpace, err := a.getAddrSpace(k.AddressSpace) @@ -139,7 +139,7 @@ func (a *Allocator) getAddrSpace(as string) (*addrSpace, error) { case globalAddressSpace: return a.global, nil } - return nil, types.BadRequestErrorf("cannot find address space %s", as) + return nil, types.InvalidParameterErrorf("cannot find address space %s", as) } func newPoolData(pool netip.Prefix) *PoolData { @@ -228,7 +228,7 @@ func (a *Allocator) RequestAddress(poolID string, prefAddress net.IP, opts map[s log.G(context.TODO()).Debugf("RequestAddress(%s, %v, %v)", poolID, prefAddress, opts) k, err := PoolIDFromString(poolID) if err != nil { - return nil, nil, types.BadRequestErrorf("invalid pool id: %s", poolID) + return nil, nil, types.InvalidParameterErrorf("invalid pool id: %s", poolID) } aSpace, err := a.getAddrSpace(k.AddressSpace) @@ -240,7 +240,7 @@ func (a *Allocator) RequestAddress(poolID string, prefAddress net.IP, opts map[s var ok bool pref, ok = netip.AddrFromSlice(prefAddress) if !ok { - return nil, nil, types.BadRequestErrorf("invalid preferred address: %v", prefAddress) + return nil, nil, types.InvalidParameterErrorf("invalid preferred address: %v", prefAddress) } } p, err := aSpace.requestAddress(k.Subnet, k.ChildSubnet, pref.Unmap(), opts) @@ -288,7 +288,7 @@ func (a *Allocator) ReleaseAddress(poolID string, address net.IP) error { log.G(context.TODO()).Debugf("ReleaseAddress(%s, %v)", poolID, address) k, err := PoolIDFromString(poolID) if err != nil { - return types.BadRequestErrorf("invalid pool id: %s", poolID) + return types.InvalidParameterErrorf("invalid pool id: %s", poolID) } aSpace, err := a.getAddrSpace(k.AddressSpace) @@ -298,7 +298,7 @@ func (a *Allocator) ReleaseAddress(poolID string, address net.IP) error { addr, ok := netip.AddrFromSlice(address) if !ok { - return types.BadRequestErrorf("invalid address: %v", address) + return types.InvalidParameterErrorf("invalid address: %v", address) } return aSpace.releaseAddress(k.Subnet, k.ChildSubnet, addr.Unmap()) @@ -319,7 +319,7 @@ func (aSpace *addrSpace) releaseAddress(nw, sub netip.Prefix, address netip.Addr } if !address.IsValid() { - return types.BadRequestErrorf("invalid address") + return types.InvalidParameterErrorf("invalid address") } if !nw.Contains(address) { diff --git a/libnetwork/ipam/structures.go b/libnetwork/ipam/structures.go index 470c29e4f7..451d5a9253 100644 --- a/libnetwork/ipam/structures.go +++ b/libnetwork/ipam/structures.go @@ -47,22 +47,22 @@ type addrSpace struct { // reading it from the given string. func PoolIDFromString(str string) (pID PoolID, err error) { if str == "" { - return pID, types.BadRequestErrorf("invalid string form for subnetkey: %s", str) + return pID, types.InvalidParameterErrorf("invalid string form for subnetkey: %s", str) } p := strings.Split(str, "/") if len(p) != 3 && len(p) != 5 { - return pID, types.BadRequestErrorf("invalid string form for subnetkey: %s", str) + return pID, types.InvalidParameterErrorf("invalid string form for subnetkey: %s", str) } pID.AddressSpace = p[0] pID.Subnet, err = netip.ParsePrefix(p[1] + "/" + p[2]) if err != nil { - return pID, types.BadRequestErrorf("%v", err) + return pID, types.InvalidParameterErrorf("invalid string form for subnetkey: %s", str) } if len(p) == 5 { pID.ChildSubnet, err = netip.ParsePrefix(p[3] + "/" + p[4]) if err != nil { - return pID, types.BadRequestErrorf("%v", err) + return pID, types.InvalidParameterErrorf("invalid string form for subnetkey: %s", str) } } diff --git a/libnetwork/ipamapi/contract.go b/libnetwork/ipamapi/contract.go index 0ae8430e72..c6e0b40463 100644 --- a/libnetwork/ipamapi/contract.go +++ b/libnetwork/ipamapi/contract.go @@ -29,15 +29,15 @@ type Registerer interface { // Well-known errors returned by IPAM var ( - ErrInvalidAddressSpace = types.BadRequestErrorf("Invalid Address Space") - ErrInvalidPool = types.BadRequestErrorf("Invalid Address Pool") - ErrInvalidSubPool = types.BadRequestErrorf("Invalid Address SubPool") + ErrInvalidAddressSpace = types.InvalidParameterErrorf("Invalid Address Space") + ErrInvalidPool = types.InvalidParameterErrorf("Invalid Address Pool") + ErrInvalidSubPool = types.InvalidParameterErrorf("Invalid Address SubPool") ErrNoAvailableIPs = types.NoServiceErrorf("No available addresses on this pool") ErrNoIPReturned = types.NoServiceErrorf("No address returned") ErrIPAlreadyAllocated = types.ForbiddenErrorf("Address already in use") - ErrIPOutOfRange = types.BadRequestErrorf("Requested address is out of range") + ErrIPOutOfRange = types.InvalidParameterErrorf("Requested address is out of range") ErrPoolOverlap = types.ForbiddenErrorf("Pool overlaps with other one on this address space") - ErrBadPool = types.BadRequestErrorf("Address space does not contain specified address pool") + ErrBadPool = types.InvalidParameterErrorf("Address space does not contain specified address pool") ) // Ipam represents the interface the IPAM service plugins must implement diff --git a/libnetwork/ipams/null/null.go b/libnetwork/ipams/null/null.go index 517c02ad50..1ca4a7f51c 100644 --- a/libnetwork/ipams/null/null.go +++ b/libnetwork/ipams/null/null.go @@ -25,16 +25,16 @@ func (a *allocator) GetDefaultAddressSpaces() (string, string, error) { func (a *allocator) RequestPool(addressSpace, requestedPool, requestedSubPool string, _ map[string]string, v6 bool) (string, *net.IPNet, map[string]string, error) { if addressSpace != defaultAddressSpace { - return "", nil, nil, types.BadRequestErrorf("unknown address space: %s", addressSpace) + return "", nil, nil, types.InvalidParameterErrorf("unknown address space: %s", addressSpace) } if requestedPool != "" { - return "", nil, nil, types.BadRequestErrorf("null ipam driver does not handle specific address pool requests") + return "", nil, nil, types.InvalidParameterErrorf("null ipam driver does not handle specific address pool requests") } if requestedSubPool != "" { - return "", nil, nil, types.BadRequestErrorf("null ipam driver does not handle specific address subpool requests") + return "", nil, nil, types.InvalidParameterErrorf("null ipam driver does not handle specific address subpool requests") } if v6 { - return "", nil, nil, types.BadRequestErrorf("null ipam driver does not handle IPv6 address pool pool requests") + return "", nil, nil, types.InvalidParameterErrorf("null ipam driver does not handle IPv6 address pool pool requests") } return defaultPoolID, defaultPool, nil, nil } @@ -45,14 +45,14 @@ func (a *allocator) ReleasePool(poolID string) error { func (a *allocator) RequestAddress(poolID string, ip net.IP, opts map[string]string) (*net.IPNet, map[string]string, error) { if poolID != defaultPoolID { - return nil, nil, types.BadRequestErrorf("unknown pool id: %s", poolID) + return nil, nil, types.InvalidParameterErrorf("unknown pool id: %s", poolID) } return nil, nil, nil } func (a *allocator) ReleaseAddress(poolID string, ip net.IP) error { if poolID != defaultPoolID { - return types.BadRequestErrorf("unknown pool id: %s", poolID) + return types.InvalidParameterErrorf("unknown pool id: %s", poolID) } return nil } diff --git a/libnetwork/libnetwork_linux_test.go b/libnetwork/libnetwork_linux_test.go index 03c6b16d80..d292c18567 100644 --- a/libnetwork/libnetwork_linux_test.go +++ b/libnetwork/libnetwork_linux_test.go @@ -1091,7 +1091,7 @@ func TestContainerInvalidLeave(t *testing.T) { if err = ep.Leave(nil); err == nil { t.Fatalf("Expected to fail leave nil Sandbox") } - if _, ok := err.(types.BadRequestError); !ok { + if _, ok := err.(types.InvalidParameterError); !ok { t.Fatalf("Unexpected error type returned: %T. Desc: %s", err, err.Error()) } @@ -1099,7 +1099,7 @@ func TestContainerInvalidLeave(t *testing.T) { if err = ep.Leave(fsbx); err == nil { t.Fatalf("Expected to fail leave with invalid Sandbox") } - if _, ok := err.(types.BadRequestError); !ok { + if _, ok := err.(types.InvalidParameterError); !ok { t.Fatalf("Unexpected error type returned: %T. Desc: %s", err, err.Error()) } } @@ -1516,7 +1516,7 @@ func TestEndpointJoin(t *testing.T) { if err == nil { t.Fatalf("Expected to fail join with nil Sandbox") } - if _, ok := err.(types.BadRequestError); !ok { + if _, ok := err.(types.InvalidParameterError); !ok { t.Fatalf("Unexpected error type returned: %T", err) } @@ -1524,7 +1524,7 @@ func TestEndpointJoin(t *testing.T) { if err = ep1.Join(fsbx); err == nil { t.Fatalf("Expected to fail join with invalid Sandbox") } - if _, ok := err.(types.BadRequestError); !ok { + if _, ok := err.(types.InvalidParameterError); !ok { t.Fatalf("Unexpected error type returned: %T", err) } diff --git a/libnetwork/network.go b/libnetwork/network.go index 4a88253310..a67fb4ca78 100644 --- a/libnetwork/network.go +++ b/libnetwork/network.go @@ -87,7 +87,7 @@ type IpamConf struct { // Validate checks whether the configuration is valid func (c *IpamConf) Validate() error { if c.Gateway != "" && nil == net.ParseIP(c.Gateway) { - return types.BadRequestErrorf("invalid gateway address %s in Ipam configuration", c.Gateway) + return types.InvalidParameterErrorf("invalid gateway address %s in Ipam configuration", c.Gateway) } return nil } @@ -1136,7 +1136,7 @@ func (n *Network) createEndpoint(name string, options ...EndpointOption) (*Endpo for _, llIPNet := range ep.Iface().LinkLocalAddresses() { if !llIPNet.IP.IsLinkLocalUnicast() { - return nil, types.BadRequestErrorf("invalid link local IP address: %v", llIPNet.IP) + return nil, types.InvalidParameterErrorf("invalid link local IP address: %v", llIPNet.IP) } } @@ -1602,7 +1602,7 @@ func (n *Network) ipamAllocateVersion(ipVer int, ipam ipamapi.Ipam) error { if gws, ok := d.Meta[netlabel.Gateway]; ok { if d.Gateway, err = types.ParseCIDR(gws); err != nil { - return types.BadRequestErrorf("failed to parse gateway address (%v) returned by ipam driver: %v", gws, err) + return types.InvalidParameterErrorf("failed to parse gateway address (%v) returned by ipam driver: %v", gws, err) } } @@ -1625,7 +1625,7 @@ func (n *Network) ipamAllocateVersion(ipVer int, ipam ipamapi.Ipam) error { d.IPAMData.AuxAddresses = make(map[string]*net.IPNet, len(cfg.AuxAddresses)) for k, v := range cfg.AuxAddresses { if ip = net.ParseIP(v); ip == nil { - return types.BadRequestErrorf("non parsable secondary ip address (%s:%s) passed for network %s", k, v, n.Name()) + return types.InvalidParameterErrorf("non parsable secondary ip address (%s:%s) passed for network %s", k, v, n.Name()) } if !d.Pool.Contains(ip) { return types.ForbiddenErrorf("auxiliary address: (%s:%s) must belong to the master pool: %s", k, v, d.Pool) diff --git a/libnetwork/sandbox.go b/libnetwork/sandbox.go index 73c4fc100a..e37cc04d9b 100644 --- a/libnetwork/sandbox.go +++ b/libnetwork/sandbox.go @@ -609,7 +609,7 @@ func (sb *Sandbox) SetKey(basePath string) error { }() if basePath == "" { - return types.BadRequestErrorf("invalid sandbox key") + return types.InvalidParameterErrorf("invalid sandbox key") } sb.mu.Lock() diff --git a/libnetwork/sandbox_externalkey_unix.go b/libnetwork/sandbox_externalkey_unix.go index 968d61ca41..9fed223ac8 100644 --- a/libnetwork/sandbox_externalkey_unix.go +++ b/libnetwork/sandbox_externalkey_unix.go @@ -169,7 +169,7 @@ func (c *Controller) processExternalKey(conn net.Conn) error { search := SandboxContainerWalker(&sandbox, s.ContainerID) c.WalkSandboxes(search) if sandbox == nil { - return types.BadRequestErrorf("no sandbox present for %s", s.ContainerID) + return types.InvalidParameterErrorf("no sandbox present for %s", s.ContainerID) } return sandbox.SetKey(s.Key) diff --git a/libnetwork/types/types.go b/libnetwork/types/types.go index d2adc00911..f8b188f790 100644 --- a/libnetwork/types/types.go +++ b/libnetwork/types/types.go @@ -8,6 +8,7 @@ import ( "strconv" "strings" + "github.com/docker/docker/errdefs" "github.com/ishidawataru/sctp" ) @@ -355,10 +356,10 @@ type MaskableError interface { Maskable() } -// BadRequestError is an interface for errors originated by a bad request -type BadRequestError interface { - // BadRequest makes implementer into BadRequestError type - BadRequest() +// InvalidParameterError is an interface for errors originated by a bad request +type InvalidParameterError interface { + // InvalidParameter makes implementer into InvalidParameterError type + InvalidParameter() } // NotFoundError is an interface for errors raised because a needed resource is not available @@ -395,9 +396,9 @@ type InternalError interface { * Well-known Error Formatters ******************************/ -// BadRequestErrorf creates an instance of BadRequestError -func BadRequestErrorf(format string, params ...interface{}) error { - return badRequest(fmt.Sprintf(format, params...)) +// InvalidParameterErrorf creates an instance of InvalidParameterError +func InvalidParameterErrorf(format string, params ...interface{}) error { + return errdefs.InvalidParameter(fmt.Errorf(format, params...)) } // NotFoundErrorf creates an instance of NotFoundError @@ -433,13 +434,6 @@ func InternalMaskableErrorf(format string, params ...interface{}) error { /*********************** * Internal Error Types ***********************/ -type badRequest string - -func (br badRequest) Error() string { - return string(br) -} -func (br badRequest) BadRequest() {} - type notFound string func (nf notFound) Error() string { diff --git a/libnetwork/types/types_test.go b/libnetwork/types/types_test.go index 77dbbe3516..e5e27a4b3b 100644 --- a/libnetwork/types/types_test.go +++ b/libnetwork/types/types_test.go @@ -8,11 +8,11 @@ import ( func TestErrorConstructors(t *testing.T) { var err error - err = BadRequestErrorf("Io ho %d uccello", 1) + err = InvalidParameterErrorf("Io ho %d uccello", 1) if err.Error() != "Io ho 1 uccello" { t.Fatal(err) } - if _, ok := err.(BadRequestError); !ok { + if _, ok := err.(InvalidParameterError); !ok { t.Fatal(err) } if _, ok := err.(MaskableError); ok {