models

package
v2.9.1+incompatible Latest Latest
Warning

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

Go to latest
Published: Jul 29, 2020 License: AGPL-3.0 Imports: 22 Imported by: 24

Documentation

Overview

Package models contains generated Reform records and helpers.

Common order of helpers:

  • unexported validators (checkXXX);
  • FindAllXXX;
  • FindXXXByID;
  • other finder (e.g. FindNodesForAgent);
  • CreateXXX;
  • ChangeXXX;
  • RemoveXXX.

Index

Constants

View Source
const PMMServerAgentID string = "pmm-server" // no /agent_id/ prefix

PMMServerAgentID is a special Agent ID representing pmm-agent on PMM Server.

View Source
const PMMServerNodeID string = "pmm-server" // no /node_id/ prefix

PMMServerNodeID is a special Node ID representing PMM Server Node.

View Source
const PMMServerPostgreSQLServiceName = "pmm-server-postgresql"

PMMServerPostgreSQLServiceName is a special Service Name representing PMM Server's PostgreSQL Service.

Variables

View Source
var ActionResultTable = &actionResultTableType{
	s: parse.StructInfo{Type: "ActionResult", SQLSchema: "", SQLName: "action_results", Fields: []parse.FieldInfo{{Name: "ID", Type: "string", Column: "id"}, {Name: "PMMAgentID", Type: "string", Column: "pmm_agent_id"}, {Name: "Done", Type: "bool", Column: "done"}, {Name: "Error", Type: "string", Column: "error"}, {Name: "Output", Type: "string", Column: "output"}, {Name: "CreatedAt", Type: "time.Time", Column: "created_at"}, {Name: "UpdatedAt", Type: "time.Time", Column: "updated_at"}}, PKFieldIndex: 0},
	z: new(ActionResult).Values(),
}

ActionResultTable represents action_results view or table in SQL database.

View Source
var AgentTable = &agentTableType{
	s: parse.StructInfo{Type: "Agent", SQLSchema: "", SQLName: "agents", Fields: []parse.FieldInfo{{Name: "AgentID", Type: "string", Column: "agent_id"}, {Name: "AgentType", Type: "AgentType", Column: "agent_type"}, {Name: "RunsOnNodeID", Type: "*string", Column: "runs_on_node_id"}, {Name: "ServiceID", Type: "*string", Column: "service_id"}, {Name: "NodeID", Type: "*string", Column: "node_id"}, {Name: "PMMAgentID", Type: "*string", Column: "pmm_agent_id"}, {Name: "CustomLabels", Type: "[]uint8", Column: "custom_labels"}, {Name: "CreatedAt", Type: "time.Time", Column: "created_at"}, {Name: "UpdatedAt", Type: "time.Time", Column: "updated_at"}, {Name: "Disabled", Type: "bool", Column: "disabled"}, {Name: "Status", Type: "string", Column: "status"}, {Name: "ListenPort", Type: "*uint16", Column: "listen_port"}, {Name: "Version", Type: "*string", Column: "version"}, {Name: "Username", Type: "*string", Column: "username"}, {Name: "Password", Type: "*string", Column: "password"}, {Name: "TLS", Type: "bool", Column: "tls"}, {Name: "TLSSkipVerify", Type: "bool", Column: "tls_skip_verify"}, {Name: "AWSAccessKey", Type: "*string", Column: "aws_access_key"}, {Name: "AWSSecretKey", Type: "*string", Column: "aws_secret_key"}, {Name: "TableCount", Type: "*int32", Column: "table_count"}, {Name: "TableCountTablestatsGroupLimit", Type: "int32", Column: "table_count_tablestats_group_limit"}, {Name: "QueryExamplesDisabled", Type: "bool", Column: "query_examples_disabled"}, {Name: "MaxQueryLogSize", Type: "int64", Column: "max_query_log_size"}, {Name: "MetricsPath", Type: "*string", Column: "metrics_path"}, {Name: "MetricsScheme", Type: "*string", Column: "metrics_scheme"}, {Name: "RDSBasicMetricsDisabled", Type: "bool", Column: "rds_basic_metrics_disabled"}, {Name: "RDSEnhancedMetricsDisabled", Type: "bool", Column: "rds_enhanced_metrics_disabled"}}, PKFieldIndex: 0},
	z: new(Agent).Values(),
}

AgentTable represents agents view or table in SQL database.

View Source
var NodeTable = &nodeTableType{
	s: parse.StructInfo{Type: "Node", SQLSchema: "", SQLName: "nodes", Fields: []parse.FieldInfo{{Name: "NodeID", Type: "string", Column: "node_id"}, {Name: "NodeType", Type: "NodeType", Column: "node_type"}, {Name: "NodeName", Type: "string", Column: "node_name"}, {Name: "MachineID", Type: "*string", Column: "machine_id"}, {Name: "Distro", Type: "string", Column: "distro"}, {Name: "NodeModel", Type: "string", Column: "node_model"}, {Name: "AZ", Type: "string", Column: "az"}, {Name: "CustomLabels", Type: "[]uint8", Column: "custom_labels"}, {Name: "Address", Type: "string", Column: "address"}, {Name: "CreatedAt", Type: "time.Time", Column: "created_at"}, {Name: "UpdatedAt", Type: "time.Time", Column: "updated_at"}, {Name: "ContainerID", Type: "*string", Column: "container_id"}, {Name: "ContainerName", Type: "*string", Column: "container_name"}, {Name: "Region", Type: "*string", Column: "region"}}, PKFieldIndex: 0},
	z: new(Node).Values(),
}

NodeTable represents nodes view or table in SQL database.

View Source
var Now = func() time.Time {
	return time.Now().Truncate(time.Microsecond).UTC()
}

Now returns current time with database precision.

View Source
var ServiceTable = &serviceTableType{
	s: parse.StructInfo{Type: "Service", SQLSchema: "", SQLName: "services", Fields: []parse.FieldInfo{{Name: "ServiceID", Type: "string", Column: "service_id"}, {Name: "ServiceType", Type: "ServiceType", Column: "service_type"}, {Name: "ServiceName", Type: "string", Column: "service_name"}, {Name: "NodeID", Type: "string", Column: "node_id"}, {Name: "Environment", Type: "string", Column: "environment"}, {Name: "Cluster", Type: "string", Column: "cluster"}, {Name: "ReplicationSet", Type: "string", Column: "replication_set"}, {Name: "CustomLabels", Type: "[]uint8", Column: "custom_labels"}, {Name: "CreatedAt", Type: "time.Time", Column: "created_at"}, {Name: "UpdatedAt", Type: "time.Time", Column: "updated_at"}, {Name: "Address", Type: "*string", Column: "address"}, {Name: "Port", Type: "*uint16", Column: "port"}, {Name: "Socket", Type: "*string", Column: "socket"}}, PKFieldIndex: 0},
	z: new(Service).Values(),
}

ServiceTable represents services view or table in SQL database.

Functions

func ChangeActionResult

func ChangeActionResult(q *reform.Querier, actionID, pmmAgentID, aError, output string, done bool) error

ChangeActionResult updates an action result in action results storage.

func CleanupOldResults

func CleanupOldResults(q *reform.Querier, olderThan time.Time) error

CleanupOldResults deletes action results older than a specified date.

func FindDSNByServiceIDandPMMAgentID

func FindDSNByServiceIDandPMMAgentID(q *reform.Querier, serviceID, pmmAgentID, db string) (string, error)

FindDSNByServiceIDandPMMAgentID resolves DSN by service id.

func FindPmmAgentIDToRunAction

func FindPmmAgentIDToRunAction(pmmAgentID string, agents []*Agent) (string, error)

FindPmmAgentIDToRunAction finds pmm-agent-id to run action.

func MergeLabels

func MergeLabels(node *Node, service *Service, agent *Agent) (map[string]string, error)

MergeLabels merges unified labels of Node, Service, and Agent (each can be nil).

func OpenDB

func OpenDB(address, name, username, password string) (*sql.DB, error)

OpenDB returns configured connection pool for PostgreSQL.

func RemoveNode

func RemoveNode(q *reform.Querier, id string, mode RemoveMode) error

RemoveNode removes single Node.

func RemoveService

func RemoveService(q *reform.Querier, id string, mode RemoveMode) error

RemoveService removes single Service.

func SaveSettings

func SaveSettings(q reform.DBTX, s *Settings) error

SaveSettings saves PMM Server settings. It may modify passed settings to fill defaults.

func SetupDB

func SetupDB(sqlDB *sql.DB, params *SetupDBParams) (*reform.DB, error)

SetupDB runs PostgreSQL database migrations and optionally adds initial data.

func ValidateSettings

func ValidateSettings(params *ChangeSettingsParams) error

ValidateSettings validates settings changes.

Types

type ActionResult

type ActionResult struct {
	ID         string    `reform:"id,pk"`
	PMMAgentID string    `reform:"pmm_agent_id"`
	Done       bool      `reform:"done"`
	Error      string    `reform:"error"`
	Output     string    `reform:"output"`
	CreatedAt  time.Time `reform:"created_at"`
	UpdatedAt  time.Time `reform:"updated_at"`
}

ActionResult describes an action result which is storing in persistent storage.

func CreateActionResult

func CreateActionResult(q *reform.Querier, pmmAgentID string) (*ActionResult, error)

CreateActionResult stores an action result in action results storage.

func FindActionResultByID

func FindActionResultByID(q *reform.Querier, id string) (*ActionResult, error)

FindActionResultByID finds ActionResult by ID.

func (*ActionResult) AfterFind

func (s *ActionResult) AfterFind() error

AfterFind implements reform.AfterFinder interface.

func (*ActionResult) BeforeInsert

func (s *ActionResult) BeforeInsert() error

BeforeInsert implements reform.BeforeInserter interface.

func (*ActionResult) BeforeUpdate

func (s *ActionResult) BeforeUpdate() error

BeforeUpdate implements reform.BeforeUpdater interface.

func (*ActionResult) HasPK

func (s *ActionResult) HasPK() bool

HasPK returns true if record has non-zero primary key set, false otherwise.

func (*ActionResult) PKPointer

func (s *ActionResult) PKPointer() interface{}

PKPointer returns a pointer to primary key field for that record. Returned interface{} value is never untyped nil.

func (*ActionResult) PKValue

func (s *ActionResult) PKValue() interface{}

PKValue returns a value of primary key for that record. Returned interface{} value is never untyped nil.

func (*ActionResult) Pointers

func (s *ActionResult) Pointers() []interface{}

Pointers returns a slice of pointers to struct or record fields. Returned interface{} values are never untyped nils.

func (*ActionResult) SetPK

func (s *ActionResult) SetPK(pk interface{})

SetPK sets record primary key.

func (ActionResult) String

func (s ActionResult) String() string

String returns a string representation of this struct or record.

func (*ActionResult) Table

func (s *ActionResult) Table() reform.Table

Table returns Table object for that record.

func (*ActionResult) Values

func (s *ActionResult) Values() []interface{}

Values returns a slice of struct or record field values. Returned interface{} values are never untyped nils.

func (*ActionResult) View

func (s *ActionResult) View() reform.View

View returns View object for that struct.

type AddDBMSServiceParams

type AddDBMSServiceParams struct {
	ServiceName    string
	NodeID         string
	Environment    string
	Cluster        string
	ReplicationSet string
	CustomLabels   map[string]string
	Address        *string
	Port           *uint16
	Socket         *string
}

AddDBMSServiceParams contains parameters for adding DBMS (MySQL, PostgreSQL, MongoDB, External) Services.

type Agent

type Agent struct {
	AgentID      string    `reform:"agent_id,pk"`
	AgentType    AgentType `reform:"agent_type"`
	RunsOnNodeID *string   `reform:"runs_on_node_id"`
	ServiceID    *string   `reform:"service_id"`
	NodeID       *string   `reform:"node_id"`
	PMMAgentID   *string   `reform:"pmm_agent_id"`
	CustomLabels []byte    `reform:"custom_labels"`
	CreatedAt    time.Time `reform:"created_at"`
	UpdatedAt    time.Time `reform:"updated_at"`

	Disabled   bool    `reform:"disabled"`
	Status     string  `reform:"status"`
	ListenPort *uint16 `reform:"listen_port"`
	Version    *string `reform:"version"`

	Username      *string `reform:"username"`
	Password      *string `reform:"password"`
	TLS           bool    `reform:"tls"`
	TLSSkipVerify bool    `reform:"tls_skip_verify"`

	AWSAccessKey *string `reform:"aws_access_key"`
	AWSSecretKey *string `reform:"aws_secret_key"`

	// TableCount stores last known table count. NULL if unknown.
	TableCount *int32 `reform:"table_count"`

	// Tablestats group collectors are disabled if there are more than that number of tables.
	// 0 means tablestats group collectors are always enabled (no limit).
	// Negative value means tablestats group collectors are always disabled.
	// See IsMySQLTablestatsGroupEnabled method.
	TableCountTablestatsGroupLimit int32 `reform:"table_count_tablestats_group_limit"`

	QueryExamplesDisabled bool    `reform:"query_examples_disabled"`
	MaxQueryLogSize       int64   `reform:"max_query_log_size"`
	MetricsPath           *string `reform:"metrics_path"`
	MetricsScheme         *string `reform:"metrics_scheme"`

	RDSBasicMetricsDisabled    bool `reform:"rds_basic_metrics_disabled"`
	RDSEnhancedMetricsDisabled bool `reform:"rds_enhanced_metrics_disabled"`
}

Agent represents Agent as stored in database.

func ChangeAgent

func ChangeAgent(q *reform.Querier, agentID string, params *ChangeCommonAgentParams) (*Agent, error)

ChangeAgent changes common parameters for given Agent.

func CreateAgent

func CreateAgent(q *reform.Querier, agentType AgentType, params *CreateAgentParams) (*Agent, error)

CreateAgent creates Agent with given type.

func CreateExternalExporter

func CreateExternalExporter(q *reform.Querier, params *CreateExternalExporterParams) (*Agent, error)

CreateExternalExporter creates ExternalExporter.

func CreateNodeExporter

func CreateNodeExporter(q *reform.Querier, pmmAgentID string, customLabels map[string]string) (*Agent, error)

CreateNodeExporter creates NodeExporter.

func CreatePMMAgent

func CreatePMMAgent(q *reform.Querier, runsOnNodeID string, customLabels map[string]string) (*Agent, error)

CreatePMMAgent creates PMMAgent.

func FindAgentByID

func FindAgentByID(q *reform.Querier, id string) (*Agent, error)

FindAgentByID finds Agent by ID.

func FindAgents

func FindAgents(q *reform.Querier, filters AgentFilters) ([]*Agent, error)

FindAgents returns Agents by filters.

func FindAgentsByIDs

func FindAgentsByIDs(q *reform.Querier, ids []string) ([]*Agent, error)

FindAgentsByIDs finds Agents by IDs.

func FindPMMAgentsForService

func FindPMMAgentsForService(q *reform.Querier, serviceID string) ([]*Agent, error)

FindPMMAgentsForService gets pmm-agents for service.

func FindPMMAgentsRunningOnNode

func FindPMMAgentsRunningOnNode(q *reform.Querier, nodeID string) ([]*Agent, error)

FindPMMAgentsRunningOnNode gets pmm-agents for node where it runs.

func RemoveAgent

func RemoveAgent(q *reform.Querier, id string, mode RemoveMode) (*Agent, error)

RemoveAgent removes Agent by ID.

func (*Agent) AfterFind

func (s *Agent) AfterFind() error

AfterFind implements reform.AfterFinder interface.

func (*Agent) BeforeInsert

func (s *Agent) BeforeInsert() error

BeforeInsert implements reform.BeforeInserter interface.

func (*Agent) BeforeUpdate

func (s *Agent) BeforeUpdate() error

BeforeUpdate implements reform.BeforeUpdater interface.

func (*Agent) DSN

func (s *Agent) DSN(service *Service, dialTimeout time.Duration, database string) string

DSN returns DSN string for accessing given Service with this Agent (and implicit driver).

func (*Agent) GetCustomLabels

func (s *Agent) GetCustomLabels() (map[string]string, error)

GetCustomLabels decodes custom labels.

func (*Agent) HasPK

func (s *Agent) HasPK() bool

HasPK returns true if record has non-zero primary key set, false otherwise.

func (*Agent) IsMySQLTablestatsGroupEnabled

func (s *Agent) IsMySQLTablestatsGroupEnabled() bool

IsMySQLTablestatsGroupEnabled returns true if mysqld_exporter tablestats group collectors should be enabled.

func (*Agent) PKPointer

func (s *Agent) PKPointer() interface{}

PKPointer returns a pointer to primary key field for that record. Returned interface{} value is never untyped nil.

func (*Agent) PKValue

func (s *Agent) PKValue() interface{}

PKValue returns a value of primary key for that record. Returned interface{} value is never untyped nil.

func (*Agent) Pointers

func (s *Agent) Pointers() []interface{}

Pointers returns a slice of pointers to struct or record fields. Returned interface{} values are never untyped nils.

func (*Agent) SetCustomLabels

func (s *Agent) SetCustomLabels(m map[string]string) error

SetCustomLabels encodes custom labels.

func (*Agent) SetPK

func (s *Agent) SetPK(pk interface{})

SetPK sets record primary key.

func (Agent) String

func (s Agent) String() string

String returns a string representation of this struct or record.

func (*Agent) Table

func (s *Agent) Table() reform.Table

Table returns Table object for that record.

func (*Agent) UnifiedLabels

func (s *Agent) UnifiedLabels() (map[string]string, error)

UnifiedLabels returns combined standard and custom labels with empty labels removed.

func (*Agent) Values

func (s *Agent) Values() []interface{}

Values returns a slice of struct or record field values. Returned interface{} values are never untyped nils.

func (*Agent) View

func (s *Agent) View() reform.View

View returns View object for that struct.

type AgentFilters

type AgentFilters struct {
	// Return only Agents started by this pmm-agent.
	PMMAgentID string
	// Return only Agents that provide insights for that Node.
	NodeID string
	// Return only Agents that provide insights for that Service.
	ServiceID string
	// Return Agents with provided type.
	AgentType *AgentType
}

AgentFilters represents filters for agents list.

type AgentType

type AgentType string

AgentType represents Agent type as stored in databases: pmm-managed's PostgreSQL, qan-api's ClickHouse, and Prometheus.

const (
	PMMAgentType                       AgentType = "pmm-agent"
	NodeExporterType                   AgentType = "node_exporter"
	MySQLdExporterType                 AgentType = "mysqld_exporter"
	MongoDBExporterType                AgentType = "mongodb_exporter"
	PostgresExporterType               AgentType = "postgres_exporter"
	ProxySQLExporterType               AgentType = "proxysql_exporter"
	RDSExporterType                    AgentType = "rds_exporter"
	QANMySQLPerfSchemaAgentType        AgentType = "qan-mysql-perfschema-agent"
	QANMySQLSlowlogAgentType           AgentType = "qan-mysql-slowlog-agent"
	QANMongoDBProfilerAgentType        AgentType = "qan-mongodb-profiler-agent"
	QANPostgreSQLPgStatementsAgentType AgentType = "qan-postgresql-pgstatements-agent"
	ExternalExporterType               AgentType = "external-exporter"
)

Agent types (in the same order as in agents.proto).

type ChangeCommonAgentParams

type ChangeCommonAgentParams struct {
	Disabled           *bool // true - disable, false - enable, nil - do not change
	CustomLabels       map[string]string
	RemoveCustomLabels bool
}

ChangeCommonAgentParams contains parameters that can be changed for all Agents.

type ChangeSettingsParams

type ChangeSettingsParams struct {
	// We don't save it to db
	DisableUpdates bool

	DisableTelemetry bool
	EnableTelemetry  bool

	MetricsResolutions MetricsResolutions

	DataRetention time.Duration

	AWSPartitions []string

	SSHKey string

	// not url.URL to keep username and password
	AlertManagerURL       string
	RemoveAlertManagerURL bool

	// Enable Security Threat Tool
	EnableSTT bool
	// Disable Security Threat Tool
	DisableSTT bool

	// Percona Platform user email
	Email string
	// Percona Platform session Id
	SessionID string
	// LogOut user from Percona Platform, i.e. remove user email and session id
	LogOut bool
}

ChangeSettingsParams contains values to change data in settings table.

type CreateAgentParams

type CreateAgentParams struct {
	PMMAgentID                     string
	NodeID                         string
	ServiceID                      string
	Username                       string
	Password                       string
	CustomLabels                   map[string]string
	TLS                            bool
	TLSSkipVerify                  bool
	TableCountTablestatsGroupLimit int32
	QueryExamplesDisabled          bool
	MaxQueryLogSize                int64
	AWSAccessKey                   string
	AWSSecretKey                   string
	RDSBasicMetricsDisabled        bool
	RDSEnhancedMetricsDisabled     bool
}

CreateAgentParams params for add common exporter.

type CreateExternalExporterParams

type CreateExternalExporterParams struct {
	RunsOnNodeID string
	ServiceID    string
	Username     string
	Password     string
	Scheme       string
	MetricsPath  string
	ListenPort   uint32
	CustomLabels map[string]string
}

CreateExternalExporterParams params for add external exporter.

type CreateNodeParams

type CreateNodeParams struct {
	NodeName      string
	MachineID     *string
	Distro        string
	NodeModel     string
	AZ            string
	ContainerID   *string
	ContainerName *string
	CustomLabels  map[string]string
	Address       string
	Region        *string
}

CreateNodeParams contains parameters for creating Nodes.

type MetricsResolutions

type MetricsResolutions struct {
	HR time.Duration `json:"hr"`
	MR time.Duration `json:"mr"`
	LR time.Duration `json:"lr"`
}

MetricsResolutions contains standard Prometheus metrics resolutions.

type Node

type Node struct {
	NodeID       string   `reform:"node_id,pk"`
	NodeType     NodeType `reform:"node_type"`
	NodeName     string   `reform:"node_name"`
	MachineID    *string  `reform:"machine_id"`
	Distro       string   `reform:"distro"`
	NodeModel    string   `reform:"node_model"`
	AZ           string   `reform:"az"`
	CustomLabels []byte   `reform:"custom_labels"`

	// Node address. Used to construct endpoint for node_exporter.
	// For RemoteRDS Nodes contains DBInstanceIdentifier (not DbiResourceId; not endpoint - that's Service address).
	Address string `reform:"address"`

	CreatedAt time.Time `reform:"created_at"`
	UpdatedAt time.Time `reform:"updated_at"`

	ContainerID   *string `reform:"container_id"` // nil means "unknown"; non-nil value must be unique
	ContainerName *string `reform:"container_name"`

	Region *string `reform:"region"` // non-nil value must be unique in combination with instance/address
}

Node represents Node as stored in database.

func CheckUniqueNodeInstanceRegion

func CheckUniqueNodeInstanceRegion(q *reform.Querier, instance string, region *string) (*Node, error)

CheckUniqueNodeInstanceRegion checks for uniqueness of instance address and region. This function not only return an error in case of finding an existing node with those paramenters but also returns the Node itself if there is any, because if we are recreating the instance (--force in pmm-admin) we need to know the Node.ID to remove it and its dependencies. This check only applies is region is not empty.

func CreateNode

func CreateNode(q *reform.Querier, nodeType NodeType, params *CreateNodeParams) (*Node, error)

CreateNode creates a Node.

func FindNodeByID

func FindNodeByID(q *reform.Querier, id string) (*Node, error)

FindNodeByID finds a Node by ID.

func FindNodeByName

func FindNodeByName(q *reform.Querier, name string) (*Node, error)

FindNodeByName finds a Node by name.

func FindNodes

func FindNodes(q *reform.Querier, filters NodeFilters) ([]*Node, error)

FindNodes returns Nodes by filters.

func FindNodesByIDs

func FindNodesByIDs(q *reform.Querier, ids []string) ([]*Node, error)

FindNodesByIDs finds Nodes by IDs.

func (*Node) AfterFind

func (s *Node) AfterFind() error

AfterFind implements reform.AfterFinder interface.

func (*Node) BeforeInsert

func (s *Node) BeforeInsert() error

BeforeInsert implements reform.BeforeInserter interface.

func (*Node) BeforeUpdate

func (s *Node) BeforeUpdate() error

BeforeUpdate implements reform.BeforeUpdater interface.

func (*Node) GetCustomLabels

func (s *Node) GetCustomLabels() (map[string]string, error)

GetCustomLabels decodes custom labels.

func (*Node) HasPK

func (s *Node) HasPK() bool

HasPK returns true if record has non-zero primary key set, false otherwise.

func (*Node) PKPointer

func (s *Node) PKPointer() interface{}

PKPointer returns a pointer to primary key field for that record. Returned interface{} value is never untyped nil.

func (*Node) PKValue

func (s *Node) PKValue() interface{}

PKValue returns a value of primary key for that record. Returned interface{} value is never untyped nil.

func (*Node) Pointers

func (s *Node) Pointers() []interface{}

Pointers returns a slice of pointers to struct or record fields. Returned interface{} values are never untyped nils.

func (*Node) SetCustomLabels

func (s *Node) SetCustomLabels(m map[string]string) error

SetCustomLabels encodes custom labels.

func (*Node) SetPK

func (s *Node) SetPK(pk interface{})

SetPK sets record primary key.

func (Node) String

func (s Node) String() string

String returns a string representation of this struct or record.

func (*Node) Table

func (s *Node) Table() reform.Table

Table returns Table object for that record.

func (*Node) UnifiedLabels

func (s *Node) UnifiedLabels() (map[string]string, error)

UnifiedLabels returns combined standard and custom labels with empty labels removed.

func (*Node) Values

func (s *Node) Values() []interface{}

Values returns a slice of struct or record field values. Returned interface{} values are never untyped nils.

func (*Node) View

func (s *Node) View() reform.View

View returns View object for that struct.

type NodeFilters

type NodeFilters struct {
	// Return Nodes with provided type.
	NodeType *NodeType
}

NodeFilters represents filters for nodes list.

type NodeType

type NodeType string

NodeType represents Node type as stored in databases: pmm-managed's PostgreSQL, qan-api's ClickHouse, and Prometheus.

const (
	GenericNodeType   NodeType = "generic"
	ContainerNodeType NodeType = "container"
	RemoteNodeType    NodeType = "remote"
	RemoteRDSNodeType NodeType = "remote_rds"
)

Node types (in the same order as in nodes.proto).

type RemoveMode

type RemoveMode int

RemoveMode defines how Remove functions deal with dependend objects.

const (
	// RemoveRestrict returns error if there dependend objects.
	RemoveRestrict RemoveMode = iota
	// RemoveCascade removes dependend objects recursively.
	RemoveCascade
)

type Service

type Service struct {
	ServiceID      string      `reform:"service_id,pk"`
	ServiceType    ServiceType `reform:"service_type"`
	ServiceName    string      `reform:"service_name"`
	NodeID         string      `reform:"node_id"`
	Environment    string      `reform:"environment"`
	Cluster        string      `reform:"cluster"`
	ReplicationSet string      `reform:"replication_set"`
	CustomLabels   []byte      `reform:"custom_labels"`
	CreatedAt      time.Time   `reform:"created_at"`
	UpdatedAt      time.Time   `reform:"updated_at"`

	Address *string `reform:"address"`
	Port    *uint16 `reform:"port"`
	Socket  *string `reform:"socket"`
}

Service represents Service as stored in database.

func AddNewService

func AddNewService(q *reform.Querier, serviceType ServiceType, params *AddDBMSServiceParams) (*Service, error)

AddNewService adds new service to storage.

func FindServiceByID

func FindServiceByID(q *reform.Querier, id string) (*Service, error)

FindServiceByID finds Service by ID.

func FindServiceByName

func FindServiceByName(q *reform.Querier, name string) (*Service, error)

FindServiceByName finds Service by Name.

func FindServices

func FindServices(q *reform.Querier, filters ServiceFilters) ([]*Service, error)

FindServices returns Services by filters.

func FindServicesByIDs

func FindServicesByIDs(q *reform.Querier, ids []string) ([]*Service, error)

FindServicesByIDs finds Services by IDs.

func (*Service) AfterFind

func (s *Service) AfterFind() error

AfterFind implements reform.AfterFinder interface.

func (*Service) BeforeInsert

func (s *Service) BeforeInsert() error

BeforeInsert implements reform.BeforeInserter interface.

func (*Service) BeforeUpdate

func (s *Service) BeforeUpdate() error

BeforeUpdate implements reform.BeforeUpdater interface.

func (*Service) GetCustomLabels

func (s *Service) GetCustomLabels() (map[string]string, error)

GetCustomLabels decodes custom labels.

func (*Service) HasPK

func (s *Service) HasPK() bool

HasPK returns true if record has non-zero primary key set, false otherwise.

func (*Service) PKPointer

func (s *Service) PKPointer() interface{}

PKPointer returns a pointer to primary key field for that record. Returned interface{} value is never untyped nil.

func (*Service) PKValue

func (s *Service) PKValue() interface{}

PKValue returns a value of primary key for that record. Returned interface{} value is never untyped nil.

func (*Service) Pointers

func (s *Service) Pointers() []interface{}

Pointers returns a slice of pointers to struct or record fields. Returned interface{} values are never untyped nils.

func (*Service) SetCustomLabels

func (s *Service) SetCustomLabels(m map[string]string) error

SetCustomLabels encodes custom labels.

func (*Service) SetPK

func (s *Service) SetPK(pk interface{})

SetPK sets record primary key.

func (Service) String

func (s Service) String() string

String returns a string representation of this struct or record.

func (*Service) Table

func (s *Service) Table() reform.Table

Table returns Table object for that record.

func (*Service) UnifiedLabels

func (s *Service) UnifiedLabels() (map[string]string, error)

UnifiedLabels returns combined standard and custom labels with empty labels removed.

func (*Service) Values

func (s *Service) Values() []interface{}

Values returns a slice of struct or record field values. Returned interface{} values are never untyped nils.

func (*Service) View

func (s *Service) View() reform.View

View returns View object for that struct.

type ServiceFilters

type ServiceFilters struct {
	// Return only Services runs on that Node.
	NodeID string
	// Return only Services with provided type.
	ServiceType *ServiceType
}

ServiceFilters represents filters for services list.

type ServiceType

type ServiceType string

ServiceType represents Service type as stored in databases: pmm-managed's PostgreSQL, qan-api's ClickHouse, and Prometheus.

const (
	MySQLServiceType      ServiceType = "mysql"
	MongoDBServiceType    ServiceType = "mongodb"
	PostgreSQLServiceType ServiceType = "postgresql"
	ProxySQLServiceType   ServiceType = "proxysql"
	ExternalServiceType   ServiceType = "external"
)

Service types (in the same order as in services.proto).

type Settings

type Settings struct {
	Telemetry struct {
		Disabled bool   `json:"disabled"`
		UUID     string `json:"uuid"`
	} `json:"telemetry"`

	MetricsResolutions MetricsResolutions `json:"metrics_resolutions"`

	DataRetention time.Duration `json:"data_retention"`

	AWSPartitions []string `json:"aws_partitions"`

	AWSInstanceChecked bool `json:"aws_instance_checked"`

	SSHKey string `json:"ssh_key"`

	// not url.URL to keep username and password
	AlertManagerURL string `json:"alert_manager_url"`

	// Saas config options
	SaaS struct {
		// Percona Platform user email
		Email string `json:"email"`
		// Percona Platform session Id
		SessionID string `json:"session_id"`
		// Security Threat Tool enabled
		STTEnabled bool `json:"stt_enabled"`
	} `json:"sass"`
}

Settings contains PMM Server settings.

func GetSettings

func GetSettings(q reform.DBTX) (*Settings, error)

GetSettings returns current PMM Server settings.

func UpdateSettings

func UpdateSettings(q reform.DBTX, params *ChangeSettingsParams) (*Settings, error)

UpdateSettings updates only non-zero, non-empty values.

type SetupDBParams

type SetupDBParams struct {
	Logf             reform.Printf
	Username         string
	Password         string
	SetupFixtures    SetupFixturesMode
	MigrationVersion *int
}

SetupDBParams represents SetupDB parameters.

type SetupFixturesMode

type SetupFixturesMode int

SetupFixturesMode defines if SetupDB adds initial data to the database or not.

const (
	// SetupFixtures adds initial data to the database.
	SetupFixtures SetupFixturesMode = iota
	// SkipFixtures skips adding initial data to the database. Useful for tests.
	SkipFixtures
)

Jump to

Keyboard shortcuts

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