func RunDescribe(f *Factory, out io.Writer, cmd *cobra.Command, args []string) error { cmdNamespace, err := f.DefaultNamespace() if err != nil { return err } mapper, _ := f.Object() // TODO: use resource.Builder instead mapping, namespace, name, err := util.ResourceFromArgs(cmd, args, mapper, cmdNamespace) if err != nil { return err } describer, err := f.Describer(mapping) if err != nil { return err } s, err := describer.Describe(namespace, name) if err != nil { return err } fmt.Fprintf(out, "%s\n", s) return nil }
func RunLabel(f *Factory, out io.Writer, cmd *cobra.Command, args []string) error { if len(args) < 2 { return util.UsageError(cmd, "<resource> <name> is required") } if len(args) < 3 { return util.UsageError(cmd, "at least one label update is required.") } res := args[:2] cmdNamespace, err := f.DefaultNamespace() if err != nil { return err } mapper, _ := f.Object() // TODO: use resource.Builder instead mapping, namespace, name, err := util.ResourceFromArgs(cmd, res, mapper, cmdNamespace) if err != nil { return err } client, err := f.RESTClient(mapping) if err != nil { return err } labels, remove, err := parseLabels(args[2:]) if err != nil { return err } overwrite := util.GetFlagBool(cmd, "overwrite") resourceVersion := util.GetFlagString(cmd, "resource-version") obj, err := updateObject(client, mapping, namespace, name, func(obj runtime.Object) (runtime.Object, error) { outObj, err := labelFunc(obj, overwrite, resourceVersion, labels, remove) if err != nil { return nil, err } return outObj, nil }) if err != nil { return err } printer, err := f.PrinterForMapping(cmd, mapping) if err != nil { return err } printer.PrintObj(obj, out) return nil }
func RunResize(f *Factory, out io.Writer, cmd *cobra.Command, args []string) error { count := util.GetFlagInt(cmd, "replicas") if len(args) != 2 || count < 0 { return util.UsageError(cmd, "--replicas=COUNT RESOURCE ID") } cmdNamespace, err := f.DefaultNamespace() if err != nil { return err } mapper, _ := f.Object() // TODO: use resource.Builder instead mapping, namespace, name, err := util.ResourceFromArgs(cmd, args, mapper, cmdNamespace) if err != nil { return err } resizer, err := f.Resizer(mapping) if err != nil { return err } resourceVersion := util.GetFlagString(cmd, "resource-version") currentSize := util.GetFlagInt(cmd, "current-replicas") precondition := &kubectl.ResizePrecondition{currentSize, resourceVersion} cond := kubectl.ResizeCondition(resizer, precondition, namespace, name, uint(count)) msg := "resized" if err = wait.Poll(retryFrequency, retryTimeout, cond); err != nil { msg = fmt.Sprintf("Failed to resize controller in spite of retrying for %s", retryTimeout) if err != nil { return err } } fmt.Fprintf(out, "%s\n", msg) return nil }
func updateWithPatch(cmd *cobra.Command, args []string, f *Factory, patch string) (string, error) { cmdNamespace, err := f.DefaultNamespace() if err != nil { return "", err } mapper, _ := f.Object() // TODO: use resource.Builder instead mapping, namespace, name, err := cmdutil.ResourceFromArgs(cmd, args, mapper, cmdNamespace) if err != nil { return "", err } client, err := f.RESTClient(mapping) if err != nil { return "", err } helper := resource.NewHelper(client, mapping) obj, err := helper.Get(namespace, name) if err != nil { return "", err } patchedObj, err := cmdutil.Merge(obj, patch, mapping.Kind) if err != nil { return "", err } data, err := helper.Codec.Encode(patchedObj) if err != nil { return "", err } _, err = helper.Update(namespace, name, true, data) return name, err }