diff --git a/src/parser/parser.yy b/src/parser/parser.yy index 268f2ba1315..d70aa4b7efb 100644 --- a/src/parser/parser.yy +++ b/src/parser/parser.yy @@ -3710,30 +3710,42 @@ integer_list balance_sentence : KW_BALANCE KW_LEADER { - auto sentence = new AdminJobSentence(meta::cpp2::AdminJobOp::ADD, - meta::cpp2::AdminCmd::LEADER_BALANCE); - $$ = sentence; + auto sentence = new AdminJobSentence(meta::cpp2::AdminJobOp::ADD, + meta::cpp2::AdminCmd::LEADER_BALANCE); + $$ = sentence; + } + | + KW_BALANCE KW_IN KW_ZONE { + auto sentence = new AdminJobSentence(meta::cpp2::AdminJobOp::ADD, + meta::cpp2::AdminCmd::DATA_BALANCE); + $$ = sentence; } - | KW_BALANCE KW_DATA { - auto sentence = new AdminJobSentence(meta::cpp2::AdminJobOp::ADD, - meta::cpp2::AdminCmd::DATA_BALANCE); - $$ = sentence; + | KW_BALANCE KW_IN KW_ZONE KW_REMOVE host_list { + auto sentence = new AdminJobSentence(meta::cpp2::AdminJobOp::ADD, + meta::cpp2::AdminCmd::DATA_BALANCE); + HostList* hl = $5; + std::vector has = hl->hosts(); + for (HostAddr& ha: has) { + sentence->addPara(ha.toString()); + } + delete hl; + $$ = sentence; } - | KW_BALANCE KW_DATA legal_integer { - auto sentence = new AdminJobSentence(meta::cpp2::AdminJobOp::SHOW); - sentence->addPara(std::to_string($3)); - $$ = sentence; + | KW_BALANCE KW_ACROSS KW_ZONE { + auto sentence = new AdminJobSentence(meta::cpp2::AdminJobOp::ADD, + meta::cpp2::AdminCmd::ZONE_BALANCE); + $$ = sentence; } - | KW_BALANCE KW_DATA KW_REMOVE host_list { - auto sentence = new AdminJobSentence(meta::cpp2::AdminJobOp::ADD, - meta::cpp2::AdminCmd::DATA_BALANCE); - HostList* hl = $4; - std::vector has = hl->hosts(); - for (HostAddr& ha: has) { - sentence->addPara(ha.toString()); - } - delete hl; - $$ = sentence; + | KW_BALANCE KW_ACROSS KW_ZONE KW_REMOVE zone_name_list { + auto sentence = new AdminJobSentence(meta::cpp2::AdminJobOp::ADD, + meta::cpp2::AdminCmd::ZONE_BALANCE); + ZoneNameList* nl = $5; + std::vector names = nl->zoneNames(); + for (std::string& name: names) { + sentence->addPara(name); + } + delete nl; + $$ = sentence; } ;