Skip to content

Commit

Permalink
eni: Move limits to seperate package
Browse files Browse the repository at this point in the history
This commit was necessary to prevent an import cycle in a future commit.

Signed-off-by: Chris Tarazi <chris@isovalent.com>
  • Loading branch information
christarazi committed Nov 14, 2020
1 parent 51826b3 commit d69045a
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 12 deletions.
6 changes: 3 additions & 3 deletions pkg/aws/eni/limits.go → pkg/aws/eni/limits/limits.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.

package eni
package limits

import (
"context"
Expand Down Expand Up @@ -313,8 +313,8 @@ var limits = map[string]ipamTypes.Limits{
"z1d.metal": {Adapters: 15, IPv4: 50, IPv6: 50},
}

// getLimits returns the instance limits of a particular instance type
func getLimits(instanceType string) (limit ipamTypes.Limits, ok bool) {
// GetLimits returns the instance limits of a particular instance type.
func GetLimits(instanceType string) (limit ipamTypes.Limits, ok bool) {
limitsMutex.RLock()
limit, ok = limits[instanceType]
limitsMutex.RUnlock()
Expand Down
12 changes: 6 additions & 6 deletions pkg/aws/eni/limits_test.go → pkg/aws/eni/limits/limits_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

// +build !privileged_tests

package eni
package limits

import (
"github.com/cilium/cilium/operator/option"
Expand All @@ -25,16 +25,16 @@ import (
func (e *ENISuite) TestGetLimits(c *check.C) {
option.Config.AWSInstanceLimitMapping = map[string]string{"a2.custom2": "4,5,6"}

_, ok := getLimits("unknown")
_, ok := GetLimits("unknown")
c.Assert(ok, check.Equals, false)

l, ok := getLimits("m3.large")
l, ok := GetLimits("m3.large")
c.Assert(ok, check.Equals, true)
c.Assert(l.Adapters, check.Not(check.Equals), 0)
c.Assert(l.IPv4, check.Not(check.Equals), 0)

UpdateLimitsFromUserDefinedMappings(option.Config.AWSInstanceLimitMapping)
l, ok = getLimits("a2.custom2")
UpdateFromUserDefinedMappings(option.Config.AWSInstanceLimitMapping)
l, ok = GetLimits("a2.custom2")
c.Assert(ok, check.Equals, true)
c.Assert(l.Adapters, check.Equals, 4)
c.Assert(l.IPv4, check.Equals, 5)
Expand All @@ -47,7 +47,7 @@ func (e *ENISuite) TestUpdateLimitsFromUserDefinedMappings(c *check.C) {
err := UpdateLimitsFromUserDefinedMappings(m1)
c.Assert(err, check.Equals, nil)

limit, ok := getLimits("a1.medium")
limit, ok := GetLimits("a1.medium")
c.Assert(ok, check.Equals, true)
c.Assert(limit.Adapters, check.Equals, 2)
c.Assert(limit.IPv4, check.Equals, 4)
Expand Down
3 changes: 2 additions & 1 deletion pkg/aws/eni/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import (
"fmt"
"strings"

"github.com/cilium/cilium/pkg/aws/eni/limits"
eniTypes "github.com/cilium/cilium/pkg/aws/eni/types"
"github.com/cilium/cilium/pkg/ipam"
ipamTypes "github.com/cilium/cilium/pkg/ipam/types"
Expand Down Expand Up @@ -102,7 +103,7 @@ func (n *Node) getLimits() (ipamTypes.Limits, bool) {
// getLimitsLocked is the same function as getLimits, but assumes the n.mutex
// is read locked.
func (n *Node) getLimitsLocked() (ipamTypes.Limits, bool) {
return getLimits(n.k8sObj.Spec.ENI.InstanceType)
return limits.GetLimits(n.k8sObj.Spec.ENI.InstanceType)
}

// PrepareIPRelease prepares the release of ENI IPs.
Expand Down
5 changes: 3 additions & 2 deletions pkg/ipam/allocator/aws/aws.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import (
ec2shim "github.com/cilium/cilium/pkg/aws/ec2"
"github.com/cilium/cilium/pkg/aws/endpoints"
"github.com/cilium/cilium/pkg/aws/eni"
"github.com/cilium/cilium/pkg/aws/eni/limits"
"github.com/cilium/cilium/pkg/ipam"
"github.com/cilium/cilium/pkg/ipam/allocator"
ipamMetrics "github.com/cilium/cilium/pkg/ipam/metrics"
Expand All @@ -44,11 +45,11 @@ type AllocatorAWS struct{}

// Init sets up ENI limits based on given options
func (*AllocatorAWS) Init() error {
if err := eni.UpdateLimitsFromUserDefinedMappings(operatorOption.Config.AWSInstanceLimitMapping); err != nil {
if err := limits.UpdateLimitsFromUserDefinedMappings(operatorOption.Config.AWSInstanceLimitMapping); err != nil {
return fmt.Errorf("failed to parse aws-instance-limit-mapping: %w", err)
}
if operatorOption.Config.UpdateEC2AdapterLimitViaAPI {
if err := eni.UpdateLimitsFromEC2API(context.TODO()); err != nil {
if err := limits.UpdateLimitsFromEC2API(context.TODO()); err != nil {
return fmt.Errorf("unable to update instance type to adapter limits from EC2 API: %w", err)
}
}
Expand Down

0 comments on commit d69045a

Please sign in to comment.