|  |  | @ -5,14 +5,14 @@ | 
			
		
	
		
			
				
					|  |  |  | import os | 
			
		
	
		
			
				
					|  |  |  | import basic.toolHandling | 
			
		
	
		
			
				
					|  |  |  | import basic.constants as B | 
			
		
	
		
			
				
					|  |  |  | import basic.entity | 
			
		
	
		
			
				
					|  |  |  | import utils.path_const as P | 
			
		
	
		
			
				
					|  |  |  | import utils.config_tool | 
			
		
	
		
			
				
					|  |  |  | import utils.file_tool | 
			
		
	
		
			
				
					|  |  |  | import utils.git_tool | 
			
		
	
		
			
				
					|  |  |  | import model.entity | 
			
		
	
		
			
				
					|  |  |  | import tools.path_const as P | 
			
		
	
		
			
				
					|  |  |  | import tools.config_tool | 
			
		
	
		
			
				
					|  |  |  | import tools.file_tool | 
			
		
	
		
			
				
					|  |  |  | import tools.git_tool | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | TABLE_NAMES = ["application", "ap_project", "ap_component"] | 
			
		
	
		
			
				
					|  |  |  | DEFAULT_SYNC = basic.entity.SYNC_FULL_GIT2DB | 
			
		
	
		
			
				
					|  |  |  | DEFAULT_SYNC = model.entity.SYNC_FULL_GIT2DB | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | def getProjects(job): | 
			
		
	
		
			
				
					|  |  |  |     """ | 
			
		
	
	
		
			
				
					|  |  | @ -21,7 +21,7 @@ def getProjects(job): | 
			
		
	
		
			
				
					|  |  |  |     :param job: | 
			
		
	
		
			
				
					|  |  |  |     :return: | 
			
		
	
		
			
				
					|  |  |  |     """ | 
			
		
	
		
			
				
					|  |  |  |     appl = utils.config_tool.getConfig(job, P.KEY_BASIC, B.SUBJECT_APPS) | 
			
		
	
		
			
				
					|  |  |  |     appl = tools.config_tool.getConfig(job, P.KEY_BASIC, B.SUBJECT_APPS) | 
			
		
	
		
			
				
					|  |  |  |     return searchProjects(job, appl) | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | def searchProjects(job, appl): | 
			
		
	
	
		
			
				
					|  |  | @ -66,27 +66,27 @@ def getEnvironments(job, projectList): | 
			
		
	
		
			
				
					|  |  |  |             continue | 
			
		
	
		
			
				
					|  |  |  |         if hasattr(job.par, B.PAR_ENV) and envdir != getattr(job.par, B.PAR_ENV): | 
			
		
	
		
			
				
					|  |  |  |             continue | 
			
		
	
		
			
				
					|  |  |  |         for format in utils.config_tool.CONFIG_FORMAT: | 
			
		
	
		
			
				
					|  |  |  |         for format in tools.config_tool.CONFIG_FORMAT: | 
			
		
	
		
			
				
					|  |  |  |             pathname = os.path.join(job.conf.getPath(P.ATTR_PATH_ENV), | 
			
		
	
		
			
				
					|  |  |  |                                     envdir, P.VAL_CONFIG, P.KEY_TOOL + "_conn." + format) | 
			
		
	
		
			
				
					|  |  |  |             if os.path.exists(pathname): | 
			
		
	
		
			
				
					|  |  |  |                 break | 
			
		
	
		
			
				
					|  |  |  |         if os.path.exists(pathname): | 
			
		
	
		
			
				
					|  |  |  |             doc = utils.file_tool.readFileDict(job, pathname, job.m) | 
			
		
	
		
			
				
					|  |  |  |             doc = tools.file_tool.readFileDict(job, pathname, job.m) | 
			
		
	
		
			
				
					|  |  |  |         print(str(doc)) | 
			
		
	
		
			
				
					|  |  |  |         for proj in doc[B.SUBJECT_ENV][B.CONF_NODE_GENERAL][B.SUBJECT_PROJECTS]: | 
			
		
	
		
			
				
					|  |  |  |             if proj in projectList: | 
			
		
	
		
			
				
					|  |  |  |                 projects[proj][B.SUBJECT_ENV].append(envdir) | 
			
		
	
		
			
				
					|  |  |  |     return projects | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | def getApplications(job, projectList): | 
			
		
	
		
			
				
					|  |  |  | def select_applications(job, projectList): | 
			
		
	
		
			
				
					|  |  |  |     """ | 
			
		
	
		
			
				
					|  |  |  |     get all project which are configured for the workspace | 
			
		
	
		
			
				
					|  |  |  |     with all environments where the application of the project are installed | 
			
		
	
		
			
				
					|  |  |  |     :param job: | 
			
		
	
		
			
				
					|  |  |  |     :return: | 
			
		
	
		
			
				
					|  |  |  |     """ | 
			
		
	
		
			
				
					|  |  |  |     appl = utils.config_tool.getConfig(job, P.KEY_BASIC, B.SUBJECT_APPS) | 
			
		
	
		
			
				
					|  |  |  |     appl = tools.config_tool.getConfig(job, P.KEY_BASIC, B.SUBJECT_APPS) | 
			
		
	
		
			
				
					|  |  |  |     return searchApplications(job, projectList, appl) | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | def searchApplications(job, projectList, appl): | 
			
		
	
	
		
			
				
					|  |  | @ -94,8 +94,8 @@ def searchApplications(job, projectList, appl): | 
			
		
	
		
			
				
					|  |  |  |     for proj in projectList: | 
			
		
	
		
			
				
					|  |  |  |         if hasattr(job.par, B.PAR_PROJ) and proj != getattr(job.par, B.PAR_PROJ): | 
			
		
	
		
			
				
					|  |  |  |             continue | 
			
		
	
		
			
				
					|  |  |  |         for app in appl[B.SUBJECT_PROJECTS][proj][B.SUBJECT_APPS]: | 
			
		
	
		
			
				
					|  |  |  |             if hasattr(job.par, B.PAR_APP) and app != getattr(job.par, B.PAR_APP): | 
			
		
	
		
			
				
					|  |  |  |         for app in appl[B.SUBJECT_APPS]: | 
			
		
	
		
			
				
					|  |  |  |             if B.ATTR_APPS_PROJECT in appl[B.SUBJECT_APPS][app] and proj != appl[B.SUBJECT_APPS][app][B.ATTR_APPS_PROJECT]: | 
			
		
	
		
			
				
					|  |  |  |                 continue | 
			
		
	
		
			
				
					|  |  |  |             appList[app] = appl[B.SUBJECT_APPS][app] | 
			
		
	
		
			
				
					|  |  |  |     return appList | 
			
		
	
	
		
			
				
					|  |  | @ -115,13 +115,13 @@ def syncEnitities(job): | 
			
		
	
		
			
				
					|  |  |  |         syncMethod = job.conf["entity"][TABLE_NAMES[0]]["storage"] | 
			
		
	
		
			
				
					|  |  |  |     if syncMethod.count("-") < 2: | 
			
		
	
		
			
				
					|  |  |  |         return | 
			
		
	
		
			
				
					|  |  |  |     fileTime = basic.entity.VAL_ZERO_TIME | 
			
		
	
		
			
				
					|  |  |  |     dbTime = basic.entity.VAL_ZERO_TIME | 
			
		
	
		
			
				
					|  |  |  |     fileTime = model.entity.VAL_ZERO_TIME | 
			
		
	
		
			
				
					|  |  |  |     dbTime = model.entity.VAL_ZERO_TIME | 
			
		
	
		
			
				
					|  |  |  |     # get git-commit | 
			
		
	
		
			
				
					|  |  |  |     if "git" in syncMethod: | 
			
		
	
		
			
				
					|  |  |  |         apppath = utils.config_tool.getConfigPath(job, P.KEY_BASIC, B.SUBJECT_APPS, "") | 
			
		
	
		
			
				
					|  |  |  |         apppath = tools.config_tool.select_config_path(job, P.KEY_BASIC, B.SUBJECT_APPS, "") | 
			
		
	
		
			
				
					|  |  |  |         repopath = apppath[len(job.conf[B.SUBJECT_PATH][B.ATTR_PATH_COMPS]) + 1:] | 
			
		
	
		
			
				
					|  |  |  |         gitresult = utils.git_tool.gitLog(job, B.ATTR_PATH_COMPS, repopath, 1) | 
			
		
	
		
			
				
					|  |  |  |         gitresult = tools.git_tool.gitLog(job, B.ATTR_PATH_COMPS, repopath, 1) | 
			
		
	
		
			
				
					|  |  |  |         fileTime = gitresult[0]["date"] | 
			
		
	
		
			
				
					|  |  |  |         print(str(gitresult)) | 
			
		
	
		
			
				
					|  |  |  |     if "db" in syncMethod: | 
			
		
	
	
		
			
				
					|  |  | @ -140,12 +140,12 @@ def syncEnitities(job): | 
			
		
	
		
			
				
					|  |  |  |         print("db vorne") | 
			
		
	
		
			
				
					|  |  |  |         (appObjects, appDict) = selectEntities(job, dbi) | 
			
		
	
		
			
				
					|  |  |  |         print(str(appDict)) | 
			
		
	
		
			
				
					|  |  |  |         applPath = utils.config_tool.getConfigPath(job, P.KEY_BASIC, B.SUBJECT_APPS) | 
			
		
	
		
			
				
					|  |  |  |         utils.file_tool.writeFileDict(job.m, job, applPath, appDict) | 
			
		
	
		
			
				
					|  |  |  |         applPath = tools.config_tool.select_config_path(job, P.KEY_BASIC, B.SUBJECT_APPS) | 
			
		
	
		
			
				
					|  |  |  |         tools.file_tool.writeFileDict(job.m, job, applPath, appDict) | 
			
		
	
		
			
				
					|  |  |  |         # | 
			
		
	
		
			
				
					|  |  |  |     elif fileTime > dbTime: | 
			
		
	
		
			
				
					|  |  |  |         print("git vorne") | 
			
		
	
		
			
				
					|  |  |  |         applData = utils.config_tool.getConfig(job, P.KEY_BASIC, B.SUBJECT_APPS) | 
			
		
	
		
			
				
					|  |  |  |         applData = tools.config_tool.getConfig(job, P.KEY_BASIC, B.SUBJECT_APPS) | 
			
		
	
		
			
				
					|  |  |  |         insertEntities(job, applData, dbTime, dbi) | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | def selectEntities(job, dbi): | 
			
		
	
	
		
			
				
					|  |  | @ -161,7 +161,7 @@ def selectEntities(job, dbi): | 
			
		
	
		
			
				
					|  |  |  |         ao.setAppRow(row, "") | 
			
		
	
		
			
				
					|  |  |  |         appDict[B.SUBJECT_APPS][ao.name] = {} | 
			
		
	
		
			
				
					|  |  |  |         for f in job.testserver.conf[B.DATA_NODE_DDL][TABLE_NAMES[0]][B.DATA_NODE_HEADER]: | 
			
		
	
		
			
				
					|  |  |  |             if f in basic.entity.ENTITY_FIELDS: | 
			
		
	
		
			
				
					|  |  |  |             if f in model.entity.ENTITY_FIELDS: | 
			
		
	
		
			
				
					|  |  |  |                 continue | 
			
		
	
		
			
				
					|  |  |  |             appDict[B.SUBJECT_APPS][ao.name][f] = getattr(ao, f) | 
			
		
	
		
			
				
					|  |  |  |         apid = ao.apid | 
			
		
	
	
		
			
				
					|  |  | @ -178,7 +178,7 @@ def selectEntities(job, dbi): | 
			
		
	
		
			
				
					|  |  |  |             appDict[B.SUBJECT_PROJECTS][proj][B.SUBJECT_APPS].append(ao.name) | 
			
		
	
		
			
				
					|  |  |  |             aoproj = getattr(ao, "project")[proj] | 
			
		
	
		
			
				
					|  |  |  |             for f in job.testserver.conf[B.DATA_NODE_DDL][TABLE_NAMES[1]][B.DATA_NODE_HEADER]: | 
			
		
	
		
			
				
					|  |  |  |                 if f in basic.entity.ENTITY_FIELDS + ["approid", "apid"]: | 
			
		
	
		
			
				
					|  |  |  |                 if f in model.entity.ENTITY_FIELDS + ["approid", "apid"]: | 
			
		
	
		
			
				
					|  |  |  |                     continue | 
			
		
	
		
			
				
					|  |  |  |                 appDict[B.SUBJECT_PROJECTS][proj][f] = aoproj[f] | 
			
		
	
		
			
				
					|  |  |  |         rows = [row for row in compData[B.DATA_NODE_DATA] if row["apid"] == apid] | 
			
		
	
	
		
			
				
					|  |  | @ -192,7 +192,7 @@ def selectEntities(job, dbi): | 
			
		
	
		
			
				
					|  |  |  | def insertEntities(job,applData, dbTime, dbi): | 
			
		
	
		
			
				
					|  |  |  |         # insertRows | 
			
		
	
		
			
				
					|  |  |  |         # get list of application | 
			
		
	
		
			
				
					|  |  |  |         if dbTime != basic.entity.VAL_ZERO_TIME: | 
			
		
	
		
			
				
					|  |  |  |         if dbTime != model.entity.VAL_ZERO_TIME: | 
			
		
	
		
			
				
					|  |  |  |             for t in TABLE_NAMES: | 
			
		
	
		
			
				
					|  |  |  |                 dbi.deleteRows(t, job) | 
			
		
	
		
			
				
					|  |  |  |         for app in applData[B.SUBJECT_APPS]: | 
			
		
	
	
		
			
				
					|  |  | @ -200,7 +200,7 @@ def insertEntities(job,applData, dbTime, dbi): | 
			
		
	
		
			
				
					|  |  |  |             ao.readEntity(job, app) | 
			
		
	
		
			
				
					|  |  |  |             ao.insertEntity(dbi) | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | class Application(basic.entity.Entity): | 
			
		
	
		
			
				
					|  |  |  | class Application(model.entity.Entity): | 
			
		
	
		
			
				
					|  |  |  |     table = "application" | 
			
		
	
		
			
				
					|  |  |  |     name = "" | 
			
		
	
		
			
				
					|  |  |  |     description = "" | 
			
		
	
	
		
			
				
					|  |  | @ -226,20 +226,20 @@ class Application(basic.entity.Entity): | 
			
		
	
		
			
				
					|  |  |  |             self.readEntity(job, name) | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     def readEntity(self, job, app): | 
			
		
	
		
			
				
					|  |  |  |         apppath = utils.config_tool.getConfigPath(job, P.KEY_BASIC, B.SUBJECT_APPS, "") | 
			
		
	
		
			
				
					|  |  |  |         apppath = tools.config_tool.select_config_path(job, P.KEY_BASIC, B.SUBJECT_APPS, "") | 
			
		
	
		
			
				
					|  |  |  |         repopath = apppath[len(job.conf[B.SUBJECT_PATH][B.ATTR_PATH_COMPS]) + 1:] | 
			
		
	
		
			
				
					|  |  |  |         gitresult = utils.git_tool.gitLog(job, B.ATTR_PATH_COMPS, repopath, 1) | 
			
		
	
		
			
				
					|  |  |  |         applData = utils.config_tool.getConfig(job, P.KEY_BASIC, B.SUBJECT_APPS) | 
			
		
	
		
			
				
					|  |  |  |         gitresult = tools.git_tool.gitLog(job, B.ATTR_PATH_COMPS, repopath, 1) | 
			
		
	
		
			
				
					|  |  |  |         applData = tools.config_tool.getConfig(job, P.KEY_BASIC, B.SUBJECT_APPS) | 
			
		
	
		
			
				
					|  |  |  |         # main object | 
			
		
	
		
			
				
					|  |  |  |         for f in job.testserver.conf[B.DATA_NODE_DDL][TABLE_NAMES[0]][B.DATA_NODE_HEADER]: | 
			
		
	
		
			
				
					|  |  |  |             if f == basic.entity.ENTITY_NAME: | 
			
		
	
		
			
				
					|  |  |  |             if f == model.entity.ENTITY_NAME: | 
			
		
	
		
			
				
					|  |  |  |                 setattr(self, f, app) | 
			
		
	
		
			
				
					|  |  |  |             elif f == basic.entity.ENTITY_ATTRIBUTES: | 
			
		
	
		
			
				
					|  |  |  |             elif f == model.entity.ENTITY_ATTRIBUTES: | 
			
		
	
		
			
				
					|  |  |  |                 setattr(self, f, {}) | 
			
		
	
		
			
				
					|  |  |  |             elif f in applData[B.SUBJECT_APPS][app]: | 
			
		
	
		
			
				
					|  |  |  |                 setattr(self, f, applData[B.SUBJECT_APPS][app][f]) | 
			
		
	
		
			
				
					|  |  |  |             elif f in basic.entity.ENTITY_FIELDS: | 
			
		
	
		
			
				
					|  |  |  |                 setattr(self, f, basic.entity.getEntityValue(job, f, gitresult[0])) | 
			
		
	
		
			
				
					|  |  |  |             elif f in model.entity.ENTITY_FIELDS: | 
			
		
	
		
			
				
					|  |  |  |                 setattr(self, f, model.entity.getEntityValue(job, f, gitresult[0])) | 
			
		
	
		
			
				
					|  |  |  |             else: | 
			
		
	
		
			
				
					|  |  |  |                 setattr(self, f, "xx") | 
			
		
	
		
			
				
					|  |  |  |         project = {} | 
			
		
	
	
		
			
				
					|  |  | @ -247,16 +247,16 @@ class Application(basic.entity.Entity): | 
			
		
	
		
			
				
					|  |  |  |             for proj in applData[B.SUBJECT_APPS][app][B.SUBJECT_PROJECTS]: | 
			
		
	
		
			
				
					|  |  |  |                 project[proj] = {} | 
			
		
	
		
			
				
					|  |  |  |                 for f in job.testserver.conf[B.DATA_NODE_DDL][TABLE_NAMES[1]][B.DATA_NODE_HEADER]: | 
			
		
	
		
			
				
					|  |  |  |                     if f == basic.entity.ENTITY_NAME: | 
			
		
	
		
			
				
					|  |  |  |                     if f == model.entity.ENTITY_NAME: | 
			
		
	
		
			
				
					|  |  |  |                         project[proj][f] = proj | 
			
		
	
		
			
				
					|  |  |  |                     elif f == "project": | 
			
		
	
		
			
				
					|  |  |  |                         project[proj][f] = proj | 
			
		
	
		
			
				
					|  |  |  |                     elif f == basic.entity.ENTITY_ATTRIBUTES: | 
			
		
	
		
			
				
					|  |  |  |                     elif f == model.entity.ENTITY_ATTRIBUTES: | 
			
		
	
		
			
				
					|  |  |  |                         project[proj][f] = {} | 
			
		
	
		
			
				
					|  |  |  |                     elif f in applData[B.SUBJECT_PROJECTS][proj]: | 
			
		
	
		
			
				
					|  |  |  |                         project[proj][f] = applData[B.SUBJECT_PROJECTS][proj][f] | 
			
		
	
		
			
				
					|  |  |  |                     elif f in basic.entity.ENTITY_FIELDS: | 
			
		
	
		
			
				
					|  |  |  |                         project[proj][f] = basic.entity.getEntityValue(job, f, gitresult[0]) | 
			
		
	
		
			
				
					|  |  |  |                     elif f in model.entity.ENTITY_FIELDS: | 
			
		
	
		
			
				
					|  |  |  |                         project[proj][f] = model.entity.getEntityValue(job, f, gitresult[0]) | 
			
		
	
		
			
				
					|  |  |  |                     else: | 
			
		
	
		
			
				
					|  |  |  |                         project[proj][f] = "xx" | 
			
		
	
		
			
				
					|  |  |  |         setattr(self, "project", project) | 
			
		
	
	
		
			
				
					|  |  | @ -297,7 +297,7 @@ class Application(basic.entity.Entity): | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     def selectEntity(self, job, app): | 
			
		
	
		
			
				
					|  |  |  |         dbi = basic.toolHandling.getDbTool(job, job.testserver, job.conf[B.TOPIC_NODE_DB][B.ATTR_TYPE]) | 
			
		
	
		
			
				
					|  |  |  |         data = dbi.selectRows(TABLE_NAMES[0], job, "WHERE name = \'"+app+"\' AND actual = "+basic.entity.ENTITY_ACTUAL) | 
			
		
	
		
			
				
					|  |  |  |         data = dbi.selectRows(TABLE_NAMES[0], job, "WHERE name = \'" + app +"\' AND actual = " + model.entity.ENTITY_ACTUAL) | 
			
		
	
		
			
				
					|  |  |  |         # main object | 
			
		
	
		
			
				
					|  |  |  |         self.setAppRow(data[B.DATA_NODE_DATA][0], app) | 
			
		
	
		
			
				
					|  |  |  |         apid = getattr(self, "apid") | 
			
		
	
	
		
			
				
					|  |  | @ -308,7 +308,7 @@ class Application(basic.entity.Entity): | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     def setAppRow(self, row, app): | 
			
		
	
		
			
				
					|  |  |  |         for f in self.job.testserver.conf[B.DATA_NODE_DDL][TABLE_NAMES[0]][B.DATA_NODE_HEADER]: | 
			
		
	
		
			
				
					|  |  |  |             if f not in row and f == basic.entity.ENTITY_NAME: | 
			
		
	
		
			
				
					|  |  |  |             if f not in row and f == model.entity.ENTITY_NAME: | 
			
		
	
		
			
				
					|  |  |  |                 setattr(self, f, app) | 
			
		
	
		
			
				
					|  |  |  |             else: | 
			
		
	
		
			
				
					|  |  |  |                 setattr(self, f, str(row[f])) | 
			
		
	
	
		
			
				
					|  |  | 
 |