Documentation
¶
Overview ¶
Package nd is a Cisco Nexus Dashboard REST client library for Go.
Index ¶
- Constants
- func BackoffDelayFactor(x float64) func(*Client)
- func BackoffMaxDelay(x int) func(*Client)
- func BackoffMinDelay(x int) func(*Client)
- func MaxRetries(x int) func(*Client)
- func NoLogPayload(req *Req)
- func RemoveContentType(req *Req)
- func RequestTimeout(x time.Duration) func(*Client)
- type Body
- type Client
- func (client *Client) Authenticate() error
- func (client *Client) Backoff(attempts int) bool
- func (client *Client) Delete(path string, data string, mods ...func(*Req)) (Res, error)
- func (client *Client) Do(req Req) (Res, error)
- func (client *Client) DoRaw(req Req) ([]byte, error)
- func (client *Client) Get(path string, mods ...func(*Req)) (Res, error)
- func (client *Client) GetRawJson(path string, mods ...func(*Req)) ([]byte, error)
- func (client *Client) Login() error
- func (client Client) NewReq(method, uri string, body io.Reader, mods ...func(*Req)) Req
- func (client *Client) Post(path, data string, mods ...func(*Req)) (Res, error)
- func (client *Client) Put(path, data string, mods ...func(*Req)) (Res, error)
- type Req
- type Res
Constants ¶
const DefaultBackoffDelayFactor float64 = 3
const DefaultBackoffMaxDelay int = 60
const DefaultBackoffMinDelay int = 2
const DefaultMaxRetries int = 3
Variables ¶
This section is empty.
Functions ¶
func BackoffDelayFactor ¶
BackoffDelayFactor modifies the backoff delay factor from the default of 3.
func BackoffMaxDelay ¶
BackoffMaxDelay modifies the maximum delay between two retries from the default of 60.
func BackoffMinDelay ¶
BackoffMinDelay modifies the minimum delay between two retries from the default of 2.
func MaxRetries ¶
MaxRetries modifies the maximum number of retries from the default of 3.
func NoLogPayload ¶
func NoLogPayload(req *Req)
NoLogPayload prevents logging of payloads. Primarily used by the Login and Refresh methods where this could expose secrets.
func RemoveContentType ¶ added in v0.1.2
func RemoveContentType(req *Req)
func RequestTimeout ¶
RequestTimeout modifies the HTTP request timeout from the default of 60 seconds.
Types ¶
type Body ¶
type Body struct {
Str string
}
Body wraps SJSON for building JSON body strings. Usage example:
Body{}.Set("name", "ABC").Str
type Client ¶
type Client struct {
// HttpClient is the *http.Client used for API requests.
HttpClient *http.Client
// Url is the Nexus Dashboard IP or hostname, e.g. https://10.0.0.1:443 (port is optional).
Url string
// BasePath is the Nexus Dashboard URL prefix to use, e.g. '/appcenter/cisco/ndfc/api/v1'.
BasePath string
// Token is the current authentication token
Token string
// Usr is the Nexus Dashboard username.
Usr string
// Pwd is the Nexus Dashboard password.
Pwd string
// Domain is the Nexus Dashboard domain.
Domain string
// Insecure determines if insecure https connections are allowed.
Insecure bool
// Maximum number of retries
MaxRetries int
// Minimum delay between two retries
BackoffMinDelay int
// Maximum delay between two retries
BackoffMaxDelay int
// Backoff delay factor
BackoffDelayFactor float64
// Authentication mutex
AuthenticationMutex *sync.Mutex
// Authentication timestamp
AuthTimeStamp time.Time
// Authentication token timeout
AuthTokenTimeout time.Duration
}
Client is an HTTP Nexus Dashboard client. Use nd.NewClient to initiate a client. This will ensure proper cookie handling and processing of modifiers.
func NewClient ¶
func NewClient(url, basePath, usr, pwd, domain string, insecure bool, mods ...func(*Client)) (Client, error)
NewClient creates a new Nexus Dashboard HTTP client. Pass modifiers in to modify the behavior of the client, e.g.
client, _ := NewClient("https://10.1.1.1", "/appcenter/cisco/ndfc/api/v1", "user", "password", "", true, RequestTimeout(120))
func (*Client) Authenticate ¶
Login if no token available or token timeout has reached
func (*Client) Delete ¶
Delete makes a DELETE request and returns a GJSON result. Hint: Use the Body struct to easily create DELETE body data.
func (*Client) Do ¶
Do makes a request and returns the GJSON result. Requests for Do are built ouside of the client, e.g.
req := client.NewReq("GET", "/appcenter/cisco/ndfc/api/v1/lan-fabric/rest/control/fabrics", nil)
res, _ := client.Do(req)
func (*Client) Get ¶
Get makes a GET request and returns a GJSON result. Results will be the raw data structure as returned by Nexus Dashboard
func (*Client) GetRawJson ¶ added in v0.1.2
GetRawJson makes a GET request and returns the raw response (bytes). Results will be the raw data structure as returned by Nexus Dashboard
type Req ¶
type Req struct {
// HttpReq is the *http.Request obejct.
HttpReq *http.Request
// LogPayload indicates whether logging of payloads should be enabled.
LogPayload bool
}
Req wraps http.Request for API requests.
type Res ¶
Res is an API response returned by client requests. This is a GJSON result, which offers advanced and safe parsing capabilities. https://github.com/tidwall/gjson