Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var CreateCmd = base.Cmd{ BaseCobraCommand: func(client hcapi2.Client) *cobra.Command { cmd := &cobra.Command{ Use: "create FLAGS", Short: "Create a server", } cmd.Flags().String("name", "", "Server name (required)") cmd.MarkFlagRequired("name") cmd.Flags().String("type", "", "Server type (ID or name) (required)") cmd.RegisterFlagCompletionFunc("type", cmpl.SuggestCandidatesF(client.ServerType().Names)) cmd.MarkFlagRequired("type") cmd.Flags().String("image", "", "Image (ID or name) (required)") cmd.RegisterFlagCompletionFunc("image", cmpl.SuggestCandidatesF(client.Image().Names)) cmd.MarkFlagRequired("image") cmd.Flags().String("location", "", "Location (ID or name)") cmd.RegisterFlagCompletionFunc("location", cmpl.SuggestCandidatesF(client.Location().Names)) cmd.Flags().String("datacenter", "", "Datacenter (ID or name)") cmd.RegisterFlagCompletionFunc("datacenter", cmpl.SuggestCandidatesF(client.Datacenter().Names)) cmd.Flags().StringSlice("ssh-key", nil, "ID or name of SSH key to inject (can be specified multiple times)") cmd.RegisterFlagCompletionFunc("ssh-key", cmpl.SuggestCandidatesF(client.SSHKey().Names)) cmd.Flags().StringToString("label", nil, "User-defined labels ('key=value') (can be specified multiple times)") cmd.Flags().StringArray("user-data-from-file", []string{}, "Read user data from specified file (use - to read from stdin)") cmd.Flags().Bool("start-after-create", true, "Start server right after creation") cmd.Flags().StringSlice("volume", nil, "ID or name of volume to attach (can be specified multiple times)") cmd.RegisterFlagCompletionFunc("volume", cmpl.SuggestCandidatesF(client.Volume().Names)) cmd.Flags().StringSlice("network", nil, "ID or name of network to attach the server to (can be specified multiple times)") cmd.RegisterFlagCompletionFunc("network", cmpl.SuggestCandidatesF(client.Network().Names)) cmd.Flags().StringSlice("firewall", nil, "ID or name of Firewall to attach the server to (can be specified multiple times)") cmd.RegisterFlagCompletionFunc("firewall", cmpl.SuggestCandidatesF(client.Firewall().Names)) cmd.Flags().Bool("automount", false, "Automount volumes after attach (default: false)") cmd.Flags().Bool("allow-deprecated-image", false, "Enable the use of deprecated images (default: false)") return cmd }, Run: func(ctx context.Context, client hcapi2.Client, actionWaiter state.ActionWaiter, cmd *cobra.Command, args []string) error { opts, err := createOptsFromFlags(ctx, client, cmd.Flags()) if err != nil { return err } result, _, err := client.Server().Create(ctx, opts) if err != nil { return err } if err := actionWaiter.ActionProgress(ctx, result.Action); err != nil { return err } if err := actionWaiter.WaitForActions(ctx, result.NextActions); err != nil { return err } fmt.Printf("Server %d created\n", result.Server.ID) fmt.Printf("IPv4: %s\n", result.Server.PublicNet.IPv4.IP.String()) if result.RootPassword != "" { fmt.Printf("Root password: %s\n", result.RootPassword) } return nil }, }
CreateCmd defines a command for creating a server.
View Source
var ListCmd = base.ListCmd{ ResourceNamePlural: "servers", DefaultColumns: []string{"id", "name", "status", "ipv4", "ipv6", "datacenter"}, Fetch: func(ctx context.Context, client hcapi2.Client, cmd *cobra.Command, listOpts hcloud.ListOpts) ([]interface{}, error) { servers, err := client.Server().AllWithOpts(ctx, hcloud.ServerListOpts{ListOpts: listOpts}) var resources []interface{} for _, r := range servers { resources = append(resources, r) } return resources, err }, OutputTable: func(client hcapi2.Client) *output.Table { return output.NewTable(). AddAllowedFields(hcloud.Server{}). AddFieldFn("ipv4", output.FieldFn(func(obj interface{}) string { server := obj.(*hcloud.Server) return server.PublicNet.IPv4.IP.String() })). AddFieldFn("ipv6", output.FieldFn(func(obj interface{}) string { server := obj.(*hcloud.Server) return server.PublicNet.IPv6.Network.String() })). AddFieldFn("included_traffic", output.FieldFn(func(obj interface{}) string { server := obj.(*hcloud.Server) return humanize.IBytes(server.IncludedTraffic) })). AddFieldFn("ingoing_traffic", output.FieldFn(func(obj interface{}) string { server := obj.(*hcloud.Server) return humanize.IBytes(server.IngoingTraffic) })). AddFieldFn("outgoing_traffic", output.FieldFn(func(obj interface{}) string { server := obj.(*hcloud.Server) return humanize.IBytes(server.OutgoingTraffic) })). AddFieldFn("datacenter", output.FieldFn(func(obj interface{}) string { server := obj.(*hcloud.Server) return server.Datacenter.Name })). AddFieldFn("location", output.FieldFn(func(obj interface{}) string { server := obj.(*hcloud.Server) return server.Datacenter.Location.Name })). AddFieldFn("labels", output.FieldFn(func(obj interface{}) string { server := obj.(*hcloud.Server) return util.LabelsToString(server.Labels) })). AddFieldFn("type", output.FieldFn(func(obj interface{}) string { server := obj.(*hcloud.Server) return server.ServerType.Name })). AddFieldFn("volumes", output.FieldFn(func(obj interface{}) string { server := obj.(*hcloud.Server) var volumes []string for _, volume := range server.Volumes { volumeID := strconv.Itoa(volume.ID) volumes = append(volumes, volumeID) } return strings.Join(volumes, ", ") })). AddFieldFn("private_net", output.FieldFn(func(obj interface{}) string { server := obj.(*hcloud.Server) var networks []string for _, network := range server.PrivateNet { networks = append(networks, client.Network().Name(network.Network.ID)) } return util.NA(strings.Join(networks, ", ")) })). AddFieldFn("protection", output.FieldFn(func(obj interface{}) string { server := obj.(*hcloud.Server) var protection []string if server.Protection.Delete { protection = append(protection, "delete") } if server.Protection.Rebuild { protection = append(protection, "rebuild") } return strings.Join(protection, ", ") })). AddFieldFn("created", output.FieldFn(func(obj interface{}) string { server := obj.(*hcloud.Server) return util.Datetime(server.Created) })) }, JSONSchema: func(resources []interface{}) interface{} { var serversSchema []schema.Server for _, resource := range resources { server := resource.(*hcloud.Server) serverSchema := schema.Server{ ID: server.ID, Name: server.Name, Status: string(server.Status), Created: server.Created, Datacenter: util.DatacenterToSchema(*server.Datacenter), ServerType: util.ServerTypeToSchema(*server.ServerType), PublicNet: schema.ServerPublicNet{ IPv4: schema.ServerPublicNetIPv4{ IP: server.PublicNet.IPv4.IP.String(), Blocked: server.PublicNet.IPv4.Blocked, DNSPtr: server.PublicNet.IPv4.DNSPtr, }, IPv6: schema.ServerPublicNetIPv6{ IP: server.PublicNet.IPv6.IP.String(), Blocked: server.PublicNet.IPv6.Blocked, }, }, RescueEnabled: server.RescueEnabled, BackupWindow: hcloud.String(server.BackupWindow), OutgoingTraffic: &server.OutgoingTraffic, IngoingTraffic: &server.IngoingTraffic, IncludedTraffic: server.IncludedTraffic, Protection: schema.ServerProtection{ Delete: server.Protection.Delete, Rebuild: server.Protection.Rebuild, }, Labels: server.Labels, PrimaryDiskSize: server.PrimaryDiskSize, } if server.Image != nil { serverImage := util.ImageToSchema(*server.Image) serverSchema.Image = &serverImage } if server.ISO != nil { serverISO := util.ISOToSchema(*server.ISO) serverSchema.ISO = &serverISO } for ip, dnsPTR := range server.PublicNet.IPv6.DNSPtr { serverSchema.PublicNet.IPv6.DNSPtr = append(serverSchema.PublicNet.IPv6.DNSPtr, schema.ServerPublicNetIPv6DNSPtr{ IP: ip, DNSPtr: dnsPTR, }) } for _, floatingIP := range server.PublicNet.FloatingIPs { serverSchema.PublicNet.FloatingIPs = append(serverSchema.PublicNet.FloatingIPs, floatingIP.ID) } for _, volume := range server.Volumes { serverSchema.Volumes = append(serverSchema.Volumes, volume.ID) } for _, privateNet := range server.PrivateNet { privateNetSchema := schema.ServerPrivateNet{ Network: privateNet.Network.ID, IP: privateNet.IP.String(), MACAddress: privateNet.MACAddress, } for _, aliasIP := range privateNet.Aliases { privateNetSchema.AliasIPs = append(privateNetSchema.AliasIPs, aliasIP.String()) } serverSchema.PrivateNet = append(serverSchema.PrivateNet, privateNetSchema) } serversSchema = append(serversSchema, serverSchema) } return serversSchema }, }
Functions ¶
Types ¶
This section is empty.
Source Files
¶
- attach_iso.go
- attach_to_network.go
- change_alias_ips.go
- change_type.go
- create.go
- create_image.go
- delete.go
- describe.go
- detach_from_network.go
- detach_iso.go
- disable_backup.go
- disable_protection.go
- disable_rescue.go
- enable_backup.go
- enable_protection.go
- enable_rescue.go
- ip.go
- labels.go
- list.go
- metrics.go
- poweroff.go
- poweron.go
- reboot.go
- rebuild.go
- request_console.go
- reset.go
- reset_password.go
- server.go
- set_rdns.go
- shutdown.go
- ssh.go
- update.go
Click to show internal directories.
Click to hide internal directories.