Skip to content

Commit

Permalink
chore: deprecate Interfaces and Routes APIs
Browse files Browse the repository at this point in the history
Fixes #4094

Deprecate old networkd APIs, `talosctl interfaces` and `talosctl routes`
now suggest different commands to be used to achieve same task.

TUI installer was updated to stop using Interfaces API.

Those APIs will be completely removed in 0.14.

Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
  • Loading branch information
smira committed Sep 27, 2021
1 parent cddcb96 commit b450b7c
Show file tree
Hide file tree
Showing 24 changed files with 175 additions and 325 deletions.
8 changes: 6 additions & 2 deletions api/network/network.proto
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,12 @@ import "common/common.proto";

// The network service definition.
service NetworkService {
rpc Routes(google.protobuf.Empty) returns (RoutesResponse);
rpc Interfaces(google.protobuf.Empty) returns (InterfacesResponse);
rpc Routes(google.protobuf.Empty) returns (RoutesResponse) {
option deprecated = true;
};
rpc Interfaces(google.protobuf.Empty) returns (InterfacesResponse) {
option deprecated = true;
};
}

enum AddressFamily {
Expand Down
51 changes: 6 additions & 45 deletions cmd/talosctl/cmd/talos/interfaces.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,65 +7,26 @@ package talos
import (
"context"
"fmt"
"os"
"text/tabwriter"

"github.com/spf13/cobra"
"google.golang.org/grpc"
"google.golang.org/grpc/peer"

"github.com/talos-systems/talos/pkg/cli"
networkapi "github.com/talos-systems/talos/pkg/machinery/api/network"
"github.com/talos-systems/talos/pkg/machinery/client"
)

// interfacesCmd represents the net interfaces command.
var interfacesCmd = &cobra.Command{
Use: "interfaces",
Short: "List network interfaces",
Long: ``,
Args: cobra.NoArgs,
Use: "interfaces",
Short: "List network interfaces",
Long: ``,
Args: cobra.NoArgs,
Hidden: true,
RunE: func(cmd *cobra.Command, args []string) error {
return WithClient(func(ctx context.Context, c *client.Client) error {
var remotePeer peer.Peer

resp, err := c.Interfaces(ctx, grpc.Peer(&remotePeer))
if err != nil {
if resp == nil {
return fmt.Errorf("error getting interfaces: %s", err)
}

cli.Warning("%s", err)
}

return intersRender(&remotePeer, resp)
return fmt.Errorf("`talosctl interfaces` is deprecated, please use `talosctl get addresses` and `talosctl get links` instead")
})
},
}

func intersRender(remotePeer *peer.Peer, resp *networkapi.InterfacesResponse) error {
w := tabwriter.NewWriter(os.Stdout, 0, 0, 3, ' ', 0)
fmt.Fprintln(w, "NODE\tINDEX\tNAME\tMAC\tMTU\tADDRESS")

defaultNode := client.AddrFromPeer(remotePeer)

for _, msg := range resp.Messages {
node := defaultNode

if msg.Metadata != nil {
node = msg.Metadata.Hostname
}

for _, netif := range msg.Interfaces {
for _, addr := range netif.Ipaddress {
fmt.Fprintf(w, "%s\t%d\t%s\t%s\t%d\t%s\n", node, netif.Index, netif.Name, netif.Hardwareaddr, netif.Mtu, addr)
}
}
}

return w.Flush()
}

func init() {
addCommand(interfacesCmd)
}
39 changes: 2 additions & 37 deletions cmd/talosctl/cmd/talos/routes.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,9 @@ package talos
import (
"context"
"fmt"
"os"
"text/tabwriter"

"github.com/spf13/cobra"
"google.golang.org/grpc"
"google.golang.org/grpc/peer"

"github.com/talos-systems/talos/pkg/cli"
networkapi "github.com/talos-systems/talos/pkg/machinery/api/network"
"github.com/talos-systems/talos/pkg/machinery/client"
)

Expand All @@ -26,43 +20,14 @@ var routesCmd = &cobra.Command{
Short: "List network routes",
Long: ``,
Args: cobra.NoArgs,
Hidden: true,
RunE: func(cmd *cobra.Command, args []string) error {
return WithClient(func(ctx context.Context, c *client.Client) error {
var remotePeer peer.Peer
resp, err := c.Routes(ctx, grpc.Peer(&remotePeer))
if err != nil {
if resp == nil {
return fmt.Errorf("error getting routes: %w", err)
}
cli.Warning("%s", err)
}

return routesRender(&remotePeer, resp)
return fmt.Errorf("`talosctl routes` is deprecated, please use `talosctl get routes` instead")
})
},
}

func routesRender(remotePeer *peer.Peer, resp *networkapi.RoutesResponse) error {
w := tabwriter.NewWriter(os.Stdout, 0, 0, 3, ' ', 0)
fmt.Fprintln(w, "NODE\tINTERFACE\tDESTINATION\tGATEWAY\tMETRIC")

defaultNode := client.AddrFromPeer(remotePeer)

for _, msg := range resp.Messages {
node := defaultNode

if msg.Metadata != nil {
node = msg.Metadata.Hostname
}

for _, route := range msg.Routes {
fmt.Fprintf(w, "%s\t%s\t%s\t%s\t%d\n", node, route.Interface, route.Destination, route.Gateway, route.Metric)
}
}

return w.Flush()
}

func init() {
addCommand(routesCmd)
}
2 changes: 2 additions & 0 deletions internal/app/networkd/pkg/server/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ import (
networkapi "github.com/talos-systems/talos/pkg/machinery/api/network"
)

// TODO: deprecated, to be removed in 0.14.

// NetworkServer implements NetworkService API.
type NetworkServer struct {
networkapi.UnimplementedNetworkServiceServer
Expand Down
4 changes: 2 additions & 2 deletions internal/app/networkd/pkg/server/server_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ func (suite *NetworkSuite) TestRoutes() {
suite.Assert().NoError(err)

nClient := networkapi.NewNetworkServiceClient(conn)
resp, err := nClient.Routes(context.Background(), &emptypb.Empty{})
resp, err := nClient.Routes(context.Background(), &emptypb.Empty{}) //nolint:staticcheck
suite.Assert().NoError(err)
suite.Assert().Greater(len(resp.Messages[0].Routes), 0)
}
Expand All @@ -76,7 +76,7 @@ func (suite *NetworkSuite) TestInterfaces() {
suite.Assert().NoError(err)

nClient := networkapi.NewNetworkServiceClient(conn)
resp, err := nClient.Interfaces(context.Background(), &emptypb.Empty{})
resp, err := nClient.Interfaces(context.Background(), &emptypb.Empty{}) //nolint:staticcheck
suite.Assert().NoError(err)
suite.Assert().Greater(len(resp.Messages[0].Interfaces), 0)
}
Expand Down
69 changes: 0 additions & 69 deletions internal/integration/api/network-interfaces.go

This file was deleted.

34 changes: 0 additions & 34 deletions internal/integration/cli/interfaces.go

This file was deleted.

36 changes: 0 additions & 36 deletions internal/integration/cli/routes.go

This file was deleted.

0 comments on commit b450b7c

Please sign in to comment.