func (c *adapter) remoteExec(command string, in io.Reader, out io.Writer, err io.Writer) int { cmd := &packer.RemoteCmd{ Stdin: in, Stdout: out, Stderr: err, Command: command, } if err := c.comm.Start(cmd); err != nil { c.ui.Error(err.Error()) return cmd.ExitStatus } cmd.Wait() return cmd.ExitStatus }
// NewCmdReconcileClusterRoleBindings implements the OpenShift cli reconcile-cluster-role-bindings command func NewCmdReconcileClusterRoleBindings(name, fullName string, f *clientcmd.Factory, out, err io.Writer) *cobra.Command { o := &ReconcileClusterRoleBindingsOptions{ Out: out, Err: err, Union: true, } excludeUsers := []string{} excludeGroups := []string{} cmd := &cobra.Command{ Use: name + " [ClusterRoleName]...", Short: "Update cluster role bindings to match the recommended bootstrap policy", Long: reconcileBindingsLong, Example: fmt.Sprintf(reconcileBindingsExample, fullName), Run: func(cmd *cobra.Command, args []string) { if err := o.Complete(cmd, f, args, excludeUsers, excludeGroups); err != nil { kcmdutil.CheckErr(err) } if err := o.Validate(); err != nil { kcmdutil.CheckErr(kcmdutil.UsageError(cmd, err.Error())) } if err := o.RunReconcileClusterRoleBindings(cmd, f); err != nil { kcmdutil.CheckErr(err) } }, } cmd.Flags().BoolVar(&o.Confirmed, "confirm", o.Confirmed, "Specify that cluster role bindings should be modified. Defaults to false, displaying what would be replaced but not actually replacing anything.") cmd.Flags().BoolVar(&o.Union, "additive-only", o.Union, "Preserves extra subjects in cluster role bindings.") cmd.Flags().StringSliceVar(&excludeUsers, "exclude-users", excludeUsers, "Do not add cluster role bindings for these user names.") cmd.Flags().StringSliceVar(&excludeGroups, "exclude-groups", excludeGroups, "Do not add cluster role bindings for these group names.") kcmdutil.AddPrinterFlags(cmd) cmd.Flags().Lookup("output").DefValue = "yaml" cmd.Flags().Lookup("output").Value.Set("yaml") return cmd }