models

package
v2.0.0-beta7+incompatible Latest Latest
Warning

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

Go to latest
Published: Sep 9, 2019 License: AGPL-3.0 Imports: 19 Imported by: 0

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.

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 AgentNodeView = &agentNodeViewType{
	s: parse.StructInfo{Type: "AgentNode", SQLSchema: "", SQLName: "agent_nodes", Fields: []parse.FieldInfo{{Name: "AgentID", Type: "string", Column: "agent_id"}, {Name: "NodeID", Type: "string", Column: "node_id"}, {Name: "CreatedAt", Type: "time.Time", Column: "created_at"}}, PKFieldIndex: -1},
	z: new(AgentNode).Values(),
}

AgentNodeView represents agent_nodes view or table in SQL database.

View Source
var AgentServiceView = &agentServiceViewType{
	s: parse.StructInfo{Type: "AgentService", SQLSchema: "", SQLName: "agent_services", Fields: []parse.FieldInfo{{Name: "AgentID", Type: "string", Column: "agent_id"}, {Name: "ServiceID", Type: "string", Column: "service_id"}, {Name: "CreatedAt", Type: "time.Time", Column: "created_at"}}, PKFieldIndex: -1},
	z: new(AgentService).Values(),
}

AgentServiceView represents agent_services 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: "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: "MetricsURL", Type: "*string", Column: "metrics_url"}}, 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"}}, 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 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 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.

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
}

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

type Agent

type Agent struct {
	AgentID      string    `reform:"agent_id,pk"`
	AgentType    AgentType `reform:"agent_type"`
	RunsOnNodeID *string   `reform:"runs_on_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"`
	MetricsURL *string `reform:"metrics_url"`
}

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 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 FindAgentsByServiceIDAndAgentType

func FindAgentsByServiceIDAndAgentType(q *reform.Querier, serviceID string, agentType AgentType) ([]*Agent, error)

FindAgentsByServiceIDAndAgentType find agents by service_id and agent_type.

func FindAgentsForNode

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

FindAgentsForNode returns all Agents providing insights for given Node.

func FindAgentsForService

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

FindAgentsForService returns all Agents providing insights for given Service.

func FindAgentsRunningByPMMAgent

func FindAgentsRunningByPMMAgent(q *reform.Querier, pmmAgentID string) ([]*Agent, error)

FindAgentsRunningByPMMAgent returns all Agents running by PMMAgent.

func FindAllAgents

func FindAllAgents(q *reform.Querier) ([]*Agent, error)

FindAllAgents returns all Agents.

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) 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 AgentNode

type AgentNode struct {
	AgentID   string    `reform:"agent_id"`
	NodeID    string    `reform:"node_id"`
	CreatedAt time.Time `reform:"created_at"`
}

AgentNode implements many-to-many relationship between Agents and Nodes.

func (*AgentNode) AfterFind

func (s *AgentNode) AfterFind() error

AfterFind implements reform.AfterFinder interface.

func (*AgentNode) BeforeInsert

func (s *AgentNode) BeforeInsert() error

BeforeInsert implements reform.BeforeInserter interface.

func (*AgentNode) BeforeUpdate

func (s *AgentNode) BeforeUpdate() error

BeforeUpdate implements reform.BeforeUpdater interface.

func (*AgentNode) Pointers

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

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

func (AgentNode) String

func (s AgentNode) String() string

String returns a string representation of this struct or record.

func (*AgentNode) Values

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

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

func (*AgentNode) View

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

View returns View object for that struct.

type AgentService

type AgentService struct {
	AgentID   string    `reform:"agent_id"`
	ServiceID string    `reform:"service_id"`
	CreatedAt time.Time `reform:"created_at"`
}

AgentService implements many-to-many relationship between Agents and Services.

func (*AgentService) AfterFind

func (s *AgentService) AfterFind() error

AfterFind implements reform.AfterFinder interface.

func (*AgentService) BeforeInsert

func (s *AgentService) BeforeInsert() error

BeforeInsert implements reform.BeforeInserter interface.

func (*AgentService) BeforeUpdate

func (s *AgentService) BeforeUpdate() error

BeforeUpdate implements reform.BeforeUpdater interface.

func (*AgentService) Pointers

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

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

func (AgentService) String

func (s AgentService) String() string

String returns a string representation of this struct or record.

func (*AgentService) Values

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

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

func (*AgentService) View

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

View returns View object for that struct.

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"
	// TODO 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"
)

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 CreateAgentParams

type CreateAgentParams struct {
	PMMAgentID   string
	ServiceID    string
	Username     string
	Password     string
	CustomLabels map[string]string
}

CreateAgentParams params for add common 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"` // nil means "unknown"; non-nil value must be unique for Generic nodes
	Distro       string    `reform:"distro"`
	NodeModel    string    `reform:"node_model"`
	AZ           string    `reform:"az"`
	CustomLabels []byte    `reform:"custom_labels"`
	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"` // nil means "not Remote"; non-nil value must be unique in combination with instance/address
}

Node represents Node as stored in database.

func CreateNode

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

CreateNode creates a Node.

func FindAllNodes

func FindAllNodes(q *reform.Querier) ([]*Node, error)

FindAllNodes returns all Nodes.

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 FindNodesForAgentID

func FindNodesForAgentID(q *reform.Querier, agentID string) ([]*Node, error)

FindNodesForAgentID returns all Nodes for which Agent with given ID provides insights.

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 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"
	RemoteAmazonRDSNodeType NodeType = "remote-amazon-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"`
}

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 FindAllServices

func FindAllServices(q *reform.Querier) ([]*Service, error)

FindAllServices returns all Services.

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 ServicesForAgent

func ServicesForAgent(q *reform.Querier, agentID string) ([]*Service, error)

ServicesForAgent returns all Services for which Agent with given ID provides insights.

func ServicesForNode

func ServicesForNode(q *reform.Querier, nodeID string) ([]*Service, error)

ServicesForNode returns all Services for Node with given ID.

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 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"
)

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"`
}

Settings contains PMM Server settings.

func GetSettings

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

GetSettings returns current PMM Server settings.

type SetupDBParams

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

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