placementgroup

package
v1.59.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 5, 2026 License: MIT Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var CreateCmd = base.CreateCmd[*hcloud.PlacementGroup]{
	BaseCobraCommand: func(hcapi2.Client) *cobra.Command {
		cmd := &cobra.Command{
			Use:   "create [options] --name <name> --type <type>",
			Short: "Create a Placement Group",
		}
		cmd.Flags().String("name", "", "Name")
		_ = cmd.MarkFlagRequired("name")

		cmd.Flags().StringToString("label", nil, "User-defined labels ('key=value') (can be specified multiple times)")

		cmd.Flags().String("type", "", "Type of the Placement Group")
		_ = cmd.MarkFlagRequired("type")
		return cmd
	},
	Run: func(s state.State, cmd *cobra.Command, _ []string) (*hcloud.PlacementGroup, any, error) {
		name, _ := cmd.Flags().GetString("name")
		labels, _ := cmd.Flags().GetStringToString("label")
		placementGroupType, _ := cmd.Flags().GetString("type")

		opts := hcloud.PlacementGroupCreateOpts{
			Name:   name,
			Labels: labels,
			Type:   hcloud.PlacementGroupType(placementGroupType),
		}

		result, _, err := s.Client().PlacementGroup().Create(s, opts)
		if err != nil {
			return nil, nil, err
		}

		if result.Action != nil {
			if err := s.WaitForActions(s, cmd, result.Action); err != nil {
				return nil, nil, err
			}
		}

		cmd.Printf("Placement Group %d created\n", result.PlacementGroup.ID)

		return result.PlacementGroup, util.Wrap("placement_group", hcloud.SchemaFromPlacementGroup(result.PlacementGroup)), nil
	},
}
View Source
var DeleteCmd = base.DeleteCmd[*hcloud.PlacementGroup]{
	ResourceNameSingular: "Placement Group",
	ResourceNamePlural:   "Placement Groups",
	ShortDescription:     "Delete a Placement Group",
	NameSuggestions:      func(c hcapi2.Client) func() []string { return c.PlacementGroup().Names },
	Fetch: func(s state.State, _ *cobra.Command, idOrName string) (*hcloud.PlacementGroup, *hcloud.Response, error) {
		return s.Client().PlacementGroup().Get(s, idOrName)
	},
	Delete: func(s state.State, _ *cobra.Command, placementGroup *hcloud.PlacementGroup) (*hcloud.Action, error) {
		_, err := s.Client().PlacementGroup().Delete(s, placementGroup)
		return nil, err
	},
}
View Source
var DescribeCmd = base.DescribeCmd[*hcloud.PlacementGroup]{
	ResourceNameSingular: "Placement Group",
	ShortDescription:     "Describe a Placement Group",
	NameSuggestions:      func(c hcapi2.Client) func() []string { return c.PlacementGroup().Names },
	Fetch: func(s state.State, _ *cobra.Command, idOrName string) (*hcloud.PlacementGroup, any, error) {
		pg, _, err := s.Client().PlacementGroup().Get(s, idOrName)
		if err != nil {
			return nil, nil, err
		}
		return pg, hcloud.SchemaFromPlacementGroup(pg), nil
	},
	PrintText: func(s state.State, _ *cobra.Command, out io.Writer, placementGroup *hcloud.PlacementGroup) error {
		fmt.Fprintf(out, "%s", DescribePlacementGroup(s.Client(), placementGroup))
		return nil
	},
}
View Source
var LabelCmds = base.LabelCmds[*hcloud.PlacementGroup]{
	ResourceNameSingular:   "Placement Group",
	ShortDescriptionAdd:    "Add a label to a Placement Group",
	ShortDescriptionRemove: "Remove a label from a Placement Group",
	NameSuggestions:        func(c hcapi2.Client) func() []string { return c.PlacementGroup().Names },
	LabelKeySuggestions:    func(c hcapi2.Client) func(idOrName string) []string { return c.PlacementGroup().LabelKeys },
	Fetch: func(s state.State, idOrName string) (*hcloud.PlacementGroup, error) {
		placementGroup, _, err := s.Client().PlacementGroup().Get(s, idOrName)
		if err != nil {
			return nil, err
		}
		if placementGroup == nil {
			return nil, fmt.Errorf("Placement Group not found: %s", idOrName)
		}
		return placementGroup, nil
	},
	SetLabels: func(s state.State, placementGroup *hcloud.PlacementGroup, labels map[string]string) error {
		opts := hcloud.PlacementGroupUpdateOpts{
			Labels: labels,
		}
		_, _, err := s.Client().PlacementGroup().Update(s, placementGroup, opts)
		return err
	},
	GetLabels: func(placementGroup *hcloud.PlacementGroup) map[string]string {
		return placementGroup.Labels
	},
	GetIDOrName: func(placementGroup *hcloud.PlacementGroup) string {
		return strconv.FormatInt(placementGroup.ID, 10)
	},
}
View Source
var ListCmd = &base.ListCmd[*hcloud.PlacementGroup, schema.PlacementGroup]{
	ResourceNamePlural: "Placement Groups",
	JSONKeyGetByName:   "placement_groups",
	DefaultColumns:     []string{"id", "name", "servers", "type", "age"},
	SortOption:         config.OptionSortPlacementGroup,

	Fetch: func(s state.State, _ *pflag.FlagSet, listOpts hcloud.ListOpts, sorts []string) ([]*hcloud.PlacementGroup, error) {
		opts := hcloud.PlacementGroupListOpts{ListOpts: listOpts}
		if len(sorts) > 0 {
			opts.Sort = sorts
		}
		return s.Client().PlacementGroup().AllWithOpts(s, opts)
	},

	OutputTable: func(t *output.Table[*hcloud.PlacementGroup], _ hcapi2.Client) {
		t.
			AddAllowedFields(&hcloud.PlacementGroup{}).
			AddFieldFn("servers", func(placementGroup *hcloud.PlacementGroup) string {
				count := len(placementGroup.Servers)
				if count == 1 {
					return fmt.Sprintf("%d server", count)
				}
				return fmt.Sprintf("%d servers", count)
			}).
			AddFieldFn("created", func(placementGroup *hcloud.PlacementGroup) string {
				return util.Datetime(placementGroup.Created)
			}).
			AddFieldFn("age", func(placementGroup *hcloud.PlacementGroup) string {
				return util.Age(placementGroup.Created, time.Now())
			})
	},

	Schema: hcloud.SchemaFromPlacementGroup,
}
View Source
var UpdateCmd = base.UpdateCmd[*hcloud.PlacementGroup]{
	ResourceNameSingular: "Placement Group",
	ShortDescription:     "Update a Placement Group",
	NameSuggestions:      func(c hcapi2.Client) func() []string { return c.PlacementGroup().Names },
	Fetch: func(s state.State, _ *cobra.Command, idOrName string) (*hcloud.PlacementGroup, *hcloud.Response, error) {
		return s.Client().PlacementGroup().Get(s, idOrName)
	},
	DefineFlags: func(cmd *cobra.Command) {
		cmd.Flags().String("name", "", "Placement Group name")
	},
	Update: func(s state.State, _ *cobra.Command, placementGroup *hcloud.PlacementGroup, flags map[string]pflag.Value) error {
		updOpts := hcloud.PlacementGroupUpdateOpts{
			Name: flags["name"].String(),
		}
		_, _, err := s.Client().PlacementGroup().Update(s, placementGroup, updOpts)
		if err != nil {
			return err
		}
		return nil
	},
}

Functions

func DescribePlacementGroup added in v1.56.0

func DescribePlacementGroup(client hcapi2.Client, placementGroup *hcloud.PlacementGroup) string

func NewCommand

func NewCommand(s state.State) *cobra.Command

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL