summaryrefslogtreecommitdiff
path: root/vendor/k8s.io/apimachinery/pkg/api/resource
diff options
context:
space:
mode:
authorPaul Holzinger <pholzing@redhat.com>2022-03-11 15:02:04 +0100
committerPaul Holzinger <pholzing@redhat.com>2022-03-15 14:46:29 +0100
commit918fc88a983ea1c1ee7e0abb0fc1dce3c0a35be3 (patch)
treec967a39935b452f4cc61f425188bdbf42111c10a /vendor/k8s.io/apimachinery/pkg/api/resource
parent68ce83fe919f2d37762b8b746a73495f45e550f3 (diff)
downloadpodman-918fc88a983ea1c1ee7e0abb0fc1dce3c0a35be3.tar.gz
podman-918fc88a983ea1c1ee7e0abb0fc1dce3c0a35be3.tar.bz2
podman-918fc88a983ea1c1ee7e0abb0fc1dce3c0a35be3.zip
move k8s deps into podman
We only need a small part of the k8s dependencies but they are the biggest dependencies in podman by far. Moving them into podman allows us to remove the unnecessary parts. Signed-off-by: Paul Holzinger <pholzing@redhat.com>
Diffstat (limited to 'vendor/k8s.io/apimachinery/pkg/api/resource')
-rw-r--r--vendor/k8s.io/apimachinery/pkg/api/resource/OWNERS12
-rw-r--r--vendor/k8s.io/apimachinery/pkg/api/resource/amount.go299
-rw-r--r--vendor/k8s.io/apimachinery/pkg/api/resource/generated.pb.go89
-rw-r--r--vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto88
-rw-r--r--vendor/k8s.io/apimachinery/pkg/api/resource/math.go310
-rw-r--r--vendor/k8s.io/apimachinery/pkg/api/resource/quantity.go776
-rw-r--r--vendor/k8s.io/apimachinery/pkg/api/resource/quantity_proto.go288
-rw-r--r--vendor/k8s.io/apimachinery/pkg/api/resource/scale_int.go95
-rw-r--r--vendor/k8s.io/apimachinery/pkg/api/resource/suffix.go198
-rw-r--r--vendor/k8s.io/apimachinery/pkg/api/resource/zz_generated.deepcopy.go27
10 files changed, 0 insertions, 2182 deletions
diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/OWNERS b/vendor/k8s.io/apimachinery/pkg/api/resource/OWNERS
deleted file mode 100644
index 15bded17a..000000000
--- a/vendor/k8s.io/apimachinery/pkg/api/resource/OWNERS
+++ /dev/null
@@ -1,12 +0,0 @@
-# See the OWNERS docs at https://go.k8s.io/owners
-
-reviewers:
-- thockin
-- lavalamp
-- smarterclayton
-- wojtek-t
-- derekwaynecarr
-- mikedanese
-- saad-ali
-- janetkuo
-- xiang90
diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/amount.go b/vendor/k8s.io/apimachinery/pkg/api/resource/amount.go
deleted file mode 100644
index a8866a43e..000000000
--- a/vendor/k8s.io/apimachinery/pkg/api/resource/amount.go
+++ /dev/null
@@ -1,299 +0,0 @@
-/*
-Copyright 2014 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 resource
-
-import (
- "math/big"
- "strconv"
-
- inf "gopkg.in/inf.v0"
-)
-
-// Scale is used for getting and setting the base-10 scaled value.
-// Base-2 scales are omitted for mathematical simplicity.
-// See Quantity.ScaledValue for more details.
-type Scale int32
-
-// infScale adapts a Scale value to an inf.Scale value.
-func (s Scale) infScale() inf.Scale {
- return inf.Scale(-s) // inf.Scale is upside-down
-}
-
-const (
- Nano Scale = -9
- Micro Scale = -6
- Milli Scale = -3
- Kilo Scale = 3
- Mega Scale = 6
- Giga Scale = 9
- Tera Scale = 12
- Peta Scale = 15
- Exa Scale = 18
-)
-
-var (
- Zero = int64Amount{}
-
- // Used by quantity strings - treat as read only
- zeroBytes = []byte("0")
-)
-
-// int64Amount represents a fixed precision numerator and arbitrary scale exponent. It is faster
-// than operations on inf.Dec for values that can be represented as int64.
-// +k8s:openapi-gen=true
-type int64Amount struct {
- value int64
- scale Scale
-}
-
-// Sign returns 0 if the value is zero, -1 if it is less than 0, or 1 if it is greater than 0.
-func (a int64Amount) Sign() int {
- switch {
- case a.value == 0:
- return 0
- case a.value > 0:
- return 1
- default:
- return -1
- }
-}
-
-// AsInt64 returns the current amount as an int64 at scale 0, or false if the value cannot be
-// represented in an int64 OR would result in a loss of precision. This method is intended as
-// an optimization to avoid calling AsDec.
-func (a int64Amount) AsInt64() (int64, bool) {
- if a.scale == 0 {
- return a.value, true
- }
- if a.scale < 0 {
- // TODO: attempt to reduce factors, although it is assumed that factors are reduced prior
- // to the int64Amount being created.
- return 0, false
- }
- return positiveScaleInt64(a.value, a.scale)
-}
-
-// AsScaledInt64 returns an int64 representing the value of this amount at the specified scale,
-// rounding up, or false if that would result in overflow. (1e20).AsScaledInt64(1) would result
-// in overflow because 1e19 is not representable as an int64. Note that setting a scale larger
-// than the current value may result in loss of precision - i.e. (1e-6).AsScaledInt64(0) would
-// return 1, because 0.000001 is rounded up to 1.
-func (a int64Amount) AsScaledInt64(scale Scale) (result int64, ok bool) {
- if a.scale < scale {
- result, _ = negativeScaleInt64(a.value, scale-a.scale)
- return result, true
- }
- return positiveScaleInt64(a.value, a.scale-scale)
-}
-
-// AsDec returns an inf.Dec representation of this value.
-func (a int64Amount) AsDec() *inf.Dec {
- var base inf.Dec
- base.SetUnscaled(a.value)
- base.SetScale(inf.Scale(-a.scale))
- return &base
-}
-
-// Cmp returns 0 if a and b are equal, 1 if a is greater than b, or -1 if a is less than b.
-func (a int64Amount) Cmp(b int64Amount) int {
- switch {
- case a.scale == b.scale:
- // compare only the unscaled portion
- case a.scale > b.scale:
- result, remainder, exact := divideByScaleInt64(b.value, a.scale-b.scale)
- if !exact {
- return a.AsDec().Cmp(b.AsDec())
- }
- if result == a.value {
- switch {
- case remainder == 0:
- return 0
- case remainder > 0:
- return -1
- default:
- return 1
- }
- }
- b.value = result
- default:
- result, remainder, exact := divideByScaleInt64(a.value, b.scale-a.scale)
- if !exact {
- return a.AsDec().Cmp(b.AsDec())
- }
- if result == b.value {
- switch {
- case remainder == 0:
- return 0
- case remainder > 0:
- return 1
- default:
- return -1
- }
- }
- a.value = result
- }
-
- switch {
- case a.value == b.value:
- return 0
- case a.value < b.value:
- return -1
- default:
- return 1
- }
-}
-
-// Add adds two int64Amounts together, matching scales. It will return false and not mutate
-// a if overflow or underflow would result.
-func (a *int64Amount) Add(b int64Amount) bool {
- switch {
- case b.value == 0:
- return true
- case a.value == 0:
- a.value = b.value
- a.scale = b.scale
- return true
- case a.scale == b.scale:
- c, ok := int64Add(a.value, b.value)
- if !ok {
- return false
- }
- a.value = c
- case a.scale > b.scale:
- c, ok := positiveScaleInt64(a.value, a.scale-b.scale)
- if !ok {
- return false
- }
- c, ok = int64Add(c, b.value)
- if !ok {
- return false
- }
- a.scale = b.scale
- a.value = c
- default:
- c, ok := positiveScaleInt64(b.value, b.scale-a.scale)
- if !ok {
- return false
- }
- c, ok = int64Add(a.value, c)
- if !ok {
- return false
- }
- a.value = c
- }
- return true
-}
-
-// Sub removes the value of b from the current amount, or returns false if underflow would result.
-func (a *int64Amount) Sub(b int64Amount) bool {
- return a.Add(int64Amount{value: -b.value, scale: b.scale})
-}
-
-// AsScale adjusts this amount to set a minimum scale, rounding up, and returns true iff no precision
-// was lost. (1.1e5).AsScale(5) would return 1.1e5, but (1.1e5).AsScale(6) would return 1e6.
-func (a int64Amount) AsScale(scale Scale) (int64Amount, bool) {
- if a.scale >= scale {
- return a, true
- }
- result, exact := negativeScaleInt64(a.value, scale-a.scale)
- return int64Amount{value: result, scale: scale}, exact
-}
-
-// AsCanonicalBytes accepts a buffer to write the base-10 string value of this field to, and returns
-// either that buffer or a larger buffer and the current exponent of the value. The value is adjusted
-// until the exponent is a multiple of 3 - i.e. 1.1e5 would return "110", 3.
-func (a int64Amount) AsCanonicalBytes(out []byte) (result []byte, exponent int32) {
- mantissa := a.value
- exponent = int32(a.scale)
-
- amount, times := removeInt64Factors(mantissa, 10)
- exponent += int32(times)
-
- // make sure exponent is a multiple of 3
- var ok bool
- switch exponent % 3 {
- case 1, -2:
- amount, ok = int64MultiplyScale10(amount)
- if !ok {
- return infDecAmount{a.AsDec()}.AsCanonicalBytes(out)
- }
- exponent = exponent - 1
- case 2, -1:
- amount, ok = int64MultiplyScale100(amount)
- if !ok {
- return infDecAmount{a.AsDec()}.AsCanonicalBytes(out)
- }
- exponent = exponent - 2
- }
- return strconv.AppendInt(out, amount, 10), exponent
-}
-
-// AsCanonicalBase1024Bytes accepts a buffer to write the base-1024 string value of this field to, and returns
-// either that buffer or a larger buffer and the current exponent of the value. 2048 is 2 * 1024 ^ 1 and would
-// return []byte("2048"), 1.
-func (a int64Amount) AsCanonicalBase1024Bytes(out []byte) (result []byte, exponent int32) {
- value, ok := a.AsScaledInt64(0)
- if !ok {
- return infDecAmount{a.AsDec()}.AsCanonicalBase1024Bytes(out)
- }
- amount, exponent := removeInt64Factors(value, 1024)
- return strconv.AppendInt(out, amount, 10), exponent
-}
-
-// infDecAmount implements common operations over an inf.Dec that are specific to the quantity
-// representation.
-type infDecAmount struct {
- *inf.Dec
-}
-
-// AsScale adjusts this amount to set a minimum scale, rounding up, and returns true iff no precision
-// was lost. (1.1e5).AsScale(5) would return 1.1e5, but (1.1e5).AsScale(6) would return 1e6.
-func (a infDecAmount) AsScale(scale Scale) (infDecAmount, bool) {
- tmp := &inf.Dec{}
- tmp.Round(a.Dec, scale.infScale(), inf.RoundUp)
- return infDecAmount{tmp}, tmp.Cmp(a.Dec) == 0
-}
-
-// AsCanonicalBytes accepts a buffer to write the base-10 string value of this field to, and returns
-// either that buffer or a larger buffer and the current exponent of the value. The value is adjusted
-// until the exponent is a multiple of 3 - i.e. 1.1e5 would return "110", 3.
-func (a infDecAmount) AsCanonicalBytes(out []byte) (result []byte, exponent int32) {
- mantissa := a.Dec.UnscaledBig()
- exponent = int32(-a.Dec.Scale())
- amount := big.NewInt(0).Set(mantissa)
- // move all factors of 10 into the exponent for easy reasoning
- amount, times := removeBigIntFactors(amount, bigTen)
- exponent += times
-
- // make sure exponent is a multiple of 3
- for exponent%3 != 0 {
- amount.Mul(amount, bigTen)
- exponent--
- }
-
- return append(out, amount.String()...), exponent
-}
-
-// AsCanonicalBase1024Bytes accepts a buffer to write the base-1024 string value of this field to, and returns
-// either that buffer or a larger buffer and the current exponent of the value. 2048 is 2 * 1024 ^ 1 and would
-// return []byte("2048"), 1.
-func (a infDecAmount) AsCanonicalBase1024Bytes(out []byte) (result []byte, exponent int32) {
- tmp := &inf.Dec{}
- tmp.Round(a.Dec, 0, inf.RoundUp)
- amount, exponent := removeBigIntFactors(tmp.UnscaledBig(), big1024)
- return append(out, amount.String()...), exponent
-}
diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/generated.pb.go b/vendor/k8s.io/apimachinery/pkg/api/resource/generated.pb.go
deleted file mode 100644
index 2e09f4fac..000000000
--- a/vendor/k8s.io/apimachinery/pkg/api/resource/generated.pb.go
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
-Copyright 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.
-*/
-
-// Code generated by protoc-gen-gogo. DO NOT EDIT.
-// source: k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto
-
-package resource
-
-import (
- fmt "fmt"
-
- math "math"
-
- proto "github.com/gogo/protobuf/proto"
-)
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
-
-func (m *Quantity) Reset() { *m = Quantity{} }
-func (*Quantity) ProtoMessage() {}
-func (*Quantity) Descriptor() ([]byte, []int) {
- return fileDescriptor_612bba87bd70906c, []int{0}
-}
-func (m *Quantity) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Quantity.Unmarshal(m, b)
-}
-func (m *Quantity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Quantity.Marshal(b, m, deterministic)
-}
-func (m *Quantity) XXX_Merge(src proto.Message) {
- xxx_messageInfo_Quantity.Merge(m, src)
-}
-func (m *Quantity) XXX_Size() int {
- return xxx_messageInfo_Quantity.Size(m)
-}
-func (m *Quantity) XXX_DiscardUnknown() {
- xxx_messageInfo_Quantity.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Quantity proto.InternalMessageInfo
-
-func init() {
- proto.RegisterType((*Quantity)(nil), "k8s.io.apimachinery.pkg.api.resource.Quantity")
-}
-
-func init() {
- proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto", fileDescriptor_612bba87bd70906c)
-}
-
-var fileDescriptor_612bba87bd70906c = []byte{
- // 237 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x4c, 0x8e, 0xb1, 0x4e, 0xc3, 0x30,
- 0x10, 0x40, 0xcf, 0x0b, 0x2a, 0x19, 0x2b, 0x84, 0x10, 0xc3, 0xa5, 0x42, 0x0c, 0x2c, 0xd8, 0x6b,
- 0xc5, 0xc8, 0xce, 0x00, 0x23, 0x5b, 0x92, 0x1e, 0xae, 0x15, 0xd5, 0x8e, 0x2e, 0x36, 0x52, 0xb7,
- 0x8e, 0x8c, 0x1d, 0x19, 0x9b, 0xbf, 0xe9, 0xd8, 0xb1, 0x03, 0x03, 0x31, 0x3f, 0x82, 0xea, 0x36,
- 0x52, 0xb7, 0x7b, 0xef, 0xf4, 0x4e, 0x97, 0xbd, 0xd4, 0xd3, 0x56, 0x1a, 0xa7, 0xea, 0x50, 0x12,
- 0x5b, 0xf2, 0xd4, 0xaa, 0x4f, 0xb2, 0x33, 0xc7, 0xea, 0xb4, 0x28, 0x1a, 0xb3, 0x28, 0xaa, 0xb9,
- 0xb1, 0xc4, 0x4b, 0xd5, 0xd4, 0xfa, 0x20, 0x14, 0x53, 0xeb, 0x02, 0x57, 0xa4, 0x34, 0x59, 0xe2,
- 0xc2, 0xd3, 0x4c, 0x36, 0xec, 0xbc, 0x1b, 0xdf, 0x1f, 0x2b, 0x79, 0x5e, 0xc9, 0xa6, 0xd6, 0x07,
- 0x21, 0x87, 0xea, 0xf6, 0x51, 0x1b, 0x3f, 0x0f, 0xa5, 0xac, 0xdc, 0x42, 0x69, 0xa7, 0x9d, 0x4a,
- 0x71, 0x19, 0x3e, 0x12, 0x25, 0x48, 0xd3, 0xf1, 0xe8, 0xdd, 0x34, 0x1b, 0xbd, 0x86, 0xc2, 0x7a,
- 0xe3, 0x97, 0xe3, 0xeb, 0xec, 0xa2, 0xf5, 0x6c, 0xac, 0xbe, 0x11, 0x13, 0xf1, 0x70, 0xf9, 0x76,
- 0xa2, 0xa7, 0xab, 0xef, 0x4d, 0x0e, 0x5f, 0x5d, 0x0e, 0xeb, 0x2e, 0x87, 0x4d, 0x97, 0xc3, 0xea,
- 0x67, 0x02, 0xcf, 0x72, 0xdb, 0x23, 0xec, 0x7a, 0x84, 0x7d, 0x8f, 0xb0, 0x8a, 0x28, 0xb6, 0x11,
- 0xc5, 0x2e, 0xa2, 0xd8, 0x47, 0x14, 0xbf, 0x11, 0xc5, 0xfa, 0x0f, 0xe1, 0x7d, 0x34, 0x3c, 0xf6,
- 0x1f, 0x00, 0x00, 0xff, 0xff, 0x3c, 0x08, 0x88, 0x49, 0x0e, 0x01, 0x00, 0x00,
-}
diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto b/vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto
deleted file mode 100644
index 472104d54..000000000
--- a/vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
-Copyright 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.
-*/
-
-
-// This file was autogenerated by go-to-protobuf. Do not edit it manually!
-
-syntax = "proto2";
-
-package k8s.io.apimachinery.pkg.api.resource;
-
-// Package-wide variables from generator "generated".
-option go_package = "resource";
-
-// Quantity is a fixed-point representation of a number.
-// It provides convenient marshaling/unmarshaling in JSON and YAML,
-// in addition to String() and AsInt64() accessors.
-//
-// The serialization format is:
-//
-// <quantity> ::= <signedNumber><suffix>
-// (Note that <suffix> may be empty, from the "" case in <decimalSI>.)
-// <digit> ::= 0 | 1 | ... | 9
-// <digits> ::= <digit> | <digit><digits>
-// <number> ::= <digits> | <digits>.<digits> | <digits>. | .<digits>
-// <sign> ::= "+" | "-"
-// <signedNumber> ::= <number> | <sign><number>
-// <suffix> ::= <binarySI> | <decimalExponent> | <decimalSI>
-// <binarySI> ::= Ki | Mi | Gi | Ti | Pi | Ei
-// (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)
-// <decimalSI> ::= m | "" | k | M | G | T | P | E
-// (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)
-// <decimalExponent> ::= "e" <signedNumber> | "E" <signedNumber>
-//
-// No matter which of the three exponent forms is used, no quantity may represent
-// a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal
-// places. Numbers larger or more precise will be capped or rounded up.
-// (E.g.: 0.1m will rounded up to 1m.)
-// This may be extended in the future if we require larger or smaller quantities.
-//
-// When a Quantity is parsed from a string, it will remember the type of suffix
-// it had, and will use the same type again when it is serialized.
-//
-// Before serializing, Quantity will be put in "canonical form".
-// This means that Exponent/suffix will be adjusted up or down (with a
-// corresponding increase or decrease in Mantissa) such that:
-// a. No precision is lost
-// b. No fractional digits will be emitted
-// c. The exponent (or suffix) is as large as possible.
-// The sign will be omitted unless the number is negative.
-//
-// Examples:
-// 1.5 will be serialized as "1500m"
-// 1.5Gi will be serialized as "1536Mi"
-//
-// Note that the quantity will NEVER be internally represented by a
-// floating point number. That is the whole point of this exercise.
-//
-// Non-canonical values will still parse as long as they are well formed,
-// but will be re-emitted in their canonical form. (So always use canonical
-// form, or don't diff.)
-//
-// This format is intended to make it difficult to use these numbers without
-// writing some sort of special handling code in the hopes that that will
-// cause implementors to also use a fixed point implementation.
-//
-// +protobuf=true
-// +protobuf.embed=string
-// +protobuf.options.marshal=false
-// +protobuf.options.(gogoproto.goproto_stringer)=false
-// +k8s:deepcopy-gen=true
-// +k8s:openapi-gen=true
-message Quantity {
- optional string string = 1;
-}
-
diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/math.go b/vendor/k8s.io/apimachinery/pkg/api/resource/math.go
deleted file mode 100644
index 8ffcb9f09..000000000
--- a/vendor/k8s.io/apimachinery/pkg/api/resource/math.go
+++ /dev/null
@@ -1,310 +0,0 @@
-/*
-Copyright 2014 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 resource
-
-import (
- "math/big"
-
- inf "gopkg.in/inf.v0"
-)
-
-const (
- // maxInt64Factors is the highest value that will be checked when removing factors of 10 from an int64.
- // It is also the maximum decimal digits that can be represented with an int64.
- maxInt64Factors = 18
-)
-
-var (
- // Commonly needed big.Int values-- treat as read only!
- bigTen = big.NewInt(10)
- bigZero = big.NewInt(0)
- bigOne = big.NewInt(1)
- bigThousand = big.NewInt(1000)
- big1024 = big.NewInt(1024)
-
- // Commonly needed inf.Dec values-- treat as read only!
- decZero = inf.NewDec(0, 0)
- decOne = inf.NewDec(1, 0)
-
- // Largest (in magnitude) number allowed.
- maxAllowed = infDecAmount{inf.NewDec((1<<63)-1, 0)} // == max int64
-
- // The maximum value we can represent milli-units for.
- // Compare with the return value of Quantity.Value() to
- // see if it's safe to use Quantity.MilliValue().
- MaxMilliValue = int64(((1 << 63) - 1) / 1000)
-)
-
-const mostNegative = -(mostPositive + 1)
-const mostPositive = 1<<63 - 1
-
-// int64Add returns a+b, or false if that would overflow int64.
-func int64Add(a, b int64) (int64, bool) {
- c := a + b
- switch {
- case a > 0 && b > 0:
- if c < 0 {
- return 0, false
- }
- case a < 0 && b < 0:
- if c > 0 {
- return 0, false
- }
- if a == mostNegative && b == mostNegative {
- return 0, false
- }
- }
- return c, true
-}
-
-// int64Multiply returns a*b, or false if that would overflow or underflow int64.
-func int64Multiply(a, b int64) (int64, bool) {
- if a == 0 || b == 0 || a == 1 || b == 1 {
- return a * b, true
- }
- if a == mostNegative || b == mostNegative {
- return 0, false
- }
- c := a * b
- return c, c/b == a
-}
-
-// int64MultiplyScale returns a*b, assuming b is greater than one, or false if that would overflow or underflow int64.
-// Use when b is known to be greater than one.
-func int64MultiplyScale(a int64, b int64) (int64, bool) {
- if a == 0 || a == 1 {
- return a * b, true
- }
- if a == mostNegative && b != 1 {
- return 0, false
- }
- c := a * b
- return c, c/b == a
-}
-
-// int64MultiplyScale10 multiplies a by 10, or returns false if that would overflow. This method is faster than
-// int64Multiply(a, 10) because the compiler can optimize constant factor multiplication.
-func int64MultiplyScale10(a int64) (int64, bool) {
- if a == 0 || a == 1 {
- return a * 10, true
- }
- if a == mostNegative {
- return 0, false
- }
- c := a * 10
- return c, c/10 == a
-}
-
-// int64MultiplyScale100 multiplies a by 100, or returns false if that would overflow. This method is faster than
-// int64Multiply(a, 100) because the compiler can optimize constant factor multiplication.
-func int64MultiplyScale100(a int64) (int64, bool) {
- if a == 0 || a == 1 {
- return a * 100, true
- }
- if a == mostNegative {
- return 0, false
- }
- c := a * 100
- return c, c/100 == a
-}
-
-// int64MultiplyScale1000 multiplies a by 1000, or returns false if that would overflow. This method is faster than
-// int64Multiply(a, 1000) because the compiler can optimize constant factor multiplication.
-func int64MultiplyScale1000(a int64) (int64, bool) {
- if a == 0 || a == 1 {
- return a * 1000, true
- }
- if a == mostNegative {
- return 0, false
- }
- c := a * 1000
- return c, c/1000 == a
-}
-
-// positiveScaleInt64 multiplies base by 10^scale, returning false if the
-// value overflows. Passing a negative scale is undefined.
-func positiveScaleInt64(base int64, scale Scale) (int64, bool) {
- switch scale {
- case 0:
- return base, true
- case 1:
- return int64MultiplyScale10(base)
- case 2:
- return int64MultiplyScale100(base)
- case 3:
- return int64MultiplyScale1000(base)
- case 6:
- return int64MultiplyScale(base, 1000000)
- case 9:
- return int64MultiplyScale(base, 1000000000)
- default:
- value := base
- var ok bool
- for i := Scale(0); i < scale; i++ {
- if value, ok = int64MultiplyScale(value, 10); !ok {
- return 0, false
- }
- }
- return value, true
- }
-}
-
-// negativeScaleInt64 reduces base by the provided scale, rounding up, until the
-// value is zero or the scale is reached. Passing a negative scale is undefined.
-// The value returned, if not exact, is rounded away from zero.
-func negativeScaleInt64(base int64, scale Scale) (result int64, exact bool) {
- if scale == 0 {
- return base, true
- }
-
- value := base
- var fraction bool
- for i := Scale(0); i < scale; i++ {
- if !fraction && value%10 != 0 {
- fraction = true
- }
- value = value / 10
- if value == 0 {
- if fraction {
- if base > 0 {
- return 1, false
- }
- return -1, false
- }
- return 0, true
- }
- }
- if fraction {
- if base > 0 {
- value++
- } else {
- value--
- }
- }
- return value, !fraction
-}
-
-func pow10Int64(b int64) int64 {
- switch b {
- case 0:
- return 1
- case 1:
- return 10
- case 2:
- return 100
- case 3:
- return 1000
- case 4:
- return 10000
- case 5:
- return 100000
- case 6:
- return 1000000
- case 7:
- return 10000000
- case 8:
- return 100000000
- case 9:
- return 1000000000
- case 10:
- return 10000000000
- case 11:
- return 100000000000
- case 12:
- return 1000000000000
- case 13:
- return 10000000000000
- case 14:
- return 100000000000000
- case 15:
- return 1000000000000000
- case 16:
- return 10000000000000000
- case 17:
- return 100000000000000000
- case 18:
- return 1000000000000000000
- default:
- return 0
- }
-}
-
-// negativeScaleInt64 returns the result of dividing base by scale * 10 and the remainder, or
-// false if no such division is possible. Dividing by negative scales is undefined.
-func divideByScaleInt64(base int64, scale Scale) (result, remainder int64, exact bool) {
- if scale == 0 {
- return base, 0, true
- }
- // the max scale representable in base 10 in an int64 is 18 decimal places
- if scale >= 18 {
- return 0, base, false
- }
- divisor := pow10Int64(int64(scale))
- return base / divisor, base % divisor, true
-}
-
-// removeInt64Factors divides in a loop; the return values have the property that
-// value == result * base ^ scale
-func removeInt64Factors(value int64, base int64) (result int64, times int32) {
- times = 0
- result = value
- negative := result < 0
- if negative {
- result = -result
- }
- switch base {
- // allow the compiler to optimize the common cases
- case 10:
- for result >= 10 && result%10 == 0 {
- times++
- result = result / 10
- }
- // allow the compiler to optimize the common cases
- case 1024:
- for result >= 1024 && result%1024 == 0 {
- times++
- result = result / 1024
- }
- default:
- for result >= base && result%base == 0 {
- times++
- result = result / base
- }
- }
- if negative {
- result = -result
- }
- return result, times
-}
-
-// removeBigIntFactors divides in a loop; the return values have the property that
-// d == result * factor ^ times
-// d may be modified in place.
-// If d == 0, then the return values will be (0, 0)
-func removeBigIntFactors(d, factor *big.Int) (result *big.Int, times int32) {
- q := big.NewInt(0)
- m := big.NewInt(0)
- for d.Cmp(bigZero) != 0 {
- q.DivMod(d, factor, m)
- if m.Cmp(bigZero) != 0 {
- break
- }
- times++
- d, q = q, d
- }
- return d, times
-}
diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/quantity.go b/vendor/k8s.io/apimachinery/pkg/api/resource/quantity.go
deleted file mode 100644
index 2395656cc..000000000
--- a/vendor/k8s.io/apimachinery/pkg/api/resource/quantity.go
+++ /dev/null
@@ -1,776 +0,0 @@
-/*
-Copyright 2014 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 resource
-
-import (
- "bytes"
- "errors"
- "fmt"
- "math"
- "math/big"
- "strconv"
- "strings"
-
- inf "gopkg.in/inf.v0"
-)
-
-// Quantity is a fixed-point representation of a number.
-// It provides convenient marshaling/unmarshaling in JSON and YAML,
-// in addition to String() and AsInt64() accessors.
-//
-// The serialization format is:
-//
-// <quantity> ::= <signedNumber><suffix>
-// (Note that <suffix> may be empty, from the "" case in <decimalSI>.)
-// <digit> ::= 0 | 1 | ... | 9
-// <digits> ::= <digit> | <digit><digits>
-// <number> ::= <digits> | <digits>.<digits> | <digits>. | .<digits>
-// <sign> ::= "+" | "-"
-// <signedNumber> ::= <number> | <sign><number>
-// <suffix> ::= <binarySI> | <decimalExponent> | <decimalSI>
-// <binarySI> ::= Ki | Mi | Gi | Ti | Pi | Ei
-// (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)
-// <decimalSI> ::= m | "" | k | M | G | T | P | E
-// (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)
-// <decimalExponent> ::= "e" <signedNumber> | "E" <signedNumber>
-//
-// No matter which of the three exponent forms is used, no quantity may represent
-// a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal
-// places. Numbers larger or more precise will be capped or rounded up.
-// (E.g.: 0.1m will rounded up to 1m.)
-// This may be extended in the future if we require larger or smaller quantities.
-//
-// When a Quantity is parsed from a string, it will remember the type of suffix
-// it had, and will use the same type again when it is serialized.
-//
-// Before serializing, Quantity will be put in "canonical form".
-// This means that Exponent/suffix will be adjusted up or down (with a
-// corresponding increase or decrease in Mantissa) such that:
-// a. No precision is lost
-// b. No fractional digits will be emitted
-// c. The exponent (or suffix) is as large as possible.
-// The sign will be omitted unless the number is negative.
-//
-// Examples:
-// 1.5 will be serialized as "1500m"
-// 1.5Gi will be serialized as "1536Mi"
-//
-// Note that the quantity will NEVER be internally represented by a
-// floating point number. That is the whole point of this exercise.
-//
-// Non-canonical values will still parse as long as they are well formed,
-// but will be re-emitted in their canonical form. (So always use canonical
-// form, or don't diff.)
-//
-// This format is intended to make it difficult to use these numbers without
-// writing some sort of special handling code in the hopes that that will
-// cause implementors to also use a fixed point implementation.
-//
-// +protobuf=true
-// +protobuf.embed=string
-// +protobuf.options.marshal=false
-// +protobuf.options.(gogoproto.goproto_stringer)=false
-// +k8s:deepcopy-gen=true
-// +k8s:openapi-gen=true
-type Quantity struct {
- // i is the quantity in int64 scaled form, if d.Dec == nil
- i int64Amount
- // d is the quantity in inf.Dec form if d.Dec != nil
- d infDecAmount
- // s is the generated value of this quantity to avoid recalculation
- s string
-
- // Change Format at will. See the comment for Canonicalize for
- // more details.
- Format
-}
-
-// CanonicalValue allows a quantity amount to be converted to a string.
-type CanonicalValue interface {
- // AsCanonicalBytes returns a byte array representing the string representation
- // of the value mantissa and an int32 representing its exponent in base-10. Callers may
- // pass a byte slice to the method to avoid allocations.
- AsCanonicalBytes(out []byte) ([]byte, int32)
- // AsCanonicalBase1024Bytes returns a byte array representing the string representation
- // of the value mantissa and an int32 representing its exponent in base-1024. Callers
- // may pass a byte slice to the method to avoid allocations.
- AsCanonicalBase1024Bytes(out []byte) ([]byte, int32)
-}
-
-// Format lists the three possible formattings of a quantity.
-type Format string
-
-const (
- DecimalExponent = Format("DecimalExponent") // e.g., 12e6
- BinarySI = Format("BinarySI") // e.g., 12Mi (12 * 2^20)
- DecimalSI = Format("DecimalSI") // e.g., 12M (12 * 10^6)
-)
-
-// MustParse turns the given string into a quantity or panics; for tests
-// or other cases where you know the string is valid.
-func MustParse(str string) Quantity {
- q, err := ParseQuantity(str)
- if err != nil {
- panic(fmt.Errorf("cannot parse '%v': %v", str, err))
- }
- return q
-}
-
-const (
- // splitREString is used to separate a number from its suffix; as such,
- // this is overly permissive, but that's OK-- it will be checked later.
- splitREString = "^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$"
-)
-
-var (
- // Errors that could happen while parsing a string.
- ErrFormatWrong = errors.New("quantities must match the regular expression '" + splitREString + "'")
- ErrNumeric = errors.New("unable to parse numeric part of quantity")
- ErrSuffix = errors.New("unable to parse quantity's suffix")
-)
-
-// parseQuantityString is a fast scanner for quantity values.
-func parseQuantityString(str string) (positive bool, value, num, denom, suffix string, err error) {
- positive = true
- pos := 0
- end := len(str)
-
- // handle leading sign
- if pos < end {
- switch str[0] {
- case '-':
- positive = false
- pos++
- case '+':
- pos++
- }
- }
-
- // strip leading zeros
-Zeroes:
- for i := pos; ; i++ {
- if i >= end {
- num = "0"
- value = num
- return
- }
- switch str[i] {
- case '0':
- pos++
- default:
- break Zeroes
- }
- }
-
- // extract the numerator
-Num:
- for i := pos; ; i++ {
- if i >= end {
- num = str[pos:end]
- value = str[0:end]
- return
- }
- switch str[i] {
- case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
- default:
- num = str[pos:i]
- pos = i
- break Num
- }
- }
-
- // if we stripped all numerator positions, always return 0
- if len(num) == 0 {
- num = "0"
- }
-
- // handle a denominator
- if pos < end && str[pos] == '.' {
- pos++
- Denom:
- for i := pos; ; i++ {
- if i >= end {
- denom = str[pos:end]
- value = str[0:end]
- return
- }
- switch str[i] {
- case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
- default:
- denom = str[pos:i]
- pos = i
- break Denom
- }
- }
- // TODO: we currently allow 1.G, but we may not want to in the future.
- // if len(denom) == 0 {
- // err = ErrFormatWrong
- // return
- // }
- }
- value = str[0:pos]
-
- // grab the elements of the suffix
- suffixStart := pos
- for i := pos; ; i++ {
- if i >= end {
- suffix = str[suffixStart:end]
- return
- }
- if !strings.ContainsAny(str[i:i+1], "eEinumkKMGTP") {
- pos = i
- break
- }
- }
- if pos < end {
- switch str[pos] {
- case '-', '+':
- pos++
- }
- }
-Suffix:
- for i := pos; ; i++ {
- if i >= end {
- suffix = str[suffixStart:end]
- return
- }
- switch str[i] {
- case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
- default:
- break Suffix
- }
- }
- // we encountered a non decimal in the Suffix loop, but the last character
- // was not a valid exponent
- err = ErrFormatWrong
- return
-}
-
-// ParseQuantity turns str into a Quantity, or returns an error.
-func ParseQuantity(str string) (Quantity, error) {
- if len(str) == 0 {
- return Quantity{}, ErrFormatWrong
- }
- if str == "0" {
- return Quantity{Format: DecimalSI, s: str}, nil
- }
-
- positive, value, num, denom, suf, err := parseQuantityString(str)
- if err != nil {
- return Quantity{}, err
- }
-
- base, exponent, format, ok := quantitySuffixer.interpret(suffix(suf))
- if !ok {
- return Quantity{}, ErrSuffix
- }
-
- precision := int32(0)
- scale := int32(0)
- mantissa := int64(1)
- switch format {
- case DecimalExponent, DecimalSI:
- scale = exponent
- precision = maxInt64Factors - int32(len(num)+len(denom))
- case BinarySI:
- scale = 0
- switch {
- case exponent >= 0 && len(denom) == 0:
- // only handle positive binary numbers with the fast path
- mantissa = int64(int64(mantissa) << uint64(exponent))
- // 1Mi (2^20) has ~6 digits of decimal precision, so exponent*3/10 -1 is roughly the precision
- precision = 15 - int32(len(num)) - int32(float32(exponent)*3/10) - 1
- default:
- precision = -1
- }
- }
-
- if precision >= 0 {
- // if we have a denominator, shift the entire value to the left by the number of places in the
- // denominator
- scale -= int32(len(denom))
- if scale >= int32(Nano) {
- shifted := num + denom
-
- var value int64
- value, err := strconv.ParseInt(shifted, 10, 64)
- if err != nil {
- return Quantity{}, ErrNumeric
- }
- if result, ok := int64Multiply(value, int64(mantissa)); ok {
- if !positive {
- result = -result
- }
- // if the number is in canonical form, reuse the string
- switch format {
- case BinarySI:
- if exponent%10 == 0 && (value&0x07 != 0) {
- return Quantity{i: int64Amount{value: result, scale: Scale(scale)}, Format: format, s: str}, nil
- }
- default:
- if scale%3 == 0 && !strings.HasSuffix(shifted, "000") && shifted[0] != '0' {
- return Quantity{i: int64Amount{value: result, scale: Scale(scale)}, Format: format, s: str}, nil
- }
- }
- return Quantity{i: int64Amount{value: result, scale: Scale(scale)}, Format: format}, nil
- }
- }
- }
-
- amount := new(inf.Dec)
- if _, ok := amount.SetString(value); !ok {
- return Quantity{}, ErrNumeric
- }
-
- // So that no one but us has to think about suffixes, remove it.
- if base == 10 {
- amount.SetScale(amount.Scale() + Scale(exponent).infScale())
- } else if base == 2 {
- // numericSuffix = 2 ** exponent
- numericSuffix := big.NewInt(1).Lsh(bigOne, uint(exponent))
- ub := amount.UnscaledBig()
- amount.SetUnscaledBig(ub.Mul(ub, numericSuffix))
- }
-
- // Cap at min/max bounds.
- sign := amount.Sign()
- if sign == -1 {
- amount.Neg(amount)
- }
-
- // This rounds non-zero values up to the minimum representable value, under the theory that
- // if you want some resources, you should get some resources, even if you asked for way too small
- // of an amount. Arguably, this should be inf.RoundHalfUp (normal rounding), but that would have
- // the side effect of rounding values < .5n to zero.
- if v, ok := amount.Unscaled(); v != int64(0) || !ok {
- amount.Round(amount, Nano.infScale(), inf.RoundUp)
- }
-
- // The max is just a simple cap.
- // TODO: this prevents accumulating quantities greater than int64, for instance quota across a cluster
- if format == BinarySI && amount.Cmp(maxAllowed.Dec) > 0 {
- amount.Set(maxAllowed.Dec)
- }
-
- if format == BinarySI && amount.Cmp(decOne) < 0 && amount.Cmp(decZero) > 0 {
- // This avoids rounding and hopefully confusion, too.
- format = DecimalSI
- }
- if sign == -1 {
- amount.Neg(amount)
- }
-
- return Quantity{d: infDecAmount{amount}, Format: format}, nil
-}
-
-// DeepCopy returns a deep-copy of the Quantity value. Note that the method
-// receiver is a value, so we can mutate it in-place and return it.
-func (q Quantity) DeepCopy() Quantity {
- if q.d.Dec != nil {
- tmp := &inf.Dec{}
- q.d.Dec = tmp.Set(q.d.Dec)
- }
- return q
-}
-
-// OpenAPISchemaType is used by the kube-openapi generator when constructing
-// the OpenAPI spec of this type.
-//
-// See: https://github.com/kubernetes/kube-openapi/tree/master/pkg/generators
-func (_ Quantity) OpenAPISchemaType() []string { return []string{"string"} }
-
-// OpenAPISchemaFormat is used by the kube-openapi generator when constructing
-// the OpenAPI spec of this type.
-func (_ Quantity) OpenAPISchemaFormat() string { return "" }
-
-// CanonicalizeBytes returns the canonical form of q and its suffix (see comment on Quantity).
-//
-// Note about BinarySI:
-// * If q.Format is set to BinarySI and q.Amount represents a non-zero value between
-// -1 and +1, it will be emitted as if q.Format were DecimalSI.
-// * Otherwise, if q.Format is set to BinarySI, fractional parts of q.Amount will be
-// rounded up. (1.1i becomes 2i.)
-func (q *Quantity) CanonicalizeBytes(out []byte) (result, suffix []byte) {
- if q.IsZero() {
- return zeroBytes, nil
- }
-
- var rounded CanonicalValue
- format := q.Format
- switch format {
- case DecimalExponent, DecimalSI:
- case BinarySI:
- if q.CmpInt64(-1024) > 0 && q.CmpInt64(1024) < 0 {
- // This avoids rounding and hopefully confusion, too.
- format = DecimalSI
- } else {
- var exact bool
- if rounded, exact = q.AsScale(0); !exact {
- // Don't lose precision-- show as DecimalSI
- format = DecimalSI
- }
- }
- default:
- format = DecimalExponent
- }
-
- // TODO: If BinarySI formatting is requested but would cause rounding, upgrade to
- // one of the other formats.
- switch format {
- case DecimalExponent, DecimalSI:
- number, exponent := q.AsCanonicalBytes(out)
- suffix, _ := quantitySuffixer.constructBytes(10, exponent, format)
- return number, suffix
- default:
- // format must be BinarySI
- number, exponent := rounded.AsCanonicalBase1024Bytes(out)
- suffix, _ := quantitySuffixer.constructBytes(2, exponent*10, format)
- return number, suffix
- }
-}
-
-// AsApproximateFloat64 returns a float64 representation of the quantity which may
-// lose precision. If the value of the quantity is outside the range of a float64
-// +Inf/-Inf will be returned.
-func (q *Quantity) AsApproximateFloat64() float64 {
- var base float64
- var exponent int
- if q.d.Dec != nil {
- base, _ = big.NewFloat(0).SetInt(q.d.Dec.UnscaledBig()).Float64()
- exponent = int(-q.d.Dec.Scale())
- } else {
- base = float64(q.i.value)
- exponent = int(q.i.scale)
- }
- if exponent == 0 {
- return base
- }
-
- // multiply by the appropriate exponential scale
- switch q.Format {
- case DecimalExponent, DecimalSI:
- return base * math.Pow10(exponent)
- default:
- // fast path for exponents that can fit in 64 bits
- if exponent > 0 && exponent < 7 {
- return base * float64(int64(1)<<(exponent*10))
- }
- return base * math.Pow(2, float64(exponent*10))
- }
-}
-
-// AsInt64 returns a representation of the current value as an int64 if a fast conversion
-// is possible. If false is returned, callers must use the inf.Dec form of this quantity.
-func (q *Quantity) AsInt64() (int64, bool) {
- if q.d.Dec != nil {
- return 0, false
- }
- return q.i.AsInt64()
-}
-
-// ToDec promotes the quantity in place to use an inf.Dec representation and returns itself.
-func (q *Quantity) ToDec() *Quantity {
- if q.d.Dec == nil {
- q.d.Dec = q.i.AsDec()
- q.i = int64Amount{}
- }
- return q
-}
-
-// AsDec returns the quantity as represented by a scaled inf.Dec.
-func (q *Quantity) AsDec() *inf.Dec {
- if q.d.Dec != nil {
- return q.d.Dec
- }
- q.d.Dec = q.i.AsDec()
- q.i = int64Amount{}
- return q.d.Dec
-}
-
-// AsCanonicalBytes returns the canonical byte representation of this quantity as a mantissa
-// and base 10 exponent. The out byte slice may be passed to the method to avoid an extra
-// allocation.
-func (q *Quantity) AsCanonicalBytes(out []byte) (result []byte, exponent int32) {
- if q.d.Dec != nil {
- return q.d.AsCanonicalBytes(out)
- }
- return q.i.AsCanonicalBytes(out)
-}
-
-// IsZero returns true if the quantity is equal to zero.
-func (q *Quantity) IsZero() bool {
- if q.d.Dec != nil {
- return q.d.Dec.Sign() == 0
- }
- return q.i.value == 0
-}
-
-// Sign returns 0 if the quantity is zero, -1 if the quantity is less than zero, or 1 if the
-// quantity is greater than zero.
-func (q *Quantity) Sign() int {
- if q.d.Dec != nil {
- return q.d.Dec.Sign()
- }
- return q.i.Sign()
-}
-
-// AsScale returns the current value, rounded up to the provided scale, and returns
-// false if the scale resulted in a loss of precision.
-func (q *Quantity) AsScale(scale Scale) (CanonicalValue, bool) {
- if q.d.Dec != nil {
- return q.d.AsScale(scale)
- }
- return q.i.AsScale(scale)
-}
-
-// RoundUp updates the quantity to the provided scale, ensuring that the value is at
-// least 1. False is returned if the rounding operation resulted in a loss of precision.
-// Negative numbers are rounded away from zero (-9 scale 1 rounds to -10).
-func (q *Quantity) RoundUp(scale Scale) bool {
- if q.d.Dec != nil {
- q.s = ""
- d, exact := q.d.AsScale(scale)
- q.d = d
- return exact
- }
- // avoid clearing the string value if we have already calculated it
- if q.i.scale >= scale {
- return true
- }
- q.s = ""
- i, exact := q.i.AsScale(scale)
- q.i = i
- return exact
-}
-
-// Add adds the provide y quantity to the current value. If the current value is zero,
-// the format of the quantity will be updated to the format of y.
-func (q *Quantity) Add(y Quantity) {
- q.s = ""
- if q.d.Dec == nil && y.d.Dec == nil {
- if q.i.value == 0 {
- q.Format = y.Format
- }
- if q.i.Add(y.i) {
- return
- }
- } else if q.IsZero() {
- q.Format = y.Format
- }
- q.ToDec().d.Dec.Add(q.d.Dec, y.AsDec())
-}
-
-// Sub subtracts the provided quantity from the current value in place. If the current
-// value is zero, the format of the quantity will be updated to the format of y.
-func (q *Quantity) Sub(y Quantity) {
- q.s = ""
- if q.IsZero() {
- q.Format = y.Format
- }
- if q.d.Dec == nil && y.d.Dec == nil && q.i.Sub(y.i) {
- return
- }
- q.ToDec().d.Dec.Sub(q.d.Dec, y.AsDec())
-}
-
-// Cmp returns 0 if the quantity is equal to y, -1 if the quantity is less than y, or 1 if the
-// quantity is greater than y.
-func (q *Quantity) Cmp(y Quantity) int {
- if q.d.Dec == nil && y.d.Dec == nil {
- return q.i.Cmp(y.i)
- }
- return q.AsDec().Cmp(y.AsDec())
-}
-
-// CmpInt64 returns 0 if the quantity is equal to y, -1 if the quantity is less than y, or 1 if the
-// quantity is greater than y.
-func (q *Quantity) CmpInt64(y int64) int {
- if q.d.Dec != nil {
- return q.d.Dec.Cmp(inf.NewDec(y, inf.Scale(0)))
- }
- return q.i.Cmp(int64Amount{value: y})
-}
-
-// Neg sets quantity to be the negative value of itself.
-func (q *Quantity) Neg() {
- q.s = ""
- if q.d.Dec == nil {
- q.i.value = -q.i.value
- return
- }
- q.d.Dec.Neg(q.d.Dec)
-}
-
-// Equal checks equality of two Quantities. This is useful for testing with
-// cmp.Equal.
-func (q Quantity) Equal(v Quantity) bool {
- return q.Cmp(v) == 0
-}
-
-// int64QuantityExpectedBytes is the expected width in bytes of the canonical string representation
-// of most Quantity values.
-const int64QuantityExpectedBytes = 18
-
-// String formats the Quantity as a string, caching the result if not calculated.
-// String is an expensive operation and caching this result significantly reduces the cost of
-// normal parse / marshal operations on Quantity.
-func (q *Quantity) String() string {
- if q == nil {
- return "<nil>"
- }
- if len(q.s) == 0 {
- result := make([]byte, 0, int64QuantityExpectedBytes)
- number, suffix := q.CanonicalizeBytes(result)
- number = append(number, suffix...)
- q.s = string(number)
- }
- return q.s
-}
-
-// MarshalJSON implements the json.Marshaller interface.
-func (q Quantity) MarshalJSON() ([]byte, error) {
- if len(q.s) > 0 {
- out := make([]byte, len(q.s)+2)
- out[0], out[len(out)-1] = '"', '"'
- copy(out[1:], q.s)
- return out, nil
- }
- result := make([]byte, int64QuantityExpectedBytes, int64QuantityExpectedBytes)
- result[0] = '"'
- number, suffix := q.CanonicalizeBytes(result[1:1])
- // if the same slice was returned to us that we passed in, avoid another allocation by copying number into
- // the source slice and returning that
- if len(number) > 0 && &number[0] == &result[1] && (len(number)+len(suffix)+2) <= int64QuantityExpectedBytes {
- number = append(number, suffix...)
- number = append(number, '"')
- return result[:1+len(number)], nil
- }
- // if CanonicalizeBytes needed more space than our slice provided, we may need to allocate again so use
- // append
- result = result[:1]
- result = append(result, number...)
- result = append(result, suffix...)
- result = append(result, '"')
- return result, nil
-}
-
-// ToUnstructured implements the value.UnstructuredConverter interface.
-func (q Quantity) ToUnstructured() interface{} {
- return q.String()
-}
-
-// UnmarshalJSON implements the json.Unmarshaller interface.
-// TODO: Remove support for leading/trailing whitespace
-func (q *Quantity) UnmarshalJSON(value []byte) error {
- l := len(value)
- if l == 4 && bytes.Equal(value, []byte("null")) {
- q.d.Dec = nil
- q.i = int64Amount{}
- return nil
- }
- if l >= 2 && value[0] == '"' && value[l-1] == '"' {
- value = value[1 : l-1]
- }
-
- parsed, err := ParseQuantity(strings.TrimSpace(string(value)))
- if err != nil {
- return err
- }
-
- // This copy is safe because parsed will not be referred to again.
- *q = parsed
- return nil
-}
-
-// NewDecimalQuantity returns a new Quantity representing the given
-// value in the given format.
-func NewDecimalQuantity(b inf.Dec, format Format) *Quantity {
- return &Quantity{
- d: infDecAmount{&b},
- Format: format,
- }
-}
-
-// NewQuantity returns a new Quantity representing the given
-// value in the given format.
-func NewQuantity(value int64, format Format) *Quantity {
- return &Quantity{
- i: int64Amount{value: value},
- Format: format,
- }
-}
-
-// NewMilliQuantity returns a new Quantity representing the given
-// value * 1/1000 in the given format. Note that BinarySI formatting
-// will round fractional values, and will be changed to DecimalSI for
-// values x where (-1 < x < 1) && (x != 0).
-func NewMilliQuantity(value int64, format Format) *Quantity {
- return &Quantity{
- i: int64Amount{value: value, scale: -3},
- Format: format,
- }
-}
-
-// NewScaledQuantity returns a new Quantity representing the given
-// value * 10^scale in DecimalSI format.
-func NewScaledQuantity(value int64, scale Scale) *Quantity {
- return &Quantity{
- i: int64Amount{value: value, scale: scale},
- Format: DecimalSI,
- }
-}
-
-// Value returns the unscaled value of q rounded up to the nearest integer away from 0.
-func (q *Quantity) Value() int64 {
- return q.ScaledValue(0)
-}
-
-// MilliValue returns the value of ceil(q * 1000); this could overflow an int64;
-// if that's a concern, call Value() first to verify the number is small enough.
-func (q *Quantity) MilliValue() int64 {
- return q.ScaledValue(Milli)
-}
-
-// ScaledValue returns the value of ceil(q / 10^scale).
-// For example, NewQuantity(1, DecimalSI).ScaledValue(Milli) returns 1000.
-// This could overflow an int64.
-// To detect overflow, call Value() first and verify the expected magnitude.
-func (q *Quantity) ScaledValue(scale Scale) int64 {
- if q.d.Dec == nil {
- i, _ := q.i.AsScaledInt64(scale)
- return i
- }
- dec := q.d.Dec
- return scaledValue(dec.UnscaledBig(), int(dec.Scale()), int(scale.infScale()))
-}
-
-// Set sets q's value to be value.
-func (q *Quantity) Set(value int64) {
- q.SetScaled(value, 0)
-}
-
-// SetMilli sets q's value to be value * 1/1000.
-func (q *Quantity) SetMilli(value int64) {
- q.SetScaled(value, Milli)
-}
-
-// SetScaled sets q's value to be value * 10^scale
-func (q *Quantity) SetScaled(value int64, scale Scale) {
- q.s = ""
- q.d.Dec = nil
- q.i = int64Amount{value: value, scale: scale}
-}
diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/quantity_proto.go b/vendor/k8s.io/apimachinery/pkg/api/resource/quantity_proto.go
deleted file mode 100644
index 3e0cdb10d..000000000
--- a/vendor/k8s.io/apimachinery/pkg/api/resource/quantity_proto.go
+++ /dev/null
@@ -1,288 +0,0 @@
-/*
-Copyright 2015 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 resource
-
-import (
- "fmt"
- "io"
- "math/bits"
-
- "github.com/gogo/protobuf/proto"
-)
-
-var _ proto.Sizer = &Quantity{}
-
-func (m *Quantity) Marshal() (data []byte, err error) {
- size := m.Size()
- data = make([]byte, size)
- n, err := m.MarshalToSizedBuffer(data[:size])
- if err != nil {
- return nil, err
- }
- return data[:n], nil
-}
-
-// MarshalTo is a customized version of the generated Protobuf unmarshaler for a struct
-// with a single string field.
-func (m *Quantity) MarshalTo(data []byte) (int, error) {
- size := m.Size()
- return m.MarshalToSizedBuffer(data[:size])
-}
-
-// MarshalToSizedBuffer is a customized version of the generated
-// Protobuf unmarshaler for a struct with a single string field.
-func (m *Quantity) MarshalToSizedBuffer(data []byte) (int, error) {
- i := len(data)
- _ = i
- var l int
- _ = l
-
- // BEGIN CUSTOM MARSHAL
- out := m.String()
- i -= len(out)
- copy(data[i:], out)
- i = encodeVarintGenerated(data, i, uint64(len(out)))
- // END CUSTOM MARSHAL
- i--
- data[i] = 0xa
-
- return len(data) - i, nil
-}
-
-func encodeVarintGenerated(data []byte, offset int, v uint64) int {
- offset -= sovGenerated(v)
- base := offset
- for v >= 1<<7 {
- data[offset] = uint8(v&0x7f | 0x80)
- v >>= 7
- offset++
- }
- data[offset] = uint8(v)
- return base
-}
-
-func (m *Quantity) Size() (n int) {
- var l int
- _ = l
-
- // BEGIN CUSTOM SIZE
- l = len(m.String())
- // END CUSTOM SIZE
-
- n += 1 + l + sovGenerated(uint64(l))
- return n
-}
-
-func sovGenerated(x uint64) (n int) {
- return (bits.Len64(x|1) + 6) / 7
-}
-
-// Unmarshal is a customized version of the generated Protobuf unmarshaler for a struct
-// with a single string field.
-func (m *Quantity) Unmarshal(data []byte) error {
- l := len(data)
- iNdEx := 0
- for iNdEx < l {
- preIndex := iNdEx
- var wire uint64
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowGenerated
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := data[iNdEx]
- iNdEx++
- wire |= (uint64(b) & 0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- fieldNum := int32(wire >> 3)
- wireType := int(wire & 0x7)
- if wireType == 4 {
- return fmt.Errorf("proto: Quantity: wiretype end group for non-group")
- }
- if fieldNum <= 0 {
- return fmt.Errorf("proto: Quantity: illegal tag %d (wire type %d)", fieldNum, wire)
- }
- switch fieldNum {
- case 1:
- if wireType != 2 {
- return fmt.Errorf("proto: wrong wireType = %d for field String_", wireType)
- }
- var stringLen uint64
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowGenerated
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := data[iNdEx]
- iNdEx++
- stringLen |= (uint64(b) & 0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- intStringLen := int(stringLen)
- if intStringLen < 0 {
- return ErrInvalidLengthGenerated
- }
- postIndex := iNdEx + intStringLen
- if postIndex > l {
- return io.ErrUnexpectedEOF
- }
- s := string(data[iNdEx:postIndex])
-
- // BEGIN CUSTOM DECODE
- p, err := ParseQuantity(s)
- if err != nil {
- return err
- }
- *m = p
- // END CUSTOM DECODE
-
- iNdEx = postIndex
- default:
- iNdEx = preIndex
- skippy, err := skipGenerated(data[iNdEx:])
- if err != nil {
- return err
- }
- if (skippy < 0) || (iNdEx+skippy) < 0 {
- return ErrInvalidLengthGenerated
- }
- if (iNdEx + skippy) > l {
- return io.ErrUnexpectedEOF
- }
- iNdEx += skippy
- }
- }
-
- if iNdEx > l {
- return io.ErrUnexpectedEOF
- }
- return nil
-}
-
-func skipGenerated(data []byte) (n int, err error) {
- l := len(data)
- iNdEx := 0
- for iNdEx < l {
- var wire uint64
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return 0, ErrIntOverflowGenerated
- }
- if iNdEx >= l {
- return 0, io.ErrUnexpectedEOF
- }
- b := data[iNdEx]
- iNdEx++
- wire |= (uint64(b) & 0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- wireType := int(wire & 0x7)
- switch wireType {
- case 0:
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return 0, ErrIntOverflowGenerated
- }
- if iNdEx >= l {
- return 0, io.ErrUnexpectedEOF
- }
- iNdEx++
- if data[iNdEx-1] < 0x80 {
- break
- }
- }
- return iNdEx, nil
- case 1:
- iNdEx += 8
- return iNdEx, nil
- case 2:
- var length int
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return 0, ErrIntOverflowGenerated
- }
- if iNdEx >= l {
- return 0, io.ErrUnexpectedEOF
- }
- b := data[iNdEx]
- iNdEx++
- length |= (int(b) & 0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- iNdEx += length
- if length < 0 {
- return 0, ErrInvalidLengthGenerated
- }
- return iNdEx, nil
- case 3:
- for {
- var innerWire uint64
- var start int = iNdEx
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return 0, ErrIntOverflowGenerated
- }
- if iNdEx >= l {
- return 0, io.ErrUnexpectedEOF
- }
- b := data[iNdEx]
- iNdEx++
- innerWire |= (uint64(b) & 0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- innerWireType := int(innerWire & 0x7)
- if innerWireType == 4 {
- break
- }
- next, err := skipGenerated(data[start:])
- if err != nil {
- return 0, err
- }
- iNdEx = start + next
- }
- return iNdEx, nil
- case 4:
- return iNdEx, nil
- case 5:
- iNdEx += 4
- return iNdEx, nil
- default:
- return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
- }
- }
- panic("unreachable")
-}
-
-var (
- ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling")
- ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow")
-)
diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/scale_int.go b/vendor/k8s.io/apimachinery/pkg/api/resource/scale_int.go
deleted file mode 100644
index 55e177b0e..000000000
--- a/vendor/k8s.io/apimachinery/pkg/api/resource/scale_int.go
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
-Copyright 2015 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 resource
-
-import (
- "math"
- "math/big"
- "sync"
-)
-
-var (
- // A sync pool to reduce allocation.
- intPool sync.Pool
- maxInt64 = big.NewInt(math.MaxInt64)
-)
-
-func init() {
- intPool.New = func() interface{} {
- return &big.Int{}
- }
-}
-
-// scaledValue scales given unscaled value from scale to new Scale and returns
-// an int64. It ALWAYS rounds up the result when scale down. The final result might
-// overflow.
-//
-// scale, newScale represents the scale of the unscaled decimal.
-// The mathematical value of the decimal is unscaled * 10**(-scale).
-func scaledValue(unscaled *big.Int, scale, newScale int) int64 {
- dif := scale - newScale
- if dif == 0 {
- return unscaled.Int64()
- }
-
- // Handle scale up
- // This is an easy case, we do not need to care about rounding and overflow.
- // If any intermediate operation causes overflow, the result will overflow.
- if dif < 0 {
- return unscaled.Int64() * int64(math.Pow10(-dif))
- }
-
- // Handle scale down
- // We have to be careful about the intermediate operations.
-
- // fast path when unscaled < max.Int64 and exp(10,dif) < max.Int64
- const log10MaxInt64 = 19
- if unscaled.Cmp(maxInt64) < 0 && dif < log10MaxInt64 {
- divide := int64(math.Pow10(dif))
- result := unscaled.Int64() / divide
- mod := unscaled.Int64() % divide
- if mod != 0 {
- return result + 1
- }
- return result
- }
-
- // We should only convert back to int64 when getting the result.
- divisor := intPool.Get().(*big.Int)
- exp := intPool.Get().(*big.Int)
- result := intPool.Get().(*big.Int)
- defer func() {
- intPool.Put(divisor)
- intPool.Put(exp)
- intPool.Put(result)
- }()
-
- // divisor = 10^(dif)
- // TODO: create loop up table if exp costs too much.
- divisor.Exp(bigTen, exp.SetInt64(int64(dif)), nil)
- // reuse exp
- remainder := exp
-
- // result = unscaled / divisor
- // remainder = unscaled % divisor
- result.DivMod(unscaled, divisor, remainder)
- if remainder.Sign() != 0 {
- return result.Int64() + 1
- }
-
- return result.Int64()
-}
diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/suffix.go b/vendor/k8s.io/apimachinery/pkg/api/resource/suffix.go
deleted file mode 100644
index 5ed7abe66..000000000
--- a/vendor/k8s.io/apimachinery/pkg/api/resource/suffix.go
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
-Copyright 2014 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 resource
-
-import (
- "strconv"
-)
-
-type suffix string
-
-// suffixer can interpret and construct suffixes.
-type suffixer interface {
- interpret(suffix) (base, exponent int32, fmt Format, ok bool)
- construct(base, exponent int32, fmt Format) (s suffix, ok bool)
- constructBytes(base, exponent int32, fmt Format) (s []byte, ok bool)
-}
-
-// quantitySuffixer handles suffixes for all three formats that quantity
-// can handle.
-var quantitySuffixer = newSuffixer()
-
-type bePair struct {
- base, exponent int32
-}
-
-type listSuffixer struct {
- suffixToBE map[suffix]bePair
- beToSuffix map[bePair]suffix
- beToSuffixBytes map[bePair][]byte
-}
-
-func (ls *listSuffixer) addSuffix(s suffix, pair bePair) {
- if ls.suffixToBE == nil {
- ls.suffixToBE = map[suffix]bePair{}
- }
- if ls.beToSuffix == nil {
- ls.beToSuffix = map[bePair]suffix{}
- }
- if ls.beToSuffixBytes == nil {
- ls.beToSuffixBytes = map[bePair][]byte{}
- }
- ls.suffixToBE[s] = pair
- ls.beToSuffix[pair] = s
- ls.beToSuffixBytes[pair] = []byte(s)
-}
-
-func (ls *listSuffixer) lookup(s suffix) (base, exponent int32, ok bool) {
- pair, ok := ls.suffixToBE[s]
- if !ok {
- return 0, 0, false
- }
- return pair.base, pair.exponent, true
-}
-
-func (ls *listSuffixer) construct(base, exponent int32) (s suffix, ok bool) {
- s, ok = ls.beToSuffix[bePair{base, exponent}]
- return
-}
-
-func (ls *listSuffixer) constructBytes(base, exponent int32) (s []byte, ok bool) {
- s, ok = ls.beToSuffixBytes[bePair{base, exponent}]
- return
-}
-
-type suffixHandler struct {
- decSuffixes listSuffixer
- binSuffixes listSuffixer
-}
-
-type fastLookup struct {
- *suffixHandler
-}
-
-func (l fastLookup) interpret(s suffix) (base, exponent int32, format Format, ok bool) {
- switch s {
- case "":
- return 10, 0, DecimalSI, true
- case "n":
- return 10, -9, DecimalSI, true
- case "u":
- return 10, -6, DecimalSI, true
- case "m":
- return 10, -3, DecimalSI, true
- case "k":
- return 10, 3, DecimalSI, true
- case "M":
- return 10, 6, DecimalSI, true
- case "G":
- return 10, 9, DecimalSI, true
- }
- return l.suffixHandler.interpret(s)
-}
-
-func newSuffixer() suffixer {
- sh := &suffixHandler{}
-
- // IMPORTANT: if you change this section you must change fastLookup
-
- sh.binSuffixes.addSuffix("Ki", bePair{2, 10})
- sh.binSuffixes.addSuffix("Mi", bePair{2, 20})
- sh.binSuffixes.addSuffix("Gi", bePair{2, 30})
- sh.binSuffixes.addSuffix("Ti", bePair{2, 40})
- sh.binSuffixes.addSuffix("Pi", bePair{2, 50})
- sh.binSuffixes.addSuffix("Ei", bePair{2, 60})
- // Don't emit an error when trying to produce
- // a suffix for 2^0.
- sh.decSuffixes.addSuffix("", bePair{2, 0})
-
- sh.decSuffixes.addSuffix("n", bePair{10, -9})
- sh.decSuffixes.addSuffix("u", bePair{10, -6})
- sh.decSuffixes.addSuffix("m", bePair{10, -3})
- sh.decSuffixes.addSuffix("", bePair{10, 0})
- sh.decSuffixes.addSuffix("k", bePair{10, 3})
- sh.decSuffixes.addSuffix("M", bePair{10, 6})
- sh.decSuffixes.addSuffix("G", bePair{10, 9})
- sh.decSuffixes.addSuffix("T", bePair{10, 12})
- sh.decSuffixes.addSuffix("P", bePair{10, 15})
- sh.decSuffixes.addSuffix("E", bePair{10, 18})
-
- return fastLookup{sh}
-}
-
-func (sh *suffixHandler) construct(base, exponent int32, fmt Format) (s suffix, ok bool) {
- switch fmt {
- case DecimalSI:
- return sh.decSuffixes.construct(base, exponent)
- case BinarySI:
- return sh.binSuffixes.construct(base, exponent)
- case DecimalExponent:
- if base != 10 {
- return "", false
- }
- if exponent == 0 {
- return "", true
- }
- return suffix("e" + strconv.FormatInt(int64(exponent), 10)), true
- }
- return "", false
-}
-
-func (sh *suffixHandler) constructBytes(base, exponent int32, format Format) (s []byte, ok bool) {
- switch format {
- case DecimalSI:
- return sh.decSuffixes.constructBytes(base, exponent)
- case BinarySI:
- return sh.binSuffixes.constructBytes(base, exponent)
- case DecimalExponent:
- if base != 10 {
- return nil, false
- }
- if exponent == 0 {
- return nil, true
- }
- result := make([]byte, 8, 8)
- result[0] = 'e'
- number := strconv.AppendInt(result[1:1], int64(exponent), 10)
- if &result[1] == &number[0] {
- return result[:1+len(number)], true
- }
- result = append(result[:1], number...)
- return result, true
- }
- return nil, false
-}
-
-func (sh *suffixHandler) interpret(suffix suffix) (base, exponent int32, fmt Format, ok bool) {
- // Try lookup tables first
- if b, e, ok := sh.decSuffixes.lookup(suffix); ok {
- return b, e, DecimalSI, true
- }
- if b, e, ok := sh.binSuffixes.lookup(suffix); ok {
- return b, e, BinarySI, true
- }
-
- if len(suffix) > 1 && (suffix[0] == 'E' || suffix[0] == 'e') {
- parsed, err := strconv.ParseInt(string(suffix[1:]), 10, 64)
- if err != nil {
- return 0, 0, DecimalExponent, false
- }
- return 10, int32(parsed), DecimalExponent, true
- }
-
- return 0, 0, DecimalExponent, false
-}
diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/zz_generated.deepcopy.go b/vendor/k8s.io/apimachinery/pkg/api/resource/zz_generated.deepcopy.go
deleted file mode 100644
index ab4740790..000000000
--- a/vendor/k8s.io/apimachinery/pkg/api/resource/zz_generated.deepcopy.go
+++ /dev/null
@@ -1,27 +0,0 @@
-// +build !ignore_autogenerated
-
-/*
-Copyright 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.
-*/
-
-// Code generated by deepcopy-gen. DO NOT EDIT.
-
-package resource
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *Quantity) DeepCopyInto(out *Quantity) {
- *out = in.DeepCopy()
- return
-}