buildframework/helium/sf/java/ccmtask/src/com/nokia/helium/ccmtask/ant/taskdefs/ccmtask.py
changeset 628 7c4a911dc066
parent 588 c7c26511138f
equal deleted inserted replaced
588:c7c26511138f 628:7c4a911dc066
    34 rlogger.addHandler(antlogger)
    34 rlogger.addHandler(antlogger)
    35 logging.getLogger("ccm").setLevel(logging.INFO)
    35 logging.getLogger("ccm").setLevel(logging.INFO)
    36 logger = logging.getLogger("ccm.ant")
    36 logger = logging.getLogger("ccm.ant")
    37 session = None
    37 session = None
    38 
    38 
    39 def execute_update(command):
    39 def execute_update(session, command):
    40     java_ccmtask.log(str('Updating project: ' + command.getProject()))
    40     java_ccmtask.log(str('Updating project: ' + command.getProject()))
    41     project = session.create(command.getProject())
    41     project = session.create(command.getProject())
    42     project.update()
    42     project.update()
    43 
    43 
    44 def execute_role(command):
    44 def execute_role(session, command):
    45     if not command.getRole():
    45     if not command.getRole():
    46         raise Exception("The 'role' attribute has not been defined.")
    46         raise Exception("The 'role' attribute has not been defined.")
    47     java_ccmtask.log(str('Updating role: ' + command.getRole()))
    47     java_ccmtask.log(str('Updating role: ' + command.getRole()))
    48     session.role = command.getRole()
    48     session.role = command.getRole()
    49     
    49     
    50 def execute_synchronize(command):
    50 def execute_synchronize(session, command):
    51     if not command.getProject():
    51     if not command.getProject():
    52         raise Exception("The 'project' attribute has not been defined.")
    52         raise Exception("The 'project' attribute has not been defined.")
    53     java_ccmtask.log(str('Synchronizing project: ' + command.getProject()))
    53     java_ccmtask.log(str('Synchronizing project: ' + command.getProject()))
    54     java_ccmtask.log(str("Recursive: %s" % command.getRecursive()))
    54     java_ccmtask.log(str("Recursive: %s" % command.getRecursive()))
    55     project = session.create(command.getProject())
    55     project = session.create(command.getProject())
    56     project.sync(command.getRecursive())    
    56     project.sync(command.getRecursive())    
    57         
    57         
    58 def execute_reconcile(command):
    58 def execute_reconcile(session, command):
    59     if not command.getProject():
    59     if not command.getProject():
    60         raise Exception("The 'project' attribute has not been defined.")
    60         raise Exception("The 'project' attribute has not been defined.")
    61     java_ccmtask.log(str('Reconciling project: ' + command.getProject()))
    61     java_ccmtask.log(str('Reconciling project: ' + command.getProject()))
    62     project = session.create(command.getProject())
    62     project = session.create(command.getProject())
    63     project.reconcile()
    63     project.reconcile()
    64 
    64 
    65 def execute_snapshot(command):
    65 def execute_snapshot(session, command):
    66     if not command.getProject():
    66     if not command.getProject():
    67         raise Exception("The 'project' attribute has not been defined.")
    67         raise Exception("The 'project' attribute has not been defined.")
    68     if not command.getDir():
    68     if not command.getDir():
    69         raise Exception("The 'dir' attribute has not been defined.")
    69         raise Exception("The 'dir' attribute has not been defined.")
    70     java_ccmtask.log(str('Snapshot of project: ' + command.getProject() + ' to ' + command.getDir()))
    70     java_ccmtask.log(str('Snapshot of project: ' + command.getProject() + ' to ' + command.getDir()))
    72     if command.getFast()== True:
    72     if command.getFast()== True:
    73         ccm.extra.FastSnapshot(project, command.getDir())        
    73         ccm.extra.FastSnapshot(project, command.getDir())        
    74     else:
    74     else:
    75         project.snapshot(command.getDir(), command.getRecursive())
    75         project.snapshot(command.getDir(), command.getRecursive())
    76 
    76 
    77 def execute_changereleasetag(command):
    77 def execute_changereleasetag(session, command):
    78     if not command.getFolder():
    78     if not command.getFolder():
    79         raise Exception("The 'folder' attribute has not been defined.")
    79         raise Exception("The 'folder' attribute has not been defined.")
    80     if not command.getReleaseTag():
    80     if not command.getReleaseTag():
    81         raise Exception("The 'releaseTag' attribute has not been defined.")
    81         raise Exception("The 'releaseTag' attribute has not been defined.")
    82     java_ccmtask.log(str('Changing release tag for all tasks in the folder : ' + command.getFolder() + ' as ' + command.getReleaseTag()))
    82     java_ccmtask.log(str('Changing release tag for all tasks in the folder : ' + command.getFolder() + ' as ' + command.getReleaseTag()))
    84     folder = session.create("Folder " + str(command.getFolder()))
    84     folder = session.create("Folder " + str(command.getFolder()))
    85     for task in folder.tasks:
    85     for task in folder.tasks:
    86         if task.release != str(command.getReleaseTag()):
    86         if task.release != str(command.getReleaseTag()):
    87             task.release = str(command.getReleaseTag())
    87             task.release = str(command.getReleaseTag())
    88             
    88             
    89 def execute_checkout(command):
    89 def execute_checkout(session, command):
    90     if not command.getProject():
    90     if not command.getProject():
    91         raise Exception("The 'project' attribute has not been defined.")
    91         raise Exception("The 'project' attribute has not been defined.")
    92     java_ccmtask.log(str('Checking out project: ' + command.getProject() + ' with release tag ' + command.getRelease()))
    92     java_ccmtask.log(str('Checking out project: ' + command.getProject() + ' with release tag ' + command.getRelease()))
    93     project = session.create(command.getProject())
    93     project = session.create(command.getProject())
    94     if (command.getRelease()):
    94     if (command.getRelease()):
   112             purpose = command.getPurpose()
   112             purpose = command.getPurpose()
   113         else:
   113         else:
   114             purpose = None
   114             purpose = None
   115         project.checkout(session.create(command.getRelease()), version, purpose, recursive)
   115         project.checkout(session.create(command.getRelease()), version, purpose, recursive)
   116 
   116 
   117 def execute_createreleasetag(command):
   117 def execute_createreleasetag(session, command):
   118     java_ccmtask.log(str('creating a release tag'))
   118     java_ccmtask.log(str('creating a release tag'))
   119     if not command.getProject():
   119     if not command.getProject():
   120         raise Exception("The 'project' attribute has not been defined.")
   120         raise Exception("The 'project' attribute has not been defined.")
   121     project = session.create(command.getProject())
   121     project = session.create(command.getProject())
   122     if (command.getNewTag()):
   122     if (command.getNewTag()):
   123         new_release_tag = command.getNewTag();
   123         new_release_tag = command.getNewTag();
   124         project.create_release_tag(command.getRelease(), new_release_tag)
   124         project.create_release_tag(command.getRelease(), new_release_tag)
   125 
   125 
   126 def execute_deletereleasetag(command):
   126 def execute_deletereleasetag(session, command):
   127     java_ccmtask.log(str('deleting a release tag'))
   127     java_ccmtask.log(str('deleting a release tag'))
   128     if not command.getProject():
   128     if not command.getProject():
   129         raise Exception("The 'project' attribute has not been defined.")
   129         raise Exception("The 'project' attribute has not been defined.")
   130     project = session.create(command.getProject())
   130     project = session.create(command.getProject())
   131     if (command.getNewTag()):
   131     if (command.getNewTag()):
   132         new_release_tag = command.getNewTag();
   132         new_release_tag = command.getNewTag();
   133         project.delete_release_tag(command.getRelease(), new_release_tag)
   133         project.delete_release_tag(command.getRelease(), new_release_tag)
   134 
   134 
   135 def execute_workarea(command):
   135 def execute_workarea(session, command):
   136     if not command.getProject():
   136     if not command.getProject():
   137         raise Exception("The 'project' attribute has not been defined.")
   137         raise Exception("The 'project' attribute has not been defined.")
   138     java_ccmtask.log(str('Modifying work area for the project : ' + command.getProject()))
   138     java_ccmtask.log(str('Modifying work area for the project : ' + command.getProject()))
   139     project = session.create(command.getProject())
   139     project = session.create(command.getProject())
   140     if command.getMaintain():
   140     if command.getMaintain():
   161         wat = command.getWat()
   161         wat = command.getWat()
   162     else:
   162     else:
   163         wat = None
   163         wat = None
   164     project.work_area(maintain, recursive, relative, path, pst, wat)
   164     project.work_area(maintain, recursive, relative, path, pst, wat)
   165 
   165 
   166 def execute_addtask(command):
   166 def execute_addtask(session, command):
   167     if command.getFolder() != None:
   167     if command.getFolder() != None:
   168         tasks = []        
   168         tasks = []        
   169         ccmfolder = session.create("Folder " + command.getFolder())
   169         ccmfolder = session.create("Folder " + command.getFolder())
   170         role = find_folder_information(command)
   170         role = find_folder_information(session, command)
   171         if role == "build_mgr":
   171         if role == "build_mgr":
   172             java_ccmtask.log("Changing role to %s" % role)
   172             java_ccmtask.log("Changing role to %s" % role)
   173             session.role = "build_mgr"
   173             session.role = "build_mgr"
   174 
   174 
   175         folder = session.create("Folder %s" % str(command.getFolder()))
   175         folder = session.create("Folder %s" % str(command.getFolder()))
   179         java_ccmtask.log("Adding task to folder %s" % ccmfolder)
   179         java_ccmtask.log("Adding task to folder %s" % ccmfolder)
   180         tasks.extend(map(lambda task: session.create("Task " + task.getName()), command.getTasks()))
   180         tasks.extend(map(lambda task: session.create("Task " + task.getName()), command.getTasks()))
   181         for task in tasks:
   181         for task in tasks:
   182             ccmfolder.append(task)
   182             ccmfolder.append(task)
   183     
   183     
   184 def find_folder_information(command):
   184 def find_folder_information(session, command):
   185     cmdline = "folder -sh i " + command.getFolder()    
   185     cmdline = "folder -sh i " + command.getFolder()    
   186     result = session.execute(cmdline)
   186     result = session.execute(cmdline)
   187     result_array = str(result).split('\r')
   187     result_array = str(result).split('\r')
   188     for ldata in result_array :        
   188     for ldata in result_array :        
   189         if ldata.find('Writable By:') > 0:
   189         if ldata.find('Writable By:') > 0:
   191             if wd.lstrip() == "Build Manager":
   191             if wd.lstrip() == "Build Manager":
   192                 return "build_mgr"
   192                 return "build_mgr"
   193             else:
   193             else:
   194                 return "developer"
   194                 return "developer"
   195 
   195 
   196 def execute_exists(command):
   196 def execute_exists(session, command):
   197     fpn = None
   197     fpn = None
   198     if command.getObject() != None:
   198     if command.getObject() != None:
   199         fpn = command.getObject()
   199         fpn = command.getObject()
   200     elif command.getFolder() != None:
   200     elif command.getFolder() != None:
   201 		fpn = "Folder " + command.getFolder()
   201 		fpn = "Folder " + command.getFolder()
   208     if ccmo.exists():
   208     if ccmo.exists():
   209         java_ccmtask.log("'%s' exists." % ccmo)
   209         java_ccmtask.log("'%s' exists." % ccmo)
   210     else:
   210     else:
   211         raise Exception("Could not find '%s'." % ccmo)
   211         raise Exception("Could not find '%s'." % ccmo)
   212 
   212 
   213 def execute_close(command):
   213 def execute_close(session, command):
   214     global session
   214     java_ccmtask.log(str("Closing session %s." % str(session)))
   215     java_ccmtask.log(str("Closing session %s." % session))
   215     if hasattr(session, 'close_on_exit'):
   216     session.close_on_exit = True
   216         session.close_on_exit = True    
   217     session.close()
   217     session.close()
   218     session = None
       
   219     
   218     
   220 def referenceToObject(obj):
   219 def referenceToObject(obj):
   221     if obj.isReference() == 1:
   220     if obj.isReference() == 1:
   222         ref = project.getReference(str(obj.getRefid().getRefId()))
   221         ref = project.getReference(str(obj.getRefid().getRefId()))
   223         if ref == None:
   222         if ref == None:
   233 print "Session list: ", sessionIds
   232 print "Session list: ", sessionIds
   234 if len(sessionIds) > 0:
   233 if len(sessionIds) > 0:
   235     sessionid = sessionIds.pop()
   234     sessionid = sessionIds.pop()
   236     session = ccm.Session(username=None, engine=None, dbpath=None, ccm_addr=sessionid, close_on_exit=False)
   235     session = ccm.Session(username=None, engine=None, dbpath=None, ccm_addr=sessionid, close_on_exit=False)
   237 else:
   236 else:
   238    username = java_ccmtask.getUsername()
   237     username = java_ccmtask.getUsername()
   239    password = java_ccmtask.getPassword()
   238     password = java_ccmtask.getPassword()
   240    session = ccm.open_session(username=username, password=password)
   239     session = ccm.open_session(username=username, password=password)
   241 
   240 
   242 if java_ccmtask.getVerbose() == 1:
   241 if java_ccmtask.getVerbose() == 1:
   243     logging.getLogger("ccm").setLevel(logging.DEBUG)
   242     logging.getLogger("ccm").setLevel(logging.DEBUG)
   244 
   243 
   245 #print dir(sys.modules['__main__'] )
   244 #print dir(sys.modules['__main__'] )
   247 for command in ccm_commands:
   246 for command in ccm_commands:
   248     print "Running command '%s'" % command.getName()
   247     print "Running command '%s'" % command.getName()
   249     method_name = 'execute_' + command.getName()
   248     method_name = 'execute_' + command.getName()
   250     method = sys.modules['__main__'].__dict__[method_name]
   249     method = sys.modules['__main__'].__dict__[method_name]
   251     try:
   250     try:
   252         method(command)
   251         method(session, command)
   253     except Exception, e:
   252     except Exception, e:
   254         if java_ccmtask.getVerbose() == 1:
   253         if java_ccmtask.getVerbose() == 1:
   255             import traceback
   254             import traceback
   256             logger.error(traceback.print_exc(file=sys.stdout))
   255             logger.error(traceback.print_exc(file=sys.stdout))
   257             if 'result' in e:
   256             if 'result' in e: