// NewPortAllocatorCustom creates a PortAllocator over a util.PortRange, calling allocatorFactory to construct the backing store. func NewPortAllocatorCustom(pr util.PortRange, allocatorFactory allocator.AllocatorFactory) *PortAllocator { max := pr.Size rangeSpec := pr.String() a := &PortAllocator{ portRange: pr, } a.alloc = allocatorFactory(max, rangeSpec) return a }
// Restore restores the pool to the previously captured state. ErrMismatchedNetwork // is returned if the provided port range doesn't exactly match the previous range. func (r *PortAllocator) Restore(pr util.PortRange, data []byte) error { if pr.String() != r.portRange.String() { return ErrMismatchedNetwork } snapshottable, ok := r.alloc.(allocator.Snapshottable) if !ok { return fmt.Errorf("not a snapshottable allocator") } return snapshottable.Restore(pr.String(), data) }
"strings" "time" "github.com/GoogleCloudPlatform/kubernetes/pkg/api" "github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors" "github.com/GoogleCloudPlatform/kubernetes/pkg/client" "github.com/GoogleCloudPlatform/kubernetes/pkg/fields" "github.com/GoogleCloudPlatform/kubernetes/pkg/labels" "github.com/GoogleCloudPlatform/kubernetes/pkg/util" "github.com/GoogleCloudPlatform/kubernetes/pkg/util/wait" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) // This should match whatever the default/configured range is var ServiceNodePortRange = util.PortRange{Base: 30000, Size: 2768} var _ = Describe("Services", func() { var c *client.Client // Use these in tests. They're unique for each test to prevent name collisions. var namespaces [2]string BeforeEach(func() { var err error c, err = loadClient() Expect(err).NotTo(HaveOccurred()) By("Building a namespace api objects") for i := range namespaces { namespacePtr, err := createTestingNS(fmt.Sprintf("service-%d", i), c) Expect(err).NotTo(HaveOccurred())