Skip to content
Snippets Groups Projects
client.go 1.71 KiB
Newer Older
  • Learn to ignore specific revisions
  • Manuel Kieweg's avatar
    Manuel Kieweg committed
    package ciena
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    import (
    	"code.fbi.h-da.de/cocsn/gosdn/restconf/util"
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	apiclient "code.fbi.h-da.de/cocsn/swagger/apis/ciena/client/ciena_waveserver_interfaces"
    	yang "code.fbi.h-da.de/cocsn/yang-modules/generated/ciena"
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	"crypto/tls"
    	"github.com/go-openapi/runtime"
    	httptransport "github.com/go-openapi/runtime/client"
    	"github.com/go-openapi/strfmt"
    	"log"
    	"net/http"
    )
    
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    type WaveserverClient struct {
    	transport *runtime.ClientTransport
    	client    *apiclient.ClientService
    }
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    func NewWaveserverClient(endpoint, requestPrefix, username, password string) WaveserverClient {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	// create the transport
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	transport := httptransport.New(endpoint, requestPrefix+"/restconf", nil)
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	transport.Transport.(*http.Transport).TLSClientConfig = &tls.Config{InsecureSkipVerify: true}
    	transport.Debug = true
    	transport.DefaultMediaType = runtime.JSONMime
    
    	// create the API client, with the transport
    	client := apiclient.New(transport, strfmt.Default).(*apiclient.Client)
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	basicAuth := httptransport.BasicAuth(username, password)
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    	// authenticate client
    	transport.DefaultAuthentication = basicAuth
    
    	// change consumer to ygot unmashaler. Must be done here to avoid startup issues of go-openapi
    	buf := make([]byte, 0)
    	transport.Consumers[runtime.JSONMime] = util.YANGConsumer{Data: &buf}
    	// make the request to get all logical interfaces. nil params for defaults
    	_, err := client.GetDataWaveserverInterfacesLogicalInterface(nil)
    	if err != nil {
    		log.Fatal(err)
    	}
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	logicalInterface := yang.CienaWaveserverInterfaces_WaveserverInterfaces{}
    	if err = yang.Unmarshal(buf, &logicalInterface); err != nil {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		log.Fatal(err)
    	}
    	logicalInterface.IsYANGGoStruct()
    }
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    func (c WaveserverClient) GetConfig() string {
    	return "generic client, not implemented yet"
    }