mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	Use preferred resource version
This commit is contained in:
		@@ -45,7 +45,7 @@ Examples:
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
			schema, err := f.Validator(cmd)
 | 
								schema, err := f.Validator(cmd)
 | 
				
			||||||
			checkErr(err)
 | 
								checkErr(err)
 | 
				
			||||||
			mapping, namespace, name, data := ResourceFromFile(filename, f.Typer, f.Mapper, schema)
 | 
								mapping, namespace, name, data := ResourceFromFile(cmd, filename, f.Typer, f.Mapper, schema)
 | 
				
			||||||
			client, err := f.Client(cmd, mapping)
 | 
								client, err := f.Client(cmd, mapping)
 | 
				
			||||||
			checkErr(err)
 | 
								checkErr(err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -216,7 +216,7 @@ func ResourceFromArgsOrFile(cmd *cobra.Command, args []string, filename string,
 | 
				
			|||||||
		usageError(cmd, "Must specify filename or command line params")
 | 
							usageError(cmd, "Must specify filename or command line params")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	mapping, namespace, name, _ = ResourceFromFile(filename, typer, mapper, schema)
 | 
						mapping, namespace, name, _ = ResourceFromFile(cmd, filename, typer, mapper, schema)
 | 
				
			||||||
	if len(name) == 0 {
 | 
						if len(name) == 0 {
 | 
				
			||||||
		checkErr(fmt.Errorf("the resource in the provided file has no name (or ID) defined"))
 | 
							checkErr(fmt.Errorf("the resource in the provided file has no name (or ID) defined"))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -281,23 +281,24 @@ func ResourceOrTypeFromArgs(cmd *cobra.Command, args []string, mapper meta.RESTM
 | 
				
			|||||||
// ResourceFromFile retrieves the name and namespace from a valid file. If the file does not
 | 
					// ResourceFromFile retrieves the name and namespace from a valid file. If the file does not
 | 
				
			||||||
// resolve to a known type an error is returned. The returned mapping can be used to determine
 | 
					// resolve to a known type an error is returned. The returned mapping can be used to determine
 | 
				
			||||||
// the correct REST endpoint to modify this resource with.
 | 
					// the correct REST endpoint to modify this resource with.
 | 
				
			||||||
func ResourceFromFile(filename string, typer runtime.ObjectTyper, mapper meta.RESTMapper, schema validation.Schema) (mapping *meta.RESTMapping, namespace, name string, data []byte) {
 | 
					func ResourceFromFile(cmd *cobra.Command, filename string, typer runtime.ObjectTyper, mapper meta.RESTMapper, schema validation.Schema) (mapping *meta.RESTMapping, namespace, name string, data []byte) {
 | 
				
			||||||
	configData, err := ReadConfigData(filename)
 | 
						configData, err := ReadConfigData(filename)
 | 
				
			||||||
	checkErr(err)
 | 
						checkErr(err)
 | 
				
			||||||
	data = configData
 | 
						data = configData
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	version, kind, err := typer.DataVersionAndKind(data)
 | 
						objVersion, kind, err := typer.DataVersionAndKind(data)
 | 
				
			||||||
	checkErr(err)
 | 
						checkErr(err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// TODO: allow unversioned objects?
 | 
						// TODO: allow unversioned objects?
 | 
				
			||||||
	if len(version) == 0 {
 | 
						if len(objVersion) == 0 {
 | 
				
			||||||
		checkErr(fmt.Errorf("the resource in the provided file has no apiVersion defined"))
 | 
							checkErr(fmt.Errorf("the resource in the provided file has no apiVersion defined"))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err = schema.ValidateBytes(data)
 | 
						err = schema.ValidateBytes(data)
 | 
				
			||||||
	checkErr(err)
 | 
						checkErr(err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	mapping, err = mapper.RESTMapping(kind, version)
 | 
						// decode using the version stored with the object (allows codec to vary across versions)
 | 
				
			||||||
 | 
						mapping, err = mapper.RESTMapping(kind, objVersion)
 | 
				
			||||||
	checkErr(err)
 | 
						checkErr(err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	obj, err := mapping.Codec.Decode(data)
 | 
						obj, err := mapping.Codec.Decode(data)
 | 
				
			||||||
@@ -309,6 +310,13 @@ func ResourceFromFile(filename string, typer runtime.ObjectTyper, mapper meta.RE
 | 
				
			|||||||
	name, err = meta.Name(obj)
 | 
						name, err = meta.Name(obj)
 | 
				
			||||||
	checkErr(err)
 | 
						checkErr(err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// if the preferred API version differs, get a different mapper
 | 
				
			||||||
 | 
						version := GetFlagString(cmd, "api-version")
 | 
				
			||||||
 | 
						if version != objVersion {
 | 
				
			||||||
 | 
							mapping, err = mapper.RESTMapping(kind, version)
 | 
				
			||||||
 | 
							checkErr(err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -45,7 +45,7 @@ Examples:
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
			schema, err := f.Validator(cmd)
 | 
								schema, err := f.Validator(cmd)
 | 
				
			||||||
			checkErr(err)
 | 
								checkErr(err)
 | 
				
			||||||
			mapping, namespace, name, data := ResourceFromFile(filename, f.Typer, f.Mapper, schema)
 | 
								mapping, namespace, name, data := ResourceFromFile(cmd, filename, f.Typer, f.Mapper, schema)
 | 
				
			||||||
			client, err := f.Client(cmd, mapping)
 | 
								client, err := f.Client(cmd, mapping)
 | 
				
			||||||
			checkErr(err)
 | 
								checkErr(err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user