Bug #1103

Image deployment does not barf on non-existent ntfsclone command

Added by Vangelis Koukis over 12 years ago. Updated over 12 years ago.

Status:Closed Start date:09/14/2011
Priority:High Due date:
Assignee:Nikos Skalkotos % Done:

0%

Category:Cyclades Images Spent time: -
Target version:v0.6.2

Description

Image deployment using the snf-progress-monitor should barf on non-existent ntfsclone or other image deployment command.
Currently, this happens:

Attempting to connect to backend.okeanos.grnet.gr:5672
Traceback (most recent call last):
  File "/usr/sbin/snf-progress-monitor", line 47, in <module>
    sys.exit(progress_monitor.main())
  File
"/usr/lib/python2.6/dist-packages/synnefo/ganeti/progress_monitor.py",
line 194, in main
    os.execvpe(args[0], args, os.environ)
  File "/usr/lib/python2.6/os.py", line 353, in execvpe
    _execvpe(file, args, env)
  File "/usr/lib/python2.6/os.py", line 380, in _execvpe
    func(fullname, *argrest)
OSError: [Errno 2] No such file or directory
Connection succesful, opening channel
Child PID = 32491 exited, status = 1
Clean UP executed

History

#1 Updated by Vangelis Koukis over 12 years ago

  • Assignee changed from Vangelis Koukis to Nikos Skalkotos

The snf-progress-monitor fails correctly when the child process returns a non-zero exit status.
This is an snf-ganeti-instance-image bug, re-assigning.

#2 Updated by Vangelis Koukis over 12 years ago

This is probably a Ganeti bug, added when the capability to temporarily pause DRBD sync when wait_for_sync is False was added.

From ganeti/cmdlib.py:

          feedback_fn("* running the instance OS create scripts...")
          # FIXME: pass debug option from opcode to backend
          result = self.rpc.call_instance_os_add(pnode_name, iobj, False,
                                                 self.op.debug_level)
          if (iobj.disk_template in constants.DTS_INT_MIRROR and not
              self.op.wait_for_sync):
            feedback_fn("* resuming disk sync")
            result = self.rpc.call_blockdev_pause_resume_sync(pnode_name,
                                                              iobj.disks, False)
            for idx, success in enumerate(result.payload):
              if not success:
                logging.warn("resume-sync of instance %s for disk %d failed",
                             instance, idx)

          result.Raise("Could not add os for instance %s" 
                       " on node %s" % (instance, pnode_name))

Note how the result of the instance_os_add() operation is replaced by the result of the resume sync operation.

#3 Updated by Vangelis Koukis over 12 years ago

  • Status changed from Assigned to Closed

This was a Ganeti bug, patched in production, closing.

Also available in: Atom PDF