summaryrefslogtreecommitdiffstats
path: root/src/build/tools/CommitSbeImageToCMVC.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/build/tools/CommitSbeImageToCMVC.py')
-rwxr-xr-xsrc/build/tools/CommitSbeImageToCMVC.py376
1 files changed, 0 insertions, 376 deletions
diff --git a/src/build/tools/CommitSbeImageToCMVC.py b/src/build/tools/CommitSbeImageToCMVC.py
deleted file mode 100755
index b6f4eca8..00000000
--- a/src/build/tools/CommitSbeImageToCMVC.py
+++ /dev/null
@@ -1,376 +0,0 @@
-#!/usr/bin/python
-# IBM_PROLOG_BEGIN_TAG
-# This is an automatically generated prolog.
-#
-# $Source: src/build/tools/CommitSbeImageToCMVC.py $
-#
-# OpenPOWER sbe Project
-#
-# Contributors Listed Below - COPYRIGHT 2016
-#
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# permissions and limitations under the License.
-#
-# IBM_PROLOG_END_TAG
-'''
-###########################################################
-# @file CommitSbeImageToCMVC.py
-# @author: George Keishing <gkeishin@in.ibm.com>
-# Sangeetha TS <sangeet2@in.ibm.com>
-# @brief Main Module to support CMVC operation
-#
-# Created on March 03, 2016
-# ----------------------------------------------------
-# @version Developer Date Description
-# ----------------------------------------------------
-# 1.0 gkeishin 03/03/16 Initial create
-###########################################################
-'''
-
-#-------------------------
-# Imports
-#-------------------------
-import getopt
-import os, sys, glob
-import shutil
-
-# Libraries/utility funcs and user define const
-import sbeCmvcConstants as errorcode
-import sbeCmvcUtility as utilcode
-
-#-------------------------
-# Main Function
-#-------------------------
-def main():
-
- #------------------------------------------
- # Usage tool option
- #------------------------------------------
- def usage():
- print " ---------------------------------------------------------------------------------------------------"
- print " :: Command line USAGE options for Uploading FW SBE image to CMVC :: \n"
- print " CommitSbeImageToCMVC.py -d <cmvc defect/feature id> -r <fips release> -p <SBE repo Path> -i <file1,file2.file3>"
-
- print " \n"
- print " +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
- print " | By default user MUST pass CMVC/Release/Path input. |"
- print " +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
- print " \n ***** Options Supported *****"
- print " \t -d,--defect = Defect CMVC number"
- print " \t -f,--feature = Feature CMVC number"
- print " \t -r,--release = FW fips release string EX: fips910"
- print " \t -p,--path = Absolute path of the SBE repo"
- print " \t -i,--input = [ Optional ] List of image or file to upload"
- print " \t -b,--bvt = BVT xml file for CI"
- print " \t -h,--help = Help"
- print " ------------------------------------------------------------------------------------"
-
- #------------------------------------------
- # Exit from this Main
- #------------------------------------------
- def exit_main(rc):
- if rc == errorcode.HELP_EXIT:
- print " [ HELP DOCUMENTATION ]\n"
- sys.exit(0)
-
- if rc:
- print "\n [ ERROR - MAIN ] Exiting with error code = ", rc
- sys.exit(rc)
- else:
- print "\n SBE Image Upload to CMVC completed [ OK ] "
- sys.exit(0)
-
- #------------------------------------------
- # Local var place name holder's
- #------------------------------------------
- defect_num = "None"
- feature_num = "None"
- release_name = "None"
- path_name = "None"
- file_name = "None"
- bvt = "None"
-
- #----------------------------
- # Read command line args
- #----------------------------
- opts, args = getopt.getopt(sys.argv[1:],"d:f:r:p:i:b:h",['defect=', 'feature=', 'release=', 'path=', 'input=', 'bvt=', 'help'])
- for opt, arg in opts:
- if opt in ('-h', '--help'):
- usage()
- exit_main(errorcode.HELP_EXIT)
- elif opt in ('-d', '--defect'):
- defect_num = arg
- elif opt in ('-f', '--feature'):
- feature_num = arg
- elif opt in ('-r', '--release'):
- release_name = arg
- elif opt in ('-p', '--path'):
- path_name = arg
- elif opt in ('-i', '--input'):
- file_name = arg
- elif opt in ('-b', '--bvt'):
- bvt = arg
- else:
- usage()
- exit_main(errorcode.ERROR_EXIT)
-
- #----------------------------------
- # Preping the data for Image Upload
- #----------------------------------
- print " \n"
- print " ******************************************************"
- print " ****** Stagging PPE image Files Upload to CMVC ******"
- print " ******************************************************"
-
- #------------------------------------------------------
- # Make sure that it has passed atleast one arg with it
- #------------------------------------------------------
- if len(sys.argv)<2:
- usage()
- exit_main(errorcode.ERROR_SYS_EXIT)
-
- #-------------------------------------------------------------
- # Check user inputs and display
- #-------------------------------------------------------------
- def input_setting():
- print " ---------------------------------------------------------------------------------"
- print " [ Display User Inputs ]"
- print " ---------------------------------------------------------------------------------"
- # Look elsewhere for the name instead of assigning to it locally.
- # This is now gloabal var
- global g_cmvc_num
- if ( defect_num != "None" ) or ( feature_num != "None" ):
- if not defect_num == "None":
- g_cmvc_num = 'D'+defect_num #D1234
- print " [ CMVC Defect ] \t\t#Number\t = %s"%(g_cmvc_num)
- else:
- g_cmvc_num = 'F'+feature_num # F1234
- print " [ CMVC Feature ] \t\t#Number\t = %s"%(g_cmvc_num)
- else:
- print " [ CMVC Defect/Feature ] Neeed CMVC number. This can't be empty "
- exit_main(errorcode.ERROR_EXIT)
-
- if not release_name == "None":
- print " [ Fips Release Name ] \t#String\t = %s"%(release_name)
- else:
- print " [ Fips release ] Neeed fips release string. This can't be empty "
- exit_main(errorcode.ERROR_EXIT)
-
- if not path_name == "None":
- print " [ Build Repo Path ] \t\t#String\t = %s"%(path_name)
- else:
- print " [ User Build Repo Path ] \t\t#String\t = %s"%(path_name)
-
- # Optional, by default looks up predefined files
- if not file_name == "None":
- print " [ Files for Check-in - User List ]"
- for files in file_name.split(","):
- print " \t\t\t\t#",files
- else:
- print " [ Files for Check-in - Default List ]"
- for files in errorcode.CMVC_FILE_LIST.split(","):
- print " \t\t\t\t# ",files
-
- print " ---------------------------------------------------------------------------------"
-
- #-------------------------------------------------------------
- # CMVC ENV check
- #-------------------------------------------------------------
- def UserCmvcENV():
- # Assumed the CMVC cofig is there in the user bash ENV
- # In .bashrc the CMVX ENV would look like this
- # CMVC specific example
- #-----------------------------------------------------------
- #export CMVC_FAMILY=aix@auscmvc1.austin.ibm.com@2035
- #export CMVC_BECOME=gkeishin
- #export CMVC_AUTH_METHOD=PWD
- #-----------------------------------------------------------
-
- l_found_cmvc_conf = False
- for key in os.environ.keys():
- if "CMVC" in key:
- print "\t %s : %s" % (key,os.environ[key])
- l_found_cmvc_conf = True
-
- if l_found_cmvc_conf == False:
- print "\n [ ERROR SETTING ] : The CMVC specific ENV is not set"
- print " Please add the following CMVC details in ~/.bashrc"
- print " ------------------------------------------------------"
- print " export CMVC_FAMILY=aix@<yourcmvcdomian>@<portnumber>"
- print " export CMVC_BECOME=<your cmvc id>"
- print " export CMVC_AUTH_METHOD=PWD"
- print " ------------------------------------------------------"
- return errorcode.ERROR_SETTING
-
- return errorcode.SUCCESS_EXIT
-
- # Testing CMVC login session.. probe
- def CheckCmvcAccess():
- cmd='File -view src/sbei/sbfw/img/sbe_seeprom.bin -family aix -release fips910 >/dev/null 2>&1'
- rc = os.system(cmd)
- if rc:
- return errorcode.ERROR_CMVC_LOGIN
-
- #---------------------------------------------
- # Callling the Func defs in order
- #---------------------------------------------
-
- #------------------------------
- # 1) User input params/ Check ENV
- #------------------------------
- input_setting()
-
- print "\n [ Checking PPE ENV Pre-req ] "
- # Check if User has passed the path, else get it from ENV
- if path_name == "None":
- # Get the PPE path
- l_ppe_path = utilcode.utilppeSbENV("SBEROOT")
- if l_ppe_path == "None":
- print " PPE Repo ENV Setting Path : [ ERROR CODE: %s ] " % l_ppe_path
- exit_main(errorcode.ERROR_SETTING)
- else:
- print " PPE Repo path Setting : [ %s ]"% l_ppe_path
- path_name = l_ppe_path
-
- print "\n [ Checking CMVC user ENV Pre-req ] "
- rc_code = UserCmvcENV()
- if rc_code == errorcode.SUCCESS_EXIT :
- print " CMVC Setting : [ OK ] "
- else:
- print " CMVC Setting : [ ERORR CODE: %s ]"% rc_code
-
- #------------------------------
- # 2) Check the CMVC login access
- #------------------------------
- print "\n [ Checking CMVC user Login Session access ] "
- rc_cmvc = CheckCmvcAccess()
- if rc_cmvc == errorcode.ERROR_CMVC_LOGIN:
- print " CMVC Login Access : [ ERORR CODE: %s ]"% rc_cmvc
- print "\t No cmvc login was found in this session."
- print "\t Issue the cmvclog command to establish a login and re-run."
- print "\t Command : cmvclog -in <login user id>"
- exit_main(rc_cmvc)
- else:
- print " CMVC Session Login : [ OK ] "
-
- # Call API/Utility funcs def here
- #------------------------------
- # 3) Check track status
- #------------------------------
- print "\n [ Checking CMVC track state ] "
- l_trackFix = utilcode.utilCheckTrackState(g_cmvc_num,release_name)
- if l_trackFix == errorcode.SUCCESS_TRACK_STATE :
- print " Track in fix state. Suitable to continue."
- else :
- print " Track not in fix state. Aborting activity."
- return errorcode.ERROR_TRACK_STATE
-
- #------------------------------
- # 4) Checkout the code
- #------------------------------
- print "\n [ Creating Sandbox ]"
- origDir = os.getcwd()
- utilcode.utilCmvcChangeDir(g_cmvc_num)
- sbDir = os.getcwd()
-
- print "\n [ Checkout Files from CMVC ] "
- print " ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
- if file_name == "None":
- file_name = errorcode.CMVC_FILE_LIST
- for l_filename in file_name.split(","):
- rc_checkout = utilcode.utilCmvcCheckout(l_filename,release_name,g_cmvc_num)
- if rc_checkout == errorcode.ERROR_CMVC_CHECKOUT:
- print " [ CMVC File Checkout Failed ] [Error code : %s]\t:%s"%(rc_checkout,l_filename)
- # Undo checkout.. dont check errors just do it
- utilcode.utilRollBack("checkout",g_cmvc_num,release_name)
- # Return to initial directory of operation
- os.chdir(origDir)
- shutil.rmtree(sbDir)
- exit_main(rc_checkout)
- else:
- print " CMVC File Checkout [ OK ]"
- print " ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
-
- #------------------------------
- # 4) Copy the binaries and file
- #------------------------------
- # Find the files from the repo and copy to the Checkout dir
- print "\n [ Find files and Overide the checkout file ] "
- print " ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
- rc_copy = utilcode.utilCmvcRepoPath(path_name,g_cmvc_num,file_name)
- if rc_copy == errorcode.ERROR_CMVC_FILE_COPY:
- print " [ File copy Failed ] [ Error code : %s]"%rc_copy
- # Return to initial directory of operation
- os.chdir(origDir)
- shutil.rmtree(sbDir)
- exit_main(rc_copy)
- else:
- print " Files Copied Successfully : [ OK ] "
-
- print " ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
-
- #---------------------
- # 6) Checkin the files
- #---------------------
- print "\n [ Check-in Files from CMVC ] "
- print " ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
- if file_name == "None":
- file_name = errorcode.CMVC_FILE_LIST
- for files in file_name.split(","):
- rc_checkin = utilcode.utilCmvcCheckin(files,release_name,g_cmvc_num)
- if rc_checkin == errorcode.ERROR_CMVC_CHECKIN:
- print " [ CMVC File Checkin Failed ] [Error code : %s]\t:%s"%(rc_checkin,files)
- # Undo checkin.. dont check errors just do it
- utilcode.utilRollBack("checkin",g_cmvc_num,release_name)
- # Return to initial directory of operation
- os.chdir(origDir)
- shutil.rmtree(sbDir)
- exit_main(rc_checkin)
- else:
- print " CMVC File Checkin [ OK ]"
- print " ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
-
- #---------------------------------
- # 7) Fix record the defect/release
- #---------------------------------
- print "\n [ Fix the Record to complete in CMVC ] "
- utilcode.utilCmvcFixComplete(g_cmvc_num, release_name)
-
- #---------------------------------
- # 8) Trigger Jenkins CI Job
- #---------------------------------
- print "\n [ Trigering Jenkins job ] "
- rc_ci = utilcode.utilTriggerJenkins(g_cmvc_num, release_name, bvt)
- if rc_ci == errorcode.ERROR_CI_TRIGGER :
- print " [ CI Trigger Failed ] [Error code : %s]\t"%(rc_ci)
- # Return to initial directory of operation
- os.chdir(origDir)
- shutil.rmtree(sbDir)
- exit_main(rc_ci)
- else :
- print " CI Trigger [ OK ]"
-
- #-----------------------------------------
- # Return to initial directory of operation
- #-----------------------------------------
- os.chdir(origDir)
- shutil.rmtree(sbDir)
-
- # Clean exit
- print "\n [ Manually Integrate on CMVC post CI ] "
- exit_main(errorcode.SUCCESS_EXIT)
-
-
-if __name__=="__main__":
- main()
-
OpenPOWER on IntegriCloud