本文整理汇总了Golang中github.com/openshift/origin/pkg/cmd/util/clientcmd.Factory.Decoder方法的典型用法代码示例。如果您正苦于以下问题:Golang Factory.Decoder方法的具体用法?Golang Factory.Decoder怎么用?Golang Factory.Decoder使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/openshift/origin/pkg/cmd/util/clientcmd.Factory
的用法示例。
在下文中一共展示了Factory.Decoder方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: calculateIdlableAnnotationsByService
// calculateIdlableAnnotationsByService calculates the list of objects involved in the idling process from a list of services in a file.
// Using the list of services, it figures out the associated scalable objects, and returns a map from the endpoints object for the services to
// the list of scalable resources associated with that endpoints object, as well as a map from CrossGroupObjectReferences to scale to 0 to the
// name of the associated service.
func (o *IdleOptions) calculateIdlableAnnotationsByService(f *clientcmd.Factory) (map[types.NamespacedName]idleUpdateInfo, map[unidlingapi.CrossGroupObjectReference]types.NamespacedName, error) {
// load our set of services
client, err := f.Client()
if err != nil {
return nil, nil, err
}
mapper, _ := f.Object(false)
podsLoaded := make(map[kapi.ObjectReference]*kapi.Pod)
getPod := func(ref kapi.ObjectReference) (*kapi.Pod, error) {
if pod, ok := podsLoaded[ref]; ok {
return pod, nil
}
pod, err := client.Pods(ref.Namespace).Get(ref.Name)
if err != nil {
return nil, err
}
podsLoaded[ref] = pod
return pod, nil
}
controllersLoaded := make(map[kapi.ObjectReference]runtime.Object)
helpers := make(map[unversioned.GroupKind]*resource.Helper)
getController := func(ref kapi.ObjectReference) (runtime.Object, error) {
if controller, ok := controllersLoaded[ref]; ok {
return controller, nil
}
gv, err := unversioned.ParseGroupVersion(ref.APIVersion)
if err != nil {
return nil, err
}
// just get the unversioned version of this
gk := unversioned.GroupKind{Group: gv.Group, Kind: ref.Kind}
helper, ok := helpers[gk]
if !ok {
var mapping *meta.RESTMapping
mapping, err = mapper.RESTMapping(unversioned.GroupKind{Group: gv.Group, Kind: ref.Kind}, "")
if err != nil {
return nil, err
}
var client resource.RESTClient
client, err = f.ClientForMapping(mapping)
if err != nil {
return nil, err
}
helper = resource.NewHelper(client, mapping)
helpers[gk] = helper
}
var controller runtime.Object
controller, err = helper.Get(ref.Namespace, ref.Name, false)
if err != nil {
return nil, err
}
controllersLoaded[ref] = controller
return controller, nil
}
targetScaleRefs := make(map[unidlingapi.CrossGroupObjectReference]types.NamespacedName)
endpointsInfo := make(map[types.NamespacedName]idleUpdateInfo)
decoder := f.Decoder(true)
err = o.svcBuilder.Do().Visit(func(info *resource.Info, err error) error {
if err != nil {
return err
}
endpoints, isEndpoints := info.Object.(*kapi.Endpoints)
if !isEndpoints {
return fmt.Errorf("you must specify endpoints, not %v (view available endpoints with \"%s get endpoints\").", info.Mapping.Resource, o.cmdFullName)
}
endpointsName := types.NamespacedName{
Namespace: endpoints.Namespace,
Name: endpoints.Name,
}
scaleRefs, err := findScalableResourcesForEndpoints(endpoints, decoder, getPod, getController)
if err != nil {
return fmt.Errorf("unable to calculate scalable resources for service %s/%s: %v", endpoints.Namespace, endpoints.Name, err)
}
for ref := range scaleRefs {
targetScaleRefs[ref] = endpointsName
}
idleInfo := idleUpdateInfo{
obj: endpoints,
scaleRefs: scaleRefs,
}
endpointsInfo[endpointsName] = idleInfo
//.........这里部分代码省略.........
示例2: Complete
func (o *RolloutLatestOptions) Complete(f *clientcmd.Factory, cmd *cobra.Command, args []string, out io.Writer) error {
if len(args) != 1 {
return errors.New("one deployment config name is needed as argument.")
}
namespace, _, err := f.DefaultNamespace()
if err != nil {
return err
}
o.oc, o.kc, err = f.Clients()
if err != nil {
return err
}
o.mapper, o.typer = f.Object(false)
o.infos, err = resource.NewBuilder(o.mapper, o.typer, resource.ClientMapperFunc(f.ClientForMapping), f.Decoder(true)).
ContinueOnError().
NamespaceParam(namespace).
ResourceNames("deploymentconfigs", args[0]).
SingleResourceType().
Do().Infos()
if err != nil {
return err
}
o.out = out
o.shortOutput = kcmdutil.GetFlagString(cmd, "output") == "name"
o.again = kcmdutil.GetFlagBool(cmd, "again")
return nil
}
示例3: ImportObjects
// ImportObjects imports objects into OpenShift from a particular location
// into a given namespace
func ImportObjects(f *clientcmd.Factory, ns, location string) error {
mapper, typer := f.Object(false)
schema, err := f.Validator(false, "")
if err != nil {
return err
}
data, err := bootstrap.Asset(location)
if err != nil {
return err
}
glog.V(8).Infof("Importing data:\n%s\n", string(data))
r := resource.NewBuilder(mapper, typer, resource.ClientMapperFunc(f.ClientForMapping), f.Decoder(true)).
Schema(schema).
ContinueOnError().
NamespaceParam(ns).
DefaultNamespace().
Stream(bytes.NewBuffer(data), location).
Flatten().
Do()
return r.Visit(func(info *resource.Info, err error) error {
if err != nil {
return err
}
glog.V(5).Infof("Creating %s/%s", info.Namespace, info.Name)
if err = createAndRefresh(info); err != nil {
return cmdutil.AddSourceToErr("creating", info.Source, err)
}
return nil
})
}