✏️
GoでgRPCを使ってIOS XRにconfigを投入する
前回はgRPCを使ってIOS XRでshowコマンドを実行する方法を紹介した。
今回は、gRPCを使ってconfigを投入する方法を紹介する。
前回同様、ログイン情報をmetadataとしてコンテキストに埋め込む。
md := metadata.Pairs(
"username", "root",
"password", "password",
)
ctx := metadata.NewOutgoingContext(context.Background(), md)
また、投入するコマンドを文字列の配列として用意しておく
clis := [...]string{
"interface GigabitEthernet0/0/0/1",
"interface GigabitEthernet0/0/0/1 ipv4 address 172.16.1.254 255.255.255.0",
}
あとは、前回とclient
として作成する構造体が変わるだけで、
conn, _ := grpc.Dial("192.168.1.10:50051", grpc.WithInsecure())
client := dialin.NewGRPCConfigOperClient(conn)
用意したコマンドの数だけ投入してあげればよい
for _, cli := range clis {
reply, _ := client.CliConfig(ctx, &dialin.CliConfigArgs{Cli: cli})
if reply.Errors != "" {
fmt.Println(reply.Errors)
}
}
全体像は以下のようになる
package main
import (
"context"
"fmt"
"google.golang.org/grpc"
"google.golang.org/grpc/metadata"
dialin "github.com/cisco/bigmuddy-network-telemetry-proto/proto_go/mdt_grpc_dialin"
)
func main() {
md := metadata.Pairs(
"username", "root",
"password", "password",
)
clis := [...]string{
"interface GigabitEthernet0/0/0/1",
"interface GigabitEthernet0/0/0/1 ipv4 address 172.16.1.254 255.255.255.0",
}
conn, _ := grpc.Dial("192.168.1.10:50051", grpc.WithInsecure())
client := dialin.NewGRPCConfigOperClient(conn)
ctx := metadata.NewOutgoingContext(context.Background(), md)
for _, cli := range clis {
reply, _ := client.CliConfig(ctx, &dialin.CliConfigArgs{Cli: cli})
if reply.Errors != "" {
fmt.Println(reply.Errors)
}
}
}
これまで3回にわたり、gRPCによるIOS XRの操作を紹介したが、これでなんとなくgRPCの基礎がつかめたのではないかと思う。
Discussion