mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 20:24:09 +00:00
Merge pull request #31033 from mml/evict
Automatic merge from submit-queue Implementation of the /eviction subresource.
This commit is contained in:
commit
df22dd70b8
@ -8552,6 +8552,67 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"path": "/api/v1/namespaces/{namespace}/pods/{name}/eviction",
|
||||||
|
"description": "API at /api/v1",
|
||||||
|
"operations": [
|
||||||
|
{
|
||||||
|
"type": "v1alpha1.Eviction",
|
||||||
|
"method": "POST",
|
||||||
|
"summary": "create eviction of a Eviction",
|
||||||
|
"nickname": "createNamespacedEvictionEviction",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"paramType": "query",
|
||||||
|
"name": "pretty",
|
||||||
|
"description": "If 'true', then the output is pretty printed.",
|
||||||
|
"required": false,
|
||||||
|
"allowMultiple": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "v1alpha1.Eviction",
|
||||||
|
"paramType": "body",
|
||||||
|
"name": "body",
|
||||||
|
"description": "",
|
||||||
|
"required": true,
|
||||||
|
"allowMultiple": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"paramType": "path",
|
||||||
|
"name": "namespace",
|
||||||
|
"description": "object name and auth scope, such as for teams and projects",
|
||||||
|
"required": true,
|
||||||
|
"allowMultiple": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"paramType": "path",
|
||||||
|
"name": "name",
|
||||||
|
"description": "name of the Eviction",
|
||||||
|
"required": true,
|
||||||
|
"allowMultiple": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responseMessages": [
|
||||||
|
{
|
||||||
|
"code": 200,
|
||||||
|
"message": "OK",
|
||||||
|
"responseModel": "v1alpha1.Eviction"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json",
|
||||||
|
"application/yaml",
|
||||||
|
"application/vnd.kubernetes.protobuf"
|
||||||
|
],
|
||||||
|
"consumes": [
|
||||||
|
"*/*"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"path": "/api/v1/namespaces/{namespace}/pods/{name}/exec",
|
"path": "/api/v1/namespaces/{namespace}/pods/{name}/exec",
|
||||||
"description": "API at /api/v1",
|
"description": "API at /api/v1",
|
||||||
@ -18821,6 +18882,28 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"v1alpha1.Eviction": {
|
||||||
|
"id": "v1alpha1.Eviction",
|
||||||
|
"description": "Eviction evicts a pod from its node subject to certain policies and safety constraints. This is a subresource of Pod. A request to cause such an eviction is created by POSTing to .../pods/foo/evictions.",
|
||||||
|
"properties": {
|
||||||
|
"kind": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds"
|
||||||
|
},
|
||||||
|
"apiVersion": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources"
|
||||||
|
},
|
||||||
|
"metadata": {
|
||||||
|
"$ref": "v1.ObjectMeta",
|
||||||
|
"description": "ObjectMeta describes the pod that is being evicted."
|
||||||
|
},
|
||||||
|
"deleteOptions": {
|
||||||
|
"$ref": "v1.DeleteOptions",
|
||||||
|
"description": "DeleteOptions may be provided"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"v1.PodTemplateList": {
|
"v1.PodTemplateList": {
|
||||||
"id": "v1.PodTemplateList",
|
"id": "v1.PodTemplateList",
|
||||||
"description": "PodTemplateList is a list of PodTemplates.",
|
"description": "PodTemplateList is a list of PodTemplates.",
|
||||||
|
@ -6658,6 +6658,61 @@ The resulting set of endpoints can be viewed as:<br>
|
|||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="sect2">
|
||||||
|
<h3 id="_v1alpha1_eviction">v1alpha1.Eviction</h3>
|
||||||
|
<div class="paragraph">
|
||||||
|
<p>Eviction evicts a pod from its node subject to certain policies and safety constraints. This is a subresource of Pod. A request to cause such an eviction is created by POSTing to …/pods/foo/evictions.</p>
|
||||||
|
</div>
|
||||||
|
<table class="tableblock frame-all grid-all" style="width:100%; ">
|
||||||
|
<colgroup>
|
||||||
|
<col style="width:20%;">
|
||||||
|
<col style="width:20%;">
|
||||||
|
<col style="width:20%;">
|
||||||
|
<col style="width:20%;">
|
||||||
|
<col style="width:20%;">
|
||||||
|
</colgroup>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th class="tableblock halign-left valign-top">Name</th>
|
||||||
|
<th class="tableblock halign-left valign-top">Description</th>
|
||||||
|
<th class="tableblock halign-left valign-top">Required</th>
|
||||||
|
<th class="tableblock halign-left valign-top">Schema</th>
|
||||||
|
<th class="tableblock halign-left valign-top">Default</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="tableblock halign-left valign-top"><p class="tableblock">kind</p></td>
|
||||||
|
<td class="tableblock halign-left valign-top"><p class="tableblock">Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: <a href="http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds">http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds</a></p></td>
|
||||||
|
<td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td>
|
||||||
|
<td class="tableblock halign-left valign-top"><p class="tableblock">string</p></td>
|
||||||
|
<td class="tableblock halign-left valign-top"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="tableblock halign-left valign-top"><p class="tableblock">apiVersion</p></td>
|
||||||
|
<td class="tableblock halign-left valign-top"><p class="tableblock">APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: <a href="http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources">http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources</a></p></td>
|
||||||
|
<td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td>
|
||||||
|
<td class="tableblock halign-left valign-top"><p class="tableblock">string</p></td>
|
||||||
|
<td class="tableblock halign-left valign-top"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="tableblock halign-left valign-top"><p class="tableblock">metadata</p></td>
|
||||||
|
<td class="tableblock halign-left valign-top"><p class="tableblock">ObjectMeta describes the pod that is being evicted.</p></td>
|
||||||
|
<td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td>
|
||||||
|
<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_v1_objectmeta">v1.ObjectMeta</a></p></td>
|
||||||
|
<td class="tableblock halign-left valign-top"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="tableblock halign-left valign-top"><p class="tableblock">deleteOptions</p></td>
|
||||||
|
<td class="tableblock halign-left valign-top"><p class="tableblock">DeleteOptions may be provided</p></td>
|
||||||
|
<td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td>
|
||||||
|
<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_v1_deleteoptions">v1.DeleteOptions</a></p></td>
|
||||||
|
<td class="tableblock halign-left valign-top"></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="sect2">
|
<div class="sect2">
|
||||||
<h3 id="_v1_awselasticblockstorevolumesource">v1.AWSElasticBlockStoreVolumeSource</h3>
|
<h3 id="_v1_awselasticblockstorevolumesource">v1.AWSElasticBlockStoreVolumeSource</h3>
|
||||||
@ -8292,7 +8347,7 @@ The resulting set of endpoints can be viewed as:<br>
|
|||||||
</div>
|
</div>
|
||||||
<div id="footer">
|
<div id="footer">
|
||||||
<div id="footer-text">
|
<div id="footer-text">
|
||||||
Last updated 2016-08-21 13:01:40 UTC
|
Last updated 2016-08-22 23:33:31 UTC
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -50,6 +50,7 @@ func addKnownTypes(scheme *runtime.Scheme) error {
|
|||||||
&PodDisruptionBudget{},
|
&PodDisruptionBudget{},
|
||||||
&PodDisruptionBudgetList{},
|
&PodDisruptionBudgetList{},
|
||||||
&api.ListOptions{},
|
&api.ListOptions{},
|
||||||
|
&Eviction{},
|
||||||
)
|
)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -1320,15 +1320,330 @@ func (x *PodDisruptionBudgetList) codecDecodeSelfFromArray(l int, d *codec1978.D
|
|||||||
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (x *Eviction) CodecEncodeSelf(e *codec1978.Encoder) {
|
||||||
|
var h codecSelfer1234
|
||||||
|
z, r := codec1978.GenHelperEncoder(e)
|
||||||
|
_, _, _ = h, z, r
|
||||||
|
if x == nil {
|
||||||
|
r.EncodeNil()
|
||||||
|
} else {
|
||||||
|
yym112 := z.EncBinary()
|
||||||
|
_ = yym112
|
||||||
|
if false {
|
||||||
|
} else if z.HasExtensions() && z.EncExt(x) {
|
||||||
|
} else {
|
||||||
|
yysep113 := !z.EncBinary()
|
||||||
|
yy2arr113 := z.EncBasicHandle().StructToArray
|
||||||
|
var yyq113 [4]bool
|
||||||
|
_, _, _ = yysep113, yyq113, yy2arr113
|
||||||
|
const yyr113 bool = false
|
||||||
|
yyq113[0] = x.Kind != ""
|
||||||
|
yyq113[1] = x.APIVersion != ""
|
||||||
|
yyq113[2] = true
|
||||||
|
yyq113[3] = x.DeleteOptions != nil
|
||||||
|
var yynn113 int
|
||||||
|
if yyr113 || yy2arr113 {
|
||||||
|
r.EncodeArrayStart(4)
|
||||||
|
} else {
|
||||||
|
yynn113 = 0
|
||||||
|
for _, b := range yyq113 {
|
||||||
|
if b {
|
||||||
|
yynn113++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
r.EncodeMapStart(yynn113)
|
||||||
|
yynn113 = 0
|
||||||
|
}
|
||||||
|
if yyr113 || yy2arr113 {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if yyq113[0] {
|
||||||
|
yym115 := z.EncBinary()
|
||||||
|
_ = yym115
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string(x.Kind))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, "")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if yyq113[0] {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapKey1234)
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string("kind"))
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapValue1234)
|
||||||
|
yym116 := z.EncBinary()
|
||||||
|
_ = yym116
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string(x.Kind))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if yyr113 || yy2arr113 {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if yyq113[1] {
|
||||||
|
yym118 := z.EncBinary()
|
||||||
|
_ = yym118
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, "")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if yyq113[1] {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapKey1234)
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string("apiVersion"))
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapValue1234)
|
||||||
|
yym119 := z.EncBinary()
|
||||||
|
_ = yym119
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if yyr113 || yy2arr113 {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if yyq113[2] {
|
||||||
|
yy121 := &x.ObjectMeta
|
||||||
|
yy121.CodecEncodeSelf(e)
|
||||||
|
} else {
|
||||||
|
r.EncodeNil()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if yyq113[2] {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapKey1234)
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string("metadata"))
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapValue1234)
|
||||||
|
yy122 := &x.ObjectMeta
|
||||||
|
yy122.CodecEncodeSelf(e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if yyr113 || yy2arr113 {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if yyq113[3] {
|
||||||
|
if x.DeleteOptions == nil {
|
||||||
|
r.EncodeNil()
|
||||||
|
} else {
|
||||||
|
x.DeleteOptions.CodecEncodeSelf(e)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
r.EncodeNil()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if yyq113[3] {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapKey1234)
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string("deleteOptions"))
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapValue1234)
|
||||||
|
if x.DeleteOptions == nil {
|
||||||
|
r.EncodeNil()
|
||||||
|
} else {
|
||||||
|
x.DeleteOptions.CodecEncodeSelf(e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if yyr113 || yy2arr113 {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
} else {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapEnd1234)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Eviction) CodecDecodeSelf(d *codec1978.Decoder) {
|
||||||
|
var h codecSelfer1234
|
||||||
|
z, r := codec1978.GenHelperDecoder(d)
|
||||||
|
_, _, _ = h, z, r
|
||||||
|
yym124 := z.DecBinary()
|
||||||
|
_ = yym124
|
||||||
|
if false {
|
||||||
|
} else if z.HasExtensions() && z.DecExt(x) {
|
||||||
|
} else {
|
||||||
|
yyct125 := r.ContainerType()
|
||||||
|
if yyct125 == codecSelferValueTypeMap1234 {
|
||||||
|
yyl125 := r.ReadMapStart()
|
||||||
|
if yyl125 == 0 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerMapEnd1234)
|
||||||
|
} else {
|
||||||
|
x.codecDecodeSelfFromMap(yyl125, d)
|
||||||
|
}
|
||||||
|
} else if yyct125 == codecSelferValueTypeArray1234 {
|
||||||
|
yyl125 := r.ReadArrayStart()
|
||||||
|
if yyl125 == 0 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
} else {
|
||||||
|
x.codecDecodeSelfFromArray(yyl125, d)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Eviction) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) {
|
||||||
|
var h codecSelfer1234
|
||||||
|
z, r := codec1978.GenHelperDecoder(d)
|
||||||
|
_, _, _ = h, z, r
|
||||||
|
var yys126Slc = z.DecScratchBuffer() // default slice to decode into
|
||||||
|
_ = yys126Slc
|
||||||
|
var yyhl126 bool = l >= 0
|
||||||
|
for yyj126 := 0; ; yyj126++ {
|
||||||
|
if yyhl126 {
|
||||||
|
if yyj126 >= l {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if r.CheckBreak() {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerMapKey1234)
|
||||||
|
yys126Slc = r.DecodeBytes(yys126Slc, true, true)
|
||||||
|
yys126 := string(yys126Slc)
|
||||||
|
z.DecSendContainerState(codecSelfer_containerMapValue1234)
|
||||||
|
switch yys126 {
|
||||||
|
case "kind":
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.Kind = ""
|
||||||
|
} else {
|
||||||
|
x.Kind = string(r.DecodeString())
|
||||||
|
}
|
||||||
|
case "apiVersion":
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.APIVersion = ""
|
||||||
|
} else {
|
||||||
|
x.APIVersion = string(r.DecodeString())
|
||||||
|
}
|
||||||
|
case "metadata":
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.ObjectMeta = pkg3_api.ObjectMeta{}
|
||||||
|
} else {
|
||||||
|
yyv129 := &x.ObjectMeta
|
||||||
|
yyv129.CodecDecodeSelf(d)
|
||||||
|
}
|
||||||
|
case "deleteOptions":
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
if x.DeleteOptions != nil {
|
||||||
|
x.DeleteOptions = nil
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if x.DeleteOptions == nil {
|
||||||
|
x.DeleteOptions = new(pkg3_api.DeleteOptions)
|
||||||
|
}
|
||||||
|
x.DeleteOptions.CodecDecodeSelf(d)
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
z.DecStructFieldNotFound(-1, yys126)
|
||||||
|
} // end switch yys126
|
||||||
|
} // end for yyj126
|
||||||
|
z.DecSendContainerState(codecSelfer_containerMapEnd1234)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Eviction) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
|
||||||
|
var h codecSelfer1234
|
||||||
|
z, r := codec1978.GenHelperDecoder(d)
|
||||||
|
_, _, _ = h, z, r
|
||||||
|
var yyj131 int
|
||||||
|
var yyb131 bool
|
||||||
|
var yyhl131 bool = l >= 0
|
||||||
|
yyj131++
|
||||||
|
if yyhl131 {
|
||||||
|
yyb131 = yyj131 > l
|
||||||
|
} else {
|
||||||
|
yyb131 = r.CheckBreak()
|
||||||
|
}
|
||||||
|
if yyb131 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.Kind = ""
|
||||||
|
} else {
|
||||||
|
x.Kind = string(r.DecodeString())
|
||||||
|
}
|
||||||
|
yyj131++
|
||||||
|
if yyhl131 {
|
||||||
|
yyb131 = yyj131 > l
|
||||||
|
} else {
|
||||||
|
yyb131 = r.CheckBreak()
|
||||||
|
}
|
||||||
|
if yyb131 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.APIVersion = ""
|
||||||
|
} else {
|
||||||
|
x.APIVersion = string(r.DecodeString())
|
||||||
|
}
|
||||||
|
yyj131++
|
||||||
|
if yyhl131 {
|
||||||
|
yyb131 = yyj131 > l
|
||||||
|
} else {
|
||||||
|
yyb131 = r.CheckBreak()
|
||||||
|
}
|
||||||
|
if yyb131 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.ObjectMeta = pkg3_api.ObjectMeta{}
|
||||||
|
} else {
|
||||||
|
yyv134 := &x.ObjectMeta
|
||||||
|
yyv134.CodecDecodeSelf(d)
|
||||||
|
}
|
||||||
|
yyj131++
|
||||||
|
if yyhl131 {
|
||||||
|
yyb131 = yyj131 > l
|
||||||
|
} else {
|
||||||
|
yyb131 = r.CheckBreak()
|
||||||
|
}
|
||||||
|
if yyb131 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
if x.DeleteOptions != nil {
|
||||||
|
x.DeleteOptions = nil
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if x.DeleteOptions == nil {
|
||||||
|
x.DeleteOptions = new(pkg3_api.DeleteOptions)
|
||||||
|
}
|
||||||
|
x.DeleteOptions.CodecDecodeSelf(d)
|
||||||
|
}
|
||||||
|
for {
|
||||||
|
yyj131++
|
||||||
|
if yyhl131 {
|
||||||
|
yyb131 = yyj131 > l
|
||||||
|
} else {
|
||||||
|
yyb131 = r.CheckBreak()
|
||||||
|
}
|
||||||
|
if yyb131 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
z.DecStructFieldNotFound(yyj131-1, "")
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
}
|
||||||
|
|
||||||
func (x codecSelfer1234) encSlicePodDisruptionBudget(v []PodDisruptionBudget, e *codec1978.Encoder) {
|
func (x codecSelfer1234) encSlicePodDisruptionBudget(v []PodDisruptionBudget, e *codec1978.Encoder) {
|
||||||
var h codecSelfer1234
|
var h codecSelfer1234
|
||||||
z, r := codec1978.GenHelperEncoder(e)
|
z, r := codec1978.GenHelperEncoder(e)
|
||||||
_, _, _ = h, z, r
|
_, _, _ = h, z, r
|
||||||
r.EncodeArrayStart(len(v))
|
r.EncodeArrayStart(len(v))
|
||||||
for _, yyv112 := range v {
|
for _, yyv136 := range v {
|
||||||
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
|
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
yy113 := &yyv112
|
yy137 := &yyv136
|
||||||
yy113.CodecEncodeSelf(e)
|
yy137.CodecEncodeSelf(e)
|
||||||
}
|
}
|
||||||
z.EncSendContainerState(codecSelfer_containerArrayEnd1234)
|
z.EncSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
}
|
}
|
||||||
@ -1338,83 +1653,83 @@ func (x codecSelfer1234) decSlicePodDisruptionBudget(v *[]PodDisruptionBudget, d
|
|||||||
z, r := codec1978.GenHelperDecoder(d)
|
z, r := codec1978.GenHelperDecoder(d)
|
||||||
_, _, _ = h, z, r
|
_, _, _ = h, z, r
|
||||||
|
|
||||||
yyv114 := *v
|
yyv138 := *v
|
||||||
yyh114, yyl114 := z.DecSliceHelperStart()
|
yyh138, yyl138 := z.DecSliceHelperStart()
|
||||||
var yyc114 bool
|
var yyc138 bool
|
||||||
if yyl114 == 0 {
|
if yyl138 == 0 {
|
||||||
if yyv114 == nil {
|
if yyv138 == nil {
|
||||||
yyv114 = []PodDisruptionBudget{}
|
yyv138 = []PodDisruptionBudget{}
|
||||||
yyc114 = true
|
yyc138 = true
|
||||||
} else if len(yyv114) != 0 {
|
} else if len(yyv138) != 0 {
|
||||||
yyv114 = yyv114[:0]
|
yyv138 = yyv138[:0]
|
||||||
yyc114 = true
|
yyc138 = true
|
||||||
}
|
}
|
||||||
} else if yyl114 > 0 {
|
} else if yyl138 > 0 {
|
||||||
var yyrr114, yyrl114 int
|
var yyrr138, yyrl138 int
|
||||||
var yyrt114 bool
|
var yyrt138 bool
|
||||||
if yyl114 > cap(yyv114) {
|
if yyl138 > cap(yyv138) {
|
||||||
|
|
||||||
yyrg114 := len(yyv114) > 0
|
yyrg138 := len(yyv138) > 0
|
||||||
yyv2114 := yyv114
|
yyv2138 := yyv138
|
||||||
yyrl114, yyrt114 = z.DecInferLen(yyl114, z.DecBasicHandle().MaxInitLen, 296)
|
yyrl138, yyrt138 = z.DecInferLen(yyl138, z.DecBasicHandle().MaxInitLen, 296)
|
||||||
if yyrt114 {
|
if yyrt138 {
|
||||||
if yyrl114 <= cap(yyv114) {
|
if yyrl138 <= cap(yyv138) {
|
||||||
yyv114 = yyv114[:yyrl114]
|
yyv138 = yyv138[:yyrl138]
|
||||||
} else {
|
} else {
|
||||||
yyv114 = make([]PodDisruptionBudget, yyrl114)
|
yyv138 = make([]PodDisruptionBudget, yyrl138)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
yyv114 = make([]PodDisruptionBudget, yyrl114)
|
yyv138 = make([]PodDisruptionBudget, yyrl138)
|
||||||
}
|
}
|
||||||
yyc114 = true
|
yyc138 = true
|
||||||
yyrr114 = len(yyv114)
|
yyrr138 = len(yyv138)
|
||||||
if yyrg114 {
|
if yyrg138 {
|
||||||
copy(yyv114, yyv2114)
|
copy(yyv138, yyv2138)
|
||||||
}
|
}
|
||||||
} else if yyl114 != len(yyv114) {
|
} else if yyl138 != len(yyv138) {
|
||||||
yyv114 = yyv114[:yyl114]
|
yyv138 = yyv138[:yyl138]
|
||||||
yyc114 = true
|
yyc138 = true
|
||||||
}
|
}
|
||||||
yyj114 := 0
|
yyj138 := 0
|
||||||
for ; yyj114 < yyrr114; yyj114++ {
|
for ; yyj138 < yyrr138; yyj138++ {
|
||||||
yyh114.ElemContainerState(yyj114)
|
yyh138.ElemContainerState(yyj138)
|
||||||
if r.TryDecodeAsNil() {
|
if r.TryDecodeAsNil() {
|
||||||
yyv114[yyj114] = PodDisruptionBudget{}
|
yyv138[yyj138] = PodDisruptionBudget{}
|
||||||
} else {
|
} else {
|
||||||
yyv115 := &yyv114[yyj114]
|
yyv139 := &yyv138[yyj138]
|
||||||
yyv115.CodecDecodeSelf(d)
|
yyv139.CodecDecodeSelf(d)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
if yyrt114 {
|
if yyrt138 {
|
||||||
for ; yyj114 < yyl114; yyj114++ {
|
for ; yyj138 < yyl138; yyj138++ {
|
||||||
yyv114 = append(yyv114, PodDisruptionBudget{})
|
yyv138 = append(yyv138, PodDisruptionBudget{})
|
||||||
yyh114.ElemContainerState(yyj114)
|
yyh138.ElemContainerState(yyj138)
|
||||||
if r.TryDecodeAsNil() {
|
if r.TryDecodeAsNil() {
|
||||||
yyv114[yyj114] = PodDisruptionBudget{}
|
yyv138[yyj138] = PodDisruptionBudget{}
|
||||||
} else {
|
} else {
|
||||||
yyv116 := &yyv114[yyj114]
|
yyv140 := &yyv138[yyj138]
|
||||||
yyv116.CodecDecodeSelf(d)
|
yyv140.CodecDecodeSelf(d)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
yyj114 := 0
|
yyj138 := 0
|
||||||
for ; !r.CheckBreak(); yyj114++ {
|
for ; !r.CheckBreak(); yyj138++ {
|
||||||
|
|
||||||
if yyj114 >= len(yyv114) {
|
if yyj138 >= len(yyv138) {
|
||||||
yyv114 = append(yyv114, PodDisruptionBudget{}) // var yyz114 PodDisruptionBudget
|
yyv138 = append(yyv138, PodDisruptionBudget{}) // var yyz138 PodDisruptionBudget
|
||||||
yyc114 = true
|
yyc138 = true
|
||||||
}
|
}
|
||||||
yyh114.ElemContainerState(yyj114)
|
yyh138.ElemContainerState(yyj138)
|
||||||
if yyj114 < len(yyv114) {
|
if yyj138 < len(yyv138) {
|
||||||
if r.TryDecodeAsNil() {
|
if r.TryDecodeAsNil() {
|
||||||
yyv114[yyj114] = PodDisruptionBudget{}
|
yyv138[yyj138] = PodDisruptionBudget{}
|
||||||
} else {
|
} else {
|
||||||
yyv117 := &yyv114[yyj114]
|
yyv141 := &yyv138[yyj138]
|
||||||
yyv117.CodecDecodeSelf(d)
|
yyv141.CodecDecodeSelf(d)
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@ -1422,16 +1737,16 @@ func (x codecSelfer1234) decSlicePodDisruptionBudget(v *[]PodDisruptionBudget, d
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
if yyj114 < len(yyv114) {
|
if yyj138 < len(yyv138) {
|
||||||
yyv114 = yyv114[:yyj114]
|
yyv138 = yyv138[:yyj138]
|
||||||
yyc114 = true
|
yyc138 = true
|
||||||
} else if yyj114 == 0 && yyv114 == nil {
|
} else if yyj138 == 0 && yyv138 == nil {
|
||||||
yyv114 = []PodDisruptionBudget{}
|
yyv138 = []PodDisruptionBudget{}
|
||||||
yyc114 = true
|
yyc138 = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
yyh114.End()
|
yyh138.End()
|
||||||
if yyc114 {
|
if yyc138 {
|
||||||
*v = yyv114
|
*v = yyv138
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -69,3 +69,16 @@ type PodDisruptionBudgetList struct {
|
|||||||
unversioned.ListMeta `json:"metadata,omitempty"`
|
unversioned.ListMeta `json:"metadata,omitempty"`
|
||||||
Items []PodDisruptionBudget `json:"items"`
|
Items []PodDisruptionBudget `json:"items"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Eviction evicts a pod from its node subject to certain policies and safety constraints.
|
||||||
|
// This is a subresource of Pod. A request to cause such an eviction is
|
||||||
|
// created by POSTing to .../pods/foo/evictions.
|
||||||
|
type Eviction struct {
|
||||||
|
unversioned.TypeMeta `json:",inline"`
|
||||||
|
|
||||||
|
// ObjectMeta describes the pod that is being evicted.
|
||||||
|
api.ObjectMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
|
// DeleteOptions may be provided
|
||||||
|
DeleteOptions *api.DeleteOptions `json:"deleteOptions,omitempty"`
|
||||||
|
}
|
||||||
|
@ -25,6 +25,7 @@ limitations under the License.
|
|||||||
k8s.io/kubernetes/pkg/apis/policy/v1alpha1/generated.proto
|
k8s.io/kubernetes/pkg/apis/policy/v1alpha1/generated.proto
|
||||||
|
|
||||||
It has these top-level messages:
|
It has these top-level messages:
|
||||||
|
Eviction
|
||||||
PodDisruptionBudget
|
PodDisruptionBudget
|
||||||
PodDisruptionBudgetList
|
PodDisruptionBudgetList
|
||||||
PodDisruptionBudgetSpec
|
PodDisruptionBudgetSpec
|
||||||
@ -37,6 +38,7 @@ import fmt "fmt"
|
|||||||
import math "math"
|
import math "math"
|
||||||
|
|
||||||
import k8s_io_kubernetes_pkg_api_unversioned "k8s.io/kubernetes/pkg/api/unversioned"
|
import k8s_io_kubernetes_pkg_api_unversioned "k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
|
import k8s_io_kubernetes_pkg_api_v1 "k8s.io/kubernetes/pkg/api/v1"
|
||||||
|
|
||||||
import strings "strings"
|
import strings "strings"
|
||||||
import reflect "reflect"
|
import reflect "reflect"
|
||||||
@ -52,30 +54,71 @@ var _ = math.Inf
|
|||||||
// is compatible with the proto package it is being compiled against.
|
// is compatible with the proto package it is being compiled against.
|
||||||
const _ = proto.GoGoProtoPackageIsVersion1
|
const _ = proto.GoGoProtoPackageIsVersion1
|
||||||
|
|
||||||
|
func (m *Eviction) Reset() { *m = Eviction{} }
|
||||||
|
func (*Eviction) ProtoMessage() {}
|
||||||
|
func (*Eviction) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} }
|
||||||
|
|
||||||
func (m *PodDisruptionBudget) Reset() { *m = PodDisruptionBudget{} }
|
func (m *PodDisruptionBudget) Reset() { *m = PodDisruptionBudget{} }
|
||||||
func (*PodDisruptionBudget) ProtoMessage() {}
|
func (*PodDisruptionBudget) ProtoMessage() {}
|
||||||
func (*PodDisruptionBudget) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{0} }
|
func (*PodDisruptionBudget) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} }
|
||||||
|
|
||||||
func (m *PodDisruptionBudgetList) Reset() { *m = PodDisruptionBudgetList{} }
|
func (m *PodDisruptionBudgetList) Reset() { *m = PodDisruptionBudgetList{} }
|
||||||
func (*PodDisruptionBudgetList) ProtoMessage() {}
|
func (*PodDisruptionBudgetList) ProtoMessage() {}
|
||||||
func (*PodDisruptionBudgetList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} }
|
func (*PodDisruptionBudgetList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} }
|
||||||
|
|
||||||
func (m *PodDisruptionBudgetSpec) Reset() { *m = PodDisruptionBudgetSpec{} }
|
func (m *PodDisruptionBudgetSpec) Reset() { *m = PodDisruptionBudgetSpec{} }
|
||||||
func (*PodDisruptionBudgetSpec) ProtoMessage() {}
|
func (*PodDisruptionBudgetSpec) ProtoMessage() {}
|
||||||
func (*PodDisruptionBudgetSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} }
|
func (*PodDisruptionBudgetSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} }
|
||||||
|
|
||||||
func (m *PodDisruptionBudgetStatus) Reset() { *m = PodDisruptionBudgetStatus{} }
|
func (m *PodDisruptionBudgetStatus) Reset() { *m = PodDisruptionBudgetStatus{} }
|
||||||
func (*PodDisruptionBudgetStatus) ProtoMessage() {}
|
func (*PodDisruptionBudgetStatus) ProtoMessage() {}
|
||||||
func (*PodDisruptionBudgetStatus) Descriptor() ([]byte, []int) {
|
func (*PodDisruptionBudgetStatus) Descriptor() ([]byte, []int) {
|
||||||
return fileDescriptorGenerated, []int{3}
|
return fileDescriptorGenerated, []int{4}
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
proto.RegisterType((*Eviction)(nil), "k8s.io.kubernetes.pkg.apis.policy.v1alpha1.Eviction")
|
||||||
proto.RegisterType((*PodDisruptionBudget)(nil), "k8s.io.kubernetes.pkg.apis.policy.v1alpha1.PodDisruptionBudget")
|
proto.RegisterType((*PodDisruptionBudget)(nil), "k8s.io.kubernetes.pkg.apis.policy.v1alpha1.PodDisruptionBudget")
|
||||||
proto.RegisterType((*PodDisruptionBudgetList)(nil), "k8s.io.kubernetes.pkg.apis.policy.v1alpha1.PodDisruptionBudgetList")
|
proto.RegisterType((*PodDisruptionBudgetList)(nil), "k8s.io.kubernetes.pkg.apis.policy.v1alpha1.PodDisruptionBudgetList")
|
||||||
proto.RegisterType((*PodDisruptionBudgetSpec)(nil), "k8s.io.kubernetes.pkg.apis.policy.v1alpha1.PodDisruptionBudgetSpec")
|
proto.RegisterType((*PodDisruptionBudgetSpec)(nil), "k8s.io.kubernetes.pkg.apis.policy.v1alpha1.PodDisruptionBudgetSpec")
|
||||||
proto.RegisterType((*PodDisruptionBudgetStatus)(nil), "k8s.io.kubernetes.pkg.apis.policy.v1alpha1.PodDisruptionBudgetStatus")
|
proto.RegisterType((*PodDisruptionBudgetStatus)(nil), "k8s.io.kubernetes.pkg.apis.policy.v1alpha1.PodDisruptionBudgetStatus")
|
||||||
}
|
}
|
||||||
|
func (m *Eviction) Marshal() (data []byte, err error) {
|
||||||
|
size := m.Size()
|
||||||
|
data = make([]byte, size)
|
||||||
|
n, err := m.MarshalTo(data)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return data[:n], nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Eviction) MarshalTo(data []byte) (int, error) {
|
||||||
|
var i int
|
||||||
|
_ = i
|
||||||
|
var l int
|
||||||
|
_ = l
|
||||||
|
data[i] = 0xa
|
||||||
|
i++
|
||||||
|
i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size()))
|
||||||
|
n1, err := m.ObjectMeta.MarshalTo(data[i:])
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
i += n1
|
||||||
|
if m.DeleteOptions != nil {
|
||||||
|
data[i] = 0x12
|
||||||
|
i++
|
||||||
|
i = encodeVarintGenerated(data, i, uint64(m.DeleteOptions.Size()))
|
||||||
|
n2, err := m.DeleteOptions.MarshalTo(data[i:])
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
i += n2
|
||||||
|
}
|
||||||
|
return i, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (m *PodDisruptionBudget) Marshal() (data []byte, err error) {
|
func (m *PodDisruptionBudget) Marshal() (data []byte, err error) {
|
||||||
size := m.Size()
|
size := m.Size()
|
||||||
data = make([]byte, size)
|
data = make([]byte, size)
|
||||||
@ -94,27 +137,27 @@ func (m *PodDisruptionBudget) MarshalTo(data []byte) (int, error) {
|
|||||||
data[i] = 0xa
|
data[i] = 0xa
|
||||||
i++
|
i++
|
||||||
i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size()))
|
i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size()))
|
||||||
n1, err := m.ObjectMeta.MarshalTo(data[i:])
|
n3, err := m.ObjectMeta.MarshalTo(data[i:])
|
||||||
if err != nil {
|
|
||||||
return 0, err
|
|
||||||
}
|
|
||||||
i += n1
|
|
||||||
data[i] = 0x12
|
|
||||||
i++
|
|
||||||
i = encodeVarintGenerated(data, i, uint64(m.Spec.Size()))
|
|
||||||
n2, err := m.Spec.MarshalTo(data[i:])
|
|
||||||
if err != nil {
|
|
||||||
return 0, err
|
|
||||||
}
|
|
||||||
i += n2
|
|
||||||
data[i] = 0x1a
|
|
||||||
i++
|
|
||||||
i = encodeVarintGenerated(data, i, uint64(m.Status.Size()))
|
|
||||||
n3, err := m.Status.MarshalTo(data[i:])
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
i += n3
|
i += n3
|
||||||
|
data[i] = 0x12
|
||||||
|
i++
|
||||||
|
i = encodeVarintGenerated(data, i, uint64(m.Spec.Size()))
|
||||||
|
n4, err := m.Spec.MarshalTo(data[i:])
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
i += n4
|
||||||
|
data[i] = 0x1a
|
||||||
|
i++
|
||||||
|
i = encodeVarintGenerated(data, i, uint64(m.Status.Size()))
|
||||||
|
n5, err := m.Status.MarshalTo(data[i:])
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
i += n5
|
||||||
return i, nil
|
return i, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -136,11 +179,11 @@ func (m *PodDisruptionBudgetList) MarshalTo(data []byte) (int, error) {
|
|||||||
data[i] = 0xa
|
data[i] = 0xa
|
||||||
i++
|
i++
|
||||||
i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size()))
|
i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size()))
|
||||||
n4, err := m.ListMeta.MarshalTo(data[i:])
|
n6, err := m.ListMeta.MarshalTo(data[i:])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
i += n4
|
i += n6
|
||||||
if len(m.Items) > 0 {
|
if len(m.Items) > 0 {
|
||||||
for _, msg := range m.Items {
|
for _, msg := range m.Items {
|
||||||
data[i] = 0x12
|
data[i] = 0x12
|
||||||
@ -174,20 +217,20 @@ func (m *PodDisruptionBudgetSpec) MarshalTo(data []byte) (int, error) {
|
|||||||
data[i] = 0xa
|
data[i] = 0xa
|
||||||
i++
|
i++
|
||||||
i = encodeVarintGenerated(data, i, uint64(m.MinAvailable.Size()))
|
i = encodeVarintGenerated(data, i, uint64(m.MinAvailable.Size()))
|
||||||
n5, err := m.MinAvailable.MarshalTo(data[i:])
|
n7, err := m.MinAvailable.MarshalTo(data[i:])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
i += n5
|
i += n7
|
||||||
if m.Selector != nil {
|
if m.Selector != nil {
|
||||||
data[i] = 0x12
|
data[i] = 0x12
|
||||||
i++
|
i++
|
||||||
i = encodeVarintGenerated(data, i, uint64(m.Selector.Size()))
|
i = encodeVarintGenerated(data, i, uint64(m.Selector.Size()))
|
||||||
n6, err := m.Selector.MarshalTo(data[i:])
|
n8, err := m.Selector.MarshalTo(data[i:])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
i += n6
|
i += n8
|
||||||
}
|
}
|
||||||
return i, nil
|
return i, nil
|
||||||
}
|
}
|
||||||
@ -254,6 +297,18 @@ func encodeVarintGenerated(data []byte, offset int, v uint64) int {
|
|||||||
data[offset] = uint8(v)
|
data[offset] = uint8(v)
|
||||||
return offset + 1
|
return offset + 1
|
||||||
}
|
}
|
||||||
|
func (m *Eviction) Size() (n int) {
|
||||||
|
var l int
|
||||||
|
_ = l
|
||||||
|
l = m.ObjectMeta.Size()
|
||||||
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
|
if m.DeleteOptions != nil {
|
||||||
|
l = m.DeleteOptions.Size()
|
||||||
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
|
}
|
||||||
|
return n
|
||||||
|
}
|
||||||
|
|
||||||
func (m *PodDisruptionBudget) Size() (n int) {
|
func (m *PodDisruptionBudget) Size() (n int) {
|
||||||
var l int
|
var l int
|
||||||
_ = l
|
_ = l
|
||||||
@ -315,6 +370,17 @@ func sovGenerated(x uint64) (n int) {
|
|||||||
func sozGenerated(x uint64) (n int) {
|
func sozGenerated(x uint64) (n int) {
|
||||||
return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63))))
|
return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63))))
|
||||||
}
|
}
|
||||||
|
func (this *Eviction) String() string {
|
||||||
|
if this == nil {
|
||||||
|
return "nil"
|
||||||
|
}
|
||||||
|
s := strings.Join([]string{`&Eviction{`,
|
||||||
|
`ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_kubernetes_pkg_api_v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
|
||||||
|
`DeleteOptions:` + strings.Replace(fmt.Sprintf("%v", this.DeleteOptions), "DeleteOptions", "k8s_io_kubernetes_pkg_api_v1.DeleteOptions", 1) + `,`,
|
||||||
|
`}`,
|
||||||
|
}, "")
|
||||||
|
return s
|
||||||
|
}
|
||||||
func (this *PodDisruptionBudget) String() string {
|
func (this *PodDisruptionBudget) String() string {
|
||||||
if this == nil {
|
if this == nil {
|
||||||
return "nil"
|
return "nil"
|
||||||
@ -370,6 +436,119 @@ func valueToStringGenerated(v interface{}) string {
|
|||||||
pv := reflect.Indirect(rv).Interface()
|
pv := reflect.Indirect(rv).Interface()
|
||||||
return fmt.Sprintf("*%v", pv)
|
return fmt.Sprintf("*%v", pv)
|
||||||
}
|
}
|
||||||
|
func (m *Eviction) 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: Eviction: wiretype end group for non-group")
|
||||||
|
}
|
||||||
|
if fieldNum <= 0 {
|
||||||
|
return fmt.Errorf("proto: Eviction: illegal tag %d (wire type %d)", fieldNum, wire)
|
||||||
|
}
|
||||||
|
switch fieldNum {
|
||||||
|
case 1:
|
||||||
|
if wireType != 2 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType)
|
||||||
|
}
|
||||||
|
var msglen int
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := data[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
msglen |= (int(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if msglen < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postIndex := iNdEx + msglen
|
||||||
|
if postIndex > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
if err := m.ObjectMeta.Unmarshal(data[iNdEx:postIndex]); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
iNdEx = postIndex
|
||||||
|
case 2:
|
||||||
|
if wireType != 2 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field DeleteOptions", wireType)
|
||||||
|
}
|
||||||
|
var msglen int
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := data[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
msglen |= (int(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if msglen < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postIndex := iNdEx + msglen
|
||||||
|
if postIndex > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
if m.DeleteOptions == nil {
|
||||||
|
m.DeleteOptions = &k8s_io_kubernetes_pkg_api_v1.DeleteOptions{}
|
||||||
|
}
|
||||||
|
if err := m.DeleteOptions.Unmarshal(data[iNdEx:postIndex]); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
iNdEx = postIndex
|
||||||
|
default:
|
||||||
|
iNdEx = preIndex
|
||||||
|
skippy, err := skipGenerated(data[iNdEx:])
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if skippy < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
if (iNdEx + skippy) > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
iNdEx += skippy
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if iNdEx > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
func (m *PodDisruptionBudget) Unmarshal(data []byte) error {
|
func (m *PodDisruptionBudget) Unmarshal(data []byte) error {
|
||||||
l := len(data)
|
l := len(data)
|
||||||
iNdEx := 0
|
iNdEx := 0
|
||||||
@ -967,43 +1146,46 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var fileDescriptorGenerated = []byte{
|
var fileDescriptorGenerated = []byte{
|
||||||
// 607 bytes of a gzipped FileDescriptorProto
|
// 648 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xa4, 0x94, 0xdf, 0x6a, 0x13, 0x4f,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xb4, 0x94, 0xdf, 0x6a, 0xd4, 0x4e,
|
||||||
0x14, 0xc7, 0x9b, 0xfe, 0x23, 0xcc, 0x2f, 0xbf, 0xa2, 0x6b, 0xd1, 0x18, 0xa4, 0x95, 0x5c, 0x95,
|
0x14, 0xc7, 0xbb, 0xfd, 0xc7, 0x32, 0xbf, 0x6d, 0xf9, 0x35, 0x16, 0x5d, 0x17, 0x69, 0x65, 0xaf,
|
||||||
0x62, 0x67, 0x69, 0x51, 0x28, 0x5e, 0x28, 0xdd, 0xb6, 0x60, 0xc5, 0x52, 0xd9, 0xdc, 0x88, 0xa0,
|
0x4a, 0xb5, 0x13, 0x5a, 0x14, 0x8a, 0x17, 0x4a, 0xd3, 0x16, 0xac, 0x58, 0x2a, 0xe9, 0x8d, 0x08,
|
||||||
0x30, 0xbb, 0x7b, 0xdc, 0x8c, 0xd9, 0xdd, 0x59, 0x66, 0x66, 0xa3, 0xbd, 0xf3, 0x11, 0x7c, 0x05,
|
0x0a, 0x93, 0xe4, 0x98, 0x1d, 0x9b, 0x64, 0xc2, 0xcc, 0x64, 0xb5, 0x77, 0x3e, 0x82, 0xaf, 0xe0,
|
||||||
0x1f, 0x46, 0xc8, 0x65, 0x2f, 0xbd, 0x0a, 0xda, 0xbe, 0x88, 0xb3, 0xb3, 0x93, 0x34, 0x9b, 0x64,
|
0xc3, 0x08, 0xc5, 0xab, 0x5e, 0x7a, 0xb5, 0x68, 0xfb, 0x22, 0x4e, 0x26, 0xb3, 0xdb, 0xcd, 0xee,
|
||||||
0xa5, 0xd0, 0x8b, 0x03, 0x39, 0x3b, 0xe7, 0xf3, 0x3d, 0x7f, 0x09, 0x7a, 0xde, 0xdb, 0x17, 0x98,
|
0xa6, 0x14, 0x8a, 0x17, 0x03, 0x39, 0x33, 0xe7, 0xf3, 0x3d, 0x7f, 0xe6, 0x4c, 0xd0, 0xb3, 0x93,
|
||||||
0x32, 0xbb, 0x97, 0x79, 0xc0, 0x13, 0x90, 0x20, 0xec, 0xb4, 0x17, 0xda, 0x24, 0xa5, 0xea, 0x07,
|
0x6d, 0x81, 0x29, 0xb3, 0x4f, 0x32, 0x0f, 0x78, 0x02, 0x12, 0x84, 0x9d, 0x9e, 0x84, 0x36, 0x49,
|
||||||
0x8b, 0xa8, 0x7f, 0x6e, 0xf7, 0x77, 0x49, 0x94, 0x76, 0xc9, 0xae, 0x1d, 0x42, 0x02, 0x9c, 0x48,
|
0xa9, 0xfa, 0x60, 0x11, 0xf5, 0x4f, 0xed, 0xee, 0x26, 0x89, 0xd2, 0x0e, 0xd9, 0xb4, 0x43, 0x48,
|
||||||
0x08, 0x70, 0xca, 0x99, 0x64, 0xd6, 0x76, 0xc1, 0xe2, 0x6b, 0x16, 0x2b, 0x16, 0xe7, 0x2c, 0x2e,
|
0x80, 0x13, 0x09, 0x01, 0x4e, 0x39, 0x93, 0xcc, 0x5a, 0x2f, 0x58, 0x7c, 0xc5, 0x62, 0xc5, 0xe2,
|
||||||
0x58, 0x3c, 0x62, 0x5b, 0x3b, 0x21, 0x95, 0xdd, 0xcc, 0xc3, 0x3e, 0x8b, 0xed, 0x90, 0x85, 0xcc,
|
0x9c, 0xc5, 0x05, 0x8b, 0xfb, 0x6c, 0x6b, 0x23, 0xa4, 0xb2, 0x93, 0x79, 0xd8, 0x67, 0xb1, 0x1d,
|
||||||
0xd6, 0x12, 0x5e, 0xf6, 0x49, 0x7b, 0xda, 0xd1, 0xbf, 0x0a, 0xe9, 0xd6, 0x5e, 0x65, 0x59, 0x36,
|
0xb2, 0x90, 0xd9, 0x5a, 0xc2, 0xcb, 0x3e, 0x6a, 0x4b, 0x1b, 0xfa, 0xab, 0x90, 0x6e, 0x6d, 0x55,
|
||||||
0x07, 0xc1, 0x32, 0xee, 0xc3, 0x74, 0x39, 0xad, 0x67, 0xd5, 0x4c, 0x96, 0xf4, 0x81, 0x0b, 0xca,
|
0xa6, 0x65, 0x73, 0x10, 0x2c, 0xe3, 0x3e, 0x8c, 0xa6, 0xd3, 0x7a, 0x5a, 0xcd, 0x64, 0x49, 0x17,
|
||||||
0x12, 0x08, 0x66, 0xb0, 0x27, 0xd5, 0x58, 0x7f, 0xa6, 0xe7, 0xd6, 0xce, 0xfc, 0x68, 0x9e, 0x25,
|
0xb8, 0xa0, 0x2c, 0x81, 0x60, 0x0c, 0x7b, 0x5c, 0x8d, 0x75, 0xc7, 0x6a, 0x6e, 0x6d, 0x4c, 0xf6,
|
||||||
0x92, 0xc6, 0xb3, 0x35, 0xed, 0xce, 0x0f, 0xcf, 0x24, 0x8d, 0x6c, 0x9a, 0x48, 0x21, 0xf9, 0x34,
|
0xe6, 0x59, 0x22, 0x69, 0x3c, 0x9e, 0xd3, 0xe6, 0x64, 0xf7, 0x4c, 0xd2, 0xc8, 0xa6, 0x89, 0x14,
|
||||||
0xd2, 0xfe, 0xb9, 0x88, 0xee, 0xbd, 0x65, 0xc1, 0x11, 0x15, 0x3c, 0x4b, 0xa5, 0xaa, 0xd9, 0xc9,
|
0x92, 0x8f, 0x22, 0xed, 0x9f, 0x35, 0x54, 0xdf, 0xef, 0x52, 0x5f, 0xaa, 0x74, 0xad, 0xb7, 0xa8,
|
||||||
0x82, 0x10, 0xa4, 0xf5, 0x0e, 0xd5, 0x63, 0x90, 0x24, 0x20, 0x92, 0x34, 0x6b, 0x8f, 0x6b, 0x5b,
|
0x1e, 0x83, 0x24, 0x01, 0x91, 0xa4, 0x59, 0x7b, 0x58, 0x5b, 0xfb, 0x6f, 0x6b, 0x0d, 0x57, 0x76,
|
||||||
0xff, 0xed, 0x6d, 0xe1, 0xca, 0x05, 0xa8, 0xc1, 0xe3, 0x33, 0xef, 0x33, 0xf8, 0xf2, 0x54, 0x31,
|
0x5d, 0x75, 0x1b, 0x1f, 0x79, 0x9f, 0xc0, 0x97, 0x87, 0x8a, 0x71, 0xac, 0xb3, 0xde, 0xea, 0xd4,
|
||||||
0x8e, 0x35, 0x18, 0x6e, 0x2e, 0x5c, 0x0e, 0x37, 0xd1, 0xf5, 0x37, 0x77, 0xac, 0x66, 0x01, 0x5a,
|
0x45, 0x6f, 0x15, 0x5d, 0xed, 0xb9, 0x03, 0x35, 0x2b, 0x40, 0x0b, 0x01, 0x44, 0x0a, 0x3f, 0x4a,
|
||||||
0x16, 0x29, 0xf8, 0xcd, 0x45, 0xad, 0x7a, 0x88, 0x6f, 0xbe, 0x56, 0x3c, 0xa7, 0xd0, 0x8e, 0x92,
|
0xf3, 0x48, 0xa2, 0x39, 0xad, 0xe5, 0x1f, 0x5d, 0x2f, 0xbf, 0x37, 0x8c, 0x38, 0x4b, 0x4a, 0x7d,
|
||||||
0x72, 0x1a, 0x26, 0xe1, 0x72, 0xee, 0xb9, 0x5a, 0xde, 0x8a, 0xd1, 0xaa, 0x90, 0x44, 0x66, 0xa2,
|
0xa1, 0xb4, 0xe5, 0x96, 0x45, 0xdb, 0x3f, 0xa6, 0xd1, 0x9d, 0x37, 0x2c, 0xd8, 0xa3, 0x82, 0x67,
|
||||||
0xb9, 0xa4, 0x13, 0x1d, 0xdf, 0x36, 0x91, 0x16, 0x73, 0xd6, 0x4c, 0xaa, 0xd5, 0xc2, 0x77, 0x4d,
|
0x7a, 0xcb, 0xc9, 0x82, 0x10, 0xe4, 0x3f, 0xac, 0x0b, 0xd0, 0xac, 0x48, 0xc1, 0x37, 0xe5, 0xec,
|
||||||
0x92, 0xf6, 0xb0, 0x86, 0x1e, 0xcc, 0xa1, 0xde, 0x50, 0x21, 0xad, 0x0f, 0x33, 0xb3, 0xb4, 0xff,
|
0xe2, 0x9b, 0xcf, 0x28, 0x9e, 0x90, 0xe8, 0xb1, 0x92, 0x72, 0x1a, 0x26, 0xe0, 0x6c, 0x6e, 0xb9,
|
||||||
0x31, 0xcb, 0x89, 0xeb, 0xc1, 0x39, 0xae, 0x47, 0x7a, 0xc7, 0xa4, 0xad, 0x8f, 0xbe, 0x4c, 0x0c,
|
0x5a, 0xde, 0x8a, 0xd1, 0xbc, 0x90, 0x44, 0x66, 0xa2, 0x39, 0xa3, 0x03, 0xed, 0xdf, 0x36, 0x90,
|
||||||
0x34, 0x40, 0x2b, 0x54, 0x42, 0x2c, 0xd4, 0x44, 0x97, 0x94, 0xf6, 0xcb, 0x5b, 0x36, 0xea, 0xfc,
|
0x16, 0x73, 0x16, 0x4d, 0xa8, 0xf9, 0xc2, 0x76, 0x4d, 0x90, 0x76, 0xaf, 0x86, 0xee, 0x4d, 0xa0,
|
||||||
0x6f, 0x72, 0xad, 0x9c, 0xe4, 0xaa, 0x6e, 0x21, 0xde, 0xbe, 0x9a, 0xdf, 0x60, 0x3e, 0x71, 0xab,
|
0x5e, 0x53, 0x21, 0xad, 0xf7, 0x63, 0xbd, 0xb4, 0xaf, 0xe9, 0xe5, 0xd0, 0x53, 0xc0, 0x39, 0xae,
|
||||||
0x8b, 0x1a, 0x31, 0x4d, 0x0e, 0xfa, 0x84, 0x46, 0xc4, 0x8b, 0xc0, 0x34, 0x89, 0x2b, 0x0a, 0xc9,
|
0x5b, 0xfa, 0xbf, 0x09, 0x5b, 0xef, 0xef, 0x94, 0x06, 0x65, 0x8e, 0x4a, 0x88, 0xf3, 0x01, 0x99,
|
||||||
0xcf, 0x11, 0x17, 0xe7, 0x88, 0x4f, 0x12, 0x79, 0xc6, 0x3b, 0x92, 0xd3, 0x24, 0x74, 0xd6, 0x4d,
|
0x51, 0xda, 0x2f, 0x6e, 0x59, 0xa8, 0xb3, 0x60, 0x62, 0xcd, 0x1d, 0xe4, 0xaa, 0x6e, 0x21, 0xde,
|
||||||
0xde, 0xc6, 0xe9, 0x84, 0x96, 0x5b, 0x52, 0xb6, 0x3e, 0xa2, 0xba, 0x80, 0x48, 0x1d, 0x15, 0xe3,
|
0xbe, 0x9c, 0x5c, 0x60, 0xde, 0x71, 0xab, 0x83, 0x1a, 0x31, 0x4d, 0x76, 0xba, 0x84, 0x46, 0xc4,
|
||||||
0xe6, 0x80, 0x9e, 0xde, 0x74, 0x94, 0xc4, 0x83, 0xa8, 0x63, 0x58, 0xa7, 0x91, 0xcf, 0x72, 0xe4,
|
0x8b, 0xc0, 0x14, 0x89, 0x2b, 0x12, 0xc9, 0xdf, 0x16, 0x2e, 0xde, 0x16, 0x3e, 0x48, 0xe4, 0x11,
|
||||||
0xb9, 0x63, 0xcd, 0xf6, 0x8f, 0x45, 0xf4, 0xb0, 0x72, 0xf9, 0xd6, 0x6b, 0x74, 0x37, 0x18, 0xbf,
|
0x3f, 0x96, 0x9c, 0x26, 0xa1, 0xb3, 0x6c, 0xe2, 0x36, 0x0e, 0x87, 0xb4, 0xdc, 0x92, 0xb2, 0xf5,
|
||||||
0x1c, 0x44, 0x11, 0xfb, 0x02, 0x81, 0x6e, 0xb6, 0xee, 0x3c, 0x32, 0xc5, 0xaf, 0x97, 0x68, 0x13,
|
0x01, 0xd5, 0x85, 0x9a, 0x5f, 0x5f, 0x32, 0x6e, 0x06, 0xe8, 0xc9, 0x4d, 0x5b, 0x49, 0x3c, 0x88,
|
||||||
0xe3, 0xce, 0x62, 0xd6, 0x0b, 0xb4, 0xe6, 0x67, 0x9c, 0x43, 0x22, 0x5f, 0x01, 0x89, 0x64, 0xf7,
|
0x8e, 0x0d, 0xeb, 0x34, 0xf2, 0x5e, 0xf6, 0x2d, 0x77, 0xa0, 0xd9, 0xfe, 0x3e, 0x8d, 0xee, 0x57,
|
||||||
0x5c, 0xf7, 0xb3, 0xe2, 0xdc, 0x37, 0x42, 0x6b, 0x87, 0xa5, 0x57, 0x77, 0x2a, 0x3a, 0xe7, 0x03,
|
0x5e, 0xbe, 0xf5, 0x0a, 0x2d, 0x05, 0x83, 0x93, 0x9d, 0x28, 0x62, 0x9f, 0x21, 0xd0, 0xc5, 0xd6,
|
||||||
0x10, 0x94, 0x43, 0x30, 0xe2, 0x97, 0xca, 0xfc, 0x51, 0xe9, 0xd5, 0x9d, 0x8a, 0xb6, 0xf6, 0x51,
|
0x9d, 0x07, 0x26, 0xf9, 0xe5, 0x12, 0x6d, 0x7c, 0xdc, 0x71, 0xcc, 0x7a, 0x8e, 0x16, 0xfd, 0x8c,
|
||||||
0x03, 0xbe, 0xaa, 0xe5, 0xa9, 0xbf, 0x02, 0x55, 0xb2, 0x68, 0x2e, 0x6b, 0x7a, 0xbc, 0x83, 0xe3,
|
0x73, 0x48, 0xe4, 0x4b, 0x20, 0x91, 0xec, 0x9c, 0xea, 0x7a, 0xe6, 0x9c, 0xbb, 0x46, 0x68, 0x71,
|
||||||
0x89, 0x37, 0xb7, 0x14, 0xe9, 0x6c, 0x0f, 0xfe, 0x6c, 0x2c, 0x5c, 0x28, 0xfb, 0xa5, 0xec, 0xdb,
|
0xb7, 0x74, 0xea, 0x8e, 0x78, 0xe7, 0x7c, 0x00, 0x82, 0x72, 0x08, 0xfa, 0xfc, 0x4c, 0x99, 0xdf,
|
||||||
0xe5, 0x46, 0x6d, 0xa0, 0xec, 0x42, 0xd9, 0x6f, 0x65, 0xdf, 0xaf, 0x36, 0x16, 0xde, 0xd7, 0x47,
|
0x2b, 0x9d, 0xba, 0x23, 0xde, 0xd6, 0x36, 0x6a, 0xc0, 0x17, 0x75, 0x79, 0xea, 0xbf, 0xa6, 0x52,
|
||||||
0xf7, 0xf5, 0x37, 0x00, 0x00, 0xff, 0xff, 0x3d, 0xae, 0xf9, 0xfa, 0xf1, 0x05, 0x00, 0x00,
|
0x16, 0xcd, 0x59, 0x4d, 0x0f, 0xee, 0x60, 0x7f, 0xe8, 0xcc, 0x2d, 0x79, 0x3a, 0xeb, 0x67, 0x7f,
|
||||||
|
0x56, 0xa6, 0xce, 0xd5, 0xfa, 0xa5, 0xd6, 0xd7, 0x8b, 0x95, 0xda, 0x99, 0x5a, 0xe7, 0x6a, 0xfd,
|
||||||
|
0x56, 0xeb, 0xdb, 0xe5, 0xca, 0xd4, 0xbb, 0x7a, 0x7f, 0xbe, 0xfe, 0x06, 0x00, 0x00, 0xff, 0xff,
|
||||||
|
0x7d, 0xdd, 0x26, 0x2d, 0xbe, 0x06, 0x00, 0x00,
|
||||||
}
|
}
|
||||||
|
@ -30,6 +30,17 @@ import "k8s.io/kubernetes/pkg/util/intstr/generated.proto";
|
|||||||
// Package-wide variables from generator "generated".
|
// Package-wide variables from generator "generated".
|
||||||
option go_package = "v1alpha1";
|
option go_package = "v1alpha1";
|
||||||
|
|
||||||
|
// Eviction evicts a pod from its node subject to certain policies and safety constraints.
|
||||||
|
// This is a subresource of Pod. A request to cause such an eviction is
|
||||||
|
// created by POSTing to .../pods/foo/evictions.
|
||||||
|
message Eviction {
|
||||||
|
// ObjectMeta describes the pod that is being evicted.
|
||||||
|
optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1;
|
||||||
|
|
||||||
|
// DeleteOptions may be provided
|
||||||
|
optional k8s.io.kubernetes.pkg.api.v1.DeleteOptions deleteOptions = 2;
|
||||||
|
}
|
||||||
|
|
||||||
// PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods
|
// PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods
|
||||||
message PodDisruptionBudget {
|
message PodDisruptionBudget {
|
||||||
optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1;
|
optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1;
|
||||||
|
@ -39,6 +39,7 @@ func addKnownTypes(scheme *runtime.Scheme) error {
|
|||||||
scheme.AddKnownTypes(SchemeGroupVersion,
|
scheme.AddKnownTypes(SchemeGroupVersion,
|
||||||
&PodDisruptionBudget{},
|
&PodDisruptionBudget{},
|
||||||
&PodDisruptionBudgetList{},
|
&PodDisruptionBudgetList{},
|
||||||
|
&Eviction{},
|
||||||
&v1.ListOptions{},
|
&v1.ListOptions{},
|
||||||
&v1.DeleteOptions{},
|
&v1.DeleteOptions{},
|
||||||
)
|
)
|
||||||
|
@ -1320,15 +1320,330 @@ func (x *PodDisruptionBudgetList) codecDecodeSelfFromArray(l int, d *codec1978.D
|
|||||||
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (x *Eviction) CodecEncodeSelf(e *codec1978.Encoder) {
|
||||||
|
var h codecSelfer1234
|
||||||
|
z, r := codec1978.GenHelperEncoder(e)
|
||||||
|
_, _, _ = h, z, r
|
||||||
|
if x == nil {
|
||||||
|
r.EncodeNil()
|
||||||
|
} else {
|
||||||
|
yym112 := z.EncBinary()
|
||||||
|
_ = yym112
|
||||||
|
if false {
|
||||||
|
} else if z.HasExtensions() && z.EncExt(x) {
|
||||||
|
} else {
|
||||||
|
yysep113 := !z.EncBinary()
|
||||||
|
yy2arr113 := z.EncBasicHandle().StructToArray
|
||||||
|
var yyq113 [4]bool
|
||||||
|
_, _, _ = yysep113, yyq113, yy2arr113
|
||||||
|
const yyr113 bool = false
|
||||||
|
yyq113[0] = x.Kind != ""
|
||||||
|
yyq113[1] = x.APIVersion != ""
|
||||||
|
yyq113[2] = true
|
||||||
|
yyq113[3] = x.DeleteOptions != nil
|
||||||
|
var yynn113 int
|
||||||
|
if yyr113 || yy2arr113 {
|
||||||
|
r.EncodeArrayStart(4)
|
||||||
|
} else {
|
||||||
|
yynn113 = 0
|
||||||
|
for _, b := range yyq113 {
|
||||||
|
if b {
|
||||||
|
yynn113++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
r.EncodeMapStart(yynn113)
|
||||||
|
yynn113 = 0
|
||||||
|
}
|
||||||
|
if yyr113 || yy2arr113 {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if yyq113[0] {
|
||||||
|
yym115 := z.EncBinary()
|
||||||
|
_ = yym115
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string(x.Kind))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, "")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if yyq113[0] {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapKey1234)
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string("kind"))
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapValue1234)
|
||||||
|
yym116 := z.EncBinary()
|
||||||
|
_ = yym116
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string(x.Kind))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if yyr113 || yy2arr113 {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if yyq113[1] {
|
||||||
|
yym118 := z.EncBinary()
|
||||||
|
_ = yym118
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, "")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if yyq113[1] {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapKey1234)
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string("apiVersion"))
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapValue1234)
|
||||||
|
yym119 := z.EncBinary()
|
||||||
|
_ = yym119
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if yyr113 || yy2arr113 {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if yyq113[2] {
|
||||||
|
yy121 := &x.ObjectMeta
|
||||||
|
yy121.CodecEncodeSelf(e)
|
||||||
|
} else {
|
||||||
|
r.EncodeNil()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if yyq113[2] {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapKey1234)
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string("metadata"))
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapValue1234)
|
||||||
|
yy122 := &x.ObjectMeta
|
||||||
|
yy122.CodecEncodeSelf(e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if yyr113 || yy2arr113 {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if yyq113[3] {
|
||||||
|
if x.DeleteOptions == nil {
|
||||||
|
r.EncodeNil()
|
||||||
|
} else {
|
||||||
|
x.DeleteOptions.CodecEncodeSelf(e)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
r.EncodeNil()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if yyq113[3] {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapKey1234)
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string("deleteOptions"))
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapValue1234)
|
||||||
|
if x.DeleteOptions == nil {
|
||||||
|
r.EncodeNil()
|
||||||
|
} else {
|
||||||
|
x.DeleteOptions.CodecEncodeSelf(e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if yyr113 || yy2arr113 {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
} else {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapEnd1234)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Eviction) CodecDecodeSelf(d *codec1978.Decoder) {
|
||||||
|
var h codecSelfer1234
|
||||||
|
z, r := codec1978.GenHelperDecoder(d)
|
||||||
|
_, _, _ = h, z, r
|
||||||
|
yym124 := z.DecBinary()
|
||||||
|
_ = yym124
|
||||||
|
if false {
|
||||||
|
} else if z.HasExtensions() && z.DecExt(x) {
|
||||||
|
} else {
|
||||||
|
yyct125 := r.ContainerType()
|
||||||
|
if yyct125 == codecSelferValueTypeMap1234 {
|
||||||
|
yyl125 := r.ReadMapStart()
|
||||||
|
if yyl125 == 0 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerMapEnd1234)
|
||||||
|
} else {
|
||||||
|
x.codecDecodeSelfFromMap(yyl125, d)
|
||||||
|
}
|
||||||
|
} else if yyct125 == codecSelferValueTypeArray1234 {
|
||||||
|
yyl125 := r.ReadArrayStart()
|
||||||
|
if yyl125 == 0 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
} else {
|
||||||
|
x.codecDecodeSelfFromArray(yyl125, d)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Eviction) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) {
|
||||||
|
var h codecSelfer1234
|
||||||
|
z, r := codec1978.GenHelperDecoder(d)
|
||||||
|
_, _, _ = h, z, r
|
||||||
|
var yys126Slc = z.DecScratchBuffer() // default slice to decode into
|
||||||
|
_ = yys126Slc
|
||||||
|
var yyhl126 bool = l >= 0
|
||||||
|
for yyj126 := 0; ; yyj126++ {
|
||||||
|
if yyhl126 {
|
||||||
|
if yyj126 >= l {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if r.CheckBreak() {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerMapKey1234)
|
||||||
|
yys126Slc = r.DecodeBytes(yys126Slc, true, true)
|
||||||
|
yys126 := string(yys126Slc)
|
||||||
|
z.DecSendContainerState(codecSelfer_containerMapValue1234)
|
||||||
|
switch yys126 {
|
||||||
|
case "kind":
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.Kind = ""
|
||||||
|
} else {
|
||||||
|
x.Kind = string(r.DecodeString())
|
||||||
|
}
|
||||||
|
case "apiVersion":
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.APIVersion = ""
|
||||||
|
} else {
|
||||||
|
x.APIVersion = string(r.DecodeString())
|
||||||
|
}
|
||||||
|
case "metadata":
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.ObjectMeta = pkg3_v1.ObjectMeta{}
|
||||||
|
} else {
|
||||||
|
yyv129 := &x.ObjectMeta
|
||||||
|
yyv129.CodecDecodeSelf(d)
|
||||||
|
}
|
||||||
|
case "deleteOptions":
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
if x.DeleteOptions != nil {
|
||||||
|
x.DeleteOptions = nil
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if x.DeleteOptions == nil {
|
||||||
|
x.DeleteOptions = new(pkg3_v1.DeleteOptions)
|
||||||
|
}
|
||||||
|
x.DeleteOptions.CodecDecodeSelf(d)
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
z.DecStructFieldNotFound(-1, yys126)
|
||||||
|
} // end switch yys126
|
||||||
|
} // end for yyj126
|
||||||
|
z.DecSendContainerState(codecSelfer_containerMapEnd1234)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Eviction) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
|
||||||
|
var h codecSelfer1234
|
||||||
|
z, r := codec1978.GenHelperDecoder(d)
|
||||||
|
_, _, _ = h, z, r
|
||||||
|
var yyj131 int
|
||||||
|
var yyb131 bool
|
||||||
|
var yyhl131 bool = l >= 0
|
||||||
|
yyj131++
|
||||||
|
if yyhl131 {
|
||||||
|
yyb131 = yyj131 > l
|
||||||
|
} else {
|
||||||
|
yyb131 = r.CheckBreak()
|
||||||
|
}
|
||||||
|
if yyb131 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.Kind = ""
|
||||||
|
} else {
|
||||||
|
x.Kind = string(r.DecodeString())
|
||||||
|
}
|
||||||
|
yyj131++
|
||||||
|
if yyhl131 {
|
||||||
|
yyb131 = yyj131 > l
|
||||||
|
} else {
|
||||||
|
yyb131 = r.CheckBreak()
|
||||||
|
}
|
||||||
|
if yyb131 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.APIVersion = ""
|
||||||
|
} else {
|
||||||
|
x.APIVersion = string(r.DecodeString())
|
||||||
|
}
|
||||||
|
yyj131++
|
||||||
|
if yyhl131 {
|
||||||
|
yyb131 = yyj131 > l
|
||||||
|
} else {
|
||||||
|
yyb131 = r.CheckBreak()
|
||||||
|
}
|
||||||
|
if yyb131 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.ObjectMeta = pkg3_v1.ObjectMeta{}
|
||||||
|
} else {
|
||||||
|
yyv134 := &x.ObjectMeta
|
||||||
|
yyv134.CodecDecodeSelf(d)
|
||||||
|
}
|
||||||
|
yyj131++
|
||||||
|
if yyhl131 {
|
||||||
|
yyb131 = yyj131 > l
|
||||||
|
} else {
|
||||||
|
yyb131 = r.CheckBreak()
|
||||||
|
}
|
||||||
|
if yyb131 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
if x.DeleteOptions != nil {
|
||||||
|
x.DeleteOptions = nil
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if x.DeleteOptions == nil {
|
||||||
|
x.DeleteOptions = new(pkg3_v1.DeleteOptions)
|
||||||
|
}
|
||||||
|
x.DeleteOptions.CodecDecodeSelf(d)
|
||||||
|
}
|
||||||
|
for {
|
||||||
|
yyj131++
|
||||||
|
if yyhl131 {
|
||||||
|
yyb131 = yyj131 > l
|
||||||
|
} else {
|
||||||
|
yyb131 = r.CheckBreak()
|
||||||
|
}
|
||||||
|
if yyb131 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
z.DecStructFieldNotFound(yyj131-1, "")
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
}
|
||||||
|
|
||||||
func (x codecSelfer1234) encSlicePodDisruptionBudget(v []PodDisruptionBudget, e *codec1978.Encoder) {
|
func (x codecSelfer1234) encSlicePodDisruptionBudget(v []PodDisruptionBudget, e *codec1978.Encoder) {
|
||||||
var h codecSelfer1234
|
var h codecSelfer1234
|
||||||
z, r := codec1978.GenHelperEncoder(e)
|
z, r := codec1978.GenHelperEncoder(e)
|
||||||
_, _, _ = h, z, r
|
_, _, _ = h, z, r
|
||||||
r.EncodeArrayStart(len(v))
|
r.EncodeArrayStart(len(v))
|
||||||
for _, yyv112 := range v {
|
for _, yyv136 := range v {
|
||||||
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
|
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
yy113 := &yyv112
|
yy137 := &yyv136
|
||||||
yy113.CodecEncodeSelf(e)
|
yy137.CodecEncodeSelf(e)
|
||||||
}
|
}
|
||||||
z.EncSendContainerState(codecSelfer_containerArrayEnd1234)
|
z.EncSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
}
|
}
|
||||||
@ -1338,83 +1653,83 @@ func (x codecSelfer1234) decSlicePodDisruptionBudget(v *[]PodDisruptionBudget, d
|
|||||||
z, r := codec1978.GenHelperDecoder(d)
|
z, r := codec1978.GenHelperDecoder(d)
|
||||||
_, _, _ = h, z, r
|
_, _, _ = h, z, r
|
||||||
|
|
||||||
yyv114 := *v
|
yyv138 := *v
|
||||||
yyh114, yyl114 := z.DecSliceHelperStart()
|
yyh138, yyl138 := z.DecSliceHelperStart()
|
||||||
var yyc114 bool
|
var yyc138 bool
|
||||||
if yyl114 == 0 {
|
if yyl138 == 0 {
|
||||||
if yyv114 == nil {
|
if yyv138 == nil {
|
||||||
yyv114 = []PodDisruptionBudget{}
|
yyv138 = []PodDisruptionBudget{}
|
||||||
yyc114 = true
|
yyc138 = true
|
||||||
} else if len(yyv114) != 0 {
|
} else if len(yyv138) != 0 {
|
||||||
yyv114 = yyv114[:0]
|
yyv138 = yyv138[:0]
|
||||||
yyc114 = true
|
yyc138 = true
|
||||||
}
|
}
|
||||||
} else if yyl114 > 0 {
|
} else if yyl138 > 0 {
|
||||||
var yyrr114, yyrl114 int
|
var yyrr138, yyrl138 int
|
||||||
var yyrt114 bool
|
var yyrt138 bool
|
||||||
if yyl114 > cap(yyv114) {
|
if yyl138 > cap(yyv138) {
|
||||||
|
|
||||||
yyrg114 := len(yyv114) > 0
|
yyrg138 := len(yyv138) > 0
|
||||||
yyv2114 := yyv114
|
yyv2138 := yyv138
|
||||||
yyrl114, yyrt114 = z.DecInferLen(yyl114, z.DecBasicHandle().MaxInitLen, 296)
|
yyrl138, yyrt138 = z.DecInferLen(yyl138, z.DecBasicHandle().MaxInitLen, 296)
|
||||||
if yyrt114 {
|
if yyrt138 {
|
||||||
if yyrl114 <= cap(yyv114) {
|
if yyrl138 <= cap(yyv138) {
|
||||||
yyv114 = yyv114[:yyrl114]
|
yyv138 = yyv138[:yyrl138]
|
||||||
} else {
|
} else {
|
||||||
yyv114 = make([]PodDisruptionBudget, yyrl114)
|
yyv138 = make([]PodDisruptionBudget, yyrl138)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
yyv114 = make([]PodDisruptionBudget, yyrl114)
|
yyv138 = make([]PodDisruptionBudget, yyrl138)
|
||||||
}
|
}
|
||||||
yyc114 = true
|
yyc138 = true
|
||||||
yyrr114 = len(yyv114)
|
yyrr138 = len(yyv138)
|
||||||
if yyrg114 {
|
if yyrg138 {
|
||||||
copy(yyv114, yyv2114)
|
copy(yyv138, yyv2138)
|
||||||
}
|
}
|
||||||
} else if yyl114 != len(yyv114) {
|
} else if yyl138 != len(yyv138) {
|
||||||
yyv114 = yyv114[:yyl114]
|
yyv138 = yyv138[:yyl138]
|
||||||
yyc114 = true
|
yyc138 = true
|
||||||
}
|
}
|
||||||
yyj114 := 0
|
yyj138 := 0
|
||||||
for ; yyj114 < yyrr114; yyj114++ {
|
for ; yyj138 < yyrr138; yyj138++ {
|
||||||
yyh114.ElemContainerState(yyj114)
|
yyh138.ElemContainerState(yyj138)
|
||||||
if r.TryDecodeAsNil() {
|
if r.TryDecodeAsNil() {
|
||||||
yyv114[yyj114] = PodDisruptionBudget{}
|
yyv138[yyj138] = PodDisruptionBudget{}
|
||||||
} else {
|
} else {
|
||||||
yyv115 := &yyv114[yyj114]
|
yyv139 := &yyv138[yyj138]
|
||||||
yyv115.CodecDecodeSelf(d)
|
yyv139.CodecDecodeSelf(d)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
if yyrt114 {
|
if yyrt138 {
|
||||||
for ; yyj114 < yyl114; yyj114++ {
|
for ; yyj138 < yyl138; yyj138++ {
|
||||||
yyv114 = append(yyv114, PodDisruptionBudget{})
|
yyv138 = append(yyv138, PodDisruptionBudget{})
|
||||||
yyh114.ElemContainerState(yyj114)
|
yyh138.ElemContainerState(yyj138)
|
||||||
if r.TryDecodeAsNil() {
|
if r.TryDecodeAsNil() {
|
||||||
yyv114[yyj114] = PodDisruptionBudget{}
|
yyv138[yyj138] = PodDisruptionBudget{}
|
||||||
} else {
|
} else {
|
||||||
yyv116 := &yyv114[yyj114]
|
yyv140 := &yyv138[yyj138]
|
||||||
yyv116.CodecDecodeSelf(d)
|
yyv140.CodecDecodeSelf(d)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
yyj114 := 0
|
yyj138 := 0
|
||||||
for ; !r.CheckBreak(); yyj114++ {
|
for ; !r.CheckBreak(); yyj138++ {
|
||||||
|
|
||||||
if yyj114 >= len(yyv114) {
|
if yyj138 >= len(yyv138) {
|
||||||
yyv114 = append(yyv114, PodDisruptionBudget{}) // var yyz114 PodDisruptionBudget
|
yyv138 = append(yyv138, PodDisruptionBudget{}) // var yyz138 PodDisruptionBudget
|
||||||
yyc114 = true
|
yyc138 = true
|
||||||
}
|
}
|
||||||
yyh114.ElemContainerState(yyj114)
|
yyh138.ElemContainerState(yyj138)
|
||||||
if yyj114 < len(yyv114) {
|
if yyj138 < len(yyv138) {
|
||||||
if r.TryDecodeAsNil() {
|
if r.TryDecodeAsNil() {
|
||||||
yyv114[yyj114] = PodDisruptionBudget{}
|
yyv138[yyj138] = PodDisruptionBudget{}
|
||||||
} else {
|
} else {
|
||||||
yyv117 := &yyv114[yyj114]
|
yyv141 := &yyv138[yyj138]
|
||||||
yyv117.CodecDecodeSelf(d)
|
yyv141.CodecDecodeSelf(d)
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@ -1422,16 +1737,16 @@ func (x codecSelfer1234) decSlicePodDisruptionBudget(v *[]PodDisruptionBudget, d
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
if yyj114 < len(yyv114) {
|
if yyj138 < len(yyv138) {
|
||||||
yyv114 = yyv114[:yyj114]
|
yyv138 = yyv138[:yyj138]
|
||||||
yyc114 = true
|
yyc138 = true
|
||||||
} else if yyj114 == 0 && yyv114 == nil {
|
} else if yyj138 == 0 && yyv138 == nil {
|
||||||
yyv114 = []PodDisruptionBudget{}
|
yyv138 = []PodDisruptionBudget{}
|
||||||
yyc114 = true
|
yyc138 = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
yyh114.End()
|
yyh138.End()
|
||||||
if yyc114 {
|
if yyc138 {
|
||||||
*v = yyv114
|
*v = yyv138
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,6 @@ package v1alpha1
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/util/intstr"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
)
|
)
|
||||||
@ -70,3 +69,16 @@ type PodDisruptionBudgetList struct {
|
|||||||
unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
|
unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
|
||||||
Items []PodDisruptionBudget `json:"items" protobuf:"bytes,2,rep,name=items"`
|
Items []PodDisruptionBudget `json:"items" protobuf:"bytes,2,rep,name=items"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Eviction evicts a pod from its node subject to certain policies and safety constraints.
|
||||||
|
// This is a subresource of Pod. A request to cause such an eviction is
|
||||||
|
// created by POSTing to .../pods/foo/evictions.
|
||||||
|
type Eviction struct {
|
||||||
|
unversioned.TypeMeta `json:",inline"`
|
||||||
|
|
||||||
|
// ObjectMeta describes the pod that is being evicted.
|
||||||
|
v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
|
||||||
|
|
||||||
|
// DeleteOptions may be provided
|
||||||
|
DeleteOptions *v1.DeleteOptions `json:"deleteOptions,omitempty" protobuf:"bytes,2,opt,name=deleteOptions"`
|
||||||
|
}
|
||||||
|
@ -27,6 +27,16 @@ package v1alpha1
|
|||||||
// Those methods can be generated by using hack/update-generated-swagger-docs.sh
|
// Those methods can be generated by using hack/update-generated-swagger-docs.sh
|
||||||
|
|
||||||
// AUTO-GENERATED FUNCTIONS START HERE
|
// AUTO-GENERATED FUNCTIONS START HERE
|
||||||
|
var map_Eviction = map[string]string{
|
||||||
|
"": "Eviction evicts a pod from its node subject to certain policies and safety constraints. This is a subresource of Pod. A request to cause such an eviction is created by POSTing to .../pods/foo/evictions.",
|
||||||
|
"metadata": "ObjectMeta describes the pod that is being evicted.",
|
||||||
|
"deleteOptions": "DeleteOptions may be provided",
|
||||||
|
}
|
||||||
|
|
||||||
|
func (Eviction) SwaggerDoc() map[string]string {
|
||||||
|
return map_Eviction
|
||||||
|
}
|
||||||
|
|
||||||
var map_PodDisruptionBudget = map[string]string{
|
var map_PodDisruptionBudget = map[string]string{
|
||||||
"": "PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods",
|
"": "PodDisruptionBudget is an object to define the max disruption that can be caused to a collection of pods",
|
||||||
"spec": "Specification of the desired behavior of the PodDisruptionBudget.",
|
"spec": "Specification of the desired behavior of the PodDisruptionBudget.",
|
||||||
|
@ -22,6 +22,7 @@ package v1alpha1
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
api "k8s.io/kubernetes/pkg/api"
|
api "k8s.io/kubernetes/pkg/api"
|
||||||
|
v1 "k8s.io/kubernetes/pkg/api/v1"
|
||||||
policy "k8s.io/kubernetes/pkg/apis/policy"
|
policy "k8s.io/kubernetes/pkg/apis/policy"
|
||||||
conversion "k8s.io/kubernetes/pkg/conversion"
|
conversion "k8s.io/kubernetes/pkg/conversion"
|
||||||
runtime "k8s.io/kubernetes/pkg/runtime"
|
runtime "k8s.io/kubernetes/pkg/runtime"
|
||||||
@ -35,6 +36,8 @@ func init() {
|
|||||||
// Public to allow building arbitrary schemes.
|
// Public to allow building arbitrary schemes.
|
||||||
func RegisterConversions(scheme *runtime.Scheme) error {
|
func RegisterConversions(scheme *runtime.Scheme) error {
|
||||||
return scheme.AddGeneratedConversionFuncs(
|
return scheme.AddGeneratedConversionFuncs(
|
||||||
|
Convert_v1alpha1_Eviction_To_policy_Eviction,
|
||||||
|
Convert_policy_Eviction_To_v1alpha1_Eviction,
|
||||||
Convert_v1alpha1_PodDisruptionBudget_To_policy_PodDisruptionBudget,
|
Convert_v1alpha1_PodDisruptionBudget_To_policy_PodDisruptionBudget,
|
||||||
Convert_policy_PodDisruptionBudget_To_v1alpha1_PodDisruptionBudget,
|
Convert_policy_PodDisruptionBudget_To_v1alpha1_PodDisruptionBudget,
|
||||||
Convert_v1alpha1_PodDisruptionBudgetList_To_policy_PodDisruptionBudgetList,
|
Convert_v1alpha1_PodDisruptionBudgetList_To_policy_PodDisruptionBudgetList,
|
||||||
@ -46,6 +49,56 @@ func RegisterConversions(scheme *runtime.Scheme) error {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func autoConvert_v1alpha1_Eviction_To_policy_Eviction(in *Eviction, out *policy.Eviction, s conversion.Scope) error {
|
||||||
|
if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
// TODO: Inefficient conversion - can we improve it?
|
||||||
|
if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if in.DeleteOptions != nil {
|
||||||
|
in, out := &in.DeleteOptions, &out.DeleteOptions
|
||||||
|
*out = new(api.DeleteOptions)
|
||||||
|
// TODO: Inefficient conversion - can we improve it?
|
||||||
|
if err := s.Convert(*in, *out, 0); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
out.DeleteOptions = nil
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func Convert_v1alpha1_Eviction_To_policy_Eviction(in *Eviction, out *policy.Eviction, s conversion.Scope) error {
|
||||||
|
return autoConvert_v1alpha1_Eviction_To_policy_Eviction(in, out, s)
|
||||||
|
}
|
||||||
|
|
||||||
|
func autoConvert_policy_Eviction_To_v1alpha1_Eviction(in *policy.Eviction, out *Eviction, s conversion.Scope) error {
|
||||||
|
if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
// TODO: Inefficient conversion - can we improve it?
|
||||||
|
if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if in.DeleteOptions != nil {
|
||||||
|
in, out := &in.DeleteOptions, &out.DeleteOptions
|
||||||
|
*out = new(v1.DeleteOptions)
|
||||||
|
// TODO: Inefficient conversion - can we improve it?
|
||||||
|
if err := s.Convert(*in, *out, 0); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
out.DeleteOptions = nil
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func Convert_policy_Eviction_To_v1alpha1_Eviction(in *policy.Eviction, out *Eviction, s conversion.Scope) error {
|
||||||
|
return autoConvert_policy_Eviction_To_v1alpha1_Eviction(in, out, s)
|
||||||
|
}
|
||||||
|
|
||||||
func autoConvert_v1alpha1_PodDisruptionBudget_To_policy_PodDisruptionBudget(in *PodDisruptionBudget, out *policy.PodDisruptionBudget, s conversion.Scope) error {
|
func autoConvert_v1alpha1_PodDisruptionBudget_To_policy_PodDisruptionBudget(in *PodDisruptionBudget, out *policy.PodDisruptionBudget, s conversion.Scope) error {
|
||||||
if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
|
if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -36,6 +36,7 @@ func init() {
|
|||||||
// to allow building arbitrary schemes.
|
// to allow building arbitrary schemes.
|
||||||
func RegisterDeepCopies(scheme *runtime.Scheme) error {
|
func RegisterDeepCopies(scheme *runtime.Scheme) error {
|
||||||
return scheme.AddGeneratedDeepCopyFuncs(
|
return scheme.AddGeneratedDeepCopyFuncs(
|
||||||
|
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_Eviction, InType: reflect.TypeOf(&Eviction{})},
|
||||||
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_PodDisruptionBudget, InType: reflect.TypeOf(&PodDisruptionBudget{})},
|
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_PodDisruptionBudget, InType: reflect.TypeOf(&PodDisruptionBudget{})},
|
||||||
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_PodDisruptionBudgetList, InType: reflect.TypeOf(&PodDisruptionBudgetList{})},
|
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_PodDisruptionBudgetList, InType: reflect.TypeOf(&PodDisruptionBudgetList{})},
|
||||||
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_PodDisruptionBudgetSpec, InType: reflect.TypeOf(&PodDisruptionBudgetSpec{})},
|
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1alpha1_PodDisruptionBudgetSpec, InType: reflect.TypeOf(&PodDisruptionBudgetSpec{})},
|
||||||
@ -43,6 +44,27 @@ func RegisterDeepCopies(scheme *runtime.Scheme) error {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func DeepCopy_v1alpha1_Eviction(in interface{}, out interface{}, c *conversion.Cloner) error {
|
||||||
|
{
|
||||||
|
in := in.(*Eviction)
|
||||||
|
out := out.(*Eviction)
|
||||||
|
out.TypeMeta = in.TypeMeta
|
||||||
|
if err := v1.DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if in.DeleteOptions != nil {
|
||||||
|
in, out := &in.DeleteOptions, &out.DeleteOptions
|
||||||
|
*out = new(v1.DeleteOptions)
|
||||||
|
if err := v1.DeepCopy_v1_DeleteOptions(*in, *out, c); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
out.DeleteOptions = nil
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func DeepCopy_v1alpha1_PodDisruptionBudget(in interface{}, out interface{}, c *conversion.Cloner) error {
|
func DeepCopy_v1alpha1_PodDisruptionBudget(in interface{}, out interface{}, c *conversion.Cloner) error {
|
||||||
{
|
{
|
||||||
in := in.(*PodDisruptionBudget)
|
in := in.(*PodDisruptionBudget)
|
||||||
|
@ -36,6 +36,7 @@ func init() {
|
|||||||
// to allow building arbitrary schemes.
|
// to allow building arbitrary schemes.
|
||||||
func RegisterDeepCopies(scheme *runtime.Scheme) error {
|
func RegisterDeepCopies(scheme *runtime.Scheme) error {
|
||||||
return scheme.AddGeneratedDeepCopyFuncs(
|
return scheme.AddGeneratedDeepCopyFuncs(
|
||||||
|
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_policy_Eviction, InType: reflect.TypeOf(&Eviction{})},
|
||||||
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_policy_PodDisruptionBudget, InType: reflect.TypeOf(&PodDisruptionBudget{})},
|
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_policy_PodDisruptionBudget, InType: reflect.TypeOf(&PodDisruptionBudget{})},
|
||||||
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_policy_PodDisruptionBudgetList, InType: reflect.TypeOf(&PodDisruptionBudgetList{})},
|
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_policy_PodDisruptionBudgetList, InType: reflect.TypeOf(&PodDisruptionBudgetList{})},
|
||||||
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_policy_PodDisruptionBudgetSpec, InType: reflect.TypeOf(&PodDisruptionBudgetSpec{})},
|
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_policy_PodDisruptionBudgetSpec, InType: reflect.TypeOf(&PodDisruptionBudgetSpec{})},
|
||||||
@ -43,6 +44,27 @@ func RegisterDeepCopies(scheme *runtime.Scheme) error {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func DeepCopy_policy_Eviction(in interface{}, out interface{}, c *conversion.Cloner) error {
|
||||||
|
{
|
||||||
|
in := in.(*Eviction)
|
||||||
|
out := out.(*Eviction)
|
||||||
|
out.TypeMeta = in.TypeMeta
|
||||||
|
if err := api.DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if in.DeleteOptions != nil {
|
||||||
|
in, out := &in.DeleteOptions, &out.DeleteOptions
|
||||||
|
*out = new(api.DeleteOptions)
|
||||||
|
if err := api.DeepCopy_api_DeleteOptions(*in, *out, c); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
out.DeleteOptions = nil
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func DeepCopy_policy_PodDisruptionBudget(in interface{}, out interface{}, c *conversion.Cloner) error {
|
func DeepCopy_policy_PodDisruptionBudget(in interface{}, out interface{}, c *conversion.Cloner) error {
|
||||||
{
|
{
|
||||||
in := in.(*PodDisruptionBudget)
|
in := in.(*PodDisruptionBudget)
|
||||||
|
@ -242,15 +242,17 @@ func (m *Master) InstallAPIs(c *Config) {
|
|||||||
VersionedResourcesStorageMap: map[string]map[string]rest.Storage{
|
VersionedResourcesStorageMap: map[string]map[string]rest.Storage{
|
||||||
"v1": m.v1ResourcesStorage,
|
"v1": m.v1ResourcesStorage,
|
||||||
},
|
},
|
||||||
IsLegacyGroup: true,
|
IsLegacyGroup: true,
|
||||||
Scheme: api.Scheme,
|
Scheme: api.Scheme,
|
||||||
ParameterCodec: api.ParameterCodec,
|
ParameterCodec: api.ParameterCodec,
|
||||||
NegotiatedSerializer: api.Codecs,
|
NegotiatedSerializer: api.Codecs,
|
||||||
|
SubresourceGroupVersionKind: map[string]unversioned.GroupVersionKind{},
|
||||||
}
|
}
|
||||||
if autoscalingGroupVersion := (unversioned.GroupVersion{Group: "autoscaling", Version: "v1"}); registered.IsEnabledVersion(autoscalingGroupVersion) {
|
if autoscalingGroupVersion := (unversioned.GroupVersion{Group: "autoscaling", Version: "v1"}); registered.IsEnabledVersion(autoscalingGroupVersion) {
|
||||||
apiGroupInfo.SubresourceGroupVersionKind = map[string]unversioned.GroupVersionKind{
|
apiGroupInfo.SubresourceGroupVersionKind["replicationcontrollers/scale"] = autoscalingGroupVersion.WithKind("Scale")
|
||||||
"replicationcontrollers/scale": autoscalingGroupVersion.WithKind("Scale"),
|
}
|
||||||
}
|
if policyGroupVersion := (unversioned.GroupVersion{Group: "policy", Version: "v1alpha1"}); registered.IsEnabledVersion(policyGroupVersion) {
|
||||||
|
apiGroupInfo.SubresourceGroupVersionKind["pods/eviction"] = policyGroupVersion.WithKind("Eviction")
|
||||||
}
|
}
|
||||||
apiGroupsInfo = append(apiGroupsInfo, apiGroupInfo)
|
apiGroupsInfo = append(apiGroupsInfo, apiGroupInfo)
|
||||||
}
|
}
|
||||||
@ -300,6 +302,19 @@ func (m *Master) InstallAPIs(c *Config) {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This is here so that, if the policy group is present, the eviction
|
||||||
|
// subresource handler wil be able to find poddisruptionbudgets
|
||||||
|
// TODO(lavalamp) find a better way for groups to discover and interact
|
||||||
|
// with each other
|
||||||
|
if group == "policy" {
|
||||||
|
storage := apiGroupsInfo[0].VersionedResourcesStorageMap["v1"]["pods/eviction"]
|
||||||
|
evictionStorage := storage.(*podetcd.EvictionREST)
|
||||||
|
|
||||||
|
storage = apiGroupInfo.VersionedResourcesStorageMap["v1alpha1"]["poddisruptionbudgets"]
|
||||||
|
evictionStorage.PodDisruptionBudgetLister = storage.(rest.Lister)
|
||||||
|
evictionStorage.PodDisruptionBudgetUpdater = storage.(rest.Updater)
|
||||||
|
}
|
||||||
|
|
||||||
apiGroupsInfo = append(apiGroupsInfo, apiGroupInfo)
|
apiGroupsInfo = append(apiGroupsInfo, apiGroupInfo)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -426,6 +441,9 @@ func (m *Master) initV1ResourcesStorage(c *Config) {
|
|||||||
if registered.IsEnabledVersion(unversioned.GroupVersion{Group: "autoscaling", Version: "v1"}) {
|
if registered.IsEnabledVersion(unversioned.GroupVersion{Group: "autoscaling", Version: "v1"}) {
|
||||||
m.v1ResourcesStorage["replicationControllers/scale"] = controllerStorage.Scale
|
m.v1ResourcesStorage["replicationControllers/scale"] = controllerStorage.Scale
|
||||||
}
|
}
|
||||||
|
if registered.IsEnabledVersion(unversioned.GroupVersion{Group: "policy", Version: "v1alpha1"}) {
|
||||||
|
m.v1ResourcesStorage["pods/eviction"] = podStorage.Eviction
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewBootstrapController returns a controller for watching the core capabilities of the master. If
|
// NewBootstrapController returns a controller for watching the core capabilities of the master. If
|
||||||
|
@ -27,7 +27,9 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api/rest"
|
"k8s.io/kubernetes/pkg/api/rest"
|
||||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/api/validation"
|
"k8s.io/kubernetes/pkg/api/validation"
|
||||||
|
"k8s.io/kubernetes/pkg/apis/policy"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/client"
|
"k8s.io/kubernetes/pkg/kubelet/client"
|
||||||
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
"k8s.io/kubernetes/pkg/registry/cachesize"
|
"k8s.io/kubernetes/pkg/registry/cachesize"
|
||||||
"k8s.io/kubernetes/pkg/registry/generic"
|
"k8s.io/kubernetes/pkg/registry/generic"
|
||||||
"k8s.io/kubernetes/pkg/registry/generic/registry"
|
"k8s.io/kubernetes/pkg/registry/generic/registry"
|
||||||
@ -41,6 +43,7 @@ import (
|
|||||||
type PodStorage struct {
|
type PodStorage struct {
|
||||||
Pod *REST
|
Pod *REST
|
||||||
Binding *BindingREST
|
Binding *BindingREST
|
||||||
|
Eviction *EvictionREST
|
||||||
Status *StatusREST
|
Status *StatusREST
|
||||||
Log *podrest.LogREST
|
Log *podrest.LogREST
|
||||||
Proxy *podrest.ProxyREST
|
Proxy *podrest.ProxyREST
|
||||||
@ -100,6 +103,7 @@ func NewStorage(opts generic.RESTOptions, k client.ConnectionInfoGetter, proxyTr
|
|||||||
return PodStorage{
|
return PodStorage{
|
||||||
Pod: &REST{store, proxyTransport},
|
Pod: &REST{store, proxyTransport},
|
||||||
Binding: &BindingREST{store: store},
|
Binding: &BindingREST{store: store},
|
||||||
|
Eviction: &EvictionREST{store: store},
|
||||||
Status: &StatusREST{store: &statusStore},
|
Status: &StatusREST{store: &statusStore},
|
||||||
Log: &podrest.LogREST{Store: store, KubeletConn: k},
|
Log: &podrest.LogREST{Store: store, KubeletConn: k},
|
||||||
Proxy: &podrest.ProxyREST{Store: store, ProxyTransport: proxyTransport},
|
Proxy: &podrest.ProxyREST{Store: store, ProxyTransport: proxyTransport},
|
||||||
@ -117,6 +121,155 @@ func (r *REST) ResourceLocation(ctx api.Context, name string) (*url.URL, http.Ro
|
|||||||
return pod.ResourceLocation(r, r.proxyTransport, ctx, name)
|
return pod.ResourceLocation(r, r.proxyTransport, ctx, name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// EvictionREST implements the REST endpoint for evicting pods from nodes when etcd is in use.
|
||||||
|
type EvictionREST struct {
|
||||||
|
store *registry.Store
|
||||||
|
PodDisruptionBudgetLister rest.Lister
|
||||||
|
PodDisruptionBudgetUpdater rest.Updater
|
||||||
|
}
|
||||||
|
|
||||||
|
var _ = rest.Creater(&EvictionREST{})
|
||||||
|
|
||||||
|
// New creates a new eviction resource
|
||||||
|
func (r *EvictionREST) New() runtime.Object {
|
||||||
|
return &policy.Eviction{}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create attempts to create a new eviction. That is, it tries to evict a pod.
|
||||||
|
func (r *EvictionREST) Create(ctx api.Context, obj runtime.Object) (runtime.Object, error) {
|
||||||
|
eviction := obj.(*policy.Eviction)
|
||||||
|
|
||||||
|
obj, err := r.store.Get(ctx, eviction.Name)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
pod := obj.(*api.Pod)
|
||||||
|
pdbs, err := r.getPodDisruptionBudgets(ctx, pod)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(pdbs) > 1 {
|
||||||
|
return &unversioned.Status{
|
||||||
|
Status: unversioned.StatusFailure,
|
||||||
|
Message: "This pod has more than one PodDisruptionBudget, which the eviction subresource does not support.",
|
||||||
|
Code: 500,
|
||||||
|
}, nil
|
||||||
|
} else if len(pdbs) == 1 {
|
||||||
|
pdb := pdbs[0]
|
||||||
|
// Try to verify-and-decrement
|
||||||
|
|
||||||
|
// If it was false already, or if it becomes false during the course of our retries,
|
||||||
|
// raise an error marked as a ... 429 maybe?
|
||||||
|
ok, err := r.checkAndDecrement(ctx, pdb)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if !ok {
|
||||||
|
return &unversioned.Status{
|
||||||
|
Status: unversioned.StatusFailure,
|
||||||
|
// TODO(mml): Include some more details about why the eviction is disallowed.
|
||||||
|
// Ideally any such text is generated by the DisruptionController (offline).
|
||||||
|
Message: "Cannot evict pod as it would violate the pod's disruption budget.",
|
||||||
|
Code: 429,
|
||||||
|
// TODO(mml): Add a Retry-After header. Once there are time-based
|
||||||
|
// budgets, we can sometimes compute a sensible suggested value. But
|
||||||
|
// even without that, we can give a suggestion (10 minutes?) that
|
||||||
|
// prevents well-behaved clients from hammering us.
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// At this point there was either no PDB or we succeded in decrementing
|
||||||
|
|
||||||
|
// Try the delete
|
||||||
|
_, err = r.store.Delete(ctx, eviction.Name, eviction.DeleteOptions)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Success!
|
||||||
|
return &unversioned.Status{Status: unversioned.StatusSuccess}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdatedObjectInfo is a simple interface for attempting updates to
|
||||||
|
// runtime.Objects. EvictionREST implements it directly.
|
||||||
|
var _ = rest.UpdatedObjectInfo(&EvictionREST{})
|
||||||
|
|
||||||
|
// Preconditions returns any preconditions required prior to updating the
|
||||||
|
// PDB. None currently.
|
||||||
|
func (r *EvictionREST) Preconditions() *api.Preconditions {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdatedObject returns the updated PDB if it is able to update
|
||||||
|
// PodDisruptionAllowed from true->false.
|
||||||
|
func (r *EvictionREST) UpdatedObject(ctx api.Context, oldObj runtime.Object) (newObj runtime.Object, err error) {
|
||||||
|
copy, err := api.Scheme.DeepCopy(oldObj)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
newObj = copy.(runtime.Object)
|
||||||
|
pdb := oldObj.(*policy.PodDisruptionBudget)
|
||||||
|
if !pdb.Status.PodDisruptionAllowed {
|
||||||
|
return nil, fmt.Errorf("PodDisruptionAllowed is already false")
|
||||||
|
}
|
||||||
|
pdb.Status.PodDisruptionAllowed = false
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *EvictionREST) checkAndDecrement(ctx api.Context, pdb policy.PodDisruptionBudget) (ok bool, err error) {
|
||||||
|
if !pdb.Status.PodDisruptionAllowed {
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
|
newObj, _, err := r.PodDisruptionBudgetUpdater.Update(ctx, pdb.Name, r)
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
newPdb := newObj.(*policy.PodDisruptionBudget)
|
||||||
|
if newPdb.Status.PodDisruptionAllowed {
|
||||||
|
return false, fmt.Errorf("update did not succeed")
|
||||||
|
}
|
||||||
|
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns any PDBs that match the pod.
|
||||||
|
// err is set if there's an error.
|
||||||
|
func (r *EvictionREST) getPodDisruptionBudgets(ctx api.Context, pod *api.Pod) (pdbs []policy.PodDisruptionBudget, err error) {
|
||||||
|
if len(pod.Labels) == 0 {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
l, err := r.PodDisruptionBudgetLister.List(ctx, nil)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
pdbList := l.(*policy.PodDisruptionBudgetList)
|
||||||
|
|
||||||
|
for _, pdb := range pdbList.Items {
|
||||||
|
if pdb.Namespace != pod.Namespace {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
selector, err := unversioned.LabelSelectorAsSelector(pdb.Spec.Selector)
|
||||||
|
if err != nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
// If a PDB with a nil or empty selector creeps in, it should match nothing, not everything.
|
||||||
|
if selector.Empty() || !selector.Matches(labels.Set(pod.Labels)) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
pdbs = append(pdbs, pdb)
|
||||||
|
}
|
||||||
|
|
||||||
|
return pdbs, nil
|
||||||
|
}
|
||||||
|
|
||||||
// BindingREST implements the REST endpoint for binding pods to nodes when etcd is in use.
|
// BindingREST implements the REST endpoint for binding pods to nodes when etcd is in use.
|
||||||
type BindingREST struct {
|
type BindingREST struct {
|
||||||
store *registry.Store
|
store *registry.Store
|
||||||
|
@ -49,7 +49,7 @@ func NewSecurityContextDeny(client clientset.Interface) admission.Interface {
|
|||||||
|
|
||||||
// Admit will deny any pod that defines SELinuxOptions or RunAsUser.
|
// Admit will deny any pod that defines SELinuxOptions or RunAsUser.
|
||||||
func (p *plugin) Admit(a admission.Attributes) (err error) {
|
func (p *plugin) Admit(a admission.Attributes) (err error) {
|
||||||
if a.GetResource().GroupResource() != api.Resource("pods") {
|
if a.GetSubresource() != "" || a.GetResource().GroupResource() != api.Resource("pods") {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user