當前位置: 首頁>>代碼示例>>Golang>>正文


Golang runtime.DecodeInto函數代碼示例

本文整理匯總了Golang中k8s/io/apimachinery/pkg/runtime.DecodeInto函數的典型用法代碼示例。如果您正苦於以下問題:Golang DecodeInto函數的具體用法?Golang DecodeInto怎麽用?Golang DecodeInto使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。


在下文中一共展示了DecodeInto函數的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。

示例1: roundTrip

// roundTrip applies a single round-trip test to the given runtime object
// using the given codec.  The round-trip test ensures that an object can be
// deep-copied and converted from internal -> versioned -> internal without
// loss of data.
func roundTrip(t *testing.T, codec runtime.Codec, item runtime.Object) {
    printer := spew.ConfigState{DisableMethods: true}
    original := item

    // deep copy the original object
    copied, err := api.Scheme.DeepCopy(item)
    if err != nil {
        panic(fmt.Sprintf("unable to copy: %v", err))
    }
    item = copied.(runtime.Object)
    name := reflect.TypeOf(item).Elem().Name()

    // encode (serialize) the deep copy using the provided codec
    data, err := runtime.Encode(codec, item)
    if err != nil {
        if runtime.IsNotRegisteredError(err) {
            t.Logf("%v: not registered: %v (%s)", name, err, printer.Sprintf("%#v", item))
        } else {
            t.Errorf("%v: %v (%s)", name, err, printer.Sprintf("%#v", item))
        }
        return
    }

    // ensure that the deep copy is equal to the original; neither the deep
    // copy or conversion should alter the object
    if !api.Semantic.DeepEqual(original, item) {
        t.Errorf("0: %v: encode altered the object, diff: %v", name, diff.ObjectReflectDiff(original, item))
        return
    }

    // decode (deserialize) the encoded data back into an object
    obj2, err := runtime.Decode(codec, data)
    if err != nil {
        t.Errorf("0: %v: %v\nCodec: %#v\nData: %s\nSource: %#v", name, err, codec, dataAsString(data), printer.Sprintf("%#v", item))
        panic("failed")
    }

    // ensure that the object produced from decoding the encoded data is equal
    // to the original object
    if !api.Semantic.DeepEqual(original, obj2) {
        t.Errorf("\n1: %v: diff: %v\nCodec: %#v\nSource:\n\n%#v\n\nEncoded:\n\n%s\n\nFinal:\n\n%#v", name, diff.ObjectReflectDiff(item, obj2), codec, printer.Sprintf("%#v", item), dataAsString(data), printer.Sprintf("%#v", obj2))
        return
    }

    // decode the encoded data into a new object (instead of letting the codec
    // create a new object)
    obj3 := reflect.New(reflect.TypeOf(item).Elem()).Interface().(runtime.Object)
    if err := runtime.DecodeInto(codec, data, obj3); err != nil {
        t.Errorf("2: %v: %v", name, err)
        return
    }

    // ensure that the new runtime object is equal to the original after being
    // decoded into
    if !api.Semantic.DeepEqual(item, obj3) {
        t.Errorf("3: %v: diff: %v\nCodec: %#v", name, diff.ObjectReflectDiff(item, obj3), codec)
        return
    }
}
開發者ID:kubernetes,項目名稱:kubernetes,代碼行數:63,代碼來源:serialization_test.go

示例2: BenchmarkNodeConversion

func BenchmarkNodeConversion(b *testing.B) {
    data, err := ioutil.ReadFile("node_example.json")
    if err != nil {
        b.Fatalf("Unexpected error while reading file: %v", err)
    }
    var node api.Node
    if err := runtime.DecodeInto(testapi.Default.Codec(), data, &node); err != nil {
        b.Fatalf("Unexpected error decoding node: %v", err)
    }

    scheme := api.Scheme
    var result *api.Node
    b.ResetTimer()
    for i := 0; i < b.N; i++ {
        versionedObj, err := scheme.UnsafeConvertToVersion(&node, api.Registry.GroupOrDie(api.GroupName).GroupVersion)
        if err != nil {
            b.Fatalf("Conversion error: %v", err)
        }
        obj, err := scheme.UnsafeConvertToVersion(versionedObj, testapi.Default.InternalGroupVersion())
        if err != nil {
            b.Fatalf("Conversion error: %v", err)
        }
        result = obj.(*api.Node)
    }
    b.StopTimer()
    if !api.Semantic.DeepDerivative(node, *result) {
        b.Fatalf("Incorrect conversion: %s", diff.ObjectDiff(node, *result))
    }
}
開發者ID:kubernetes,項目名稱:kubernetes,代碼行數:29,代碼來源:conversion_test.go

示例3: runTest

func runTest(t *testing.T, source interface{}) {
    name := reflect.TypeOf(source).Elem().Name()
    TestObjectFuzzer.Fuzz(source)

    _, codec := GetTestScheme()
    data, err := runtime.Encode(codec, source.(runtime.Object))
    if err != nil {
        t.Errorf("%v: %v (%#v)", name, err, source)
        return
    }
    obj2, err := runtime.Decode(codec, data)
    if err != nil {
        t.Errorf("%v: %v (%v)", name, err, string(data))
        return
    }
    if !semantic.DeepEqual(source, obj2) {
        t.Errorf("1: %v: diff: %v", name, diff.ObjectGoPrintSideBySide(source, obj2))
        return
    }
    obj3 := reflect.New(reflect.TypeOf(source).Elem()).Interface()
    if err := runtime.DecodeInto(codec, data, obj3.(runtime.Object)); err != nil {
        t.Errorf("2: %v: %v", name, err)
        return
    }
    if !semantic.DeepEqual(source, obj3) {
        t.Errorf("3: %v: diff: %v", name, diff.ObjectDiff(source, obj3))
        return
    }
}
開發者ID:kubernetes,項目名稱:kubernetes,代碼行數:29,代碼來源:codec_test.go

示例4: createConfig

func createConfig(s *options.SchedulerServer, kubecli *clientset.Clientset) (*scheduler.Config, error) {
    configFactory := factory.NewConfigFactory(kubecli, s.SchedulerName, s.HardPodAffinitySymmetricWeight, s.FailureDomains)
    if _, err := os.Stat(s.PolicyConfigFile); err == nil {
        var (
            policy     schedulerapi.Policy
            configData []byte
        )
        configData, err := ioutil.ReadFile(s.PolicyConfigFile)
        if err != nil {
            return nil, fmt.Errorf("unable to read policy config: %v", err)
        }
        if err := runtime.DecodeInto(latestschedulerapi.Codec, configData, &policy); err != nil {
            return nil, fmt.Errorf("invalid configuration: %v", err)
        }
        return configFactory.CreateFromConfig(policy)
    }

    // if the config file isn't provided, use the specified (or default) provider
    config, err := configFactory.CreateFromProvider(s.AlgorithmProvider)
    if err != nil {
        return nil, err
    }

    eventBroadcaster := record.NewBroadcaster()
    config.Recorder = eventBroadcaster.NewRecorder(v1.EventSource{Component: s.SchedulerName})
    eventBroadcaster.StartLogging(glog.Infof)
    eventBroadcaster.StartRecordingToSink(&v1core.EventSinkImpl{Interface: kubecli.Core().Events("")})

    return config, nil
}
開發者ID:kubernetes,項目名稱:kubernetes,代碼行數:30,代碼來源:server.go

示例5: initKubeletConfigSync

// Try to check for config on the API server, return that config if we get it, and start
// a background thread that checks for updates to configs.
func initKubeletConfigSync(s *options.KubeletServer) (*componentconfig.KubeletConfiguration, error) {
    jsonstr, err := getRemoteKubeletConfig(s, nil)
    if err == nil {
        // We will compare future API server config against the config we just got (jsonstr):
        startKubeletConfigSyncLoop(s, jsonstr)

        // Convert json from API server to external type struct, and convert that to internal type struct
        extKC := componentconfigv1alpha1.KubeletConfiguration{}
        err := runtime.DecodeInto(api.Codecs.UniversalDecoder(), []byte(jsonstr), &extKC)
        if err != nil {
            return nil, err
        }
        api.Scheme.Default(&extKC)
        kc := componentconfig.KubeletConfiguration{}
        err = api.Scheme.Convert(&extKC, &kc, nil)
        if err != nil {
            return nil, err
        }
        return &kc, nil
    } else {
        // Couldn't get a configuration from the API server yet.
        // Restart as soon as anything comes back from the API server.
        startKubeletConfigSyncLoop(s, "")
        return nil, err
    }
}
開發者ID:kubernetes,項目名稱:kubernetes,代碼行數:28,代碼來源:server.go

示例6: BenchmarkReplicationControllerConversion

func BenchmarkReplicationControllerConversion(b *testing.B) {
    data, err := ioutil.ReadFile("replication_controller_example.json")
    if err != nil {
        b.Fatalf("Unexpected error while reading file: %v", err)
    }
    var replicationController api.ReplicationController
    if err := runtime.DecodeInto(testapi.Default.Codec(), data, &replicationController); err != nil {
        b.Fatalf("Unexpected error decoding node: %v", err)
    }

    scheme := api.Scheme
    var result *api.ReplicationController
    b.ResetTimer()
    for i := 0; i < b.N; i++ {
        versionedObj, err := scheme.UnsafeConvertToVersion(&replicationController, api.Registry.GroupOrDie(api.GroupName).GroupVersion)
        if err != nil {
            b.Fatalf("Conversion error: %v", err)
        }
        obj, err := scheme.UnsafeConvertToVersion(versionedObj, testapi.Default.InternalGroupVersion())
        if err != nil {
            b.Fatalf("Conversion error: %v", err)
        }
        result = obj.(*api.ReplicationController)
    }
    b.StopTimer()
    if !api.Semantic.DeepDerivative(replicationController, *result) {
        b.Fatalf("Incorrect conversion: expected %v, got %v", replicationController, *result)
    }
}
開發者ID:kubernetes,項目名稱:kubernetes,代碼行數:29,代碼來源:conversion_test.go

示例7: NewJoin

func NewJoin(cfgPath string, args []string, cfg *kubeadmapi.NodeConfiguration, skipPreFlight bool) (*Join, error) {
    fmt.Println("[kubeadm] WARNING: kubeadm is in alpha, please do not use it for production clusters.")

    if cfgPath != "" {
        b, err := ioutil.ReadFile(cfgPath)
        if err != nil {
            return nil, fmt.Errorf("unable to read config from %q [%v]", cfgPath, err)
        }
        if err := runtime.DecodeInto(api.Codecs.UniversalDecoder(), b, cfg); err != nil {
            return nil, fmt.Errorf("unable to decode config from %q [%v]", cfgPath, err)
        }
    }

    if !skipPreFlight {
        fmt.Println("[preflight] Running pre-flight checks")

        // First, check if we're root separately from the other preflight checks and fail fast
        if err := preflight.RunRootCheckOnly(); err != nil {
            return nil, err
        }

        // Then continue with the others...
        if err := preflight.RunJoinNodeChecks(cfg); err != nil {
            return nil, err
        }
    } else {
        fmt.Println("[preflight] Skipping pre-flight checks")
    }

    // Try to start the kubelet service in case it's inactive
    preflight.TryStartKubelet()

    return &Join{cfg: cfg}, nil
}
開發者ID:kubernetes,項目名稱:kubernetes,代碼行數:34,代碼來源:join.go

示例8: readServiceFromFile

func readServiceFromFile(t *testing.T, filename string) *api.Service {
    data := readBytesFromFile(t, filename)
    svc := api.Service{}
    if err := runtime.DecodeInto(testapi.Default.Codec(), data, &svc); err != nil {
        t.Fatal(err)
    }

    return &svc
}
開發者ID:kubernetes,項目名稱:kubernetes,代碼行數:9,代碼來源:apply_test.go

示例9: readReplicationControllerFromFile

func readReplicationControllerFromFile(t *testing.T, filename string) *api.ReplicationController {
    data := readBytesFromFile(t, filename)
    rc := api.ReplicationController{}
    if err := runtime.DecodeInto(testapi.Default.Codec(), data, &rc); err != nil {
        t.Fatal(err)
    }

    return &rc
}
開發者ID:kubernetes,項目名稱:kubernetes,代碼行數:9,代碼來源:apply_test.go

示例10: TestSetControllerConversion

func TestSetControllerConversion(t *testing.T) {
    if err := api.Scheme.AddConversionFuncs(Convert_v1beta1_ReplicaSet_to_api_ReplicationController); err != nil {
        t.Fatal(err)
    }

    rs := &extensions.ReplicaSet{}
    rc := &api.ReplicationController{}

    extGroup := testapi.Extensions
    defaultGroup := testapi.Default

    fuzzInternalObject(t, extGroup.InternalGroupVersion(), rs, rand.Int63())

    t.Logf("rs._internal.extensions -> rs.v1beta1.extensions")
    data, err := runtime.Encode(extGroup.Codec(), rs)
    if err != nil {
        t.Fatalf("unexpected encoding error: %v", err)
    }

    decoder := api.Codecs.DecoderToVersion(
        api.Codecs.UniversalDeserializer(),
        runtime.NewMultiGroupVersioner(
            *defaultGroup.GroupVersion(),
            schema.GroupKind{Group: defaultGroup.GroupVersion().Group},
            schema.GroupKind{Group: extGroup.GroupVersion().Group},
        ),
    )

    t.Logf("rs.v1beta1.extensions -> rc._internal")
    if err := runtime.DecodeInto(decoder, data, rc); err != nil {
        t.Fatalf("unexpected decoding error: %v", err)
    }

    t.Logf("rc._internal -> rc.v1")
    data, err = runtime.Encode(defaultGroup.Codec(), rc)
    if err != nil {
        t.Fatalf("unexpected encoding error: %v", err)
    }

    t.Logf("rc.v1 -> rs._internal.extensions")
    if err := runtime.DecodeInto(decoder, data, rs); err != nil {
        t.Fatalf("unexpected decoding error: %v", err)
    }
}
開發者ID:kubernetes,項目名稱:kubernetes,代碼行數:44,代碼來源:serialization_test.go

示例11: rcFromManifest

// rcFromManifest reads a .json/yaml file and returns the rc in it.
func rcFromManifest(fileName string) *v1.ReplicationController {
    var controller v1.ReplicationController
    framework.Logf("Parsing rc from %v", fileName)
    data := generated.ReadOrDie(fileName)

    json, err := utilyaml.ToJSON(data)
    Expect(err).NotTo(HaveOccurred())

    Expect(runtime.DecodeInto(api.Codecs.UniversalDecoder(), json, &controller)).NotTo(HaveOccurred())
    return &controller
}
開發者ID:kubernetes,項目名稱:kubernetes,代碼行數:12,代碼來源:serviceloadbalancers.go

示例12: unstructuredToPod

func unstructuredToPod(obj *unstructured.Unstructured) (*v1.Pod, error) {
    json, err := runtime.Encode(unstructured.UnstructuredJSONScheme, obj)
    if err != nil {
        return nil, err
    }
    pod := new(v1.Pod)
    err = runtime.DecodeInto(testapi.Default.Codec(), json, pod)
    pod.Kind = ""
    pod.APIVersion = ""
    return pod, err
}
開發者ID:kubernetes,項目名稱:kubernetes,代碼行數:11,代碼來源:dynamic_client_test.go

示例13: svcFromManifest

// svcFromManifest reads a .json/yaml file and returns the rc in it.
func svcFromManifest(fileName string) *v1.Service {
    var svc v1.Service
    framework.Logf("Parsing service from %v", fileName)
    data := generated.ReadOrDie(fileName)

    json, err := utilyaml.ToJSON(data)
    Expect(err).NotTo(HaveOccurred())

    Expect(runtime.DecodeInto(api.Codecs.UniversalDecoder(), json, &svc)).NotTo(HaveOccurred())
    return &svc
}
開發者ID:kubernetes,項目名稱:kubernetes,代碼行數:12,代碼來源:serviceloadbalancers.go

示例14: RCFromManifest

// RCFromManifest reads a .json file and returns the rc in it.
func RCFromManifest(fileName string) *v1.ReplicationController {
    data, err := ioutil.ReadFile(fileName)
    if err != nil {
        glog.Fatalf("Unexpected error reading rc manifest %v", err)
    }
    var controller v1.ReplicationController
    if err := runtime.DecodeInto(testapi.Default.Codec(), data, &controller); err != nil {
        glog.Fatalf("Unexpected error reading rc manifest %v", err)
    }
    return &controller
}
開發者ID:kubernetes,項目名稱:kubernetes,代碼行數:12,代碼來源:master_utils.go

示例15: ingFromManifest

// ingFromManifest reads a .json/yaml file and returns the rc in it.
func ingFromManifest(fileName string) *extensions.Ingress {
    var ing extensions.Ingress
    framework.Logf("Parsing ingress from %v", fileName)
    data, err := ioutil.ReadFile(fileName)
    framework.ExpectNoError(err)

    json, err := utilyaml.ToJSON(data)
    framework.ExpectNoError(err)

    framework.ExpectNoError(runtime.DecodeInto(api.Codecs.UniversalDecoder(), json, &ing))
    return &ing
}
開發者ID:kubernetes,項目名稱:kubernetes,代碼行數:13,代碼來源:ingress_utils.go


注:本文中的k8s/io/apimachinery/pkg/runtime.DecodeInto函數示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。