#!/usr/bin/python
# import MySQL module
#used to import the zipcode/timezone/nfs info fromMBE
import MySQLdb
import sys
import getopt
import socket


def usage():
    print " -h --help"
    print " -d  --installdb"
    print " -m --masterdb"
    print " -n  --hostname of current machine"

def printvars():
    print "masterdb: " + masterdb
    print "installdb:" + installdb
    print "hostname: " + thishostname
    print "BEhostname:" + BEhostname
    print "zipcode:" + zipcode
    print "timezone:" + tz
    print "nfsip:" + nfsip
    print "nfstoggle:" + nfstoggle
    print "nfsmount:"  + nfsmount
    print "hobbitclient:" + hobbitclient
# connect
def selectvars():

    global BEhostname
    global zipcode
    global tz
    global nfsip
    global nfstoggle
    global nfsmount
    global hobbitclient

    db = MySQLdb.connect(host=masterdb, user="mythtv", passwd="mythtv", db="mythconverg")
    # create a cursor
    cursor = db.cursor()
    # execute SQL statement
    cursor.execute("select hostname from settings where value='BackendServerIP' and data=(%s)",(masterdb))
    result = cursor.fetchone()
    BEhostname=result[0]

    cursor.execute("select data from settings where value='HostZipcode' and hostname=(%s)",(BEhostname))
    result = cursor.fetchone()
    try:
        zipcode =  result[0]
    except TypeError:
        zipcode=""

    cursor.execute("select data from settings where value='HostCentralNFSIP' and hostname=(%s)",(BEhostname))
    result = cursor.fetchone()
    try:
        nfsip=result[0]
    except TypeError:
        nfsip=""

    cursor.execute("select data from settings where value='HostHaveCentralNFS' and hostname=(%s)",(BEhostname))
    result = cursor.fetchone()
    try:
        nfstoggle=result[0]
    except TypeError:
        nfstoggle=""

    cursor.execute("select data from settings where value='HostNFSmountpoint' and hostname=(%s)",(BEhostname))
    result = cursor.fetchone()
    try:
        nfsmount=result[0]
    except TypeError:
        nfsmount=""

    cursor.execute("select data from settings where value='HostTimeZone' and hostname=(%s)",(BEhostname))
    result = cursor.fetchone()
    try:
        tz=result[0]
    except TypeError:
        tz=""

    if  ( thishostname != BEhostname ):
        cursor.execute("select data from settings where value='GlobalServiceHobbitserver'")
        result = cursor.fetchone()
        try:
            hobbitclient=result[0]
        except TypeError:
            hobbitclient="0"



def insertvars():

    db = MySQLdb.connect(host=installdb, user="mythtv", passwd="mythtv", db="mythconverg")
    cursor = db.cursor()
#inserting the zipcode
    cursor.execute("select * from settings where value='HostZipcode' and hostname=(%s)",(thishostname))
    result = cursor.fetchone()
    if ( zipcode!="" ):
        if (result == None):
            cursor.execute("INSERT INTO  settings (value,data,hostname) VALUES ('HostZipcode',(%s),(%s))",(zipcode,thishostname))
            print "inserting zipcode"
        else:
            cursor.execute("update settings set data=(%s) where hostname=(%s) and value='HostZipcode'",(zipcode,thishostname))
            print "updating zipcode"

#inserting the timezone
    cursor.execute("select *  from settings where value='HostTimeZone' and hostname=(%s)",(thishostname))
    result = cursor.fetchone()
    if ( tz != ""):
         if (result == None):
            cursor.execute("INSERT INTO  settings (value,data,hostname) VALUES ('HostTimeZone',(%s),(%s))",(tz,thishostname))
            print "inserting timezone"
         else:
            cursor.execute("update settings set data=(%s) where hostname=(%s) and value='HostTimeZone'",(tz,thishostname))
            print "updating timezone"


#start of NFSIP
    cursor.execute("select data from settings where value='HostCentralNFSIP' and hostname=(%s)",(thishostname))
    result = cursor.fetchone()
    if ( nfsip != ""):
        if (result == None):
            cursor.execute("INSERT INTO  settings (value,data,hostname) VALUES ('HostCentralNFSIP',(%s),(%s))",(nfsip,thishostname))
            print "inserting nfsip"

    if (nfstoggle != ""):
        cursor.execute("select data from settings where value='HostHaveCentralNFS' and hostname=(%s)",(thishostname))
        result = cursor.fetchone()
        if (result == None):
            cursor.execute("INSERT INTO  settings (value,data,hostname) VALUES ('HostHaveCentralNFS',(%s),(%s))",(nfstoggle,thishostname))
            print "inserting nfstoggle"

    if ( nfsmount !="") :
        cursor.execute("select data from settings where value='HostNFSmountpoint' and hostname=(%s)",(thishostname))
        result = cursor.fetchone()
        if (result == None):
            cursor.execute("INSERT INTO  settings (value,data,hostname) VALUES ('HostNFSmountpoint',(%s),(%s))",(nfsmount,thishostname))
            print "inserting nfsmountpoint"

#hobbitclient
    cursor.execute("select *  from settings where value='HostServiceHobbitclient' and hostname=(%s)",(thishostname))
    result = cursor.fetchone()
    if ( tz != ""):
         if (result == None):
            cursor.execute("INSERT INTO  settings (value,data,hostname) VALUES ('HostServiceHobbitclient',(%s),(%s))",(hobbitclient,thishostname))
            print "inserting hobbitcleint"
         else:
            cursor.execute("update settings set data=(%s) where hostname=(%s) and value='HostServiceHobbitclient'",(hobbitclient,thishostname))
            print "updating hobbitclient"


def main(argv):
    global masterdb
    global installdb
    global thishostname
    thishostname=""
    global BEhostname
    global zipcode
    global tz
    global nfsip
    global hobbitclient
    try:
        opts, args = getopt.getopt(argv, "hm:d:n:", ["help", "masterdb=", "installdb=" , "hostname=" ] )
    except getopt.GetoptError:
        sys.exit(2)
    for opt, arg in opts:
        if opt in ("-h", "--help"):
             usage()
             sys.exit()
        elif opt in ( "-d" , "--installdb"):
             installdb = arg
        elif opt in ("-m", "--masterdb"):
             masterdb = arg
        elif opt in ("-n", "--hostname"):
             thishostname = arg

    if ( thishostname == "" ):
         thishostname = socket.gethostname()

    selectvars()
    printvars()
    insertvars()
if __name__ == "__main__":
    main(sys.argv[1:])