#!/usr/bin/env python3
# -*- coding:utf-8 -*-
from inc import CliTool
import sys, os, datetime, re, json, requests
from threadpool import makeRequests, ThreadPool
from tool.pdd_publish_client import PddPublishClient

def getAppTypeAndAppNameAndAppInstanceListMap():
    appTypeAndAppNameAndAppInstanceListMap = {
        "ms": {
            'mspdd': [
                {
                    "appId": "677BB2169BD5721F",
                    "appInstanceId": "app-1c10554b",
                    "name": "sh-pre",
                    "configList": [
                        {
                            "configFileId": "C892F1916739A331",
                            "zkFilePath": "zk/live/pdd/dc/ms/Zk.pdd.inc",
                        }
                    ]
                },
                {
                    "appId": "B1E0CA3BFD9F4625",
                    "appInstanceId": "app-685dd0de",
                    "name": "sh-v2-pre",
                    "configList": [
                        {
                            "configFileId": "F72C0114B55033CF",
                            "zkFilePath": "zk/live/pdd/dc/ms/Zk.pdd.inc",
                        }
                    ]
                },
                {
                    "appId": "B99A99EB858E34CE",
                    "appInstanceId": "app-bf150398",
                    "name": "sh-web",
                    "configList": [
                        {
                            "configFileId": "8ED2CDDB434DB860",
                            "zkFilePath": "zk/live/pdd/dc/ms/Zk.pdd.inc",
                        }
                    ]
                },
                {
                    "appId": "2AFE194A93AFA677",
                    "appInstanceId": "app-2dd0b366",
                    "name": "sh-v2-web",
                    "configList": [
                        {
                            "configFileId": "BDEDA1523BE004BB",
                            "zkFilePath": "zk/live/pdd/dc/ms/Zk.pdd.inc",
                        }
                    ]
                },
                {
                    "appId": "CCBD249D3872C312",
                    "appInstanceId": "app-5826c7f4",
                    "name": "sh-timer",
                    "configList": [
                        {
                            "configFileId": "E0B7E5AC1A344CBE",
                            "zkFilePath": "zk/live/pdd/dc/ms/Zk.pdd.inc",
                        }
                    ]
                },
            ],
            'mspddsp': [
                {
                    "appId": "02673F11E9989203",
                    "appInstanceId": "app-47ad6107",
                    "name": "sp-pre",
                    "configList": [
                        {
                            "configFileId": "344FA6BF89D0ADC0",
                            "zkFilePath": "zk/live/pdd/dc/ms/Zk.pdd.sp.inc",
                        }
                    ]
                },
                {
                    "appId": "3D9DE1CB118F42A5",
                    "appInstanceId": "app-d5ad844a",
                    "name": "sp-v2-pre",
                    "configList": [
                        {
                            "configFileId": "F3AE300E934B4991",
                            "zkFilePath": "zk/live/pdd/dc/ms/Zk.pdd.sp.inc",
                        }
                    ]
                },
                {
                    "appId": "AB29189D31179BDB",
                    "appInstanceId": "app-f344e7ea",
                    "name": "sp-web",
                    "configList": [
                        {
                            "configFileId": "73DE87B556A79B09",
                            "zkFilePath": "zk/live/pdd/dc/ms/Zk.pdd.sp.inc",
                        }
                    ]
                },
                {
                    "appId": "C5512AA29D387B0A",
                    "appInstanceId": "app-aafd8833",
                    "name": "sp-v2-web",
                    "configList": [
                        {
                            "configFileId": "43108DA34AC384B3",
                            "zkFilePath": "zk/live/pdd/dc/ms/Zk.pdd.sp.inc",
                        }
                    ]
                },
                {
                    "appId": "2B169DE124D5553D",
                    "appInstanceId": "app-b6daaf65",
                    "name": "sp-timer",
                    "configList": [
                        {
                            "configFileId": "D4BBB5A8908A9EF9",
                            "zkFilePath": "zk/live/pdd/dc/ms/Zk.pdd.sp.inc",
                        }
                    ]
                },
            ],
            'mspddod': [
                {
                    "appId": "7741168FC27F6280",
                    "appInstanceId": "app-8e712ae8",
                    "name": "od-pre",
                    "configList": [
                        {
                            "configFileId": "1E188315356E42BC",
                            "zkFilePath": "zk/live/pdd/dc/ms/Zk.pdd.od.inc",
                        },
                        {
                            "configFileId": "EAB9B31F2E0BFFC7",
                            "zkFilePath": "zk/live/pdd/dc/ms/Zk.pdd.od.sh.inc",
                        }
                    ]
                },
                {
                    "appId": "841D1F35633018D8",
                    "appInstanceId": "app-ece23399",
                    "name": "od-v2-pre",
                    "configList": [
                        {
                            "configFileId": "073CA8B528F9F918",
                            "zkFilePath": "zk/live/pdd/dc/ms/Zk.pdd.od.inc",
                        }
                    ]
                },
                {
                    "appId": "CD884B4C9014A539",
                    "appInstanceId": "app-875e1274",
                    "name": "od-mobile-pre",
                    "configList": [
                        {
                            "configFileId": "790E568F525D6F96",
                            "zkFilePath": "zk/live/pdd/dc/ms/Zk.pdd.od.sh.inc",
                        },
                        {
                            "configFileId": "B92E7195FED908B7",
                            "zkFilePath": "zk/live/pdd/dc/ms/Zk.pdd.od.m.inc",
                        }
                    ]
                },
                {
                    "appId": "0D7319787E8CFB06",
                    "appInstanceId": "app-1188caec",
                    "name": "od-web",
                    "configList": [
                        {
                            "configFileId": "585BD4859C38C6D3",
                            "zkFilePath": "zk/live/pdd/dc/ms/Zk.pdd.od.inc",
                        },
                        {
                            "configFileId": "0F808D5D683A51A4",
                            "zkFilePath": "zk/live/pdd/dc/ms/Zk.pdd.od.sh.inc",
                        }
                    ]
                },
                {
                    "appId": "E69DD271D6A5EC1E",
                    "appInstanceId": "app-393e7bb7",
                    "name": "od-v2-web",
                    "configList": [
                        {
                            "configFileId": "EB1E10FFE57C63AF",
                            "zkFilePath": "zk/live/pdd/dc/ms/Zk.pdd.od.inc",
                        }
                    ]
                },
                {
                    "appId": "4335EB0525038859",
                    "appInstanceId": "app-c55a76ff",
                    "name": "od-v2-ark",
                    "configList": [
                        {
                            "configFileId": "55E1FEA7F31BEE20",
                            "zkFilePath": "zk/live/pdd/dc/ms/Zk.pdd.od.inc",
                        }
                    ]
                },
                {
                    "appId": "95BB028D2BF0E873",
                    "appInstanceId": "app-bf027d32",
                    "name": "od-mobile",
                    "configList": [
                        {
                            "configFileId": "EB3FE4BCAA74D9E2",
                            "zkFilePath": "zk/live/pdd/dc/ms/Zk.pdd.od.inc",
                        },
                        {
                            "configFileId": "254500496DAF30AC",
                            "zkFilePath": "zk/live/pdd/dc/ms/Zk.pdd.od.sh.inc",
                        },
                        {
                            "configFileId": "7A7AD8A492C5D131",
                            "zkFilePath": "zk/live/pdd/dc/ms/Zk.pdd.od.m.inc",
                        }
                    ]
                },
                {
                    "appId": "007636C8F059D2F7",
                    "appInstanceId": "app-1283dc71",
                    "name": "od-timer",
                    "configList": [
                       {
                           "configFileId": "89BD1C2F5878CB6D",
                           "zkFilePath": "zk/live/pdd/dc/ms/Zk.pdd.od.inc",
                       },
                       {
                           "configFileId": "17769853C76D1A3F",
                           "zkFilePath": "zk/live/pdd/dc/ms/Zk.pdd.od.sh.inc",
                       }
                    ]
                },
                {
                    "appId": "CCDF17853ACBB042",
                    "appInstanceId": "app-4e3c6b6c",
                    "name": "odsh-v2-pre",
                    "configList": [
                        {
                            "configFileId": "07984691A5219FAA",
                            "zkFilePath": "zk/live/pdd/dc/ms/Zk.pdd.od.sh.inc",
                        }
                    ]
                },
                {
                    "appId": "D034E049B15DF9F9",
                    "appInstanceId": "app-25d1b00a",
                    "name": "odsh-v2-web",
                    "configList": [
                        {
                            "configFileId": "C5943C4E5C33DFFE",
                            "zkFilePath": "zk/live/pdd/dc/ms/Zk.pdd.od.sh.inc",
                        }
                    ]
                },
            ],
            'mspddop': [
                {
                    "appId": "D58534CDE3D5754E",
                    "appInstanceId": "app-9fca3769",
                    "name": "op-pre",
                    "configList": [
                        {
                            "configFileId": "521C5735AA911520",
                            "zkFilePath": "zk/live/pdd/dc/ms/Zk.pdd.op.inc",
                        }
                    ]
                },
                {
                    "appId": "A7E46F51DC4A2774",
                    "appInstanceId": "app-4d32de6d",
                    "name": "op-v2-pre",
                    "configList": [
                        {
                            "configFileId": "88ABF97FB50EF0B2",
                            "zkFilePath": "zk/live/pdd/dc/ms/Zk.pdd.op.inc",
                        }
                    ]
                },
                {
                    "appId": "168ED846ACA88D3C",
                    "appInstanceId": "app-c323ef63",
                    "name": "op-web",
                    "configList": [
                        {
                            "configFileId": "B2093351C3A23F73",
                            "zkFilePath": "zk/live/pdd/dc/ms/Zk.pdd.op.inc",
                        }
                    ]
                },
                {
                    "appId": "028496D011FBE44E",
                    "appInstanceId": "app-ae9c5108",
                    "name": "op-v2-web",
                    "configList": [
                        {
                            "configFileId": "EF7551782BADBE5A",
                            "zkFilePath": "zk/live/pdd/dc/ms/Zk.pdd.op.inc",
                        }
                    ]
                },
                {
                    "appId": "30B3B53E01200DE7",
                    "appInstanceId": "app-3f67858a",
                    "name": "op-timer",
                    "configList": [
                        {
                            "configFileId": "35802D4609B76780",
                            "zkFilePath": "zk/live/pdd/dc/ms/Zk.pdd.op.inc",
                        }
                    ]
                },
            ],
            'mspddopdzmd': [
                {
                    "appId": "A3B4D3E02414BCA6",
                    "appInstanceId": "app-229676fc",
                    "name": "opdzmd-pre",
                    "configList": [
                        {
                            "configFileId": "CA64573E7E1BD388",
                            "zkFilePath": "zk/live/pdd/dc/ms/Zk.pdd.op.ebill.inc",
                        }
                    ]
                },
                {
                    "appId": "7B565BC05F575AEC",
                    "appInstanceId": "app-7f6dcbf3",
                    "name": "opdzmd-web",
                    "configList": [
                        {
                            "configFileId": "DBC23B9272FC7D0B",
                            "zkFilePath": "zk/live/pdd/dc/ms/Zk.pdd.op.ebill.inc",
                        }
                    ]
                },
                {
                    "appId": "D0116E8E7B29C4CC",
                    "appInstanceId": "app-09d99c15",
                    "name": "opdzmd-timer",
                    "configList": [
                        {
                            "configFileId": "1125AE5F1322DEC3",
                            "zkFilePath": "zk/live/pdd/dc/ms/Zk.pdd.op.ebill.inc",
                        }
                    ]
                },
            ],
        },
        "jb": {
            "pddry": [
                {
                    "appId": "4EB3E9D8E0646C1B",
                    "appInstanceId": "app-402b17b5",
                    "name": "ruby-web-pre",
                    "configList": [
                         {
                            "configFileId": "93E7468F7A9AA61E",
                            "zkFilePath": "zk/live/pdd/dc/ry/Zk.pddry.inc",
                        }
                    ]
                },
                {
                    "appId": "E41EFDEBB6750EF7",
                    "appInstanceId": "app-f1760922",
                    "name": "ruby-v2-pre",
                    "configList": [
                        {
                            "configFileId": "7B86CCDD8F427452",
                            "zkFilePath": "zk/live/pdd/dc/ry/Zk.pddry.inc",
                        }
                    ]
                },
                {
                    "appId": "927152E318C9CFF2",
                    "appInstanceId": "app-f12e1266",
                    "name": "ruby-opv2-pre",
                    "configList": [
                        {
                            "configFileId": "0B163DD646B76FA0",
                            "zkFilePath": "zk/live/pdd/dc/ry/Zk.pddry.inc",
                        }
                    ]
                },
                {
                    "appId": "58E0D4365956A72D",
                    "appInstanceId": "app-34e4b655",
                    "name": "ruby-web",
                    "configList": [
                        {
                            "configFileId": "A6733E839F09C431",
                            "zkFilePath": "zk/live/pdd/dc/ry/Zk.pddry.inc",
                        }
                    ]
                },
                {
                    "appId": "B84CBA28E7B5055C",
                    "appInstanceId": "app-f4094dd3",
                    "name": "ruby-timer",
                    "configList": [
                        {
                            "configFileId": "03C399C63EE7747B",
                            "zkFilePath": "zk/live/pdd/dc/ry/Zk.pddry.inc",
                        }
                    ]
                },
                {
                    "appId": "EA2974D67817387B",
                    "appInstanceId": "app-c2e828b2",
                    "name": "ruby-v2",
                    "configList": [
                        {
                            "configFileId": "AE57097B6C97B9D8",
                            "zkFilePath": "zk/live/pdd/dc/ry/Zk.pddry.inc",
                        }
                    ]
                },
                {
                    "appId": "1903C220BDD9B919",
                    "appInstanceId": "app-5764f04f",
                    "name": "ruby-opv2",
                    "configList": [
                        {
                            "configFileId": "1F51E429A0C0F9A0",
                            "zkFilePath": "zk/live/pdd/dc/ry/Zk.pddry.inc",
                        }
                    ]
                },
                {
                    "appId": "63FF6DE6E1B7E0E7",
                    "appInstanceId": "app-70872bd0",
                    "name": "ruby-opv2-ark",
                    "configList": [
                        {
                            "configFileId": "B22F44D9E67FD71D",
                            "zkFilePath": "zk/live/pdd/dc/ry/Zk.pddry.inc",
                        }
                    ]
                },
            ],
            "pddryop": [
                {
                    "appId": "CD9B984A92CBDAA5",
                    "appInstanceId": "app-d6637fca",
                    "name": "op-web-pre",
                    "configList": [
                        {
                            "configFileId": "31BAFB5A4A88691D",
                            "zkFilePath": "zk/live/pdd/dc/ry/Zk.pdd.ruby.op.inc",
                        }
                    ]
                },
                {
                    "appId": "2E9FACFDF7743DA0",
                    "appInstanceId": "app-b0c0f8e0",
                    "name": "op-v2-pre",
                    "configList": [
                        {
                            "configFileId": "16F72FF7A130C6F2",
                            "zkFilePath": "zk/live/pdd/dc/ry/Zk.pdd.ruby.op.inc",
                        }
                    ]
                },
                {
                    "appId": "A328D61AC3F4DA21",
                    "appInstanceId": "app-89010d06",
                    "name": "op-web",
                    "configList": [
                        {
                            "configFileId": "36C60D3065539697",
                            "zkFilePath": "zk/live/pdd/dc/ry/Zk.pdd.ruby.op.inc",
                        }
                    ]
                },
                {
                    "appId": "311112C02B32B896",
                    "appInstanceId": "app-24e33e07",
                    "name": "op-v2-web",
                    "configList": [
                        {
                            "configFileId": "DF671618DDA82B0C",
                            "zkFilePath": "zk/live/pdd/dc/ry/Zk.pdd.ruby.op.inc",
                        }
                    ]
                },
            ],
        },
        "tbk": {
            "pddbksh": [
                {
                    "appId": "9F6B153B94B92FDC",
                    "appInstanceId": "app-de1f4d81",
                    "name": "sh-pre",
                    "configList": [
                        {
                            "configFileId": "2EE75D54A5B94D2B",
                            "zkFilePath": "zk/live/pdd/dc/taobaike/Zk.pddbk.sh.inc",
                        }
                    ]
                },
                {
                    "appId": "48E04FAF27392457",
                    "appInstanceId": "app-4e3c6b6c",
                    "name": "sh-v2-pre",
                    "configList": [
                        {
                            "configFileId": "102BF92A7081F0EA",
                            "zkFilePath": "zk/live/pdd/dc/taobaike/Zk.pddbk.sh.inc",
                        }
                    ]
                },
                {
                    "appId": "3C9CE7902AB103AC",
                    "appInstanceId": "app-c3ad42b0",
                    "name": "sh-web",
                    "configList": [
                        {
                            "configFileId": "E6A445863FAF8A29",
                            "zkFilePath": "zk/live/pdd/dc/taobaike/Zk.pddbk.sh.inc",
                        }
                    ]
                },
                {
                    "appId": "43108DA34AC384B3",
                    "appInstanceId": "app-bf955b95",
                    "name": "sh-v2-web",
                    "configList": [
                        {
                            "configFileId": "6B6E873456B0D09E",
                            "zkFilePath": "zk/live/pdd/dc/taobaike/Zk.pddbk.sh.inc",
                        }
                    ]
                },
                {
                    "appId": "FAEC80334B2812BD",
                    "appInstanceId": "app-79827402",
                    "name": "sh-timer",
                    "configList": [
                        {
                            "configFileId": "DCEAF3BF1D9B0CC6",
                            "zkFilePath": "zk/live/pdd/dc/taobaike/Zk.pddbk.sh.inc",
                        }
                    ]
                },
            ],
            "pddbkod": [
                {
                    "appId": "97F78139DC8A7761",
                    "appInstanceId": "app-fd7e670f",
                    "name": "tbk-od-web",
                    "configList": [
                        {
                            "configFileId": "CFA2571BEEF13F21",
                            "zkFilePath": "zk/live/pdd/dc/taobaike/Zk.pdd.taobaike.inc",
                        }
                    ]
                },
            ],
        },
    }
    return appTypeAndAppNameAndAppInstanceListMap

# client = PddPublishClient('ms')
# configList = client.getAppConfigList('D0116E8E7B29C4CC')
# print(configList)
# exit()

onlyPubAppName = ''
if len(sys.argv) > 1:
    onlyPubAppName = sys.argv[1]
localAppsPath  = CliTool.workspace()
successAppNames = []
failAppNames = []
appTypeAndAppNameAndAppInstanceListMap = getAppTypeAndAppNameAndAppInstanceListMap()
for appType, appNameAndAppInstanceListMap in appTypeAndAppNameAndAppInstanceListMap.items():
    client = PddPublishClient(appType)
    for appName, appInstanceList in appNameAndAppInstanceListMap.items():
        if onlyPubAppName and onlyPubAppName != appName:
            continue

        for appInstanceInfo in appInstanceList:
            for configInfo in appInstanceInfo['configList']:
                configFileId = configInfo['configFileId']
                remoteConfigInfo = client.getAppConfigFileById(configFileId)
                fileName = remoteConfigInfo['fileName']
                mountPath = remoteConfigInfo['mountPath']
                version = remoteConfigInfo['version']
                zkFilePath = localAppsPath + configInfo['zkFilePath']
                content = client.getFileContent(zkFilePath)
                if not content:
                    failAppNames.append("%s[%s]" % (appName, appInstanceInfo['name']))
                    continue

                isSuccess = client.updateAppConfig(configFileId, fileName, mountPath, content, version)
                if isSuccess is True:
                    successAppNames.append("%s[%s][%s]" % (appName, appInstanceInfo['name'], fileName))
                else:
                    failAppNames.append("%s[%s][%s]" % (appName, appInstanceInfo['name'], fileName))

print("-------------------------- Publish zk start ------------------------------")
for successAppName in successAppNames:
    print("%s\tsuccess" % (successAppName))
for failAppName in failAppNames:
    print("%s\tfail" % (failAppName))
print("-------------------------- Publish zk end ------------------------------")

