KEP-3619: API: add NodeFeatures.SupplementalGroupsPolicy in NodeStatus
KEP-3619: don't capitalize comment in K8S API KEP-3619: fix typos and grammatical ones in K8s API KEP-3619: rephrase NodeFeatures, NodeHandlerFeatures in K8s API
This commit is contained in:
		
							
								
								
									
										16
									
								
								api/openapi-spec/swagger.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										16
									
								
								api/openapi-spec/swagger.json
									
									
									
										generated
									
									
									
								
							| @@ -8225,6 +8225,16 @@ | |||||||
|       }, |       }, | ||||||
|       "type": "object" |       "type": "object" | ||||||
|     }, |     }, | ||||||
|  |     "io.k8s.api.core.v1.NodeFeatures": { | ||||||
|  |       "description": "NodeFeatures describes the set of features implemented by the CRI implementation. The features contained in the NodeFeatures should depend only on the cri implementation independent of runtime handlers.", | ||||||
|  |       "properties": { | ||||||
|  |         "supplementalGroupsPolicy": { | ||||||
|  |           "description": "SupplementalGroupsPolicy is set to true if the runtime supports SupplementalGroupsPolicy and ContainerUser.", | ||||||
|  |           "type": "boolean" | ||||||
|  |         } | ||||||
|  |       }, | ||||||
|  |       "type": "object" | ||||||
|  |     }, | ||||||
|     "io.k8s.api.core.v1.NodeList": { |     "io.k8s.api.core.v1.NodeList": { | ||||||
|       "description": "NodeList is the whole list of all Nodes which have been registered with master.", |       "description": "NodeList is the whole list of all Nodes which have been registered with master.", | ||||||
|       "properties": { |       "properties": { | ||||||
| @@ -8275,7 +8285,7 @@ | |||||||
|       "type": "object" |       "type": "object" | ||||||
|     }, |     }, | ||||||
|     "io.k8s.api.core.v1.NodeRuntimeHandlerFeatures": { |     "io.k8s.api.core.v1.NodeRuntimeHandlerFeatures": { | ||||||
|       "description": "NodeRuntimeHandlerFeatures is a set of runtime features.", |       "description": "NodeRuntimeHandlerFeatures is a set of features implemented by the runtime handler.", | ||||||
|       "properties": { |       "properties": { | ||||||
|         "recursiveReadOnlyMounts": { |         "recursiveReadOnlyMounts": { | ||||||
|           "description": "RecursiveReadOnlyMounts is set to true if the runtime handler supports RecursiveReadOnlyMounts.", |           "description": "RecursiveReadOnlyMounts is set to true if the runtime handler supports RecursiveReadOnlyMounts.", | ||||||
| @@ -8449,6 +8459,10 @@ | |||||||
|           "$ref": "#/definitions/io.k8s.api.core.v1.NodeDaemonEndpoints", |           "$ref": "#/definitions/io.k8s.api.core.v1.NodeDaemonEndpoints", | ||||||
|           "description": "Endpoints of daemons running on the Node." |           "description": "Endpoints of daemons running on the Node." | ||||||
|         }, |         }, | ||||||
|  |         "features": { | ||||||
|  |           "$ref": "#/definitions/io.k8s.api.core.v1.NodeFeatures", | ||||||
|  |           "description": "Features describes the set of features implemented by the CRI implementation." | ||||||
|  |         }, | ||||||
|         "images": { |         "images": { | ||||||
|           "description": "List of container images on this node", |           "description": "List of container images on this node", | ||||||
|           "items": { |           "items": { | ||||||
|   | |||||||
| @@ -3741,6 +3741,16 @@ | |||||||
|         }, |         }, | ||||||
|         "type": "object" |         "type": "object" | ||||||
|       }, |       }, | ||||||
|  |       "io.k8s.api.core.v1.NodeFeatures": { | ||||||
|  |         "description": "NodeFeatures describes the set of features implemented by the CRI implementation. The features contained in the NodeFeatures should depend only on the cri implementation independent of runtime handlers.", | ||||||
|  |         "properties": { | ||||||
|  |           "supplementalGroupsPolicy": { | ||||||
|  |             "description": "SupplementalGroupsPolicy is set to true if the runtime supports SupplementalGroupsPolicy and ContainerUser.", | ||||||
|  |             "type": "boolean" | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         "type": "object" | ||||||
|  |       }, | ||||||
|       "io.k8s.api.core.v1.NodeList": { |       "io.k8s.api.core.v1.NodeList": { | ||||||
|         "description": "NodeList is the whole list of all Nodes which have been registered with master.", |         "description": "NodeList is the whole list of all Nodes which have been registered with master.", | ||||||
|         "properties": { |         "properties": { | ||||||
| @@ -3806,7 +3816,7 @@ | |||||||
|         "type": "object" |         "type": "object" | ||||||
|       }, |       }, | ||||||
|       "io.k8s.api.core.v1.NodeRuntimeHandlerFeatures": { |       "io.k8s.api.core.v1.NodeRuntimeHandlerFeatures": { | ||||||
|         "description": "NodeRuntimeHandlerFeatures is a set of runtime features.", |         "description": "NodeRuntimeHandlerFeatures is a set of features implemented by the runtime handler.", | ||||||
|         "properties": { |         "properties": { | ||||||
|           "recursiveReadOnlyMounts": { |           "recursiveReadOnlyMounts": { | ||||||
|             "description": "RecursiveReadOnlyMounts is set to true if the runtime handler supports RecursiveReadOnlyMounts.", |             "description": "RecursiveReadOnlyMounts is set to true if the runtime handler supports RecursiveReadOnlyMounts.", | ||||||
| @@ -4027,6 +4037,14 @@ | |||||||
|             "default": {}, |             "default": {}, | ||||||
|             "description": "Endpoints of daemons running on the Node." |             "description": "Endpoints of daemons running on the Node." | ||||||
|           }, |           }, | ||||||
|  |           "features": { | ||||||
|  |             "allOf": [ | ||||||
|  |               { | ||||||
|  |                 "$ref": "#/components/schemas/io.k8s.api.core.v1.NodeFeatures" | ||||||
|  |               } | ||||||
|  |             ], | ||||||
|  |             "description": "Features describes the set of features implemented by the CRI implementation." | ||||||
|  |           }, | ||||||
|           "images": { |           "images": { | ||||||
|             "description": "List of container images on this node", |             "description": "List of container images on this node", | ||||||
|             "items": { |             "items": { | ||||||
|   | |||||||
| @@ -4892,7 +4892,7 @@ type NodeDaemonEndpoints struct { | |||||||
| 	KubeletEndpoint DaemonEndpoint | 	KubeletEndpoint DaemonEndpoint | ||||||
| } | } | ||||||
|  |  | ||||||
| // NodeRuntimeHandlerFeatures is a set of runtime features. | // NodeRuntimeHandlerFeatures is a set of features implemented by the runtime handler. | ||||||
| type NodeRuntimeHandlerFeatures struct { | type NodeRuntimeHandlerFeatures struct { | ||||||
| 	// RecursiveReadOnlyMounts is set to true if the runtime handler supports RecursiveReadOnlyMounts. | 	// RecursiveReadOnlyMounts is set to true if the runtime handler supports RecursiveReadOnlyMounts. | ||||||
| 	// +featureGate=RecursiveReadOnlyMounts | 	// +featureGate=RecursiveReadOnlyMounts | ||||||
| @@ -4915,6 +4915,15 @@ type NodeRuntimeHandler struct { | |||||||
| 	Features *NodeRuntimeHandlerFeatures | 	Features *NodeRuntimeHandlerFeatures | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // NodeFeatures describes the set of features implemented by the CRI implementation. | ||||||
|  | // The features contained in the NodeFeatures should depend only on the cri implementation | ||||||
|  | // independent of runtime handlers. | ||||||
|  | type NodeFeatures struct { | ||||||
|  | 	// SupplementalGroupsPolicy is set to true if the runtime supports SupplementalGroupsPolicy and ContainerUser. | ||||||
|  | 	// +optional | ||||||
|  | 	SupplementalGroupsPolicy *bool | ||||||
|  | } | ||||||
|  |  | ||||||
| // NodeSystemInfo is a set of ids/uuids to uniquely identify the node. | // NodeSystemInfo is a set of ids/uuids to uniquely identify the node. | ||||||
| type NodeSystemInfo struct { | type NodeSystemInfo struct { | ||||||
| 	// MachineID reported by the node. For unique machine identification | 	// MachineID reported by the node. For unique machine identification | ||||||
| @@ -5030,6 +5039,10 @@ type NodeStatus struct { | |||||||
| 	// +featureGate=UserNamespacesSupport | 	// +featureGate=UserNamespacesSupport | ||||||
| 	// +optional | 	// +optional | ||||||
| 	RuntimeHandlers []NodeRuntimeHandler | 	RuntimeHandlers []NodeRuntimeHandler | ||||||
|  | 	// Features describes the set of features implemented by the CRI implementation. | ||||||
|  | 	// +featureGate=SupplementalGroupsPolicy | ||||||
|  | 	// +optional | ||||||
|  | 	Features *NodeFeatures | ||||||
| } | } | ||||||
|  |  | ||||||
| // UniqueVolumeName defines the name of attached volume | // UniqueVolumeName defines the name of attached volume | ||||||
|   | |||||||
							
								
								
									
										32
									
								
								pkg/apis/core/v1/zz_generated.conversion.go
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										32
									
								
								pkg/apis/core/v1/zz_generated.conversion.go
									
									
									
										generated
									
									
									
								
							| @@ -1062,6 +1062,16 @@ func RegisterConversions(s *runtime.Scheme) error { | |||||||
| 	}); err != nil { | 	}); err != nil { | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
|  | 	if err := s.AddGeneratedConversionFunc((*v1.NodeFeatures)(nil), (*core.NodeFeatures)(nil), func(a, b interface{}, scope conversion.Scope) error { | ||||||
|  | 		return Convert_v1_NodeFeatures_To_core_NodeFeatures(a.(*v1.NodeFeatures), b.(*core.NodeFeatures), scope) | ||||||
|  | 	}); err != nil { | ||||||
|  | 		return err | ||||||
|  | 	} | ||||||
|  | 	if err := s.AddGeneratedConversionFunc((*core.NodeFeatures)(nil), (*v1.NodeFeatures)(nil), func(a, b interface{}, scope conversion.Scope) error { | ||||||
|  | 		return Convert_core_NodeFeatures_To_v1_NodeFeatures(a.(*core.NodeFeatures), b.(*v1.NodeFeatures), scope) | ||||||
|  | 	}); err != nil { | ||||||
|  | 		return err | ||||||
|  | 	} | ||||||
| 	if err := s.AddGeneratedConversionFunc((*v1.NodeList)(nil), (*core.NodeList)(nil), func(a, b interface{}, scope conversion.Scope) error { | 	if err := s.AddGeneratedConversionFunc((*v1.NodeList)(nil), (*core.NodeList)(nil), func(a, b interface{}, scope conversion.Scope) error { | ||||||
| 		return Convert_v1_NodeList_To_core_NodeList(a.(*v1.NodeList), b.(*core.NodeList), scope) | 		return Convert_v1_NodeList_To_core_NodeList(a.(*v1.NodeList), b.(*core.NodeList), scope) | ||||||
| 	}); err != nil { | 	}); err != nil { | ||||||
| @@ -5067,6 +5077,26 @@ func Convert_core_NodeDaemonEndpoints_To_v1_NodeDaemonEndpoints(in *core.NodeDae | |||||||
| 	return autoConvert_core_NodeDaemonEndpoints_To_v1_NodeDaemonEndpoints(in, out, s) | 	return autoConvert_core_NodeDaemonEndpoints_To_v1_NodeDaemonEndpoints(in, out, s) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | func autoConvert_v1_NodeFeatures_To_core_NodeFeatures(in *v1.NodeFeatures, out *core.NodeFeatures, s conversion.Scope) error { | ||||||
|  | 	out.SupplementalGroupsPolicy = (*bool)(unsafe.Pointer(in.SupplementalGroupsPolicy)) | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Convert_v1_NodeFeatures_To_core_NodeFeatures is an autogenerated conversion function. | ||||||
|  | func Convert_v1_NodeFeatures_To_core_NodeFeatures(in *v1.NodeFeatures, out *core.NodeFeatures, s conversion.Scope) error { | ||||||
|  | 	return autoConvert_v1_NodeFeatures_To_core_NodeFeatures(in, out, s) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func autoConvert_core_NodeFeatures_To_v1_NodeFeatures(in *core.NodeFeatures, out *v1.NodeFeatures, s conversion.Scope) error { | ||||||
|  | 	out.SupplementalGroupsPolicy = (*bool)(unsafe.Pointer(in.SupplementalGroupsPolicy)) | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Convert_core_NodeFeatures_To_v1_NodeFeatures is an autogenerated conversion function. | ||||||
|  | func Convert_core_NodeFeatures_To_v1_NodeFeatures(in *core.NodeFeatures, out *v1.NodeFeatures, s conversion.Scope) error { | ||||||
|  | 	return autoConvert_core_NodeFeatures_To_v1_NodeFeatures(in, out, s) | ||||||
|  | } | ||||||
|  |  | ||||||
| func autoConvert_v1_NodeList_To_core_NodeList(in *v1.NodeList, out *core.NodeList, s conversion.Scope) error { | func autoConvert_v1_NodeList_To_core_NodeList(in *v1.NodeList, out *core.NodeList, s conversion.Scope) error { | ||||||
| 	out.ListMeta = in.ListMeta | 	out.ListMeta = in.ListMeta | ||||||
| 	if in.Items != nil { | 	if in.Items != nil { | ||||||
| @@ -5295,6 +5325,7 @@ func autoConvert_v1_NodeStatus_To_core_NodeStatus(in *v1.NodeStatus, out *core.N | |||||||
| 	out.VolumesAttached = *(*[]core.AttachedVolume)(unsafe.Pointer(&in.VolumesAttached)) | 	out.VolumesAttached = *(*[]core.AttachedVolume)(unsafe.Pointer(&in.VolumesAttached)) | ||||||
| 	out.Config = (*core.NodeConfigStatus)(unsafe.Pointer(in.Config)) | 	out.Config = (*core.NodeConfigStatus)(unsafe.Pointer(in.Config)) | ||||||
| 	out.RuntimeHandlers = *(*[]core.NodeRuntimeHandler)(unsafe.Pointer(&in.RuntimeHandlers)) | 	out.RuntimeHandlers = *(*[]core.NodeRuntimeHandler)(unsafe.Pointer(&in.RuntimeHandlers)) | ||||||
|  | 	out.Features = (*core.NodeFeatures)(unsafe.Pointer(in.Features)) | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -5320,6 +5351,7 @@ func autoConvert_core_NodeStatus_To_v1_NodeStatus(in *core.NodeStatus, out *v1.N | |||||||
| 	out.VolumesAttached = *(*[]v1.AttachedVolume)(unsafe.Pointer(&in.VolumesAttached)) | 	out.VolumesAttached = *(*[]v1.AttachedVolume)(unsafe.Pointer(&in.VolumesAttached)) | ||||||
| 	out.Config = (*v1.NodeConfigStatus)(unsafe.Pointer(in.Config)) | 	out.Config = (*v1.NodeConfigStatus)(unsafe.Pointer(in.Config)) | ||||||
| 	out.RuntimeHandlers = *(*[]v1.NodeRuntimeHandler)(unsafe.Pointer(&in.RuntimeHandlers)) | 	out.RuntimeHandlers = *(*[]v1.NodeRuntimeHandler)(unsafe.Pointer(&in.RuntimeHandlers)) | ||||||
|  | 	out.Features = (*v1.NodeFeatures)(unsafe.Pointer(in.Features)) | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										26
									
								
								pkg/apis/core/zz_generated.deepcopy.go
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										26
									
								
								pkg/apis/core/zz_generated.deepcopy.go
									
									
									
										generated
									
									
									
								
							| @@ -2718,6 +2718,27 @@ func (in *NodeDaemonEndpoints) DeepCopy() *NodeDaemonEndpoints { | |||||||
| 	return out | 	return out | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. | ||||||
|  | func (in *NodeFeatures) DeepCopyInto(out *NodeFeatures) { | ||||||
|  | 	*out = *in | ||||||
|  | 	if in.SupplementalGroupsPolicy != nil { | ||||||
|  | 		in, out := &in.SupplementalGroupsPolicy, &out.SupplementalGroupsPolicy | ||||||
|  | 		*out = new(bool) | ||||||
|  | 		**out = **in | ||||||
|  | 	} | ||||||
|  | 	return | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeFeatures. | ||||||
|  | func (in *NodeFeatures) DeepCopy() *NodeFeatures { | ||||||
|  | 	if in == nil { | ||||||
|  | 		return nil | ||||||
|  | 	} | ||||||
|  | 	out := new(NodeFeatures) | ||||||
|  | 	in.DeepCopyInto(out) | ||||||
|  | 	return out | ||||||
|  | } | ||||||
|  |  | ||||||
| // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. | // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. | ||||||
| func (in *NodeList) DeepCopyInto(out *NodeList) { | func (in *NodeList) DeepCopyInto(out *NodeList) { | ||||||
| 	*out = *in | 	*out = *in | ||||||
| @@ -2990,6 +3011,11 @@ func (in *NodeStatus) DeepCopyInto(out *NodeStatus) { | |||||||
| 			(*in)[i].DeepCopyInto(&(*out)[i]) | 			(*in)[i].DeepCopyInto(&(*out)[i]) | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  | 	if in.Features != nil { | ||||||
|  | 		in, out := &in.Features, &out.Features | ||||||
|  | 		*out = new(NodeFeatures) | ||||||
|  | 		(*in).DeepCopyInto(*out) | ||||||
|  | 	} | ||||||
| 	return | 	return | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										31
									
								
								pkg/generated/openapi/zz_generated.openapi.go
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										31
									
								
								pkg/generated/openapi/zz_generated.openapi.go
									
									
									
										generated
									
									
									
								
							| @@ -479,6 +479,7 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA | |||||||
| 		"k8s.io/api/core/v1.NodeConfigSource":                                                                   schema_k8sio_api_core_v1_NodeConfigSource(ref), | 		"k8s.io/api/core/v1.NodeConfigSource":                                                                   schema_k8sio_api_core_v1_NodeConfigSource(ref), | ||||||
| 		"k8s.io/api/core/v1.NodeConfigStatus":                                                                   schema_k8sio_api_core_v1_NodeConfigStatus(ref), | 		"k8s.io/api/core/v1.NodeConfigStatus":                                                                   schema_k8sio_api_core_v1_NodeConfigStatus(ref), | ||||||
| 		"k8s.io/api/core/v1.NodeDaemonEndpoints":                                                                schema_k8sio_api_core_v1_NodeDaemonEndpoints(ref), | 		"k8s.io/api/core/v1.NodeDaemonEndpoints":                                                                schema_k8sio_api_core_v1_NodeDaemonEndpoints(ref), | ||||||
|  | 		"k8s.io/api/core/v1.NodeFeatures":                                                                       schema_k8sio_api_core_v1_NodeFeatures(ref), | ||||||
| 		"k8s.io/api/core/v1.NodeList":                                                                           schema_k8sio_api_core_v1_NodeList(ref), | 		"k8s.io/api/core/v1.NodeList":                                                                           schema_k8sio_api_core_v1_NodeList(ref), | ||||||
| 		"k8s.io/api/core/v1.NodeProxyOptions":                                                                   schema_k8sio_api_core_v1_NodeProxyOptions(ref), | 		"k8s.io/api/core/v1.NodeProxyOptions":                                                                   schema_k8sio_api_core_v1_NodeProxyOptions(ref), | ||||||
| 		"k8s.io/api/core/v1.NodeRuntimeHandler":                                                                 schema_k8sio_api_core_v1_NodeRuntimeHandler(ref), | 		"k8s.io/api/core/v1.NodeRuntimeHandler":                                                                 schema_k8sio_api_core_v1_NodeRuntimeHandler(ref), | ||||||
| @@ -24412,6 +24413,26 @@ func schema_k8sio_api_core_v1_NodeDaemonEndpoints(ref common.ReferenceCallback) | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | func schema_k8sio_api_core_v1_NodeFeatures(ref common.ReferenceCallback) common.OpenAPIDefinition { | ||||||
|  | 	return common.OpenAPIDefinition{ | ||||||
|  | 		Schema: spec.Schema{ | ||||||
|  | 			SchemaProps: spec.SchemaProps{ | ||||||
|  | 				Description: "NodeFeatures describes the set of features implemented by the CRI implementation. The features contained in the NodeFeatures should depend only on the cri implementation independent of runtime handlers.", | ||||||
|  | 				Type:        []string{"object"}, | ||||||
|  | 				Properties: map[string]spec.Schema{ | ||||||
|  | 					"supplementalGroupsPolicy": { | ||||||
|  | 						SchemaProps: spec.SchemaProps{ | ||||||
|  | 							Description: "SupplementalGroupsPolicy is set to true if the runtime supports SupplementalGroupsPolicy and ContainerUser.", | ||||||
|  | 							Type:        []string{"boolean"}, | ||||||
|  | 							Format:      "", | ||||||
|  | 						}, | ||||||
|  | 					}, | ||||||
|  | 				}, | ||||||
|  | 			}, | ||||||
|  | 		}, | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
| func schema_k8sio_api_core_v1_NodeList(ref common.ReferenceCallback) common.OpenAPIDefinition { | func schema_k8sio_api_core_v1_NodeList(ref common.ReferenceCallback) common.OpenAPIDefinition { | ||||||
| 	return common.OpenAPIDefinition{ | 	return common.OpenAPIDefinition{ | ||||||
| 		Schema: spec.Schema{ | 		Schema: spec.Schema{ | ||||||
| @@ -24530,7 +24551,7 @@ func schema_k8sio_api_core_v1_NodeRuntimeHandlerFeatures(ref common.ReferenceCal | |||||||
| 	return common.OpenAPIDefinition{ | 	return common.OpenAPIDefinition{ | ||||||
| 		Schema: spec.Schema{ | 		Schema: spec.Schema{ | ||||||
| 			SchemaProps: spec.SchemaProps{ | 			SchemaProps: spec.SchemaProps{ | ||||||
| 				Description: "NodeRuntimeHandlerFeatures is a set of runtime features.", | 				Description: "NodeRuntimeHandlerFeatures is a set of features implemented by the runtime handler.", | ||||||
| 				Type:        []string{"object"}, | 				Type:        []string{"object"}, | ||||||
| 				Properties: map[string]spec.Schema{ | 				Properties: map[string]spec.Schema{ | ||||||
| 					"recursiveReadOnlyMounts": { | 					"recursiveReadOnlyMounts": { | ||||||
| @@ -24979,11 +25000,17 @@ func schema_k8sio_api_core_v1_NodeStatus(ref common.ReferenceCallback) common.Op | |||||||
| 							}, | 							}, | ||||||
| 						}, | 						}, | ||||||
| 					}, | 					}, | ||||||
|  | 					"features": { | ||||||
|  | 						SchemaProps: spec.SchemaProps{ | ||||||
|  | 							Description: "Features describes the set of features implemented by the CRI implementation.", | ||||||
|  | 							Ref:         ref("k8s.io/api/core/v1.NodeFeatures"), | ||||||
|  | 						}, | ||||||
|  | 					}, | ||||||
| 				}, | 				}, | ||||||
| 			}, | 			}, | ||||||
| 		}, | 		}, | ||||||
| 		Dependencies: []string{ | 		Dependencies: []string{ | ||||||
| 			"k8s.io/api/core/v1.AttachedVolume", "k8s.io/api/core/v1.ContainerImage", "k8s.io/api/core/v1.NodeAddress", "k8s.io/api/core/v1.NodeCondition", "k8s.io/api/core/v1.NodeConfigStatus", "k8s.io/api/core/v1.NodeDaemonEndpoints", "k8s.io/api/core/v1.NodeRuntimeHandler", "k8s.io/api/core/v1.NodeSystemInfo", "k8s.io/apimachinery/pkg/api/resource.Quantity"}, | 			"k8s.io/api/core/v1.AttachedVolume", "k8s.io/api/core/v1.ContainerImage", "k8s.io/api/core/v1.NodeAddress", "k8s.io/api/core/v1.NodeCondition", "k8s.io/api/core/v1.NodeConfigStatus", "k8s.io/api/core/v1.NodeDaemonEndpoints", "k8s.io/api/core/v1.NodeFeatures", "k8s.io/api/core/v1.NodeRuntimeHandler", "k8s.io/api/core/v1.NodeSystemInfo", "k8s.io/apimachinery/pkg/api/resource.Quantity"}, | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|   | |||||||
							
								
								
									
										2440
									
								
								staging/src/k8s.io/api/core/v1/generated.pb.go
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2440
									
								
								staging/src/k8s.io/api/core/v1/generated.pb.go
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -2598,6 +2598,15 @@ message NodeDaemonEndpoints { | |||||||
|   optional DaemonEndpoint kubeletEndpoint = 1; |   optional DaemonEndpoint kubeletEndpoint = 1; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // NodeFeatures describes the set of features implemented by the CRI implementation. | ||||||
|  | // The features contained in the NodeFeatures should depend only on the cri implementation | ||||||
|  | // independent of runtime handlers. | ||||||
|  | message NodeFeatures { | ||||||
|  |   // SupplementalGroupsPolicy is set to true if the runtime supports SupplementalGroupsPolicy and ContainerUser. | ||||||
|  |   // +optional | ||||||
|  |   optional bool supplementalGroupsPolicy = 1; | ||||||
|  | } | ||||||
|  |  | ||||||
| // NodeList is the whole list of all Nodes which have been registered with master. | // NodeList is the whole list of all Nodes which have been registered with master. | ||||||
| message NodeList { | message NodeList { | ||||||
|   // Standard list metadata. |   // Standard list metadata. | ||||||
| @@ -2628,7 +2637,7 @@ message NodeRuntimeHandler { | |||||||
|   optional NodeRuntimeHandlerFeatures features = 2; |   optional NodeRuntimeHandlerFeatures features = 2; | ||||||
| } | } | ||||||
|  |  | ||||||
| // NodeRuntimeHandlerFeatures is a set of runtime features. | // NodeRuntimeHandlerFeatures is a set of features implemented by the runtime handler. | ||||||
| message NodeRuntimeHandlerFeatures { | message NodeRuntimeHandlerFeatures { | ||||||
|   // RecursiveReadOnlyMounts is set to true if the runtime handler supports RecursiveReadOnlyMounts. |   // RecursiveReadOnlyMounts is set to true if the runtime handler supports RecursiveReadOnlyMounts. | ||||||
|   // +featureGate=RecursiveReadOnlyMounts |   // +featureGate=RecursiveReadOnlyMounts | ||||||
| @@ -2803,6 +2812,11 @@ message NodeStatus { | |||||||
|   // +optional |   // +optional | ||||||
|   // +listType=atomic |   // +listType=atomic | ||||||
|   repeated NodeRuntimeHandler runtimeHandlers = 12; |   repeated NodeRuntimeHandler runtimeHandlers = 12; | ||||||
|  |  | ||||||
|  |   // Features describes the set of features implemented by the CRI implementation. | ||||||
|  |   // +featureGate=SupplementalGroupsPolicy | ||||||
|  |   // +optional | ||||||
|  |   optional NodeFeatures features = 13; | ||||||
| } | } | ||||||
|  |  | ||||||
| // NodeSystemInfo is a set of ids/uuids to uniquely identify the node. | // NodeSystemInfo is a set of ids/uuids to uniquely identify the node. | ||||||
|   | |||||||
| @@ -5871,7 +5871,7 @@ type NodeDaemonEndpoints struct { | |||||||
| 	KubeletEndpoint DaemonEndpoint `json:"kubeletEndpoint,omitempty" protobuf:"bytes,1,opt,name=kubeletEndpoint"` | 	KubeletEndpoint DaemonEndpoint `json:"kubeletEndpoint,omitempty" protobuf:"bytes,1,opt,name=kubeletEndpoint"` | ||||||
| } | } | ||||||
|  |  | ||||||
| // NodeRuntimeHandlerFeatures is a set of runtime features. | // NodeRuntimeHandlerFeatures is a set of features implemented by the runtime handler. | ||||||
| type NodeRuntimeHandlerFeatures struct { | type NodeRuntimeHandlerFeatures struct { | ||||||
| 	// RecursiveReadOnlyMounts is set to true if the runtime handler supports RecursiveReadOnlyMounts. | 	// RecursiveReadOnlyMounts is set to true if the runtime handler supports RecursiveReadOnlyMounts. | ||||||
| 	// +featureGate=RecursiveReadOnlyMounts | 	// +featureGate=RecursiveReadOnlyMounts | ||||||
| @@ -5894,6 +5894,15 @@ type NodeRuntimeHandler struct { | |||||||
| 	Features *NodeRuntimeHandlerFeatures `json:"features,omitempty" protobuf:"bytes,2,opt,name=features"` | 	Features *NodeRuntimeHandlerFeatures `json:"features,omitempty" protobuf:"bytes,2,opt,name=features"` | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // NodeFeatures describes the set of features implemented by the CRI implementation. | ||||||
|  | // The features contained in the NodeFeatures should depend only on the cri implementation | ||||||
|  | // independent of runtime handlers. | ||||||
|  | type NodeFeatures struct { | ||||||
|  | 	// SupplementalGroupsPolicy is set to true if the runtime supports SupplementalGroupsPolicy and ContainerUser. | ||||||
|  | 	// +optional | ||||||
|  | 	SupplementalGroupsPolicy *bool `json:"supplementalGroupsPolicy,omitempty" protobuf:"varint,1,opt,name=supplementalGroupsPolicy"` | ||||||
|  | } | ||||||
|  |  | ||||||
| // NodeSystemInfo is a set of ids/uuids to uniquely identify the node. | // NodeSystemInfo is a set of ids/uuids to uniquely identify the node. | ||||||
| type NodeSystemInfo struct { | type NodeSystemInfo struct { | ||||||
| 	// MachineID reported by the node. For unique machine identification | 	// MachineID reported by the node. For unique machine identification | ||||||
| @@ -6036,6 +6045,10 @@ type NodeStatus struct { | |||||||
| 	// +optional | 	// +optional | ||||||
| 	// +listType=atomic | 	// +listType=atomic | ||||||
| 	RuntimeHandlers []NodeRuntimeHandler `json:"runtimeHandlers,omitempty" protobuf:"bytes,12,rep,name=runtimeHandlers"` | 	RuntimeHandlers []NodeRuntimeHandler `json:"runtimeHandlers,omitempty" protobuf:"bytes,12,rep,name=runtimeHandlers"` | ||||||
|  | 	// Features describes the set of features implemented by the CRI implementation. | ||||||
|  | 	// +featureGate=SupplementalGroupsPolicy | ||||||
|  | 	// +optional | ||||||
|  | 	Features *NodeFeatures `json:"features,omitempty" protobuf:"bytes,13,rep,name=features"` | ||||||
| } | } | ||||||
|  |  | ||||||
| type UniqueVolumeName string | type UniqueVolumeName string | ||||||
|   | |||||||
| @@ -1206,6 +1206,15 @@ func (NodeDaemonEndpoints) SwaggerDoc() map[string]string { | |||||||
| 	return map_NodeDaemonEndpoints | 	return map_NodeDaemonEndpoints | ||||||
| } | } | ||||||
|  |  | ||||||
|  | var map_NodeFeatures = map[string]string{ | ||||||
|  | 	"":                         "NodeFeatures describes the set of features implemented by the CRI implementation. The features contained in the NodeFeatures should depend only on the cri implementation independent of runtime handlers.", | ||||||
|  | 	"supplementalGroupsPolicy": "SupplementalGroupsPolicy is set to true if the runtime supports SupplementalGroupsPolicy and ContainerUser.", | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func (NodeFeatures) SwaggerDoc() map[string]string { | ||||||
|  | 	return map_NodeFeatures | ||||||
|  | } | ||||||
|  |  | ||||||
| var map_NodeList = map[string]string{ | var map_NodeList = map[string]string{ | ||||||
| 	"":         "NodeList is the whole list of all Nodes which have been registered with master.", | 	"":         "NodeList is the whole list of all Nodes which have been registered with master.", | ||||||
| 	"metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", | 	"metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", | ||||||
| @@ -1236,7 +1245,7 @@ func (NodeRuntimeHandler) SwaggerDoc() map[string]string { | |||||||
| } | } | ||||||
|  |  | ||||||
| var map_NodeRuntimeHandlerFeatures = map[string]string{ | var map_NodeRuntimeHandlerFeatures = map[string]string{ | ||||||
| 	"":                        "NodeRuntimeHandlerFeatures is a set of runtime features.", | 	"":                        "NodeRuntimeHandlerFeatures is a set of features implemented by the runtime handler.", | ||||||
| 	"recursiveReadOnlyMounts": "RecursiveReadOnlyMounts is set to true if the runtime handler supports RecursiveReadOnlyMounts.", | 	"recursiveReadOnlyMounts": "RecursiveReadOnlyMounts is set to true if the runtime handler supports RecursiveReadOnlyMounts.", | ||||||
| 	"userNamespaces":          "UserNamespaces is set to true if the runtime handler supports UserNamespaces, including for volumes.", | 	"userNamespaces":          "UserNamespaces is set to true if the runtime handler supports UserNamespaces, including for volumes.", | ||||||
| } | } | ||||||
| @@ -1304,6 +1313,7 @@ var map_NodeStatus = map[string]string{ | |||||||
| 	"volumesAttached": "List of volumes that are attached to the node.", | 	"volumesAttached": "List of volumes that are attached to the node.", | ||||||
| 	"config":          "Status of the config assigned to the node via the dynamic Kubelet config feature.", | 	"config":          "Status of the config assigned to the node via the dynamic Kubelet config feature.", | ||||||
| 	"runtimeHandlers": "The available runtime handlers.", | 	"runtimeHandlers": "The available runtime handlers.", | ||||||
|  | 	"features":        "Features describes the set of features implemented by the CRI implementation.", | ||||||
| } | } | ||||||
|  |  | ||||||
| func (NodeStatus) SwaggerDoc() map[string]string { | func (NodeStatus) SwaggerDoc() map[string]string { | ||||||
|   | |||||||
| @@ -2716,6 +2716,27 @@ func (in *NodeDaemonEndpoints) DeepCopy() *NodeDaemonEndpoints { | |||||||
| 	return out | 	return out | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. | ||||||
|  | func (in *NodeFeatures) DeepCopyInto(out *NodeFeatures) { | ||||||
|  | 	*out = *in | ||||||
|  | 	if in.SupplementalGroupsPolicy != nil { | ||||||
|  | 		in, out := &in.SupplementalGroupsPolicy, &out.SupplementalGroupsPolicy | ||||||
|  | 		*out = new(bool) | ||||||
|  | 		**out = **in | ||||||
|  | 	} | ||||||
|  | 	return | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeFeatures. | ||||||
|  | func (in *NodeFeatures) DeepCopy() *NodeFeatures { | ||||||
|  | 	if in == nil { | ||||||
|  | 		return nil | ||||||
|  | 	} | ||||||
|  | 	out := new(NodeFeatures) | ||||||
|  | 	in.DeepCopyInto(out) | ||||||
|  | 	return out | ||||||
|  | } | ||||||
|  |  | ||||||
| // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. | // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. | ||||||
| func (in *NodeList) DeepCopyInto(out *NodeList) { | func (in *NodeList) DeepCopyInto(out *NodeList) { | ||||||
| 	*out = *in | 	*out = *in | ||||||
| @@ -2988,6 +3009,11 @@ func (in *NodeStatus) DeepCopyInto(out *NodeStatus) { | |||||||
| 			(*in)[i].DeepCopyInto(&(*out)[i]) | 			(*in)[i].DeepCopyInto(&(*out)[i]) | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  | 	if in.Features != nil { | ||||||
|  | 		in, out := &in.Features, &out.Features | ||||||
|  | 		*out = new(NodeFeatures) | ||||||
|  | 		(*in).DeepCopyInto(*out) | ||||||
|  | 	} | ||||||
| 	return | 	return | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -165,6 +165,9 @@ | |||||||
|           "userNamespaces": true |           "userNamespaces": true | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     ] |     ], | ||||||
|  |     "features": { | ||||||
|  |       "supplementalGroupsPolicy": true | ||||||
|  |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
							
								
								
									
										
											BIN
										
									
								
								staging/src/k8s.io/api/testdata/HEAD/core.v1.Node.pb
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								staging/src/k8s.io/api/testdata/HEAD/core.v1.Node.pb
									
									
									
									
										vendored
									
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -92,6 +92,8 @@ status: | |||||||
|   daemonEndpoints: |   daemonEndpoints: | ||||||
|     kubeletEndpoint: |     kubeletEndpoint: | ||||||
|       Port: 1 |       Port: 1 | ||||||
|  |   features: | ||||||
|  |     supplementalGroupsPolicy: true | ||||||
|   images: |   images: | ||||||
|   - names: |   - names: | ||||||
|     - namesValue |     - namesValue | ||||||
|   | |||||||
| @@ -0,0 +1,39 @@ | |||||||
|  | /* | ||||||
|  | Copyright The Kubernetes Authors. | ||||||
|  |  | ||||||
|  | Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  | you may not use this file except in compliance with the License. | ||||||
|  | You may obtain a copy of the License at | ||||||
|  |  | ||||||
|  |     http://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  |  | ||||||
|  | Unless required by applicable law or agreed to in writing, software | ||||||
|  | distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  | See the License for the specific language governing permissions and | ||||||
|  | limitations under the License. | ||||||
|  | */ | ||||||
|  |  | ||||||
|  | // Code generated by applyconfiguration-gen. DO NOT EDIT. | ||||||
|  |  | ||||||
|  | package v1 | ||||||
|  |  | ||||||
|  | // NodeFeaturesApplyConfiguration represents a declarative configuration of the NodeFeatures type for use | ||||||
|  | // with apply. | ||||||
|  | type NodeFeaturesApplyConfiguration struct { | ||||||
|  | 	SupplementalGroupsPolicy *bool `json:"supplementalGroupsPolicy,omitempty"` | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // NodeFeaturesApplyConfiguration constructs a declarative configuration of the NodeFeatures type for use with | ||||||
|  | // apply. | ||||||
|  | func NodeFeatures() *NodeFeaturesApplyConfiguration { | ||||||
|  | 	return &NodeFeaturesApplyConfiguration{} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // WithSupplementalGroupsPolicy sets the SupplementalGroupsPolicy field in the declarative configuration to the given value | ||||||
|  | // and returns the receiver, so that objects can be built by chaining "With" function invocations. | ||||||
|  | // If called multiple times, the SupplementalGroupsPolicy field is set to the value of the last call. | ||||||
|  | func (b *NodeFeaturesApplyConfiguration) WithSupplementalGroupsPolicy(value bool) *NodeFeaturesApplyConfiguration { | ||||||
|  | 	b.SupplementalGroupsPolicy = &value | ||||||
|  | 	return b | ||||||
|  | } | ||||||
| @@ -37,6 +37,7 @@ type NodeStatusApplyConfiguration struct { | |||||||
| 	VolumesAttached []AttachedVolumeApplyConfiguration     `json:"volumesAttached,omitempty"` | 	VolumesAttached []AttachedVolumeApplyConfiguration     `json:"volumesAttached,omitempty"` | ||||||
| 	Config          *NodeConfigStatusApplyConfiguration    `json:"config,omitempty"` | 	Config          *NodeConfigStatusApplyConfiguration    `json:"config,omitempty"` | ||||||
| 	RuntimeHandlers []NodeRuntimeHandlerApplyConfiguration `json:"runtimeHandlers,omitempty"` | 	RuntimeHandlers []NodeRuntimeHandlerApplyConfiguration `json:"runtimeHandlers,omitempty"` | ||||||
|  | 	Features        *NodeFeaturesApplyConfiguration        `json:"features,omitempty"` | ||||||
| } | } | ||||||
|  |  | ||||||
| // NodeStatusApplyConfiguration constructs a declarative configuration of the NodeStatus type for use with | // NodeStatusApplyConfiguration constructs a declarative configuration of the NodeStatus type for use with | ||||||
| @@ -167,3 +168,11 @@ func (b *NodeStatusApplyConfiguration) WithRuntimeHandlers(values ...*NodeRuntim | |||||||
| 	} | 	} | ||||||
| 	return b | 	return b | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // WithFeatures sets the Features field in the declarative configuration to the given value | ||||||
|  | // and returns the receiver, so that objects can be built by chaining "With" function invocations. | ||||||
|  | // If called multiple times, the Features field is set to the value of the last call. | ||||||
|  | func (b *NodeStatusApplyConfiguration) WithFeatures(value *NodeFeaturesApplyConfiguration) *NodeStatusApplyConfiguration { | ||||||
|  | 	b.Features = value | ||||||
|  | 	return b | ||||||
|  | } | ||||||
|   | |||||||
| @@ -6103,6 +6103,12 @@ var schemaYAML = typed.YAMLObject(`types: | |||||||
|       type: |       type: | ||||||
|         namedType: io.k8s.api.core.v1.DaemonEndpoint |         namedType: io.k8s.api.core.v1.DaemonEndpoint | ||||||
|       default: {} |       default: {} | ||||||
|  | - name: io.k8s.api.core.v1.NodeFeatures | ||||||
|  |   map: | ||||||
|  |     fields: | ||||||
|  |     - name: supplementalGroupsPolicy | ||||||
|  |       type: | ||||||
|  |         scalar: boolean | ||||||
| - name: io.k8s.api.core.v1.NodeRuntimeHandler | - name: io.k8s.api.core.v1.NodeRuntimeHandler | ||||||
|   map: |   map: | ||||||
|     fields: |     fields: | ||||||
| @@ -6231,6 +6237,9 @@ var schemaYAML = typed.YAMLObject(`types: | |||||||
|       type: |       type: | ||||||
|         namedType: io.k8s.api.core.v1.NodeDaemonEndpoints |         namedType: io.k8s.api.core.v1.NodeDaemonEndpoints | ||||||
|       default: {} |       default: {} | ||||||
|  |     - name: features | ||||||
|  |       type: | ||||||
|  |         namedType: io.k8s.api.core.v1.NodeFeatures | ||||||
|     - name: images |     - name: images | ||||||
|       type: |       type: | ||||||
|         list: |         list: | ||||||
|   | |||||||
| @@ -806,6 +806,8 @@ func ForKind(kind schema.GroupVersionKind) interface{} { | |||||||
| 		return &applyconfigurationscorev1.NodeConfigStatusApplyConfiguration{} | 		return &applyconfigurationscorev1.NodeConfigStatusApplyConfiguration{} | ||||||
| 	case corev1.SchemeGroupVersion.WithKind("NodeDaemonEndpoints"): | 	case corev1.SchemeGroupVersion.WithKind("NodeDaemonEndpoints"): | ||||||
| 		return &applyconfigurationscorev1.NodeDaemonEndpointsApplyConfiguration{} | 		return &applyconfigurationscorev1.NodeDaemonEndpointsApplyConfiguration{} | ||||||
|  | 	case corev1.SchemeGroupVersion.WithKind("NodeFeatures"): | ||||||
|  | 		return &applyconfigurationscorev1.NodeFeaturesApplyConfiguration{} | ||||||
| 	case corev1.SchemeGroupVersion.WithKind("NodeRuntimeHandler"): | 	case corev1.SchemeGroupVersion.WithKind("NodeRuntimeHandler"): | ||||||
| 		return &applyconfigurationscorev1.NodeRuntimeHandlerApplyConfiguration{} | 		return &applyconfigurationscorev1.NodeRuntimeHandlerApplyConfiguration{} | ||||||
| 	case corev1.SchemeGroupVersion.WithKind("NodeRuntimeHandlerFeatures"): | 	case corev1.SchemeGroupVersion.WithKind("NodeRuntimeHandlerFeatures"): | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Shingo Omura
					Shingo Omura