// Process the ipfailover command. func processCommand(f *clientcmd.Factory, options *ipfailover.IPFailoverConfigCmdOptions, cmd *cobra.Command, args []string, out io.Writer) error { name, err := getConfigurationName(args) if err != nil { return err } c, err := getConfigurator(name, f, options, out) if err != nil { return err } // First up, validate all the command line options. if err := ipfailover.ValidateCmdOptions(options, c); err != nil { return err } // Check if we are just previewing the config. previewFlag, err := previewConfiguration(c, cmd, out) if previewFlag { return err } if options.Create { return c.Create() } return nil }
// Run runs the ipfailover command. func Run(f *clientcmd.Factory, options *ipfailover.IPFailoverConfigCmdOptions, cmd *cobra.Command, args []string) error { name, err := getConfigurationName(args) if err != nil { return err } if len(options.ServiceAccount) == 0 { return fmt.Errorf("you must specify a service account for the ipfailover pod with --service-account, it cannot be blank") } options.Action.Bulk.Mapper = clientcmd.ResourceMapper(f) options.Action.Bulk.Op = configcmd.Create if err := ipfailover.ValidateCmdOptions(options); err != nil { return err } p, err := getPlugin(name, f, options) if err != nil { return err } list, err := p.Generate() if err != nil { return err } namespace, _, err := f.DefaultNamespace() if err != nil { return err } _, kClient, _, err := f.Clients() if err != nil { return fmt.Errorf("error getting client: %v", err) } if err := validateServiceAccount(kClient, namespace, options.ServiceAccount); err != nil { return fmt.Errorf("ipfailover could not be created; %v", err) } configList := []runtime.Object{ &kapi.ServiceAccount{ObjectMeta: kapi.ObjectMeta{Name: options.ServiceAccount}}, } list.Items = append(configList, list.Items...) if options.Action.ShouldPrint() { mapper, _ := f.Object(false) return cmdutil.VersionedPrintObject(f.PrintObject, cmd, mapper, options.Action.Out)(list) } if errs := options.Action.WithMessage(fmt.Sprintf("Creating IP failover %s", name), "created").Run(list, namespace); len(errs) > 0 { return cmdutil.ErrExit } return nil }
// Run runs the ipfailover command. func Run(f *clientcmd.Factory, options *ipfailover.IPFailoverConfigCmdOptions, cmd *cobra.Command, args []string) error { name, err := getConfigurationName(args) if err != nil { return err } options.Action.Bulk.Mapper = clientcmd.ResourceMapper(f) options.Action.Bulk.Op = configcmd.Create if err := ipfailover.ValidateCmdOptions(options); err != nil { return err } p, err := getPlugin(name, f, options) if err != nil { return err } list, err := p.Generate() if err != nil { return err } if options.Action.ShouldPrint() { mapper, _ := f.Object(false) return cmdutil.VersionedPrintObject(f.PrintObject, cmd, mapper, options.Action.Out)(list) } namespace, _, err := f.DefaultNamespace() if err != nil { return err } if errs := options.Action.WithMessage(fmt.Sprintf("Creating IP failover %s", name), "created").Run(list, namespace); len(errs) > 0 { return cmdutil.ErrExit } return nil }