mirror of
https://github.com/minio/minio.git
synced 2024-12-28 08:05:55 -05:00
3184205519
This PR adds context-based `k=v` splits based on the sub-system which was obtained, if the keys are not provided an error will be thrown during parsing, if keys are provided with wrong values an error will be thrown. Keys can now have values which are of a much more complex form such as `k="v=v"` or `k=" v = v"` and other variations. additionally, deprecate unnecessary postgres/mysql configuration styles, support only - connection_string for Postgres - dsn_string for MySQL All other parameters are removed.
600 lines
16 KiB
Go
600 lines
16 KiB
Go
/*
|
|
* MinIO Cloud Storage, (C) 2019 MinIO, Inc.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
package notify
|
|
|
|
import (
|
|
"github.com/minio/minio/cmd/config"
|
|
"github.com/minio/minio/pkg/event/target"
|
|
)
|
|
|
|
const (
|
|
formatComment = `'namespace' reflects current bucket/object list and 'access' reflects a journal of object operations, defaults to 'namespace'`
|
|
queueDirComment = `staging dir for undelivered messages e.g. '/home/events'`
|
|
queueLimitComment = `maximum limit for undelivered messages, defaults to '10000'`
|
|
)
|
|
|
|
// Help template inputs for all notification targets
|
|
var (
|
|
HelpWebhook = config.HelpKVS{
|
|
config.HelpKV{
|
|
Key: target.WebhookEndpoint,
|
|
Description: "webhook server endpoint e.g. http://localhost:8080/minio/events",
|
|
Type: "url",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.WebhookAuthToken,
|
|
Description: "opaque string or JWT authorization token",
|
|
Optional: true,
|
|
Type: "string",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.WebhookQueueDir,
|
|
Description: queueDirComment,
|
|
Optional: true,
|
|
Type: "path",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.WebhookQueueLimit,
|
|
Description: queueLimitComment,
|
|
Optional: true,
|
|
Type: "number",
|
|
},
|
|
config.HelpKV{
|
|
Key: config.Comment,
|
|
Description: config.DefaultComment,
|
|
Optional: true,
|
|
Type: "sentence",
|
|
},
|
|
}
|
|
|
|
HelpAMQP = config.HelpKVS{
|
|
config.HelpKV{
|
|
Key: target.AmqpURL,
|
|
Description: "AMQP server endpoint e.g. `amqp://myuser:mypassword@localhost:5672`",
|
|
Type: "url",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.AmqpExchange,
|
|
Description: "name of the AMQP exchange",
|
|
Optional: true,
|
|
Type: "string",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.AmqpExchangeType,
|
|
Description: "AMQP exchange type",
|
|
Optional: true,
|
|
Type: "string",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.AmqpRoutingKey,
|
|
Description: "routing key for publishing",
|
|
Optional: true,
|
|
Type: "string",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.AmqpMandatory,
|
|
Description: "quietly ignore undelivered messages when set to 'off', default is 'on'",
|
|
Optional: true,
|
|
Type: "on|off",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.AmqpDurable,
|
|
Description: "persist queue across broker restarts when set to 'on', default is 'off'",
|
|
Optional: true,
|
|
Type: "on|off",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.AmqpNoWait,
|
|
Description: "non-blocking message delivery when set to 'on', default is 'off'",
|
|
Optional: true,
|
|
Type: "on|off",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.AmqpInternal,
|
|
Description: "set to 'on' for exchange to be not used directly by publishers, but only when bound to other exchanges",
|
|
Optional: true,
|
|
Type: "on|off",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.AmqpAutoDeleted,
|
|
Description: "auto delete queue when set to 'on', when there are no consumers",
|
|
Optional: true,
|
|
Type: "on|off",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.AmqpDeliveryMode,
|
|
Description: "set to '1' for non-persistent or '2' for persistent queue",
|
|
Optional: true,
|
|
Type: "number",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.AmqpQueueDir,
|
|
Description: queueDirComment,
|
|
Optional: true,
|
|
Type: "path",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.AmqpQueueLimit,
|
|
Description: queueLimitComment,
|
|
Optional: true,
|
|
Type: "number",
|
|
},
|
|
config.HelpKV{
|
|
Key: config.Comment,
|
|
Description: config.DefaultComment,
|
|
Optional: true,
|
|
Type: "sentence",
|
|
},
|
|
}
|
|
|
|
HelpKafka = config.HelpKVS{
|
|
config.HelpKV{
|
|
Key: target.KafkaBrokers,
|
|
Description: "comma separated list of Kafka broker addresses",
|
|
Type: "csv",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.KafkaTopic,
|
|
Description: "Kafka topic used for bucket notifications",
|
|
Optional: true,
|
|
Type: "string",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.KafkaSASLUsername,
|
|
Description: "username for SASL/PLAIN or SASL/SCRAM authentication",
|
|
Optional: true,
|
|
Type: "string",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.KafkaSASLPassword,
|
|
Description: "password for SASL/PLAIN or SASL/SCRAM authentication",
|
|
Optional: true,
|
|
Type: "string",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.KafkaSASLMechanism,
|
|
Description: "sasl authentication mechanism, default 'plain'",
|
|
Optional: true,
|
|
Type: "string",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.KafkaTLSClientAuth,
|
|
Description: "clientAuth determines the Kafka server's policy for TLS client auth",
|
|
Optional: true,
|
|
Type: "string",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.KafkaSASL,
|
|
Description: "set to 'on' to enable SASL authentication",
|
|
Optional: true,
|
|
Type: "on|off",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.KafkaTLS,
|
|
Description: "set to 'on' to enable TLS",
|
|
Optional: true,
|
|
Type: "on|off",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.KafkaTLSSkipVerify,
|
|
Description: `trust server TLS without verification, defaults to "on" (verify)`,
|
|
Optional: true,
|
|
Type: "on|off",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.KafkaClientTLSCert,
|
|
Description: "path to client certificate for mTLS auth",
|
|
Optional: true,
|
|
Type: "path",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.KafkaClientTLSKey,
|
|
Description: "path to client key for mTLS auth",
|
|
Optional: true,
|
|
Type: "path",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.KafkaQueueDir,
|
|
Description: queueDirComment,
|
|
Optional: true,
|
|
Type: "path",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.KafkaQueueLimit,
|
|
Description: queueLimitComment,
|
|
Optional: true,
|
|
Type: "number",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.KafkaVersion,
|
|
Description: "specify the version of the Kafka cluster",
|
|
Optional: true,
|
|
Type: "string",
|
|
},
|
|
config.HelpKV{
|
|
Key: config.Comment,
|
|
Description: config.DefaultComment,
|
|
Optional: true,
|
|
Type: "sentence",
|
|
},
|
|
}
|
|
|
|
HelpMQTT = config.HelpKVS{
|
|
config.HelpKV{
|
|
Key: target.MqttBroker,
|
|
Description: "MQTT server endpoint e.g. `tcp://localhost:1883`",
|
|
Type: "uri",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.MqttTopic,
|
|
Description: "name of the MQTT topic to publish",
|
|
Type: "string",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.MqttUsername,
|
|
Description: "MQTT username",
|
|
Optional: true,
|
|
Type: "string",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.MqttPassword,
|
|
Description: "MQTT password",
|
|
Optional: true,
|
|
Type: "string",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.MqttQoS,
|
|
Description: "set the quality of service priority, defaults to '0'",
|
|
Optional: true,
|
|
Type: "number",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.MqttKeepAliveInterval,
|
|
Description: "keep-alive interval for MQTT connections in s,m,h,d",
|
|
Optional: true,
|
|
Type: "duration",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.MqttReconnectInterval,
|
|
Description: "reconnect interval for MQTT connections in s,m,h,d",
|
|
Optional: true,
|
|
Type: "duration",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.MqttQueueDir,
|
|
Description: queueDirComment,
|
|
Optional: true,
|
|
Type: "path",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.MqttQueueLimit,
|
|
Description: queueLimitComment,
|
|
Optional: true,
|
|
Type: "number",
|
|
},
|
|
config.HelpKV{
|
|
Key: config.Comment,
|
|
Description: config.DefaultComment,
|
|
Optional: true,
|
|
Type: "sentence",
|
|
},
|
|
}
|
|
|
|
HelpPostgres = config.HelpKVS{
|
|
config.HelpKV{
|
|
Key: target.PostgresConnectionString,
|
|
Description: `Postgres server connection-string e.g. "host=localhost port=5432 dbname=minio_events user=postgres password=password sslmode=disable"`,
|
|
Type: "string",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.PostgresTable,
|
|
Description: "DB table name to store/update events, table is auto-created",
|
|
Type: "string",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.PostgresFormat,
|
|
Description: formatComment,
|
|
Type: "namespace*|access",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.PostgresQueueDir,
|
|
Description: queueDirComment,
|
|
Optional: true,
|
|
Type: "path",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.PostgresQueueLimit,
|
|
Description: queueLimitComment,
|
|
Optional: true,
|
|
Type: "number",
|
|
},
|
|
config.HelpKV{
|
|
Key: config.Comment,
|
|
Description: config.DefaultComment,
|
|
Optional: true,
|
|
Type: "sentence",
|
|
},
|
|
}
|
|
|
|
HelpMySQL = config.HelpKVS{
|
|
config.HelpKV{
|
|
Key: target.MySQLDSNString,
|
|
Description: `MySQL data-source-name connection string e.g. "<user>:<password>@tcp(<host>:<port>)/<database>"`,
|
|
Optional: true,
|
|
Type: "string",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.MySQLTable,
|
|
Description: "DB table name to store/update events, table is auto-created",
|
|
Type: "string",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.MySQLFormat,
|
|
Description: formatComment,
|
|
Type: "namespace*|access",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.MySQLQueueDir,
|
|
Description: queueDirComment,
|
|
Optional: true,
|
|
Type: "path",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.MySQLQueueLimit,
|
|
Description: queueLimitComment,
|
|
Optional: true,
|
|
Type: "number",
|
|
},
|
|
config.HelpKV{
|
|
Key: config.Comment,
|
|
Description: config.DefaultComment,
|
|
Optional: true,
|
|
Type: "sentence",
|
|
},
|
|
}
|
|
|
|
HelpNATS = config.HelpKVS{
|
|
config.HelpKV{
|
|
Key: target.NATSAddress,
|
|
Description: "NATS server address e.g. '0.0.0.0:4222'",
|
|
Type: "address",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.NATSSubject,
|
|
Description: "NATS subscription subject",
|
|
Type: "string",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.NATSUsername,
|
|
Description: "NATS username",
|
|
Optional: true,
|
|
Type: "string",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.NATSPassword,
|
|
Description: "NATS password",
|
|
Optional: true,
|
|
Type: "string",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.NATSToken,
|
|
Description: "NATS token",
|
|
Optional: true,
|
|
Type: "string",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.NATSTLS,
|
|
Description: "set to 'on' to enable TLS",
|
|
Optional: true,
|
|
Type: "on|off",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.NATSTLSSkipVerify,
|
|
Description: `trust server TLS without verification, defaults to "on" (verify)`,
|
|
Optional: true,
|
|
Type: "on|off",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.NATSPingInterval,
|
|
Description: "client ping commands interval in s,m,h,d. Disabled by default",
|
|
Optional: true,
|
|
Type: "duration",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.NATSStreaming,
|
|
Description: "set to 'on', to use streaming NATS server",
|
|
Optional: true,
|
|
Type: "on|off",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.NATSStreamingAsync,
|
|
Description: "set to 'on', to enable asynchronous publish",
|
|
Optional: true,
|
|
Type: "on|off",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.NATSStreamingMaxPubAcksInFlight,
|
|
Description: "number of messages to publish without waiting for ACKs",
|
|
Optional: true,
|
|
Type: "number",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.NATSStreamingClusterID,
|
|
Description: "unique ID for NATS streaming cluster",
|
|
Optional: true,
|
|
Type: "string",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.NATSCertAuthority,
|
|
Description: "path to certificate chain of the target NATS server",
|
|
Optional: true,
|
|
Type: "string",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.NATSClientCert,
|
|
Description: "client cert for NATS mTLS auth",
|
|
Optional: true,
|
|
Type: "string",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.NATSClientKey,
|
|
Description: "client cert key for NATS mTLS auth",
|
|
Optional: true,
|
|
Type: "string",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.NATSQueueDir,
|
|
Description: queueDirComment,
|
|
Optional: true,
|
|
Type: "path",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.NATSQueueLimit,
|
|
Description: queueLimitComment,
|
|
Optional: true,
|
|
Type: "number",
|
|
},
|
|
config.HelpKV{
|
|
Key: config.Comment,
|
|
Description: config.DefaultComment,
|
|
Optional: true,
|
|
Type: "sentence",
|
|
},
|
|
}
|
|
|
|
HelpNSQ = config.HelpKVS{
|
|
config.HelpKV{
|
|
Key: target.NSQAddress,
|
|
Description: "NSQ server address e.g. '127.0.0.1:4150'",
|
|
Type: "address",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.NSQTopic,
|
|
Description: "NSQ topic",
|
|
Type: "string",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.NSQTLS,
|
|
Description: "set to 'on' to enable TLS",
|
|
Optional: true,
|
|
Type: "on|off",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.NSQTLSSkipVerify,
|
|
Description: `trust server TLS without verification, defaults to "on" (verify)`,
|
|
Optional: true,
|
|
Type: "on|off",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.NSQQueueDir,
|
|
Description: queueDirComment,
|
|
Optional: true,
|
|
Type: "path",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.NSQQueueLimit,
|
|
Description: queueLimitComment,
|
|
Optional: true,
|
|
Type: "number",
|
|
},
|
|
config.HelpKV{
|
|
Key: config.Comment,
|
|
Description: config.DefaultComment,
|
|
Optional: true,
|
|
Type: "sentence",
|
|
},
|
|
}
|
|
|
|
HelpES = config.HelpKVS{
|
|
config.HelpKV{
|
|
Key: target.ElasticURL,
|
|
Description: "Elasticsearch server's address, with optional authentication info",
|
|
Type: "url",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.ElasticIndex,
|
|
Description: `Elasticsearch index to store/update events, index is auto-created`,
|
|
Type: "string",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.ElasticFormat,
|
|
Description: formatComment,
|
|
Type: "namespace*|access",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.ElasticQueueDir,
|
|
Description: queueDirComment,
|
|
Optional: true,
|
|
Type: "path",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.ElasticQueueLimit,
|
|
Description: queueLimitComment,
|
|
Optional: true,
|
|
Type: "number",
|
|
},
|
|
config.HelpKV{
|
|
Key: config.Comment,
|
|
Description: config.DefaultComment,
|
|
Optional: true,
|
|
Type: "sentence",
|
|
},
|
|
}
|
|
|
|
HelpRedis = config.HelpKVS{
|
|
config.HelpKV{
|
|
Key: target.RedisAddress,
|
|
Description: "Redis server's address. For example: `localhost:6379`",
|
|
Type: "address",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.RedisKey,
|
|
Description: "Redis key to store/update events, key is auto-created",
|
|
Type: "string",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.RedisFormat,
|
|
Description: formatComment,
|
|
Type: "namespace*|access",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.RedisPassword,
|
|
Description: "Redis server password",
|
|
Optional: true,
|
|
Type: "string",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.RedisQueueDir,
|
|
Description: queueDirComment,
|
|
Optional: true,
|
|
Type: "path",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.RedisQueueLimit,
|
|
Description: queueLimitComment,
|
|
Optional: true,
|
|
Type: "number",
|
|
},
|
|
config.HelpKV{
|
|
Key: config.Comment,
|
|
Description: config.DefaultComment,
|
|
Optional: true,
|
|
Type: "sentence",
|
|
},
|
|
}
|
|
)
|