Documentation ¶
Overview ¶
Package monitors provides information and interaction with Monitors of the LBaaS v2 extension for the OpenStack Networking service.
Example to List Monitors
listOpts := monitors.ListOpts{ PoolID: "c79a4468-d788-410c-bf79-9a8ef6354852", } allPages, err := monitors.List(networkClient, listOpts).AllPages(context.TODO()) if err != nil { panic(err) } allMonitors, err := monitors.ExtractMonitors(allPages) if err != nil { panic(err) } for _, monitor := range allMonitors { fmt.Printf("%+v\n", monitor) }
Example to Create a Monitor
createOpts := monitors.CreateOpts{ Type: "HTTP", Name: "db", PoolID: "84f1b61f-58c4-45bf-a8a9-2dafb9e5214d", Delay: 20, Timeout: 10, MaxRetries: 5, MaxRetriesDown: 4, URLPath: "/check", ExpectedCodes: "200-299", } monitor, err := monitors.Create(context.TODO(), networkClient, createOpts).Extract() if err != nil { panic(err) }
Example to Update a Monitor
monitorID := "d67d56a6-4a86-4688-a282-f46444705c64" updateOpts := monitors.UpdateOpts{ Name: "NewHealthmonitorName", Delay: 3, Timeout: 20, MaxRetries: 10, MaxRetriesDown: 8, URLPath: "/another_check", ExpectedCodes: "301", } monitor, err := monitors.Update(context.TODO(), networkClient, monitorID, updateOpts).Extract() if err != nil { panic(err) }
Example to Delete a Monitor
monitorID := "d67d56a6-4a86-4688-a282-f46444705c64" err := monitors.Delete(context.TODO(), networkClient, monitorID).ExtractErr() if err != nil { panic(err) }
Index ¶
- Constants
- func List(c *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager
- type CreateOpts
- type CreateOptsBuilder
- type CreateResult
- type DeleteResult
- type GetResult
- type ListOpts
- type ListOptsBuilder
- type Monitor
- type MonitorPage
- type PoolID
- type UpdateOpts
- type UpdateOptsBuilder
- type UpdateResult
Constants ¶
const ( TypePING = "PING" TypeTCP = "TCP" TypeHTTP = "HTTP" TypeHTTPS = "HTTPS" TypeTLSHELLO = "TLS-HELLO" TypeUDPConnect = "UDP-CONNECT" TypeSCTP = "SCTP" )
Constants that represent approved monitoring types.
Variables ¶
This section is empty.
Functions ¶
func List ¶
func List(c *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager
List returns a Pager which allows you to iterate over a collection of health monitors. It accepts a ListOpts struct, which allows you to filter and sort the returned collection for greater efficiency.
Default policy settings return only those health monitors that are owned by the tenant who submits the request, unless an admin user submits the request.
Types ¶
type CreateOpts ¶
type CreateOpts struct { // The Pool to Monitor. PoolID string `json:"pool_id,omitempty"` // The type of probe, which is PING, TCP, HTTP, or HTTPS, that is // sent by the load balancer to verify the member state. Type string `json:"type" required:"true"` // The time, in seconds, between sending probes to members. Delay int `json:"delay" required:"true"` // Maximum number of seconds for a Monitor to wait for a ping reply // before it times out. The value must be less than the delay value. Timeout int `json:"timeout" required:"true"` // Number of permissible ping failures before changing the member's // status to INACTIVE. Must be a number between 1 and 10. MaxRetries int `json:"max_retries" required:"true"` // Number of permissible ping failures befor changing the member's // status to ERROR. Must be a number between 1 and 10. MaxRetriesDown int `json:"max_retries_down,omitempty"` // URI path that will be accessed if Monitor type is HTTP or HTTPS. URLPath string `json:"url_path,omitempty"` // The HTTP method used for requests by the Monitor. If this attribute // is not specified, it defaults to "GET". Required for HTTP(S) types. HTTPMethod string `json:"http_method,omitempty"` // The HTTP version. One of 1.0 or 1.1. The default is 1.0. New in // version 2.10. HTTPVersion string `json:"http_version,omitempty"` // Expected HTTP codes for a passing HTTP(S) Monitor. You can either specify // a single status like "200", a range like "200-202", or a combination like // "200-202, 401". ExpectedCodes string `json:"expected_codes,omitempty"` // TenantID is the UUID of the project who owns the Monitor. // Only administrative users can specify a project UUID other than their own. TenantID string `json:"tenant_id,omitempty"` // ProjectID is the UUID of the project who owns the Monitor. // Only administrative users can specify a project UUID other than their own. ProjectID string `json:"project_id,omitempty"` // The Name of the Monitor. Name string `json:"name,omitempty"` // The administrative state of the Monitor. A valid value is true (UP) // or false (DOWN). AdminStateUp *bool `json:"admin_state_up,omitempty"` // The domain name, which be injected into the HTTP Host Header to the // backend server for HTTP health check. New in version 2.10 DomainName string `json:"domain_name,omitempty"` // Tags is a set of resource tags. New in version 2.5 Tags []string `json:"tags,omitempty"` }
CreateOpts is the common options struct used in this package's Create operation.
func (CreateOpts) ToMonitorCreateMap ¶
func (opts CreateOpts) ToMonitorCreateMap() (map[string]any, error)
ToMonitorCreateMap builds a request body from CreateOpts.
type CreateOptsBuilder ¶
CreateOptsBuilder allows extensions to add additional parameters to the List request.
type CreateResult ¶
type CreateResult struct {
// contains filtered or unexported fields
}
CreateResult represents the result of a create operation. Call its Extract method to interpret it as a Monitor.
func Create ¶
func Create(ctx context.Context, c *gophercloud.ServiceClient, opts CreateOptsBuilder) (r CreateResult)
Create is an operation which provisions a new Health Monitor. There are different types of Monitor you can provision: PING, TCP or HTTP(S). Below are examples of how to create each one.
Here is an example config struct to use when creating a PING or TCP Monitor:
CreateOpts{Type: TypePING, Delay: 20, Timeout: 10, MaxRetries: 3} CreateOpts{Type: TypeTCP, Delay: 20, Timeout: 10, MaxRetries: 3}
Here is an example config struct to use when creating a HTTP(S) Monitor:
CreateOpts{Type: TypeHTTP, Delay: 20, Timeout: 10, MaxRetries: 3, HttpMethod: "HEAD", ExpectedCodes: "200", PoolID: "2c946bfc-1804-43ab-a2ff-58f6a762b505"}
type DeleteResult ¶
type DeleteResult struct {
gophercloud.ErrResult
}
DeleteResult represents the result of a delete operation. Call its ExtractErr method to determine if the result succeeded or failed.
type GetResult ¶
type GetResult struct {
// contains filtered or unexported fields
}
GetResult represents the result of a get operation. Call its Extract method to interpret it as a Monitor.
type ListOpts ¶
type ListOpts struct { ID string `q:"id"` Name string `q:"name"` TenantID string `q:"tenant_id"` ProjectID string `q:"project_id"` PoolID string `q:"pool_id"` Type string `q:"type"` Delay int `q:"delay"` Timeout int `q:"timeout"` MaxRetries int `q:"max_retries"` MaxRetriesDown int `q:"max_retries_down"` HTTPMethod string `q:"http_method"` URLPath string `q:"url_path"` ExpectedCodes string `q:"expected_codes"` AdminStateUp *bool `q:"admin_state_up"` Status string `q:"status"` Limit int `q:"limit"` Marker string `q:"marker"` SortKey string `q:"sort_key"` SortDir string `q:"sort_dir"` Tags []string `q:"tags"` }
ListOpts allows the filtering and sorting of paginated collections through the API. Filtering is achieved by passing in struct field values that map to the Monitor attributes you want to see returned. SortKey allows you to sort by a particular Monitor attribute. SortDir sets the direction, and is either `asc' or `desc'. Marker and Limit are used for pagination.
func (ListOpts) ToMonitorListQuery ¶
ToMonitorListQuery formats a ListOpts into a query string.
type ListOptsBuilder ¶
ListOptsBuilder allows extensions to add additional parameters to the List request.
type Monitor ¶
type Monitor struct { // The unique ID for the Monitor. ID string `json:"id"` // The Name of the Monitor. Name string `json:"name"` // The owner of the Monitor. ProjectID string `json:"project_id"` // The type of probe sent by the load balancer to verify the member state, // which is PING, TCP, HTTP, HTTPS, TLS-HELLO, UDP-CONNECT or SCTP. Type string `json:"type"` // The time, in seconds, between sending probes to members. Delay int `json:"delay"` // The maximum number of seconds for a monitor to wait for a connection to be // established before it times out. This value must be less than the delay // value. Timeout int `json:"timeout"` // Number of allowed connection failures before changing the status of the // member to INACTIVE. A valid value is from 1 to 10. MaxRetries int `json:"max_retries"` // Number of allowed connection failures before changing the status of the // member to Error. A valid value is from 1 to 10. MaxRetriesDown int `json:"max_retries_down"` // The HTTP method that the monitor uses for requests. HTTPMethod string `json:"http_method"` // The HTTP version that the monitor uses for requests. HTTPVersion string `json:"http_version"` // The HTTP path of the request sent by the monitor to test the health of a // member. Must be a string beginning with a forward slash (/). URLPath string `json:"url_path" ` // Expected HTTP codes for a passing HTTP(S) monitor. ExpectedCodes string `json:"expected_codes"` // The HTTP host header that the monitor uses for requests. DomainName string `json:"domain_name"` // The administrative state of the health monitor, which is up (true) or // down (false). AdminStateUp bool `json:"admin_state_up"` // The status of the health monitor. Indicates whether the health monitor is // operational. Status string `json:"status"` // List of pools that are associated with the health monitor. Pools []PoolID `json:"pools"` // The provisioning status of the Monitor. // This value is ACTIVE, PENDING_* or ERROR. ProvisioningStatus string `json:"provisioning_status"` // The operating status of the monitor. OperatingStatus string `json:"operating_status"` // Tags is a list of resource tags. Tags are arbitrarily defined strings // attached to the resource. New in version 2.5 Tags []string `json:"tags"` }
Monitor represents a load balancer health monitor. A health monitor is used to determine whether or not back-end members of the VIP's pool are usable for processing a request. A pool can have several health monitors associated with it. There are different types of health monitors supported:
PING: used to ping the members using ICMP. TCP: used to connect to the members using TCP. HTTP: used to send an HTTP request to the member. HTTPS: used to send a secure HTTP request to the member. TLS-HELLO: used to send TLS-HELLO request to the member. UDP-CONNECT: used to send UDP-CONNECT request to the member. SCTP: used to send SCTP request to the member.
When a pool has several monitors associated with it, each member of the pool is monitored by all these monitors. If any monitor declares the member as unhealthy, then the member status is changed to INACTIVE and the member won't participate in its pool's load balancing. In other words, ALL monitors must declare the member to be healthy for it to stay ACTIVE.
func ExtractMonitors ¶
func ExtractMonitors(r pagination.Page) ([]Monitor, error)
ExtractMonitors accepts a Page struct, specifically a MonitorPage struct, and extracts the elements into a slice of Monitor structs. In other words, a generic collection is mapped into a relevant slice.
type MonitorPage ¶
type MonitorPage struct {
pagination.LinkedPageBase
}
MonitorPage is the page returned by a pager when traversing over a collection of health monitors.
func (MonitorPage) IsEmpty ¶
func (r MonitorPage) IsEmpty() (bool, error)
IsEmpty checks whether a MonitorPage struct is empty.
func (MonitorPage) NextPageURL ¶
func (r MonitorPage) NextPageURL() (string, error)
NextPageURL is invoked when a paginated collection of monitors has reached the end of a page and the pager seeks to traverse over a new one. In order to do this, it needs to construct the next page's URL.
type UpdateOpts ¶
type UpdateOpts struct { // The time, in seconds, between sending probes to members. Delay int `json:"delay,omitempty"` // Maximum number of seconds for a Monitor to wait for a ping reply // before it times out. The value must be less than the delay value. Timeout int `json:"timeout,omitempty"` // Number of permissible ping failures before changing the member's // status to INACTIVE. Must be a number between 1 and 10. MaxRetries int `json:"max_retries,omitempty"` // Number of permissible ping failures befor changing the member's // status to ERROR. Must be a number between 1 and 10. MaxRetriesDown int `json:"max_retries_down,omitempty"` // URI path that will be accessed if Monitor type is HTTP or HTTPS. // Required for HTTP(S) types. URLPath string `json:"url_path,omitempty"` // The HTTP method used for requests by the Monitor. If this attribute // is not specified, it defaults to "GET". Required for HTTP(S) types. HTTPMethod string `json:"http_method,omitempty"` // The HTTP version. One of 1.0 or 1.1. The default is 1.0. New in // version 2.10. HTTPVersion *string `json:"http_version,omitempty"` // Expected HTTP codes for a passing HTTP(S) Monitor. You can either specify // a single status like "200", or a range like "200-202". Required for HTTP(S) // types. ExpectedCodes string `json:"expected_codes,omitempty"` // The Name of the Monitor. Name *string `json:"name,omitempty"` // The domain name, which be injected into the HTTP Host Header to the // backend server for HTTP health check. New in version 2.10 DomainName *string `json:"domain_name,omitempty"` // The administrative state of the Monitor. A valid value is true (UP) // or false (DOWN). AdminStateUp *bool `json:"admin_state_up,omitempty"` // Tags is a set of resource tags. New in version 2.5 Tags []string `json:"tags,omitempty"` }
UpdateOpts is the common options struct used in this package's Update operation.
func (UpdateOpts) ToMonitorUpdateMap ¶
func (opts UpdateOpts) ToMonitorUpdateMap() (map[string]any, error)
ToMonitorUpdateMap builds a request body from UpdateOpts.
type UpdateOptsBuilder ¶
UpdateOptsBuilder allows extensions to add additional parameters to the Update request.
type UpdateResult ¶
type UpdateResult struct {
// contains filtered or unexported fields
}
UpdateResult represents the result of an update operation. Call its Extract method to interpret it as a Monitor.
func Update ¶
func Update(ctx context.Context, c *gophercloud.ServiceClient, id string, opts UpdateOptsBuilder) (r UpdateResult)
Update is an operation which modifies the attributes of the specified Monitor.