client

package
v1.9.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 2, 2025 License: MIT Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type APIResponse

type APIResponse[T any] struct {
	Links  LinksResponse      `json:"links"`
	Paging PaginationResponse `json:"paging"`
	Items  []T                `json:"items"`
}

APIResponse represents the API response.

type Device

type Device struct {
	ID   string `json:"id"`
	Type string `json:"type"`
	Name string `json:"name"`
}

Device represents a device in FMC.

type DeviceInfo

type DeviceInfo struct {
	Name        string `json:"name"`
	Description string `json:"description"`
	Model       string `json:"model"`
	ModelID     string `json:"modelId"`
	ModelNumber string `json:"modelNumber"`
	SWVersion   string `json:"sw_version"`
	Hostname    string `json:"hostName"`
	Metadata    struct {
		SerialNumber  string `json:"deviceSerialNumber"`
		InventoryData struct {
			CPUCores   string `json:"cpuCores"`
			CPUType    string `json:"cpuType"`
			MemoryInMB string `json:"memoryInMB"`
		} `json:"inventoryData"`
	} `json:"metadata"`
}

DeviceInfo represents information about a FMC device.

type Domain

type Domain struct {
	UUID string `json:"uuid"`
	Name string `json:"name"`
	Type string `json:"type"`
}

Domain represents a domain in FMC.

type FMCClient

type FMCClient struct {
	HTTPClient     *http.Client
	BaseURL        string
	Username       string
	Password       string
	AccessToken    string
	RefreshToken   string
	DefaultTimeout time.Duration
	Logger         *logger.Logger
	Ctx            context.Context
}

func NewFMCClient

func NewFMCClient(context context.Context, username string, password string, httpScheme string, hostname string, port int, httpClient *http.Client, logger *logger.Logger) (*FMCClient, error)

NewFMCClient creates a new FMC client with the given parameters. It authenticates to the FMC API and stores the access and refresh tokens.

func (FMCClient) Authenticate

func (fmcc FMCClient) Authenticate() (string, string, error)

Authenticate performs authentication on FMC API. If successful it returns access and refresh tokens.

func (*FMCClient) GetDeviceInfo

func (fmcc *FMCClient) GetDeviceInfo(domainUUID string, deviceID string) (*DeviceInfo, error)

func (*FMCClient) GetDevicePhysicalInterfaces

func (fmcc *FMCClient) GetDevicePhysicalInterfaces(
	domainUUID string,
	deviceID string,
) ([]PhysicalInterface, error)

GetDevicePhysicalInterfaces returns a list of physical interfaces for the specified device in the specified domain.

func (*FMCClient) GetDeviceVLANInterfaces

func (fmcc *FMCClient) GetDeviceVLANInterfaces(
	domainUUID string,
	deviceID string,
) ([]VlanInterface, error)

func (*FMCClient) GetDevices

func (fmcc *FMCClient) GetDevices(domainUUID string) ([]Device, error)

GetDevices returns a list of devices from the FMC API for the specified domain.

func (*FMCClient) GetDomains

func (fmcc *FMCClient) GetDomains() ([]Domain, error)

GetDomains returns a list of domains from the FMC API. It sends a GET request to the /fmc_platform/v1/info/domain endpoint.

func (*FMCClient) GetPhysicalInterfaceInfo

func (fmcc *FMCClient) GetPhysicalInterfaceInfo(
	domainUUID string,
	deviceID string,
	interfaceID string,
) (*PhysicalInterfaceInfo, error)

func (*FMCClient) GetVLANInterfaceInfo

func (fmcc *FMCClient) GetVLANInterfaceInfo(
	domainUUID string,
	deviceID string,
	interfaceID string,
) (*VLANInterfaceInfo, error)

func (*FMCClient) MakeRequest

func (fmcc *FMCClient) MakeRequest(
	ctx context.Context,
	method, path string,
	body io.Reader,
	result interface{},
) error

MakeRequest sends an HTTP request to the specified path using the given method and body. It retries the request with exponential backoff up to a maximum number of attempts. If the request fails after the maximum number of attempts, it returns an error.

type InterfaceIPv4 added in v1.9.3

type InterfaceIPv4 struct {
	Static *struct {
		Address string `json:"address"`
		Netmask string `json:"netmask"`
	} `json:"static"`
	Dhcp *struct {
		Address string `json:"address"`
		Netmask string `json:"netmask"`
	} `json:"dhcp"`
}

type LinksResponse

type LinksResponse struct {
	Self string `json:"self"`
}

LinksResponse represents the links in the API response.

type PaginationResponse

type PaginationResponse struct {
	Offset int `json:"offset"`
	Limit  int `json:"limit"`
	Count  int `json:"count"`
	Pages  int `json:"pages"`
}

PaginationResponse represents the paging information in the API response.

type PhysicalInterface

type PhysicalInterface struct {
	ID   string `json:"id"`
	Type string `json:"type"`
	Name string `json:"name"`
}

PhysicalInterface represents a physical interface.

type PhysicalInterfaceInfo

type PhysicalInterfaceInfo struct {
	Type        string `json:"type"`
	MTU         int    `json:"MTU"`
	Enabled     bool   `json:"enabled"`
	Name        string `json:"name"`
	ID          string `json:"id"`
	Mode        string `json:"mode"`
	Description string `json:"description"`
	Hardware    *struct {
		Speed  string `json:"speed"`
		Duplex string `json:"duplex"`
	} `json:"hardware"`
	SecurityZone *struct {
		ID   string `json:"id"`
		Type string `json:"type"`
	} `json:"securityZone"`
	IPv4 *InterfaceIPv4 `json:"ipv4"`
	IPv6 *struct {
		EnableIPv6 bool `json:"enableIPV6"`
	} `json:"ipv6"`
}

PhysicalInterfaceInfo represents information about a physical interface.

type VLANInterfaceInfo

type VLANInterfaceInfo struct {
	Type        string `json:"type"`
	Mode        string `json:"mode"`
	VID         int    `json:"vlanId"`
	MTU         int    `json:"MTU"`
	Enabled     bool   `json:"enabled"`
	Name        string `json:"name"`
	ID          string `json:"id"`
	Description string `json:"description"`
	Hardware    *struct {
		Speed  string `json:"speed"`
		Duplex string `json:"duplex"`
	} `json:"hardware"`
	SecurityZone *struct {
		ID   string `json:"id"`
		Type string `json:"type"`
	} `json:"securityZone"`
	IPv4 *InterfaceIPv4 `json:"ipv4"`
	IPv6 *struct {
		EnableIPv6 bool `json:"enableIPV6"`
	} `json:"ipv6"`
}

VLANInterfaceInfo represents information about a VLAN interface.

type VlanInterface

type VlanInterface struct {
	ID   string `json:"id"`
	Type string `json:"type"`
	Name string `json:"name"`
}

VlanInterface represents a VLAN interface.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL