docs: def main():
      """
      Starting point of the executable.
  
      """
      try:
          # A bit of a hack: We want to load the plugins (specified via the mode
          # and health parameter) in order to add their arguments to the argument
          # parser. But this means we first need to look into the CLI arguments
          # to find them ... before looking at the arguments. So we first perform
          # a manual search through the argument list for this purpose only.
          args = sys.argv[1:]
  
          # Loading the watcher plugin
          mode_name = utils.param_extract(args, "-m", "--mode", default=None)
          if mode_name:
              watcher_plugin_class = \
                  load_plugin(mode_name, watcher.WATCHER_DEFAULT_PLUGIN_MODULE)
          else:
              watcher_plugin_class = None
  
          # Loading the health monitor plugin
          health_check_name = \
              utils.param_extract(args, "-H", "--health",
                                  default=monitor.MONITOR_DEFAULT_PLUGIN)
          if health_check_name:
              health_plugin_class = \
                  load_plugin(health_check_name,
                              monitor.MONITOR_DEFAULT_PLUGIN_MODULE)
          else:
              health_plugin_class = None
  
          # Provide complete arg parsing for vpcrouter and all plugin classes.
          conf = _parse_args(sys.argv[1:],
                             watcher_plugin_class, health_plugin_class)
  
          if not health_plugin_class or not watcher_plugin_class:
              logging.error("Watcher plugin or health monitor plugin class "
                            "are missing.")
              sys.exit(1)
  
          _setup_logging(conf)
  
          # If we are on an EC2 instance then some data is already available to
          # us. The return data items in the meta data match some of the command
          # line arguments, so we can pass this through to the parser function to
          # provide defaults for those parameters. Specifically: VPC-ID and
          # region name.
          if not conf['vpc_id'] or not conf['region_name']:
              meta_data = get_ec2_meta_data()
              if 'vpc_id' not in meta_data or 'region_name' not in meta_data:
                  logging.error("VPC and region were not explicitly specified "
                                "and can't be auto-discovered.")
                  sys.exit(1)
              else:
                  conf.update(meta_data)
  
          try:
              info_str = "vpc-router (%s): mode: %s (%s), " \
                         "health-check: %s (%s)" % \
                         (vpcrouter.__version__,
                          conf['mode'], watcher_plugin_class.get_version(),
                          health_check_name, health_plugin_class.get_version())
              logging.info("*** Starting %s ***" % info_str)
              CURRENT_STATE.versions = info_str
  
              http_srv = http_server.VpcRouterHttpServer(conf)
              CURRENT_STATE._vpc_router_http = http_srv
  
              watcher.start_watcher(conf,
                                    watcher_plugin_class, health_plugin_class)
              http_srv.stop()
              logging.info("*** Stopping vpc-router ***")
          except Exception as e:
              import traceback
              traceback.print_exc()
              logging.error(e.message)
              logging.error("*** Exiting")
      except Exception as e:
          print "\n*** Error: %s\n" % e.message
  
      sys.exit(1)