Bumping k8s dependencies to 1.13
This commit is contained in:
82
vendor/k8s.io/kubernetes/cmd/kube-scheduler/app/options/configfile.go
generated
vendored
82
vendor/k8s.io/kubernetes/cmd/kube-scheduler/app/options/configfile.go
generated
vendored
@@ -17,29 +17,23 @@ limitations under the License.
|
||||
package options
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
|
||||
"k8s.io/apimachinery/pkg/api/meta"
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/runtime/serializer"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
"k8s.io/apimachinery/pkg/runtime/serializer/json"
|
||||
"k8s.io/kubernetes/pkg/apis/componentconfig"
|
||||
componentconfigv1alpha1 "k8s.io/kubernetes/pkg/apis/componentconfig/v1alpha1"
|
||||
kubeschedulerconfig "k8s.io/kubernetes/pkg/scheduler/apis/config"
|
||||
kubeschedulerscheme "k8s.io/kubernetes/pkg/scheduler/apis/config/scheme"
|
||||
kubeschedulerconfigv1alpha1 "k8s.io/kubernetes/pkg/scheduler/apis/config/v1alpha1"
|
||||
)
|
||||
|
||||
var (
|
||||
configScheme = runtime.NewScheme()
|
||||
configCodecs = serializer.NewCodecFactory(configScheme)
|
||||
)
|
||||
|
||||
func init() {
|
||||
componentconfig.AddToScheme(configScheme)
|
||||
componentconfigv1alpha1.AddToScheme(configScheme)
|
||||
}
|
||||
|
||||
func loadConfigFromFile(file string) (*componentconfig.KubeSchedulerConfiguration, error) {
|
||||
func loadConfigFromFile(file string) (*kubeschedulerconfig.KubeSchedulerConfiguration, error) {
|
||||
data, err := ioutil.ReadFile(file)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -48,22 +42,58 @@ func loadConfigFromFile(file string) (*componentconfig.KubeSchedulerConfiguratio
|
||||
return loadConfig(data)
|
||||
}
|
||||
|
||||
func loadConfig(data []byte) (*componentconfig.KubeSchedulerConfiguration, error) {
|
||||
configObj, gvk, err := configCodecs.UniversalDecoder().Decode(data, nil, nil)
|
||||
if err != nil {
|
||||
func loadConfig(data []byte) (*kubeschedulerconfig.KubeSchedulerConfiguration, error) {
|
||||
configObj := &kubeschedulerconfig.KubeSchedulerConfiguration{}
|
||||
if err := runtime.DecodeInto(kubeschedulerscheme.Codecs.UniversalDecoder(), data, configObj); err != nil {
|
||||
|
||||
// if this is a componentconfig/v1alpha1 KubeSchedulerConfiguration object, coerce it to kubescheduler.config.k8s.io/v1alpha1 with a warning
|
||||
// TODO: drop this block in 1.13
|
||||
if runtime.IsNotRegisteredError(err) {
|
||||
originalErr := err
|
||||
var (
|
||||
u = &unstructured.Unstructured{}
|
||||
codec = json.NewYAMLSerializer(json.DefaultMetaFactory, kubeschedulerscheme.Scheme, kubeschedulerscheme.Scheme)
|
||||
legacyConfigGVK = schema.GroupVersionKind{Group: "componentconfig", Version: "v1alpha1", Kind: "KubeSchedulerConfiguration"}
|
||||
)
|
||||
// attempt to decode to an unstructured object
|
||||
obj, gvk, err := codec.Decode(data, nil, u)
|
||||
|
||||
// if this errored, or the object we read was not the legacy alpha gvk, return the original error
|
||||
if err != nil || gvk == nil || *gvk != legacyConfigGVK {
|
||||
return nil, originalErr
|
||||
}
|
||||
|
||||
fmt.Printf("WARNING: the provided config file is an unsupported apiVersion (%q), which will be removed in future releases\n\n", legacyConfigGVK.GroupVersion().String())
|
||||
fmt.Printf("WARNING: switch to command-line flags or update your config file apiVersion to %q\n\n", kubeschedulerconfigv1alpha1.SchemeGroupVersion.String())
|
||||
fmt.Printf("WARNING: apiVersions at alpha-level are not guaranteed to be supported in future releases\n\n")
|
||||
|
||||
// attempt to coerce to the new alpha gvk
|
||||
if err := meta.NewAccessor().SetAPIVersion(obj, kubeschedulerconfigv1alpha1.SchemeGroupVersion.String()); err != nil {
|
||||
// return the original error on failure
|
||||
return nil, originalErr
|
||||
}
|
||||
|
||||
// attempt to encode the coerced apiVersion back to bytes
|
||||
buffer := bytes.NewBuffer([]byte{})
|
||||
if err := codec.Encode(obj, buffer); err != nil {
|
||||
// return the original error on failure
|
||||
return nil, originalErr
|
||||
}
|
||||
|
||||
// re-attempt to load the coerced apiVersion
|
||||
return loadConfig(buffer.Bytes())
|
||||
}
|
||||
|
||||
return nil, err
|
||||
}
|
||||
config, ok := configObj.(*componentconfig.KubeSchedulerConfiguration)
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("got unexpected config type: %v", gvk)
|
||||
}
|
||||
return config, nil
|
||||
|
||||
return configObj, nil
|
||||
}
|
||||
|
||||
// WriteConfigFile writes the config into the given file name as YAML.
|
||||
func WriteConfigFile(fileName string, cfg *componentconfig.KubeSchedulerConfiguration) error {
|
||||
func WriteConfigFile(fileName string, cfg *kubeschedulerconfig.KubeSchedulerConfiguration) error {
|
||||
var encoder runtime.Encoder
|
||||
mediaTypes := configCodecs.SupportedMediaTypes()
|
||||
mediaTypes := kubeschedulerscheme.Codecs.SupportedMediaTypes()
|
||||
for _, info := range mediaTypes {
|
||||
if info.MediaType == "application/yaml" {
|
||||
encoder = info.Serializer
|
||||
@@ -73,8 +103,8 @@ func WriteConfigFile(fileName string, cfg *componentconfig.KubeSchedulerConfigur
|
||||
if encoder == nil {
|
||||
return errors.New("unable to locate yaml encoder")
|
||||
}
|
||||
encoder = json.NewYAMLSerializer(json.DefaultMetaFactory, configScheme, configScheme)
|
||||
encoder = configCodecs.EncoderForVersion(encoder, componentconfigv1alpha1.SchemeGroupVersion)
|
||||
encoder = json.NewYAMLSerializer(json.DefaultMetaFactory, kubeschedulerscheme.Scheme, kubeschedulerscheme.Scheme)
|
||||
encoder = kubeschedulerscheme.Codecs.EncoderForVersion(encoder, kubeschedulerconfigv1alpha1.SchemeGroupVersion)
|
||||
|
||||
configFile, err := os.Create(fileName)
|
||||
if err != nil {
|
||||
|
Reference in New Issue
Block a user