Skip to content

a golang library for deploying BIG-IP resources via iControl rest.

License

Notifications You must be signed in to change notification settings

zongzw/f5-bigip-rest-go

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

76 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

f5-bigip-rest-go

F5 BIG-IP provides multiple kinds of configuration utilities, including xui, tmsh and iControl Rest.

This repository provides a golang library for deploying BIG-IP resources via iControl rest.

There are 3 modules in the library.

  • bigip

    Used to convert and execute resource requests in the transaction way.

    Refer to the example for its usage. In the example, explainations are given as comments in detail.

    In the example, the resources are gathered within a JSON-format body, the body schema is:

    {
      	"<folder name>": {
      		"<resource type>/<resource name>": {
      			"<resource property name>": "<resource property value>",
      			"...": "..."
      		},
      		"...": {
      			"...": "..."
      		}
      	}
    }

    Supported resource types can be found here.

    The caller should be clear about the very resource's properties it manipulates. This is important to understand/use this module.

  • utils

    Provides necessary functions, like, data manipulating, logging, Prometheus integrating, and http requesting.

    Refer to the example for usage. The module is widely used in bigip and deployer modules.

  • deployer

    deployer is an encapsulation of bigip. It starts a co-routine worker waiting at a golang chan for executing deployment requests.

    The caller assembles and posts the DeployRequest variable, and the deployer organizes and executes the requests.

    Refer to the example for usage.

Differences between scottdware/go-bigip and f5-bigip-rest-go

scottdware/go-bigip f5devcentral/f5-bigip-rest-go
Objectifies BIG-IP resources and their CRUD functions Does no objectifications, only generalized APIs that can be applied to all resources.
It's strongly typed encapsulation. It's a weakly typed encapsulation with orchestration ability.
Callers are responsible for instantizing resources can call APIs in sequence. With the provided JSON-format input schema, callers can settle the JSON inputs of multiple resources with type, name, and body
No transaction support. Regulates, organizes and applies them to BIG-IP in a transaction way.
It's a imperative way to setup ADC abilities on BIG-IP. The inputting schema is like iControl Rest calls in POSTMAN, while, the deploying process is a declarative mode, like AS3.

Supported Resources:

	`sys/folder`,
	`shared/file-transfer/uploads`,
	`sys/file/ssl-(cert|key)`,
	`ltm/monitor/\w+`,
	`ltm/node`,
	`ltm/pool`,
	`ltm/snat-translation`,
	`ltm/snatpool`,
	`ltm/profile/\w+`,
	`ltm/persistence/\w+`,
	`ltm/snat$`,
	`ltm/rule$`,
	`ltm/virtual-address`,
	`ltm/virtual$`,
	`net/arp$`,
	`net/tunnels/vxlan$`,
	`net/tunnels/tunnel$`,
	`net/fdb/tunnel$`,
	`net/ndp$`,
	`net/routing/bgp$`,
	`net/self$`,
	`gtm/datacenter`,
	`gtm/server`,
	`gtm/monitor/\w+`,
	`gtm/pool/\w+`,
	`gtm/wideip`,

About

a golang library for deploying BIG-IP resources via iControl rest.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 100.0%