Skip to content
Snippets Groups Projects
Commit 64102ce4 authored by Manuel Kieweg's avatar Manuel Kieweg
Browse files

Merge branch '26-proper-io-buffer-for-mcp-client' into 'develop'

Resolve "Proper IO Buffer for MCP Client"

See merge request cocsn/gosdn!28
parents 68888f89 bea49da9
No related branches found
No related tags found
2 merge requests!28Resolve "Proper IO Buffer for MCP Client",!18Develop
...@@ -58,7 +58,7 @@ func StartUp(socket, filename string) { ...@@ -58,7 +58,7 @@ func StartUp(socket, filename string) {
log.Info("Starting my ducks") log.Info("Starting my ducks")
// Init the Core // Init the Core
core := Core{ core := Core{
clients: make(map[string]interfaces.Client, 0), clients: make(map[string]interfaces.Client),
database: database.Database{}, database: database.Database{},
} }
core.Init(socket, filename) core.Init(socket, filename)
......
package ciena package ciena
import ( import (
"bytes"
"code.fbi.h-da.de/cocsn/gosdn/database" "code.fbi.h-da.de/cocsn/gosdn/database"
"code.fbi.h-da.de/cocsn/gosdn/log"
"code.fbi.h-da.de/cocsn/gosdn/restconf/util" "code.fbi.h-da.de/cocsn/gosdn/restconf/util"
apiclient "code.fbi.h-da.de/cocsn/swagger/apis/mcp/client" apiclient "code.fbi.h-da.de/cocsn/swagger/apis/mcp/client"
"crypto/tls" "crypto/tls"
...@@ -16,7 +18,7 @@ type MCPClient struct { ...@@ -16,7 +18,7 @@ type MCPClient struct {
transport *httptransport.Runtime transport *httptransport.Runtime
client *apiclient.ServiceTopologyTAPI client *apiclient.ServiceTopologyTAPI
database *database.Database database *database.Database
buf *[]byte buffer *bytes.Buffer
} }
func (c MCPClient) GetConfig() string { func (c MCPClient) GetConfig() string {
...@@ -25,7 +27,7 @@ func (c MCPClient) GetConfig() string { ...@@ -25,7 +27,7 @@ func (c MCPClient) GetConfig() string {
} }
//NewMCPClient creates a client //NewMCPClient creates a client
func NewMCPClient(endpoint, username, password string, database *database.Database) MCPClient { func NewMCPClient(endpoint, username, password string, database *database.Database) *MCPClient {
// create the transport // create the transport
transport := httptransport.New(endpoint, "/", nil) transport := httptransport.New(endpoint, "/", nil)
transport.Transport.(*http.Transport).TLSClientConfig = &tls.Config{InsecureSkipVerify: true} transport.Transport.(*http.Transport).TLSClientConfig = &tls.Config{InsecureSkipVerify: true}
...@@ -36,37 +38,37 @@ func NewMCPClient(endpoint, username, password string, database *database.Databa ...@@ -36,37 +38,37 @@ func NewMCPClient(endpoint, username, password string, database *database.Databa
transport.DefaultAuthentication = basicAuth transport.DefaultAuthentication = basicAuth
client := apiclient.New(transport, strfmt.Default) client := apiclient.New(transport, strfmt.Default)
buf := make([]byte, 0) buffer := new(bytes.Buffer)
transport.Consumers[runtime.JSONMime] = util.YANGConsumer{Data: &buf} transport.Consumers[runtime.JSONMime] = util.YANGConsumer{Data: buffer}
return MCPClient{ return &MCPClient{
transport: transport, transport: transport,
client: client, client: client,
database: database, database: database,
buf: &buf, buffer: buffer,
} }
} }
func (c *MCPClient) GetConnections() error { func (c *MCPClient) GetConnections() error {
c.buf = nil defer c.buffer.Reset()
_, err := c.client.TapiConnectivityCore.GetTapiCoreContextConnection(nil) _, err := c.client.TapiConnectivityCore.GetTapiCoreContextConnection(nil)
c.database.StoreConnections(string(*c.buf)) c.database.StoreConnections(c.buffer.String())
c.buf = nil log.Debug(c.buffer.String())
return err return err
} }
func (c *MCPClient) GetNodes() error { func (c *MCPClient) GetNodes() error {
c.buf = nil defer c.buffer.Reset()
_, err := c.client.TapiTopologyCore.GetTapiCoreContextTopologyMcpBaseTopologyNode(nil) _, err := c.client.TapiTopologyCore.GetTapiCoreContextTopologyMcpBaseTopologyNode(nil)
c.database.StoreNodes(string(*c.buf)) c.database.StoreNodes(c.buffer.String())
c.buf = nil log.Debug(c.buffer.String())
return err return err
} }
func (c *MCPClient) GetNodeEdgePoints() error { func (c *MCPClient) GetNodeEdgePoints() error {
c.buf = nil defer c.buffer.Reset()
_, err := c.client.TapiTopologyCore.GetTapiCoreContextTopologyMcpBaseTopologyNodeEdgePoint(nil) _, err := c.client.TapiTopologyCore.GetTapiCoreContextTopologyMcpBaseTopologyNodeEdgePoint(nil)
c.database.StoreNodeEdgePoints(string(*c.buf)) c.database.StoreNodeEdgePoints(c.buffer.String())
c.buf = nil log.Debug(c.buffer.String())
return err return err
} }
package util package util
import ( import (
"bytes"
"io" "io"
"io/ioutil"
) )
type YANGConsumer struct { type YANGConsumer struct {
Data *[]byte Data *bytes.Buffer
} }
func (yc YANGConsumer)Consume(reader io.Reader, _ interface{}) error { func (yc YANGConsumer)Consume(reader io.Reader, _ interface{}) error {
var err error = nil _,err := yc.Data.ReadFrom(reader)
*yc.Data, err = ioutil.ReadAll(reader)
return err return err
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment