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: |
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: |