本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及一種基于序列化格式的配置文件校驗(yàn)方法和裝置。
背景技術(shù):
序列化是將對(duì)象轉(zhuǎn)換為字節(jié)流以將其保存在內(nèi)存、數(shù)據(jù)庫(kù)或文件中的過(guò)程,其主要目的是保存對(duì)象的狀態(tài),以便在需要時(shí)重新創(chuàng)建對(duì)象,常見(jiàn)的序列化格式包括xml,json,yaml格式等。
目前,用戶(hù)在提交配置文件時(shí),對(duì)于一些可序列化的標(biāo)準(zhǔn)格式,需要進(jìn)行合法性校檢,避免用戶(hù)的提交錯(cuò)誤。例如,對(duì)于json格式(javascriptobjectnotation,是一種輕量級(jí)的數(shù)據(jù)交換格式)的配置文件而言,可通過(guò)json模板校檢該配置文件的合法性,json模板定義變量名稱(chēng)和取值的對(duì)應(yīng)關(guān)系,如果配置文件中的變量和取值符合對(duì)應(yīng)關(guān)系,則認(rèn)為配置文件是合法的,反之認(rèn)為配置文件不合法。
然而,目前存在的問(wèn)題是,json模板只能校檢json格式的配置文件,對(duì)于不是json格式的配置文件而言并不能進(jìn)行合法性校檢。并且,json模板只能校檢單個(gè)配置文件中的變量和取值是否符合預(yù)定義的格式,校檢的內(nèi)容并不豐富。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明旨在至少在一定程度上解決相關(guān)技術(shù)中的技術(shù)問(wèn)題之一。
為此,本發(fā)明的第一個(gè)目的在于提出一種基于序列化格式的配置文件校驗(yàn)方法,該配置文件校驗(yàn)方法可以對(duì)多個(gè)配置文件相互間的內(nèi)容進(jìn)行校檢,判斷多個(gè)配置文件中的變量之間的相互關(guān)系是否符合預(yù)期,豐富了對(duì)配置文件內(nèi)部進(jìn)行校檢的校檢方案,同時(shí)減少了用戶(hù)提交配置文件時(shí)出現(xiàn)提交錯(cuò)誤的狀況。
本發(fā)明的第二個(gè)目的在于提出一種基于序列化格式的配置文件校驗(yàn)裝置。
為達(dá)上述目的,本發(fā)明第一方面實(shí)施例提出了一種基于序列化格式的配置文件校驗(yàn)方法,包括:獲取配置文件中源配置文件的源表項(xiàng)的數(shù)據(jù)內(nèi)容和目標(biāo)配置文件的目標(biāo)表項(xiàng)的數(shù)據(jù)內(nèi)容;根據(jù)預(yù)設(shè)的匹配規(guī)則對(duì)所述源表項(xiàng)的數(shù)據(jù)內(nèi)容和所述目標(biāo)表項(xiàng)的數(shù)據(jù)內(nèi)容進(jìn)行匹配;以及根據(jù)匹配結(jié)果生成所述配置文件的校檢結(jié)果。
本發(fā)明實(shí)施例的配置文件校驗(yàn)方法,根據(jù)預(yù)設(shè)的匹配規(guī)則對(duì)配置文件中源配置文件的源表項(xiàng)的數(shù)據(jù)內(nèi)容和目標(biāo)配置文件的目標(biāo)表項(xiàng)的數(shù)據(jù)內(nèi)容進(jìn)行匹配,從而可以對(duì)多個(gè)配置文件相互間的內(nèi)容進(jìn)行校檢,判斷多個(gè)配置文件中的變量之間的相互關(guān)系是否符合預(yù)期,豐富了對(duì)配置文件內(nèi)部進(jìn)行校檢的校檢方案,同時(shí)減少了用戶(hù)提交配置文件時(shí)出現(xiàn)提交錯(cuò)誤的狀況。
為達(dá)上述目的,本發(fā)明第二方面實(shí)施例提出了一種基于序列化格式的配置文件校驗(yàn)裝置,包括:獲取模塊,用于獲取配置文件中源配置文件的源表項(xiàng)的數(shù)據(jù)內(nèi)容和目標(biāo)配置文件的目標(biāo)表項(xiàng)的數(shù)據(jù)內(nèi)容;匹配模塊,用于根據(jù)預(yù)設(shè)的匹配規(guī)則對(duì)所述源表項(xiàng)的數(shù)據(jù)內(nèi)容和所述目標(biāo)表項(xiàng)的數(shù)據(jù)內(nèi)容進(jìn)行匹配;以及生成模塊,用于根據(jù)匹配結(jié)果生成所述配置文件的校檢結(jié)果。本發(fā)明實(shí)施例的配置文件校驗(yàn)裝置,根據(jù)預(yù)設(shè)的匹配規(guī)則對(duì)配置文件中源配置文件的源表項(xiàng)的數(shù)據(jù)內(nèi)容和目標(biāo)配置文件的目標(biāo)表項(xiàng)的數(shù)據(jù)內(nèi)容進(jìn)行匹配,從而可以對(duì)多個(gè)配置文件相互間的內(nèi)容進(jìn)行校檢,判斷多個(gè)配置文件中的變量之間的相互關(guān)系是否符合預(yù)期,豐富了對(duì)配置文件內(nèi)部進(jìn)行校檢的校檢方案,同時(shí)減少了用戶(hù)提交配置文件時(shí)出現(xiàn)提交錯(cuò)誤的狀況。
本發(fā)明附加的方面和優(yōu)點(diǎn)將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過(guò)本發(fā)明的實(shí)踐了解到。
附圖說(shuō)明
本發(fā)明上述的和/或附加的方面和優(yōu)點(diǎn)從下面結(jié)合附圖對(duì)實(shí)施例的描述中將變得明顯和容易理解,其中:
圖1是本發(fā)明一個(gè)實(shí)施例的基于序列化格式的配置文件校驗(yàn)方法的流程圖;
圖2是本發(fā)明一個(gè)實(shí)施例的配置文件的匹配規(guī)則的示意圖;
圖3是本發(fā)明一個(gè)具體實(shí)施例的基于序列化格式的配置文件校驗(yàn)方法的流程圖;
圖4是本發(fā)明一個(gè)實(shí)施例的結(jié)構(gòu)規(guī)則的示意圖;
圖5是本發(fā)明一個(gè)實(shí)施例的配置文件的文件目錄的格式規(guī)范的示意圖;
圖6是本發(fā)明一個(gè)實(shí)施例的配置文件約束規(guī)則的示意圖;
圖7是本發(fā)明另一個(gè)具體實(shí)施例的基于序列化格式的配置文件校驗(yàn)方法的流程圖;
圖8是本發(fā)明一個(gè)實(shí)施例的基于序列化格式的配置文件校驗(yàn)裝置的結(jié)構(gòu)示意圖;
圖9是本發(fā)明一個(gè)具體實(shí)施例的基于序列化格式的配置文件校驗(yàn)裝置的結(jié)構(gòu)示意圖;以及
圖10是本發(fā)明另一個(gè)具體實(shí)施例的基于序列化格式的配置文件校驗(yàn)裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面詳細(xì)描述本發(fā)明的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終相同或類(lèi)似的標(biāo)號(hào)表示相同或類(lèi)似的元件或具有相同或類(lèi)似功能的元件。下面通過(guò)參考附圖描述的實(shí)施例是示例性的,旨在用于解釋本發(fā)明,而不能理解為對(duì)本發(fā)明的限制。
此外,術(shù)語(yǔ)“第一”、“第二”僅用于描述目的,而不能理解為指示或暗示相對(duì)重要性或者隱含指明所指示的技術(shù)特征的數(shù)量。由此,限定有“第一”、“第二”的特征可以明示或者隱含地包括一個(gè)或者更多個(gè)該特征。在本發(fā)明的描述中,“多個(gè)”的含義是兩個(gè)或兩個(gè)以上,除非另有明確具體的限定。
流程圖中或在此以其他方式描述的任何過(guò)程或方法描述可以被理解為,表示包括一個(gè)或更多個(gè)用于實(shí)現(xiàn)特定邏輯功能或過(guò)程的步驟的可執(zhí)行指令的代碼的模塊、片段或部分,并且本發(fā)明的優(yōu)選實(shí)施方式的范圍包括另外的實(shí)現(xiàn),其中可以不按所示出或討論的順序,包括根據(jù)所涉及的功能按基本同時(shí)的方式或按相反的順序,來(lái)執(zhí)行功能,這應(yīng)被本發(fā)明的實(shí)施例所屬技術(shù)領(lǐng)域的技術(shù)人員所理解。
圖1是本發(fā)明一個(gè)實(shí)施例的基于序列化格式的配置文件校驗(yàn)方法的流程圖。
如圖1所示,配置文件校驗(yàn)方法包括:
s101,獲取配置文件中源配置文件的源表項(xiàng)的數(shù)據(jù)內(nèi)容和目標(biāo)配置文件的目標(biāo)表項(xiàng)的數(shù)據(jù)內(nèi)容。
具體地,在用戶(hù)提交配置文件后,先讀取配置文件中源文件的源表項(xiàng)中的數(shù)據(jù)內(nèi)容,再讀取配置文件中目標(biāo)文件的目標(biāo)表項(xiàng)的數(shù)據(jù)內(nèi)容。
s102,根據(jù)預(yù)設(shè)的匹配規(guī)則對(duì)源表項(xiàng)的數(shù)據(jù)內(nèi)容和目標(biāo)表項(xiàng)的數(shù)據(jù)內(nèi)容進(jìn)行匹配。
具體地,不同的匹配規(guī)則以不同的規(guī)則編號(hào)進(jìn)行區(qū)分并進(jìn)行排序。圖2示出了本發(fā)明一個(gè)實(shí)施例的配置文件的匹配規(guī)則的示意圖,如圖2所示,源配置文件定義匹配源的文件名,可包含通配符表示一組文件。源表項(xiàng)定義源文件中的具體表項(xiàng)名稱(chēng),可用通配符匹配一組表項(xiàng)。
匹配規(guī)則定義了4種常用的規(guī)則關(guān)系,包括相等規(guī)則、包含規(guī)則、互斥規(guī)則和唯一規(guī)則。其中,相等規(guī)則表示源表項(xiàng)中的數(shù)據(jù)內(nèi)容和目標(biāo)表項(xiàng)中的數(shù)據(jù)內(nèi)容完全相同;包含規(guī)則表示源表項(xiàng)中的數(shù)據(jù)內(nèi)容包含目標(biāo)表項(xiàng)中的數(shù)據(jù)內(nèi)容;互斥規(guī)則表示源表項(xiàng)中的數(shù)據(jù)內(nèi)容和目標(biāo)表項(xiàng)中的數(shù)據(jù)內(nèi)容不能有交集;唯一規(guī)則表示源表項(xiàng)中的數(shù)據(jù)內(nèi)容之間不能有交集,在根據(jù)唯一規(guī)則對(duì)數(shù)據(jù)內(nèi)容進(jìn)行校檢時(shí),僅對(duì)源表項(xiàng)中的數(shù)據(jù)內(nèi)容進(jìn)行校檢,對(duì)目標(biāo)表項(xiàng)中的數(shù)據(jù)內(nèi)容不進(jìn)行校檢,因此可以忽略目標(biāo)文件和目標(biāo)表項(xiàng)。
目標(biāo)配置文件定義匹配目標(biāo)的文件名,可包含通配符表示一組文件。目標(biāo)表項(xiàng)定義目標(biāo)文件中的具體表項(xiàng)名稱(chēng),可用通配符匹配一組表項(xiàng)。
進(jìn)而,根據(jù)匹配規(guī)則將可序列化的配置文件的內(nèi)容轉(zhuǎn)換為一組集合數(shù)據(jù),在讀取配置文件中源文件的源表項(xiàng)中的數(shù)據(jù)內(nèi)容,和目標(biāo)文件的目標(biāo)表項(xiàng)的數(shù)據(jù)內(nèi)容后,利用匹配規(guī)則中定義的運(yùn)算關(guān)系計(jì)算源表項(xiàng)中的數(shù)據(jù)內(nèi)容和目標(biāo)表項(xiàng)的數(shù)據(jù)內(nèi)容是否滿(mǎn)足要求。
s103,根據(jù)匹配結(jié)果生成配置文件的校檢結(jié)果。
具體地,若源表項(xiàng)的數(shù)據(jù)內(nèi)容和目標(biāo)表項(xiàng)的數(shù)據(jù)內(nèi)容滿(mǎn)足預(yù)設(shè)的匹配規(guī)則,則生成配置文件校檢正確的校檢結(jié)果。
若源表項(xiàng)的數(shù)據(jù)內(nèi)容和目標(biāo)表項(xiàng)的數(shù)據(jù)內(nèi)容不滿(mǎn)足預(yù)設(shè)的匹配規(guī)則,則生成配置文件生成校檢錯(cuò)誤的校檢結(jié)果,同時(shí)生成配置文件校檢錯(cuò)誤的提示信息反饋給用戶(hù)。
本發(fā)明實(shí)施例的配置文件校驗(yàn)方法,根據(jù)預(yù)設(shè)的匹配規(guī)則對(duì)配置文件中源配置文件的源表項(xiàng)的數(shù)據(jù)內(nèi)容和目標(biāo)配置文件的目標(biāo)表項(xiàng)的數(shù)據(jù)內(nèi)容進(jìn)行匹配,從而可以對(duì)多個(gè)配置文件相互間的內(nèi)容進(jìn)行校檢,判斷多個(gè)配置文件中的變量之間的相互關(guān)系是否符合預(yù)期,豐富了對(duì)配置文件內(nèi)部進(jìn)行校檢的校檢方案,同時(shí)減少了用戶(hù)提交配置文件時(shí)出現(xiàn)提交錯(cuò)誤的狀況。
圖3是本發(fā)明一個(gè)具體實(shí)施例的基于序列化格式的配置文件校驗(yàn)方法的流程圖。
如圖3所示,配置文件校驗(yàn)方法包括:
s301,根據(jù)預(yù)設(shè)的結(jié)構(gòu)規(guī)則判斷配置文件的文件目錄是否滿(mǎn)足結(jié)構(gòu)規(guī)則。
具體地,檢查配置文件的格式是否符合預(yù)期,對(duì)配置文件的文件目錄格式進(jìn)行校檢。
在本發(fā)明的一個(gè)實(shí)施例中,預(yù)設(shè)的結(jié)構(gòu)規(guī)則包括類(lèi)型規(guī)則和內(nèi)容規(guī)則,判斷文件目錄的類(lèi)型是否滿(mǎn)足類(lèi)型規(guī)則,若文件目錄的類(lèi)型不滿(mǎn)足類(lèi)型規(guī)則,則生成配置文件校檢錯(cuò)誤的提示信息,若文件目錄的類(lèi)型滿(mǎn)足類(lèi)型規(guī)則,則進(jìn)一步判斷文件目錄的內(nèi)容是否滿(mǎn)足內(nèi)容規(guī)則,若文件目錄的內(nèi)容不滿(mǎn)足內(nèi)容規(guī)則,則生成配置文件校檢錯(cuò)誤的提示信息。具體而言,圖4是本發(fā)明一個(gè)實(shí)施例的結(jié)構(gòu)規(guī)則的示意圖,如圖4所示,結(jié)構(gòu)規(guī)則中定義需要檢查的每個(gè)文件的文件類(lèi)型和內(nèi)容規(guī)則,對(duì)于目錄而言,定義文件類(lèi)型為目錄后,需要定義目錄內(nèi)容,目錄內(nèi)容下可繼續(xù)定義目錄內(nèi)的子目錄或者文件。對(duì)于文件而言,定義類(lèi)型為文件后,然后定義文件的內(nèi)容,用于進(jìn)行下一步的文件內(nèi)容的檢查。如果配置文件的文件目錄不符合結(jié)構(gòu)規(guī)則,例如文件目錄的內(nèi)容中需要有的文件沒(méi)有、需要有的目錄沒(méi)有,生成配置文件校檢錯(cuò)誤的提示信息反饋給用戶(hù),或者文件目錄的類(lèi)型不匹配,也生成配置文件校檢錯(cuò)誤的提示信息反饋給用戶(hù)。
例如,圖5是本發(fā)明一個(gè)實(shí)施例的配置文件的文件目錄的格式規(guī)范的示意圖,如 圖5所示,頂級(jí)目錄包括集群配置文件、系統(tǒng)配置文件和服務(wù)列表目錄。服務(wù)列表目錄下每個(gè)服務(wù)均有自己的服務(wù)目錄、配置文件目錄和服務(wù)配置目錄,在服務(wù)目錄里放置該服務(wù)用到的配置文件,其中,配置文件包括部署配置文件和版本配置文件。配置目錄包括服務(wù)升級(jí)配置文件,服務(wù)配置目錄則包括用戶(hù)配置文件。進(jìn)而,根據(jù)上述格式規(guī)范檢查配置文件的文件目錄結(jié)構(gòu)是否滿(mǎn)足要求。
在本發(fā)明的一個(gè)實(shí)施例中,預(yù)設(shè)的結(jié)構(gòu)規(guī)則還包括約束規(guī)則,判斷文件目錄的內(nèi)容之間是否滿(mǎn)足約束規(guī)則,若文件目錄的內(nèi)容之間不滿(mǎn)足約束規(guī)則,則生成配置文件校檢錯(cuò)誤的提示信息。具體而言,除了對(duì)配置文件的文件目錄格式進(jìn)行檢查之外,還對(duì)配置文件的文件目錄的內(nèi)容間的約束進(jìn)行檢查。例如,圖6是本發(fā)明一個(gè)實(shí)施例的配置文件約束規(guī)則的示意圖,如圖6所示,如集群配置文件中定義了機(jī)器列表,在部署配置文件中同樣包含機(jī)器列表,并且部署配置文件中的機(jī)器列表要包含于集群配置文件中的機(jī)器列表內(nèi)。再如部署配置文件中定義了服務(wù)的角色列表,版本配置文件中同樣包含角色列表,升級(jí)配置文件中也要包含角色列表。進(jìn)而,根據(jù)不同應(yīng)用的需求,可以定義多種不同的約束規(guī)則,根據(jù)這些約束規(guī)則對(duì)配置文件的文件目錄的內(nèi)容進(jìn)行檢查。
s302,獲取配置文件中源配置文件的源表項(xiàng)的數(shù)據(jù)內(nèi)容和目標(biāo)配置文件的目標(biāo)表項(xiàng)的數(shù)據(jù)內(nèi)容。
具體地,在用戶(hù)提交配置文件后,先讀取配置文件中源文件的源表項(xiàng)中的數(shù)據(jù)內(nèi)容,再讀取配置文件中目標(biāo)文件的目標(biāo)表項(xiàng)的數(shù)據(jù)內(nèi)容。
s303,根據(jù)預(yù)設(shè)的匹配規(guī)則對(duì)源表項(xiàng)的數(shù)據(jù)內(nèi)容和目標(biāo)表項(xiàng)的數(shù)據(jù)內(nèi)容進(jìn)行匹配。
具體地,不同的匹配規(guī)則以不同的規(guī)則編號(hào)進(jìn)行區(qū)分并進(jìn)行排序。圖2示出了本發(fā)明一個(gè)實(shí)施例的配置文件的匹配規(guī)則的示意圖,如圖2所示,源配置文件定義匹配源的文件名,可包含通配符表示一組文件。源表項(xiàng)定義源文件中的具體表項(xiàng)名稱(chēng),可用通配符匹配一組表項(xiàng)。
匹配規(guī)則定義了4種常用的規(guī)則關(guān)系,包括相等規(guī)則、包含規(guī)則、互斥規(guī)則和唯一規(guī)則。其中,相等規(guī)則表示源表項(xiàng)中的數(shù)據(jù)內(nèi)容和目標(biāo)表項(xiàng)中的數(shù)據(jù)內(nèi)容完全相同;包含規(guī)則表示源表項(xiàng)中的數(shù)據(jù)內(nèi)容包含目標(biāo)表項(xiàng)中的數(shù)據(jù)內(nèi)容;互斥規(guī)則表示源表項(xiàng)中的數(shù)據(jù)內(nèi)容和目標(biāo)表項(xiàng)中的數(shù)據(jù)內(nèi)容不能有交集;唯一規(guī)則表示源表項(xiàng)中的數(shù)據(jù)內(nèi)容之間不能有交集,在根據(jù)唯一規(guī)則對(duì)數(shù)據(jù)內(nèi)容進(jìn)行檢查時(shí),僅對(duì)源表項(xiàng)中的數(shù)據(jù)內(nèi)容進(jìn)行檢查,對(duì)目標(biāo)表項(xiàng)中的數(shù)據(jù)內(nèi)容不進(jìn)行檢查,因此可以忽略目標(biāo)文件和目標(biāo)表項(xiàng)。
目標(biāo)配置文件定義匹配目標(biāo)的文件名,可包含通配符表示一組文件。目標(biāo)表項(xiàng)定 義目標(biāo)文件中的具體表項(xiàng)名稱(chēng),可用通配符匹配一組表項(xiàng)。
進(jìn)而,根據(jù)匹配規(guī)則將可序列化的配置文件的內(nèi)容轉(zhuǎn)換為一組集合數(shù)據(jù),在讀取配置文件中源文件的源表項(xiàng)中的數(shù)據(jù)內(nèi)容,和目標(biāo)文件的目標(biāo)表項(xiàng)的數(shù)據(jù)內(nèi)容后,利用匹配規(guī)則中定義的運(yùn)算關(guān)系計(jì)算源表項(xiàng)中的數(shù)據(jù)內(nèi)容和目標(biāo)表項(xiàng)的數(shù)據(jù)內(nèi)容是否滿(mǎn)足要求。
s304,根據(jù)匹配結(jié)果生成配置文件的校檢結(jié)果。
具體地,若源表項(xiàng)的數(shù)據(jù)內(nèi)容和目標(biāo)表項(xiàng)的數(shù)據(jù)內(nèi)容滿(mǎn)足預(yù)設(shè)的匹配規(guī)則,則生成配置文件校檢正確的校檢結(jié)果。
若源表項(xiàng)的數(shù)據(jù)內(nèi)容和目標(biāo)表項(xiàng)的數(shù)據(jù)內(nèi)容不滿(mǎn)足預(yù)設(shè)的匹配規(guī)則,則生成配置文件生成校檢錯(cuò)誤的校檢結(jié)果,同時(shí)生成配置文件校檢錯(cuò)誤的提示信息反饋給用戶(hù)。
本發(fā)明實(shí)施例的配置文件校驗(yàn)方法,根據(jù)預(yù)設(shè)的結(jié)構(gòu)規(guī)則判斷配置文件的文件目錄是否滿(mǎn)足結(jié)構(gòu)規(guī)則,從而可以對(duì)多個(gè)配置文件的文件目錄結(jié)構(gòu)進(jìn)行校檢,檢查配置文件的結(jié)構(gòu)是否符合預(yù)期,進(jìn)一步豐富了對(duì)單個(gè)配置文件內(nèi)部進(jìn)行校檢的校檢方案。
圖7是本發(fā)明另一個(gè)具體實(shí)施例的基于序列化格式的配置文件校驗(yàn)方法的流程圖。
如圖7所示,配置文件校驗(yàn)方法包括:
s701,根據(jù)預(yù)設(shè)的結(jié)構(gòu)規(guī)則判斷配置文件的文件目錄是否滿(mǎn)足結(jié)構(gòu)規(guī)則。
具體地,檢查配置文件的格式是否符合預(yù)期,對(duì)配置文件的文件目錄格式進(jìn)行檢查。
在本發(fā)明的一個(gè)實(shí)施例中,預(yù)設(shè)的結(jié)構(gòu)規(guī)則包括類(lèi)型規(guī)則和內(nèi)容規(guī)則,判斷文件目錄的類(lèi)型是否滿(mǎn)足類(lèi)型規(guī)則,若文件目錄的類(lèi)型不滿(mǎn)足類(lèi)型規(guī)則,則生成配置文件校檢錯(cuò)誤的提示信息,若文件目錄的類(lèi)型滿(mǎn)足類(lèi)型規(guī)則,則進(jìn)一步判斷文件目錄的內(nèi)容是否滿(mǎn)足內(nèi)容規(guī)則,若文件目錄的內(nèi)容不滿(mǎn)足內(nèi)容規(guī)則,則生成配置文件校檢錯(cuò)誤的提示信息。具體而言,圖4是本發(fā)明一個(gè)實(shí)施例的結(jié)構(gòu)規(guī)則的示意圖,如圖4所示,結(jié)構(gòu)規(guī)則中定義需要檢查的每個(gè)文件的文件類(lèi)型和內(nèi)容規(guī)則,對(duì)于目錄而言,定義文件類(lèi)型為目錄后,需要定義目錄內(nèi)容,目錄內(nèi)容下可繼續(xù)定義目錄內(nèi)的子目錄或者文件。對(duì)于文件而言,定義類(lèi)型為文件后,然后定義文件的內(nèi)容,用于進(jìn)行下一步的文件內(nèi)容的檢查。如果配置文件的文件目錄不符合結(jié)構(gòu)規(guī)則,例如文件目錄的內(nèi)容中需要有的文件沒(méi)有、需要有的目錄沒(méi)有,生成配置文件校檢錯(cuò)誤的提示信息反饋給用戶(hù),或者文件目錄的類(lèi)型不匹配,也生成配置文件校檢錯(cuò)誤的提示信息反饋給用戶(hù)。
例如,圖5是本發(fā)明一個(gè)實(shí)施例的配置文件的文件目錄的格式規(guī)范的示意圖,如圖5所示,頂級(jí)目錄包括集群配置文件、系統(tǒng)配置文件和服務(wù)列表目錄。服務(wù)列表目錄下每個(gè)服務(wù)均有自己的服務(wù)目錄、配置文件目錄和服務(wù)配置目錄,在服務(wù)目錄里放置該服務(wù)用到的配置文件,其中,配置文件包括部署配置文件和版本配置文件。配置 目錄包括服務(wù)升級(jí)配置文件,服務(wù)配置目錄則包括用戶(hù)配置文件。進(jìn)而,根據(jù)上述格式規(guī)范檢查配置文件的文件目錄結(jié)構(gòu)是否滿(mǎn)足要求。
在本發(fā)明的一個(gè)實(shí)施例中,預(yù)設(shè)的結(jié)構(gòu)規(guī)則還包括約束規(guī)則,判斷文件目錄的內(nèi)容之間是否滿(mǎn)足約束規(guī)則,若文件目錄的內(nèi)容之間不滿(mǎn)足約束規(guī)則,則生成配置文件校檢錯(cuò)誤的提示信息。具體而言,除了對(duì)配置文件的文件目錄格式進(jìn)行檢查之外,還對(duì)配置文件的文件目錄的內(nèi)容間的約束進(jìn)行檢查。例如,圖6時(shí)本發(fā)明一個(gè)實(shí)施例的配置文件約束規(guī)則的示意圖,如圖6所示,如集群配置文件中定義了機(jī)器列表,在部署配置文件中同樣包含機(jī)器列表,并且部署配置文件中的機(jī)器列表要包含于集群配置文件中的機(jī)器列表內(nèi)。再如部署配置文件中定義了服務(wù)的角色列表,版本配置文件中同樣包含角色列表,升級(jí)配置文件中也要包含角色列表。進(jìn)而,根據(jù)不同應(yīng)用的需求,可以定義多種不同的約束規(guī)則,根據(jù)這些約束規(guī)則對(duì)配置文件的文件目錄的內(nèi)容進(jìn)行檢查。
s702,根據(jù)預(yù)設(shè)的序列化文件模板判斷配置文件的內(nèi)容是否符合規(guī)范。
具體地,對(duì)單個(gè)配置文件的內(nèi)容進(jìn)行檢查,例如,采用通用的json序列化文件模板對(duì)配置和文件的內(nèi)容進(jìn)行檢查,其中json文件模板可以實(shí)現(xiàn)較為豐富的單文件內(nèi)部的內(nèi)容檢查,檢查過(guò)程可以使交互式或非交互式的,例如應(yīng)用程序使用json模板進(jìn)行用戶(hù)輸入的檢查,確保輸入的內(nèi)容符合應(yīng)用程序的規(guī)范。
若配置文件的內(nèi)容不符合規(guī)范,則生成配置文件校檢錯(cuò)誤的提示信息。
s703,獲取配置文件中源配置文件的源表項(xiàng)的數(shù)據(jù)內(nèi)容和目標(biāo)配置文件的目標(biāo)表項(xiàng)的數(shù)據(jù)內(nèi)容。
具體地,在用戶(hù)提交配置文件后,先讀取配置文件中源文件的源表項(xiàng)中的數(shù)據(jù)內(nèi)容,再讀取配置文件中目標(biāo)文件的目標(biāo)表項(xiàng)的數(shù)據(jù)內(nèi)容。
s704,根據(jù)預(yù)設(shè)的匹配規(guī)則對(duì)源表項(xiàng)的數(shù)據(jù)內(nèi)容和目標(biāo)表項(xiàng)的數(shù)據(jù)內(nèi)容進(jìn)行匹配。
具體地,不同的匹配規(guī)則以不同的規(guī)則編號(hào)進(jìn)行區(qū)分并進(jìn)行排序。圖2示出了本發(fā)明一個(gè)實(shí)施例的配置文件的匹配規(guī)則的示意圖,如圖2所示,源配置文件定義匹配源的文件名,可包含通配符表示一組文件。源表項(xiàng)定義源文件中的具體表項(xiàng)名稱(chēng),可用通配符匹配一組表項(xiàng)。
匹配規(guī)則定義了4種常用的規(guī)則關(guān)系,包括相等規(guī)則、包含規(guī)則、互斥規(guī)則和唯一規(guī)則。其中,相等規(guī)則表示源表項(xiàng)中的數(shù)據(jù)內(nèi)容和目標(biāo)表項(xiàng)中的數(shù)據(jù)內(nèi)容完全相同;包含規(guī)則表示源表項(xiàng)中的數(shù)據(jù)內(nèi)容包含目標(biāo)表項(xiàng)中的數(shù)據(jù)內(nèi)容;互斥規(guī)則表示源表項(xiàng)中的數(shù)據(jù)內(nèi)容和目標(biāo)表項(xiàng)中的數(shù)據(jù)內(nèi)容不能有交集;唯一規(guī)則表示源表項(xiàng)中的數(shù)據(jù)內(nèi)容之間不能有交集,在根據(jù)唯一規(guī)則對(duì)數(shù)據(jù)內(nèi)容進(jìn)行檢查時(shí),僅對(duì)源表項(xiàng)中的數(shù)據(jù)內(nèi) 容進(jìn)行檢查,對(duì)目標(biāo)表項(xiàng)中的數(shù)據(jù)內(nèi)容不進(jìn)行檢查,因此可以忽略目標(biāo)文件和目標(biāo)表項(xiàng)。
目標(biāo)配置文件定義匹配目標(biāo)的文件名,可包含通配符表示一組文件。目標(biāo)表項(xiàng)定義目標(biāo)文件中的具體表項(xiàng)名稱(chēng),可用通配符匹配一組表項(xiàng)。
進(jìn)而,根據(jù)匹配規(guī)則將可序列化的配置文件的內(nèi)容轉(zhuǎn)換為一組集合數(shù)據(jù),在讀取配置文件中源文件的源表項(xiàng)中的數(shù)據(jù)內(nèi)容,和目標(biāo)文件的目標(biāo)表項(xiàng)的數(shù)據(jù)內(nèi)容后,利用匹配規(guī)則中定義的運(yùn)算關(guān)系計(jì)算源表項(xiàng)中的數(shù)據(jù)內(nèi)容和目標(biāo)表項(xiàng)的數(shù)據(jù)內(nèi)容是否滿(mǎn)足要求。
s705,根據(jù)匹配結(jié)果生成配置文件的校檢結(jié)果。
具體地,若源表項(xiàng)的數(shù)據(jù)內(nèi)容和目標(biāo)表項(xiàng)的數(shù)據(jù)內(nèi)容滿(mǎn)足預(yù)設(shè)的匹配規(guī)則,則生成配置文件校檢正確的校檢結(jié)果。
若源表項(xiàng)的數(shù)據(jù)內(nèi)容和目標(biāo)表項(xiàng)的數(shù)據(jù)內(nèi)容不滿(mǎn)足預(yù)設(shè)的匹配規(guī)則,則生成配置文件生成校檢錯(cuò)誤的校檢結(jié)果,同時(shí)生成配置文件校檢錯(cuò)誤的提示信息反饋給用戶(hù)。
本發(fā)明實(shí)施例的配置文件校驗(yàn)方法,為了確保用戶(hù)提交的配置文件符合預(yù)期,對(duì)配置文件進(jìn)行三項(xiàng)校檢,首先對(duì)配置文件的文件目錄格式進(jìn)行校檢,其次對(duì)單個(gè)配置文件的內(nèi)容進(jìn)行校檢,最后對(duì)多個(gè)配置文件相互間內(nèi)容關(guān)聯(lián)進(jìn)行校檢,不僅可以豐富對(duì)配置文件進(jìn)行校檢的校檢方案,而且可以大大提高對(duì)配置文件校檢的準(zhǔn)確性,減少了用戶(hù)提交配置文件時(shí)出現(xiàn)提交錯(cuò)誤的狀況。
為了實(shí)現(xiàn)上述實(shí)施例,本發(fā)明還提出一種基于序列化格式的配置文件校驗(yàn)裝置。
圖8是本發(fā)明一個(gè)實(shí)施例的基于序列化格式的配置文件校驗(yàn)裝置的結(jié)構(gòu)示意圖。
如圖8所示,配置文件校驗(yàn)裝置包括:獲取模塊100、匹配模塊200和生成模塊300。
具體地,獲取模塊100用于獲取配置文件中源配置文件的源表項(xiàng)的數(shù)據(jù)內(nèi)容和目標(biāo)配置文件的目標(biāo)表項(xiàng)的數(shù)據(jù)內(nèi)容。
匹配模塊200用于根據(jù)預(yù)設(shè)的匹配規(guī)則對(duì)所述源表項(xiàng)的數(shù)據(jù)內(nèi)容和所述目標(biāo)表項(xiàng)的數(shù)據(jù)內(nèi)容進(jìn)行匹配。其中,預(yù)設(shè)的匹配規(guī)則包括相等規(guī)則、包含規(guī)則、互斥規(guī)則和唯一規(guī)則。
生成模塊300用于根據(jù)匹配結(jié)果生成所述配置文件的校檢結(jié)果。其中,生成模塊300還用于在源表項(xiàng)的數(shù)據(jù)內(nèi)容和目標(biāo)表項(xiàng)的數(shù)據(jù)內(nèi)容不滿(mǎn)足預(yù)設(shè)的匹配規(guī)則時(shí),生成配置文件校檢錯(cuò)誤的提示信息。
需要說(shuō)明的是,前述對(duì)配置文件校驗(yàn)方法的實(shí)施例的解釋說(shuō)明也適用于該實(shí)施例的配置文件校驗(yàn)裝置,其實(shí)現(xiàn)原理類(lèi)似,此處不再贅述。
本發(fā)明實(shí)施例的配置文件校驗(yàn)裝置,根據(jù)預(yù)設(shè)的匹配規(guī)則對(duì)配置文件中源配置文件 的源表項(xiàng)的數(shù)據(jù)內(nèi)容和目標(biāo)配置文件的目標(biāo)表項(xiàng)的數(shù)據(jù)內(nèi)容進(jìn)行匹配,從而可以對(duì)多個(gè)配置文件相互間的內(nèi)容進(jìn)行校檢,判斷多個(gè)配置文件中的變量之間的相互關(guān)系是否符合預(yù)期,豐富了對(duì)配置文件內(nèi)部進(jìn)行校檢的校檢方案,同時(shí)減少了用戶(hù)提交配置文件時(shí)出現(xiàn)提交錯(cuò)誤的狀況。
圖9是本發(fā)明一個(gè)具體實(shí)施例的基于序列化格式的配置文件校驗(yàn)裝置的結(jié)構(gòu)示意圖。
如圖9所示,配置文件校驗(yàn)裝置包括:獲取模塊100、匹配模塊200、生成模塊300和第一判斷模塊400。
具體地,第一判斷模塊400用于根據(jù)預(yù)設(shè)的結(jié)構(gòu)規(guī)則判斷配置文件的文件目錄是否滿(mǎn)足結(jié)構(gòu)規(guī)則。
其中,當(dāng)預(yù)設(shè)的結(jié)構(gòu)規(guī)則包括類(lèi)型規(guī)則和內(nèi)容規(guī)則時(shí),第一判斷模塊400還用于判斷文件目錄的類(lèi)型是否滿(mǎn)足類(lèi)型規(guī)則,生成模塊300還用于在文件目錄的類(lèi)型不滿(mǎn)足類(lèi)型規(guī)則時(shí),生成配置文件校檢錯(cuò)誤的提示信息,第一判斷模塊400還用于在文件目錄的類(lèi)型滿(mǎn)足類(lèi)型規(guī)則時(shí),進(jìn)一步判斷文件目錄的內(nèi)容是否滿(mǎn)足內(nèi)容規(guī)則,生成模塊300還用于在文件目錄的內(nèi)容不滿(mǎn)足內(nèi)容規(guī)則時(shí),生成配置文件校檢錯(cuò)誤的提示信息。
其中,當(dāng)預(yù)設(shè)的結(jié)構(gòu)規(guī)則還包括約束規(guī)則時(shí),第一判斷模塊400還用于判斷文件目錄的內(nèi)容之間是否滿(mǎn)足約束規(guī)則,生成模塊300還用于在文件目錄的內(nèi)容之間不滿(mǎn)足約束規(guī)則時(shí),生成配置文件校檢錯(cuò)誤的提示信息。
需要說(shuō)明的是,前述對(duì)配置文件校驗(yàn)方法的實(shí)施例的解釋說(shuō)明也適用于該實(shí)施例的配置文件校驗(yàn)裝置,其實(shí)現(xiàn)原理類(lèi)似,此處不再贅述。
本發(fā)明實(shí)施例的配置文件校驗(yàn)裝置,根據(jù)預(yù)設(shè)的結(jié)構(gòu)規(guī)則判斷配置文件的文件目錄是否滿(mǎn)足結(jié)構(gòu)規(guī)則,從而可以對(duì)多個(gè)配置文件的文件目錄結(jié)構(gòu)進(jìn)行校檢,檢查配置文件的結(jié)構(gòu)是否符合預(yù)期,進(jìn)一步豐富了對(duì)單個(gè)配置文件內(nèi)部進(jìn)行校檢的校檢方案。
圖10是本發(fā)明另一個(gè)具體實(shí)施例的基于序列化格式的配置文件校驗(yàn)裝置的結(jié)構(gòu)示意圖。
如圖10所示,配置文件校驗(yàn)裝置包括:獲取模塊100、匹配模塊200、生成模塊300、第一判斷模塊400和第二判斷模塊500。
具體地,第二判斷模塊500用于根據(jù)預(yù)設(shè)的序列化文件模板判斷配置文件的內(nèi)容是否符合規(guī)范。
生成模塊300還用于在配置文件的內(nèi)容不符合規(guī)范時(shí),生成配置文件校檢錯(cuò)誤的提示信息。
需要說(shuō)明的是,前述對(duì)配置文件校驗(yàn)方法的實(shí)施例的解釋說(shuō)明也適用于該實(shí)施例的配置文件校驗(yàn)裝置,其實(shí)現(xiàn)原理類(lèi)似,此處不再贅述。
本發(fā)明實(shí)施例的配置文件校驗(yàn)裝置,為了確保用戶(hù)提交的配置文件符合預(yù)期,對(duì)配置文件進(jìn)行三項(xiàng)校檢,首先對(duì)配置文件的文件目錄格式進(jìn)行校檢,其次對(duì)單個(gè)配置文件的內(nèi)容進(jìn)行校檢,最后對(duì)多個(gè)配置文件相互間內(nèi)容關(guān)聯(lián)進(jìn)行校檢,不僅可以豐富對(duì)配置文件進(jìn)行校檢的校檢方案,而且可以大大提高對(duì)配置文件校檢的準(zhǔn)確性,減少了用戶(hù)提交配置文件時(shí)出現(xiàn)提交錯(cuò)誤的狀況。
應(yīng)當(dāng)理解,本發(fā)明的各部分可以用硬件、軟件、固件或它們的組合來(lái)實(shí)現(xiàn)。在上述實(shí)施方式中,多個(gè)步驟或方法可以用存儲(chǔ)在存儲(chǔ)器中且由合適的指令執(zhí)行系統(tǒng)執(zhí)行的軟件或固件來(lái)實(shí)現(xiàn)。例如,如果用硬件來(lái)實(shí)現(xiàn),和在另一實(shí)施方式中一樣,可用本領(lǐng)域公知的下列技術(shù)中的任一項(xiàng)或他們的組合來(lái)實(shí)現(xiàn):具有用于對(duì)數(shù)據(jù)信號(hào)實(shí)現(xiàn)邏輯功能的邏輯門(mén)電路的離散邏輯電路,具有合適的組合邏輯門(mén)電路的專(zhuān)用集成電路,可編程門(mén)陣列(pga),現(xiàn)場(chǎng)可編程門(mén)陣列(fpga)等。
在本說(shuō)明書(shū)的描述中,參考術(shù)語(yǔ)“一個(gè)實(shí)施例”、“一些實(shí)施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實(shí)施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)包含于本發(fā)明的至少一個(gè)實(shí)施例或示例中。在本說(shuō)明書(shū)中,對(duì)上述術(shù)語(yǔ)的示意性表述不必須針對(duì)的是相同的實(shí)施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)可以在任一個(gè)或多個(gè)實(shí)施例或示例中以合適的方式結(jié)合。此外,在不相互矛盾的情況下,本領(lǐng)域的技術(shù)人員可以將本說(shuō)明書(shū)中描述的不同實(shí)施例或示例以及不同實(shí)施例或示例的特征進(jìn)行結(jié)合和組合。
盡管上面已經(jīng)示出和描述了本發(fā)明的實(shí)施例,可以理解的是,上述實(shí)施例是示例性的,不能理解為對(duì)本發(fā)明的限制,本領(lǐng)域的普通技術(shù)人員在本發(fā)明的范圍內(nèi)可以對(duì)上述實(shí)施例進(jìn)行變化、修改、替換和變型。