buildframework/helium/sf/java/ccmtask/src/com/nokia/helium/ccmtask/ant/taskdefs/ccmtask.py
author wbernard
Fri, 13 Aug 2010 14:59:05 +0300
changeset 628 7c4a911dc066
parent 588 c7c26511138f
permissions -rw-r--r--
helium_11.0.0-e00f171ca185
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
     1
#============================================================================ 
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
     2
#Name        : ccmtask.py 
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
     3
#Part of     : Helium 
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
     4
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
     5
#Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
     6
#All rights reserved.
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
     7
#This component and the accompanying materials are made available
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
     8
#under the terms of the License "Eclipse Public License v1.0"
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
     9
#which accompanies this distribution, and is available
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    10
#at the URL "http://www.eclipse.org/legal/epl-v10.html".
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    11
#
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    12
#Initial Contributors:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    13
#Nokia Corporation - initial contribution.
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    14
#
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    15
#Contributors:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    16
#
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    17
#Description:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    18
#===============================================================================
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    19
""" Script to process Ant <ccm> task commands. """
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    20
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    21
import ccm
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    22
import ccm.extra
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    23
import sys
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    24
import logging
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    25
import ant
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    26
import string
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    27
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    28
logging.basicConfig(level=logging.INFO)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    29
antlogger = ant.AntHandler(java_ccmtask)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    30
rlogger = logging.getLogger('')
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    31
# replacing default handler by Ant one.
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    32
if len(rlogger.handlers) > 0:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    33
    rlogger.removeHandler(rlogger.handlers[0])
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    34
rlogger.addHandler(antlogger)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    35
logging.getLogger("ccm").setLevel(logging.INFO)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    36
logger = logging.getLogger("ccm.ant")
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    37
session = None
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    38
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    39
def execute_update(session, command):
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    40
    java_ccmtask.log(str('Updating project: ' + command.getProject()))
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    41
    project = session.create(command.getProject())
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    42
    project.update()
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    43
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    44
def execute_role(session, command):
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    45
    if not command.getRole():
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    46
        raise Exception("The 'role' attribute has not been defined.")
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    47
    java_ccmtask.log(str('Updating role: ' + command.getRole()))
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    48
    session.role = command.getRole()
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    49
    
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    50
def execute_synchronize(session, command):
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    51
    if not command.getProject():
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    52
        raise Exception("The 'project' attribute has not been defined.")
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    53
    java_ccmtask.log(str('Synchronizing project: ' + command.getProject()))
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    54
    java_ccmtask.log(str("Recursive: %s" % command.getRecursive()))
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    55
    project = session.create(command.getProject())
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    56
    project.sync(command.getRecursive())    
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    57
        
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    58
def execute_reconcile(session, command):
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    59
    if not command.getProject():
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    60
        raise Exception("The 'project' attribute has not been defined.")
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    61
    java_ccmtask.log(str('Reconciling project: ' + command.getProject()))
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    62
    project = session.create(command.getProject())
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    63
    project.reconcile()
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    64
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    65
def execute_snapshot(session, command):
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    66
    if not command.getProject():
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    67
        raise Exception("The 'project' attribute has not been defined.")
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    68
    if not command.getDir():
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    69
        raise Exception("The 'dir' attribute has not been defined.")
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    70
    java_ccmtask.log(str('Snapshot of project: ' + command.getProject() + ' to ' + command.getDir()))
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    71
    project = session.create(command.getProject())
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    72
    if command.getFast()== True:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    73
        ccm.extra.FastSnapshot(project, command.getDir())        
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    74
    else:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    75
        project.snapshot(command.getDir(), command.getRecursive())
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    76
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    77
def execute_changereleasetag(session, command):
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    78
    if not command.getFolder():
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    79
        raise Exception("The 'folder' attribute has not been defined.")
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    80
    if not command.getReleaseTag():
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    81
        raise Exception("The 'releaseTag' attribute has not been defined.")
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    82
    java_ccmtask.log(str('Changing release tag for all tasks in the folder : ' + command.getFolder() + ' as ' + command.getReleaseTag()))
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    83
    #Search all task from the folder    
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    84
    folder = session.create("Folder " + str(command.getFolder()))
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    85
    for task in folder.tasks:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    86
        if task.release != str(command.getReleaseTag()):
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    87
            task.release = str(command.getReleaseTag())
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    88
            
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
    89
def execute_checkout(session, command):
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    90
    if not command.getProject():
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    91
        raise Exception("The 'project' attribute has not been defined.")
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    92
    java_ccmtask.log(str('Checking out project: ' + command.getProject() + ' with release tag ' + command.getRelease()))
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    93
    project = session.create(command.getProject())
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    94
    if (command.getRelease()):
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    95
        if command.getWa():
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    96
            wa = command.getWa()
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    97
        else:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    98
            wa = None
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
    99
        if command.getRecursive():
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   100
            recursive = command.getRecursive()
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   101
        else:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   102
            recursive = None
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   103
        if command.getRelative():
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   104
            relative = command.getRelative()
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   105
        else:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   106
            relative = None
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   107
        if command.getVersion():
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   108
            version = command.getVersion()
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   109
        else:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   110
            version = None
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   111
        if command.getPurpose():
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   112
            purpose = command.getPurpose()
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   113
        else:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   114
            purpose = None
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   115
        project.checkout(session.create(command.getRelease()), version, purpose, recursive)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   116
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   117
def execute_createreleasetag(session, command):
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   118
    java_ccmtask.log(str('creating a release tag'))
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   119
    if not command.getProject():
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   120
        raise Exception("The 'project' attribute has not been defined.")
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   121
    project = session.create(command.getProject())
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   122
    if (command.getNewTag()):
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   123
        new_release_tag = command.getNewTag();
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   124
        project.create_release_tag(command.getRelease(), new_release_tag)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   125
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   126
def execute_deletereleasetag(session, command):
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   127
    java_ccmtask.log(str('deleting a release tag'))
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   128
    if not command.getProject():
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   129
        raise Exception("The 'project' attribute has not been defined.")
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   130
    project = session.create(command.getProject())
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   131
    if (command.getNewTag()):
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   132
        new_release_tag = command.getNewTag();
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   133
        project.delete_release_tag(command.getRelease(), new_release_tag)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   134
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   135
def execute_workarea(session, command):
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   136
    if not command.getProject():
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   137
        raise Exception("The 'project' attribute has not been defined.")
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   138
    java_ccmtask.log(str('Modifying work area for the project : ' + command.getProject()))
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   139
    project = session.create(command.getProject())
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   140
    if command.getMaintain():
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   141
        maintain = command.getMaintain()
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   142
    else:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   143
        maintain = None
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   144
    if command.getRecursive():
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   145
        recursive = command.getRecursive()
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   146
    else:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   147
        recursive = None
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   148
    if command.getRelative():
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   149
        relative = command.getRelative()
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   150
    else:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   151
        relative = None
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   152
    if command.getPath():
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   153
        path = command.getPath()
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   154
    else:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   155
        path = None
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   156
    if command.getPst():
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   157
        pst = command.getPst()
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   158
    else:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   159
        pst = None
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   160
    if command.getWat():
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   161
        wat = command.getWat()
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   162
    else:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   163
        wat = None
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   164
    project.work_area(maintain, recursive, relative, path, pst, wat)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   165
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   166
def execute_addtask(session, command):
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   167
    if command.getFolder() != None:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   168
        tasks = []        
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   169
        ccmfolder = session.create("Folder " + command.getFolder())
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   170
        role = find_folder_information(session, command)
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   171
        if role == "build_mgr":
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   172
            java_ccmtask.log("Changing role to %s" % role)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   173
            session.role = "build_mgr"
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   174
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   175
        folder = session.create("Folder %s" % str(command.getFolder()))
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   176
        for task in folder.tasks:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   177
            folder.remove(task)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   178
        
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   179
        java_ccmtask.log("Adding task to folder %s" % ccmfolder)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   180
        tasks.extend(map(lambda task: session.create("Task " + task.getName()), command.getTasks()))
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   181
        for task in tasks:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   182
            ccmfolder.append(task)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   183
    
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   184
def find_folder_information(session, command):
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   185
    cmdline = "folder -sh i " + command.getFolder()    
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   186
    result = session.execute(cmdline)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   187
    result_array = str(result).split('\r')
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   188
    for ldata in result_array :        
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   189
        if ldata.find('Writable By:') > 0:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   190
            wb,wd = ldata.split(':',1)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   191
            if wd.lstrip() == "Build Manager":
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   192
                return "build_mgr"
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   193
            else:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   194
                return "developer"
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   195
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   196
def execute_exists(session, command):
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   197
    fpn = None
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   198
    if command.getObject() != None:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   199
        fpn = command.getObject()
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   200
    elif command.getFolder() != None:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   201
		fpn = "Folder " + command.getFolder()
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   202
    elif command.getTask() != None:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   203
		fpn = "Task " + command.getTask()
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   204
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   205
    if fpn == None:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   206
        raise Exception("You need to define either a 'task'/'folder'/'object' attribute.")
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   207
    ccmo = session.create(fpn)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   208
    if ccmo.exists():
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   209
        java_ccmtask.log("'%s' exists." % ccmo)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   210
    else:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   211
        raise Exception("Could not find '%s'." % ccmo)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   212
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   213
def execute_close(session, command):
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   214
    java_ccmtask.log(str("Closing session %s." % str(session)))
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   215
    if hasattr(session, 'close_on_exit'):
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   216
        session.close_on_exit = True    
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   217
    session.close()
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   218
    
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   219
def referenceToObject(obj):
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   220
    if obj.isReference() == 1:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   221
        ref = project.getReference(str(obj.getRefid().getRefId()))
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   222
        if ref == None:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   223
            raise Exception("Could not find reference '%s'" % str(obj.getRefid().getRefId()))
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   224
        return ref
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   225
    else:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   226
        return obj        
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   227
        
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   228
sessionIds = [] 
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   229
for session_set in java_ccmtask.getSessionSets():
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   230
    sessionIds.extend(map(lambda session: session.getAddr(), referenceToObject(session_set).getSessions()))
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   231
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   232
print "Session list: ", sessionIds
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   233
if len(sessionIds) > 0:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   234
    sessionid = sessionIds.pop()
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   235
    session = ccm.Session(username=None, engine=None, dbpath=None, ccm_addr=sessionid, close_on_exit=False)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   236
else:
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   237
    username = java_ccmtask.getUsername()
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   238
    password = java_ccmtask.getPassword()
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   239
    session = ccm.open_session(username=username, password=password)
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   240
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   241
if java_ccmtask.getVerbose() == 1:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   242
    logging.getLogger("ccm").setLevel(logging.DEBUG)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   243
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   244
#print dir(sys.modules['__main__'] )
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   245
ccm_commands = java_ccmtask.getCommands()
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   246
for command in ccm_commands:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   247
    print "Running command '%s'" % command.getName()
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   248
    method_name = 'execute_' + command.getName()
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   249
    method = sys.modules['__main__'].__dict__[method_name]
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   250
    try:
628
7c4a911dc066 helium_11.0.0-e00f171ca185
wbernard
parents: 588
diff changeset
   251
        method(session, command)
588
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   252
    except Exception, e:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   253
        if java_ccmtask.getVerbose() == 1:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   254
            import traceback
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   255
            logger.error(traceback.print_exc(file=sys.stdout))
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   256
            if 'result' in e:
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   257
                logger.error(e.result)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   258
        logger.error(e)
c7c26511138f helium-10.0.0-bc45d50958fe
wbernard
parents:
diff changeset
   259
        raise e