mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-22 11:21:47 +00:00
Merge pull request #29694 from jsafrane/dynprov2-apionly
Automatic merge from submit-queue Add API for StorageClasses This is the API objects only required for dynamic provisioning picked apart from the controller logic. Entire feature is here: https://github.com/kubernetes/kubernetes/pull/29006
This commit is contained in:
commit
7abc3de621
@ -7024,6 +7024,561 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"path": "/apis/extensions/v1beta1/storageclasses",
|
||||||
|
"description": "API at /apis/extensions/v1beta1",
|
||||||
|
"operations": [
|
||||||
|
{
|
||||||
|
"type": "v1beta1.StorageClassList",
|
||||||
|
"method": "GET",
|
||||||
|
"summary": "list or watch objects of kind StorageClass",
|
||||||
|
"nickname": "listStorageClass",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"paramType": "query",
|
||||||
|
"name": "pretty",
|
||||||
|
"description": "If 'true', then the output is pretty printed.",
|
||||||
|
"required": false,
|
||||||
|
"allowMultiple": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"paramType": "query",
|
||||||
|
"name": "labelSelector",
|
||||||
|
"description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.",
|
||||||
|
"required": false,
|
||||||
|
"allowMultiple": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"paramType": "query",
|
||||||
|
"name": "fieldSelector",
|
||||||
|
"description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.",
|
||||||
|
"required": false,
|
||||||
|
"allowMultiple": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "boolean",
|
||||||
|
"paramType": "query",
|
||||||
|
"name": "watch",
|
||||||
|
"description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.",
|
||||||
|
"required": false,
|
||||||
|
"allowMultiple": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"paramType": "query",
|
||||||
|
"name": "resourceVersion",
|
||||||
|
"description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.",
|
||||||
|
"required": false,
|
||||||
|
"allowMultiple": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"paramType": "query",
|
||||||
|
"name": "timeoutSeconds",
|
||||||
|
"description": "Timeout for the list/watch call.",
|
||||||
|
"required": false,
|
||||||
|
"allowMultiple": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responseMessages": [
|
||||||
|
{
|
||||||
|
"code": 200,
|
||||||
|
"message": "OK",
|
||||||
|
"responseModel": "v1beta1.StorageClassList"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json",
|
||||||
|
"application/yaml",
|
||||||
|
"application/vnd.kubernetes.protobuf"
|
||||||
|
],
|
||||||
|
"consumes": [
|
||||||
|
"*/*"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "v1beta1.StorageClass",
|
||||||
|
"method": "POST",
|
||||||
|
"summary": "create a StorageClass",
|
||||||
|
"nickname": "createStorageClass",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"paramType": "query",
|
||||||
|
"name": "pretty",
|
||||||
|
"description": "If 'true', then the output is pretty printed.",
|
||||||
|
"required": false,
|
||||||
|
"allowMultiple": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "v1beta1.StorageClass",
|
||||||
|
"paramType": "body",
|
||||||
|
"name": "body",
|
||||||
|
"description": "",
|
||||||
|
"required": true,
|
||||||
|
"allowMultiple": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responseMessages": [
|
||||||
|
{
|
||||||
|
"code": 200,
|
||||||
|
"message": "OK",
|
||||||
|
"responseModel": "v1beta1.StorageClass"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json",
|
||||||
|
"application/yaml",
|
||||||
|
"application/vnd.kubernetes.protobuf"
|
||||||
|
],
|
||||||
|
"consumes": [
|
||||||
|
"*/*"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "unversioned.Status",
|
||||||
|
"method": "DELETE",
|
||||||
|
"summary": "delete collection of StorageClass",
|
||||||
|
"nickname": "deletecollectionStorageClass",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"paramType": "query",
|
||||||
|
"name": "pretty",
|
||||||
|
"description": "If 'true', then the output is pretty printed.",
|
||||||
|
"required": false,
|
||||||
|
"allowMultiple": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"paramType": "query",
|
||||||
|
"name": "labelSelector",
|
||||||
|
"description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.",
|
||||||
|
"required": false,
|
||||||
|
"allowMultiple": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"paramType": "query",
|
||||||
|
"name": "fieldSelector",
|
||||||
|
"description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.",
|
||||||
|
"required": false,
|
||||||
|
"allowMultiple": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "boolean",
|
||||||
|
"paramType": "query",
|
||||||
|
"name": "watch",
|
||||||
|
"description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.",
|
||||||
|
"required": false,
|
||||||
|
"allowMultiple": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"paramType": "query",
|
||||||
|
"name": "resourceVersion",
|
||||||
|
"description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.",
|
||||||
|
"required": false,
|
||||||
|
"allowMultiple": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"paramType": "query",
|
||||||
|
"name": "timeoutSeconds",
|
||||||
|
"description": "Timeout for the list/watch call.",
|
||||||
|
"required": false,
|
||||||
|
"allowMultiple": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responseMessages": [
|
||||||
|
{
|
||||||
|
"code": 200,
|
||||||
|
"message": "OK",
|
||||||
|
"responseModel": "unversioned.Status"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json",
|
||||||
|
"application/yaml",
|
||||||
|
"application/vnd.kubernetes.protobuf"
|
||||||
|
],
|
||||||
|
"consumes": [
|
||||||
|
"*/*"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "/apis/extensions/v1beta1/watch/storageclasses",
|
||||||
|
"description": "API at /apis/extensions/v1beta1",
|
||||||
|
"operations": [
|
||||||
|
{
|
||||||
|
"type": "*versioned.Event",
|
||||||
|
"method": "GET",
|
||||||
|
"summary": "watch individual changes to a list of StorageClass",
|
||||||
|
"nickname": "watchStorageClassList",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"paramType": "query",
|
||||||
|
"name": "pretty",
|
||||||
|
"description": "If 'true', then the output is pretty printed.",
|
||||||
|
"required": false,
|
||||||
|
"allowMultiple": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"paramType": "query",
|
||||||
|
"name": "labelSelector",
|
||||||
|
"description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.",
|
||||||
|
"required": false,
|
||||||
|
"allowMultiple": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"paramType": "query",
|
||||||
|
"name": "fieldSelector",
|
||||||
|
"description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.",
|
||||||
|
"required": false,
|
||||||
|
"allowMultiple": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "boolean",
|
||||||
|
"paramType": "query",
|
||||||
|
"name": "watch",
|
||||||
|
"description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.",
|
||||||
|
"required": false,
|
||||||
|
"allowMultiple": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"paramType": "query",
|
||||||
|
"name": "resourceVersion",
|
||||||
|
"description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.",
|
||||||
|
"required": false,
|
||||||
|
"allowMultiple": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"paramType": "query",
|
||||||
|
"name": "timeoutSeconds",
|
||||||
|
"description": "Timeout for the list/watch call.",
|
||||||
|
"required": false,
|
||||||
|
"allowMultiple": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responseMessages": [
|
||||||
|
{
|
||||||
|
"code": 200,
|
||||||
|
"message": "OK",
|
||||||
|
"responseModel": "*versioned.Event"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json",
|
||||||
|
"application/json;stream=watch",
|
||||||
|
"application/vnd.kubernetes.protobuf",
|
||||||
|
"application/vnd.kubernetes.protobuf;stream=watch"
|
||||||
|
],
|
||||||
|
"consumes": [
|
||||||
|
"*/*"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "/apis/extensions/v1beta1/storageclasses/{name}",
|
||||||
|
"description": "API at /apis/extensions/v1beta1",
|
||||||
|
"operations": [
|
||||||
|
{
|
||||||
|
"type": "v1beta1.StorageClass",
|
||||||
|
"method": "GET",
|
||||||
|
"summary": "read the specified StorageClass",
|
||||||
|
"nickname": "readStorageClass",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"paramType": "query",
|
||||||
|
"name": "pretty",
|
||||||
|
"description": "If 'true', then the output is pretty printed.",
|
||||||
|
"required": false,
|
||||||
|
"allowMultiple": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "boolean",
|
||||||
|
"paramType": "query",
|
||||||
|
"name": "export",
|
||||||
|
"description": "Should this value be exported. Export strips fields that a user can not specify.",
|
||||||
|
"required": false,
|
||||||
|
"allowMultiple": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "boolean",
|
||||||
|
"paramType": "query",
|
||||||
|
"name": "exact",
|
||||||
|
"description": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'",
|
||||||
|
"required": false,
|
||||||
|
"allowMultiple": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"paramType": "path",
|
||||||
|
"name": "name",
|
||||||
|
"description": "name of the StorageClass",
|
||||||
|
"required": true,
|
||||||
|
"allowMultiple": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responseMessages": [
|
||||||
|
{
|
||||||
|
"code": 200,
|
||||||
|
"message": "OK",
|
||||||
|
"responseModel": "v1beta1.StorageClass"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json",
|
||||||
|
"application/yaml",
|
||||||
|
"application/vnd.kubernetes.protobuf"
|
||||||
|
],
|
||||||
|
"consumes": [
|
||||||
|
"*/*"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "v1beta1.StorageClass",
|
||||||
|
"method": "PUT",
|
||||||
|
"summary": "replace the specified StorageClass",
|
||||||
|
"nickname": "replaceStorageClass",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"paramType": "query",
|
||||||
|
"name": "pretty",
|
||||||
|
"description": "If 'true', then the output is pretty printed.",
|
||||||
|
"required": false,
|
||||||
|
"allowMultiple": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "v1beta1.StorageClass",
|
||||||
|
"paramType": "body",
|
||||||
|
"name": "body",
|
||||||
|
"description": "",
|
||||||
|
"required": true,
|
||||||
|
"allowMultiple": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"paramType": "path",
|
||||||
|
"name": "name",
|
||||||
|
"description": "name of the StorageClass",
|
||||||
|
"required": true,
|
||||||
|
"allowMultiple": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responseMessages": [
|
||||||
|
{
|
||||||
|
"code": 200,
|
||||||
|
"message": "OK",
|
||||||
|
"responseModel": "v1beta1.StorageClass"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json",
|
||||||
|
"application/yaml",
|
||||||
|
"application/vnd.kubernetes.protobuf"
|
||||||
|
],
|
||||||
|
"consumes": [
|
||||||
|
"*/*"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "v1beta1.StorageClass",
|
||||||
|
"method": "PATCH",
|
||||||
|
"summary": "partially update the specified StorageClass",
|
||||||
|
"nickname": "patchStorageClass",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"paramType": "query",
|
||||||
|
"name": "pretty",
|
||||||
|
"description": "If 'true', then the output is pretty printed.",
|
||||||
|
"required": false,
|
||||||
|
"allowMultiple": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "unversioned.Patch",
|
||||||
|
"paramType": "body",
|
||||||
|
"name": "body",
|
||||||
|
"description": "",
|
||||||
|
"required": true,
|
||||||
|
"allowMultiple": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"paramType": "path",
|
||||||
|
"name": "name",
|
||||||
|
"description": "name of the StorageClass",
|
||||||
|
"required": true,
|
||||||
|
"allowMultiple": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responseMessages": [
|
||||||
|
{
|
||||||
|
"code": 200,
|
||||||
|
"message": "OK",
|
||||||
|
"responseModel": "v1beta1.StorageClass"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json",
|
||||||
|
"application/yaml",
|
||||||
|
"application/vnd.kubernetes.protobuf"
|
||||||
|
],
|
||||||
|
"consumes": [
|
||||||
|
"application/json-patch+json",
|
||||||
|
"application/merge-patch+json",
|
||||||
|
"application/strategic-merge-patch+json"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "unversioned.Status",
|
||||||
|
"method": "DELETE",
|
||||||
|
"summary": "delete a StorageClass",
|
||||||
|
"nickname": "deleteStorageClass",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"paramType": "query",
|
||||||
|
"name": "pretty",
|
||||||
|
"description": "If 'true', then the output is pretty printed.",
|
||||||
|
"required": false,
|
||||||
|
"allowMultiple": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "v1.DeleteOptions",
|
||||||
|
"paramType": "body",
|
||||||
|
"name": "body",
|
||||||
|
"description": "",
|
||||||
|
"required": true,
|
||||||
|
"allowMultiple": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"paramType": "path",
|
||||||
|
"name": "name",
|
||||||
|
"description": "name of the StorageClass",
|
||||||
|
"required": true,
|
||||||
|
"allowMultiple": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responseMessages": [
|
||||||
|
{
|
||||||
|
"code": 200,
|
||||||
|
"message": "OK",
|
||||||
|
"responseModel": "unversioned.Status"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json",
|
||||||
|
"application/yaml",
|
||||||
|
"application/vnd.kubernetes.protobuf"
|
||||||
|
],
|
||||||
|
"consumes": [
|
||||||
|
"*/*"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "/apis/extensions/v1beta1/watch/storageclasses/{name}",
|
||||||
|
"description": "API at /apis/extensions/v1beta1",
|
||||||
|
"operations": [
|
||||||
|
{
|
||||||
|
"type": "*versioned.Event",
|
||||||
|
"method": "GET",
|
||||||
|
"summary": "watch changes to an object of kind StorageClass",
|
||||||
|
"nickname": "watchStorageClass",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"paramType": "query",
|
||||||
|
"name": "pretty",
|
||||||
|
"description": "If 'true', then the output is pretty printed.",
|
||||||
|
"required": false,
|
||||||
|
"allowMultiple": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"paramType": "query",
|
||||||
|
"name": "labelSelector",
|
||||||
|
"description": "A selector to restrict the list of returned objects by their labels. Defaults to everything.",
|
||||||
|
"required": false,
|
||||||
|
"allowMultiple": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"paramType": "query",
|
||||||
|
"name": "fieldSelector",
|
||||||
|
"description": "A selector to restrict the list of returned objects by their fields. Defaults to everything.",
|
||||||
|
"required": false,
|
||||||
|
"allowMultiple": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "boolean",
|
||||||
|
"paramType": "query",
|
||||||
|
"name": "watch",
|
||||||
|
"description": "Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.",
|
||||||
|
"required": false,
|
||||||
|
"allowMultiple": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"paramType": "query",
|
||||||
|
"name": "resourceVersion",
|
||||||
|
"description": "When specified with a watch call, shows changes that occur after that particular version of a resource. Defaults to changes from the beginning of history.",
|
||||||
|
"required": false,
|
||||||
|
"allowMultiple": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"paramType": "query",
|
||||||
|
"name": "timeoutSeconds",
|
||||||
|
"description": "Timeout for the list/watch call.",
|
||||||
|
"required": false,
|
||||||
|
"allowMultiple": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"paramType": "path",
|
||||||
|
"name": "name",
|
||||||
|
"description": "name of the StorageClass",
|
||||||
|
"required": true,
|
||||||
|
"allowMultiple": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responseMessages": [
|
||||||
|
{
|
||||||
|
"code": 200,
|
||||||
|
"message": "OK",
|
||||||
|
"responseModel": "*versioned.Event"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json",
|
||||||
|
"application/json;stream=watch",
|
||||||
|
"application/vnd.kubernetes.protobuf",
|
||||||
|
"application/vnd.kubernetes.protobuf;stream=watch"
|
||||||
|
],
|
||||||
|
"consumes": [
|
||||||
|
"*/*"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"path": "/apis/extensions/v1beta1/thirdpartyresources",
|
"path": "/apis/extensions/v1beta1/thirdpartyresources",
|
||||||
"description": "API at /apis/extensions/v1beta1",
|
"description": "API at /apis/extensions/v1beta1",
|
||||||
@ -10219,6 +10774,63 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"v1beta1.StorageClassList": {
|
||||||
|
"id": "v1beta1.StorageClassList",
|
||||||
|
"description": "StorageClassList is a collection of storage classes.",
|
||||||
|
"required": [
|
||||||
|
"items"
|
||||||
|
],
|
||||||
|
"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": "unversioned.ListMeta",
|
||||||
|
"description": "Standard list metadata More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata"
|
||||||
|
},
|
||||||
|
"items": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"$ref": "v1beta1.StorageClass"
|
||||||
|
},
|
||||||
|
"description": "Items is the list of StorageClasses"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"v1beta1.StorageClass": {
|
||||||
|
"id": "v1beta1.StorageClass",
|
||||||
|
"description": "StorageClass describes the parameters for a class of storage for which PersistentVolumes can be dynamically provisioned.\n\nStorageClasses are non-namespaced; the name of the storage class according to etcd is in ObjectMeta.Name.",
|
||||||
|
"required": [
|
||||||
|
"provisioner"
|
||||||
|
],
|
||||||
|
"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": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata"
|
||||||
|
},
|
||||||
|
"provisioner": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Provisioner indicates the type of the provisioner."
|
||||||
|
},
|
||||||
|
"parameters": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Parameters holds the parameters for the provisioner that should create volumes of this storage class."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"v1beta1.ThirdPartyResourceList": {
|
"v1beta1.ThirdPartyResourceList": {
|
||||||
"id": "v1beta1.ThirdPartyResourceList",
|
"id": "v1beta1.ThirdPartyResourceList",
|
||||||
"description": "ThirdPartyResourceList is a list of ThirdPartyResources.",
|
"description": "ThirdPartyResourceList is a list of ThirdPartyResources.",
|
||||||
|
@ -423,6 +423,12 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }
|
|||||||
<li>
|
<li>
|
||||||
<p><a href="#_v1beta1_networkpolicylist">v1beta1.NetworkPolicyList</a></p>
|
<p><a href="#_v1beta1_networkpolicylist">v1beta1.NetworkPolicyList</a></p>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><a href="#_v1beta1_storageclass">v1beta1.StorageClass</a></p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p><a href="#_v1beta1_storageclasslist">v1beta1.StorageClassList</a></p>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -1547,6 +1553,71 @@ Examples:<br>
|
|||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="sect2">
|
||||||
|
<h3 id="_v1beta1_storageclass">v1beta1.StorageClass</h3>
|
||||||
|
<div class="paragraph">
|
||||||
|
<p>StorageClass describes the parameters for a class of storage for which PersistentVolumes can be dynamically provisioned.</p>
|
||||||
|
</div>
|
||||||
|
<div class="paragraph">
|
||||||
|
<p>StorageClasses are non-namespaced; the name of the storage class according to etcd is in ObjectMeta.Name.</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">Standard object’s metadata. More info: <a href="http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata">http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata</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"><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">provisioner</p></td>
|
||||||
|
<td class="tableblock halign-left valign-top"><p class="tableblock">Provisioner indicates the type of the provisioner.</p></td>
|
||||||
|
<td class="tableblock halign-left valign-top"><p class="tableblock">true</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">parameters</p></td>
|
||||||
|
<td class="tableblock halign-left valign-top"><p class="tableblock">Parameters holds the parameters for the provisioner that should create volumes of this storage class.</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">object</p></td>
|
||||||
|
<td class="tableblock halign-left valign-top"></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="sect2">
|
<div class="sect2">
|
||||||
<h3 id="_v1_execaction">v1.ExecAction</h3>
|
<h3 id="_v1_execaction">v1.ExecAction</h3>
|
||||||
@ -2121,6 +2192,61 @@ Populated by the system when a graceful deletion is requested. Read-only. More i
|
|||||||
<div class="paragraph">
|
<div class="paragraph">
|
||||||
<p>Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.</p>
|
<p>Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.</p>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="sect2">
|
||||||
|
<h3 id="_v1beta1_storageclasslist">v1beta1.StorageClassList</h3>
|
||||||
|
<div class="paragraph">
|
||||||
|
<p>StorageClassList is a collection of storage classes.</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">Standard list metadata More info: <a href="http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata">http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata</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"><a href="#_unversioned_listmeta">unversioned.ListMeta</a></p></td>
|
||||||
|
<td class="tableblock halign-left valign-top"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="tableblock halign-left valign-top"><p class="tableblock">items</p></td>
|
||||||
|
<td class="tableblock halign-left valign-top"><p class="tableblock">Items is the list of StorageClasses</p></td>
|
||||||
|
<td class="tableblock halign-left valign-top"><p class="tableblock">true</p></td>
|
||||||
|
<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="#_v1beta1_storageclass">v1beta1.StorageClass</a> array</p></td>
|
||||||
|
<td class="tableblock halign-left valign-top"></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="sect2">
|
<div class="sect2">
|
||||||
<h3 id="_v1_flockervolumesource">v1.FlockerVolumeSource</h3>
|
<h3 id="_v1_flockervolumesource">v1.FlockerVolumeSource</h3>
|
||||||
@ -6365,7 +6491,7 @@ Both these may change in the future. Incoming requests are matched against the h
|
|||||||
</div>
|
</div>
|
||||||
<div id="footer">
|
<div id="footer">
|
||||||
<div id="footer-text">
|
<div id="footer-text">
|
||||||
Last updated 2016-07-07 17:05:18 UTC
|
Last updated 2016-07-28 17:22:13 UTC
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -2262,7 +2262,32 @@ __EOF__
|
|||||||
# Post-condition: no PVCs
|
# Post-condition: no PVCs
|
||||||
kube::test::get_object_assert pvc "{{range.items}}{{$id_field}}:{{end}}" ''
|
kube::test::get_object_assert pvc "{{range.items}}{{$id_field}}:{{end}}" ''
|
||||||
|
|
||||||
|
############################
|
||||||
|
# Storage Classes #
|
||||||
|
############################
|
||||||
|
|
||||||
|
### Create and delete storage class
|
||||||
|
# Pre-condition: no storage classes currently exist
|
||||||
|
kube::test::get_object_assert storageclass "{{range.items}}{{$id_field}}:{{end}}" ''
|
||||||
|
# Command
|
||||||
|
kubectl create -f - "${kube_flags[@]}" << __EOF__
|
||||||
|
{
|
||||||
|
"kind": "StorageClass",
|
||||||
|
"apiVersion": "extensions/v1beta1",
|
||||||
|
"metadata": {
|
||||||
|
"name": "storage-class-name"
|
||||||
|
},
|
||||||
|
"provisioner": "kubernetes.io/fake-provisioner-type",
|
||||||
|
"parameters": {
|
||||||
|
"zone":"us-east-1b",
|
||||||
|
"type":"ssd"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
__EOF__
|
||||||
|
kube::test::get_object_assert storageclass "{{range.items}}{{$id_field}}:{{end}}" 'storage-class-name:'
|
||||||
|
kubectl delete storageclass storage-class-name "${kube_flags[@]}"
|
||||||
|
# Post-condition: no storage classes
|
||||||
|
kube::test::get_object_assert storageclass "{{range.items}}{{$id_field}}:{{end}}" ''
|
||||||
|
|
||||||
#########
|
#########
|
||||||
# Nodes #
|
# Nodes #
|
||||||
|
@ -93,6 +93,7 @@ func newRESTMapper(externalVersions []unversioned.GroupVersion) meta.RESTMapper
|
|||||||
rootScoped := sets.NewString(
|
rootScoped := sets.NewString(
|
||||||
"PodSecurityPolicy",
|
"PodSecurityPolicy",
|
||||||
"ThirdPartyResource",
|
"ThirdPartyResource",
|
||||||
|
"StorageClass",
|
||||||
)
|
)
|
||||||
|
|
||||||
ignoredKinds := sets.NewString()
|
ignoredKinds := sets.NewString()
|
||||||
|
@ -75,5 +75,7 @@ func addKnownTypes(scheme *runtime.Scheme) {
|
|||||||
&PodSecurityPolicyList{},
|
&PodSecurityPolicyList{},
|
||||||
&NetworkPolicy{},
|
&NetworkPolicy{},
|
||||||
&NetworkPolicyList{},
|
&NetworkPolicyList{},
|
||||||
|
&StorageClass{},
|
||||||
|
&StorageClassList{},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -15508,6 +15508,718 @@ func (x *NetworkPolicyList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder
|
|||||||
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (x *StorageClass) CodecEncodeSelf(e *codec1978.Encoder) {
|
||||||
|
var h codecSelfer1234
|
||||||
|
z, r := codec1978.GenHelperEncoder(e)
|
||||||
|
_, _, _ = h, z, r
|
||||||
|
if x == nil {
|
||||||
|
r.EncodeNil()
|
||||||
|
} else {
|
||||||
|
yym1 := z.EncBinary()
|
||||||
|
_ = yym1
|
||||||
|
if false {
|
||||||
|
} else if z.HasExtensions() && z.EncExt(x) {
|
||||||
|
} else {
|
||||||
|
yysep2 := !z.EncBinary()
|
||||||
|
yy2arr2 := z.EncBasicHandle().StructToArray
|
||||||
|
var yyq2 [5]bool
|
||||||
|
_, _, _ = yysep2, yyq2, yy2arr2
|
||||||
|
const yyr2 bool = false
|
||||||
|
yyq2[0] = true
|
||||||
|
yyq2[2] = len(x.Parameters) != 0
|
||||||
|
yyq2[3] = x.Kind != ""
|
||||||
|
yyq2[4] = x.APIVersion != ""
|
||||||
|
var yynn2 int
|
||||||
|
if yyr2 || yy2arr2 {
|
||||||
|
r.EncodeArrayStart(5)
|
||||||
|
} else {
|
||||||
|
yynn2 = 1
|
||||||
|
for _, b := range yyq2 {
|
||||||
|
if b {
|
||||||
|
yynn2++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
r.EncodeMapStart(yynn2)
|
||||||
|
yynn2 = 0
|
||||||
|
}
|
||||||
|
if yyr2 || yy2arr2 {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if yyq2[0] {
|
||||||
|
yy4 := &x.ObjectMeta
|
||||||
|
yy4.CodecEncodeSelf(e)
|
||||||
|
} else {
|
||||||
|
r.EncodeNil()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if yyq2[0] {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapKey1234)
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string("metadata"))
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapValue1234)
|
||||||
|
yy6 := &x.ObjectMeta
|
||||||
|
yy6.CodecEncodeSelf(e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if yyr2 || yy2arr2 {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
yym9 := z.EncBinary()
|
||||||
|
_ = yym9
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string(x.Provisioner))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapKey1234)
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string("provisioner"))
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapValue1234)
|
||||||
|
yym10 := z.EncBinary()
|
||||||
|
_ = yym10
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string(x.Provisioner))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if yyr2 || yy2arr2 {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if yyq2[2] {
|
||||||
|
if x.Parameters == nil {
|
||||||
|
r.EncodeNil()
|
||||||
|
} else {
|
||||||
|
yym12 := z.EncBinary()
|
||||||
|
_ = yym12
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
z.F.EncMapStringStringV(x.Parameters, false, e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
r.EncodeNil()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if yyq2[2] {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapKey1234)
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string("parameters"))
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapValue1234)
|
||||||
|
if x.Parameters == nil {
|
||||||
|
r.EncodeNil()
|
||||||
|
} else {
|
||||||
|
yym13 := z.EncBinary()
|
||||||
|
_ = yym13
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
z.F.EncMapStringStringV(x.Parameters, false, e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if yyr2 || yy2arr2 {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if yyq2[3] {
|
||||||
|
yym15 := z.EncBinary()
|
||||||
|
_ = yym15
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string(x.Kind))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, "")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if yyq2[3] {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapKey1234)
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string("kind"))
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapValue1234)
|
||||||
|
yym16 := z.EncBinary()
|
||||||
|
_ = yym16
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string(x.Kind))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if yyr2 || yy2arr2 {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if yyq2[4] {
|
||||||
|
yym18 := z.EncBinary()
|
||||||
|
_ = yym18
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, "")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if yyq2[4] {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapKey1234)
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string("apiVersion"))
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapValue1234)
|
||||||
|
yym19 := z.EncBinary()
|
||||||
|
_ = yym19
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if yyr2 || yy2arr2 {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
} else {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapEnd1234)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *StorageClass) CodecDecodeSelf(d *codec1978.Decoder) {
|
||||||
|
var h codecSelfer1234
|
||||||
|
z, r := codec1978.GenHelperDecoder(d)
|
||||||
|
_, _, _ = h, z, r
|
||||||
|
yym1 := z.DecBinary()
|
||||||
|
_ = yym1
|
||||||
|
if false {
|
||||||
|
} else if z.HasExtensions() && z.DecExt(x) {
|
||||||
|
} else {
|
||||||
|
yyct2 := r.ContainerType()
|
||||||
|
if yyct2 == codecSelferValueTypeMap1234 {
|
||||||
|
yyl2 := r.ReadMapStart()
|
||||||
|
if yyl2 == 0 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerMapEnd1234)
|
||||||
|
} else {
|
||||||
|
x.codecDecodeSelfFromMap(yyl2, d)
|
||||||
|
}
|
||||||
|
} else if yyct2 == codecSelferValueTypeArray1234 {
|
||||||
|
yyl2 := r.ReadArrayStart()
|
||||||
|
if yyl2 == 0 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
} else {
|
||||||
|
x.codecDecodeSelfFromArray(yyl2, d)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *StorageClass) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) {
|
||||||
|
var h codecSelfer1234
|
||||||
|
z, r := codec1978.GenHelperDecoder(d)
|
||||||
|
_, _, _ = h, z, r
|
||||||
|
var yys3Slc = z.DecScratchBuffer() // default slice to decode into
|
||||||
|
_ = yys3Slc
|
||||||
|
var yyhl3 bool = l >= 0
|
||||||
|
for yyj3 := 0; ; yyj3++ {
|
||||||
|
if yyhl3 {
|
||||||
|
if yyj3 >= l {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if r.CheckBreak() {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerMapKey1234)
|
||||||
|
yys3Slc = r.DecodeBytes(yys3Slc, true, true)
|
||||||
|
yys3 := string(yys3Slc)
|
||||||
|
z.DecSendContainerState(codecSelfer_containerMapValue1234)
|
||||||
|
switch yys3 {
|
||||||
|
case "metadata":
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.ObjectMeta = pkg2_api.ObjectMeta{}
|
||||||
|
} else {
|
||||||
|
yyv4 := &x.ObjectMeta
|
||||||
|
yyv4.CodecDecodeSelf(d)
|
||||||
|
}
|
||||||
|
case "provisioner":
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.Provisioner = ""
|
||||||
|
} else {
|
||||||
|
x.Provisioner = string(r.DecodeString())
|
||||||
|
}
|
||||||
|
case "parameters":
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.Parameters = nil
|
||||||
|
} else {
|
||||||
|
yyv6 := &x.Parameters
|
||||||
|
yym7 := z.DecBinary()
|
||||||
|
_ = yym7
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
z.F.DecMapStringStringX(yyv6, false, d)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
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())
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
z.DecStructFieldNotFound(-1, yys3)
|
||||||
|
} // end switch yys3
|
||||||
|
} // end for yyj3
|
||||||
|
z.DecSendContainerState(codecSelfer_containerMapEnd1234)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *StorageClass) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
|
||||||
|
var h codecSelfer1234
|
||||||
|
z, r := codec1978.GenHelperDecoder(d)
|
||||||
|
_, _, _ = h, z, r
|
||||||
|
var yyj10 int
|
||||||
|
var yyb10 bool
|
||||||
|
var yyhl10 bool = l >= 0
|
||||||
|
yyj10++
|
||||||
|
if yyhl10 {
|
||||||
|
yyb10 = yyj10 > l
|
||||||
|
} else {
|
||||||
|
yyb10 = r.CheckBreak()
|
||||||
|
}
|
||||||
|
if yyb10 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.ObjectMeta = pkg2_api.ObjectMeta{}
|
||||||
|
} else {
|
||||||
|
yyv11 := &x.ObjectMeta
|
||||||
|
yyv11.CodecDecodeSelf(d)
|
||||||
|
}
|
||||||
|
yyj10++
|
||||||
|
if yyhl10 {
|
||||||
|
yyb10 = yyj10 > l
|
||||||
|
} else {
|
||||||
|
yyb10 = r.CheckBreak()
|
||||||
|
}
|
||||||
|
if yyb10 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.Provisioner = ""
|
||||||
|
} else {
|
||||||
|
x.Provisioner = string(r.DecodeString())
|
||||||
|
}
|
||||||
|
yyj10++
|
||||||
|
if yyhl10 {
|
||||||
|
yyb10 = yyj10 > l
|
||||||
|
} else {
|
||||||
|
yyb10 = r.CheckBreak()
|
||||||
|
}
|
||||||
|
if yyb10 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.Parameters = nil
|
||||||
|
} else {
|
||||||
|
yyv13 := &x.Parameters
|
||||||
|
yym14 := z.DecBinary()
|
||||||
|
_ = yym14
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
z.F.DecMapStringStringX(yyv13, false, d)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
yyj10++
|
||||||
|
if yyhl10 {
|
||||||
|
yyb10 = yyj10 > l
|
||||||
|
} else {
|
||||||
|
yyb10 = r.CheckBreak()
|
||||||
|
}
|
||||||
|
if yyb10 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.Kind = ""
|
||||||
|
} else {
|
||||||
|
x.Kind = string(r.DecodeString())
|
||||||
|
}
|
||||||
|
yyj10++
|
||||||
|
if yyhl10 {
|
||||||
|
yyb10 = yyj10 > l
|
||||||
|
} else {
|
||||||
|
yyb10 = r.CheckBreak()
|
||||||
|
}
|
||||||
|
if yyb10 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.APIVersion = ""
|
||||||
|
} else {
|
||||||
|
x.APIVersion = string(r.DecodeString())
|
||||||
|
}
|
||||||
|
for {
|
||||||
|
yyj10++
|
||||||
|
if yyhl10 {
|
||||||
|
yyb10 = yyj10 > l
|
||||||
|
} else {
|
||||||
|
yyb10 = r.CheckBreak()
|
||||||
|
}
|
||||||
|
if yyb10 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
z.DecStructFieldNotFound(yyj10-1, "")
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *StorageClassList) CodecEncodeSelf(e *codec1978.Encoder) {
|
||||||
|
var h codecSelfer1234
|
||||||
|
z, r := codec1978.GenHelperEncoder(e)
|
||||||
|
_, _, _ = h, z, r
|
||||||
|
if x == nil {
|
||||||
|
r.EncodeNil()
|
||||||
|
} else {
|
||||||
|
yym1 := z.EncBinary()
|
||||||
|
_ = yym1
|
||||||
|
if false {
|
||||||
|
} else if z.HasExtensions() && z.EncExt(x) {
|
||||||
|
} else {
|
||||||
|
yysep2 := !z.EncBinary()
|
||||||
|
yy2arr2 := z.EncBasicHandle().StructToArray
|
||||||
|
var yyq2 [4]bool
|
||||||
|
_, _, _ = yysep2, yyq2, yy2arr2
|
||||||
|
const yyr2 bool = false
|
||||||
|
yyq2[0] = true
|
||||||
|
yyq2[2] = x.Kind != ""
|
||||||
|
yyq2[3] = x.APIVersion != ""
|
||||||
|
var yynn2 int
|
||||||
|
if yyr2 || yy2arr2 {
|
||||||
|
r.EncodeArrayStart(4)
|
||||||
|
} else {
|
||||||
|
yynn2 = 1
|
||||||
|
for _, b := range yyq2 {
|
||||||
|
if b {
|
||||||
|
yynn2++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
r.EncodeMapStart(yynn2)
|
||||||
|
yynn2 = 0
|
||||||
|
}
|
||||||
|
if yyr2 || yy2arr2 {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if yyq2[0] {
|
||||||
|
yy4 := &x.ListMeta
|
||||||
|
yym5 := z.EncBinary()
|
||||||
|
_ = yym5
|
||||||
|
if false {
|
||||||
|
} else if z.HasExtensions() && z.EncExt(yy4) {
|
||||||
|
} else {
|
||||||
|
z.EncFallback(yy4)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
r.EncodeNil()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if yyq2[0] {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapKey1234)
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string("metadata"))
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapValue1234)
|
||||||
|
yy6 := &x.ListMeta
|
||||||
|
yym7 := z.EncBinary()
|
||||||
|
_ = yym7
|
||||||
|
if false {
|
||||||
|
} else if z.HasExtensions() && z.EncExt(yy6) {
|
||||||
|
} else {
|
||||||
|
z.EncFallback(yy6)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if yyr2 || yy2arr2 {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if x.Items == nil {
|
||||||
|
r.EncodeNil()
|
||||||
|
} else {
|
||||||
|
yym9 := z.EncBinary()
|
||||||
|
_ = yym9
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
h.encSliceStorageClass(([]StorageClass)(x.Items), e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapKey1234)
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string("items"))
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapValue1234)
|
||||||
|
if x.Items == nil {
|
||||||
|
r.EncodeNil()
|
||||||
|
} else {
|
||||||
|
yym10 := z.EncBinary()
|
||||||
|
_ = yym10
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
h.encSliceStorageClass(([]StorageClass)(x.Items), e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if yyr2 || yy2arr2 {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if yyq2[2] {
|
||||||
|
yym12 := z.EncBinary()
|
||||||
|
_ = yym12
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string(x.Kind))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, "")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if yyq2[2] {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapKey1234)
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string("kind"))
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapValue1234)
|
||||||
|
yym13 := z.EncBinary()
|
||||||
|
_ = yym13
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string(x.Kind))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if yyr2 || yy2arr2 {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if yyq2[3] {
|
||||||
|
yym15 := z.EncBinary()
|
||||||
|
_ = yym15
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, "")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if yyq2[3] {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapKey1234)
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string("apiVersion"))
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapValue1234)
|
||||||
|
yym16 := z.EncBinary()
|
||||||
|
_ = yym16
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if yyr2 || yy2arr2 {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
} else {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapEnd1234)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *StorageClassList) CodecDecodeSelf(d *codec1978.Decoder) {
|
||||||
|
var h codecSelfer1234
|
||||||
|
z, r := codec1978.GenHelperDecoder(d)
|
||||||
|
_, _, _ = h, z, r
|
||||||
|
yym1 := z.DecBinary()
|
||||||
|
_ = yym1
|
||||||
|
if false {
|
||||||
|
} else if z.HasExtensions() && z.DecExt(x) {
|
||||||
|
} else {
|
||||||
|
yyct2 := r.ContainerType()
|
||||||
|
if yyct2 == codecSelferValueTypeMap1234 {
|
||||||
|
yyl2 := r.ReadMapStart()
|
||||||
|
if yyl2 == 0 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerMapEnd1234)
|
||||||
|
} else {
|
||||||
|
x.codecDecodeSelfFromMap(yyl2, d)
|
||||||
|
}
|
||||||
|
} else if yyct2 == codecSelferValueTypeArray1234 {
|
||||||
|
yyl2 := r.ReadArrayStart()
|
||||||
|
if yyl2 == 0 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
} else {
|
||||||
|
x.codecDecodeSelfFromArray(yyl2, d)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *StorageClassList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) {
|
||||||
|
var h codecSelfer1234
|
||||||
|
z, r := codec1978.GenHelperDecoder(d)
|
||||||
|
_, _, _ = h, z, r
|
||||||
|
var yys3Slc = z.DecScratchBuffer() // default slice to decode into
|
||||||
|
_ = yys3Slc
|
||||||
|
var yyhl3 bool = l >= 0
|
||||||
|
for yyj3 := 0; ; yyj3++ {
|
||||||
|
if yyhl3 {
|
||||||
|
if yyj3 >= l {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if r.CheckBreak() {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerMapKey1234)
|
||||||
|
yys3Slc = r.DecodeBytes(yys3Slc, true, true)
|
||||||
|
yys3 := string(yys3Slc)
|
||||||
|
z.DecSendContainerState(codecSelfer_containerMapValue1234)
|
||||||
|
switch yys3 {
|
||||||
|
case "metadata":
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.ListMeta = pkg1_unversioned.ListMeta{}
|
||||||
|
} else {
|
||||||
|
yyv4 := &x.ListMeta
|
||||||
|
yym5 := z.DecBinary()
|
||||||
|
_ = yym5
|
||||||
|
if false {
|
||||||
|
} else if z.HasExtensions() && z.DecExt(yyv4) {
|
||||||
|
} else {
|
||||||
|
z.DecFallback(yyv4, false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case "items":
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.Items = nil
|
||||||
|
} else {
|
||||||
|
yyv6 := &x.Items
|
||||||
|
yym7 := z.DecBinary()
|
||||||
|
_ = yym7
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
h.decSliceStorageClass((*[]StorageClass)(yyv6), d)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
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())
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
z.DecStructFieldNotFound(-1, yys3)
|
||||||
|
} // end switch yys3
|
||||||
|
} // end for yyj3
|
||||||
|
z.DecSendContainerState(codecSelfer_containerMapEnd1234)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *StorageClassList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
|
||||||
|
var h codecSelfer1234
|
||||||
|
z, r := codec1978.GenHelperDecoder(d)
|
||||||
|
_, _, _ = h, z, r
|
||||||
|
var yyj10 int
|
||||||
|
var yyb10 bool
|
||||||
|
var yyhl10 bool = l >= 0
|
||||||
|
yyj10++
|
||||||
|
if yyhl10 {
|
||||||
|
yyb10 = yyj10 > l
|
||||||
|
} else {
|
||||||
|
yyb10 = r.CheckBreak()
|
||||||
|
}
|
||||||
|
if yyb10 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.ListMeta = pkg1_unversioned.ListMeta{}
|
||||||
|
} else {
|
||||||
|
yyv11 := &x.ListMeta
|
||||||
|
yym12 := z.DecBinary()
|
||||||
|
_ = yym12
|
||||||
|
if false {
|
||||||
|
} else if z.HasExtensions() && z.DecExt(yyv11) {
|
||||||
|
} else {
|
||||||
|
z.DecFallback(yyv11, false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
yyj10++
|
||||||
|
if yyhl10 {
|
||||||
|
yyb10 = yyj10 > l
|
||||||
|
} else {
|
||||||
|
yyb10 = r.CheckBreak()
|
||||||
|
}
|
||||||
|
if yyb10 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.Items = nil
|
||||||
|
} else {
|
||||||
|
yyv13 := &x.Items
|
||||||
|
yym14 := z.DecBinary()
|
||||||
|
_ = yym14
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
h.decSliceStorageClass((*[]StorageClass)(yyv13), d)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
yyj10++
|
||||||
|
if yyhl10 {
|
||||||
|
yyb10 = yyj10 > l
|
||||||
|
} else {
|
||||||
|
yyb10 = r.CheckBreak()
|
||||||
|
}
|
||||||
|
if yyb10 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.Kind = ""
|
||||||
|
} else {
|
||||||
|
x.Kind = string(r.DecodeString())
|
||||||
|
}
|
||||||
|
yyj10++
|
||||||
|
if yyhl10 {
|
||||||
|
yyb10 = yyj10 > l
|
||||||
|
} else {
|
||||||
|
yyb10 = r.CheckBreak()
|
||||||
|
}
|
||||||
|
if yyb10 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.APIVersion = ""
|
||||||
|
} else {
|
||||||
|
x.APIVersion = string(r.DecodeString())
|
||||||
|
}
|
||||||
|
for {
|
||||||
|
yyj10++
|
||||||
|
if yyhl10 {
|
||||||
|
yyb10 = yyj10 > l
|
||||||
|
} else {
|
||||||
|
yyb10 = r.CheckBreak()
|
||||||
|
}
|
||||||
|
if yyb10 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
z.DecStructFieldNotFound(yyj10-1, "")
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
}
|
||||||
|
|
||||||
func (x codecSelfer1234) encSliceCustomMetricTarget(v []CustomMetricTarget, e *codec1978.Encoder) {
|
func (x codecSelfer1234) encSliceCustomMetricTarget(v []CustomMetricTarget, e *codec1978.Encoder) {
|
||||||
var h codecSelfer1234
|
var h codecSelfer1234
|
||||||
z, r := codec1978.GenHelperEncoder(e)
|
z, r := codec1978.GenHelperEncoder(e)
|
||||||
@ -17989,3 +18701,122 @@ func (x codecSelfer1234) decSliceNetworkPolicy(v *[]NetworkPolicy, d *codec1978.
|
|||||||
*v = yyv1
|
*v = yyv1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (x codecSelfer1234) encSliceStorageClass(v []StorageClass, e *codec1978.Encoder) {
|
||||||
|
var h codecSelfer1234
|
||||||
|
z, r := codec1978.GenHelperEncoder(e)
|
||||||
|
_, _, _ = h, z, r
|
||||||
|
r.EncodeArrayStart(len(v))
|
||||||
|
for _, yyv1 := range v {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
yy2 := &yyv1
|
||||||
|
yy2.CodecEncodeSelf(e)
|
||||||
|
}
|
||||||
|
z.EncSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x codecSelfer1234) decSliceStorageClass(v *[]StorageClass, d *codec1978.Decoder) {
|
||||||
|
var h codecSelfer1234
|
||||||
|
z, r := codec1978.GenHelperDecoder(d)
|
||||||
|
_, _, _ = h, z, r
|
||||||
|
|
||||||
|
yyv1 := *v
|
||||||
|
yyh1, yyl1 := z.DecSliceHelperStart()
|
||||||
|
var yyc1 bool
|
||||||
|
_ = yyc1
|
||||||
|
if yyl1 == 0 {
|
||||||
|
if yyv1 == nil {
|
||||||
|
yyv1 = []StorageClass{}
|
||||||
|
yyc1 = true
|
||||||
|
} else if len(yyv1) != 0 {
|
||||||
|
yyv1 = yyv1[:0]
|
||||||
|
yyc1 = true
|
||||||
|
}
|
||||||
|
} else if yyl1 > 0 {
|
||||||
|
var yyrr1, yyrl1 int
|
||||||
|
var yyrt1 bool
|
||||||
|
_, _ = yyrl1, yyrt1
|
||||||
|
yyrr1 = yyl1 // len(yyv1)
|
||||||
|
if yyl1 > cap(yyv1) {
|
||||||
|
|
||||||
|
yyrg1 := len(yyv1) > 0
|
||||||
|
yyv21 := yyv1
|
||||||
|
yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 264)
|
||||||
|
if yyrt1 {
|
||||||
|
if yyrl1 <= cap(yyv1) {
|
||||||
|
yyv1 = yyv1[:yyrl1]
|
||||||
|
} else {
|
||||||
|
yyv1 = make([]StorageClass, yyrl1)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
yyv1 = make([]StorageClass, yyrl1)
|
||||||
|
}
|
||||||
|
yyc1 = true
|
||||||
|
yyrr1 = len(yyv1)
|
||||||
|
if yyrg1 {
|
||||||
|
copy(yyv1, yyv21)
|
||||||
|
}
|
||||||
|
} else if yyl1 != len(yyv1) {
|
||||||
|
yyv1 = yyv1[:yyl1]
|
||||||
|
yyc1 = true
|
||||||
|
}
|
||||||
|
yyj1 := 0
|
||||||
|
for ; yyj1 < yyrr1; yyj1++ {
|
||||||
|
yyh1.ElemContainerState(yyj1)
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
yyv1[yyj1] = StorageClass{}
|
||||||
|
} else {
|
||||||
|
yyv2 := &yyv1[yyj1]
|
||||||
|
yyv2.CodecDecodeSelf(d)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
if yyrt1 {
|
||||||
|
for ; yyj1 < yyl1; yyj1++ {
|
||||||
|
yyv1 = append(yyv1, StorageClass{})
|
||||||
|
yyh1.ElemContainerState(yyj1)
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
yyv1[yyj1] = StorageClass{}
|
||||||
|
} else {
|
||||||
|
yyv3 := &yyv1[yyj1]
|
||||||
|
yyv3.CodecDecodeSelf(d)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
yyj1 := 0
|
||||||
|
for ; !r.CheckBreak(); yyj1++ {
|
||||||
|
|
||||||
|
if yyj1 >= len(yyv1) {
|
||||||
|
yyv1 = append(yyv1, StorageClass{}) // var yyz1 StorageClass
|
||||||
|
yyc1 = true
|
||||||
|
}
|
||||||
|
yyh1.ElemContainerState(yyj1)
|
||||||
|
if yyj1 < len(yyv1) {
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
yyv1[yyj1] = StorageClass{}
|
||||||
|
} else {
|
||||||
|
yyv4 := &yyv1[yyj1]
|
||||||
|
yyv4.CodecDecodeSelf(d)
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
z.DecSwallow()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
if yyj1 < len(yyv1) {
|
||||||
|
yyv1 = yyv1[:yyj1]
|
||||||
|
yyc1 = true
|
||||||
|
} else if yyj1 == 0 && yyv1 == nil {
|
||||||
|
yyv1 = []StorageClass{}
|
||||||
|
yyc1 = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
yyh1.End()
|
||||||
|
if yyc1 {
|
||||||
|
*v = yyv1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -899,3 +899,41 @@ type NetworkPolicyList struct {
|
|||||||
|
|
||||||
Items []NetworkPolicy `json:"items"`
|
Items []NetworkPolicy `json:"items"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// +genclient=true
|
||||||
|
// +nonNamespaced=true
|
||||||
|
|
||||||
|
// StorageClass describes a named "class" of storage offered in a cluster.
|
||||||
|
// Different classes might map to quality-of-service levels, or to backup policies,
|
||||||
|
// or to arbitrary policies determined by the cluster administrators. Kubernetes
|
||||||
|
// itself is unopinionated about what classes represent. This concept is sometimes
|
||||||
|
// called "profiles" in other storage systems.
|
||||||
|
// The name of a StorageClass object is significant, and is how users can request a particular class.
|
||||||
|
type StorageClass struct {
|
||||||
|
unversioned.TypeMeta `json:",inline"`
|
||||||
|
api.ObjectMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
|
// provisioner is the driver expected to handle this StorageClass.
|
||||||
|
// This is an optionally-prefixed name, like a label key.
|
||||||
|
// For example: "kubernetes.io/gce-pd" or "kubernetes.io/aws-ebs".
|
||||||
|
// This value may not be empty.
|
||||||
|
Provisioner string `json:"provisioner"`
|
||||||
|
|
||||||
|
// parameters holds parameters for the provisioner.
|
||||||
|
// These values are opaque to the system and are passed directly
|
||||||
|
// to the provisioner. The only validation done on keys is that they are
|
||||||
|
// not empty. The maximum number of parameters is
|
||||||
|
// 512, with a cumulative max size of 256K
|
||||||
|
Parameters map[string]string `json:"parameters,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// StorageClassList is a collection of storage classes.
|
||||||
|
type StorageClassList struct {
|
||||||
|
unversioned.TypeMeta `json:",inline"`
|
||||||
|
// Standard list metadata
|
||||||
|
// More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
|
||||||
|
unversioned.ListMeta `json:"metadata,omitempty"`
|
||||||
|
|
||||||
|
// Items is the list of StorageClasses
|
||||||
|
Items []StorageClass `json:"items"`
|
||||||
|
}
|
||||||
|
@ -88,6 +88,8 @@ limitations under the License.
|
|||||||
Scale
|
Scale
|
||||||
ScaleSpec
|
ScaleSpec
|
||||||
ScaleStatus
|
ScaleStatus
|
||||||
|
StorageClass
|
||||||
|
StorageClassList
|
||||||
SubresourceReference
|
SubresourceReference
|
||||||
SupplementalGroupsStrategyOptions
|
SupplementalGroupsStrategyOptions
|
||||||
ThirdPartyResource
|
ThirdPartyResource
|
||||||
@ -306,6 +308,12 @@ func (*ScaleSpec) ProtoMessage() {}
|
|||||||
func (m *ScaleStatus) Reset() { *m = ScaleStatus{} }
|
func (m *ScaleStatus) Reset() { *m = ScaleStatus{} }
|
||||||
func (*ScaleStatus) ProtoMessage() {}
|
func (*ScaleStatus) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *StorageClass) Reset() { *m = StorageClass{} }
|
||||||
|
func (*StorageClass) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (m *StorageClassList) Reset() { *m = StorageClassList{} }
|
||||||
|
func (*StorageClassList) ProtoMessage() {}
|
||||||
|
|
||||||
func (m *SubresourceReference) Reset() { *m = SubresourceReference{} }
|
func (m *SubresourceReference) Reset() { *m = SubresourceReference{} }
|
||||||
func (*SubresourceReference) ProtoMessage() {}
|
func (*SubresourceReference) ProtoMessage() {}
|
||||||
|
|
||||||
@ -388,6 +396,8 @@ func init() {
|
|||||||
proto.RegisterType((*Scale)(nil), "k8s.io.kubernetes.pkg.apis.extensions.v1beta1.Scale")
|
proto.RegisterType((*Scale)(nil), "k8s.io.kubernetes.pkg.apis.extensions.v1beta1.Scale")
|
||||||
proto.RegisterType((*ScaleSpec)(nil), "k8s.io.kubernetes.pkg.apis.extensions.v1beta1.ScaleSpec")
|
proto.RegisterType((*ScaleSpec)(nil), "k8s.io.kubernetes.pkg.apis.extensions.v1beta1.ScaleSpec")
|
||||||
proto.RegisterType((*ScaleStatus)(nil), "k8s.io.kubernetes.pkg.apis.extensions.v1beta1.ScaleStatus")
|
proto.RegisterType((*ScaleStatus)(nil), "k8s.io.kubernetes.pkg.apis.extensions.v1beta1.ScaleStatus")
|
||||||
|
proto.RegisterType((*StorageClass)(nil), "k8s.io.kubernetes.pkg.apis.extensions.v1beta1.StorageClass")
|
||||||
|
proto.RegisterType((*StorageClassList)(nil), "k8s.io.kubernetes.pkg.apis.extensions.v1beta1.StorageClassList")
|
||||||
proto.RegisterType((*SubresourceReference)(nil), "k8s.io.kubernetes.pkg.apis.extensions.v1beta1.SubresourceReference")
|
proto.RegisterType((*SubresourceReference)(nil), "k8s.io.kubernetes.pkg.apis.extensions.v1beta1.SubresourceReference")
|
||||||
proto.RegisterType((*SupplementalGroupsStrategyOptions)(nil), "k8s.io.kubernetes.pkg.apis.extensions.v1beta1.SupplementalGroupsStrategyOptions")
|
proto.RegisterType((*SupplementalGroupsStrategyOptions)(nil), "k8s.io.kubernetes.pkg.apis.extensions.v1beta1.SupplementalGroupsStrategyOptions")
|
||||||
proto.RegisterType((*ThirdPartyResource)(nil), "k8s.io.kubernetes.pkg.apis.extensions.v1beta1.ThirdPartyResource")
|
proto.RegisterType((*ThirdPartyResource)(nil), "k8s.io.kubernetes.pkg.apis.extensions.v1beta1.ThirdPartyResource")
|
||||||
@ -2830,6 +2840,91 @@ func (m *ScaleStatus) MarshalTo(data []byte) (int, error) {
|
|||||||
return i, nil
|
return i, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *StorageClass) 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 *StorageClass) 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()))
|
||||||
|
n72, err := m.ObjectMeta.MarshalTo(data[i:])
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
i += n72
|
||||||
|
data[i] = 0x12
|
||||||
|
i++
|
||||||
|
i = encodeVarintGenerated(data, i, uint64(len(m.Provisioner)))
|
||||||
|
i += copy(data[i:], m.Provisioner)
|
||||||
|
if len(m.Parameters) > 0 {
|
||||||
|
for k := range m.Parameters {
|
||||||
|
data[i] = 0x1a
|
||||||
|
i++
|
||||||
|
v := m.Parameters[k]
|
||||||
|
mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v)))
|
||||||
|
i = encodeVarintGenerated(data, i, uint64(mapSize))
|
||||||
|
data[i] = 0xa
|
||||||
|
i++
|
||||||
|
i = encodeVarintGenerated(data, i, uint64(len(k)))
|
||||||
|
i += copy(data[i:], k)
|
||||||
|
data[i] = 0x12
|
||||||
|
i++
|
||||||
|
i = encodeVarintGenerated(data, i, uint64(len(v)))
|
||||||
|
i += copy(data[i:], v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return i, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *StorageClassList) 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 *StorageClassList) MarshalTo(data []byte) (int, error) {
|
||||||
|
var i int
|
||||||
|
_ = i
|
||||||
|
var l int
|
||||||
|
_ = l
|
||||||
|
data[i] = 0xa
|
||||||
|
i++
|
||||||
|
i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size()))
|
||||||
|
n73, err := m.ListMeta.MarshalTo(data[i:])
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
i += n73
|
||||||
|
if len(m.Items) > 0 {
|
||||||
|
for _, msg := range m.Items {
|
||||||
|
data[i] = 0x12
|
||||||
|
i++
|
||||||
|
i = encodeVarintGenerated(data, i, uint64(msg.Size()))
|
||||||
|
n, err := msg.MarshalTo(data[i:])
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
i += n
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return i, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (m *SubresourceReference) Marshal() (data []byte, err error) {
|
func (m *SubresourceReference) Marshal() (data []byte, err error) {
|
||||||
size := m.Size()
|
size := m.Size()
|
||||||
data = make([]byte, size)
|
data = make([]byte, size)
|
||||||
@ -2916,11 +3011,11 @@ func (m *ThirdPartyResource) 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()))
|
||||||
n72, err := m.ObjectMeta.MarshalTo(data[i:])
|
n74, err := m.ObjectMeta.MarshalTo(data[i:])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
i += n72
|
i += n74
|
||||||
data[i] = 0x12
|
data[i] = 0x12
|
||||||
i++
|
i++
|
||||||
i = encodeVarintGenerated(data, i, uint64(len(m.Description)))
|
i = encodeVarintGenerated(data, i, uint64(len(m.Description)))
|
||||||
@ -2958,11 +3053,11 @@ func (m *ThirdPartyResourceData) 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()))
|
||||||
n73, err := m.ObjectMeta.MarshalTo(data[i:])
|
n75, err := m.ObjectMeta.MarshalTo(data[i:])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
i += n73
|
i += n75
|
||||||
if m.Data != nil {
|
if m.Data != nil {
|
||||||
data[i] = 0x12
|
data[i] = 0x12
|
||||||
i++
|
i++
|
||||||
@ -2990,11 +3085,11 @@ func (m *ThirdPartyResourceDataList) 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()))
|
||||||
n74, err := m.ListMeta.MarshalTo(data[i:])
|
n76, err := m.ListMeta.MarshalTo(data[i:])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
i += n74
|
i += n76
|
||||||
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
|
||||||
@ -3028,11 +3123,11 @@ func (m *ThirdPartyResourceList) 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()))
|
||||||
n75, err := m.ListMeta.MarshalTo(data[i:])
|
n77, err := m.ListMeta.MarshalTo(data[i:])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
i += n75
|
i += n77
|
||||||
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
|
||||||
@ -3933,6 +4028,38 @@ func (m *ScaleStatus) Size() (n int) {
|
|||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *StorageClass) Size() (n int) {
|
||||||
|
var l int
|
||||||
|
_ = l
|
||||||
|
l = m.ObjectMeta.Size()
|
||||||
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
|
l = len(m.Provisioner)
|
||||||
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
|
if len(m.Parameters) > 0 {
|
||||||
|
for k, v := range m.Parameters {
|
||||||
|
_ = k
|
||||||
|
_ = v
|
||||||
|
mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + len(v) + sovGenerated(uint64(len(v)))
|
||||||
|
n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return n
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *StorageClassList) Size() (n int) {
|
||||||
|
var l int
|
||||||
|
_ = l
|
||||||
|
l = m.ListMeta.Size()
|
||||||
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
|
if len(m.Items) > 0 {
|
||||||
|
for _, e := range m.Items {
|
||||||
|
l = e.Size()
|
||||||
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return n
|
||||||
|
}
|
||||||
|
|
||||||
func (m *SubresourceReference) Size() (n int) {
|
func (m *SubresourceReference) Size() (n int) {
|
||||||
var l int
|
var l int
|
||||||
_ = l
|
_ = l
|
||||||
@ -4797,6 +4924,39 @@ func (this *ScaleStatus) String() string {
|
|||||||
}, "")
|
}, "")
|
||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
|
func (this *StorageClass) String() string {
|
||||||
|
if this == nil {
|
||||||
|
return "nil"
|
||||||
|
}
|
||||||
|
keysForParameters := make([]string, 0, len(this.Parameters))
|
||||||
|
for k := range this.Parameters {
|
||||||
|
keysForParameters = append(keysForParameters, k)
|
||||||
|
}
|
||||||
|
github_com_gogo_protobuf_sortkeys.Strings(keysForParameters)
|
||||||
|
mapStringForParameters := "map[string]string{"
|
||||||
|
for _, k := range keysForParameters {
|
||||||
|
mapStringForParameters += fmt.Sprintf("%v: %v,", k, this.Parameters[k])
|
||||||
|
}
|
||||||
|
mapStringForParameters += "}"
|
||||||
|
s := strings.Join([]string{`&StorageClass{`,
|
||||||
|
`ObjectMeta:` + strings.Replace(strings.Replace(this.ObjectMeta.String(), "ObjectMeta", "k8s_io_kubernetes_pkg_api_v1.ObjectMeta", 1), `&`, ``, 1) + `,`,
|
||||||
|
`Provisioner:` + fmt.Sprintf("%v", this.Provisioner) + `,`,
|
||||||
|
`Parameters:` + mapStringForParameters + `,`,
|
||||||
|
`}`,
|
||||||
|
}, "")
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
func (this *StorageClassList) String() string {
|
||||||
|
if this == nil {
|
||||||
|
return "nil"
|
||||||
|
}
|
||||||
|
s := strings.Join([]string{`&StorageClassList{`,
|
||||||
|
`ListMeta:` + strings.Replace(strings.Replace(this.ListMeta.String(), "ListMeta", "k8s_io_kubernetes_pkg_api_unversioned.ListMeta", 1), `&`, ``, 1) + `,`,
|
||||||
|
`Items:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Items), "StorageClass", "StorageClass", 1), `&`, ``, 1) + `,`,
|
||||||
|
`}`,
|
||||||
|
}, "")
|
||||||
|
return s
|
||||||
|
}
|
||||||
func (this *SubresourceReference) String() string {
|
func (this *SubresourceReference) String() string {
|
||||||
if this == nil {
|
if this == nil {
|
||||||
return "nil"
|
return "nil"
|
||||||
@ -12929,6 +13089,337 @@ func (m *ScaleStatus) Unmarshal(data []byte) error {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
func (m *StorageClass) 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: StorageClass: wiretype end group for non-group")
|
||||||
|
}
|
||||||
|
if fieldNum <= 0 {
|
||||||
|
return fmt.Errorf("proto: StorageClass: 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 Provisioner", wireType)
|
||||||
|
}
|
||||||
|
var stringLen uint64
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := data[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
stringLen |= (uint64(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
intStringLen := int(stringLen)
|
||||||
|
if intStringLen < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postIndex := iNdEx + intStringLen
|
||||||
|
if postIndex > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
m.Provisioner = string(data[iNdEx:postIndex])
|
||||||
|
iNdEx = postIndex
|
||||||
|
case 3:
|
||||||
|
if wireType != 2 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field Parameters", 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
|
||||||
|
}
|
||||||
|
var keykey uint64
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := data[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
keykey |= (uint64(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var stringLenmapkey uint64
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := data[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
stringLenmapkey |= (uint64(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
intStringLenmapkey := int(stringLenmapkey)
|
||||||
|
if intStringLenmapkey < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postStringIndexmapkey := iNdEx + intStringLenmapkey
|
||||||
|
if postStringIndexmapkey > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
mapkey := string(data[iNdEx:postStringIndexmapkey])
|
||||||
|
iNdEx = postStringIndexmapkey
|
||||||
|
var valuekey uint64
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := data[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
valuekey |= (uint64(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var stringLenmapvalue uint64
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := data[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
stringLenmapvalue |= (uint64(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
intStringLenmapvalue := int(stringLenmapvalue)
|
||||||
|
if intStringLenmapvalue < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postStringIndexmapvalue := iNdEx + intStringLenmapvalue
|
||||||
|
if postStringIndexmapvalue > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
mapvalue := string(data[iNdEx:postStringIndexmapvalue])
|
||||||
|
iNdEx = postStringIndexmapvalue
|
||||||
|
if m.Parameters == nil {
|
||||||
|
m.Parameters = make(map[string]string)
|
||||||
|
}
|
||||||
|
m.Parameters[mapkey] = mapvalue
|
||||||
|
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 *StorageClassList) 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: StorageClassList: wiretype end group for non-group")
|
||||||
|
}
|
||||||
|
if fieldNum <= 0 {
|
||||||
|
return fmt.Errorf("proto: StorageClassList: illegal tag %d (wire type %d)", fieldNum, wire)
|
||||||
|
}
|
||||||
|
switch fieldNum {
|
||||||
|
case 1:
|
||||||
|
if wireType != 2 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", 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.ListMeta.Unmarshal(data[iNdEx:postIndex]); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
iNdEx = postIndex
|
||||||
|
case 2:
|
||||||
|
if wireType != 2 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field Items", 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
|
||||||
|
}
|
||||||
|
m.Items = append(m.Items, StorageClass{})
|
||||||
|
if err := m.Items[len(m.Items)-1].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 *SubresourceReference) Unmarshal(data []byte) error {
|
func (m *SubresourceReference) Unmarshal(data []byte) error {
|
||||||
l := len(data)
|
l := len(data)
|
||||||
iNdEx := 0
|
iNdEx := 0
|
||||||
|
@ -942,6 +942,34 @@ message ScaleStatus {
|
|||||||
optional string targetSelector = 3;
|
optional string targetSelector = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// StorageClass describes the parameters for a class of storage for
|
||||||
|
// which PersistentVolumes can be dynamically provisioned.
|
||||||
|
//
|
||||||
|
// StorageClasses are non-namespaced; the name of the storage class
|
||||||
|
// according to etcd is in ObjectMeta.Name.
|
||||||
|
message StorageClass {
|
||||||
|
// Standard object's metadata.
|
||||||
|
// More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
|
||||||
|
optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1;
|
||||||
|
|
||||||
|
// Provisioner indicates the type of the provisioner.
|
||||||
|
optional string provisioner = 2;
|
||||||
|
|
||||||
|
// Parameters holds the parameters for the provisioner that should
|
||||||
|
// create volumes of this storage class.
|
||||||
|
map<string, string> parameters = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
// StorageClassList is a collection of storage classes.
|
||||||
|
message StorageClassList {
|
||||||
|
// Standard list metadata
|
||||||
|
// More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
|
||||||
|
optional k8s.io.kubernetes.pkg.api.unversioned.ListMeta metadata = 1;
|
||||||
|
|
||||||
|
// Items is the list of StorageClasses
|
||||||
|
repeated StorageClass items = 2;
|
||||||
|
}
|
||||||
|
|
||||||
// SubresourceReference contains enough information to let you inspect or modify the referred subresource.
|
// SubresourceReference contains enough information to let you inspect or modify the referred subresource.
|
||||||
message SubresourceReference {
|
message SubresourceReference {
|
||||||
// Kind of the referent; More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
|
// Kind of the referent; More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds
|
||||||
|
@ -63,6 +63,8 @@ func addKnownTypes(scheme *runtime.Scheme) {
|
|||||||
&PodSecurityPolicyList{},
|
&PodSecurityPolicyList{},
|
||||||
&NetworkPolicy{},
|
&NetworkPolicy{},
|
||||||
&NetworkPolicyList{},
|
&NetworkPolicyList{},
|
||||||
|
&StorageClass{},
|
||||||
|
&StorageClassList{},
|
||||||
)
|
)
|
||||||
// Add the watch version that applies
|
// Add the watch version that applies
|
||||||
versionedwatch.AddToGroupVersion(scheme, SchemeGroupVersion)
|
versionedwatch.AddToGroupVersion(scheme, SchemeGroupVersion)
|
||||||
|
@ -20980,6 +20980,718 @@ func (x *NetworkPolicyList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder
|
|||||||
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (x *StorageClass) CodecEncodeSelf(e *codec1978.Encoder) {
|
||||||
|
var h codecSelfer1234
|
||||||
|
z, r := codec1978.GenHelperEncoder(e)
|
||||||
|
_, _, _ = h, z, r
|
||||||
|
if x == nil {
|
||||||
|
r.EncodeNil()
|
||||||
|
} else {
|
||||||
|
yym1 := z.EncBinary()
|
||||||
|
_ = yym1
|
||||||
|
if false {
|
||||||
|
} else if z.HasExtensions() && z.EncExt(x) {
|
||||||
|
} else {
|
||||||
|
yysep2 := !z.EncBinary()
|
||||||
|
yy2arr2 := z.EncBasicHandle().StructToArray
|
||||||
|
var yyq2 [5]bool
|
||||||
|
_, _, _ = yysep2, yyq2, yy2arr2
|
||||||
|
const yyr2 bool = false
|
||||||
|
yyq2[0] = true
|
||||||
|
yyq2[2] = len(x.Parameters) != 0
|
||||||
|
yyq2[3] = x.Kind != ""
|
||||||
|
yyq2[4] = x.APIVersion != ""
|
||||||
|
var yynn2 int
|
||||||
|
if yyr2 || yy2arr2 {
|
||||||
|
r.EncodeArrayStart(5)
|
||||||
|
} else {
|
||||||
|
yynn2 = 1
|
||||||
|
for _, b := range yyq2 {
|
||||||
|
if b {
|
||||||
|
yynn2++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
r.EncodeMapStart(yynn2)
|
||||||
|
yynn2 = 0
|
||||||
|
}
|
||||||
|
if yyr2 || yy2arr2 {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if yyq2[0] {
|
||||||
|
yy4 := &x.ObjectMeta
|
||||||
|
yy4.CodecEncodeSelf(e)
|
||||||
|
} else {
|
||||||
|
r.EncodeNil()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if yyq2[0] {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapKey1234)
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string("metadata"))
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapValue1234)
|
||||||
|
yy6 := &x.ObjectMeta
|
||||||
|
yy6.CodecEncodeSelf(e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if yyr2 || yy2arr2 {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
yym9 := z.EncBinary()
|
||||||
|
_ = yym9
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string(x.Provisioner))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapKey1234)
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string("provisioner"))
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapValue1234)
|
||||||
|
yym10 := z.EncBinary()
|
||||||
|
_ = yym10
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string(x.Provisioner))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if yyr2 || yy2arr2 {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if yyq2[2] {
|
||||||
|
if x.Parameters == nil {
|
||||||
|
r.EncodeNil()
|
||||||
|
} else {
|
||||||
|
yym12 := z.EncBinary()
|
||||||
|
_ = yym12
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
z.F.EncMapStringStringV(x.Parameters, false, e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
r.EncodeNil()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if yyq2[2] {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapKey1234)
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string("parameters"))
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapValue1234)
|
||||||
|
if x.Parameters == nil {
|
||||||
|
r.EncodeNil()
|
||||||
|
} else {
|
||||||
|
yym13 := z.EncBinary()
|
||||||
|
_ = yym13
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
z.F.EncMapStringStringV(x.Parameters, false, e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if yyr2 || yy2arr2 {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if yyq2[3] {
|
||||||
|
yym15 := z.EncBinary()
|
||||||
|
_ = yym15
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string(x.Kind))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, "")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if yyq2[3] {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapKey1234)
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string("kind"))
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapValue1234)
|
||||||
|
yym16 := z.EncBinary()
|
||||||
|
_ = yym16
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string(x.Kind))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if yyr2 || yy2arr2 {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if yyq2[4] {
|
||||||
|
yym18 := z.EncBinary()
|
||||||
|
_ = yym18
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, "")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if yyq2[4] {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapKey1234)
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string("apiVersion"))
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapValue1234)
|
||||||
|
yym19 := z.EncBinary()
|
||||||
|
_ = yym19
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if yyr2 || yy2arr2 {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
} else {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapEnd1234)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *StorageClass) CodecDecodeSelf(d *codec1978.Decoder) {
|
||||||
|
var h codecSelfer1234
|
||||||
|
z, r := codec1978.GenHelperDecoder(d)
|
||||||
|
_, _, _ = h, z, r
|
||||||
|
yym1 := z.DecBinary()
|
||||||
|
_ = yym1
|
||||||
|
if false {
|
||||||
|
} else if z.HasExtensions() && z.DecExt(x) {
|
||||||
|
} else {
|
||||||
|
yyct2 := r.ContainerType()
|
||||||
|
if yyct2 == codecSelferValueTypeMap1234 {
|
||||||
|
yyl2 := r.ReadMapStart()
|
||||||
|
if yyl2 == 0 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerMapEnd1234)
|
||||||
|
} else {
|
||||||
|
x.codecDecodeSelfFromMap(yyl2, d)
|
||||||
|
}
|
||||||
|
} else if yyct2 == codecSelferValueTypeArray1234 {
|
||||||
|
yyl2 := r.ReadArrayStart()
|
||||||
|
if yyl2 == 0 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
} else {
|
||||||
|
x.codecDecodeSelfFromArray(yyl2, d)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *StorageClass) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) {
|
||||||
|
var h codecSelfer1234
|
||||||
|
z, r := codec1978.GenHelperDecoder(d)
|
||||||
|
_, _, _ = h, z, r
|
||||||
|
var yys3Slc = z.DecScratchBuffer() // default slice to decode into
|
||||||
|
_ = yys3Slc
|
||||||
|
var yyhl3 bool = l >= 0
|
||||||
|
for yyj3 := 0; ; yyj3++ {
|
||||||
|
if yyhl3 {
|
||||||
|
if yyj3 >= l {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if r.CheckBreak() {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerMapKey1234)
|
||||||
|
yys3Slc = r.DecodeBytes(yys3Slc, true, true)
|
||||||
|
yys3 := string(yys3Slc)
|
||||||
|
z.DecSendContainerState(codecSelfer_containerMapValue1234)
|
||||||
|
switch yys3 {
|
||||||
|
case "metadata":
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.ObjectMeta = pkg2_v1.ObjectMeta{}
|
||||||
|
} else {
|
||||||
|
yyv4 := &x.ObjectMeta
|
||||||
|
yyv4.CodecDecodeSelf(d)
|
||||||
|
}
|
||||||
|
case "provisioner":
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.Provisioner = ""
|
||||||
|
} else {
|
||||||
|
x.Provisioner = string(r.DecodeString())
|
||||||
|
}
|
||||||
|
case "parameters":
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.Parameters = nil
|
||||||
|
} else {
|
||||||
|
yyv6 := &x.Parameters
|
||||||
|
yym7 := z.DecBinary()
|
||||||
|
_ = yym7
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
z.F.DecMapStringStringX(yyv6, false, d)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
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())
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
z.DecStructFieldNotFound(-1, yys3)
|
||||||
|
} // end switch yys3
|
||||||
|
} // end for yyj3
|
||||||
|
z.DecSendContainerState(codecSelfer_containerMapEnd1234)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *StorageClass) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
|
||||||
|
var h codecSelfer1234
|
||||||
|
z, r := codec1978.GenHelperDecoder(d)
|
||||||
|
_, _, _ = h, z, r
|
||||||
|
var yyj10 int
|
||||||
|
var yyb10 bool
|
||||||
|
var yyhl10 bool = l >= 0
|
||||||
|
yyj10++
|
||||||
|
if yyhl10 {
|
||||||
|
yyb10 = yyj10 > l
|
||||||
|
} else {
|
||||||
|
yyb10 = r.CheckBreak()
|
||||||
|
}
|
||||||
|
if yyb10 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.ObjectMeta = pkg2_v1.ObjectMeta{}
|
||||||
|
} else {
|
||||||
|
yyv11 := &x.ObjectMeta
|
||||||
|
yyv11.CodecDecodeSelf(d)
|
||||||
|
}
|
||||||
|
yyj10++
|
||||||
|
if yyhl10 {
|
||||||
|
yyb10 = yyj10 > l
|
||||||
|
} else {
|
||||||
|
yyb10 = r.CheckBreak()
|
||||||
|
}
|
||||||
|
if yyb10 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.Provisioner = ""
|
||||||
|
} else {
|
||||||
|
x.Provisioner = string(r.DecodeString())
|
||||||
|
}
|
||||||
|
yyj10++
|
||||||
|
if yyhl10 {
|
||||||
|
yyb10 = yyj10 > l
|
||||||
|
} else {
|
||||||
|
yyb10 = r.CheckBreak()
|
||||||
|
}
|
||||||
|
if yyb10 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.Parameters = nil
|
||||||
|
} else {
|
||||||
|
yyv13 := &x.Parameters
|
||||||
|
yym14 := z.DecBinary()
|
||||||
|
_ = yym14
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
z.F.DecMapStringStringX(yyv13, false, d)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
yyj10++
|
||||||
|
if yyhl10 {
|
||||||
|
yyb10 = yyj10 > l
|
||||||
|
} else {
|
||||||
|
yyb10 = r.CheckBreak()
|
||||||
|
}
|
||||||
|
if yyb10 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.Kind = ""
|
||||||
|
} else {
|
||||||
|
x.Kind = string(r.DecodeString())
|
||||||
|
}
|
||||||
|
yyj10++
|
||||||
|
if yyhl10 {
|
||||||
|
yyb10 = yyj10 > l
|
||||||
|
} else {
|
||||||
|
yyb10 = r.CheckBreak()
|
||||||
|
}
|
||||||
|
if yyb10 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.APIVersion = ""
|
||||||
|
} else {
|
||||||
|
x.APIVersion = string(r.DecodeString())
|
||||||
|
}
|
||||||
|
for {
|
||||||
|
yyj10++
|
||||||
|
if yyhl10 {
|
||||||
|
yyb10 = yyj10 > l
|
||||||
|
} else {
|
||||||
|
yyb10 = r.CheckBreak()
|
||||||
|
}
|
||||||
|
if yyb10 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
z.DecStructFieldNotFound(yyj10-1, "")
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *StorageClassList) CodecEncodeSelf(e *codec1978.Encoder) {
|
||||||
|
var h codecSelfer1234
|
||||||
|
z, r := codec1978.GenHelperEncoder(e)
|
||||||
|
_, _, _ = h, z, r
|
||||||
|
if x == nil {
|
||||||
|
r.EncodeNil()
|
||||||
|
} else {
|
||||||
|
yym1 := z.EncBinary()
|
||||||
|
_ = yym1
|
||||||
|
if false {
|
||||||
|
} else if z.HasExtensions() && z.EncExt(x) {
|
||||||
|
} else {
|
||||||
|
yysep2 := !z.EncBinary()
|
||||||
|
yy2arr2 := z.EncBasicHandle().StructToArray
|
||||||
|
var yyq2 [4]bool
|
||||||
|
_, _, _ = yysep2, yyq2, yy2arr2
|
||||||
|
const yyr2 bool = false
|
||||||
|
yyq2[0] = true
|
||||||
|
yyq2[2] = x.Kind != ""
|
||||||
|
yyq2[3] = x.APIVersion != ""
|
||||||
|
var yynn2 int
|
||||||
|
if yyr2 || yy2arr2 {
|
||||||
|
r.EncodeArrayStart(4)
|
||||||
|
} else {
|
||||||
|
yynn2 = 1
|
||||||
|
for _, b := range yyq2 {
|
||||||
|
if b {
|
||||||
|
yynn2++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
r.EncodeMapStart(yynn2)
|
||||||
|
yynn2 = 0
|
||||||
|
}
|
||||||
|
if yyr2 || yy2arr2 {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if yyq2[0] {
|
||||||
|
yy4 := &x.ListMeta
|
||||||
|
yym5 := z.EncBinary()
|
||||||
|
_ = yym5
|
||||||
|
if false {
|
||||||
|
} else if z.HasExtensions() && z.EncExt(yy4) {
|
||||||
|
} else {
|
||||||
|
z.EncFallback(yy4)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
r.EncodeNil()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if yyq2[0] {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapKey1234)
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string("metadata"))
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapValue1234)
|
||||||
|
yy6 := &x.ListMeta
|
||||||
|
yym7 := z.EncBinary()
|
||||||
|
_ = yym7
|
||||||
|
if false {
|
||||||
|
} else if z.HasExtensions() && z.EncExt(yy6) {
|
||||||
|
} else {
|
||||||
|
z.EncFallback(yy6)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if yyr2 || yy2arr2 {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if x.Items == nil {
|
||||||
|
r.EncodeNil()
|
||||||
|
} else {
|
||||||
|
yym9 := z.EncBinary()
|
||||||
|
_ = yym9
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
h.encSliceStorageClass(([]StorageClass)(x.Items), e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapKey1234)
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string("items"))
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapValue1234)
|
||||||
|
if x.Items == nil {
|
||||||
|
r.EncodeNil()
|
||||||
|
} else {
|
||||||
|
yym10 := z.EncBinary()
|
||||||
|
_ = yym10
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
h.encSliceStorageClass(([]StorageClass)(x.Items), e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if yyr2 || yy2arr2 {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if yyq2[2] {
|
||||||
|
yym12 := z.EncBinary()
|
||||||
|
_ = yym12
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string(x.Kind))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, "")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if yyq2[2] {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapKey1234)
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string("kind"))
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapValue1234)
|
||||||
|
yym13 := z.EncBinary()
|
||||||
|
_ = yym13
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string(x.Kind))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if yyr2 || yy2arr2 {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if yyq2[3] {
|
||||||
|
yym15 := z.EncBinary()
|
||||||
|
_ = yym15
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion))
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, "")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if yyq2[3] {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapKey1234)
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string("apiVersion"))
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapValue1234)
|
||||||
|
yym16 := z.EncBinary()
|
||||||
|
_ = yym16
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if yyr2 || yy2arr2 {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
} else {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerMapEnd1234)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *StorageClassList) CodecDecodeSelf(d *codec1978.Decoder) {
|
||||||
|
var h codecSelfer1234
|
||||||
|
z, r := codec1978.GenHelperDecoder(d)
|
||||||
|
_, _, _ = h, z, r
|
||||||
|
yym1 := z.DecBinary()
|
||||||
|
_ = yym1
|
||||||
|
if false {
|
||||||
|
} else if z.HasExtensions() && z.DecExt(x) {
|
||||||
|
} else {
|
||||||
|
yyct2 := r.ContainerType()
|
||||||
|
if yyct2 == codecSelferValueTypeMap1234 {
|
||||||
|
yyl2 := r.ReadMapStart()
|
||||||
|
if yyl2 == 0 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerMapEnd1234)
|
||||||
|
} else {
|
||||||
|
x.codecDecodeSelfFromMap(yyl2, d)
|
||||||
|
}
|
||||||
|
} else if yyct2 == codecSelferValueTypeArray1234 {
|
||||||
|
yyl2 := r.ReadArrayStart()
|
||||||
|
if yyl2 == 0 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
} else {
|
||||||
|
x.codecDecodeSelfFromArray(yyl2, d)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *StorageClassList) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) {
|
||||||
|
var h codecSelfer1234
|
||||||
|
z, r := codec1978.GenHelperDecoder(d)
|
||||||
|
_, _, _ = h, z, r
|
||||||
|
var yys3Slc = z.DecScratchBuffer() // default slice to decode into
|
||||||
|
_ = yys3Slc
|
||||||
|
var yyhl3 bool = l >= 0
|
||||||
|
for yyj3 := 0; ; yyj3++ {
|
||||||
|
if yyhl3 {
|
||||||
|
if yyj3 >= l {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if r.CheckBreak() {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerMapKey1234)
|
||||||
|
yys3Slc = r.DecodeBytes(yys3Slc, true, true)
|
||||||
|
yys3 := string(yys3Slc)
|
||||||
|
z.DecSendContainerState(codecSelfer_containerMapValue1234)
|
||||||
|
switch yys3 {
|
||||||
|
case "metadata":
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.ListMeta = pkg1_unversioned.ListMeta{}
|
||||||
|
} else {
|
||||||
|
yyv4 := &x.ListMeta
|
||||||
|
yym5 := z.DecBinary()
|
||||||
|
_ = yym5
|
||||||
|
if false {
|
||||||
|
} else if z.HasExtensions() && z.DecExt(yyv4) {
|
||||||
|
} else {
|
||||||
|
z.DecFallback(yyv4, false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case "items":
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.Items = nil
|
||||||
|
} else {
|
||||||
|
yyv6 := &x.Items
|
||||||
|
yym7 := z.DecBinary()
|
||||||
|
_ = yym7
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
h.decSliceStorageClass((*[]StorageClass)(yyv6), d)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
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())
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
z.DecStructFieldNotFound(-1, yys3)
|
||||||
|
} // end switch yys3
|
||||||
|
} // end for yyj3
|
||||||
|
z.DecSendContainerState(codecSelfer_containerMapEnd1234)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *StorageClassList) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
|
||||||
|
var h codecSelfer1234
|
||||||
|
z, r := codec1978.GenHelperDecoder(d)
|
||||||
|
_, _, _ = h, z, r
|
||||||
|
var yyj10 int
|
||||||
|
var yyb10 bool
|
||||||
|
var yyhl10 bool = l >= 0
|
||||||
|
yyj10++
|
||||||
|
if yyhl10 {
|
||||||
|
yyb10 = yyj10 > l
|
||||||
|
} else {
|
||||||
|
yyb10 = r.CheckBreak()
|
||||||
|
}
|
||||||
|
if yyb10 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.ListMeta = pkg1_unversioned.ListMeta{}
|
||||||
|
} else {
|
||||||
|
yyv11 := &x.ListMeta
|
||||||
|
yym12 := z.DecBinary()
|
||||||
|
_ = yym12
|
||||||
|
if false {
|
||||||
|
} else if z.HasExtensions() && z.DecExt(yyv11) {
|
||||||
|
} else {
|
||||||
|
z.DecFallback(yyv11, false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
yyj10++
|
||||||
|
if yyhl10 {
|
||||||
|
yyb10 = yyj10 > l
|
||||||
|
} else {
|
||||||
|
yyb10 = r.CheckBreak()
|
||||||
|
}
|
||||||
|
if yyb10 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.Items = nil
|
||||||
|
} else {
|
||||||
|
yyv13 := &x.Items
|
||||||
|
yym14 := z.DecBinary()
|
||||||
|
_ = yym14
|
||||||
|
if false {
|
||||||
|
} else {
|
||||||
|
h.decSliceStorageClass((*[]StorageClass)(yyv13), d)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
yyj10++
|
||||||
|
if yyhl10 {
|
||||||
|
yyb10 = yyj10 > l
|
||||||
|
} else {
|
||||||
|
yyb10 = r.CheckBreak()
|
||||||
|
}
|
||||||
|
if yyb10 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.Kind = ""
|
||||||
|
} else {
|
||||||
|
x.Kind = string(r.DecodeString())
|
||||||
|
}
|
||||||
|
yyj10++
|
||||||
|
if yyhl10 {
|
||||||
|
yyb10 = yyj10 > l
|
||||||
|
} else {
|
||||||
|
yyb10 = r.CheckBreak()
|
||||||
|
}
|
||||||
|
if yyb10 {
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
x.APIVersion = ""
|
||||||
|
} else {
|
||||||
|
x.APIVersion = string(r.DecodeString())
|
||||||
|
}
|
||||||
|
for {
|
||||||
|
yyj10++
|
||||||
|
if yyhl10 {
|
||||||
|
yyb10 = yyj10 > l
|
||||||
|
} else {
|
||||||
|
yyb10 = r.CheckBreak()
|
||||||
|
}
|
||||||
|
if yyb10 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
z.DecStructFieldNotFound(yyj10-1, "")
|
||||||
|
}
|
||||||
|
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
}
|
||||||
|
|
||||||
func (x codecSelfer1234) encSliceCustomMetricTarget(v []CustomMetricTarget, e *codec1978.Encoder) {
|
func (x codecSelfer1234) encSliceCustomMetricTarget(v []CustomMetricTarget, e *codec1978.Encoder) {
|
||||||
var h codecSelfer1234
|
var h codecSelfer1234
|
||||||
z, r := codec1978.GenHelperEncoder(e)
|
z, r := codec1978.GenHelperEncoder(e)
|
||||||
@ -23937,3 +24649,122 @@ func (x codecSelfer1234) decSliceNetworkPolicy(v *[]NetworkPolicy, d *codec1978.
|
|||||||
*v = yyv1
|
*v = yyv1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (x codecSelfer1234) encSliceStorageClass(v []StorageClass, e *codec1978.Encoder) {
|
||||||
|
var h codecSelfer1234
|
||||||
|
z, r := codec1978.GenHelperEncoder(e)
|
||||||
|
_, _, _ = h, z, r
|
||||||
|
r.EncodeArrayStart(len(v))
|
||||||
|
for _, yyv1 := range v {
|
||||||
|
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
|
||||||
|
yy2 := &yyv1
|
||||||
|
yy2.CodecEncodeSelf(e)
|
||||||
|
}
|
||||||
|
z.EncSendContainerState(codecSelfer_containerArrayEnd1234)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x codecSelfer1234) decSliceStorageClass(v *[]StorageClass, d *codec1978.Decoder) {
|
||||||
|
var h codecSelfer1234
|
||||||
|
z, r := codec1978.GenHelperDecoder(d)
|
||||||
|
_, _, _ = h, z, r
|
||||||
|
|
||||||
|
yyv1 := *v
|
||||||
|
yyh1, yyl1 := z.DecSliceHelperStart()
|
||||||
|
var yyc1 bool
|
||||||
|
_ = yyc1
|
||||||
|
if yyl1 == 0 {
|
||||||
|
if yyv1 == nil {
|
||||||
|
yyv1 = []StorageClass{}
|
||||||
|
yyc1 = true
|
||||||
|
} else if len(yyv1) != 0 {
|
||||||
|
yyv1 = yyv1[:0]
|
||||||
|
yyc1 = true
|
||||||
|
}
|
||||||
|
} else if yyl1 > 0 {
|
||||||
|
var yyrr1, yyrl1 int
|
||||||
|
var yyrt1 bool
|
||||||
|
_, _ = yyrl1, yyrt1
|
||||||
|
yyrr1 = yyl1 // len(yyv1)
|
||||||
|
if yyl1 > cap(yyv1) {
|
||||||
|
|
||||||
|
yyrg1 := len(yyv1) > 0
|
||||||
|
yyv21 := yyv1
|
||||||
|
yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 264)
|
||||||
|
if yyrt1 {
|
||||||
|
if yyrl1 <= cap(yyv1) {
|
||||||
|
yyv1 = yyv1[:yyrl1]
|
||||||
|
} else {
|
||||||
|
yyv1 = make([]StorageClass, yyrl1)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
yyv1 = make([]StorageClass, yyrl1)
|
||||||
|
}
|
||||||
|
yyc1 = true
|
||||||
|
yyrr1 = len(yyv1)
|
||||||
|
if yyrg1 {
|
||||||
|
copy(yyv1, yyv21)
|
||||||
|
}
|
||||||
|
} else if yyl1 != len(yyv1) {
|
||||||
|
yyv1 = yyv1[:yyl1]
|
||||||
|
yyc1 = true
|
||||||
|
}
|
||||||
|
yyj1 := 0
|
||||||
|
for ; yyj1 < yyrr1; yyj1++ {
|
||||||
|
yyh1.ElemContainerState(yyj1)
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
yyv1[yyj1] = StorageClass{}
|
||||||
|
} else {
|
||||||
|
yyv2 := &yyv1[yyj1]
|
||||||
|
yyv2.CodecDecodeSelf(d)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
if yyrt1 {
|
||||||
|
for ; yyj1 < yyl1; yyj1++ {
|
||||||
|
yyv1 = append(yyv1, StorageClass{})
|
||||||
|
yyh1.ElemContainerState(yyj1)
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
yyv1[yyj1] = StorageClass{}
|
||||||
|
} else {
|
||||||
|
yyv3 := &yyv1[yyj1]
|
||||||
|
yyv3.CodecDecodeSelf(d)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
yyj1 := 0
|
||||||
|
for ; !r.CheckBreak(); yyj1++ {
|
||||||
|
|
||||||
|
if yyj1 >= len(yyv1) {
|
||||||
|
yyv1 = append(yyv1, StorageClass{}) // var yyz1 StorageClass
|
||||||
|
yyc1 = true
|
||||||
|
}
|
||||||
|
yyh1.ElemContainerState(yyj1)
|
||||||
|
if yyj1 < len(yyv1) {
|
||||||
|
if r.TryDecodeAsNil() {
|
||||||
|
yyv1[yyj1] = StorageClass{}
|
||||||
|
} else {
|
||||||
|
yyv4 := &yyv1[yyj1]
|
||||||
|
yyv4.CodecDecodeSelf(d)
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
z.DecSwallow()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
if yyj1 < len(yyv1) {
|
||||||
|
yyv1 = yyv1[:yyj1]
|
||||||
|
yyc1 = true
|
||||||
|
} else if yyj1 == 0 && yyv1 == nil {
|
||||||
|
yyv1 = []StorageClass{}
|
||||||
|
yyc1 = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
yyh1.End()
|
||||||
|
if yyc1 {
|
||||||
|
*v = yyv1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -1196,3 +1196,36 @@ type NetworkPolicyList struct {
|
|||||||
// Items is a list of schema objects.
|
// Items is a list of schema objects.
|
||||||
Items []NetworkPolicy `json:"items" protobuf:"bytes,2,rep,name=items"`
|
Items []NetworkPolicy `json:"items" protobuf:"bytes,2,rep,name=items"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// +genclient=true
|
||||||
|
// +nonNamespaced=true
|
||||||
|
|
||||||
|
// StorageClass describes the parameters for a class of storage for
|
||||||
|
// which PersistentVolumes can be dynamically provisioned.
|
||||||
|
//
|
||||||
|
// StorageClasses are non-namespaced; the name of the storage class
|
||||||
|
// according to etcd is in ObjectMeta.Name.
|
||||||
|
type StorageClass struct {
|
||||||
|
unversioned.TypeMeta `json:",inline"`
|
||||||
|
// Standard object's metadata.
|
||||||
|
// More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
|
||||||
|
v1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
|
||||||
|
|
||||||
|
// Provisioner indicates the type of the provisioner.
|
||||||
|
Provisioner string `json:"provisioner" protobuf:"bytes,2,opt,name=provisioner"`
|
||||||
|
|
||||||
|
// Parameters holds the parameters for the provisioner that should
|
||||||
|
// create volumes of this storage class.
|
||||||
|
Parameters map[string]string `json:"parameters,omitempty" protobuf:"bytes,3,rep,name=parameters"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// StorageClassList is a collection of storage classes.
|
||||||
|
type StorageClassList struct {
|
||||||
|
unversioned.TypeMeta `json:",inline"`
|
||||||
|
// Standard list metadata
|
||||||
|
// More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
|
||||||
|
unversioned.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
|
||||||
|
|
||||||
|
// Items is the list of StorageClasses
|
||||||
|
Items []StorageClass `json:"items" protobuf:"bytes,2,rep,name=items"`
|
||||||
|
}
|
||||||
|
@ -674,6 +674,27 @@ func (ScaleStatus) SwaggerDoc() map[string]string {
|
|||||||
return map_ScaleStatus
|
return map_ScaleStatus
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var map_StorageClass = map[string]string{
|
||||||
|
"": "StorageClass describes the parameters for a class of storage for which PersistentVolumes can be dynamically provisioned.\n\nStorageClasses are non-namespaced; the name of the storage class according to etcd is in ObjectMeta.Name.",
|
||||||
|
"metadata": "Standard object's metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata",
|
||||||
|
"provisioner": "Provisioner indicates the type of the provisioner.",
|
||||||
|
"parameters": "Parameters holds the parameters for the provisioner that should create volumes of this storage class.",
|
||||||
|
}
|
||||||
|
|
||||||
|
func (StorageClass) SwaggerDoc() map[string]string {
|
||||||
|
return map_StorageClass
|
||||||
|
}
|
||||||
|
|
||||||
|
var map_StorageClassList = map[string]string{
|
||||||
|
"": "StorageClassList is a collection of storage classes.",
|
||||||
|
"metadata": "Standard list metadata More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata",
|
||||||
|
"items": "Items is the list of StorageClasses",
|
||||||
|
}
|
||||||
|
|
||||||
|
func (StorageClassList) SwaggerDoc() map[string]string {
|
||||||
|
return map_StorageClassList
|
||||||
|
}
|
||||||
|
|
||||||
var map_SubresourceReference = map[string]string{
|
var map_SubresourceReference = map[string]string{
|
||||||
"": "SubresourceReference contains enough information to let you inspect or modify the referred subresource.",
|
"": "SubresourceReference contains enough information to let you inspect or modify the referred subresource.",
|
||||||
"kind": "Kind of the referent; More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds",
|
"kind": "Kind of the referent; More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds",
|
||||||
|
@ -156,6 +156,10 @@ func init() {
|
|||||||
Convert_extensions_ScaleSpec_To_v1beta1_ScaleSpec,
|
Convert_extensions_ScaleSpec_To_v1beta1_ScaleSpec,
|
||||||
Convert_v1beta1_ScaleStatus_To_extensions_ScaleStatus,
|
Convert_v1beta1_ScaleStatus_To_extensions_ScaleStatus,
|
||||||
Convert_extensions_ScaleStatus_To_v1beta1_ScaleStatus,
|
Convert_extensions_ScaleStatus_To_v1beta1_ScaleStatus,
|
||||||
|
Convert_v1beta1_StorageClass_To_extensions_StorageClass,
|
||||||
|
Convert_extensions_StorageClass_To_v1beta1_StorageClass,
|
||||||
|
Convert_v1beta1_StorageClassList_To_extensions_StorageClassList,
|
||||||
|
Convert_extensions_StorageClassList_To_v1beta1_StorageClassList,
|
||||||
Convert_v1beta1_SupplementalGroupsStrategyOptions_To_extensions_SupplementalGroupsStrategyOptions,
|
Convert_v1beta1_SupplementalGroupsStrategyOptions_To_extensions_SupplementalGroupsStrategyOptions,
|
||||||
Convert_extensions_SupplementalGroupsStrategyOptions_To_v1beta1_SupplementalGroupsStrategyOptions,
|
Convert_extensions_SupplementalGroupsStrategyOptions_To_v1beta1_SupplementalGroupsStrategyOptions,
|
||||||
Convert_v1beta1_ThirdPartyResource_To_extensions_ThirdPartyResource,
|
Convert_v1beta1_ThirdPartyResource_To_extensions_ThirdPartyResource,
|
||||||
@ -2414,6 +2418,90 @@ func Convert_extensions_ScaleSpec_To_v1beta1_ScaleSpec(in *extensions.ScaleSpec,
|
|||||||
return autoConvert_extensions_ScaleSpec_To_v1beta1_ScaleSpec(in, out, s)
|
return autoConvert_extensions_ScaleSpec_To_v1beta1_ScaleSpec(in, out, s)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func autoConvert_v1beta1_StorageClass_To_extensions_StorageClass(in *StorageClass, out *extensions.StorageClass, 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
|
||||||
|
}
|
||||||
|
out.Provisioner = in.Provisioner
|
||||||
|
out.Parameters = in.Parameters
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func Convert_v1beta1_StorageClass_To_extensions_StorageClass(in *StorageClass, out *extensions.StorageClass, s conversion.Scope) error {
|
||||||
|
return autoConvert_v1beta1_StorageClass_To_extensions_StorageClass(in, out, s)
|
||||||
|
}
|
||||||
|
|
||||||
|
func autoConvert_extensions_StorageClass_To_v1beta1_StorageClass(in *extensions.StorageClass, out *StorageClass, 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
|
||||||
|
}
|
||||||
|
out.Provisioner = in.Provisioner
|
||||||
|
out.Parameters = in.Parameters
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func Convert_extensions_StorageClass_To_v1beta1_StorageClass(in *extensions.StorageClass, out *StorageClass, s conversion.Scope) error {
|
||||||
|
return autoConvert_extensions_StorageClass_To_v1beta1_StorageClass(in, out, s)
|
||||||
|
}
|
||||||
|
|
||||||
|
func autoConvert_v1beta1_StorageClassList_To_extensions_StorageClassList(in *StorageClassList, out *extensions.StorageClassList, s conversion.Scope) error {
|
||||||
|
if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if in.Items != nil {
|
||||||
|
in, out := &in.Items, &out.Items
|
||||||
|
*out = make([]extensions.StorageClass, len(*in))
|
||||||
|
for i := range *in {
|
||||||
|
if err := Convert_v1beta1_StorageClass_To_extensions_StorageClass(&(*in)[i], &(*out)[i], s); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
out.Items = nil
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func Convert_v1beta1_StorageClassList_To_extensions_StorageClassList(in *StorageClassList, out *extensions.StorageClassList, s conversion.Scope) error {
|
||||||
|
return autoConvert_v1beta1_StorageClassList_To_extensions_StorageClassList(in, out, s)
|
||||||
|
}
|
||||||
|
|
||||||
|
func autoConvert_extensions_StorageClassList_To_v1beta1_StorageClassList(in *extensions.StorageClassList, out *StorageClassList, s conversion.Scope) error {
|
||||||
|
if err := api.Convert_unversioned_TypeMeta_To_unversioned_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := api.Convert_unversioned_ListMeta_To_unversioned_ListMeta(&in.ListMeta, &out.ListMeta, s); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if in.Items != nil {
|
||||||
|
in, out := &in.Items, &out.Items
|
||||||
|
*out = make([]StorageClass, len(*in))
|
||||||
|
for i := range *in {
|
||||||
|
if err := Convert_extensions_StorageClass_To_v1beta1_StorageClass(&(*in)[i], &(*out)[i], s); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
out.Items = nil
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func Convert_extensions_StorageClassList_To_v1beta1_StorageClassList(in *extensions.StorageClassList, out *StorageClassList, s conversion.Scope) error {
|
||||||
|
return autoConvert_extensions_StorageClassList_To_v1beta1_StorageClassList(in, out, s)
|
||||||
|
}
|
||||||
|
|
||||||
func autoConvert_v1beta1_SupplementalGroupsStrategyOptions_To_extensions_SupplementalGroupsStrategyOptions(in *SupplementalGroupsStrategyOptions, out *extensions.SupplementalGroupsStrategyOptions, s conversion.Scope) error {
|
func autoConvert_v1beta1_SupplementalGroupsStrategyOptions_To_extensions_SupplementalGroupsStrategyOptions(in *SupplementalGroupsStrategyOptions, out *extensions.SupplementalGroupsStrategyOptions, s conversion.Scope) error {
|
||||||
out.Rule = extensions.SupplementalGroupsStrategyType(in.Rule)
|
out.Rule = extensions.SupplementalGroupsStrategyType(in.Rule)
|
||||||
if in.Ranges != nil {
|
if in.Ranges != nil {
|
||||||
|
@ -94,6 +94,8 @@ func init() {
|
|||||||
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_Scale, InType: reflect.TypeOf(func() *Scale { var x *Scale; return x }())},
|
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_Scale, InType: reflect.TypeOf(func() *Scale { var x *Scale; return x }())},
|
||||||
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ScaleSpec, InType: reflect.TypeOf(func() *ScaleSpec { var x *ScaleSpec; return x }())},
|
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ScaleSpec, InType: reflect.TypeOf(func() *ScaleSpec { var x *ScaleSpec; return x }())},
|
||||||
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ScaleStatus, InType: reflect.TypeOf(func() *ScaleStatus { var x *ScaleStatus; return x }())},
|
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ScaleStatus, InType: reflect.TypeOf(func() *ScaleStatus { var x *ScaleStatus; return x }())},
|
||||||
|
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_StorageClass, InType: reflect.TypeOf(func() *StorageClass { var x *StorageClass; return x }())},
|
||||||
|
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_StorageClassList, InType: reflect.TypeOf(func() *StorageClassList { var x *StorageClassList; return x }())},
|
||||||
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_SubresourceReference, InType: reflect.TypeOf(func() *SubresourceReference { var x *SubresourceReference; return x }())},
|
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_SubresourceReference, InType: reflect.TypeOf(func() *SubresourceReference { var x *SubresourceReference; return x }())},
|
||||||
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_SupplementalGroupsStrategyOptions, InType: reflect.TypeOf(func() *SupplementalGroupsStrategyOptions { var x *SupplementalGroupsStrategyOptions; return x }())},
|
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_SupplementalGroupsStrategyOptions, InType: reflect.TypeOf(func() *SupplementalGroupsStrategyOptions { var x *SupplementalGroupsStrategyOptions; return x }())},
|
||||||
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ThirdPartyResource, InType: reflect.TypeOf(func() *ThirdPartyResource { var x *ThirdPartyResource; return x }())},
|
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1beta1_ThirdPartyResource, InType: reflect.TypeOf(func() *ThirdPartyResource { var x *ThirdPartyResource; return x }())},
|
||||||
@ -1333,6 +1335,49 @@ func DeepCopy_v1beta1_ScaleStatus(in interface{}, out interface{}, c *conversion
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func DeepCopy_v1beta1_StorageClass(in interface{}, out interface{}, c *conversion.Cloner) error {
|
||||||
|
{
|
||||||
|
in := in.(*StorageClass)
|
||||||
|
out := out.(*StorageClass)
|
||||||
|
out.TypeMeta = in.TypeMeta
|
||||||
|
if err := v1.DeepCopy_v1_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
out.Provisioner = in.Provisioner
|
||||||
|
if in.Parameters != nil {
|
||||||
|
in, out := &in.Parameters, &out.Parameters
|
||||||
|
*out = make(map[string]string)
|
||||||
|
for key, val := range *in {
|
||||||
|
(*out)[key] = val
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
out.Parameters = nil
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func DeepCopy_v1beta1_StorageClassList(in interface{}, out interface{}, c *conversion.Cloner) error {
|
||||||
|
{
|
||||||
|
in := in.(*StorageClassList)
|
||||||
|
out := out.(*StorageClassList)
|
||||||
|
out.TypeMeta = in.TypeMeta
|
||||||
|
out.ListMeta = in.ListMeta
|
||||||
|
if in.Items != nil {
|
||||||
|
in, out := &in.Items, &out.Items
|
||||||
|
*out = make([]StorageClass, len(*in))
|
||||||
|
for i := range *in {
|
||||||
|
if err := DeepCopy_v1beta1_StorageClass(&(*in)[i], &(*out)[i], c); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
out.Items = nil
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func DeepCopy_v1beta1_SubresourceReference(in interface{}, out interface{}, c *conversion.Cloner) error {
|
func DeepCopy_v1beta1_SubresourceReference(in interface{}, out interface{}, c *conversion.Cloner) error {
|
||||||
{
|
{
|
||||||
in := in.(*SubresourceReference)
|
in := in.(*SubresourceReference)
|
||||||
|
@ -741,3 +741,65 @@ func ValidateNetworkPolicyUpdate(update, old *extensions.NetworkPolicy) field.Er
|
|||||||
}
|
}
|
||||||
return allErrs
|
return allErrs
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ValidateStorageClass validates a StorageClass.
|
||||||
|
func ValidateStorageClass(storageClass *extensions.StorageClass) field.ErrorList {
|
||||||
|
allErrs := apivalidation.ValidateObjectMeta(&storageClass.ObjectMeta, false, apivalidation.NameIsDNSSubdomain, field.NewPath("metadata"))
|
||||||
|
allErrs = append(allErrs, validateProvisioner(storageClass.Provisioner, field.NewPath("provisioner"))...)
|
||||||
|
allErrs = append(allErrs, validateParameters(storageClass.Parameters, field.NewPath("parameters"))...)
|
||||||
|
|
||||||
|
return allErrs
|
||||||
|
}
|
||||||
|
|
||||||
|
// ValidateStorageClassUpdate tests if an update to StorageClass is valid.
|
||||||
|
func ValidateStorageClassUpdate(storageClass, oldStorageClass *extensions.StorageClass) field.ErrorList {
|
||||||
|
allErrs := apivalidation.ValidateObjectMetaUpdate(&storageClass.ObjectMeta, &oldStorageClass.ObjectMeta, field.NewPath("metadata"))
|
||||||
|
if !reflect.DeepEqual(oldStorageClass.Parameters, storageClass.Parameters) {
|
||||||
|
allErrs = append(allErrs, field.Forbidden(field.NewPath("parameters"), "updates to parameters are forbidden."))
|
||||||
|
}
|
||||||
|
|
||||||
|
if strings.Compare(storageClass.Provisioner, oldStorageClass.Provisioner) != 0 {
|
||||||
|
allErrs = append(allErrs, field.Forbidden(field.NewPath("provisioner"), "updates to provisioner are forbidden."))
|
||||||
|
}
|
||||||
|
return allErrs
|
||||||
|
}
|
||||||
|
|
||||||
|
// validateProvisioner tests if provisioner is a valid qualified name.
|
||||||
|
func validateProvisioner(provisioner string, fldPath *field.Path) field.ErrorList {
|
||||||
|
allErrs := field.ErrorList{}
|
||||||
|
if len(provisioner) == 0 {
|
||||||
|
allErrs = append(allErrs, field.Required(fldPath, provisioner))
|
||||||
|
}
|
||||||
|
if len(provisioner) > 0 {
|
||||||
|
for _, msg := range validation.IsQualifiedName(strings.ToLower(provisioner)) {
|
||||||
|
allErrs = append(allErrs, field.Invalid(fldPath, provisioner, msg))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return allErrs
|
||||||
|
}
|
||||||
|
|
||||||
|
const maxProvisionerParameterSize = 256 * (1 << 10) // 256 kB
|
||||||
|
const maxProvisionerParameterLen = 512
|
||||||
|
|
||||||
|
// validateParameters tests that keys are qualified names and that provisionerParameter are < 256kB.
|
||||||
|
func validateParameters(params map[string]string, fldPath *field.Path) field.ErrorList {
|
||||||
|
var totalSize int64
|
||||||
|
allErrs := field.ErrorList{}
|
||||||
|
|
||||||
|
if len(params) > maxProvisionerParameterLen {
|
||||||
|
allErrs = append(allErrs, field.TooLong(fldPath, "Provisioner Parameters exceeded max allowed", maxProvisionerParameterLen))
|
||||||
|
return allErrs
|
||||||
|
}
|
||||||
|
|
||||||
|
for k, v := range params {
|
||||||
|
if len(k) < 1 {
|
||||||
|
allErrs = append(allErrs, field.Invalid(fldPath, k, "field can not be empty."))
|
||||||
|
}
|
||||||
|
totalSize += (int64)(len(k)) + (int64)(len(v))
|
||||||
|
}
|
||||||
|
|
||||||
|
if totalSize > maxProvisionerParameterSize {
|
||||||
|
allErrs = append(allErrs, field.TooLong(fldPath, "", maxProvisionerParameterSize))
|
||||||
|
}
|
||||||
|
return allErrs
|
||||||
|
}
|
||||||
|
@ -1929,3 +1929,80 @@ func newBool(val bool) *bool {
|
|||||||
*p = val
|
*p = val
|
||||||
return p
|
return p
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestValidateStorageClass(t *testing.T) {
|
||||||
|
successCases := []extensions.StorageClass{
|
||||||
|
{
|
||||||
|
// empty parameters
|
||||||
|
ObjectMeta: api.ObjectMeta{Name: "foo"},
|
||||||
|
Provisioner: "kubernetes.io/foo-provisioner",
|
||||||
|
Parameters: map[string]string{},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
// nil parameters
|
||||||
|
ObjectMeta: api.ObjectMeta{Name: "foo"},
|
||||||
|
Provisioner: "kubernetes.io/foo-provisioner",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
// some parameters
|
||||||
|
ObjectMeta: api.ObjectMeta{Name: "foo"},
|
||||||
|
Provisioner: "kubernetes.io/foo-provisioner",
|
||||||
|
Parameters: map[string]string{
|
||||||
|
"kubernetes.io/foo-parameter": "free/form/string",
|
||||||
|
"foo-parameter": "free-form-string",
|
||||||
|
"foo-parameter2": "{\"embedded\": \"json\", \"with\": {\"structures\":\"inside\"}}",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
// Success cases are expected to pass validation.
|
||||||
|
for k, v := range successCases {
|
||||||
|
if errs := ValidateStorageClass(&v); len(errs) != 0 {
|
||||||
|
t.Errorf("Expected success for %d, got %v", k, errs)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// generate a map longer than maxProvisionerParameterSize
|
||||||
|
longParameters := make(map[string]string)
|
||||||
|
totalSize := 0
|
||||||
|
for totalSize < maxProvisionerParameterSize {
|
||||||
|
k := fmt.Sprintf("param/%d", totalSize)
|
||||||
|
v := fmt.Sprintf("value-%d", totalSize)
|
||||||
|
longParameters[k] = v
|
||||||
|
totalSize = totalSize + len(k) + len(v)
|
||||||
|
}
|
||||||
|
|
||||||
|
errorCases := map[string]extensions.StorageClass{
|
||||||
|
"namespace is present": {
|
||||||
|
ObjectMeta: api.ObjectMeta{Name: "foo", Namespace: "bar"},
|
||||||
|
Provisioner: "kubernetes.io/foo-provisioner",
|
||||||
|
},
|
||||||
|
"invalid provisioner": {
|
||||||
|
ObjectMeta: api.ObjectMeta{Name: "foo"},
|
||||||
|
Provisioner: "kubernetes.io/invalid/provisioner",
|
||||||
|
},
|
||||||
|
"invalid empty parameter name": {
|
||||||
|
ObjectMeta: api.ObjectMeta{Name: "foo"},
|
||||||
|
Provisioner: "kubernetes.io/foo",
|
||||||
|
Parameters: map[string]string{
|
||||||
|
"": "value",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"provisioner: Required value": {
|
||||||
|
ObjectMeta: api.ObjectMeta{Name: "foo"},
|
||||||
|
Provisioner: "",
|
||||||
|
},
|
||||||
|
"too long parameters": {
|
||||||
|
ObjectMeta: api.ObjectMeta{Name: "foo"},
|
||||||
|
Provisioner: "kubernetes.io/foo",
|
||||||
|
Parameters: longParameters,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
// Error cases are not expected to pass validation.
|
||||||
|
for testName, storageClass := range errorCases {
|
||||||
|
if errs := ValidateStorageClass(&storageClass); len(errs) == 0 {
|
||||||
|
t.Errorf("Expected failure for test: %s", testName)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -79,6 +79,8 @@ func init() {
|
|||||||
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_Scale, InType: reflect.TypeOf(func() *Scale { var x *Scale; return x }())},
|
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_Scale, InType: reflect.TypeOf(func() *Scale { var x *Scale; return x }())},
|
||||||
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_ScaleSpec, InType: reflect.TypeOf(func() *ScaleSpec { var x *ScaleSpec; return x }())},
|
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_ScaleSpec, InType: reflect.TypeOf(func() *ScaleSpec { var x *ScaleSpec; return x }())},
|
||||||
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_ScaleStatus, InType: reflect.TypeOf(func() *ScaleStatus { var x *ScaleStatus; return x }())},
|
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_ScaleStatus, InType: reflect.TypeOf(func() *ScaleStatus { var x *ScaleStatus; return x }())},
|
||||||
|
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_StorageClass, InType: reflect.TypeOf(func() *StorageClass { var x *StorageClass; return x }())},
|
||||||
|
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_StorageClassList, InType: reflect.TypeOf(func() *StorageClassList { var x *StorageClassList; return x }())},
|
||||||
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_SupplementalGroupsStrategyOptions, InType: reflect.TypeOf(func() *SupplementalGroupsStrategyOptions { var x *SupplementalGroupsStrategyOptions; return x }())},
|
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_SupplementalGroupsStrategyOptions, InType: reflect.TypeOf(func() *SupplementalGroupsStrategyOptions { var x *SupplementalGroupsStrategyOptions; return x }())},
|
||||||
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_ThirdPartyResource, InType: reflect.TypeOf(func() *ThirdPartyResource { var x *ThirdPartyResource; return x }())},
|
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_ThirdPartyResource, InType: reflect.TypeOf(func() *ThirdPartyResource { var x *ThirdPartyResource; return x }())},
|
||||||
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_ThirdPartyResourceData, InType: reflect.TypeOf(func() *ThirdPartyResourceData { var x *ThirdPartyResourceData; return x }())},
|
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_extensions_ThirdPartyResourceData, InType: reflect.TypeOf(func() *ThirdPartyResourceData { var x *ThirdPartyResourceData; return x }())},
|
||||||
@ -974,6 +976,49 @@ func DeepCopy_extensions_ScaleStatus(in interface{}, out interface{}, c *convers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func DeepCopy_extensions_StorageClass(in interface{}, out interface{}, c *conversion.Cloner) error {
|
||||||
|
{
|
||||||
|
in := in.(*StorageClass)
|
||||||
|
out := out.(*StorageClass)
|
||||||
|
out.TypeMeta = in.TypeMeta
|
||||||
|
if err := api.DeepCopy_api_ObjectMeta(&in.ObjectMeta, &out.ObjectMeta, c); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
out.Provisioner = in.Provisioner
|
||||||
|
if in.Parameters != nil {
|
||||||
|
in, out := &in.Parameters, &out.Parameters
|
||||||
|
*out = make(map[string]string)
|
||||||
|
for key, val := range *in {
|
||||||
|
(*out)[key] = val
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
out.Parameters = nil
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func DeepCopy_extensions_StorageClassList(in interface{}, out interface{}, c *conversion.Cloner) error {
|
||||||
|
{
|
||||||
|
in := in.(*StorageClassList)
|
||||||
|
out := out.(*StorageClassList)
|
||||||
|
out.TypeMeta = in.TypeMeta
|
||||||
|
out.ListMeta = in.ListMeta
|
||||||
|
if in.Items != nil {
|
||||||
|
in, out := &in.Items, &out.Items
|
||||||
|
*out = make([]StorageClass, len(*in))
|
||||||
|
for i := range *in {
|
||||||
|
if err := DeepCopy_extensions_StorageClass(&(*in)[i], &(*out)[i], c); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
out.Items = nil
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func DeepCopy_extensions_SupplementalGroupsStrategyOptions(in interface{}, out interface{}, c *conversion.Cloner) error {
|
func DeepCopy_extensions_SupplementalGroupsStrategyOptions(in interface{}, out interface{}, c *conversion.Cloner) error {
|
||||||
{
|
{
|
||||||
in := in.(*SupplementalGroupsStrategyOptions)
|
in := in.(*SupplementalGroupsStrategyOptions)
|
||||||
|
@ -30,6 +30,7 @@ type ExtensionsInterface interface {
|
|||||||
PodSecurityPoliciesGetter
|
PodSecurityPoliciesGetter
|
||||||
ReplicaSetsGetter
|
ReplicaSetsGetter
|
||||||
ScalesGetter
|
ScalesGetter
|
||||||
|
StorageClassesGetter
|
||||||
ThirdPartyResourcesGetter
|
ThirdPartyResourcesGetter
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -62,6 +63,10 @@ func (c *ExtensionsClient) Scales(namespace string) ScaleInterface {
|
|||||||
return newScales(c, namespace)
|
return newScales(c, namespace)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *ExtensionsClient) StorageClasses() StorageClassInterface {
|
||||||
|
return newStorageClasses(c)
|
||||||
|
}
|
||||||
|
|
||||||
func (c *ExtensionsClient) ThirdPartyResources() ThirdPartyResourceInterface {
|
func (c *ExtensionsClient) ThirdPartyResources() ThirdPartyResourceInterface {
|
||||||
return newThirdPartyResources(c)
|
return newThirdPartyResources(c)
|
||||||
}
|
}
|
||||||
|
@ -50,6 +50,10 @@ func (c *FakeExtensions) Scales(namespace string) unversioned.ScaleInterface {
|
|||||||
return &FakeScales{c, namespace}
|
return &FakeScales{c, namespace}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *FakeExtensions) StorageClasses() unversioned.StorageClassInterface {
|
||||||
|
return &FakeStorageClasses{c}
|
||||||
|
}
|
||||||
|
|
||||||
func (c *FakeExtensions) ThirdPartyResources() unversioned.ThirdPartyResourceInterface {
|
func (c *FakeExtensions) ThirdPartyResources() unversioned.ThirdPartyResourceInterface {
|
||||||
return &FakeThirdPartyResources{c}
|
return &FakeThirdPartyResources{c}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,109 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2016 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package fake
|
||||||
|
|
||||||
|
import (
|
||||||
|
api "k8s.io/kubernetes/pkg/api"
|
||||||
|
unversioned "k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
|
extensions "k8s.io/kubernetes/pkg/apis/extensions"
|
||||||
|
core "k8s.io/kubernetes/pkg/client/testing/core"
|
||||||
|
labels "k8s.io/kubernetes/pkg/labels"
|
||||||
|
watch "k8s.io/kubernetes/pkg/watch"
|
||||||
|
)
|
||||||
|
|
||||||
|
// FakeStorageClasses implements StorageClassInterface
|
||||||
|
type FakeStorageClasses struct {
|
||||||
|
Fake *FakeExtensions
|
||||||
|
}
|
||||||
|
|
||||||
|
var storageclassesResource = unversioned.GroupVersionResource{Group: "extensions", Version: "", Resource: "storageclasses"}
|
||||||
|
|
||||||
|
func (c *FakeStorageClasses) Create(storageClass *extensions.StorageClass) (result *extensions.StorageClass, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(core.NewRootCreateAction(storageclassesResource, storageClass), &extensions.StorageClass{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*extensions.StorageClass), err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *FakeStorageClasses) Update(storageClass *extensions.StorageClass) (result *extensions.StorageClass, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(core.NewRootUpdateAction(storageclassesResource, storageClass), &extensions.StorageClass{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*extensions.StorageClass), err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *FakeStorageClasses) Delete(name string, options *api.DeleteOptions) error {
|
||||||
|
_, err := c.Fake.
|
||||||
|
Invokes(core.NewRootDeleteAction(storageclassesResource, name), &extensions.StorageClass{})
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *FakeStorageClasses) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error {
|
||||||
|
action := core.NewRootDeleteCollectionAction(storageclassesResource, listOptions)
|
||||||
|
|
||||||
|
_, err := c.Fake.Invokes(action, &extensions.StorageClassList{})
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *FakeStorageClasses) Get(name string) (result *extensions.StorageClass, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(core.NewRootGetAction(storageclassesResource, name), &extensions.StorageClass{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*extensions.StorageClass), err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *FakeStorageClasses) List(opts api.ListOptions) (result *extensions.StorageClassList, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(core.NewRootListAction(storageclassesResource, opts), &extensions.StorageClassList{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
label := opts.LabelSelector
|
||||||
|
if label == nil {
|
||||||
|
label = labels.Everything()
|
||||||
|
}
|
||||||
|
list := &extensions.StorageClassList{}
|
||||||
|
for _, item := range obj.(*extensions.StorageClassList).Items {
|
||||||
|
if label.Matches(labels.Set(item.Labels)) {
|
||||||
|
list.Items = append(list.Items, item)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return list, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Watch returns a watch.Interface that watches the requested storageClasses.
|
||||||
|
func (c *FakeStorageClasses) Watch(opts api.ListOptions) (watch.Interface, error) {
|
||||||
|
return c.Fake.
|
||||||
|
InvokesWatch(core.NewRootWatchAction(storageclassesResource, opts))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Patch applies the patch and returns the patched storageClass.
|
||||||
|
func (c *FakeStorageClasses) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *extensions.StorageClass, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(core.NewRootPatchSubresourceAction(storageclassesResource, name, data, subresources...), &extensions.StorageClass{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*extensions.StorageClass), err
|
||||||
|
}
|
@ -29,3 +29,5 @@ type PodSecurityPolicyExpansion interface{}
|
|||||||
type ThirdPartyResourceExpansion interface{}
|
type ThirdPartyResourceExpansion interface{}
|
||||||
|
|
||||||
type ReplicaSetExpansion interface{}
|
type ReplicaSetExpansion interface{}
|
||||||
|
|
||||||
|
type StorageClassExpansion interface{}
|
||||||
|
@ -0,0 +1,141 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2016 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package unversioned
|
||||||
|
|
||||||
|
import (
|
||||||
|
api "k8s.io/kubernetes/pkg/api"
|
||||||
|
extensions "k8s.io/kubernetes/pkg/apis/extensions"
|
||||||
|
watch "k8s.io/kubernetes/pkg/watch"
|
||||||
|
)
|
||||||
|
|
||||||
|
// StorageClassesGetter has a method to return a StorageClassInterface.
|
||||||
|
// A group's client should implement this interface.
|
||||||
|
type StorageClassesGetter interface {
|
||||||
|
StorageClasses() StorageClassInterface
|
||||||
|
}
|
||||||
|
|
||||||
|
// StorageClassInterface has methods to work with StorageClass resources.
|
||||||
|
type StorageClassInterface interface {
|
||||||
|
Create(*extensions.StorageClass) (*extensions.StorageClass, error)
|
||||||
|
Update(*extensions.StorageClass) (*extensions.StorageClass, error)
|
||||||
|
Delete(name string, options *api.DeleteOptions) error
|
||||||
|
DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error
|
||||||
|
Get(name string) (*extensions.StorageClass, error)
|
||||||
|
List(opts api.ListOptions) (*extensions.StorageClassList, error)
|
||||||
|
Watch(opts api.ListOptions) (watch.Interface, error)
|
||||||
|
Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *extensions.StorageClass, err error)
|
||||||
|
StorageClassExpansion
|
||||||
|
}
|
||||||
|
|
||||||
|
// storageClasses implements StorageClassInterface
|
||||||
|
type storageClasses struct {
|
||||||
|
client *ExtensionsClient
|
||||||
|
}
|
||||||
|
|
||||||
|
// newStorageClasses returns a StorageClasses
|
||||||
|
func newStorageClasses(c *ExtensionsClient) *storageClasses {
|
||||||
|
return &storageClasses{
|
||||||
|
client: c,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create takes the representation of a storageClass and creates it. Returns the server's representation of the storageClass, and an error, if there is any.
|
||||||
|
func (c *storageClasses) Create(storageClass *extensions.StorageClass) (result *extensions.StorageClass, err error) {
|
||||||
|
result = &extensions.StorageClass{}
|
||||||
|
err = c.client.Post().
|
||||||
|
Resource("storageclasses").
|
||||||
|
Body(storageClass).
|
||||||
|
Do().
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update takes the representation of a storageClass and updates it. Returns the server's representation of the storageClass, and an error, if there is any.
|
||||||
|
func (c *storageClasses) Update(storageClass *extensions.StorageClass) (result *extensions.StorageClass, err error) {
|
||||||
|
result = &extensions.StorageClass{}
|
||||||
|
err = c.client.Put().
|
||||||
|
Resource("storageclasses").
|
||||||
|
Name(storageClass.Name).
|
||||||
|
Body(storageClass).
|
||||||
|
Do().
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete takes name of the storageClass and deletes it. Returns an error if one occurs.
|
||||||
|
func (c *storageClasses) Delete(name string, options *api.DeleteOptions) error {
|
||||||
|
return c.client.Delete().
|
||||||
|
Resource("storageclasses").
|
||||||
|
Name(name).
|
||||||
|
Body(options).
|
||||||
|
Do().
|
||||||
|
Error()
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteCollection deletes a collection of objects.
|
||||||
|
func (c *storageClasses) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error {
|
||||||
|
return c.client.Delete().
|
||||||
|
Resource("storageclasses").
|
||||||
|
VersionedParams(&listOptions, api.ParameterCodec).
|
||||||
|
Body(options).
|
||||||
|
Do().
|
||||||
|
Error()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get takes name of the storageClass, and returns the corresponding storageClass object, and an error if there is any.
|
||||||
|
func (c *storageClasses) Get(name string) (result *extensions.StorageClass, err error) {
|
||||||
|
result = &extensions.StorageClass{}
|
||||||
|
err = c.client.Get().
|
||||||
|
Resource("storageclasses").
|
||||||
|
Name(name).
|
||||||
|
Do().
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// List takes label and field selectors, and returns the list of StorageClasses that match those selectors.
|
||||||
|
func (c *storageClasses) List(opts api.ListOptions) (result *extensions.StorageClassList, err error) {
|
||||||
|
result = &extensions.StorageClassList{}
|
||||||
|
err = c.client.Get().
|
||||||
|
Resource("storageclasses").
|
||||||
|
VersionedParams(&opts, api.ParameterCodec).
|
||||||
|
Do().
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Watch returns a watch.Interface that watches the requested storageClasses.
|
||||||
|
func (c *storageClasses) Watch(opts api.ListOptions) (watch.Interface, error) {
|
||||||
|
return c.client.Get().
|
||||||
|
Prefix("watch").
|
||||||
|
Resource("storageclasses").
|
||||||
|
VersionedParams(&opts, api.ParameterCodec).
|
||||||
|
Watch()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Patch applies the patch and returns the patched storageClass.
|
||||||
|
func (c *storageClasses) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *extensions.StorageClass, err error) {
|
||||||
|
result = &extensions.StorageClass{}
|
||||||
|
err = c.client.Patch(pt).
|
||||||
|
Resource("storageclasses").
|
||||||
|
SubResource(subresources...).
|
||||||
|
Name(name).
|
||||||
|
Body(data).
|
||||||
|
Do().
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
@ -33,6 +33,7 @@ type ExtensionsInterface interface {
|
|||||||
PodSecurityPoliciesGetter
|
PodSecurityPoliciesGetter
|
||||||
ReplicaSetsGetter
|
ReplicaSetsGetter
|
||||||
ScalesGetter
|
ScalesGetter
|
||||||
|
StorageClassesGetter
|
||||||
ThirdPartyResourcesGetter
|
ThirdPartyResourcesGetter
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -73,6 +74,10 @@ func (c *ExtensionsClient) Scales(namespace string) ScaleInterface {
|
|||||||
return newScales(c, namespace)
|
return newScales(c, namespace)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *ExtensionsClient) StorageClasses() StorageClassInterface {
|
||||||
|
return newStorageClasses(c)
|
||||||
|
}
|
||||||
|
|
||||||
func (c *ExtensionsClient) ThirdPartyResources() ThirdPartyResourceInterface {
|
func (c *ExtensionsClient) ThirdPartyResources() ThirdPartyResourceInterface {
|
||||||
return newThirdPartyResources(c)
|
return newThirdPartyResources(c)
|
||||||
}
|
}
|
||||||
|
@ -58,6 +58,10 @@ func (c *FakeExtensions) Scales(namespace string) v1beta1.ScaleInterface {
|
|||||||
return &FakeScales{c, namespace}
|
return &FakeScales{c, namespace}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *FakeExtensions) StorageClasses() v1beta1.StorageClassInterface {
|
||||||
|
return &FakeStorageClasses{c}
|
||||||
|
}
|
||||||
|
|
||||||
func (c *FakeExtensions) ThirdPartyResources() v1beta1.ThirdPartyResourceInterface {
|
func (c *FakeExtensions) ThirdPartyResources() v1beta1.ThirdPartyResourceInterface {
|
||||||
return &FakeThirdPartyResources{c}
|
return &FakeThirdPartyResources{c}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,109 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2016 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package fake
|
||||||
|
|
||||||
|
import (
|
||||||
|
api "k8s.io/kubernetes/pkg/api"
|
||||||
|
unversioned "k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
|
v1beta1 "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
|
||||||
|
core "k8s.io/kubernetes/pkg/client/testing/core"
|
||||||
|
labels "k8s.io/kubernetes/pkg/labels"
|
||||||
|
watch "k8s.io/kubernetes/pkg/watch"
|
||||||
|
)
|
||||||
|
|
||||||
|
// FakeStorageClasses implements StorageClassInterface
|
||||||
|
type FakeStorageClasses struct {
|
||||||
|
Fake *FakeExtensions
|
||||||
|
}
|
||||||
|
|
||||||
|
var storageclassesResource = unversioned.GroupVersionResource{Group: "extensions", Version: "v1beta1", Resource: "storageclasses"}
|
||||||
|
|
||||||
|
func (c *FakeStorageClasses) Create(storageClass *v1beta1.StorageClass) (result *v1beta1.StorageClass, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(core.NewRootCreateAction(storageclassesResource, storageClass), &v1beta1.StorageClass{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1beta1.StorageClass), err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *FakeStorageClasses) Update(storageClass *v1beta1.StorageClass) (result *v1beta1.StorageClass, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(core.NewRootUpdateAction(storageclassesResource, storageClass), &v1beta1.StorageClass{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1beta1.StorageClass), err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *FakeStorageClasses) Delete(name string, options *api.DeleteOptions) error {
|
||||||
|
_, err := c.Fake.
|
||||||
|
Invokes(core.NewRootDeleteAction(storageclassesResource, name), &v1beta1.StorageClass{})
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *FakeStorageClasses) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error {
|
||||||
|
action := core.NewRootDeleteCollectionAction(storageclassesResource, listOptions)
|
||||||
|
|
||||||
|
_, err := c.Fake.Invokes(action, &v1beta1.StorageClassList{})
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *FakeStorageClasses) Get(name string) (result *v1beta1.StorageClass, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(core.NewRootGetAction(storageclassesResource, name), &v1beta1.StorageClass{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1beta1.StorageClass), err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *FakeStorageClasses) List(opts api.ListOptions) (result *v1beta1.StorageClassList, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(core.NewRootListAction(storageclassesResource, opts), &v1beta1.StorageClassList{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
label := opts.LabelSelector
|
||||||
|
if label == nil {
|
||||||
|
label = labels.Everything()
|
||||||
|
}
|
||||||
|
list := &v1beta1.StorageClassList{}
|
||||||
|
for _, item := range obj.(*v1beta1.StorageClassList).Items {
|
||||||
|
if label.Matches(labels.Set(item.Labels)) {
|
||||||
|
list.Items = append(list.Items, item)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return list, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Watch returns a watch.Interface that watches the requested storageClasses.
|
||||||
|
func (c *FakeStorageClasses) Watch(opts api.ListOptions) (watch.Interface, error) {
|
||||||
|
return c.Fake.
|
||||||
|
InvokesWatch(core.NewRootWatchAction(storageclassesResource, opts))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Patch applies the patch and returns the patched storageClass.
|
||||||
|
func (c *FakeStorageClasses) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1beta1.StorageClass, err error) {
|
||||||
|
obj, err := c.Fake.
|
||||||
|
Invokes(core.NewRootPatchSubresourceAction(storageclassesResource, name, data, subresources...), &v1beta1.StorageClass{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*v1beta1.StorageClass), err
|
||||||
|
}
|
@ -33,3 +33,5 @@ type ReplicaSetExpansion interface{}
|
|||||||
type ScaleExpansion interface{}
|
type ScaleExpansion interface{}
|
||||||
|
|
||||||
type ThirdPartyResourceExpansion interface{}
|
type ThirdPartyResourceExpansion interface{}
|
||||||
|
|
||||||
|
type StorageClassExpansion interface{}
|
||||||
|
@ -0,0 +1,141 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2016 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package v1beta1
|
||||||
|
|
||||||
|
import (
|
||||||
|
api "k8s.io/kubernetes/pkg/api"
|
||||||
|
v1beta1 "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
|
||||||
|
watch "k8s.io/kubernetes/pkg/watch"
|
||||||
|
)
|
||||||
|
|
||||||
|
// StorageClassesGetter has a method to return a StorageClassInterface.
|
||||||
|
// A group's client should implement this interface.
|
||||||
|
type StorageClassesGetter interface {
|
||||||
|
StorageClasses() StorageClassInterface
|
||||||
|
}
|
||||||
|
|
||||||
|
// StorageClassInterface has methods to work with StorageClass resources.
|
||||||
|
type StorageClassInterface interface {
|
||||||
|
Create(*v1beta1.StorageClass) (*v1beta1.StorageClass, error)
|
||||||
|
Update(*v1beta1.StorageClass) (*v1beta1.StorageClass, error)
|
||||||
|
Delete(name string, options *api.DeleteOptions) error
|
||||||
|
DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error
|
||||||
|
Get(name string) (*v1beta1.StorageClass, error)
|
||||||
|
List(opts api.ListOptions) (*v1beta1.StorageClassList, error)
|
||||||
|
Watch(opts api.ListOptions) (watch.Interface, error)
|
||||||
|
Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1beta1.StorageClass, err error)
|
||||||
|
StorageClassExpansion
|
||||||
|
}
|
||||||
|
|
||||||
|
// storageClasses implements StorageClassInterface
|
||||||
|
type storageClasses struct {
|
||||||
|
client *ExtensionsClient
|
||||||
|
}
|
||||||
|
|
||||||
|
// newStorageClasses returns a StorageClasses
|
||||||
|
func newStorageClasses(c *ExtensionsClient) *storageClasses {
|
||||||
|
return &storageClasses{
|
||||||
|
client: c,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create takes the representation of a storageClass and creates it. Returns the server's representation of the storageClass, and an error, if there is any.
|
||||||
|
func (c *storageClasses) Create(storageClass *v1beta1.StorageClass) (result *v1beta1.StorageClass, err error) {
|
||||||
|
result = &v1beta1.StorageClass{}
|
||||||
|
err = c.client.Post().
|
||||||
|
Resource("storageclasses").
|
||||||
|
Body(storageClass).
|
||||||
|
Do().
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update takes the representation of a storageClass and updates it. Returns the server's representation of the storageClass, and an error, if there is any.
|
||||||
|
func (c *storageClasses) Update(storageClass *v1beta1.StorageClass) (result *v1beta1.StorageClass, err error) {
|
||||||
|
result = &v1beta1.StorageClass{}
|
||||||
|
err = c.client.Put().
|
||||||
|
Resource("storageclasses").
|
||||||
|
Name(storageClass.Name).
|
||||||
|
Body(storageClass).
|
||||||
|
Do().
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete takes name of the storageClass and deletes it. Returns an error if one occurs.
|
||||||
|
func (c *storageClasses) Delete(name string, options *api.DeleteOptions) error {
|
||||||
|
return c.client.Delete().
|
||||||
|
Resource("storageclasses").
|
||||||
|
Name(name).
|
||||||
|
Body(options).
|
||||||
|
Do().
|
||||||
|
Error()
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteCollection deletes a collection of objects.
|
||||||
|
func (c *storageClasses) DeleteCollection(options *api.DeleteOptions, listOptions api.ListOptions) error {
|
||||||
|
return c.client.Delete().
|
||||||
|
Resource("storageclasses").
|
||||||
|
VersionedParams(&listOptions, api.ParameterCodec).
|
||||||
|
Body(options).
|
||||||
|
Do().
|
||||||
|
Error()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get takes name of the storageClass, and returns the corresponding storageClass object, and an error if there is any.
|
||||||
|
func (c *storageClasses) Get(name string) (result *v1beta1.StorageClass, err error) {
|
||||||
|
result = &v1beta1.StorageClass{}
|
||||||
|
err = c.client.Get().
|
||||||
|
Resource("storageclasses").
|
||||||
|
Name(name).
|
||||||
|
Do().
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// List takes label and field selectors, and returns the list of StorageClasses that match those selectors.
|
||||||
|
func (c *storageClasses) List(opts api.ListOptions) (result *v1beta1.StorageClassList, err error) {
|
||||||
|
result = &v1beta1.StorageClassList{}
|
||||||
|
err = c.client.Get().
|
||||||
|
Resource("storageclasses").
|
||||||
|
VersionedParams(&opts, api.ParameterCodec).
|
||||||
|
Do().
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Watch returns a watch.Interface that watches the requested storageClasses.
|
||||||
|
func (c *storageClasses) Watch(opts api.ListOptions) (watch.Interface, error) {
|
||||||
|
return c.client.Get().
|
||||||
|
Prefix("watch").
|
||||||
|
Resource("storageclasses").
|
||||||
|
VersionedParams(&opts, api.ParameterCodec).
|
||||||
|
Watch()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Patch applies the patch and returns the patched storageClass.
|
||||||
|
func (c *storageClasses) Patch(name string, pt api.PatchType, data []byte, subresources ...string) (result *v1beta1.StorageClass, err error) {
|
||||||
|
result = &v1beta1.StorageClass{}
|
||||||
|
err = c.client.Patch(pt).
|
||||||
|
Resource("storageclasses").
|
||||||
|
SubResource(subresources...).
|
||||||
|
Name(name).
|
||||||
|
Body(data).
|
||||||
|
Do().
|
||||||
|
Into(result)
|
||||||
|
return
|
||||||
|
}
|
@ -37,6 +37,7 @@ type ExtensionsInterface interface {
|
|||||||
ThirdPartyResourceNamespacer
|
ThirdPartyResourceNamespacer
|
||||||
ReplicaSetsNamespacer
|
ReplicaSetsNamespacer
|
||||||
PodSecurityPoliciesInterface
|
PodSecurityPoliciesInterface
|
||||||
|
StorageClassesInterface
|
||||||
}
|
}
|
||||||
|
|
||||||
// ExtensionsClient is used to interact with experimental Kubernetes features.
|
// ExtensionsClient is used to interact with experimental Kubernetes features.
|
||||||
@ -82,6 +83,10 @@ func (c *ExtensionsClient) ReplicaSets(namespace string) ReplicaSetInterface {
|
|||||||
return newReplicaSets(c, namespace)
|
return newReplicaSets(c, namespace)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *ExtensionsClient) StorageClasses() StorageClassInterface {
|
||||||
|
return newStorageClasses(c)
|
||||||
|
}
|
||||||
|
|
||||||
// NewExtensions creates a new ExtensionsClient for the given config. This client
|
// NewExtensions creates a new ExtensionsClient for the given config. This client
|
||||||
// provides access to experimental Kubernetes features.
|
// provides access to experimental Kubernetes features.
|
||||||
// Features of Extensions group are not supported and may be changed or removed in
|
// Features of Extensions group are not supported and may be changed or removed in
|
||||||
|
87
pkg/client/unversioned/storageclasses.go
Normal file
87
pkg/client/unversioned/storageclasses.go
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2016 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package unversioned
|
||||||
|
|
||||||
|
import (
|
||||||
|
"k8s.io/kubernetes/pkg/api"
|
||||||
|
"k8s.io/kubernetes/pkg/apis/extensions"
|
||||||
|
"k8s.io/kubernetes/pkg/watch"
|
||||||
|
)
|
||||||
|
|
||||||
|
type StorageClassesInterface interface {
|
||||||
|
StorageClasses() StorageClassInterface
|
||||||
|
}
|
||||||
|
|
||||||
|
// StorageClassInterface has methods to work with StorageClass resources.
|
||||||
|
type StorageClassInterface interface {
|
||||||
|
List(opts api.ListOptions) (*extensions.StorageClassList, error)
|
||||||
|
Get(name string) (*extensions.StorageClass, error)
|
||||||
|
Create(storageClass *extensions.StorageClass) (*extensions.StorageClass, error)
|
||||||
|
Update(storageClass *extensions.StorageClass) (*extensions.StorageClass, error)
|
||||||
|
Delete(name string) error
|
||||||
|
Watch(opts api.ListOptions) (watch.Interface, error)
|
||||||
|
}
|
||||||
|
|
||||||
|
// storageClasses implements StorageClassInterface
|
||||||
|
type storageClasses struct {
|
||||||
|
client *ExtensionsClient
|
||||||
|
}
|
||||||
|
|
||||||
|
func newStorageClasses(c *ExtensionsClient) *storageClasses {
|
||||||
|
return &storageClasses{c}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *storageClasses) List(opts api.ListOptions) (result *extensions.StorageClassList, err error) {
|
||||||
|
result = &extensions.StorageClassList{}
|
||||||
|
err = c.client.Get().
|
||||||
|
Resource("storageclasses").
|
||||||
|
VersionedParams(&opts, api.ParameterCodec).
|
||||||
|
Do().
|
||||||
|
Into(result)
|
||||||
|
|
||||||
|
return result, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *storageClasses) Get(name string) (result *extensions.StorageClass, err error) {
|
||||||
|
result = &extensions.StorageClass{}
|
||||||
|
err = c.client.Get().Resource("storageClasses").Name(name).Do().Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *storageClasses) Create(storageClass *extensions.StorageClass) (result *extensions.StorageClass, err error) {
|
||||||
|
result = &extensions.StorageClass{}
|
||||||
|
err = c.client.Post().Resource("storageClasses").Body(storageClass).Do().Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *storageClasses) Update(storageClass *extensions.StorageClass) (result *extensions.StorageClass, err error) {
|
||||||
|
result = &extensions.StorageClass{}
|
||||||
|
err = c.client.Put().Resource("storageClasses").Name(storageClass.Name).Body(storageClass).Do().Into(result)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *storageClasses) Delete(name string) error {
|
||||||
|
return c.client.Delete().Resource("storageClasses").Name(name).Do().Error()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *storageClasses) Watch(opts api.ListOptions) (watch.Interface, error) {
|
||||||
|
return c.client.Get().
|
||||||
|
Prefix("watch").
|
||||||
|
Resource("storageClasses").
|
||||||
|
VersionedParams(&opts, api.ParameterCodec).
|
||||||
|
Watch()
|
||||||
|
}
|
147
pkg/client/unversioned/storageclasses_test.go
Normal file
147
pkg/client/unversioned/storageclasses_test.go
Normal file
@ -0,0 +1,147 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2016 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package unversioned_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"k8s.io/kubernetes/pkg/api"
|
||||||
|
"k8s.io/kubernetes/pkg/api/testapi"
|
||||||
|
"k8s.io/kubernetes/pkg/apis/extensions"
|
||||||
|
"k8s.io/kubernetes/pkg/client/unversioned/testclient/simple"
|
||||||
|
)
|
||||||
|
|
||||||
|
func getStorageClassResourceName() string {
|
||||||
|
return "storageclasses"
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestListStorageClasses(t *testing.T) {
|
||||||
|
c := &simple.Client{
|
||||||
|
Request: simple.Request{
|
||||||
|
Method: "GET",
|
||||||
|
Path: testapi.Extensions.ResourcePath(getStorageClassResourceName(), "", ""),
|
||||||
|
},
|
||||||
|
Response: simple.Response{StatusCode: 200,
|
||||||
|
Body: &extensions.StorageClassList{
|
||||||
|
Items: []extensions.StorageClass{
|
||||||
|
{
|
||||||
|
ObjectMeta: api.ObjectMeta{
|
||||||
|
Name: "foo",
|
||||||
|
Labels: map[string]string{
|
||||||
|
"foo": "bar",
|
||||||
|
"name": "baz",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Provisioner: "aaa",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
receivedSCList, err := c.Setup(t).Extensions().StorageClasses().List(api.ListOptions{})
|
||||||
|
c.Validate(t, receivedSCList, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetStorageClass(t *testing.T) {
|
||||||
|
c := &simple.Client{
|
||||||
|
Request: simple.Request{Method: "GET", Path: testapi.Extensions.ResourcePath(getStorageClassResourceName(), "", "foo"), Query: simple.BuildQueryValues(nil)},
|
||||||
|
Response: simple.Response{
|
||||||
|
StatusCode: 200,
|
||||||
|
Body: &extensions.StorageClass{
|
||||||
|
ObjectMeta: api.ObjectMeta{
|
||||||
|
Name: "foo",
|
||||||
|
Labels: map[string]string{
|
||||||
|
"foo": "bar",
|
||||||
|
"name": "baz",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Provisioner: "aaa",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
receivedSC, err := c.Setup(t).Extensions().StorageClasses().Get("foo")
|
||||||
|
c.Validate(t, receivedSC, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGetStorageClassWithNoName(t *testing.T) {
|
||||||
|
c := &simple.Client{Error: true}
|
||||||
|
receivedSC, err := c.Setup(t).Extensions().StorageClasses().Get("")
|
||||||
|
if (err != nil) && (err.Error() != simple.NameRequiredError) {
|
||||||
|
t.Errorf("Expected error: %v, but got %v", simple.NameRequiredError, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
c.Validate(t, receivedSC, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestUpdateStorageClass(t *testing.T) {
|
||||||
|
requestSC := &extensions.StorageClass{
|
||||||
|
ObjectMeta: api.ObjectMeta{Name: "foo", ResourceVersion: "1"},
|
||||||
|
Provisioner: "aaa",
|
||||||
|
}
|
||||||
|
c := &simple.Client{
|
||||||
|
Request: simple.Request{Method: "PUT", Path: testapi.Extensions.ResourcePath(getStorageClassResourceName(), "", "foo"), Query: simple.BuildQueryValues(nil)},
|
||||||
|
Response: simple.Response{
|
||||||
|
StatusCode: 200,
|
||||||
|
Body: &extensions.StorageClass{
|
||||||
|
ObjectMeta: api.ObjectMeta{
|
||||||
|
Name: "foo",
|
||||||
|
Labels: map[string]string{
|
||||||
|
"foo": "bar",
|
||||||
|
"name": "baz",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Provisioner: "aaa",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
receivedSC, err := c.Setup(t).Extensions().StorageClasses().Update(requestSC)
|
||||||
|
c.Validate(t, receivedSC, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestDeleteStorageClass(t *testing.T) {
|
||||||
|
c := &simple.Client{
|
||||||
|
Request: simple.Request{Method: "DELETE", Path: testapi.Extensions.ResourcePath(getStorageClassResourceName(), "", "foo"), Query: simple.BuildQueryValues(nil)},
|
||||||
|
Response: simple.Response{StatusCode: 200},
|
||||||
|
}
|
||||||
|
err := c.Setup(t).Extensions().StorageClasses().Delete("foo")
|
||||||
|
c.Validate(t, nil, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCreateStorageClass(t *testing.T) {
|
||||||
|
requestSC := &extensions.StorageClass{
|
||||||
|
ObjectMeta: api.ObjectMeta{Name: "foo"},
|
||||||
|
Provisioner: "aaa",
|
||||||
|
}
|
||||||
|
c := &simple.Client{
|
||||||
|
Request: simple.Request{Method: "POST", Path: testapi.Extensions.ResourcePath(getStorageClassResourceName(), "", ""), Body: requestSC, Query: simple.BuildQueryValues(nil)},
|
||||||
|
Response: simple.Response{
|
||||||
|
StatusCode: 200,
|
||||||
|
Body: &extensions.StorageClass{
|
||||||
|
ObjectMeta: api.ObjectMeta{
|
||||||
|
Name: "foo",
|
||||||
|
Labels: map[string]string{
|
||||||
|
"foo": "bar",
|
||||||
|
"name": "baz",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Provisioner: "aaa",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
receivedSC, err := c.Setup(t).Extensions().StorageClasses().Create(requestSC)
|
||||||
|
c.Validate(t, receivedSC, err)
|
||||||
|
}
|
74
pkg/client/unversioned/testclient/fake_storage_classes.go
Normal file
74
pkg/client/unversioned/testclient/fake_storage_classes.go
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2015 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package testclient
|
||||||
|
|
||||||
|
import (
|
||||||
|
"k8s.io/kubernetes/pkg/api"
|
||||||
|
"k8s.io/kubernetes/pkg/apis/extensions"
|
||||||
|
kclientlib "k8s.io/kubernetes/pkg/client/unversioned"
|
||||||
|
"k8s.io/kubernetes/pkg/watch"
|
||||||
|
)
|
||||||
|
|
||||||
|
// FakeStorageClasses implements StorageClassInterface. Meant to be embedded into a struct to get a default
|
||||||
|
// implementation. This makes faking out just the method you want to test easier.
|
||||||
|
type FakeStorageClasses struct {
|
||||||
|
Fake *FakeExperimental
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ensure statically that FakeStorageClasses implements StorageClassInterface.
|
||||||
|
var _ kclientlib.StorageClassInterface = &FakeStorageClasses{}
|
||||||
|
|
||||||
|
func (c *FakeStorageClasses) Get(name string) (*extensions.StorageClass, error) {
|
||||||
|
obj, err := c.Fake.Invokes(NewGetAction("storageclasses", "", name), &extensions.StorageClass{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*extensions.StorageClass), err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *FakeStorageClasses) List(opts api.ListOptions) (*extensions.StorageClassList, error) {
|
||||||
|
obj, err := c.Fake.Invokes(NewListAction("storageclasses", "", opts), &extensions.StorageClassList{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*extensions.StorageClassList), err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *FakeStorageClasses) Create(np *extensions.StorageClass) (*extensions.StorageClass, error) {
|
||||||
|
obj, err := c.Fake.Invokes(NewCreateAction("storageclasses", "", np), &extensions.StorageClass{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*extensions.StorageClass), err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *FakeStorageClasses) Update(np *extensions.StorageClass) (*extensions.StorageClass, error) {
|
||||||
|
obj, err := c.Fake.Invokes(NewUpdateAction("storageclasses", "", np), &extensions.StorageClass{})
|
||||||
|
if obj == nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return obj.(*extensions.StorageClass), err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *FakeStorageClasses) Delete(name string) error {
|
||||||
|
_, err := c.Fake.Invokes(NewDeleteAction("storageclasses", "", name), &extensions.StorageClass{})
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *FakeStorageClasses) Watch(opts api.ListOptions) (watch.Interface, error) {
|
||||||
|
return c.Fake.InvokesWatch(NewWatchAction("storageclasses", "", opts))
|
||||||
|
}
|
@ -411,6 +411,10 @@ func (c *FakeExperimental) NetworkPolicies(namespace string) client.NetworkPolic
|
|||||||
return &FakeNetworkPolicies{Fake: c, Namespace: namespace}
|
return &FakeNetworkPolicies{Fake: c, Namespace: namespace}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *FakeExperimental) StorageClasses() client.StorageClassInterface {
|
||||||
|
return &FakeStorageClasses{Fake: c}
|
||||||
|
}
|
||||||
|
|
||||||
func NewSimpleFakeRbac(objects ...runtime.Object) *FakeRbac {
|
func NewSimpleFakeRbac(objects ...runtime.Object) *FakeRbac {
|
||||||
return &FakeRbac{Fake: NewSimpleFake(objects...)}
|
return &FakeRbac{Fake: NewSimpleFake(objects...)}
|
||||||
}
|
}
|
||||||
|
@ -100,6 +100,7 @@ import (
|
|||||||
serviceetcd "k8s.io/kubernetes/pkg/registry/service/etcd"
|
serviceetcd "k8s.io/kubernetes/pkg/registry/service/etcd"
|
||||||
ipallocator "k8s.io/kubernetes/pkg/registry/service/ipallocator"
|
ipallocator "k8s.io/kubernetes/pkg/registry/service/ipallocator"
|
||||||
serviceaccountetcd "k8s.io/kubernetes/pkg/registry/serviceaccount/etcd"
|
serviceaccountetcd "k8s.io/kubernetes/pkg/registry/serviceaccount/etcd"
|
||||||
|
storageclassetcd "k8s.io/kubernetes/pkg/registry/storageclass/etcd"
|
||||||
thirdpartyresourceetcd "k8s.io/kubernetes/pkg/registry/thirdpartyresource/etcd"
|
thirdpartyresourceetcd "k8s.io/kubernetes/pkg/registry/thirdpartyresource/etcd"
|
||||||
"k8s.io/kubernetes/pkg/registry/thirdpartyresourcedata"
|
"k8s.io/kubernetes/pkg/registry/thirdpartyresourcedata"
|
||||||
thirdpartyresourcedataetcd "k8s.io/kubernetes/pkg/registry/thirdpartyresourcedata/etcd"
|
thirdpartyresourcedataetcd "k8s.io/kubernetes/pkg/registry/thirdpartyresourcedata/etcd"
|
||||||
@ -807,6 +808,10 @@ func (m *Master) getExtensionResources(c *Config) map[string]rest.Storage {
|
|||||||
if c.APIResourceConfigSource.ResourceEnabled(version.WithResource("networkpolicies")) {
|
if c.APIResourceConfigSource.ResourceEnabled(version.WithResource("networkpolicies")) {
|
||||||
storage["networkpolicies"] = networkPolicyStorage
|
storage["networkpolicies"] = networkPolicyStorage
|
||||||
}
|
}
|
||||||
|
storageClassStorage := storageclassetcd.NewREST(restOptions("storageclasses"))
|
||||||
|
if c.APIResourceConfigSource.ResourceEnabled(version.WithResource("storageclasses")) {
|
||||||
|
storage["storageclasses"] = storageClassStorage
|
||||||
|
}
|
||||||
|
|
||||||
return storage
|
return storage
|
||||||
}
|
}
|
||||||
@ -1057,6 +1062,7 @@ func DefaultAPIResourceConfigSource() *genericapiserver.ResourceConfig {
|
|||||||
extensionsapiv1beta1.SchemeGroupVersion.WithResource("networkpolicies"),
|
extensionsapiv1beta1.SchemeGroupVersion.WithResource("networkpolicies"),
|
||||||
extensionsapiv1beta1.SchemeGroupVersion.WithResource("replicasets"),
|
extensionsapiv1beta1.SchemeGroupVersion.WithResource("replicasets"),
|
||||||
extensionsapiv1beta1.SchemeGroupVersion.WithResource("thirdpartyresources"),
|
extensionsapiv1beta1.SchemeGroupVersion.WithResource("thirdpartyresources"),
|
||||||
|
extensionsapiv1beta1.SchemeGroupVersion.WithResource("storageclasses"),
|
||||||
)
|
)
|
||||||
|
|
||||||
return ret
|
return ret
|
||||||
|
19
pkg/registry/storageclass/doc.go
Normal file
19
pkg/registry/storageclass/doc.go
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2016 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Package storageClass provides Registry interface and its REST
|
||||||
|
// implementation for storing storageclass api objects.
|
||||||
|
package storageclass
|
73
pkg/registry/storageclass/etcd/etcd.go
Normal file
73
pkg/registry/storageclass/etcd/etcd.go
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2015 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package etcd
|
||||||
|
|
||||||
|
import (
|
||||||
|
"k8s.io/kubernetes/pkg/api"
|
||||||
|
"k8s.io/kubernetes/pkg/apis/extensions"
|
||||||
|
"k8s.io/kubernetes/pkg/registry/generic"
|
||||||
|
"k8s.io/kubernetes/pkg/registry/generic/registry"
|
||||||
|
"k8s.io/kubernetes/pkg/registry/storageclass"
|
||||||
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
|
"k8s.io/kubernetes/pkg/storage"
|
||||||
|
)
|
||||||
|
|
||||||
|
type REST struct {
|
||||||
|
*registry.Store
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewREST returns a RESTStorage object that will work against persistent volumes.
|
||||||
|
func NewREST(opts generic.RESTOptions) *REST {
|
||||||
|
prefix := "/storageclasses"
|
||||||
|
|
||||||
|
newListFunc := func() runtime.Object { return &extensions.StorageClassList{} }
|
||||||
|
storageInterface := opts.Decorator(
|
||||||
|
opts.Storage,
|
||||||
|
100,
|
||||||
|
&extensions.StorageClass{},
|
||||||
|
prefix,
|
||||||
|
storageclass.Strategy,
|
||||||
|
newListFunc,
|
||||||
|
storage.NoTriggerPublisher,
|
||||||
|
)
|
||||||
|
|
||||||
|
store := ®istry.Store{
|
||||||
|
NewFunc: func() runtime.Object { return &extensions.StorageClass{} },
|
||||||
|
NewListFunc: newListFunc,
|
||||||
|
KeyRootFunc: func(ctx api.Context) string {
|
||||||
|
return prefix
|
||||||
|
},
|
||||||
|
KeyFunc: func(ctx api.Context, name string) (string, error) {
|
||||||
|
return registry.NoNamespaceKeyFunc(ctx, prefix, name)
|
||||||
|
},
|
||||||
|
ObjectNameFunc: func(obj runtime.Object) (string, error) {
|
||||||
|
return obj.(*extensions.StorageClass).Name, nil
|
||||||
|
},
|
||||||
|
PredicateFunc: storageclass.MatchStorageClasses,
|
||||||
|
QualifiedResource: api.Resource("storageclasses"),
|
||||||
|
DeleteCollectionWorkers: opts.DeleteCollectionWorkers,
|
||||||
|
|
||||||
|
CreateStrategy: storageclass.Strategy,
|
||||||
|
UpdateStrategy: storageclass.Strategy,
|
||||||
|
DeleteStrategy: storageclass.Strategy,
|
||||||
|
ReturnDeletedObject: true,
|
||||||
|
|
||||||
|
Storage: storageInterface,
|
||||||
|
}
|
||||||
|
|
||||||
|
return &REST{store}
|
||||||
|
}
|
136
pkg/registry/storageclass/etcd/etcd_test.go
Normal file
136
pkg/registry/storageclass/etcd/etcd_test.go
Normal file
@ -0,0 +1,136 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2016 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package etcd
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"k8s.io/kubernetes/pkg/api"
|
||||||
|
"k8s.io/kubernetes/pkg/apis/extensions"
|
||||||
|
"k8s.io/kubernetes/pkg/fields"
|
||||||
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
|
"k8s.io/kubernetes/pkg/registry/generic"
|
||||||
|
"k8s.io/kubernetes/pkg/registry/registrytest"
|
||||||
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
|
etcdtesting "k8s.io/kubernetes/pkg/storage/etcd/testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func newStorage(t *testing.T) (*REST, *etcdtesting.EtcdTestServer) {
|
||||||
|
etcdStorage, server := registrytest.NewEtcdStorage(t, extensions.GroupName)
|
||||||
|
restOptions := generic.RESTOptions{Storage: etcdStorage, Decorator: generic.UndecoratedStorage, DeleteCollectionWorkers: 1}
|
||||||
|
storageClassStorage := NewREST(restOptions)
|
||||||
|
return storageClassStorage, server
|
||||||
|
}
|
||||||
|
|
||||||
|
func validNewStorageClass(name string) *extensions.StorageClass {
|
||||||
|
return &extensions.StorageClass{
|
||||||
|
ObjectMeta: api.ObjectMeta{
|
||||||
|
Name: name,
|
||||||
|
},
|
||||||
|
Provisioner: "kubernetes.io/aws-ebs",
|
||||||
|
Parameters: map[string]string{
|
||||||
|
"foo": "bar",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func validChangedStorageClass() *extensions.StorageClass {
|
||||||
|
return validNewStorageClass("foo")
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCreate(t *testing.T) {
|
||||||
|
storage, server := newStorage(t)
|
||||||
|
defer server.Terminate(t)
|
||||||
|
test := registrytest.New(t, storage.Store).ClusterScope()
|
||||||
|
storageClass := validNewStorageClass("foo")
|
||||||
|
storageClass.ObjectMeta = api.ObjectMeta{GenerateName: "foo"}
|
||||||
|
test.TestCreate(
|
||||||
|
// valid
|
||||||
|
storageClass,
|
||||||
|
// invalid
|
||||||
|
&extensions.StorageClass{
|
||||||
|
ObjectMeta: api.ObjectMeta{Name: "*BadName!"},
|
||||||
|
},
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestUpdate(t *testing.T) {
|
||||||
|
storage, server := newStorage(t)
|
||||||
|
defer server.Terminate(t)
|
||||||
|
test := registrytest.New(t, storage.Store).ClusterScope()
|
||||||
|
test.TestUpdate(
|
||||||
|
// valid
|
||||||
|
validNewStorageClass("foo"),
|
||||||
|
// updateFunc
|
||||||
|
func(obj runtime.Object) runtime.Object {
|
||||||
|
object := obj.(*extensions.StorageClass)
|
||||||
|
object.Parameters = map[string]string{"foo": "bar"}
|
||||||
|
return object
|
||||||
|
},
|
||||||
|
//invalid update
|
||||||
|
func(obj runtime.Object) runtime.Object {
|
||||||
|
object := obj.(*extensions.StorageClass)
|
||||||
|
object.Parameters = map[string]string{"faz": "bar"}
|
||||||
|
return object
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestDelete(t *testing.T) {
|
||||||
|
storage, server := newStorage(t)
|
||||||
|
defer server.Terminate(t)
|
||||||
|
test := registrytest.New(t, storage.Store).ClusterScope().ReturnDeletedObject()
|
||||||
|
test.TestDelete(validNewStorageClass("foo"))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGet(t *testing.T) {
|
||||||
|
storage, server := newStorage(t)
|
||||||
|
defer server.Terminate(t)
|
||||||
|
test := registrytest.New(t, storage.Store).ClusterScope()
|
||||||
|
test.TestGet(validNewStorageClass("foo"))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestList(t *testing.T) {
|
||||||
|
storage, server := newStorage(t)
|
||||||
|
defer server.Terminate(t)
|
||||||
|
test := registrytest.New(t, storage.Store).ClusterScope()
|
||||||
|
test.TestList(validNewStorageClass("foo"))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestWatch(t *testing.T) {
|
||||||
|
storage, server := newStorage(t)
|
||||||
|
defer server.Terminate(t)
|
||||||
|
test := registrytest.New(t, storage.Store).ClusterScope()
|
||||||
|
test.TestWatch(
|
||||||
|
validNewStorageClass("foo"),
|
||||||
|
// matching labels
|
||||||
|
[]labels.Set{},
|
||||||
|
// not matching labels
|
||||||
|
[]labels.Set{
|
||||||
|
{"foo": "bar"},
|
||||||
|
},
|
||||||
|
// matching fields
|
||||||
|
[]fields.Set{
|
||||||
|
{"metadata.name": "foo"},
|
||||||
|
},
|
||||||
|
// not matching fields
|
||||||
|
[]fields.Set{
|
||||||
|
{"metadata.name": "bar"},
|
||||||
|
},
|
||||||
|
)
|
||||||
|
}
|
98
pkg/registry/storageclass/strategy.go
Normal file
98
pkg/registry/storageclass/strategy.go
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2016 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package storageclass
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"k8s.io/kubernetes/pkg/api"
|
||||||
|
"k8s.io/kubernetes/pkg/apis/extensions"
|
||||||
|
"k8s.io/kubernetes/pkg/apis/extensions/validation"
|
||||||
|
"k8s.io/kubernetes/pkg/fields"
|
||||||
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
|
"k8s.io/kubernetes/pkg/registry/generic"
|
||||||
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
|
"k8s.io/kubernetes/pkg/util/validation/field"
|
||||||
|
)
|
||||||
|
|
||||||
|
// storageClassStrategy implements behavior for StorageClass objects
|
||||||
|
type storageClassStrategy struct {
|
||||||
|
runtime.ObjectTyper
|
||||||
|
api.NameGenerator
|
||||||
|
}
|
||||||
|
|
||||||
|
// Strategy is the default logic that applies when creating and updating
|
||||||
|
// StorageClass objects via the REST API.
|
||||||
|
var Strategy = storageClassStrategy{api.Scheme, api.SimpleNameGenerator}
|
||||||
|
|
||||||
|
func (storageClassStrategy) NamespaceScoped() bool {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// ResetBeforeCreate clears the Status field which is not allowed to be set by end users on creation.
|
||||||
|
func (storageClassStrategy) PrepareForCreate(obj runtime.Object) {
|
||||||
|
_ = obj.(*extensions.StorageClass)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (storageClassStrategy) Validate(ctx api.Context, obj runtime.Object) field.ErrorList {
|
||||||
|
storageClass := obj.(*extensions.StorageClass)
|
||||||
|
return validation.ValidateStorageClass(storageClass)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Canonicalize normalizes the object after validation.
|
||||||
|
func (storageClassStrategy) Canonicalize(obj runtime.Object) {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (storageClassStrategy) AllowCreateOnUpdate() bool {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// PrepareForUpdate sets the Status fields which is not allowed to be set by an end user updating a PV
|
||||||
|
func (storageClassStrategy) PrepareForUpdate(obj, old runtime.Object) {
|
||||||
|
_ = obj.(*extensions.StorageClass)
|
||||||
|
_ = old.(*extensions.StorageClass)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (storageClassStrategy) ValidateUpdate(ctx api.Context, obj, old runtime.Object) field.ErrorList {
|
||||||
|
errorList := validation.ValidateStorageClass(obj.(*extensions.StorageClass))
|
||||||
|
return append(errorList, validation.ValidateStorageClassUpdate(obj.(*extensions.StorageClass), old.(*extensions.StorageClass))...)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (storageClassStrategy) AllowUnconditionalUpdate() bool {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
// MatchStorageClass returns a generic matcher for a given label and field selector.
|
||||||
|
func MatchStorageClasses(label labels.Selector, field fields.Selector) generic.Matcher {
|
||||||
|
return &generic.SelectionPredicate{
|
||||||
|
Label: label,
|
||||||
|
Field: field,
|
||||||
|
GetAttrs: func(obj runtime.Object) (labels.Set, fields.Set, error) {
|
||||||
|
cls, ok := obj.(*extensions.StorageClass)
|
||||||
|
if !ok {
|
||||||
|
return nil, nil, fmt.Errorf("given object is not of type StorageClass")
|
||||||
|
}
|
||||||
|
|
||||||
|
return labels.Set(cls.ObjectMeta.Labels), StorageClassToSelectableFields(cls), nil
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// StorageClassToSelectableFields returns a label set that represents the object
|
||||||
|
func StorageClassToSelectableFields(storageClass *extensions.StorageClass) fields.Set {
|
||||||
|
return generic.ObjectMetaFieldsSet(storageClass.ObjectMeta, false)
|
||||||
|
}
|
69
pkg/registry/storageclass/strategy_test.go
Normal file
69
pkg/registry/storageclass/strategy_test.go
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2015 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package storageclass
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"k8s.io/kubernetes/pkg/api"
|
||||||
|
"k8s.io/kubernetes/pkg/apis/extensions"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestStorageClassStrategy(t *testing.T) {
|
||||||
|
ctx := api.NewDefaultContext()
|
||||||
|
if Strategy.NamespaceScoped() {
|
||||||
|
t.Errorf("StorageClass must not be namespace scoped")
|
||||||
|
}
|
||||||
|
if Strategy.AllowCreateOnUpdate() {
|
||||||
|
t.Errorf("StorageClass should not allow create on update")
|
||||||
|
}
|
||||||
|
|
||||||
|
storageClass := &extensions.StorageClass{
|
||||||
|
ObjectMeta: api.ObjectMeta{
|
||||||
|
Name: "valid-class",
|
||||||
|
},
|
||||||
|
Provisioner: "kubernetes.io/aws-ebs",
|
||||||
|
Parameters: map[string]string{
|
||||||
|
"foo": "bar",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
Strategy.PrepareForCreate(storageClass)
|
||||||
|
|
||||||
|
errs := Strategy.Validate(ctx, storageClass)
|
||||||
|
if len(errs) != 0 {
|
||||||
|
t.Errorf("unexpected error validating %v", errs)
|
||||||
|
}
|
||||||
|
|
||||||
|
newStorageClass := &extensions.StorageClass{
|
||||||
|
ObjectMeta: api.ObjectMeta{
|
||||||
|
Name: "valid-class-2",
|
||||||
|
ResourceVersion: "4",
|
||||||
|
},
|
||||||
|
Provisioner: "kubernetes.io/aws-ebs",
|
||||||
|
Parameters: map[string]string{
|
||||||
|
"foo": "bar",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
Strategy.PrepareForUpdate(newStorageClass, storageClass)
|
||||||
|
|
||||||
|
errs = Strategy.ValidateUpdate(ctx, newStorageClass, storageClass)
|
||||||
|
if len(errs) == 0 {
|
||||||
|
t.Errorf("Expected a validation error")
|
||||||
|
}
|
||||||
|
}
|
101
test/integration/storageclasses/storage_classes_test.go
Normal file
101
test/integration/storageclasses/storage_classes_test.go
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
// +build integration,!no-etcd
|
||||||
|
|
||||||
|
/*
|
||||||
|
Copyright 2015 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package storageclasses
|
||||||
|
|
||||||
|
// This file contains tests for the storage classes API resource.
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"k8s.io/kubernetes/pkg/api"
|
||||||
|
"k8s.io/kubernetes/pkg/api/resource"
|
||||||
|
"k8s.io/kubernetes/pkg/api/testapi"
|
||||||
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
|
"k8s.io/kubernetes/pkg/apis/extensions"
|
||||||
|
"k8s.io/kubernetes/pkg/client/restclient"
|
||||||
|
client "k8s.io/kubernetes/pkg/client/unversioned"
|
||||||
|
"k8s.io/kubernetes/test/integration/framework"
|
||||||
|
)
|
||||||
|
|
||||||
|
const provisionerPluginName = "kubernetes.io/mock-provisioner"
|
||||||
|
|
||||||
|
// TestStorageClasses tests apiserver-side behavior of creation of storage class objects and their use by pvcs.
|
||||||
|
func TestStorageClasses(t *testing.T) {
|
||||||
|
_, s := framework.RunAMaster(nil)
|
||||||
|
defer s.Close()
|
||||||
|
|
||||||
|
client := client.NewOrDie(&restclient.Config{Host: s.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
|
||||||
|
|
||||||
|
ns := framework.CreateTestingNamespace("storageclass", s, t)
|
||||||
|
defer framework.DeleteTestingNamespace(ns, s, t)
|
||||||
|
|
||||||
|
DoTestStorageClasses(t, client, ns)
|
||||||
|
}
|
||||||
|
|
||||||
|
// DoTestStorageClasses tests storage classes for one api version.
|
||||||
|
func DoTestStorageClasses(t *testing.T, client *client.Client, ns *api.Namespace) {
|
||||||
|
// Make a storage class object.
|
||||||
|
s := extensions.StorageClass{
|
||||||
|
TypeMeta: unversioned.TypeMeta{
|
||||||
|
Kind: "StorageClass",
|
||||||
|
},
|
||||||
|
ObjectMeta: api.ObjectMeta{
|
||||||
|
Name: "gold",
|
||||||
|
},
|
||||||
|
Provisioner: provisionerPluginName,
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, err := client.Extensions().StorageClasses().Create(&s); err != nil {
|
||||||
|
t.Errorf("unable to create test storage class: %v", err)
|
||||||
|
}
|
||||||
|
defer deleteStorageClassOrErrorf(t, client, s.Namespace, s.Name)
|
||||||
|
|
||||||
|
// Template for pvcs that specify a storage class
|
||||||
|
pvc := &api.PersistentVolumeClaim{
|
||||||
|
ObjectMeta: api.ObjectMeta{
|
||||||
|
Name: "XXX",
|
||||||
|
Namespace: ns.Name,
|
||||||
|
Annotations: map[string]string{
|
||||||
|
"volume.beta.kubernetes.io/storage-class": "gold",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Spec: api.PersistentVolumeClaimSpec{
|
||||||
|
Resources: api.ResourceRequirements{Requests: api.ResourceList{api.ResourceName(api.ResourceStorage): resource.MustParse("1G")}},
|
||||||
|
AccessModes: []api.PersistentVolumeAccessMode{api.ReadWriteOnce},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
pvc.ObjectMeta.Name = "uses-storageclass"
|
||||||
|
if _, err := client.PersistentVolumeClaims(ns.Name).Create(pvc); err != nil {
|
||||||
|
t.Errorf("Failed to create pvc: %v", err)
|
||||||
|
}
|
||||||
|
defer deletePersistentVolumeClaimOrErrorf(t, client, ns.Name, pvc.Name)
|
||||||
|
}
|
||||||
|
|
||||||
|
func deleteStorageClassOrErrorf(t *testing.T, c *client.Client, ns, name string) {
|
||||||
|
if err := c.Extensions().StorageClasses().Delete(name); err != nil {
|
||||||
|
t.Errorf("unable to delete storage class %v: %v", name, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func deletePersistentVolumeClaimOrErrorf(t *testing.T, c *client.Client, ns, name string) {
|
||||||
|
if err := c.PersistentVolumeClaims(ns).Delete(name); err != nil {
|
||||||
|
t.Errorf("unable to delete persistent volume claim %v: %v", name, err)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user