Documentation
¶
Overview ¶
Package crd is the typed mission-control Connection resource (mission-control.flanksource.com/v1, kind Connection) and its conversion to models.Connection, so a connection written for mission-control is read the same way wherever commons-db resolves connections.
Ported from incident-commander 1c0236bb: api/v1/connection_types.go, api/v1/connection_smtp.go, db/connections.go (ConnectionFromCRD) and db/connection_crd_convert.go, with duty's connection.OpensearchConnection. The kopper status and controller methods are left out: nothing here reconciles a resource.
Index ¶
- Constants
- func ToModel(obj *Connection) (models.Connection, error)
- func Validate(obj *Connection) error
- func Variants(spec ConnectionSpec) []string
- type Connection
- type ConnectionAWS
- type ConnectionAWSKMS
- type ConnectionAWSS3
- type ConnectionAWSSigV4
- type ConnectionAnthropic
- type ConnectionAzure
- type ConnectionAzureDevops
- type ConnectionAzureKeyVault
- type ConnectionDiscord
- type ConnectionElasticsearch
- type ConnectionFacet
- type ConnectionFolder
- type ConnectionGCP
- type ConnectionGCPKMS
- type ConnectionGCS
- type ConnectionGemini
- type ConnectionGit
- type ConnectionGitHub
- type ConnectionGitLab
- type ConnectionHTTP
- type ConnectionKubernetes
- type ConnectionLoki
- type ConnectionMSSQL
- type ConnectionMongo
- type ConnectionMySQL
- type ConnectionNtfy
- type ConnectionOllama
- type ConnectionOpenAI
- type ConnectionOpenSearch
- type ConnectionPostgres
- type ConnectionPrometheus
- type ConnectionPushbullet
- type ConnectionPushover
- type ConnectionRedis
- type ConnectionSFTP
- type ConnectionSMB
- type ConnectionSMTP
- type ConnectionSlack
- type ConnectionSpec
- type ConnectionStatus
- type ConnectionTelegram
- type SMTPAuth
- type SMTPTLS
Constants ¶
const ( APIVersion = "mission-control.flanksource.com/v1" Kind = "Connection" )
APIVersion and Kind identify a Connection resource.
Variables ¶
This section is empty.
Functions ¶
func ToModel ¶
func ToModel(obj *Connection) (models.Connection, error)
ToModel is the models.Connection obj describes, as mission-control persists it: the typed spec mapped onto type, url, credentials and properties, with the spec's own properties merged over them. obj must pass Validate. The caller sets Source.
func Validate ¶
func Validate(obj *Connection) error
Validate refuses a connection that names no kind of connection, neither a typed variant nor the deprecated spec.type, and one that sets two variants.
func Variants ¶
func Variants(spec ConnectionSpec) []string
Variants are the typed connections spec sets, by their JSON field name.
Types ¶
type Connection ¶
type Connection struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec ConnectionSpec `json:"spec,omitempty"`
Status ConnectionStatus `json:"status,omitempty"`
}
Connection is the Schema for the connections API
func FromModel ¶
func FromModel(connection models.Connection) (*Connection, error)
FromModel is the Connection resource ToModel reads back as connection: its type, url, credentials, TLS flag and properties on the spec's generic fields, so every connection type round-trips, including those without a typed variant (sqlite, clickhouse, ...). A credential that is a reference (secret://, configmap://, helm://, serviceaccount://, op://) is written as its valueFrom. Runtime metadata (source, timestamps) is not part of a resource and is left out.
type ConnectionAWS ¶
type ConnectionAWS struct {
// AWS Endpoint
URL types.EnvVar `json:"url,omitempty"`
Region string `json:"region,omitempty"`
Profile string `json:"profile,omitempty"`
InsecureTLS bool `json:"insecureTLS,omitempty"`
AccessKey types.EnvVar `json:"accessKey,omitempty"`
SecretKey types.EnvVar `json:"secretKey,omitempty"`
SessionToken types.EnvVar `json:"sessionToken,omitempty"`
AssumeRole string `json:"assumeRole,omitempty"`
}
type ConnectionAWSKMS ¶
type ConnectionAWSKMS struct {
ConnectionAWS `json:",inline"`
// keyID can be an alias (eg: alias/ExampleAlias?region=us-east-1) or the ARN
KeyID string `json:"keyID"`
}
type ConnectionAWSS3 ¶
type ConnectionAWSS3 struct {
ConnectionAWS `json:",inline"`
Bucket string `json:"bucket"`
// Use path style path: http://s3.amazonaws.com/BUCKET/KEY instead of http://BUCKET.s3.amazonaws.com/KEY
UsePathStyle bool `yaml:"usePathStyle,omitempty" json:"usePathStyle,omitempty"`
}
type ConnectionAWSSigV4 ¶
type ConnectionAWSSigV4 struct {
ConnectionAWS `json:",inline"`
Service string `json:"service,omitempty"`
}
type ConnectionAnthropic ¶
type ConnectionAzure ¶
type ConnectionAzureDevops ¶
type ConnectionAzureKeyVault ¶
type ConnectionAzureKeyVault struct {
ConnectionAzure `json:",inline"`
// keyID is a URL to the key in the format
// https://<vault-name>.vault.azure.net/keys/<key-name>
KeyID string `json:"keyID"`
}
type ConnectionDiscord ¶
type ConnectionElasticsearch ¶
type ConnectionFacet ¶
type ConnectionFolder ¶
type ConnectionFolder struct {
Path string `json:"path"`
}
type ConnectionGCP ¶
type ConnectionGCPKMS ¶
type ConnectionGCPKMS struct {
ConnectionGCP `json:",inline"`
// keyID points to the key in the format
// projects/MYPROJECT/locations/MYLOCATION/keyRings/MYKEYRING/cryptoKeys/MYKEY
KeyID string `json:"keyID"`
}
type ConnectionGCS ¶
type ConnectionGCS struct {
ConnectionGCP `json:",inline"`
Bucket string `json:"bucket"`
}
type ConnectionGemini ¶
type ConnectionGit ¶
type ConnectionGitHub ¶
type ConnectionGitLab ¶
type ConnectionHTTP ¶
type ConnectionHTTP struct {
URL string `json:"url"`
InsecureTLS bool `json:"insecureTLS,omitempty"`
Username *types.EnvVar `json:"username,omitempty"`
Password *types.EnvVar `json:"password,omitempty"`
Bearer types.EnvVar `json:"bearer,omitempty" yaml:"bearer,omitempty"`
OAuth types.OAuth `json:"oauth,omitempty" yaml:"oauth,omitempty"`
TLS connection.TLSConfig `json:"tls,omitempty" yaml:"tls,omitempty"`
Headers []types.EnvVar `json:"headers,omitempty"`
AWSSigV4 *ConnectionAWSSigV4 `json:"awsSigV4,omitempty"`
}
type ConnectionKubernetes ¶
type ConnectionLoki ¶
type ConnectionMSSQL ¶
type ConnectionMSSQL struct {
// URL is the connection url.
URL types.EnvVar `json:"url,omitempty"`
// <host:port>
Host types.EnvVar `json:"host,omitempty"`
Username types.EnvVar `json:"username,omitempty"`
Password types.EnvVar `json:"password,omitempty"`
Database types.EnvVar `json:"database,omitempty"`
TrustServerCertificate *bool `json:"trustServerCertificate,omitempty"`
}
type ConnectionMongo ¶
type ConnectionMongo struct {
// URL is the connection url.
URL types.EnvVar `json:"url,omitempty"`
// <host:port>
Host types.EnvVar `json:"host,omitempty"`
Username types.EnvVar `json:"username,omitempty"`
Password types.EnvVar `json:"password,omitempty"`
Database types.EnvVar `json:"database,omitempty"`
ReplicaSet string `json:"replicaSet,omitempty"`
InsecureTLS bool `json:"insecureTLS,omitempty"`
}
type ConnectionMySQL ¶
type ConnectionMySQL struct {
// URL is the connection url.
URL types.EnvVar `json:"url,omitempty"`
// <host:port>
Host types.EnvVar `json:"host,omitempty"`
Username types.EnvVar `json:"username,omitempty"`
Password types.EnvVar `json:"password,omitempty"`
Database types.EnvVar `json:"database,omitempty"`
InsecureTLS bool `json:"insecureTLS,omitempty"`
}
type ConnectionNtfy ¶
type ConnectionOllama ¶
type ConnectionOpenAI ¶
type ConnectionOpenSearch ¶
type ConnectionOpenSearch struct {
types.HTTPBasicAuth `json:",inline"`
URLs []string `json:"urls,omitempty" yaml:"urls,omitempty"`
Index string `json:"index,omitempty" yaml:"index,omitempty"`
InsecureSkipVerify bool `json:"insecureSkipVerify,omitempty" yaml:"insecureSkipVerify,omitempty"`
}
ConnectionOpenSearch is duty's connection.OpensearchConnection: one or more node URLs, basic auth and a default index.
type ConnectionPostgres ¶
type ConnectionPostgres struct {
// URL is the connection url.
URL types.EnvVar `json:"url,omitempty"`
// <host:port>
Host types.EnvVar `json:"host,omitempty"`
Username types.EnvVar `json:"username,omitempty"`
Password types.EnvVar `json:"password,omitempty"`
Database types.EnvVar `json:"database,omitempty"`
InsecureTLS bool `json:"insecureTLS,omitempty"`
}
type ConnectionPrometheus ¶
type ConnectionPrometheus struct {
URL types.EnvVar `json:"url,omitempty"`
types.Authentication `json:",inline"`
Bearer types.EnvVar `json:"bearer,omitempty" yaml:"bearer,omitempty"`
OAuth types.OAuth `json:"oauth,omitempty" yaml:"oauth,omitempty"`
TLS connection.TLSConfig `json:"tls,omitempty" yaml:"tls,omitempty"`
}
type ConnectionPushbullet ¶
type ConnectionPushover ¶
type ConnectionRedis ¶
type ConnectionSFTP ¶
type ConnectionSMB ¶
type ConnectionSMTP ¶
type ConnectionSMTP struct {
Host string `json:"host"`
Username types.EnvVar `json:"username,omitempty"`
Password types.EnvVar `json:"password,omitempty"`
// Default: false
InsecureTLS bool `json:"insecureTLS,omitempty"`
// Encryption Method
// Default: auto
// Possible values: None, ExplicitTLS, ImplicitTLS, Auto
Encryption SMTPTLS `json:"encryption,omitempty"`
// SMTP server port
// Default: 587
Port int `json:"port,omitempty"`
// Email address that the mail are sent from
FromAddress string `json:"fromAddress"`
// Name that the mail are sent from
FromName string `json:"fromName"`
// List of recipient e-mails
ToAddresses []string `json:"toAddresses,omitempty"`
// The subject of the sent mail
Subject string `json:"subject,omitempty"`
// Auth - SMTP authentication method
// Possible values: none, plain, oauth2
Auth SMTPAuth `json:"auth,omitempty"`
// Headers for SMTP Server
Headers map[string]string `json:"headers,omitempty"`
}
type ConnectionSlack ¶
type ConnectionSlack struct {
Token types.EnvVar `json:"token,omitempty"`
// Channel to send messages to in Cxxxxxxxxxx format
Channel string `json:"channel,omitempty"`
BotName string `json:"botName,omitempty"`
// good, warning, danger, or any URL encoded hex color code
Color string `json:"color,omitempty"`
// emoji or URL
Icon string `json:"icon,omitempty"`
// ts value of the parent message (to send message as reply in thread)
ThreadTS string `json:"thread_ts,omitempty"`
// Prepended text above the message
Title string `json:"title,omitempty"`
}
type ConnectionSpec ¶
type ConnectionSpec struct {
Properties types.JSONStringMap `json:"properties,omitempty"`
AWS *ConnectionAWS `json:"aws,omitempty"`
AWSKMS *ConnectionAWSKMS `json:"awskms,omitempty"`
S3 *ConnectionAWSS3 `json:"s3,omitempty"`
Azure *ConnectionAzure `json:"azure,omitempty"`
AzureKeyVault *ConnectionAzureKeyVault `json:"azureKeyVault,omitempty"`
AzureDevops *ConnectionAzureDevops `json:"azureDevops,omitempty"`
GCP *ConnectionGCP `json:"gcp,omitempty"`
GCPKMS *ConnectionGCPKMS `json:"gcpkms,omitempty"`
GCS *ConnectionGCS `json:"gcs,omitempty"`
Anthropic *ConnectionAnthropic `json:"anthropic,omitempty"`
Ollama *ConnectionOllama `json:"ollama,omitempty"`
OpenAI *ConnectionOpenAI `json:"openai,omitempty"`
Gemini *ConnectionGemini `json:"gemini,omitempty"`
Elasticsearch *ConnectionElasticsearch `json:"elasticsearch,omitempty"`
Facet *ConnectionFacet `json:"facet,omitempty"`
Folder *ConnectionFolder `json:"folder,omitempty"`
Git *ConnectionGit `json:"git,omitempty"`
GitHub *ConnectionGitHub `json:"github,omitempty"`
GitLab *ConnectionGitLab `json:"gitlab,omitempty"`
HTTP *ConnectionHTTP `json:"http,omitempty"`
Kubernetes *ConnectionKubernetes `json:"kubernetes,omitempty"`
Loki *ConnectionLoki `json:"loki,omitempty"`
MSSQL *ConnectionMSSQL `json:"mssql,omitempty"`
Mongo *ConnectionMongo `json:"mongo,omitempty"`
MySQL *ConnectionMySQL `json:"mysql,omitempty"`
OpenSearch *ConnectionOpenSearch `json:"opensearch,omitempty"`
Postgres *ConnectionPostgres `json:"postgres,omitempty"`
Prometheus *ConnectionPrometheus `json:"prometheus,omitempty"`
Redis *ConnectionRedis `json:"redis,omitempty"`
SFTP *ConnectionSFTP `json:"sftp,omitempty"`
SMB *ConnectionSMB `json:"smb,omitempty"`
Discord *ConnectionDiscord `json:"discord,omitempty"`
Ntfy *ConnectionNtfy `json:"ntfy,omitempty"`
Pushbullet *ConnectionPushbullet `json:"pushbullet,omitempty"`
Pushover *ConnectionPushover `json:"pushover,omitempty"`
SMTP *ConnectionSMTP `json:"smtp,omitempty"`
Slack *ConnectionSlack `json:"slack,omitempty"`
Telegram *ConnectionTelegram `json:"telegram,omitempty"`
// DEPRECATED
URL types.EnvVar `json:"url,omitempty"`
// DEPRECATED
Port types.EnvVar `json:"port,omitempty"`
// DEPRECATED
Type string `json:"type,omitempty"`
// DEPRECATED
Username types.EnvVar `json:"username,omitempty"`
// DEPRECATED
Password types.EnvVar `json:"password,omitempty"`
// DEPRECATED
Certificate types.EnvVar `json:"certificate,omitempty"`
// DEPRECATED
InsecureTLS bool `json:"insecure_tls,omitempty"`
}
ConnectionSpec defines the desired state of Connection
type ConnectionStatus ¶
type ConnectionStatus struct {
ObservedGeneration int64 `json:"observedGeneration,omitempty" yaml:"observedGeneration,omitempty"`
Conditions []metav1.Condition `json:"conditions,omitempty" yaml:"conditions,omitempty"`
// Ref is the connection string
Ref string `json:"ref"`
}
ConnectionStatus defines the observed state of Connection