diff --git a/src/commands.c b/src/commands.c index f08a86a77..78fe7599c 100644 --- a/src/commands.c +++ b/src/commands.c @@ -3610,6 +3610,12 @@ struct redisCommand SCRIPT_Subcommands[] = { /* SENTINEL CKQUORUM tips */ #define SENTINEL_CKQUORUM_tips NULL +/* SENTINEL CKQUORUM argument table */ +struct redisCommandArg SENTINEL_CKQUORUM_Args[] = { +{"master-name",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE}, +{0} +}; + /********** SENTINEL CONFIG ********************/ /* SENTINEL CONFIG history */ @@ -3618,6 +3624,26 @@ struct redisCommand SCRIPT_Subcommands[] = { /* SENTINEL CONFIG tips */ #define SENTINEL_CONFIG_tips NULL +/* SENTINEL CONFIG set_or_get set_param_value argument table */ +struct redisCommandArg SENTINEL_CONFIG_set_or_get_set_param_value_Subargs[] = { +{"parameter",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE}, +{"value",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE}, +{0} +}; + +/* SENTINEL CONFIG set_or_get argument table */ +struct redisCommandArg SENTINEL_CONFIG_set_or_get_Subargs[] = { +{"set_param_value",ARG_TYPE_BLOCK,-1,"SET",NULL,NULL,CMD_ARG_MULTIPLE,.subargs=SENTINEL_CONFIG_set_or_get_set_param_value_Subargs}, +{"parameter",ARG_TYPE_STRING,-1,"GET",NULL,NULL,CMD_ARG_MULTIPLE}, +{0} +}; + +/* SENTINEL CONFIG argument table */ +struct redisCommandArg SENTINEL_CONFIG_Args[] = { +{"set_or_get",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_NONE,.subargs=SENTINEL_CONFIG_set_or_get_Subargs}, +{0} +}; + /********** SENTINEL DEBUG ********************/ /* SENTINEL DEBUG history */ @@ -3626,6 +3652,19 @@ struct redisCommand SCRIPT_Subcommands[] = { /* SENTINEL DEBUG tips */ #define SENTINEL_DEBUG_tips NULL +/* SENTINEL DEBUG parameter_value argument table */ +struct redisCommandArg SENTINEL_DEBUG_parameter_value_Subargs[] = { +{"parameter",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE}, +{"value",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE}, +{0} +}; + +/* SENTINEL DEBUG argument table */ +struct redisCommandArg SENTINEL_DEBUG_Args[] = { +{"parameter_value",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE,.subargs=SENTINEL_DEBUG_parameter_value_Subargs}, +{0} +}; + /********** SENTINEL FAILOVER ********************/ /* SENTINEL FAILOVER history */ @@ -3634,6 +3673,12 @@ struct redisCommand SCRIPT_Subcommands[] = { /* SENTINEL FAILOVER tips */ #define SENTINEL_FAILOVER_tips NULL +/* SENTINEL FAILOVER argument table */ +struct redisCommandArg SENTINEL_FAILOVER_Args[] = { +{"master-name",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE}, +{0} +}; + /********** SENTINEL FLUSHCONFIG ********************/ /* SENTINEL FLUSHCONFIG history */ @@ -3650,6 +3695,12 @@ struct redisCommand SCRIPT_Subcommands[] = { /* SENTINEL GET_MASTER_ADDR_BY_NAME tips */ #define SENTINEL_GET_MASTER_ADDR_BY_NAME_tips NULL +/* SENTINEL GET_MASTER_ADDR_BY_NAME argument table */ +struct redisCommandArg SENTINEL_GET_MASTER_ADDR_BY_NAME_Args[] = { +{"master-name",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE}, +{0} +}; + /********** SENTINEL HELP ********************/ /* SENTINEL HELP history */ @@ -3666,6 +3717,12 @@ struct redisCommand SCRIPT_Subcommands[] = { /* SENTINEL INFO_CACHE tips */ #define SENTINEL_INFO_CACHE_tips NULL +/* SENTINEL INFO_CACHE argument table */ +struct redisCommandArg SENTINEL_INFO_CACHE_Args[] = { +{"nodename",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE}, +{0} +}; + /********** SENTINEL IS_MASTER_DOWN_BY_ADDR ********************/ /* SENTINEL IS_MASTER_DOWN_BY_ADDR history */ @@ -3674,6 +3731,15 @@ struct redisCommand SCRIPT_Subcommands[] = { /* SENTINEL IS_MASTER_DOWN_BY_ADDR tips */ #define SENTINEL_IS_MASTER_DOWN_BY_ADDR_tips NULL +/* SENTINEL IS_MASTER_DOWN_BY_ADDR argument table */ +struct redisCommandArg SENTINEL_IS_MASTER_DOWN_BY_ADDR_Args[] = { +{"ip",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE}, +{"port",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE}, +{"current-epoch",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE}, +{"runid",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE}, +{0} +}; + /********** SENTINEL MASTER ********************/ /* SENTINEL MASTER history */ @@ -3682,6 +3748,12 @@ struct redisCommand SCRIPT_Subcommands[] = { /* SENTINEL MASTER tips */ #define SENTINEL_MASTER_tips NULL +/* SENTINEL MASTER argument table */ +struct redisCommandArg SENTINEL_MASTER_Args[] = { +{"master-name",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE}, +{0} +}; + /********** SENTINEL MASTERS ********************/ /* SENTINEL MASTERS history */ @@ -3698,6 +3770,15 @@ struct redisCommand SCRIPT_Subcommands[] = { /* SENTINEL MONITOR tips */ #define SENTINEL_MONITOR_tips NULL +/* SENTINEL MONITOR argument table */ +struct redisCommandArg SENTINEL_MONITOR_Args[] = { +{"name",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE}, +{"ip",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE}, +{"port",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE}, +{"quorum",ARG_TYPE_INTEGER,-1,NULL,NULL,NULL,CMD_ARG_NONE}, +{0} +}; + /********** SENTINEL MYID ********************/ /* SENTINEL MYID history */ @@ -3722,6 +3803,12 @@ struct redisCommand SCRIPT_Subcommands[] = { /* SENTINEL REMOVE tips */ #define SENTINEL_REMOVE_tips NULL +/* SENTINEL REMOVE argument table */ +struct redisCommandArg SENTINEL_REMOVE_Args[] = { +{"master-name",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE}, +{0} +}; + /********** SENTINEL REPLICAS ********************/ /* SENTINEL REPLICAS history */ @@ -3730,6 +3817,12 @@ struct redisCommand SCRIPT_Subcommands[] = { /* SENTINEL REPLICAS tips */ #define SENTINEL_REPLICAS_tips NULL +/* SENTINEL REPLICAS argument table */ +struct redisCommandArg SENTINEL_REPLICAS_Args[] = { +{"master-name",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE}, +{0} +}; + /********** SENTINEL RESET ********************/ /* SENTINEL RESET history */ @@ -3738,6 +3831,12 @@ struct redisCommand SCRIPT_Subcommands[] = { /* SENTINEL RESET tips */ #define SENTINEL_RESET_tips NULL +/* SENTINEL RESET argument table */ +struct redisCommandArg SENTINEL_RESET_Args[] = { +{"pattern",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE}, +{0} +}; + /********** SENTINEL SENTINELS ********************/ /* SENTINEL SENTINELS history */ @@ -3746,6 +3845,12 @@ struct redisCommand SCRIPT_Subcommands[] = { /* SENTINEL SENTINELS tips */ #define SENTINEL_SENTINELS_tips NULL +/* SENTINEL SENTINELS argument table */ +struct redisCommandArg SENTINEL_SENTINELS_Args[] = { +{"master-name",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE}, +{0} +}; + /********** SENTINEL SET ********************/ /* SENTINEL SET history */ @@ -3754,6 +3859,20 @@ struct redisCommand SCRIPT_Subcommands[] = { /* SENTINEL SET tips */ #define SENTINEL_SET_tips NULL +/* SENTINEL SET option_value argument table */ +struct redisCommandArg SENTINEL_SET_option_value_Subargs[] = { +{"option",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE}, +{"value",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE}, +{0} +}; + +/* SENTINEL SET argument table */ +struct redisCommandArg SENTINEL_SET_Args[] = { +{"master-name",ARG_TYPE_STRING,-1,NULL,NULL,NULL,CMD_ARG_NONE}, +{"option_value",ARG_TYPE_BLOCK,-1,NULL,NULL,NULL,CMD_ARG_MULTIPLE,.subargs=SENTINEL_SET_option_value_Subargs}, +{0} +}; + /********** SENTINEL SIMULATE_FAILURE ********************/ /* SENTINEL SIMULATE_FAILURE history */ @@ -3762,28 +3881,42 @@ struct redisCommand SCRIPT_Subcommands[] = { /* SENTINEL SIMULATE_FAILURE tips */ #define SENTINEL_SIMULATE_FAILURE_tips NULL +/* SENTINEL SIMULATE_FAILURE mode argument table */ +struct redisCommandArg SENTINEL_SIMULATE_FAILURE_mode_Subargs[] = { +{"crash-after-election",ARG_TYPE_PURE_TOKEN,-1,NULL,NULL,NULL,CMD_ARG_NONE}, +{"crash-after-promotion",ARG_TYPE_PURE_TOKEN,-1,NULL,NULL,NULL,CMD_ARG_NONE}, +{"help",ARG_TYPE_PURE_TOKEN,-1,NULL,NULL,NULL,CMD_ARG_NONE}, +{0} +}; + +/* SENTINEL SIMULATE_FAILURE argument table */ +struct redisCommandArg SENTINEL_SIMULATE_FAILURE_Args[] = { +{"mode",ARG_TYPE_ONEOF,-1,NULL,NULL,NULL,CMD_ARG_OPTIONAL|CMD_ARG_MULTIPLE,.subargs=SENTINEL_SIMULATE_FAILURE_mode_Subargs}, +{0} +}; + /* SENTINEL command table */ struct redisCommand SENTINEL_Subcommands[] = { -{"ckquorum","Check for a Sentinel quorum",NULL,"2.8.4",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_CKQUORUM_History,SENTINEL_CKQUORUM_tips,sentinelCommand,3,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0}, -{"config","Configure Sentinel","O(1)","6.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_CONFIG_History,SENTINEL_CONFIG_tips,sentinelCommand,-3,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0}, -{"debug","List or update the current configurable parameters","O(N) where N is the number of configurable parameters","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_DEBUG_History,SENTINEL_DEBUG_tips,sentinelCommand,-2,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0}, -{"failover","Force a failover",NULL,"2.8.4",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_FAILOVER_History,SENTINEL_FAILOVER_tips,sentinelCommand,3,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0}, +{"ckquorum","Check for a Sentinel quorum",NULL,"2.8.4",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_CKQUORUM_History,SENTINEL_CKQUORUM_tips,sentinelCommand,3,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0,.args=SENTINEL_CKQUORUM_Args}, +{"config","Configure Sentinel","O(1)","6.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_CONFIG_History,SENTINEL_CONFIG_tips,sentinelCommand,-3,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0,.args=SENTINEL_CONFIG_Args}, +{"debug","List or update the current configurable parameters","O(N) where N is the number of configurable parameters","7.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_DEBUG_History,SENTINEL_DEBUG_tips,sentinelCommand,-2,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0,.args=SENTINEL_DEBUG_Args}, +{"failover","Force a failover",NULL,"2.8.4",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_FAILOVER_History,SENTINEL_FAILOVER_tips,sentinelCommand,3,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0,.args=SENTINEL_FAILOVER_Args}, {"flushconfig","Rewrite configuration file","O(1)","2.8.4",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_FLUSHCONFIG_History,SENTINEL_FLUSHCONFIG_tips,sentinelCommand,2,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0}, -{"get-master-addr-by-name","Get port and address of a master","O(1)","2.8.4",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_GET_MASTER_ADDR_BY_NAME_History,SENTINEL_GET_MASTER_ADDR_BY_NAME_tips,sentinelCommand,3,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0}, +{"get-master-addr-by-name","Get port and address of a master","O(1)","2.8.4",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_GET_MASTER_ADDR_BY_NAME_History,SENTINEL_GET_MASTER_ADDR_BY_NAME_tips,sentinelCommand,3,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0,.args=SENTINEL_GET_MASTER_ADDR_BY_NAME_Args}, {"help","Show helpful text about the different subcommands","O(1)","6.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_HELP_History,SENTINEL_HELP_tips,sentinelCommand,2,CMD_LOADING|CMD_STALE|CMD_SENTINEL|CMD_ONLY_SENTINEL,0}, -{"info-cache","Get cached INFO from the instances in the deployment","O(N) where N is the number of instances","3.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_INFO_CACHE_History,SENTINEL_INFO_CACHE_tips,sentinelCommand,3,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0}, -{"is-master-down-by-addr","Check if a master is down","O(1)","2.8.4",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_IS_MASTER_DOWN_BY_ADDR_History,SENTINEL_IS_MASTER_DOWN_BY_ADDR_tips,sentinelCommand,6,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0}, -{"master","Shows the state of a master","O(1)","2.8.4",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_MASTER_History,SENTINEL_MASTER_tips,sentinelCommand,3,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0}, +{"info-cache","Get cached INFO from the instances in the deployment","O(N) where N is the number of instances","3.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_INFO_CACHE_History,SENTINEL_INFO_CACHE_tips,sentinelCommand,-3,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0,.args=SENTINEL_INFO_CACHE_Args}, +{"is-master-down-by-addr","Check if a master is down","O(1)","2.8.4",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_IS_MASTER_DOWN_BY_ADDR_History,SENTINEL_IS_MASTER_DOWN_BY_ADDR_tips,sentinelCommand,6,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0,.args=SENTINEL_IS_MASTER_DOWN_BY_ADDR_Args}, +{"master","Shows the state of a master","O(1)","2.8.4",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_MASTER_History,SENTINEL_MASTER_tips,sentinelCommand,3,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0,.args=SENTINEL_MASTER_Args}, {"masters","List the monitored masters","O(N) where N is the number of masters","2.8.4",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_MASTERS_History,SENTINEL_MASTERS_tips,sentinelCommand,2,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0}, -{"monitor","Start monitoring","O(1)","2.8.4",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_MONITOR_History,SENTINEL_MONITOR_tips,sentinelCommand,6,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0}, +{"monitor","Start monitoring","O(1)","2.8.4",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_MONITOR_History,SENTINEL_MONITOR_tips,sentinelCommand,6,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0,.args=SENTINEL_MONITOR_Args}, {"myid","Get the Sentinel instance ID","O(1)","6.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_MYID_History,SENTINEL_MYID_tips,sentinelCommand,2,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0}, {"pending-scripts","Get information about pending scripts",NULL,"2.8.4",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_PENDING_SCRIPTS_History,SENTINEL_PENDING_SCRIPTS_tips,sentinelCommand,2,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0}, -{"remove","Stop monitoring","O(1)","2.8.4",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_REMOVE_History,SENTINEL_REMOVE_tips,sentinelCommand,3,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0}, -{"replicas","List the monitored replicas","O(N) where N is the number of replicas","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_REPLICAS_History,SENTINEL_REPLICAS_tips,sentinelCommand,3,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0}, -{"reset","Reset masters by name pattern","O(N) where N is the number of monitored masters","2.8.4",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_RESET_History,SENTINEL_RESET_tips,sentinelCommand,3,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0}, -{"sentinels","List the Sentinel instances","O(N) where N is the number of Sentinels","2.8.4",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_SENTINELS_History,SENTINEL_SENTINELS_tips,sentinelCommand,3,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0}, -{"set","Change the configuration of a monitored master","O(1)","2.8.4",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_SET_History,SENTINEL_SET_tips,sentinelCommand,-5,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0}, -{"simulate-failure","Simulate failover scenarios",NULL,"3.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_SIMULATE_FAILURE_History,SENTINEL_SIMULATE_FAILURE_tips,sentinelCommand,-3,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0}, +{"remove","Stop monitoring","O(1)","2.8.4",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_REMOVE_History,SENTINEL_REMOVE_tips,sentinelCommand,3,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0,.args=SENTINEL_REMOVE_Args}, +{"replicas","List the monitored replicas","O(N) where N is the number of replicas","5.0.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_REPLICAS_History,SENTINEL_REPLICAS_tips,sentinelCommand,3,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0,.args=SENTINEL_REPLICAS_Args}, +{"reset","Reset masters by name pattern","O(N) where N is the number of monitored masters","2.8.4",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_RESET_History,SENTINEL_RESET_tips,sentinelCommand,3,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0,.args=SENTINEL_RESET_Args}, +{"sentinels","List the Sentinel instances","O(N) where N is the number of Sentinels","2.8.4",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_SENTINELS_History,SENTINEL_SENTINELS_tips,sentinelCommand,3,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0,.args=SENTINEL_SENTINELS_Args}, +{"set","Change the configuration of a monitored master","O(1)","2.8.4",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_SET_History,SENTINEL_SET_tips,sentinelCommand,-5,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0,.args=SENTINEL_SET_Args}, +{"simulate-failure","Simulate failover scenarios",NULL,"3.2.0",CMD_DOC_NONE,NULL,NULL,COMMAND_GROUP_SENTINEL,SENTINEL_SIMULATE_FAILURE_History,SENTINEL_SIMULATE_FAILURE_tips,sentinelCommand,-3,CMD_ADMIN|CMD_SENTINEL|CMD_ONLY_SENTINEL,0,.args=SENTINEL_SIMULATE_FAILURE_Args}, {0} }; diff --git a/src/commands/sentinel-ckquorum.json b/src/commands/sentinel-ckquorum.json index b49e2abc6..6180614cc 100644 --- a/src/commands/sentinel-ckquorum.json +++ b/src/commands/sentinel-ckquorum.json @@ -10,6 +10,12 @@ "ADMIN", "SENTINEL", "ONLY_SENTINEL" + ], + "arguments": [ + { + "name": "master-name", + "type": "string" + } ] } } diff --git a/src/commands/sentinel-config.json b/src/commands/sentinel-config.json index 02a1f3730..c977341f3 100644 --- a/src/commands/sentinel-config.json +++ b/src/commands/sentinel-config.json @@ -11,6 +11,36 @@ "ADMIN", "SENTINEL", "ONLY_SENTINEL" + ], + "arguments":[ + { + "name":"set_or_get", + "type":"oneof", + "arguments":[ + { + "name":"set_param_value", + "token":"SET", + "type":"block", + "multiple":true, + "arguments":[ + { + "name":"parameter", + "type":"string" + }, + { + "name":"value", + "type":"string" + } + ] + }, + { + "token":"GET", + "multiple":true, + "name":"parameter", + "type":"string" + } + ] + } ] } } diff --git a/src/commands/sentinel-debug.json b/src/commands/sentinel-debug.json index 44c6bec9b..b3335409d 100644 --- a/src/commands/sentinel-debug.json +++ b/src/commands/sentinel-debug.json @@ -11,6 +11,23 @@ "ADMIN", "SENTINEL", "ONLY_SENTINEL" + ], + "arguments": [ + { + "name": "parameter_value", + "type": "block", + "multiple": true, + "arguments": [ + { + "name": "parameter", + "type": "string" + }, + { + "name": "value", + "type": "string" + } + ] + } ] } } diff --git a/src/commands/sentinel-failover.json b/src/commands/sentinel-failover.json index 346528e88..f6640168a 100644 --- a/src/commands/sentinel-failover.json +++ b/src/commands/sentinel-failover.json @@ -10,6 +10,12 @@ "ADMIN", "SENTINEL", "ONLY_SENTINEL" + ], + "arguments": [ + { + "name": "master-name", + "type": "string" + } ] } } diff --git a/src/commands/sentinel-get-master-addr-by-name.json b/src/commands/sentinel-get-master-addr-by-name.json index 7489649c3..e0fde851c 100644 --- a/src/commands/sentinel-get-master-addr-by-name.json +++ b/src/commands/sentinel-get-master-addr-by-name.json @@ -11,6 +11,12 @@ "ADMIN", "SENTINEL", "ONLY_SENTINEL" + ], + "arguments": [ + { + "name": "master-name", + "type": "string" + } ] } } diff --git a/src/commands/sentinel-info-cache.json b/src/commands/sentinel-info-cache.json index db63ae25e..5c7855663 100644 --- a/src/commands/sentinel-info-cache.json +++ b/src/commands/sentinel-info-cache.json @@ -4,13 +4,20 @@ "complexity": "O(N) where N is the number of instances", "group": "sentinel", "since": "3.2.0", - "arity": 3, + "arity": -3, "container": "SENTINEL", "function": "sentinelCommand", "command_flags": [ "ADMIN", "SENTINEL", "ONLY_SENTINEL" + ], + "arguments": [ + { + "name": "nodename", + "type": "string", + "multiple": true + } ] } } diff --git a/src/commands/sentinel-is-master-down-by-addr.json b/src/commands/sentinel-is-master-down-by-addr.json index af5ce9ad5..456ad183a 100644 --- a/src/commands/sentinel-is-master-down-by-addr.json +++ b/src/commands/sentinel-is-master-down-by-addr.json @@ -11,6 +11,24 @@ "ADMIN", "SENTINEL", "ONLY_SENTINEL" + ], + "arguments": [ + { + "name": "ip", + "type": "string" + }, + { + "name": "port", + "type": "integer" + }, + { + "name": "current-epoch", + "type": "integer" + }, + { + "name": "runid", + "type": "string" + } ] } } diff --git a/src/commands/sentinel-master.json b/src/commands/sentinel-master.json index 6935332d3..ec10f43fd 100644 --- a/src/commands/sentinel-master.json +++ b/src/commands/sentinel-master.json @@ -11,6 +11,12 @@ "ADMIN", "SENTINEL", "ONLY_SENTINEL" + ], + "arguments": [ + { + "name": "master-name", + "type": "string" + } ] } } diff --git a/src/commands/sentinel-monitor.json b/src/commands/sentinel-monitor.json index 7b115ab4e..2c01df900 100644 --- a/src/commands/sentinel-monitor.json +++ b/src/commands/sentinel-monitor.json @@ -11,6 +11,24 @@ "ADMIN", "SENTINEL", "ONLY_SENTINEL" + ], + "arguments": [ + { + "name": "name", + "type": "string" + }, + { + "name": "ip", + "type": "string" + }, + { + "name": "port", + "type": "integer" + }, + { + "name": "quorum", + "type": "integer" + } ] } } diff --git a/src/commands/sentinel-remove.json b/src/commands/sentinel-remove.json index 0c499ab97..2e655e7f4 100644 --- a/src/commands/sentinel-remove.json +++ b/src/commands/sentinel-remove.json @@ -11,6 +11,12 @@ "ADMIN", "SENTINEL", "ONLY_SENTINEL" + ], + "arguments": [ + { + "name": "master-name", + "type": "string" + } ] } } diff --git a/src/commands/sentinel-replicas.json b/src/commands/sentinel-replicas.json index f0a987346..dc175a7ec 100644 --- a/src/commands/sentinel-replicas.json +++ b/src/commands/sentinel-replicas.json @@ -11,6 +11,12 @@ "ADMIN", "SENTINEL", "ONLY_SENTINEL" + ], + "arguments": [ + { + "name": "master-name", + "type": "string" + } ] } } diff --git a/src/commands/sentinel-reset.json b/src/commands/sentinel-reset.json index dc9fadd3a..bf12c6f0a 100644 --- a/src/commands/sentinel-reset.json +++ b/src/commands/sentinel-reset.json @@ -11,6 +11,12 @@ "ADMIN", "SENTINEL", "ONLY_SENTINEL" + ], + "arguments": [ + { + "name": "pattern", + "type": "string" + } ] } } diff --git a/src/commands/sentinel-sentinels.json b/src/commands/sentinel-sentinels.json index c61435278..01319ce83 100644 --- a/src/commands/sentinel-sentinels.json +++ b/src/commands/sentinel-sentinels.json @@ -11,6 +11,12 @@ "ADMIN", "SENTINEL", "ONLY_SENTINEL" + ], + "arguments": [ + { + "name": "master-name", + "type": "string" + } ] } } diff --git a/src/commands/sentinel-set.json b/src/commands/sentinel-set.json index 9b962bd22..afe036065 100644 --- a/src/commands/sentinel-set.json +++ b/src/commands/sentinel-set.json @@ -11,6 +11,27 @@ "ADMIN", "SENTINEL", "ONLY_SENTINEL" + ], + "arguments": [ + { + "name": "master-name", + "type": "string" + }, + { + "name": "option_value", + "type": "block", + "multiple": true, + "arguments": [ + { + "name": "option", + "type": "string" + }, + { + "name": "value", + "type": "string" + } + ] + } ] } } diff --git a/src/commands/sentinel-simulate-failure.json b/src/commands/sentinel-simulate-failure.json index 85423a2f5..4912a8b70 100644 --- a/src/commands/sentinel-simulate-failure.json +++ b/src/commands/sentinel-simulate-failure.json @@ -10,6 +10,28 @@ "ADMIN", "SENTINEL", "ONLY_SENTINEL" + ], + "arguments": [ + { + "name": "mode", + "type": "oneof", + "optional":true, + "multiple":true, + "arguments": [ + { + "name": "crash-after-election", + "type": "pure-token" + }, + { + "name": "crash-after-promotion", + "type": "pure-token" + }, + { + "name": "help", + "type": "pure-token" + } + ] + } ] } } diff --git a/src/sentinel.c b/src/sentinel.c index 58c8d70f1..af1bfb729 100644 --- a/src/sentinel.c +++ b/src/sentinel.c @@ -4084,7 +4084,7 @@ NULL dictReleaseIterator(di); if (masters_local != sentinel.masters) dictRelease(masters_local); } else if (!strcasecmp(c->argv[1]->ptr,"simulate-failure")) { - /* SENTINEL SIMULATE-FAILURE ... */ + /* SENTINEL SIMULATE-FAILURE [CRASH-AFTER-ELECTION] [CRASH-AFTER-PROMOTION] [HELP] */ int j; sentinel.simfailure_flags = SENTINEL_SIMFAILURE_NONE;