import json
import sys
def checkDefaultErrorFile():
    with open("rsyslog.errorfile") as json_file:
        json_data = json.load(json_file)
        indexCount =0
        replyCount=0
        for item in json_data:
            if item == "request":
                for reqItem in json_data[item]:
                    if reqItem == "url":
                        print "url found"
                        print reqItem
                    elif reqItem == "postdata":
                        print "postdata found"
                        indexCount = str(json_data[item]).count('\"_index\":')
                        print reqItem
                    else:
                        print reqItem
                        print "Unknown item found"
                        sys.exit(1)
                
            elif item == "reply":
                for replyItem in json_data[item]:
                    if replyItem == "items":
                        print json_data[item][replyItem]
                        replyCount = str(json_data[item][replyItem]).count('_index')
                    elif replyItem == "errors":
                        print "error node found"
                    elif replyItem == "took":
                        print "took node found"
                    else:
                        print replyItem
                        print "Unknown item found"
                        sys.exit(3)

            else:
                print item
                print "Unknown item found"
                print "error"
                sys.exit(4)
    if replyCount == indexCount :
        return 0
    else:
        sys.exit(7)
    return 0


def checkErrorOnlyFile():
    with open("rsyslog.errorfile") as json_file:
        json_data = json.load(json_file)
        indexCount =0
        replyCount=0
        for item in json_data:
            if item == "request":
                print json_data[item]
                indexCount = str(json_data[item]).count('\"_index\":')
                
                
            elif item == "url":
                print "url found"
                
            
            elif item == "reply":
                print json_data[item]
                replyCount = str(json_data[item]).count('\"_index\":')

            else:
                print item
                print "Unknown item found"
                print "error"
                sys.exit(4)
    if replyCount == indexCount :
        return 0
    else:
        sys.exit(7)
    return 0

def checkErrorInterleaved():
    with open("rsyslog.errorfile") as json_file:
        json_data = json.load(json_file)
        indexCount =0
        replyCount=0
        for item in json_data:
            print item
            if item == "response":
                for responseItem in json_data[item]:
                    print responseItem
                    for res in responseItem:
                        print res
                        if res == "request":
                            print responseItem[res]
                            indexCount = str(responseItem[res]).count('\"_index\":')
                            print "request count ", indexCount
                        elif res == "reply":
                            print responseItem[res]
                            replyCount = str(responseItem[res]).count('\"_index\":')
                            print "reply count ", replyCount
                        else:
                            print res
                            print "Unknown item found"
                            sys.exit(9)
                    if replyCount != indexCount :
                        sys.exit(8)
            
                
                
            elif item == "url":
                print "url found"
                
            
           

            else:
                print item
                print "Unknown item found"
                sys.exit(4)
    
    return 0

def checkInterleaved():
    return checkErrorInterleaved()

if __name__ == "__main__":
    option = sys.argv[1]
    if option == "default":
        checkDefaultErrorFile()
    elif option == "erroronly":
        checkErrorOnlyFile()
    elif option == "errorinterleaved":
        checkErrorInterleaved()
    elif option == "interleaved":
        checkErrorInterleaved()
    else:
        print "Usage: <script> <default|erroronly|errorinterleaved>"
        sys.exit(6)
