Compare commits
	
		
			33 Commits
		
	
	
		
			szeged_pre
			...
			szeged_pre
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 5bca1f498b | |||
| 2d1f11fd74 | |||
| 2d76b37e5d | |||
| b5b3aa7e34 | |||
| e3403b2ddd | |||
| 82d6dc643a | |||
| ef4d27eb91 | |||
| 215b155f2d | |||
| 901fa4c319 | |||
| e356456fb5 | |||
| bcc96a388f | |||
| 8f50f62a52 | |||
| 847c58afc8 | |||
| 2abdf963ac | |||
| 96d76b856a | |||
| 9eff70b780 | |||
| 2a8be547a8 | |||
| 17521771e3 | |||
| 515c77bed4 | |||
| f2617d8151 | |||
| 4f9c6155e1 | |||
| 33511a5bcb | |||
| bd0d07f56f | |||
| b8bc61daea | |||
| 27cd99f96a | |||
| 729778043a | |||
| 31e1aad762 | |||
| f8c091ad0c | |||
| e5e6c4c1cd | |||
| 95a9307631 | |||
| fc1c2221b1 | |||
| 9b1549306d | |||
| a8f691741b | 
							
								
								
									
										172
									
								
								git_helpers
									
									
									
									
									
								
							
							
						
						
									
										172
									
								
								git_helpers
									
									
									
									
									
								
							@@ -57,6 +57,18 @@ revert_to_commit_before_pull () {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
# revert_to_commit_before_pull
 | 
					# revert_to_commit_before_pull
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					git_branch () {
 | 
				
			||||||
 | 
					    # always relative to a git repository
 | 
				
			||||||
 | 
					    echo $(git branch -a | grep '*' | awk '{ print $2 }')
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					git_customer_branch () {
 | 
				
			||||||
 | 
					    if cd_customer_repository; then
 | 
				
			||||||
 | 
					        customer_branch=$(git_branch)
 | 
				
			||||||
 | 
					        cd_home;
 | 
				
			||||||
 | 
					        echo $customer_branch
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
# clone the customer repository in ./workspace.
 | 
					# clone the customer repository in ./workspace.
 | 
				
			||||||
# this is done only once.
 | 
					# this is done only once.
 | 
				
			||||||
# 
 | 
					# 
 | 
				
			||||||
@@ -70,99 +82,104 @@ revert_to_commit_before_pull () {
 | 
				
			|||||||
#
 | 
					#
 | 
				
			||||||
clone_customer_repository () {
 | 
					clone_customer_repository () {
 | 
				
			||||||
    local func="${FUNCNAME[0]}"
 | 
					    local func="${FUNCNAME[0]}"
 | 
				
			||||||
    if [ "$PWD" = "$WORKING_DIRECTORY" ]; then
 | 
					    if [ "$PWD" != "$WORKING_DIRECTORY" ]; then
 | 
				
			||||||
 | 
					        log_fatal "$func:${LINENO} PD != WD ($PWD != $WORKING_DIRECTORY)"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
    mkdir -p "./$WORKSPACE_DIR"
 | 
					    mkdir -p "./$WORKSPACE_DIR"
 | 
				
			||||||
    # check if the directory is empty. If so, clone the
 | 
					    # check if the directory is empty. If so, clone the
 | 
				
			||||||
    # customer repository
 | 
					    # customer repository
 | 
				
			||||||
    if ! find ./$WORKSPACE_DIR -mindepth 1 -maxdepth 1 | read; then
 | 
					    if ! find ./$WORKSPACE_DIR -mindepth 1 -maxdepth 1 | read; then
 | 
				
			||||||
            log_debug "$func:${LINENO} cloning ${1} ..."
 | 
					        log_info "$func:${LINENO} cloning ${1} into ${PWD}/${WORKSPACE_DIR}..."
 | 
				
			||||||
            if cd "./$WORKSPACE_DIR"
 | 
					        if ! cd "./$WORKSPACE_DIR"; then
 | 
				
			||||||
            then
 | 
					            update_psa_clone_error  # message to ISMAS
 | 
				
			||||||
                $(exec_git_command git clone "$1")
 | 
					            log_fatal "$func:${LINENO} can not change to $WORKSPACE_DIR"
 | 
				
			||||||
                if [ $? -eq 0 ]; then
 | 
					        fi
 | 
				
			||||||
 | 
					        if ! exec_git_command git clone "$1"; then
 | 
				
			||||||
 | 
					            update_psa_clone_error  # message to ISMAS
 | 
				
			||||||
 | 
					            log_fatal "$func:${LINENO} can not clone $1"
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					        ##########################  CLONING DONE   ############################
 | 
				
			||||||
        log_debug "$func:${LINENO} cloning ${1} done"
 | 
					        log_debug "$func:${LINENO} cloning ${1} done"
 | 
				
			||||||
                    GIT_CLONE_EXECUTED=1
 | 
					 | 
				
			||||||
                    rm -f $GIT_PULL_TMP
 | 
					 | 
				
			||||||
                    rm -f $OPKG_CMDS_TMP
 | 
					 | 
				
			||||||
        # after cloning, cd into repository, and re-initialize,
 | 
					        # after cloning, cd into repository, and re-initialize,
 | 
				
			||||||
        # setting the work-tree as "/". This has the effect that
 | 
					        # setting the work-tree as "/". This has the effect that
 | 
				
			||||||
        # a "git pull" will automatically fetched files in the
 | 
					        # a "git pull" will automatically fetched files in the
 | 
				
			||||||
        # corresponding sytem-folders.
 | 
					        # corresponding sytem-folders.
 | 
				
			||||||
                    if cd ${CUSTOMER_ID_BASE_DIR}; then
 | 
					        #######################  CD INTO REPOSITORY  ##########################
 | 
				
			||||||
                        # local res=$(exec_git_command git --git-dir=.git --work-tree=/ init)
 | 
					        if ! cd ${CUSTOMER_ID_BASE_DIR}; then
 | 
				
			||||||
                        exec_git_command git checkout "$LOCAL_BRANCH"
 | 
					            update_psa_clone_error  # message to ISMAS
 | 
				
			||||||
                        if [[ $? -eq 0 ]]; then
 | 
					            log_fatal "$func:${LINENO} can not change to $CUSTOMER_ID_BASE_DIR"
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					        log_debug "$func:${LINENO} cd into $CUSTOMER_ID_BASE_DIR"
 | 
				
			||||||
 | 
					        ##################### CONFIGURE HOOKS DIRECTORY  ######################
 | 
				
			||||||
 | 
					        if ! exec_git_command git config core.hooksPath .githooks; then
 | 
				
			||||||
 | 
					            update_psa_clone_error  # message to ISMAS
 | 
				
			||||||
 | 
					            log_fatal "$func:${LINENO} can not configure hooks directory"
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					        ###################### CHECKOUT LOCAL BRANCH  #########################
 | 
				
			||||||
 | 
					        if ! exec_git_command git checkout "$LOCAL_BRANCH"; then
 | 
				
			||||||
 | 
					            update_psa_clone_error  # message to ISMAS
 | 
				
			||||||
 | 
					            log_fatal "$func:${LINENO} can not checkout $LOCAL_BRANCH"
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
        log_debug "$func:${LINENO} checked out local branch $LOCAL_BRANCH"
 | 
					        log_debug "$func:${LINENO} checked out local branch $LOCAL_BRANCH"
 | 
				
			||||||
                            exec_git_command git config core.worktree "/"
 | 
					        ######################## CONFIGURE WORKTREE  ##########################
 | 
				
			||||||
                            if [[ $? -eq 0 ]]; then
 | 
					        if ! exec_git_command git config core.worktree "/"; then
 | 
				
			||||||
                            	log_debug "$func:${LINENO} configured worktree"
 | 
					            update_psa_clone_error  # message to ISMAS
 | 
				
			||||||
                                exec_git_command git fetch --all
 | 
					            log_fatal "$func:${LINENO} can not configure worktree '/'"
 | 
				
			||||||
                       	        if [[ $? -eq 0 ]]; then
 | 
					        fi
 | 
				
			||||||
 | 
					        log_debug "$func:${LINENO} configured worktree '/'"
 | 
				
			||||||
 | 
					        ########################### FETCH ALL #################################
 | 
				
			||||||
 | 
					        if ! exec_git_command git fetch --all; then
 | 
				
			||||||
 | 
					            update_psa_clone_error  # message to ISMAS
 | 
				
			||||||
 | 
					            log_fatal "$func:${LINENO} can not fetch --all for $LOCAL_BRANCH"
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
        log_debug "$func:${LINENO} fetch repository"
 | 
					        log_debug "$func:${LINENO} fetch repository"
 | 
				
			||||||
                                    exec_git_command git reset --hard "$LOCAL_BRANCH"
 | 
					        ########################## RE-INIT REPOSITORY  ########################
 | 
				
			||||||
                       	            if [[ $? -eq 0 ]]; then
 | 
					        if ! exec_git_command git reset --hard "$LOCAL_BRANCH"; then
 | 
				
			||||||
 | 
					            update_psa_clone_error  # message to ISMAS
 | 
				
			||||||
 | 
					            log_fatal "$func:${LINENO} re-init of $LOCAL_BRANCH failed"
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
        log_debug "$func:${LINENO} reset --hard $LOCAL_BRANCH"
 | 
					        log_debug "$func:${LINENO} reset --hard $LOCAL_BRANCH"
 | 
				
			||||||
                                        # re-initialized. copy post-merge (a hook called
 | 
					        INITIAL_CLONE=true
 | 
				
			||||||
                                        # when 'git pull' is executed and changed data
 | 
					 | 
				
			||||||
                                        # are received).
 | 
					 | 
				
			||||||
                            	        if cp ".githooks/post-merge" ".git/hooks"; then
 | 
					 | 
				
			||||||
                                            log_debug "$func:${LINENO} copied post-merge to .git/hooks"
 | 
					 | 
				
			||||||
                                            CLONE_CUSTOMER_REPOSITORY=true
 | 
					 | 
				
			||||||
        log_debug "$func:${LINENO} re-init of ${1} done"
 | 
					        log_debug "$func:${LINENO} re-init of ${1} done"
 | 
				
			||||||
                                            cd_home; return 0
 | 
					        update_psa_clone_customer_repository
 | 
				
			||||||
                                        fi
 | 
					 | 
				
			||||||
			            fi
 | 
					 | 
				
			||||||
		    	        fi
 | 
					 | 
				
			||||||
                            fi
 | 
					 | 
				
			||||||
		        fi
 | 
					 | 
				
			||||||
                    fi
 | 
					 | 
				
			||||||
                fi
 | 
					 | 
				
			||||||
                cd_home; return 1
 | 
					 | 
				
			||||||
            fi
 | 
					 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
        # the directory is not empty, so we assume the
 | 
					        # the directory is not empty, so we assume the
 | 
				
			||||||
        # customer-repository has been cloned already
 | 
					        # customer-repository has been cloned already
 | 
				
			||||||
        if ! [[ -d "./${WORKSPACE_DIR}/$CUSTOMER_ID" ]]; then
 | 
					        if ! [[ -d "./${WORKSPACE_DIR}/$CUSTOMER_ID" ]]; then
 | 
				
			||||||
            log_fatal "$func:${LINENO} $PWD $WORKSPACE_DIR/$CUSTOMER_ID"\
 | 
					            log_fatal "$func:${LINENO} $PWD $WORKSPACE_DIR/$CUSTOMER_ID"\
 | 
				
			||||||
                "wrong repository: $(ls -d './${WORKSPACE_DIR}/*')"
 | 
					                "wrong repository: $(ls -d './${WORKSPACE_DIR}/*')"
 | 
				
			||||||
            else
 | 
					        fi
 | 
				
			||||||
        local __m="./${WORKSPACE_DIR}/$CUSTOMER_ID exists"
 | 
					        local __m="./${WORKSPACE_DIR}/$CUSTOMER_ID exists"
 | 
				
			||||||
                log_debug "$func:${LINENO} $__m"
 | 
					        log_info "$func:${LINENO} $__m, no clone necessary"
 | 
				
			||||||
                return 0
 | 
					 | 
				
			||||||
            fi
 | 
					 | 
				
			||||||
        fi
 | 
					 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    update_psa_clone_error  # message to ISMAS
 | 
					    cd_home
 | 
				
			||||||
    return $? 
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
# clone_customer_repository ->
 | 
					# clone_customer_repository ->
 | 
				
			||||||
# https://git.mimbach49.de/GerhardHoffmann/customer_281.git
 | 
					# https://git.mimbach49.de/GerhardHoffmann/customer_281.git
 | 
				
			||||||
 | 
					
 | 
				
			||||||
cd_customer_repository () {
 | 
					cd_customer_repository () {
 | 
				
			||||||
    local func="${FUNCNAME[0]}"
 | 
					    local func="${FUNCNAME[0]}"
 | 
				
			||||||
    # has to be called in WORKING_DIRECTORY
 | 
					
 | 
				
			||||||
    cd "$WORKING_DIRECTORY"
 | 
					    if [ "$PWD" != "$WORKING_DIRECTORY" ]; then
 | 
				
			||||||
    if [ "$PWD" = "${WORKING_DIRECTORY}" ]; then
 | 
					        log_fatal "$func:${LINENO} PD != WD ($PWD != $WORKING_DIRECTORY)"
 | 
				
			||||||
        repository_dir="./$WORKSPACE_DIR/$CUSTOMER_ID"
 | 
					 | 
				
			||||||
        if ! [[ -d "$repository_dir" ]]; then
 | 
					 | 
				
			||||||
            log_crit "$func:${LINENO}: $repository_dir does not exist!"
 | 
					 | 
				
			||||||
            return 1
 | 
					 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if ! { cd $repository_dir; } ; then
 | 
					    if ! [[ -d "$CUSTOMER_ID_BASE_DIR" ]]; then
 | 
				
			||||||
            log_crit "$func:${LINENO}: cannot cd to $repository_dir!"
 | 
					        log_fatal "$func:${LINENO}: $CUSTOMER_ID_BASE_DIR does not exist!"
 | 
				
			||||||
            return 1
 | 
					 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        log_debug "$func:${LINENO}: cd to $repository_dir!"
 | 
					    if ! cd "$CUSTOMER_ID_BASE_DIR"; then
 | 
				
			||||||
 | 
					        log_fatal "$func:${LINENO}: cannot cd to $CUSTOMER_ID_BASE_DIR !!!"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    log_debug "$func:${LINENO}: cd to $CUSTOMER_ID_BASE_DIR"
 | 
				
			||||||
    return 0
 | 
					    return 0
 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    return 1
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
cd_home () {
 | 
					cd_home () {
 | 
				
			||||||
    if cd - &>/dev/null ; then
 | 
					    if cd "$WORKING_DIRECTORY" &>/dev/null ; then
 | 
				
			||||||
        return 0
 | 
					        return 0
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
    return 1
 | 
					    return 1
 | 
				
			||||||
@@ -175,26 +192,19 @@ pull_customer_repository () {
 | 
				
			|||||||
        return 1
 | 
					        return 1
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    #local commit_before_pull=$(latest_commit)
 | 
					    log_crit "$func:${LINENO}: executing 'git pull'..."
 | 
				
			||||||
    #if [ -z $commit_before_pull ]; then
 | 
					 | 
				
			||||||
    #    log_warn "$func:${LINENO}: commit_before_pull empty"
 | 
					 | 
				
			||||||
    #    cd_home ; return 1
 | 
					 | 
				
			||||||
    #fi
 | 
					 | 
				
			||||||
    #log_debug "$func:${LINENO}: commit_before_pull=$commit_before_pull"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    rm -f "$OPKG_CMDS_TMP"
 | 
					 | 
				
			||||||
    rm -f "$GIT_PULL_TMP"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    log_debug "$func:${LINENO}: executing 'git pull'..."
 | 
					 | 
				
			||||||
    exec_git_command 'git pull'
 | 
					    exec_git_command 'git pull'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # GIT_PULL_TMP created by hook post-merge. it contains the names of the
 | 
					    # GIT_UPDATE_LOG updated by hook post-merge. it contains the names of the
 | 
				
			||||||
    # changed files.
 | 
					    # changed files or opkg-commands to execute.
 | 
				
			||||||
    if [[ -f $GIT_PULL_TMP ]]; then
 | 
					    # If 'git pull' has fetched new data, then there are lines starting with
 | 
				
			||||||
 | 
					    # DOWNLOAD or EXECUTE.
 | 
				
			||||||
 | 
					    if grep -qE "^[[:space:]]*(DOWNLOAD|EXECUTE)" "$GIT_UPDATE_LOG"; then
 | 
				
			||||||
 | 
					        log_info "$func:${LINENO}: new data fetched from repository"
 | 
				
			||||||
        cd_home; return 0
 | 
					        cd_home; return 0
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
     
 | 
					     
 | 
				
			||||||
    log_warn "$func:${LINENO}: no data fetched form repository"
 | 
					    log_warn "$func:${LINENO}: no data fetched from repository"
 | 
				
			||||||
    cd_home; return 1
 | 
					    cd_home; return 1
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
# pull_customer_repository customer_281
 | 
					# pull_customer_repository customer_281
 | 
				
			||||||
@@ -224,4 +234,20 @@ changed_file_names () {
 | 
				
			|||||||
            "while in $PWD"
 | 
					            "while in $PWD"
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
# fi
 | 
					
 | 
				
			||||||
 | 
					get_blob () {   # get the blob of the file(name) passed as $1
 | 
				
			||||||
 | 
					                # note: this can be used for any file in the filesystem
 | 
				
			||||||
 | 
					    echo $(git hash-object $1)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					get_commit_for_blob () {
 | 
				
			||||||
 | 
					    blob=$(get_blob $1)
 | 
				
			||||||
 | 
					    if [ ! -z $blob ]; then
 | 
				
			||||||
 | 
					        # search for the blob in all commits for the file(name) $1
 | 
				
			||||||
 | 
					        echo $(echo $(git log --all --pretty=format:%H -- $1) |
 | 
				
			||||||
 | 
					               xargs -I{} sh -c "git ls-tree {} -- $1         |
 | 
				
			||||||
 | 
					               grep -q $blob && echo {}")
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										36
									
								
								log_helpers
									
									
									
									
									
								
							
							
						
						
									
										36
									
								
								log_helpers
									
									
									
									
									
								
							@@ -1,10 +1,6 @@
 | 
				
			|||||||
#!/bin/bash
 | 
					#!/bin/bash
 | 
				
			||||||
# set -x 
 | 
					# set -x 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
RED='\e[0;31m'
 | 
					 | 
				
			||||||
GREEN='\e[0;32m'
 | 
					 | 
				
			||||||
NC='\e[0m' # No Color
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [ "${log_helpers_sourced:-1}" = "1" ]; then    # include only once
 | 
					if [ "${log_helpers_sourced:-1}" = "1" ]; then    # include only once
 | 
				
			||||||
    readonly log_helpers_sourced=${BASH_SOURCE[0]}
 | 
					    readonly log_helpers_sourced=${BASH_SOURCE[0]}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -21,7 +17,8 @@ if [ "${log_helpers_sourced:-1}" = "1" ]; then    # include only once
 | 
				
			|||||||
    readonly FATAL=5
 | 
					    readonly FATAL=5
 | 
				
			||||||
    readonly MAX_DEBUG_LEVEL=6
 | 
					    readonly MAX_DEBUG_LEVEL=6
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    log_level=0
 | 
					    log_level=$INFO
 | 
				
			||||||
 | 
					    FATAL_FAILURE=false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    set_dbg_level () {
 | 
					    set_dbg_level () {
 | 
				
			||||||
        if [ $1 < $MAX_DEBUG_LEVEL ]; then
 | 
					        if [ $1 < $MAX_DEBUG_LEVEL ]; then
 | 
				
			||||||
@@ -33,50 +30,61 @@ if [ "${log_helpers_sourced:-1}" = "1" ]; then    # include only once
 | 
				
			|||||||
        return $log_level
 | 
					        return $log_level
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    log() {
 | 
					    log_to_file() {
 | 
				
			||||||
        if [[ $(("$(wc -l < $log_file)")) -ge $((100000)) ]]; then
 | 
					        if [[ $(("$(wc -l < $log_file)")) -ge $((100000)) ]]; then
 | 
				
			||||||
            # remove first line
 | 
					            # remove first line
 | 
				
			||||||
            sed -e 1d -i $log_file
 | 
					            sed -e 1d -i $log_file
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
        local msg="$(date +'%Y-%m-%d_%T'): $*"
 | 
					        local msg="$(date +'%Y-%m-%d_%T'): $*"
 | 
				
			||||||
        echo "log:$msg" >&2
 | 
					 | 
				
			||||||
        echo "$msg" >> $log_file
 | 
					        echo "$msg" >> $log_file
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    log() {
 | 
				
			||||||
 | 
					        local msg="$(date +'%Y-%m-%d_%T'): $*"
 | 
				
			||||||
 | 
					        echo "log:$msg" >&2
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    log_debug() {
 | 
					    log_debug() {
 | 
				
			||||||
        if [ $log_level = $DEBUG ]; then
 | 
					        log_to_file "DEBUG $*"
 | 
				
			||||||
 | 
					        if [ $log_level -le $DEBUG ]; then
 | 
				
			||||||
            log "DEBUG $*"
 | 
					            log "DEBUG $*"
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    log_info() {
 | 
					    log_info() {
 | 
				
			||||||
 | 
					        log_to_file "INFO $*"
 | 
				
			||||||
        if [ $log_level -le $INFO ]; then
 | 
					        if [ $log_level -le $INFO ]; then
 | 
				
			||||||
            log "${GREEN}INFO  $*"
 | 
					            log "INFO  $*"
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    log_warn() {
 | 
					    log_warn() {
 | 
				
			||||||
 | 
					        log_to_file "WARN $*"
 | 
				
			||||||
        if [ $log_level -le $WARN ]; then
 | 
					        if [ $log_level -le $WARN ]; then
 | 
				
			||||||
            log "${RED}WARN  $*"
 | 
					            log "WARN  $*"
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    log_crit() {
 | 
					    log_crit() {
 | 
				
			||||||
 | 
					        log_to_file "CRIT $*"
 | 
				
			||||||
        if [ $log_level -le $CRIT ]; then
 | 
					        if [ $log_level -le $CRIT ]; then
 | 
				
			||||||
            log "${RED}CRIT  $*"
 | 
					            log "CRIT  $*"
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    log_error() {
 | 
					    log_error() {
 | 
				
			||||||
 | 
					        log_to_file "ERROR $*"
 | 
				
			||||||
        if [ $log_level -le $ERROR ]; then
 | 
					        if [ $log_level -le $ERROR ]; then
 | 
				
			||||||
            log "${RED}ERROR  $*"
 | 
					            log "ERROR  $*"
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    log_fatal() {
 | 
					    log_fatal() {
 | 
				
			||||||
 | 
					        log_to_file "FATAL $*"
 | 
				
			||||||
        if [ $log_level -le $FATAL ]; then
 | 
					        if [ $log_level -le $FATAL ]; then
 | 
				
			||||||
            log "${RED}FATAL  $*"
 | 
					            log "FATAL  $*"
 | 
				
			||||||
            log "${RED}exiting ..."
 | 
					            log "exiting ..."
 | 
				
			||||||
 | 
					            FATAL_FAILURE=true
 | 
				
			||||||
            exit 1
 | 
					            exit 1
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
source ./log_helpers
 | 
					source ./log_helpers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [ ${news_to_ismas_sourced:-1} = "1" ]; then    # include only once
 | 
					if [ "${news_from_ismas_sourced:-1}" = "1" ]; then    # include only once
 | 
				
			||||||
 | 
					    readonly news_from_ismas_sourced=${BASH_SOURCE[0]}
 | 
				
			||||||
    readonly APISM_DIRECT_PORT=7778
 | 
					    readonly APISM_DIRECT_PORT=7778
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    updates_available () {
 | 
					    updates_available () {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
source ./log_helpers
 | 
					source ./log_helpers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [ ${news_to_ismas_sourced:-1} = "1" ]; then    # include only once
 | 
					if [ "${news_to_ismas_sourced:-1}" = "1" ]; then    # include only once
 | 
				
			||||||
 | 
					    readonly news_to_ismas_sourced=${BASH_SOURCE[0]}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    readonly APISM_DB_PORT=7777
 | 
					    readonly APISM_DB_PORT=7777
 | 
				
			||||||
    readonly UPDATE_ISMAS_PROGRESS="U0010"
 | 
					    readonly UPDATE_ISMAS_PROGRESS="U0010"
 | 
				
			||||||
@@ -70,6 +71,18 @@ if [ ${news_to_ismas_sourced:-1} = "1" ]; then    # include only once
 | 
				
			|||||||
    ########################################################################### 
 | 
					    ########################################################################### 
 | 
				
			||||||
    ########################################################################### 
 | 
					    ########################################################################### 
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					    update_psa_clone_customer_repository () {
 | 
				
			||||||
 | 
					        PERCENT=10
 | 
				
			||||||
 | 
					        local params=("U0010"                                   # event
 | 
				
			||||||
 | 
					                      $PERCENT                                  # percent
 | 
				
			||||||
 | 
					                      $RC_SUCCESS                               # resultcode
 | 
				
			||||||
 | 
					                      "clone_customer_repository"               # step
 | 
				
			||||||
 | 
					                      "git cloned $CUSTOMER_REPOSITORY_PATH"    # step_result
 | 
				
			||||||
 | 
					                      "")                                       # version
 | 
				
			||||||
 | 
					        news_to_ismas ${params[*]}
 | 
				
			||||||
 | 
					        return $?
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
    update_psa_pull_customer_repository () {
 | 
					    update_psa_pull_customer_repository () {
 | 
				
			||||||
        PERCENT=10
 | 
					        PERCENT=10
 | 
				
			||||||
        local params=("U0010"                                   # event
 | 
					        local params=("U0010"                                   # event
 | 
				
			||||||
@@ -382,7 +395,7 @@ if [ ${news_to_ismas_sourced:-1} = "1" ]; then    # include only once
 | 
				
			|||||||
                \"CREATED\":\"$(date +%Y-%m-%dT%T)\",
 | 
					                \"CREATED\":\"$(date +%Y-%m-%dT%T)\",
 | 
				
			||||||
                \"HASH\":\"$(compute_hash)\"
 | 
					                \"HASH\":\"$(compute_hash)\"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            \"TARIFF\": {
 | 
					            \"TARIFF\" : {
 | 
				
			||||||
                $(<$TC_PSA_TC_FILE) 
 | 
					                $(<$TC_PSA_TC_FILE) 
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            \"HARDWARE\" : {
 | 
					            \"HARDWARE\" : {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										41
									
								
								read_config
									
									
									
									
									
								
							
							
						
						
									
										41
									
								
								read_config
									
									
									
									
									
								
							@@ -22,22 +22,21 @@ if [ ${read_config_sourced:-1} = "1" ]; then    # include only once
 | 
				
			|||||||
    readonly UPDATEPSABEGIN=./.updatepsa/begin
 | 
					    readonly UPDATEPSABEGIN=./.updatepsa/begin
 | 
				
			||||||
    readonly UPDATEPSAEND=./.updatepsa/end
 | 
					    readonly UPDATEPSAEND=./.updatepsa/end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    readonly OPKG_CMDS_TMP=/tmp/opkg_commands
 | 
					    # name of file containing the logs following a 'git pull':
 | 
				
			||||||
    readonly GIT_PULL_TMP=/tmp/git_pull
 | 
					    # basically, there are two kinds of entries:
 | 
				
			||||||
 | 
					    readonly GIT_UPDATE_LOG=/opt/app/tools/atbupdate/update_log.csv
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    readonly PROGRAM=`basename $0`
 | 
					    readonly PROGRAM=`basename $0`
 | 
				
			||||||
    readonly WORKSPACE_DIR=workspace
 | 
					    readonly WORKSPACE_DIR=workspace
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    GIT_CLONE_EXECUTED=0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    EXITCODE=$RC_SUCCESS
 | 
					    EXITCODE=$RC_SUCCESS
 | 
				
			||||||
    CLONE_CUSTOMER_REPOSITORY=false
 | 
					    INITIAL_CLONE=false
 | 
				
			||||||
 | 
					    APISM_RUNNING=0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # read config file (JSON syntax)
 | 
					    # read config file (JSON syntax)
 | 
				
			||||||
    read_config() {
 | 
					    read_config() {
 | 
				
			||||||
        local func="${FUNCNAME[0]}"
 | 
					        local func="${FUNCNAME[0]}"
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        WORKING_DIRECTORY=${PWD}
 | 
					 | 
				
			||||||
        CONFIGFILENAME=${CONFIGFILENAME:-'update_psa.conf'}
 | 
					        CONFIGFILENAME=${CONFIGFILENAME:-'update_psa.conf'}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if ! [ -f "$CONFIGFILENAME" ]; then
 | 
					        if ! [ -f "$CONFIGFILENAME" ]; then
 | 
				
			||||||
@@ -49,13 +48,6 @@ if [ ${read_config_sourced:-1} = "1" ]; then    # include only once
 | 
				
			|||||||
        
 | 
					        
 | 
				
			||||||
        local readonly cf="$CONFIGFILENAME"
 | 
					        local readonly cf="$CONFIGFILENAME"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ### TODO: wieso wird hier in das verzeichnis gewechselt
 | 
					 | 
				
			||||||
        if cd $WORKING_DIRECTORY ; then
 | 
					 | 
				
			||||||
            log_debug "$func:${LINENO}: cd to $WORKING_DIRECTORY"
 | 
					 | 
				
			||||||
        else
 | 
					 | 
				
			||||||
            log_fatal "$func:${LINENO}: cannot cd to $WORKING_DIRECTORY"
 | 
					 | 
				
			||||||
        fi
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        readonly GIT_SSL_NO_VERIFY="$(cat "$cf" | jq -r .GIT_SSL_NO_VERIFY)"
 | 
					        readonly GIT_SSL_NO_VERIFY="$(cat "$cf" | jq -r .GIT_SSL_NO_VERIFY)"
 | 
				
			||||||
        assert_s GIT_SSL_NO_VERIFY
 | 
					        assert_s GIT_SSL_NO_VERIFY
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -96,10 +88,23 @@ if [ ${read_config_sourced:-1} = "1" ]; then    # include only once
 | 
				
			|||||||
        # Zone aus /etc/zone_nr auslesen
 | 
					        # Zone aus /etc/zone_nr auslesen
 | 
				
			||||||
        #
 | 
					        #
 | 
				
			||||||
        readonly ZONE_GROUP=1
 | 
					        readonly ZONE_GROUP=1
 | 
				
			||||||
        readonly ZONE=1
 | 
					        local __zone=1
 | 
				
			||||||
 | 
					        readonly ZONE_FILE="$(cat "$cf" | jq -r .zone)"
 | 
				
			||||||
 | 
					        if [ -f "$ZONE_FILE" ]; then
 | 
				
			||||||
 | 
					            __zone=$(cat "$ZONE_FILE")
 | 
				
			||||||
 | 
					            __zone=$((__zone))
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        readonly ZONE=$__zone
 | 
				
			||||||
        readonly LOCAL_BRANCH="$(cat "$cf" | jq -r .local_branches[$ZONE])"
 | 
					        readonly LOCAL_BRANCH="$(cat "$cf" | jq -r .local_branches[$ZONE])"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if [ -z "$WORKING_DIRECTORY" ]; then
 | 
				
			||||||
 | 
					            log_fatal "${func}:${LINENO}: empty WORKING_DIRECTORY"
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					        if ! cd "$WORKING_DIRECTORY"; then
 | 
				
			||||||
 | 
					            log_fatal "${func}:${LINENO}: cannot cd to $WORKING_DIRECTORY"
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					        log_debug "${func}:${LINENO}: cd to $WORKING_DIRECTORY"
 | 
				
			||||||
        return 0
 | 
					        return 0
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
###############################################################################
 | 
					###############################################################################
 | 
				
			||||||
@@ -128,6 +133,10 @@ if [ ${read_config_sourced:-1} = "1" ]; then    # include only once
 | 
				
			|||||||
    check_sanity_of_repository () {
 | 
					    check_sanity_of_repository () {
 | 
				
			||||||
        local func="${FUNCNAME[0]}"
 | 
					        local func="${FUNCNAME[0]}"
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					        if [ "$PWD" != "$WORKING_DIRECTORY" ]; then
 | 
				
			||||||
 | 
					            log_fatal "$func:${LINENO} PD != WD ($PWD != $WORKING_DIRECTORY)"
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
        assert_d CUSTOMER_ID_BASE_DIR
 | 
					        assert_d CUSTOMER_ID_BASE_DIR
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        CUSTOMER_LOCATION_DIR="$CUSTOMER_ID_BASE_DIR"
 | 
					        CUSTOMER_LOCATION_DIR="$CUSTOMER_ID_BASE_DIR"
 | 
				
			||||||
@@ -194,7 +203,7 @@ if [ ${read_config_sourced:-1} = "1" ]; then    # include only once
 | 
				
			|||||||
        readonly              SYSCONF_INI="sysconfig.ini"
 | 
					        readonly              SYSCONF_INI="sysconfig.ini"
 | 
				
			||||||
        readonly              SYSCTRL_INI="SystemControl.ini"
 | 
					        readonly              SYSCTRL_INI="SystemControl.ini"
 | 
				
			||||||
        readonly           TARIFF_CURRENT="tariff.current"
 | 
					        readonly           TARIFF_CURRENT="tariff.current"
 | 
				
			||||||
        readonly                       DC="dc2c.hex"
 | 
					        readonly                       DC="dc2c.bin"
 | 
				
			||||||
        readonly            TARIFF_SUMMER="summer_tariff.json"
 | 
					        readonly            TARIFF_SUMMER="summer_tariff.json"
 | 
				
			||||||
        readonly            TARIFF_WINTER="winter_tariff.json"
 | 
					        readonly            TARIFF_WINTER="winter_tariff.json"
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
@@ -213,7 +222,7 @@ if [ ${read_config_sourced:-1} = "1" ]; then    # include only once
 | 
				
			|||||||
        readonly SYSCTRL_ETC_SYS_INI_FILE="${ETC_SYS_DIR}/$SYSCTRL_INI"
 | 
					        readonly SYSCTRL_ETC_SYS_INI_FILE="${ETC_SYS_DIR}/$SYSCTRL_INI"
 | 
				
			||||||
        readonly SYSCTRL_ATB_SYS_INI_FILE="${ATB_SYS_DIR}/$SYSCTRL_INI"
 | 
					        readonly SYSCTRL_ATB_SYS_INI_FILE="${ATB_SYS_DIR}/$SYSCTRL_INI"
 | 
				
			||||||
        readonly SYSCTRL_SCF_SYS_INI_FILE="${SYSCONFIG_SYS_DIR}/$SYSCTRL_INI"
 | 
					        readonly SYSCTRL_SCF_SYS_INI_FILE="${SYSCONFIG_SYS_DIR}/$SYSCTRL_INI"
 | 
				
			||||||
        readonly                ZONE_FILE="$ETC_SYS_DIR/zone_nr"
 | 
					        # readonly                ZONE_FILE="$ETC_SYS_DIR/zone_nr"
 | 
				
			||||||
        readonly             CUST_ID_FILE="$ETC_SYS_DIR/cust_nr"
 | 
					        readonly             CUST_ID_FILE="$ETC_SYS_DIR/cust_nr"
 | 
				
			||||||
        readonly           TC_SYS_TC_FILE="${ATBAPP_SYS_DIR}/$TARIFF_CURRENT"
 | 
					        readonly           TC_SYS_TC_FILE="${ATBAPP_SYS_DIR}/$TARIFF_CURRENT"
 | 
				
			||||||
        readonly       OPKG_CMDS_SYS_FILE="${OPKG_SYS_DIR}/opkg_commands"
 | 
					        readonly       OPKG_CMDS_SYS_FILE="${OPKG_SYS_DIR}/opkg_commands"
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										35
									
								
								update_psa
									
									
									
									
									
								
							
							
						
						
									
										35
									
								
								update_psa
									
									
									
									
									
								
							@@ -5,6 +5,7 @@
 | 
				
			|||||||
#                                UPDATE PSA
 | 
					#                                UPDATE PSA
 | 
				
			||||||
# Usage:
 | 
					# Usage:
 | 
				
			||||||
#   update_psa [ --? ]
 | 
					#   update_psa [ --? ]
 | 
				
			||||||
 | 
					#              [ -m  ]
 | 
				
			||||||
#              [ --help ]
 | 
					#              [ --help ]
 | 
				
			||||||
#              [ --wdir "working_directory" ]
 | 
					#              [ --wdir "working_directory" ]
 | 
				
			||||||
#              [ --file "config_file" ]
 | 
					#              [ --file "config_file" ]
 | 
				
			||||||
@@ -23,9 +24,15 @@ if [ -z $IFS ]; then
 | 
				
			|||||||
    IFS=$'\n'
 | 
					    IFS=$'\n'
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					MAINTENANCE="NO"
 | 
				
			||||||
 | 
					WORKING_DIRECTORY=${PWD}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# parse commandline parameters
 | 
					# parse commandline parameters
 | 
				
			||||||
while test $# -gt 0; do
 | 
					while test $# -gt 0; do
 | 
				
			||||||
    case $1 in
 | 
					    case $1 in
 | 
				
			||||||
 | 
					        --maintenance | -m )
 | 
				
			||||||
 | 
					            MAINTENANCE="YES"
 | 
				
			||||||
 | 
					            ;;
 | 
				
			||||||
        --file | --fil | --fi | --f | -file | -fil | -fi | -f )
 | 
					        --file | --fil | --fi | --f | -file | -fil | -fi | -f )
 | 
				
			||||||
            shift
 | 
					            shift
 | 
				
			||||||
            CONFIGFILENAME="$1"
 | 
					            CONFIGFILENAME="$1"
 | 
				
			||||||
@@ -36,7 +43,11 @@ while test $# -gt 0; do
 | 
				
			|||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
        --wdir | --wdi | --wd | --w | -wdir | -wdi | -wd | -w )
 | 
					        --wdir | --wdi | --wd | --w | -wdir | -wdi | -wd | -w )
 | 
				
			||||||
            shift
 | 
					            shift
 | 
				
			||||||
 | 
					            if [ "$1" = "." ]; then
 | 
				
			||||||
 | 
					                WORKING_DIRECTORY="$PWD"
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
                WORKING_DIRECTORY="$1"
 | 
					                WORKING_DIRECTORY="$1"
 | 
				
			||||||
 | 
					            fi
 | 
				
			||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
        --help | -hel | --he | --h | '--?' | -help | -hel | -he | -h | '-?' )
 | 
					        --help | -hel | --he | --h | '--?' | -help | -hel | -he | -h | '-?' )
 | 
				
			||||||
            usage_and_exit 0
 | 
					            usage_and_exit 0
 | 
				
			||||||
@@ -47,6 +58,7 @@ while test $# -gt 0; do
 | 
				
			|||||||
            exit 0
 | 
					            exit 0
 | 
				
			||||||
            ;;
 | 
					            ;;
 | 
				
			||||||
        --dbg | --db | --d | -dbg | -db | -d )
 | 
					        --dbg | --db | --d | -dbg | -db | -d )
 | 
				
			||||||
 | 
					            shift
 | 
				
			||||||
            set_dbg_level $DEBUG
 | 
					            set_dbg_level $DEBUG
 | 
				
			||||||
            ;; 
 | 
					            ;; 
 | 
				
			||||||
        -*)
 | 
					        -*)
 | 
				
			||||||
@@ -59,28 +71,11 @@ while test $# -gt 0; do
 | 
				
			|||||||
    shift
 | 
					    shift
 | 
				
			||||||
done
 | 
					done
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
if cd "$WORKING_DIRECTORY"; then
 | 
					source ./update_psa_impl
 | 
				
			||||||
    source ./update_psa_impl
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if read_config
 | 
					if read_config; then
 | 
				
			||||||
    then
 | 
					 | 
				
			||||||
        if clone_customer_repository ${CUSTOMER_REPOSITORY_PATH}
 | 
					 | 
				
			||||||
	then 
 | 
					 | 
				
			||||||
            check_sanity_of_repository
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            #set_updates_available
 | 
					 | 
				
			||||||
            #while :
 | 
					 | 
				
			||||||
            #do
 | 
					 | 
				
			||||||
            #    sleep 5
 | 
					 | 
				
			||||||
            #    updates_available && break
 | 
					 | 
				
			||||||
            #done 
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            # update_psa "testing"
 | 
					 | 
				
			||||||
    update_psa
 | 
					    update_psa
 | 
				
			||||||
        fi
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    exit 0
 | 
					    exit 0
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					exit 1
 | 
				
			||||||
exit -1
 | 
					 | 
				
			||||||
###############################################################################
 | 
					###############################################################################
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,7 +13,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    ""                      :   "local branches",
 | 
					    ""                      :   "local branches",
 | 
				
			||||||
    "local_branches"        :   ["master",
 | 
					    "local_branches"        :   ["master",
 | 
				
			||||||
                                 "zg1/zone1", "zg1/zone2", "zg1/zone3"],
 | 
					                                 "zg1/zone1", "zg1/zone2", "zg1/zone3", "zg1/zone4"],
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ""                      :   "customer number of PSA",
 | 
					    ""                      :   "customer number of PSA",
 | 
				
			||||||
    "customer_id_"          :   "/etc/cust_nr",
 | 
					    "customer_id_"          :   "/etc/cust_nr",
 | 
				
			||||||
@@ -26,7 +26,7 @@
 | 
				
			|||||||
    ""                      :   "0-index used as size of following array",
 | 
					    ""                      :   "0-index used as size of following array",
 | 
				
			||||||
    ""                      :   ".zg[0]: #n of zones_groups",
 | 
					    ""                      :   ".zg[0]: #n of zones_groups",
 | 
				
			||||||
    ""                      :   ".zg[1].z[0]: #n of zones in zg[1]",
 | 
					    ""                      :   ".zg[1].z[0]: #n of zones in zg[1]",
 | 
				
			||||||
    "zg"                    :   [   1, { "z" : [ 3, 1, 2, 3] } ],
 | 
					    "zg"                    :   [   1, { "z" : [ 4, 1, 2, 4] } ],
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ""                      :   "url of customer repository",
 | 
					    ""                      :   "url of customer repository",
 | 
				
			||||||
    "cust_repository_path"  :   "https://git.mimbach49.de/GerhardHoffmann/customer_281.git"
 | 
					    "cust_repository_path"  :   "https://git.mimbach49.de/GerhardHoffmann/customer_281.git"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -373,8 +373,37 @@ cleanup_previous_version() {
 | 
				
			|||||||
    return 0
 | 
					    return 0
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
check_for_apism () {
 | 
					check_for_running_apism () {
 | 
				
			||||||
    nc localhost 7778
 | 
					    local func="${FUNCNAME[0]}"
 | 
				
			||||||
 | 
					    if nc localhost 7778
 | 
				
			||||||
 | 
					    then
 | 
				
			||||||
 | 
					        APISM_RUNNING=1
 | 
				
			||||||
 | 
					        log_info "$func:${LINENO}: APISM is running..."
 | 
				
			||||||
 | 
					        return 0
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    log_fatal "$func:${LINENO}: !!! APISM NOT RUNNING !!!"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					check_default_route () {
 | 
				
			||||||
 | 
					    local func="${FUNCNAME[0]}"
 | 
				
			||||||
 | 
					    if ip route | head -n 1 | grep -q '^default'
 | 
				
			||||||
 | 
					    then
 | 
				
			||||||
 | 
					        log_info "$func:${LINENO}: default route set"
 | 
				
			||||||
 | 
					        return 0
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    log_fatal "$func:${LINENO}: !!! NO DEFAULT ROUTE SET !!!"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					check_route_to_repository () {
 | 
				
			||||||
 | 
					    local func="${FUNCNAME[0]}"
 | 
				
			||||||
 | 
					    # ip_address=$1, e.g. git.mimbach.de (185.191.219.134)
 | 
				
			||||||
 | 
					    # 185.191.219.134 via 192.168.5.254 ...
 | 
				
			||||||
 | 
					    if test "$#" -eq 1 && ip route get "$1" | head -n 1 | grep -q "^$1"
 | 
				
			||||||
 | 
					    then
 | 
				
			||||||
 | 
					        log_info "$func:${LINENO}: route to repository available"
 | 
				
			||||||
 | 
					        return 0
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    log_fatal "$func:${LINENO}: !!! NO ROUTE TO REPO SET !!!"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
get_customer_id () {
 | 
					get_customer_id () {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										131
									
								
								update_psa_impl
									
									
									
									
									
								
							
							
						
						
									
										131
									
								
								update_psa_impl
									
									
									
									
									
								
							@@ -13,6 +13,8 @@ trap collect_current_configuration EXIT
 | 
				
			|||||||
collect_current_configuration () {
 | 
					collect_current_configuration () {
 | 
				
			||||||
    local func="${FUNCNAME[0]}"
 | 
					    local func="${FUNCNAME[0]}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $FATAL_FAILURE && return 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # TODO: eventuell muss die version neu berechnet werden
 | 
					    # TODO: eventuell muss die version neu berechnet werden
 | 
				
			||||||
    current_settings_to_ismas
 | 
					    current_settings_to_ismas
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -28,24 +30,43 @@ collect_current_configuration () {
 | 
				
			|||||||
    #done
 | 
					    #done
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
update_psa() { # calling with a parameter is used for testing
 | 
					update_psa() {
 | 
				
			||||||
 | 
					 | 
				
			||||||
    if [ $# -eq 0 ]; then
 | 
					 | 
				
			||||||
        if ! updates_available; then    # check for false alarm
 | 
					 | 
				
			||||||
            update_psa_false_alarm "update requested, but no WAIT state detected"
 | 
					 | 
				
			||||||
            exit $EXITCODE
 | 
					 | 
				
			||||||
        fi
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    update_psa_activated    # message to ISMAS
 | 
					    update_psa_activated    # message to ISMAS
 | 
				
			||||||
            
 | 
					 | 
				
			||||||
    local func="${FUNCNAME[0]}"
 | 
					    local func="${FUNCNAME[0]}"
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					    check_default_route
 | 
				
			||||||
 | 
					    check_route_to_repository "185.191.219.134" # git.mimbach.de
 | 
				
			||||||
 | 
					    # even for a git clone a running APISM is needed 
 | 
				
			||||||
 | 
					    check_for_running_apism
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # an initial clone of the customer-repository (e.g. customer_281) is 
 | 
				
			||||||
 | 
					    # always possible, even without a ISMAS-WAIT-button
 | 
				
			||||||
 | 
					    clone_customer_repository ${CUSTOMER_REPOSITORY_PATH}
 | 
				
			||||||
 | 
					    check_sanity_of_repository
 | 
				
			||||||
 | 
					    $INITIAL_CLONE && return 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if [ "$MAINTENANCE" = "NO" ]; then
 | 
				
			||||||
 | 
					        log_info "update_psa:${LINENO}: MAINTENANCE OFF. Checking for updates..."
 | 
				
			||||||
 | 
					        # someone must have activated the WAIT-button in ISMAS. 
 | 
				
			||||||
 | 
					        # Request the status of this button in updates_available().
 | 
				
			||||||
 | 
					        if ! updates_available; then 
 | 
				
			||||||
 | 
					            update_psa_false_alarm "update requested, but no WAIT state detected !!!"
 | 
				
			||||||
 | 
					            log_fatal "update_psa:${LINENO}: update requested, but no WAIT state detected !!!"
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        # simulate an activated WAIT-button
 | 
				
			||||||
 | 
					        set_updates_available
 | 
				
			||||||
 | 
					        while :
 | 
				
			||||||
 | 
					        do
 | 
				
			||||||
 | 
					            sleep 5
 | 
				
			||||||
 | 
					            updates_available && break
 | 
				
			||||||
 | 
					        done 
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    log_debug "$func:${LINENO}: fetch/merge updates..."
 | 
					    log_debug "$func:${LINENO}: fetch/merge updates..."
 | 
				
			||||||
   
 | 
					   
 | 
				
			||||||
    # Fetch new updates (using git). but only when repository has already been
 | 
					    # Fetch new updates (using git). but only when repository has already been
 | 
				
			||||||
    # cloned.
 | 
					    # cloned.
 | 
				
			||||||
    if [ $GIT_CLONE_EXECUTED -eq 0 ]; then
 | 
					 | 
				
			||||||
    if ! fetch_customer_updates; then
 | 
					    if ! fetch_customer_updates; then
 | 
				
			||||||
        log_error "$func:${LINENO}: fetch no data for $customer_id"\
 | 
					        log_error "$func:${LINENO}: fetch no data for $customer_id"\
 | 
				
			||||||
	    "-> no files to update -> no psa update"
 | 
						    "-> no files to update -> no psa update"
 | 
				
			||||||
@@ -53,95 +74,7 @@ update_psa() { # calling with a parameter is used for testing
 | 
				
			|||||||
	    "update request, but no change in $CUSTOMER_REPOSITORY_PATH"
 | 
						    "update request, but no change in $CUSTOMER_REPOSITORY_PATH"
 | 
				
			||||||
        # TODO
 | 
					        # TODO
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
    update_psa_pull_customer_repository # message to ISMAS
 | 
					    update_psa_pull_customer_repository # message to ISMAS
 | 
				
			||||||
 | 
					 | 
				
			||||||
    # no backup necessary as saved in git-repo
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    # local changed_files=$(changed_file_names)
 | 
					 | 
				
			||||||
   
 | 
					 | 
				
			||||||
    if [[ -f "$GIT_PULL_TMP" ]]; then 
 | 
					 | 
				
			||||||
        # TODO
 | 
					 | 
				
			||||||
        if ! check_hardware_compatibility "$files_to_copy" ; then
 | 
					 | 
				
			||||||
            local __r=$?
 | 
					 | 
				
			||||||
            log_error "$func:${LINENO}: json/ini-files not fit for PSA"
 | 
					 | 
				
			||||||
            revert_customer_repository
 | 
					 | 
				
			||||||
            exit $__r
 | 
					 | 
				
			||||||
        fi
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if [[ -f "$OPKG_CMDS_TMP" ]]; then
 | 
					 | 
				
			||||||
        local commands="$(cat ${OPKG_CMDS_TMP} | tr '\n' '; ')"
 | 
					 | 
				
			||||||
        log_info "$func:${LINENO}: executed opkg commands"
 | 
					 | 
				
			||||||
        update_psa_install_opkg_packages $UPDATE_ISMAS_PROGRESS \
 | 
					 | 
				
			||||||
            $RC_SUCCESS "$commands"
 | 
					 | 
				
			||||||
    else
 | 
					 | 
				
			||||||
        log_info "$func:${LINENO}: no opkg commands to execute"
 | 
					 | 
				
			||||||
        update_psa_install_opkg_packages $UPDATE_ISMAS_PROGRESS \
 | 
					 | 
				
			||||||
            $RC_SUCCESS "no opkg commands to execute"
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
    # check if the opkg-command-file has been changed during 'git pull'
 | 
					 | 
				
			||||||
    #if grep -qE ".*opkg_commands.*?" <<< $changed_files; then
 | 
					 | 
				
			||||||
    #    # read opkg_cmds: each line respresents an opkg-command
 | 
					 | 
				
			||||||
    #    readarray opkg_commands < <(cat $OPKG_CMDS_PSA_FILE)
 | 
					 | 
				
			||||||
    #    for opkg_c in "${opkg_commands[@]}"; do
 | 
					 | 
				
			||||||
    #        if grep -qE "^\s*[#]+.*$" <<< $opkg_c; then
 | 
					 | 
				
			||||||
    #            continue    # found comment line
 | 
					 | 
				
			||||||
    #        fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    #        # package manipulation commands without package:
 | 
					 | 
				
			||||||
    #        local cwp="update|upgrade|clean"
 | 
					 | 
				
			||||||
    #        # informational commands without package:
 | 
					 | 
				
			||||||
    #        cwp="${cwp}|list|list-installed|list-upgradable"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    #        if grep -qE "^.*\s+($cwp)\s+.*$" <<< $opkg_c; then
 | 
					 | 
				
			||||||
    #            local p=$(printf '%s' "$opkg_c" | awk '{ print $NF }')
 | 
					 | 
				
			||||||
    #            local opkg_output=()
 | 
					 | 
				
			||||||
    #            if ! exec_opkg_info "$p" opkg_output; then
 | 
					 | 
				
			||||||
    #                log_error "$func:${LINENO}: opkg info $opkg_c failed"
 | 
					 | 
				
			||||||
    #                revert_customer_repository ; exit 1
 | 
					 | 
				
			||||||
    #            fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    #            if ! check_md5_for_opkg_packages opkg_output; then
 | 
					 | 
				
			||||||
    #                log_error "$func:${LINENO}: "\
 | 
					 | 
				
			||||||
    #                    "wrong md5sum for opkg packages"
 | 
					 | 
				
			||||||
    #                revert_customer_repository ; exit 1
 | 
					 | 
				
			||||||
    #            fi
 | 
					 | 
				
			||||||
    #        fi
 | 
					 | 
				
			||||||
    #        
 | 
					 | 
				
			||||||
    #        # perform a dry-run and check if everything might work as expected. 
 | 
					 | 
				
			||||||
    #        if ! exec_opkg_noaction $opkg_c; then
 | 
					 | 
				
			||||||
    #                log_error "$func:${LINENO}: "\
 | 
					 | 
				
			||||||
    #                    "opkg --noaction $opkg_c failed"
 | 
					 | 
				
			||||||
    #        fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    #        # Actually execute the opkg command
 | 
					 | 
				
			||||||
    #        if ! exec_opkg $opkg_c; then
 | 
					 | 
				
			||||||
    #            log_error "$func:${LINENO}: exec_opkg $opkg_c failed"
 | 
					 | 
				
			||||||
    #            fallback_to_previous_version
 | 
					 | 
				
			||||||
    #            revert_customer_repository ; exit 1
 | 
					 | 
				
			||||||
    #        fi
 | 
					 | 
				
			||||||
    #    done
 | 
					 | 
				
			||||||
    #else
 | 
					 | 
				
			||||||
    #    log_info "$func:${LINENO}: no opkg commands to execute"
 | 
					 | 
				
			||||||
    #    update_psa_install_opkg_packages $UPDATE_ISMAS_PROGRESS \
 | 
					 | 
				
			||||||
    #            $RC_SUCCESS "no opkg commands to execute"
 | 
					 | 
				
			||||||
    #fi
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    # Cleanup.
 | 
					 | 
				
			||||||
    #if ! cleanup_previous_version; then
 | 
					 | 
				
			||||||
    #    log_error "$func:${LINENO}: cleanup_previous_version failed"
 | 
					 | 
				
			||||||
    #fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # compute version string for current (i.e. new) version
 | 
					 | 
				
			||||||
    compute_version
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    update_psa_cleanup $UPDATE_ISMAS_PROGRESS \
 | 
					 | 
				
			||||||
        $RC_SUCCESS "cleanup after psa update"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # TODO
 | 
					 | 
				
			||||||
    exit 0
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user