Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var AssignCommand = base.Cmd{ BaseCobraCommand: func(client hcapi2.Client) *cobra.Command { return &cobra.Command{ Use: "assign [FLAGS] FLOATINGIP SERVER", Short: "Assign a Floating IP to a server", Args: cobra.ExactArgs(2), ValidArgsFunction: cmpl.SuggestArgs( cmpl.SuggestCandidatesF(client.FloatingIP().Names), cmpl.SuggestCandidatesF(client.Server().Names), ), TraverseChildren: true, DisableFlagsInUseLine: true, } }, Run: func(ctx context.Context, client hcapi2.Client, waiter state.ActionWaiter, cmd *cobra.Command, args []string) error { idOrName := args[0] floatingIP, _, err := client.FloatingIP().Get(ctx, idOrName) if err != nil { return err } if floatingIP == nil { return fmt.Errorf("Floating IP not found: %v", idOrName) } serverIDOrName := args[1] server, _, err := client.Server().Get(ctx, serverIDOrName) if err != nil { return err } if server == nil { return fmt.Errorf("server not found: %s", serverIDOrName) } action, _, err := client.FloatingIP().Assign(ctx, floatingIP, server) if err != nil { return err } if err := waiter.ActionProgress(ctx, action); err != nil { return err } fmt.Printf("Floating IP %d assigned to server %d\n", floatingIP.ID, server.ID) return nil }, }
View Source
var CreateCommand = base.Cmd{ BaseCobraCommand: func(client hcapi2.Client) *cobra.Command { cmd := &cobra.Command{ Use: "create FLAGS", Short: "Create a Floating IP", Args: cobra.NoArgs, TraverseChildren: true, DisableFlagsInUseLine: true, } cmd.Flags().String("type", "", "Type (ipv4 or ipv6) (required)") cmd.RegisterFlagCompletionFunc("type", cmpl.SuggestCandidates("ipv4", "ipv6")) cmd.MarkFlagRequired("type") cmd.Flags().String("description", "", "Description") cmd.Flags().String("name", "", "Name") cmd.Flags().String("home-location", "", "Home location") cmd.RegisterFlagCompletionFunc("home-location", cmpl.SuggestCandidatesF(client.Location().Names)) cmd.Flags().String("server", "", "Server to assign Floating IP to") cmd.RegisterFlagCompletionFunc("server", cmpl.SuggestCandidatesF(client.Server().Names)) cmd.Flags().StringToString("label", nil, "User-defined labels ('key=value') (can be specified multiple times)") return cmd }, Run: func(ctx context.Context, client hcapi2.Client, waiter state.ActionWaiter, cmd *cobra.Command, args []string) error { typ, _ := cmd.Flags().GetString("type") if typ == "" { return errors.New("type is required") } homeLocation, _ := cmd.Flags().GetString("home-location") server, _ := cmd.Flags().GetString("server") if homeLocation == "" && server == "" { return errors.New("one of --home-location or --server is required") } name, _ := cmd.Flags().GetString("name") description, _ := cmd.Flags().GetString("description") serverNameOrID, _ := cmd.Flags().GetString("server") labels, _ := cmd.Flags().GetStringToString("label") opts := hcloud.FloatingIPCreateOpts{ Type: hcloud.FloatingIPType(typ), Description: &description, Labels: labels, } if name != "" { opts.Name = &name } if homeLocation != "" { opts.HomeLocation = &hcloud.Location{Name: homeLocation} } if serverNameOrID != "" { server, _, err := client.Server().Get(ctx, serverNameOrID) if err != nil { return err } if server == nil { return fmt.Errorf("server not found: %s", serverNameOrID) } opts.Server = server } result, _, err := client.FloatingIP().Create(ctx, opts) if err != nil { return err } fmt.Printf("Floating IP %d created\n", result.FloatingIP.ID) return nil }, }
View Source
var DisableProtectionCommand = base.Cmd{ BaseCobraCommand: func(client hcapi2.Client) *cobra.Command { return &cobra.Command{ Use: "disable-protection [FLAGS] FLOATINGIP PROTECTIONLEVEL [PROTECTIONLEVEL...]", Short: "Disable resource protection for a Floating IP", Args: cobra.MinimumNArgs(2), ValidArgsFunction: cmpl.SuggestArgs( cmpl.SuggestCandidatesF(client.FloatingIP().Names), cmpl.SuggestCandidates("delete"), ), TraverseChildren: true, DisableFlagsInUseLine: true, } }, Run: func(ctx context.Context, client hcapi2.Client, waiter state.ActionWaiter, cmd *cobra.Command, args []string) error { idOrName := args[0] floatingIP, _, err := client.FloatingIP().Get(ctx, idOrName) if err != nil { return err } if floatingIP == nil { return fmt.Errorf("Floating IP not found: %v", idOrName) } var unknown []string opts := hcloud.FloatingIPChangeProtectionOpts{} for _, arg := range args[1:] { switch strings.ToLower(arg) { case "delete": opts.Delete = hcloud.Bool(false) default: unknown = append(unknown, arg) } } if len(unknown) > 0 { return fmt.Errorf("unknown protection level: %s", strings.Join(unknown, ", ")) } action, _, err := client.FloatingIP().ChangeProtection(ctx, floatingIP, opts) if err != nil { return err } if err := waiter.ActionProgress(ctx, action); err != nil { return err } fmt.Printf("Resource protection disabled for Floating IP %d\n", floatingIP.ID) return nil }, }
View Source
var EnableProtectionCommand = base.Cmd{ BaseCobraCommand: func(client hcapi2.Client) *cobra.Command { return &cobra.Command{ Use: "enable-protection [FLAGS] FLOATINGIP PROTECTIONLEVEL [PROTECTIONLEVEL...]", Short: "Enable resource protection for a Floating IP", Args: cobra.MinimumNArgs(2), ValidArgsFunction: cmpl.SuggestArgs( cmpl.SuggestCandidatesF(client.FloatingIP().Names), cmpl.SuggestCandidates("delete"), ), TraverseChildren: true, DisableFlagsInUseLine: true, } }, Run: func(ctx context.Context, client hcapi2.Client, waiter state.ActionWaiter, cmd *cobra.Command, args []string) error { idOrName := args[0] floatingIP, _, err := client.FloatingIP().Get(ctx, idOrName) if err != nil { return err } if floatingIP == nil { return fmt.Errorf("Floating IP not found: %v", idOrName) } var unknown []string opts := hcloud.FloatingIPChangeProtectionOpts{} for _, arg := range args[1:] { switch strings.ToLower(arg) { case "delete": opts.Delete = hcloud.Bool(true) default: unknown = append(unknown, arg) } } if len(unknown) > 0 { return fmt.Errorf("unknown protection level: %s", strings.Join(unknown, ", ")) } action, _, err := client.FloatingIP().ChangeProtection(ctx, floatingIP, opts) if err != nil { return err } if err := waiter.ActionProgress(ctx, action); err != nil { return err } fmt.Printf("Resource protection enabled for Floating IP %d\n", floatingIP.ID) return nil }, }
View Source
var UnassignCommand = base.Cmd{ BaseCobraCommand: func(client hcapi2.Client) *cobra.Command { return &cobra.Command{ Use: "unassign [FLAGS] FLOATINGIP", Short: "Unassign a Floating IP", Args: cobra.ExactArgs(1), ValidArgsFunction: cmpl.SuggestArgs(cmpl.SuggestCandidatesF(client.FloatingIP().Names)), TraverseChildren: true, DisableFlagsInUseLine: true, } }, Run: func(ctx context.Context, client hcapi2.Client, waiter state.ActionWaiter, cmd *cobra.Command, args []string) error { idOrName := args[0] floatingIP, _, err := client.FloatingIP().Get(ctx, idOrName) if err != nil { return err } if floatingIP == nil { return fmt.Errorf("Floating IP not found: %v", idOrName) } action, _, err := client.FloatingIP().Unassign(ctx, floatingIP) if err != nil { return err } if err := waiter.ActionProgress(ctx, action); err != nil { return err } fmt.Printf("Floating IP %d unassigned\n", floatingIP.ID) return nil }, }
Functions ¶
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.