Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var DescribeCmd = base.DescribeCmd{ ResourceNameSingular: "network", ShortDescription: "Describe a network", JSONKeyGetByID: "network", JSONKeyGetByName: "networks", NameSuggestions: func(c hcapi2.Client) func() []string { return c.Network().Names }, Fetch: func(ctx context.Context, client hcapi2.Client, cmd *cobra.Command, idOrName string) (interface{}, *hcloud.Response, error) { return client.Network().Get(ctx, idOrName) }, PrintText: func(ctx context.Context, client hcapi2.Client, cmd *cobra.Command, resource interface{}) error { network := resource.(*hcloud.Network) fmt.Printf("ID:\t\t%d\n", network.ID) fmt.Printf("Name:\t\t%s\n", network.Name) fmt.Printf("Created:\t%s (%s)\n", util.Datetime(network.Created), humanize.Time(network.Created)) fmt.Printf("IP Range:\t%s\n", network.IPRange.String()) fmt.Printf("Subnets:\n") if len(network.Subnets) == 0 { fmt.Print(" No subnets\n") } else { for _, subnet := range network.Subnets { fmt.Printf(" - Type:\t\t%s\n", subnet.Type) fmt.Printf(" Network Zone:\t%s\n", subnet.NetworkZone) fmt.Printf(" IP Range:\t\t%s\n", subnet.IPRange.String()) fmt.Printf(" Gateway:\t\t%s\n", subnet.Gateway.String()) if subnet.Type == hcloud.NetworkSubnetTypeVSwitch { fmt.Printf(" vSwitch ID:\t\t%d\n", subnet.VSwitchID) } } } fmt.Printf("Routes:\n") if len(network.Routes) == 0 { fmt.Print(" No routes\n") } else { for _, route := range network.Routes { fmt.Printf(" - Destination:\t%s\n", route.Destination.String()) fmt.Printf(" Gateway:\t\t%s\n", route.Gateway.String()) } } fmt.Printf("Protection:\n") fmt.Printf(" Delete:\t%s\n", util.YesNo(network.Protection.Delete)) fmt.Print("Labels:\n") if len(network.Labels) == 0 { fmt.Print(" No labels\n") } else { for key, value := range network.Labels { fmt.Printf(" %s: %s\n", key, value) } } return nil }, }
DescribeCmd defines a command for describing a network.
View Source
var ListCmd = base.ListCmd{ ResourceNamePlural: "networks", DefaultColumns: []string{"id", "name", "ip_range", "servers"}, Fetch: func(ctx context.Context, client hcapi2.Client, cmd *cobra.Command, listOpts hcloud.ListOpts, sorts []string) ([]interface{}, error) { opts := hcloud.NetworkListOpts{ListOpts: listOpts} if len(sorts) > 0 { opts.Sort = sorts } networks, err := client.Network().AllWithOpts(ctx, opts) var resources []interface{} for _, n := range networks { resources = append(resources, n) } return resources, err }, OutputTable: func(_ hcapi2.Client) *output.Table { return output.NewTable(). AddAllowedFields(hcloud.Network{}). AddFieldFn("servers", output.FieldFn(func(obj interface{}) string { network := obj.(*hcloud.Network) serverCount := len(network.Servers) if serverCount <= 1 { return fmt.Sprintf("%v server", serverCount) } return fmt.Sprintf("%v servers", serverCount) })). AddFieldFn("ip_range", output.FieldFn(func(obj interface{}) string { network := obj.(*hcloud.Network) return network.IPRange.String() })). AddFieldFn("labels", output.FieldFn(func(obj interface{}) string { network := obj.(*hcloud.Network) return util.LabelsToString(network.Labels) })). AddFieldFn("protection", output.FieldFn(func(obj interface{}) string { network := obj.(*hcloud.Network) var protection []string if network.Protection.Delete { protection = append(protection, "delete") } return strings.Join(protection, ", ") })). AddFieldFn("created", output.FieldFn(func(obj interface{}) string { network := obj.(*hcloud.Network) return util.Datetime(network.Created) })) }, JSONSchema: func(resources []interface{}) interface{} { var networkSchemas []schema.Network for _, resource := range resources { network := resource.(*hcloud.Network) networkSchema := schema.Network{ ID: network.ID, Name: network.Name, IPRange: network.IPRange.String(), Protection: schema.NetworkProtection{Delete: network.Protection.Delete}, Created: network.Created, Labels: network.Labels, } for _, subnet := range network.Subnets { networkSchema.Subnets = append(networkSchema.Subnets, schema.NetworkSubnet{ Type: string(subnet.Type), IPRange: subnet.IPRange.String(), NetworkZone: string(subnet.NetworkZone), Gateway: subnet.Gateway.String(), }) } for _, route := range network.Routes { networkSchema.Routes = append(networkSchema.Routes, schema.NetworkRoute{ Destination: route.Destination.String(), Gateway: route.Gateway.String(), }) } for _, server := range network.Servers { networkSchema.Servers = append(networkSchema.Servers, server.ID) } networkSchemas = append(networkSchemas, networkSchema) } return networkSchemas }, }
Functions ¶
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.