#!/usr/bin/env python
# Copyright (c) 2009 Arastra, Inc.  All rights reserved.
# Arastra, Inc. Confidential and Proprietary.

"""Initializes Sysdb by executing LoadConfig and then LoadExtensionStatus.

This script is run by Sysdb at the time that the Sysdb process starts."""

import Tac
import os, sys, EosInit
import LoadExtensionStatus

statusFileDefault = "/var/run/extension-status"
statusFile = os.environ.get( "BOOT_EXT_STATUS_FILE", statusFileDefault )
extensionsDirDefault = "/mnt/flash/.extensions"
extensionsDir = os.environ.get( "EXTENSIONS_DIR", extensionsDirDefault )

def main():
   import optparse
   parser = optparse.OptionParser()
   parser.add_option( "-s", "--sysname", action="store", default="ar",
                      help="System name (default: %default)" )
   parser.add_option( "", "--ssoStandby", action="store_true",
                      help="SSO standby mode" )
   options, args = parser.parse_args()
   if args:
      parser.error( "unexpected arguments" )

   exitcode = 0

   if not options.ssoStandby:
      try:
         outputFile = open( EosInit.startupConfigOutputPath, 'w' )
         Tac.run( [ "LoadConfig", "--sysname", options.sysname ],
                  stdout=outputFile )
      except Tac.SystemCommandError, e:
         exitcode = e.error

   try:
      Tac.run( [ LoadExtensionStatus.name(), "--sysname", options.sysname,
                 "--config", statusFile, "--dir", extensionsDir ] )
   except Tac.SystemCommandError, e:
      # If SysdbInit returns a non-zero error code Sysdb will die.  We don't
      # consider failure to load the extension status into Sysdb a serious
      # enough condition to kill Sysdb, so we ignore this error.
      sys.stderr.write( "LoadExtensionsStatus exited with code %d\n" % e.error )
    
   sys.exit( exitcode )

if __name__ == '__main__':
   main()
