from installclass import BaseInstallClass
import os
from rhpl.log import log
import iutil
from autopart import autoCreatePartitionRequests
from kickstart import Script

class FermiInstallClass(BaseInstallClass):
   pixmap = "workstation.png"

   def setGroupSelection(self, grpset, intf):
       BaseInstallClass.__init__(self, grpset)

       grpset.unselectAll()

   def postAction(self, rootPath, serial):
       log("Running post.sh script for workgroup now")
       for script in self.postScripts:
          script.run(rootPath, serial)

   def getFermiTextFile(self, filename):

       file = ""
#       fullfilename = todo.method.getFilename(filename,None)
#       fullfilename = "/mnt/source/" + filename
       if (os.access('/mnt/source/RHupdates/fermi',os.R_OK)):
          fullfilename = "/mnt/source/RHupdates/fermi/" + filename
       else:
          if (os.access('/tmp/updates/fermi',os.R_OK)):
             fullfilename = "/tmp/updates/fermi/" + filename
          else:
             fullfilename = "/usr/lib/anaconda/fermi/" + filename
       log("Set fullfilename to: %s", fullfilename)
       for n in open(fullfilename).readlines():
               file = file + n
#       log("Just read %s into file", fullfilename)
       return file

   def setInstallData(self, id):

       id.instClass = self

       id.partitions.useAutopartitioning = 0
       autorequests = [ ("/", None, 5000, None, 0, 1) ]
       (minswap, maxswap) = iutil.swapSuggestion()
       autorequests.append((None, "swap", minswap, maxswap, 0, 1))
       id.partitions.autoPartitionRequests = autoCreatePartitionRequests(autorequests)

       self.setTimezoneInfo( id, "America/Chicago")

#       self.setFirewall( id,  enable = 1, trusts = [], ports = "")

       self.setAuthentication( id ,
                               1 ,
                               salt = "md5" ,
                               useKrb5 = 1 ,
                               krb5Realm = "FNAL.GOV",
                               krb5Kdc = "krb-fnal-1.fnal.gov:88,krb-fnal-2.fnal.gov:88,krb-fnal-3.fnal.gov:88,krb-fnal-4.fnal.gov:88,krb-fnal-5.fnal.gov:88",
                               krb5Admin = "krb-fnal-admin.fnal.gov",
                             )

   def __init__(self, expert):
       BaseInstallClass.__init__(self, expert)

       self.postScripts = []
       scriptInterp="/bin/sh"
       scriptChroot=0
       ferminame = "post.sh"
       script = self.getFermiTextFile(ferminame)
       log("Just called Script ")
       s = Script(script,scriptInterp,scriptChroot)
       self.postScripts.append(s)