aci-go-client

This repository contains the golang client SDK to interact with CISCO APIC using REST API calls. This SDK is used by terraform-provider-aci.

Installation

Use go get to retrieve the SDK to add it to your GOPATH workspace, or project's Go module dependencies.

$go get github.com/ciscoecosystem/aci-go-client

There are no additional dependancies needed to be installed.

Overview

  • client :- This package contains the HTTP Client configuration as well as service methods which serves the CRUD operations on the Model Objects in CISCO ACI.

  • models :- This package contains all the models structs and utility methods for the same.

  • tests :- This package contains the unit tests for the CRUD operations that can be performed on the Model Objects.

How to Use

import the client in your go application and retrive the client object by calling client.GetClient() method.

import github.com/ciscoecosystem/aci-go-client/v2/client
client.GetClient("URL", "Username", client.Password("Password"), client.Insecure(true/false))

aci-go-client supports signature based authentication also. To use signature based authentication call the GetClient method as follows.

client.GetClient("URL", "Username", client.PrivateKey("PrivateKey path"),client.AdminCert("Certificate name"), client.Insecure(true/false))

Use that client object to call the service methods to perform the CRUD operations on the model objects.

Example,

    client.CreateTenant("tenant_name","description",tenantAttributesStruct)
    # tenantAttributesStruct is struct present in models/fv_tenant.go

aci-go-client supports concurrent connections to different targets by calling client.NewClient() instead of client.GetClient().

client.NewClient("URL", "Username", client.PrivateKey("PrivateKey path"),client.AdminCert("Certificate name"), client.Insecure(true/false))

When making PyQuery calls (API calls which start with /mqapi2/), ensure that the APIC-Cookie is populated in the Requests
as PyQuery may not function using only the Certificate-Based Request.

If using Username/Password, no extra steps are necessary, as the APIC-Cookie will be obtained at the time of the API call.
If using Certificate based authentication, call client.Authenticate() first, to obtain a recent APIC-Cookie authorization token
PyQuery APIs currently do not support Certificate + Username authentication.

client.NewClient("URL", "Username", client.AppUserName("AppUserName"), client.PrivateKey("PrivateKey path"), client.AdminCert("Certificate name"), client.Insecure(true/false))

When using client.Do() or client.DoRaw() with large payloads (like files), set the client.MaxRetries to 0 (if configured to another value) to avoid reading the complete payload into memory.
You might also want to set client.SkipLoggingPayload(true) before executing the client.Do() or client.DoRaw().

View code on GitHub

Code Exchange Community

Get help, share code, and collaborate with other developers in the Code Exchange community.View Community
Disclaimer:
Cisco provides Code Exchange for convenience and informational purposes only, with no support of any kind. This page contains information and links from third-party websites that are governed by their own separate terms. Reference to a project or contributor on this page does not imply any affiliation with or endorsement by Cisco.