import os, sys, time, traceback
import smtplib
from boto.utils import ShellCommand, get_ts
import boto
import boto.utils

class ScriptBase:

    def __init__(self, config_file=None):
        self.instance_id = boto.config.get('Instance', 'instance-id', 'default')
        self.name = self.__class__.__name__
        self.ts = get_ts()
        if config_file:
            boto.config.read(config_file)

    def notify(self, subject, body=''):
        boto.utils.notify(subject, body)

    def mkdir(self, path):
        if not os.path.isdir(path):
            try:
                os.mkdir(path)
            except:
                boto.log.error('Error creating directory: %s' % path)

    def umount(self, path):
        if os.path.ismount(path):
            self.run('umount %s' % path)

    def run(self, command, notify=True, exit_on_error=False):
        self.last_command = ShellCommand(command)
        if self.last_command.status != 0:
            boto.log.error(self.last_command.output)
            if notify:
                self.notify('Error encountered', self.last_command.output)
            if exit_on_error:
                sys.exit(-1)
        return self.last_command.status

    def main(self):
        pass
        

import os, sys, time, traceback
import smtplib
from boto.utils import ShellCommand, get_ts
import boto
import boto.utils

class ScriptBase:

    def __init__(self, config_file=None):
        self.instance_id = boto.config.get('Instance', 'instance-id', 'default')
        self.name = self.__class__.__name__
        self.ts = get_ts()
        if config_file:
            boto.config.read(config_file)

    def notify(self, subject, body=''):
        boto.utils.notify(subject, body)

    def mkdir(self, path):
        if not os.path.isdir(path):
            try:
                os.mkdir(path)
            except:
                boto.log.error('Error creating directory: %s' % path)

    def umount(self, path):
        if os.path.ismount(path):
            self.run('umount %s' % path)

    def run(self, command, notify=True, exit_on_error=False):
        self.last_command = ShellCommand(command)
        if self.last_command.status != 0:
            boto.log.error('Error running command: "%s". Output: "%s"' % (command, self.last_command.output))
            if notify:
                self.notify('Error encountered', \
                        'Error running the following command:\n\t%s\n\nCommand output:\n\t%s' % \
                        (command, self.last_command.output))
            if exit_on_error:
                sys.exit(-1)
        return self.last_command.status

    def main(self):
        pass
        

Add the command that failed to the error log and the error email to help debug problems where the error produces no output.
Add the command that failed to the error log and the error email to help debug problems where the error produces no output.

  import os, sys, time, traceback
  import smtplib
  from boto.utils import ShellCommand, get_ts
  import boto
  import boto.utils
  
  class ScriptBase:
  
      def __init__(self, config_file=None):
          self.instance_id = boto.config.get('Instance', 'instance-id', 'default')
          self.name = self.__class__.__name__
          self.ts = get_ts()
          if config_file:
              boto.config.read(config_file)
  
      def notify(self, subject, body=''):
          boto.utils.notify(subject, body)
  
      def mkdir(self, path):
          if not os.path.isdir(path):
              try:
                  os.mkdir(path)
              except:
                  boto.log.error('Error creating directory: %s' % path)
  
      def umount(self, path):
          if os.path.ismount(path):
              self.run('umount %s' % path)
  
      def run(self, command, notify=True, exit_on_error=False):
          self.last_command = ShellCommand(command)
          if self.last_command.status != 0:
-             boto.log.error(self.last_command.output)
+             boto.log.error('Error running command: "%s". Output: "%s"' % (command, self.last_command.output))
              if notify:
-                 self.notify('Error encountered', self.last_command.output)
+                 self.notify('Error encountered', \
+                         'Error running the following command:\n\t%s\n\nCommand output:\n\t%s' % \
+                         (command, self.last_command.output))
              if exit_on_error:
                  sys.exit(-1)
          return self.last_command.status
  
      def main(self):
          pass
          
  
Add the command that failed to the error log and the error email to help debug problems where the error produces no output.
## Code Before:
import os, sys, time, traceback
import smtplib
from boto.utils import ShellCommand, get_ts
import boto
import boto.utils

class ScriptBase:

    def __init__(self, config_file=None):
        self.instance_id = boto.config.get('Instance', 'instance-id', 'default')
        self.name = self.__class__.__name__
        self.ts = get_ts()
        if config_file:
            boto.config.read(config_file)

    def notify(self, subject, body=''):
        boto.utils.notify(subject, body)

    def mkdir(self, path):
        if not os.path.isdir(path):
            try:
                os.mkdir(path)
            except:
                boto.log.error('Error creating directory: %s' % path)

    def umount(self, path):
        if os.path.ismount(path):
            self.run('umount %s' % path)

    def run(self, command, notify=True, exit_on_error=False):
        self.last_command = ShellCommand(command)
        if self.last_command.status != 0:
            boto.log.error(self.last_command.output)
            if notify:
                self.notify('Error encountered', self.last_command.output)
            if exit_on_error:
                sys.exit(-1)
        return self.last_command.status

    def main(self):
        pass
        

## Instruction:
Add the command that failed to the error log and the error email to help debug problems where the error produces no output.
## Code After:
import os, sys, time, traceback
import smtplib
from boto.utils import ShellCommand, get_ts
import boto
import boto.utils

class ScriptBase:

    def __init__(self, config_file=None):
        self.instance_id = boto.config.get('Instance', 'instance-id', 'default')
        self.name = self.__class__.__name__
        self.ts = get_ts()
        if config_file:
            boto.config.read(config_file)

    def notify(self, subject, body=''):
        boto.utils.notify(subject, body)

    def mkdir(self, path):
        if not os.path.isdir(path):
            try:
                os.mkdir(path)
            except:
                boto.log.error('Error creating directory: %s' % path)

    def umount(self, path):
        if os.path.ismount(path):
            self.run('umount %s' % path)

    def run(self, command, notify=True, exit_on_error=False):
        self.last_command = ShellCommand(command)
        if self.last_command.status != 0:
            boto.log.error('Error running command: "%s". Output: "%s"' % (command, self.last_command.output))
            if notify:
                self.notify('Error encountered', \
                        'Error running the following command:\n\t%s\n\nCommand output:\n\t%s' % \
                        (command, self.last_command.output))
            if exit_on_error:
                sys.exit(-1)
        return self.last_command.status

    def main(self):
        pass
        
