bgpwtf/cccampix: draw the rest of the fucking owl
Change-Id: I49fd5906e69512e8f2d414f406edc0179522f225
diff --git a/bgpwtf/cccampix/verifier/processor_peeringdb.go b/bgpwtf/cccampix/verifier/processor_peeringdb.go
new file mode 100644
index 0000000..8f29110
--- /dev/null
+++ b/bgpwtf/cccampix/verifier/processor_peeringdb.go
@@ -0,0 +1,58 @@
+package main
+
+import (
+ "context"
+ "fmt"
+ "time"
+
+ "code.hackerspace.pl/hscloud/go/pki"
+ "google.golang.org/grpc"
+
+ pb "code.hackerspace.pl/hscloud/bgpwtf/cccampix/proto"
+ "code.hackerspace.pl/hscloud/bgpwtf/cccampix/verifier/model"
+)
+
+type peeringDB struct {
+ pdb pb.PeeringDBProxyClient
+}
+
+func newPeeringDB(addr string) (processor, error) {
+ conn, err := grpc.Dial(addr, pki.WithClientHSPKI())
+ if err != nil {
+ return nil, fmt.Errorf("could not connect to peeringdb service: %v", err)
+ }
+
+ return &peeringDB{
+ pdb: pb.NewPeeringDBProxyClient(conn),
+ }, nil
+}
+
+func (p *peeringDB) Name() string {
+ return "PeeringDB"
+}
+
+func (p *peeringDB) NextRun(now time.Time) time.Time {
+ return now.Add(5 * time.Minute)
+}
+
+func (p *peeringDB) RunAll(ctx context.Context, m model.Model) error {
+ id := int64(2641)
+ req := &pb.GetIXMembersRequest{
+ Id: id,
+ }
+
+ res, err := p.pdb.GetIXMembers(ctx, req)
+ if err != nil {
+ return fmt.Errorf("GetIXMembers(%d): %v", id, err)
+ }
+
+ err = m.RecordPeeringDBPeers(ctx, res.Members)
+ if err != nil {
+ return fmt.Errorf("RecordPeeringDBPeers: %v", err)
+ }
+ err = m.RecordPeeringDBPeerRouters(ctx, res.Members)
+ if err != nil {
+ return fmt.Errorf("RecordPeeringDBPeerRouters: %v", err)
+ }
+ return nil
+}