From 44968a9d6fed858890fcb835227f84020ffee5c9 Mon Sep 17 00:00:00 2001 From: Kalle Carlbark Date: Tue, 10 Sep 2019 22:32:20 +0200 Subject: [PATCH] Netbox librarararary. --- netbox.go | 5 +++++ netbox_interfaces.go | 37 +++++++++++++++++++++++++++++++++++-- netboxclient.go | 25 ------------------------- 3 files changed, 40 insertions(+), 27 deletions(-) create mode 100644 netbox.go delete mode 100644 netboxclient.go diff --git a/netbox.go b/netbox.go new file mode 100644 index 0000000..46f9ed5 --- /dev/null +++ b/netbox.go @@ -0,0 +1,5 @@ +package netboxclient + +type NetBox struct { + RootURL string +} diff --git a/netbox_interfaces.go b/netbox_interfaces.go index 96e1454..4266270 100644 --- a/netbox_interfaces.go +++ b/netbox_interfaces.go @@ -1,4 +1,12 @@ -package main +package netboxclient + +import ( + "bytes" + "encoding/json" + "github.com/pkg/errors" + "net/http" + "time" +) type dcim_interfaces_create struct { Device int `json:"device"` @@ -71,6 +79,31 @@ type dcim_interfaces_list struct { } `json:"results"` } -func (i *NbInterfaces) CreateInterface() { +func (i *dcim_interfaces_create) CreateInterface(n *NetBox) error { + interfaceData, err := json.Marshal(i) + if err != nil { + return err + } + timeout := time.Duration(60 * time.Second) + client := &http.Client{ + Timeout: timeout, + } + request, err := http.NewRequest("POST", n.RootURL+"/dcim/interfaces/", bytes.NewBuffer(interfaceData)) + if err != nil { + return err + } + request.Header.Add("Content-Type", "application/json") + response, err := client.Do(request) + if err != nil { + return err + } + if response.StatusCode == http.StatusCreated { + return nil + } else { + return errors.Errorf("Response was: %d\n", response.StatusCode) + } + return nil +} +func (i *dcim_interface_list) ListInterface(n *NetBox) error { diff --git a/netboxclient.go b/netboxclient.go deleted file mode 100644 index 56c28c4..0000000 --- a/netboxclient.go +++ /dev/null @@ -1,25 +0,0 @@ -package main - -import ( - "fmt" - "net/http" - "net/url" - "io/ioutil" -) - -type DeviceInterface struct { - Id int `json:"id"` - Device int `json:"device"` - Name string `json:"name"` - Type int `json:"type"` - FormFactor string `json:"form_factor"` - Enabled bool `json:"enabled"` - Lag int `json:"lag"` - Mtu int `json:"mtu"` - MacAddress string `json:"mac_address"` - -func main() { - -} - -func (i * InterfacesCreate