move netbox feed to graph
diff --git a/Gopkg.lock b/Gopkg.lock
index cebc34e..ff902da 100644
--- a/Gopkg.lock
+++ b/Gopkg.lock
@@ -26,6 +26,14 @@
   version = "v9"
 
 [[projects]]
+  digest = "1:ffe9824d294da03b391f44e1ae8281281b4afc1bdaa9588c9097785e3af10cec"
+  name = "github.com/davecgh/go-spew"
+  packages = ["spew"]
+  pruneopts = "UT"
+  revision = "8991bc29aa16c548c550c7ff78260e27b9ab7c73"
+  version = "v1.1.1"
+
+[[projects]]
   branch = "master"
   digest = "1:08aeb20c1d146f9254126139f272865927b6db288145f88f0a3baacc24ddfa24"
   name = "github.com/digitalocean/go-netbox"
@@ -293,7 +301,9 @@
   analyzer-name = "dep"
   analyzer-version = 1
   input-imports = [
+    "github.com/davecgh/go-spew/spew",
     "github.com/digitalocean/go-netbox/netbox",
+    "github.com/digitalocean/go-netbox/netbox/client",
     "github.com/digitalocean/go-netbox/netbox/client/dcim",
     "github.com/golang/glog",
     "github.com/golang/protobuf/proto",
diff --git a/graph/graph.go b/graph/graph.go
index 35b1f23..1fdb5ab 100644
--- a/graph/graph.go
+++ b/graph/graph.go
@@ -1,10 +1,15 @@
 package graph
 
 import (
+	"context"
 	"fmt"
 
-	confpb "code.hackerspace.pl/q3k/topo/proto/config"
+	"github.com/davecgh/go-spew/spew"
+	"github.com/digitalocean/go-netbox/netbox/client"
+	"github.com/digitalocean/go-netbox/netbox/client/dcim"
 	"github.com/golang/glog"
+
+	confpb "code.hackerspace.pl/q3k/topo/proto/config"
 )
 
 type MachinePort struct {
@@ -60,6 +65,9 @@
 		if machinepb.Name == "" {
 			return fmt.Errorf("empty machine name")
 		}
+		if loadedMachines[machinepb.Name] {
+			return fmt.Errorf("duplicate machine name: %v", machinepb.Name)
+		}
 		machine, ok := g.Machines[machinepb.Name]
 		if !ok {
 			machine = &Machine{
@@ -81,6 +89,12 @@
 		if switchpb.Name == "" {
 			return fmt.Errorf("empty switch name")
 		}
+		if loadedSwitches[switchpb.Name] {
+			return fmt.Errorf("duplicate switch name: %v", switchpb.Name)
+		}
+		if loadedMachines[switchpb.Name] {
+			return fmt.Errorf("switch name collides with machine name: %v", switchpb.Name)
+		}
 		sw, ok := g.Switches[switchpb.Name]
 		if !ok {
 			sw = &Switch{
@@ -121,3 +135,20 @@
 	return nil
 
 }
+
+func (g *Graph) FeedFromNetbox(ctx context.Context, nb *client.NetBox) error {
+	for _, machine := range g.Machines {
+		req := &dcim.DcimInterfaceConnectionsListParams{
+			Device:  &machine.Name,
+			Context: ctx,
+		}
+		res, err := nb.Dcim.DcimInterfaceConnectionsList(req, nil)
+		if err != nil {
+			return fmt.Errorf("while querying information about %q: %v", machine.Name, err)
+		}
+		for _, connection := range res.Payload.Results {
+			glog.Info(spew.Sdump(connection))
+		}
+	}
+	return nil
+}
diff --git a/main.go b/main.go
index ce79ca7..b97e171 100644
--- a/main.go
+++ b/main.go
@@ -1,13 +1,12 @@
 package main
 
 import (
+	"context"
 	"flag"
 	"io/ioutil"
 
-	//"github.com/digitalocean/go-netbox/netbox"
-	//"github.com/digitalocean/go-netbox/netbox/client"
-	//"github.com/digitalocean/go-netbox/netbox/client/dcim"
-
+	"github.com/digitalocean/go-netbox/netbox"
+	"github.com/digitalocean/go-netbox/netbox/client"
 	"github.com/golang/glog"
 	"github.com/golang/protobuf/proto"
 
@@ -27,10 +26,12 @@
 
 func main() {
 	flag.StringVar(&flagConfigPath, "config_path", "./topo.pb.text", "Text proto configuration of Topo (per config.proto)")
-	flag.StringVar(&flagNetboxHost, "netbox_host", "nebtox.bgp.wtf", "Netbox host")
+	flag.StringVar(&flagNetboxHost, "netbox_host", "netbox.bgp.wtf", "Netbox host")
 	flag.StringVar(&flagNetboxAPIKey, "netbox_api_key", "", "Netbox API key")
 	flag.Parse()
 
+	ctx := context.Background()
+
 	data, err := ioutil.ReadFile(flagConfigPath)
 	if err != nil {
 		glog.Exitf("Could not read config: %v", err)
@@ -45,12 +46,10 @@
 		glog.Exitf("Initial config load failed: %v", err)
 	}
 
-	//client.DefaultSchemes = []string{"https"}
-	//nb := netbox.NewNetboxWithAPIKey(flagNetboxHost, flagNetboxAPIKey)
-	//req := &dcim.DcimInterfaceConnectionsListParams{
-	//	Device:  swag.String("bc01n01"),
-	//	Context: context.Background(),
-	//}
-	//res, err := nb.Dcim.DcimInterfaceConnectionsList(req, nil)
-	//glog.Infof("%+v, %v", res, err)
+	client.DefaultSchemes = []string{"https"}
+	nb := netbox.NewNetboxWithAPIKey(flagNetboxHost, flagNetboxAPIKey)
+	err = gr.FeedFromNetbox(ctx, nb)
+	if err != nil {
+		glog.Exitf("Initial netbox feed failed: %v", err)
+	}
 }