Revision 2e6469a1 scripts/gnt-node

b/scripts/gnt-node
34 34
from ganeti import constants
35 35
from ganeti import compat
36 36
from ganeti import errors
37
from ganeti import bootstrap
38 37
from ganeti import netutils
39 38

  
40 39

  
......
112 111
_MODIFIABLE_STORAGE_TYPES = constants.MODIFIABLE_STORAGE_FIELDS.keys()
113 112

  
114 113

  
114
NONODE_SETUP_OPT = cli_option("--no-node-setup", default=True,
115
                              action="store_false", dest="node_setup",
116
                              help=("Do not make initial SSH setup on remote"
117
                                    " node (needs to be done manually)"))
118

  
119

  
115 120
def ConvertStorageType(user_storage_type):
116 121
  """Converts a user storage type to its internal name.
117 122

  
......
123 128
                               errors.ECODE_INVAL)
124 129

  
125 130

  
131
def _RunSetupSSH(options, nodes):
132
  """Wrapper around utils.RunCmd to call setup-ssh
133

  
134
  @param options: The command line options
135
  @param nodes: The nodes to setup
136

  
137
  """
138
  cmd = [constants.SETUP_SSH]
139

  
140
  # Pass --debug|--verbose to the external script if set on our invocation
141
  # --debug overrides --verbose
142
  if options.debug:
143
    cmd.append("--debug")
144
  elif options.verbose:
145
    cmd.append("--verbose")
146

  
147
  cmd.extend(nodes)
148

  
149
  result = utils.RunCmd(cmd, interactive=True)
150

  
151
  if result.failed:
152
    errmsg = ("Command '%s' failed with exit code %s; output %r" %
153
              (result.cmd, result.exit_code, result.output))
154
    raise errors.OpExecError(errmsg)
155

  
156

  
126 157
@UsesRPC
127 158
def AddNode(opts, args):
128 159
  """Add a node to the cluster.
......
160 191

  
161 192
  # read the cluster name from the master
162 193
  output = cl.QueryConfigValues(['cluster_name'])
163
  cluster_name = output[0]
164 194

  
165 195
  if not readd:
166 196
    ToStderr("-- WARNING -- \n"
......
170 200
             " current one\n"
171 201
             "and grant full intra-cluster ssh root access to/from it\n", node)
172 202

  
173
  bootstrap.SetupNodeDaemon(cluster_name, node, opts.ssh_key_check)
203
  if opts.node_setup:
204
    _RunSetupSSH(opts, [node])
174 205

  
175 206
  op = opcodes.OpAddNode(node_name=args[0], secondary_ip=sip,
176 207
                         readd=opts.readd)
......
645 676
commands = {
646 677
  'add': (
647 678
    AddNode, [ArgHost(min=1, max=1)],
648
    [SECONDARY_IP_OPT, READD_OPT, NOSSH_KEYCHECK_OPT],
649
    "[-s ip] [--readd] [--no-ssh-key-check] <node_name>",
679
    [SECONDARY_IP_OPT, READD_OPT, NONODE_SETUP_OPT, VERBOSE_OPT],
680
    "[-s ip] [--readd] [--no-node-setup]  [--verbose] "
681
    " <node_name>",
650 682
    "Add a node to the cluster"),
651 683
  'evacuate': (
652 684
    EvacuateNode, [ArgNode(min=1)],

Also available in: Unified diff