-
Notifications
You must be signed in to change notification settings - Fork 2
Home
This is the GoLang API wrapper for Brocade Virtual Traffic Manager (vTM). This wrapper uses the REST API interface provided by the vTM, currently version 3.8.
Resource | Create | Read | Update | Delete |
---|---|---|---|---|
Monitor [1] | Y | Y | Y | Y |
Pool | Y | Y | Y | Y |
SSL Server Key | Y | Y | Y | Y |
Traffic IP Group | Y | Y | Y | Y |
Virtual Server | Y | Y | Y | Y |
[1] : Currently only HTTP monitoring is supported
import(
"github.com/sky-uk/go-brocade-vtm"
)
In order to get a client object authentication credentials needs to be provided. The REST API transport procotol is by default HTTPS and hence SSL encryption is used by default. Certificate handling behaviour can be controlled via the ignoreSSL flag.
client := brocadevtm.NewVTMClient(
serverUrl, // https://<server>:<port>
username,
password,
ignoreSSL, // if server should ignore SSL certificate checking
debug, // if enhanced trace log is needed...
header, // a set of header key/value pairs to use, not mandatory
)
In order to work with monitors, import the monitor package section:
import (
"github.com/sky-uk/go-brocade-vtm/api/monitor"
)
api := monitor.NewGetAll()
err := client.Do(api)
if err != nil {
log.Fatal(err)
}
monitors := api.GetResponse()
api := monitor.NewGetSingleMonitor( name )
err := client.Do(api)
if err != nil {
log.Fatal(err)
}
monitor := api.GetResponse()
newMonitor := monitor.Monitor{
...
}
api := monitor.NewCreate( name, newMonitor )
err := client.Do(api)
if err != nil {
log.Fatal(err)
}
monCreated := api.GetResponse()
updateMonitor := monitor.Monitor{
...
}
api := monitor.NewUpdate( name, updateMonitor )
err := client.Do(api)
if err != nil {
log.Fatal(err)
}
monUpdated := api.GetResponse()
api := monitor.NewDelete( name )
err := client.Do(api)
if err != nil {
log.Fatal(err)
} else {
log.Printf("Monitor %s deleted", name)
}
In order to work with pools, import the pool package section:
import (
"github.com/sky-uk/go-brocade-vtm/api/pool"
)
api := monitor.NewGetAll()
err := client.Do(api)
if err != nil {
log.Fatal(err)
}
// returns a pool.LBPoolList object
pools := api.GetResponse()
api := monitor.NewGetSingle(name)
err := client.Do(api)
if err != nil {
log.Fatal(err)
}
pool := api.GetResponse()
newPool := pool.Pool{
...
}
api := pool.NewCreate( name, newPool )
err := client.Do(api)
if err != nil {
log.Fatal(err)
}
poolCreated := api.GetResponse()
updatePool := pool.Pool{
...
}
api := pool.NewUpdate( name, updatePool )
err := client.Do(api)
if err != nil {
log.Fatal(err)
}
poolUpdated := api.GetResponse()
api := pool.NewDelete( name )
err := client.Do(api)
if err != nil {
log.Fatal(err)
} else {
log.Printf("Pool %s deleted", name)
}
In order to work with server keys, import the pool package section:
import (
"github.com/sky-uk/go-brocade-vtm/api/sslServerKey"
)
api := monitor.NewGetAll()
err := client.Do(api)
if err != nil {
log.Fatal(err)
}
// returns a sslServerKey.SSLServerKeysList object
keys := api.GetResponse()
api := sslServerKey.NewGetSingle(name)
err := client.Do(api)
if err != nil {
log.Fatal(err)
}
key := api.GetResponse()
newKey := sslServerKey.SSLServerKey{
...
}
api := sslServerKey.NewCreate( name, newKey )
err := client.Do(api)
if err != nil {
log.Fatal(err)
}
keyCreated := api.GetResponse()
updateKey := sslServerKey.SSLServerKey{
...
}
api := sslServerKey.NewUpdate( name, updateKey )
err := client.Do(api)
if err != nil {
log.Fatal(err)
}
keyUpdated := api.GetResponse()
api := sslServerKey.NewDelete( name )
err := client.Do(api)
if err != nil {
log.Fatal(err)
} else {
log.Printf("Server key %s deleted", name)
}
In order to work with traffic IP groups, import the traffic IP package section:
import (
"github.com/sky-uk/go-brocade-vtm/api/trafficIpGroups"
)
// to get the list of all traffic managers
api := trafficIpGroups.NewGetAllTrafficManagers()
err := client.Do(api)
if err != nil {
log.Fatal(err)
}
// returns TrafficManagerChildren object
managers := api.GetResponse()
api := trafficIpGroups.NewGetAll()
err := client.Do(api)
if err != nil {
log.Fatal(err)
}
// returns a trafficIpGroups.TrafficManagerChildren object
keys := api.GetResponse()
api := trafficIpGroups.NewGetSingle(name)
err := client.Do(api)
if err != nil {
log.Fatal(err)
}
tipg := api.GetResponse()
newTipg := trafficIpGroups.TrafficIPGroup{
...
}
api := trafficIpGroups.NewCreate( name, newTipg )
err := client.Do(api)
if err != nil {
log.Fatal(err)
}
tipgCreated := api.GetResponse()
updateTipg := trafficIpGroups.TrafficIPGroup{
...
}
api := trafficIpGroups.NewUpdate( name, updateTipg )
err := client.Do(api)
if err != nil {
log.Fatal(err)
}
tipgUpdated := api.GetResponse()
api := trafficIpGroups.NewDelete( name )
err := client.Do(api)
if err != nil {
log.Fatal(err)
} else {
log.Printf("Traffic IP group %s deleted", name)
}
In order to work with virtual servers, import the virtual server package section:
import (
"github.com/sky-uk/go-brocade-vtm/api/virtualserver"
)
api := virtualserver.NewGetAll()
err := client.Do(api)
if err != nil {
log.Fatal(err)
}
// returns a virtualserver.VirtualServersList object
keys := api.GetResponse()
api := virtualserver.NewGetSingle(name)
err := client.Do(api)
if err != nil {
log.Fatal(err)
}
vs := api.GetResponse()
newVS := virtualserver.VirtualServer{
...
}
api := virtualserver.NewCreate( name, newVS )
err := client.Do(api)
if err != nil {
log.Fatal(err)
}
vsCreated := api.GetResponse()
updateVS := virtualserver.VirtualServer{
...
}
api := virtualserver.NewUpdate( name, updateVS )
err := client.Do(api)
if err != nil {
log.Fatal(err)
}
vsUpdated := api.GetResponse()
api := virtualserver.NewDelete( name )
err := client.Do(api)
if err != nil {
log.Fatal(err)
} else {
log.Printf("Virtual server %s deleted", name)
}