diff --git a/gtm.go b/gtm.go index ce7e943..e0bb8e5 100644 --- a/gtm.go +++ b/gtm.go @@ -84,12 +84,32 @@ type Gtmmonitors struct { } type Gtmmonitor struct { - Name string `json:"name,omitempty"` - Defaults_from string `json:"defaultsFrom,omitempty"` - Interval int `json:"interval,omitempty"` - Probe_timeout int `json:"probeTimeout,omitempty"` - Recv string `json:"recv,omitempty"` - Send string `json:"send,omitempty"` + Name string `json:"name,omitempty"` + FullPath string `json:"fullPath,omitempty"` + Partition string `json:"partition,omitempty"` + Defaults_from string `json:"defaultsFrom,omitempty"` + Destination string `json:"destination,omitempty"` + Interval int `json:"interval,omitempty"` + Timeout int `json:"timeout,omitempty"` + Probe_timeout int `json:"probeTimeout,omitempty"` + Ignore_down_response string `json:"ignoreDownResponse,omitempty"` + Transparent string `json:"transparent,omitempty"` + Reverse string `json:"reverse,omitempty"` + Recv string `json:"recv,omitempty"` + Send string `json:"send,omitempty"` + // HTTPS-specific fields + Cert string `json:"cert,omitempty"` + Key string `json:"key,omitempty"` + Cipherlist string `json:"cipherlist,omitempty"` + Compatibility string `json:"compatibility,omitempty"` + // PostgreSQL-specific fields + Database string `json:"database,omitempty"` + Username string `json:"username,omitempty"` + Password string `json:"password,omitempty"` + Count string `json:"count,omitempty"` + Debug string `json:"debug,omitempty"` + // BIG-IP monitor-specific fields + Aggregate_dynamic_ratios string `json:"aggregateDynamicRatios,omitempty"` } type Servers struct { @@ -473,34 +493,32 @@ type GtmPoolMembers struct { Ratio int `json:"ratio,omitempty"` } -func (b *BigIP) Gtmmonitors() (*Gtmmonitor, error) { - var gtmmonitor Gtmmonitor - err, _ := b.getForEntity(>mmonitor, uriGtm, uriGtmmonitor, uriHttp) +// CreateGtmMonitor creates a GTM monitor of the specified type +func (b *BigIP) CreateGtmMonitor(monitor *Gtmmonitor, monitorType string) error { + return b.post(monitor, uriGtm, uriGtmmonitor, monitorType) +} +// GetGtmMonitor retrieves a GTM monitor of the specified type +func (b *BigIP) GetGtmMonitor(name string, monitorType string) (*Gtmmonitor, error) { + var monitor Gtmmonitor + err, ok := b.getForEntity(&monitor, uriGtm, uriGtmmonitor, monitorType, name) if err != nil { return nil, err } - - return >mmonitor, nil -} -func (b *BigIP) CreateGtmmonitor(name, defaults_from string, interval, probeTimeout int, recv, send string) error { - config := &Gtmmonitor{ - Name: name, - Defaults_from: defaults_from, - Interval: interval, - Probe_timeout: probeTimeout, - Recv: recv, - Send: send, + if !ok { + return nil, nil } - return b.post(config, uriGtm, uriGtmmonitor, uriHttp) + return &monitor, nil } -func (b *BigIP) ModifyGtmmonitor(*Gtmmonitor) error { - return b.patch(uriGtm, uriGtmmonitor, uriHttp) +// ModifyGtmMonitor modifies a GTM monitor of the specified type +func (b *BigIP) ModifyGtmMonitor(name string, monitor *Gtmmonitor, monitorType string) error { + return b.put(monitor, uriGtm, uriGtmmonitor, monitorType, name) } -func (b *BigIP) DeleteGtmmonitor(name string) error { - return b.delete(uriGtm, uriGtmmonitor, uriHttp, name) +// DeleteGtmMonitor deletes a GTM monitor of the specified type +func (b *BigIP) DeleteGtmMonitor(name string, monitorType string) error { + return b.delete(uriGtm, uriGtmmonitor, monitorType, name) } func (b *BigIP) CreateGtmserver(p *Server) error { diff --git a/ltm.go b/ltm.go index f8750eb..a767f50 100644 --- a/ltm.go +++ b/ltm.go @@ -272,6 +272,13 @@ type Pools struct { Pools []Pool `json:"items"` } +// ResourceMetadata contains metadata key/value entries associated with LTM objects. +type ResourceMetadata struct { + Name string `json:"name,omitempty"` + Persist string `json:"persist,omitempty"` + Value string `json:"value,omitempty"` +} + // Pool contains information about each pool. You can use all of these // fields when modifying a pool. type Pool struct { @@ -299,6 +306,7 @@ type Pool struct { ReselectTries int `json:"reselectTries"` ServiceDownAction string `json:"serviceDownAction,omitempty"` SlowRampTime int `json:"slowRampTime"` + Metadata []ResourceMetadata `json:"metadata,omitempty"` } // Pool Members contains a list of pool members within a pool on the BIG-IP system. @@ -377,9 +385,10 @@ type poolDTO struct { QueueDepthLimit int `json:"queueDepthLimit,omitempty"` QueueOnConnectionLimit string `json:"queueOnConnectionLimit,omitempty"` QueueTimeLimit int `json:"queueTimeLimit,omitempty"` - ReselectTries int `json:"reselectTries"` - ServiceDownAction string `json:"serviceDownAction,omitempty"` - SlowRampTime int `json:"slowRampTime"` + ReselectTries int `json:"reselectTries"` + ServiceDownAction string `json:"serviceDownAction,omitempty"` + SlowRampTime int `json:"slowRampTime"` + Metadata []ResourceMetadata `json:"metadata,omitempty"` } func (p *Pool) MarshalJSON() ([]byte, error) { @@ -589,6 +598,7 @@ type VirtualServer struct { PersistenceProfiles []Profile `json:"persist"` Profiles []Profile `json:"profiles,omitempty"` Policies []string `json:"policies"` + Metadata []ResourceMetadata `json:"metadata,omitempty"` } // VirtualAddresses contains a list of all virtual addresses on the BIG-IP system.