mirror of
https://github.com/minio/minio.git
synced 2024-12-26 15:15:55 -05:00
476111968a
Final update to all messages across sub-systems after final review, the only change here is that NATS now has TLS and TLSSkipVerify to be consistent for all other notification targets.
647 lines
17 KiB
Go
647 lines
17 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.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: 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",
|
|
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.PostgresHost,
|
|
Description: "Postgres server hostname (used only if `connection_string` is empty)",
|
|
Optional: true,
|
|
Type: "hostname",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.PostgresPort,
|
|
Description: "Postgres server port, defaults to `5432` (used only if `connection_string` is empty)",
|
|
Optional: true,
|
|
Type: "port",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.PostgresUsername,
|
|
Description: "database username (used only if `connection_string` is empty)",
|
|
Optional: true,
|
|
Type: "string",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.PostgresPassword,
|
|
Description: "database password (used only if `connection_string` is empty)",
|
|
Optional: true,
|
|
Type: "string",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.PostgresDatabase,
|
|
Description: "database name (used only if `connection_string` is empty)",
|
|
Optional: true,
|
|
Type: "string",
|
|
},
|
|
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",
|
|
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.MySQLHost,
|
|
Description: "MySQL server hostname (used only if `dsn_string` is empty)",
|
|
Optional: true,
|
|
Type: "hostname",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.MySQLPort,
|
|
Description: "MySQL server port (used only if `dsn_string` is empty)",
|
|
Optional: true,
|
|
Type: "port",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.MySQLUsername,
|
|
Description: "database username (used only if `dsn_string` is empty)",
|
|
Optional: true,
|
|
Type: "string",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.MySQLPassword,
|
|
Description: "database password (used only if `dsn_string` is empty)",
|
|
Optional: true,
|
|
Type: "string",
|
|
},
|
|
config.HelpKV{
|
|
Key: target.MySQLDatabase,
|
|
Description: "database name (used only if `dsn_string` is empty)",
|
|
Optional: true,
|
|
Type: "string",
|
|
},
|
|
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",
|
|
},
|
|
}
|
|
)
|