Revision 620a9c62 tools/cluster-merge
b/tools/cluster-merge | ||
---|---|---|
45 | 45 |
_GROUPS_MERGE = "merge" |
46 | 46 |
_GROUPS_RENAME = "rename" |
47 | 47 |
_CLUSTERMERGE_ECID = "clustermerge-ecid" |
48 |
_RESTART_ALL = "all" |
|
49 |
_RESTART_UP = "up" |
|
50 |
_RESTART_NONE = "none" |
|
51 |
_RESTART_CHOICES = (_RESTART_ALL, _RESTART_UP, _RESTART_NONE) |
|
52 |
|
|
48 | 53 |
|
49 | 54 |
PAUSE_PERIOD_OPT = cli.cli_option("-p", "--watcher-pause-period", default=1800, |
50 | 55 |
action="store", type="int", |
... | ... | |
57 | 62 |
help=("How to handle groups that have the" |
58 | 63 |
" same name (One of: %s/%s)" % |
59 | 64 |
(_GROUPS_MERGE, _GROUPS_RENAME))) |
65 |
RESTART_OPT = cli.cli_option("--restart", default=_RESTART_ALL, |
|
66 |
metavar="STRATEGY", |
|
67 |
choices=_RESTART_CHOICES, |
|
68 |
dest="restart", |
|
69 |
help=("How to handle restarting instances" |
|
70 |
" same name (One of: %s/%s/%s)" % |
|
71 |
_RESTART_CHOICES)) |
|
60 | 72 |
|
61 | 73 |
|
62 | 74 |
def Flatten(unflattened_list): |
... | ... | |
101 | 113 |
"""Handling the merge. |
102 | 114 |
|
103 | 115 |
""" |
104 |
def __init__(self, clusters, pause_period, groups): |
|
116 |
def __init__(self, clusters, pause_period, groups, restart):
|
|
105 | 117 |
"""Initialize object with sane defaults and infos required. |
106 | 118 |
|
107 | 119 |
@param clusters: The list of clusters to merge in |
108 | 120 |
@param pause_period: The time watcher shall be disabled for |
109 | 121 |
@param groups: How to handle group conflicts |
122 |
@param restart: How to handle instance restart |
|
110 | 123 |
|
111 | 124 |
""" |
112 | 125 |
self.merger_data = [] |
... | ... | |
116 | 129 |
(self.cluster_name, ) = cli.GetClient().QueryConfigValues(["cluster_name"]) |
117 | 130 |
self.ssh_runner = ssh.SshRunner(self.cluster_name) |
118 | 131 |
self.groups = groups |
132 |
self.restart = restart |
|
133 |
if self.restart == _RESTART_UP: |
|
134 |
raise NotImplementedError |
|
135 |
|
|
119 | 136 |
|
120 | 137 |
def Setup(self): |
121 | 138 |
"""Sets up our end so we can do the merger. |
... | ... | |
630 | 647 |
self._KillMasterDaemon() |
631 | 648 |
self._StartMasterDaemon() |
632 | 649 |
|
633 |
logging.info("Starting instances again") |
|
634 |
self._StartupAllInstances() |
|
650 |
if self.restart == _RESTART_ALL: |
|
651 |
logging.info("Starting instances again") |
|
652 |
self._StartupAllInstances() |
|
653 |
else: |
|
654 |
logging.info("Not starting instances again") |
|
635 | 655 |
logging.info("Post cluster verification") |
636 | 656 |
self._VerifyCluster() |
637 | 657 |
except errors.GenericError, e: |
... | ... | |
692 | 712 |
parser = optparse.OptionParser(usage=("%%prog [--debug|--verbose]" |
693 | 713 |
" [--watcher-pause-period SECONDS]" |
694 | 714 |
" [--groups [%s|%s]]" |
715 |
" [--restart [%s|%s|%s]]" |
|
695 | 716 |
" <cluster> [<cluster...>]" % |
696 |
(_GROUPS_MERGE, _GROUPS_RENAME)), |
|
717 |
(_GROUPS_MERGE, _GROUPS_RENAME, |
|
718 |
_RESTART_ALL, _RESTART_UP, |
|
719 |
_RESTART_NONE)), |
|
697 | 720 |
prog=program) |
698 | 721 |
parser.add_option(cli.DEBUG_OPT) |
699 | 722 |
parser.add_option(cli.VERBOSE_OPT) |
700 | 723 |
parser.add_option(PAUSE_PERIOD_OPT) |
701 | 724 |
parser.add_option(GROUPS_OPT) |
725 |
parser.add_option(RESTART_OPT) |
|
702 | 726 |
|
703 | 727 |
(options, args) = parser.parse_args() |
704 | 728 |
|
... | ... | |
708 | 732 |
parser.error("No clusters specified") |
709 | 733 |
|
710 | 734 |
cluster_merger = Merger(utils.UniqueSequence(args), options.pause_period, |
711 |
options.groups) |
|
735 |
options.groups, options.restart)
|
|
712 | 736 |
try: |
713 | 737 |
try: |
714 | 738 |
cluster_merger.Setup() |
Also available in: Unified diff