diff options
author | 2020-02-29 22:17:05 -0500 | |
---|---|---|
committer | 2020-03-03 13:20:06 -0500 | |
commit | 3a27813b663c34df52b2b1b50df7f0754dcfe134 (patch) | |
tree | 1f962778cd649286f70ae7ec8dbc5d868a668a7b /aai-resources/src/main/scripts/vmExportCloudRegions.sh | |
parent | 50315fe106b88e0cd556b8b6fab1dbdd4c9856a4 (diff) |
Update resources to use aai-common changes
Issue-ID: AAI-2750
Change-Id: I33ea2b3d7b4b706edc59c3d45c9957d05effd306
Signed-off-by: Kajur, Harish (vk250x) <vk250x@att.com>
Diffstat (limited to 'aai-resources/src/main/scripts/vmExportCloudRegions.sh')
-rw-r--r-- | aai-resources/src/main/scripts/vmExportCloudRegions.sh | 517 |
1 files changed, 517 insertions, 0 deletions
diff --git a/aai-resources/src/main/scripts/vmExportCloudRegions.sh b/aai-resources/src/main/scripts/vmExportCloudRegions.sh new file mode 100644 index 0000000..95ec969 --- /dev/null +++ b/aai-resources/src/main/scripts/vmExportCloudRegions.sh @@ -0,0 +1,517 @@ +#!/bin/ksh +# +### +# ============LICENSE_START======================================================= +# org.onap.aai +# ================================================================================ +# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. +# ================================================================================ +# 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. +# ============LICENSE_END========================================================= +### + +# +# vmExportCloudRegions.sh -- This tool is used to generate script payloads of +# vm and interfaces linked to a specific cloud-owner to be imported +# to the same cloud-region in a instance with its own data model and existing +# dependent objects. This script maps predefined objects and relationsships +# beteen the two instances. An archive is generated and manually +# copied to the target instance. A second script, vmValidateCloudRegions.sh, +# is run on the target instance that applies validations and replaces +# values needed in the generated scripss. +# generated files. The script takes 2 arguments + +# usage: $0 <cloud-owner> <target-basepath> <target-version> +# <cloud-owner> is the cloud-region-owner +# <target-version> is the replacement to be applied to aai/$version in +# resource links from the source instance. + +# scriptdata/addmanualdata/vm_export/payload is populated with the target +# files, that include json/txt files applied by addManualData script and tx +# files which represent validations to be applied before running addManualData. +# The naming convention of json/txt files ensures the ordering used to correctly +# apply dependent objects. The archive is generated in +# scriptdata/addmanualdata/vm_export/archive + +addTemplates() { + jq -n --arg related vlan-tag --arg rlabel org.onap.relationships.inventory.Uses \ +--arg rlink /aai/v1x/cloud-infrastructure/cloud-regions/cloud-region/change-this-to-cloud-owner/change-this-to-cloud-region-id/vlan-ranges/vlan-range/change-this-to-vlan-range-id/vlan-tags/vlan-tag/change-this-to-vlan-tag-id \ +'{"related-to": "\($related)", "relationship-label": "\($rlabel)", "related-link": "\($rlink)"}' > $TARGETDIR/vlan-tag-relationship-template.json + + jq -n --arg related lag-interface --arg rlabel org.onap.relationships.inventory.Uses \ +--arg rlink /aai/v1x/cloud-infrastructure/pservers/pserver/change-this-to-hostname/lag-interfaces/lag-interface/bond1 \ +'{"related-to": "\($related)", "relationship-label": "\($rlabel)", "related-link": "\($rlink)"}' > $TARGETDIR/lag-interface-relationship-template.json + + jq -n --arg dsl "cloud-region('cloud-owner','change-this-to-cloud-owner')('cloud-region-id','change-this-to-cloud-region-id') > vlan-range > [ vlan-tag*('vlan-id-inner', change-this-to-inner), vlan-tag*('vlan-id-outer', change-this-to-outer) ]" \ +'{"dsl": "\($dsl)"}' > $TARGETDIR/vlantagquery-template.json +} + +getFileSize() { + echo `wc -c < $1` +} + +getCloudRegions() { + res="cloud-infrastructure/cloud-regions?cloud-owner="$1"&format=pathed" + cloudres=`$PROJECT_HOME/scripts/getTool.sh "${res}" | sed '1d;$d'` + hasResults=`echo $cloudres | jq '.results'` + if [ "$hasResults" = null ]; then + hasResults="No-cloud-region" + fi + if [ "$hasResults" = "No-cloud-region" ]; then + echo "No-cloud-region" + else + echo $cloudres | jq '.results|.[]|."resource-link"' | sed -e 's/\"//g' | cut -d"/" -f4- + fi +} + +getTenants() { + res=""$1"/tenants?format=pathed" + cloudres=`$PROJECT_HOME/scripts/getTool.sh $res | sed '1d;$d'` + hasResults=`echo $cloudres | jq '.results'` + if [ "$hasResults" = null ]; then + hasResults="No-tenant" + fi + if [ "$hasResults" = "No-tenant" ]; then + echo "No-tenant" + else + echo $cloudres | jq '.results|.[]|."resource-link"' | sed -e 's/\"//g' | cut -d"/" -f4- + fi +} + +getVservers() { + res=""$1"/vservers?format=pathed" + cloudres=`$PROJECT_HOME/scripts/getTool.sh $res | sed '1d;$d'` + hasResults=`echo $cloudres | jq '.results'` + if [ "$hasResults" = null ]; then + hasResults="No-vserver" + fi + if [ "$hasResults" = "No-vserver" ]; then + echo "No-vserver" + else + echo $cloudres | jq '.results|.[]|."resource-link"' | sed -e 's/\"//g' | cut -d"/" -f4- + fi +} + +getLInterfaces() { + res=""$1"/l-interfaces?format=pathed" + cloudres=`$PROJECT_HOME/scripts/getTool.sh $res | sed '1d;$d'` + hasResults=`echo $cloudres | jq '.results'` + if [ "$hasResults" = null ]; then + hasResults="No-l-interface" + fi + if [ "$hasResults" = "No-l-interface" ]; then + echo "No-l-interface" + else + echo $cloudres | jq '.results|.[]|."resource-link"' | sed -e 's/\"//g' | cut -d"/" -f4- + fi +} + +getVlans() { + res=""$1"/vlans?format=pathed" + cloudres=`$PROJECT_HOME/scripts/getTool.sh $res | sed '1d;$d'` + hasResults=`echo $cloudres | jq '.results'` + if [ "$hasResults" = null ]; then + hasResults="No-vlan" + fi + if [ "$hasResults" = "No-vlan" ]; then + echo "No-vlan" + else + echo $cloudres | jq '.results|.[]|."resource-link"' | sed -e 's/\"//g' | cut -d"/" -f4- + fi +} + +getSriovVfs() { + res=""$1"/sriov-vfs?format=pathed" + cloudres=`$PROJECT_HOME/scripts/getTool.sh $res | sed '1d;$d'` + hasResults=`echo $cloudres | jq '.results'` + if [ "$hasResults" = null ]; then + hasResults="No-sriov-vfs" + fi + if [ "$hasResults" = "No-sriov-vfs" ]; then + echo "No-sriov-vfs" + else + echo $cloudres | jq '.results|.[]|."resource-link"' | sed -e 's/\"//g' | cut -d"/" -f4- + fi +} + +getTenant() { + res=""$1"?depth=0" + cloudres=`$PROJECT_HOME/scripts/getTool.sh $res | sed '1d;$d'` + filepath=$TARGETDIR/$regioncnt-$tenantcnt-tenant + echo "/"$1 > ${filepath}.txt + echo $cloudres | jq 'del(."resource-version")' > ${filepath}.json + echo $filepath +} + +getVserver() { + res=""$1"?depth=0" + cloudres=`$PROJECT_HOME/scripts/getTool.sh $res | sed '1d;$d'` + filepath=$TARGETDIR/$regioncnt-$tenantcnt-$vservercnt-1-vserver + echo "/"$1 > ${filepath}.txt + echo $cloudres | jq 'del(."resource-version")|del(."relationship-list")' > ${filepath}.json + validatepath=$TARGETDIR/$regioncnt-$tenantcnt-$vservercnt-vserver-validate-notexists + echo "/"$1 > ${validatepath}.tx + echo $filepath +} + +getVfModule() { + res=""$1"?depth=0" + cloudres=`$PROJECT_HOME/scripts/getTool.sh $res | sed '1d;$d'` + heatStackId=`echo $cloudres | jq '."heat-stack-id"' | sed 's/\"//g'` + if [ "$heatStackId" = "null" ] + then + echo $heatStackId + else + heatStackIdUri=`echo $heatStackId | jq -sRr @uri` + uri=`echo ${heatStackIdUri%???}` + filepath=$TARGETDIR/$regioncnt-$tenantcnt-$vservercnt-1-instance-group-$vfmodulecnt + echo "/network/instance-groups/instance-group/$uri" > ${filepath}.txt + # no need to validate, since instance-group is created if not present + #validatepath=$TARGETDIR/$regioncnt-$tenantcnt-$vservercnt-vserver-validate-vfmodule-$vfmodulecnt.tx + echo $cloudres | jq '{"heat-stack-id": ."heat-stack-id", "vf-module-name": ."vf-module-name"} | .["id"] = ."heat-stack-id" | .["instance-group-name"] = ."vf-module-name" | del(."heat-stack-id", ."vf-module-name") | .+ {"instance-group-type": "HEAT-STACK"}' > ${filepath}.json + echo $uri + fi +} + +getVserverRelatedTo() { + res=""$1"?depth=0" + cloudres=`$PROJECT_HOME/scripts/getTool.sh $res | sed '1d;$d'` + hasResults=`echo $cloudres | jq '."relationship-list"'` + if [ "$hasResults" = null ]; then + hasResults="No-related-vf-module-or-pserver" + fi + if [ "$hasResults" = "No-related-vf-module-or-pserver" ]; then + echo "No-related-vf-module-or-pserver" + else + validatepath=$TARGETDIR/$regioncnt-$tenantcnt-$vservercnt-vserver-validate.tx + echo $cloudres | jq '[ ."relationship-list".relationship[] | select(."related-to" | contains("pserver")) ]' > ${validatepath} + sz=`getFileSize $validatepath` + pservercnt=0 + if [ $sz = "3" ]; then + rm ${validatepath} + else + PSERVERS=`cat ${validatepath} | jq '.[]|."related-link"'|sed -e 's/\"//g' | cut -d"/" -f4-` + rm ${validatepath} + for pserver in ${PSERVERS} + do + validatepath=$TARGETDIR/$regioncnt-$tenantcnt-$vservercnt-vserver-validate-pserver-$pservercnt-exists.tx + echo $pserver > $validatepath + filepath=$TARGETDIR/$regioncnt-$tenantcnt-$vservercnt-0-vserver-related-to-pserver-$pservercnt + #echo $cloudres | jq '."relationship-list".relationship[] | select(."related-to" | contains("pserver"))' > ${filepath}.json + echo $cloudres | jq '."relationship-list".relationship[] | select(."related-to" | contains("pserver"))' | jq 'del(."relationship-data")' | jq 'del(."related-to-property")' > ${filepath}.json + echo "/"$1/relationship-list/relationship > ${filepath}.txt + pservercnt=$(expr "$pservercnt" + 1) + done + fi + validatepath=$TARGETDIR/$regioncnt-$tenantcnt-$vservercnt-vserver-validate.tx + echo $cloudres | jq '[ ."relationship-list".relationship[] | select(."related-to" | contains("vf-module")) ]' > ${validatepath} + sz=`getFileSize ${validatepath}` + if [ $sz = "3" ]; then + rm ${validatepath} + else + VFMODULES=`cat ${validatepath} | jq '.[]|."related-link"'|sed -e 's/\"//g' | cut -d"/" -f4-` + vfmodulecnt=0 + rm ${validatepath} + for vfmodule in ${VFMODULES} + do + heatId=`getVfModule $vfmodule` + # add instance-group and keep pserver relationships + if [ `expr $pservercnt` -ne 0 ]; then + filepath=$TARGETDIR/$regioncnt-$tenantcnt-$vservercnt-0-vserver-related-to-instance-group + echo $cloudres | jq '."relationship-list".relationship |= .+ [{ "related-to": "instance-group", "relationship-label": "org.onap.relationships.inventory.MemberOf", "related-link": "/aai/v1x/network/instance-groups/instance-group/change-this-instance-group-id" }]' | jq '."relationship-list".relationship[] | select(."related-to" | contains("instance-group"))' | sed "s#change-this-instance-group-id#$heatId#" > ${filepath}.json +echo $cloudres | jq '."relationship-list".relationship |= .+ [{ "related-to": "instance-group", "relationship-label": "org.onap.relationships.inventory.MemberOf", "related-link": "/aai/v1x/network/instance-groups/instance-group/change-this-instance-group-id" }]' | jq '."relationship-list".relationship[] | select(."related-to" | contains("instance-group"))' + echo "/"$1/relationship-list/relationship > ${filepath}.txt + vfmodulecnt=$(expr "$vfmodulecnt" + 1) + fi + done + fi + echo $filepath + fi +} + +getLInterface() { + res=""$1"?depth=0" + cloudres=`$PROJECT_HOME/scripts/getTool.sh $res | sed '1d;$d'` + filepath=$TARGETDIR/$regioncnt-$tenantcnt-$vservercnt-$linterfacecnt-1-l-interface + echo "/"$1 > ${filepath}.txt + echo $cloudres | jq 'del(."resource-version")|del(."relationship-list")' > ${filepath}.json + echo "/"$1 > ${filepath}.txt + echo $cloudres | jq 'del(."resource-version")|del(."relationship-list")' > ${filepath}.json + echo $filepath +} + +getVlan() { + res=""$1"?depth=0" + cloudres=`$PROJECT_HOME/scripts/getTool.sh $res | sed '1d;$d'` + filepath=$TARGETDIR/$regioncnt-$tenantcnt-$vservercnt-$linterfacecnt-0-$vlancnt-vlan-validate-vlantag.tx + echo $cloudres | jq 'del(."resource-version")|del(."relationship-list")' > ${filepath} + relpath=$TARGETDIR/$regioncnt-$tenantcnt-$vservercnt-$linterfacecnt-0-$vlancnt-vlantag-related-to + echo "$2/relationship-list/relationship" > ${relpath}.txt + # payload + cloudreg=`cat $TARGETDIR/$regioncnt-cloud-region.validate.exists.tx` + owner=`echo $cloudreg | cut -f 5 -d "/"` + cid=`echo $cloudreg | cut -f 6 -d "/"` + cat $TEMPLATEDIR/vlan-tag-relationship-template.json | sed -e "s/change-this-path-element/$targetVersion/" -e "s/change-this-to-cloud-owner/$owner/" -e "s/change-this-to-cloud-region-id/$cid/" > ${relpath}.json + echo $filepath +} + +getSriovVf() { + res=""$1"?depth=0" + cloudres=`$PROJECT_HOME/scripts/getTool.sh $res | sed '1d;$d'` + filepath=$TARGETDIR/$regioncnt-$tenantcnt-$vservercnt-$linterfacecnt-$sriovvfcnt-1-sriov-vf + echo "/"$1 > ${filepath}.txt + echo $cloudres | jq 'del(."resource-version")|del(."relationship-list")' > ${filepath}.json + echo $filepath +} + +getLagInterfaceRelatedTo() { + filepath=$TARGETDIR/$regioncnt-$tenantcnt-$vservercnt-$linterfacecnt-0-laginterface-related-to + pserverpath=$TARGETDIR/$regioncnt-$tenantcnt-$vservercnt-vserver-validate-pserver-0-exists.tx + if [ -s $pserverpath ]; + then + server=`cat $pserverpath` + echo "$1/relationship-list/relationship" > ${filepath}.txt + hostname=`echo $server | cut -f4 -d"/"` + cat $TEMPLATEDIR/lag-interface-relationship-template.json | sed -e "s/change-this-path-element/$targetVersion/" -e "s/change-this-to-hostname/$hostname/" > ${filepath}.json + validatepath=$TARGETDIR/$regioncnt-$tenantcnt-$vservercnt-$linterfacecnt-laginterface-validate-exists + echo "/cloud-infrastructure/pservers/pserver/$hostname/lag-interfaces/lag-interface/bond1" > ${validatepath}.tx + fi +} + +getSriovVfRelatedTo() { + res=""$1"?depth=0" + cloudres=`$PROJECT_HOME/scripts/getTool.sh $res | sed '1d;$d'` + hasResults=`echo $cloudres | jq '."relationship-list"'` + if [ "$hasResults" = null ]; then + hasResults="No-related-to-sriov-pf" + fi + if [ "$hasResults" = "No-related-to-sriov-pf" ]; then + echo "No-related-to-sriov-pf" + else + validatepath=$TARGETDIR/$regioncnt-$tenantcnt-$vservercnt-$linterfacecnt-$sriovvfcnt-sriovvf-validate-sriov-pf.tx + #echo "getSrioVfRelatedTo:" $validatepath $res >> /tmp/test.out + #echo "getSrioVfRelatedTo:" $validatepath $cloudres >> /tmp/test.out + echo $cloudres | jq '[ ."relationship-list".relationship[] | select(."related-to" | contains("sriov-pf")) ]' > ${validatepath} + sz=`getFileSize ${validatepath}` + sriovpfcnt=0 + if [ $sz = "3" ]; then + rm ${validatepath} + else + SRIOVPFS=`cat ${validatepath} | jq '.[]|."related-link"'|sed -e 's/\"//g' | cut -d"/" -f4-` + rm ${validatepath} + for sriovpf in ${SRIOVPFS} + do + validatepath=$TARGETDIR/$regioncnt-$tenantcnt-$vservercnt-$linterfacecnt-$sriovvfcnt-sriovvf-validate-sriov-pf-$sriovpfcnt.tx + echo $sriovpf > $validatepath + #echo "getSrioVfRelatedTo:" $validatepath $sriovpf >> /tmp/test.out + filepath=$TARGETDIR/$regioncnt-$tenantcnt-$vservercnt-$linterfacecnt-$sriovvfcnt-0-sriovvf-related-to-sriov-pf-$sriovpfcnt + echo $cloudres | jq '."relationship-list".relationship[] | select(."related-to" | contains("sriov-pf"))' | jq 'del(."relationship-label")' | jq 'del(."relationship-data")' > ${filepath}.json + echo "/"$1/relationship-list/relationship > ${filepath}.txt + #echo "getSrioVfRelatedTo:" $filepath $cloudres >> /tmp/test.out + sriovpfcnt=$(expr "$sriovpfcnt" + 1) + done + fi + echo $filepath + fi +} + +addValidateCloudRegion() { + filepath=$TARGETDIR/$regioncnt-cloud-region + echo "/"$1 > ${filepath}.validate.exists.tx +} + +addValidateVserver() { + filepath=$TARGETDIR/$regioncnt-cloud-region + echo "/"$1 > ${filepath}.validate.exists.tx +} +COMMON_ENV_PATH=$( cd "$(dirname "$0")" ; pwd -P ) +. ${COMMON_ENV_PATH}/common_functions.sh + +. /etc/profile.d/aai.sh + +PROJECT_HOME=/opt/app/aai-resources +PROGNAME=$(basename $0) + +TS=$(date "+%Y_%m_%d_%H_%M_%S") + +CHECK_USER="aaiadmin" +userid=$( id | cut -f2 -d"(" | cut -f1 -d")" ) +if [ "${userid}" != $CHECK_USER ]; then + echo "You must be $CHECK_USER to run $0. The id used $userid." + exit 1 +fi +TARGETDIR=$PROJECT_HOME/resources/etc/scriptdata/addmanualdata/vm_export/payload +TEMPLATEDIR=$TARGETDIR +mkdir -p $TARGETDIR +rm -f $TARGETDIR/* + +if [ "$#" -ne 3 ]; then + echo "usage: $0 <cloud-owner> <target-basepath> <target-verson>" + exit 1 +fi + +addTemplates + +targetVersion="$2\/$3" + +echo "${TS}, getting vms and interfaces for cloud-region-owner: $1 with targetVersion $2/$3" +regioncnt=0 +tenantcnt=0 +vservercnt=0 +linterfacecnt=0 +vlancnt=0 +sriovvfcnt=0 +totaltenants=0 +totalvms=0 +totalinterfaces=0 +totalvlans=0 +totalsriovvfs=0 + +missingvms=0 +missinginterfaces=0 +missingvlans=0 +missingsriovvfs=0 + + + +CLOUDS=`getCloudRegions $1` +for cloud in ${CLOUDS} +do + if [ $cloud = "No-cloud-region" ]; then + echo "No cloud-region found for owner " $1 + else + addValidateCloudRegion $cloud + TENANTS=`getTenants $cloud` + for tenant in ${TENANTS} + do + if [ $tenant = "No-tenant" ]; then + echo "No tenant found for cloud-region " $cloud + else + #echo "Process tenant " $tenant + add=`getTenant $tenant` + #echo "adding tenant: " $add + VSERVERS=`getVservers $tenant` + for vserver in ${VSERVERS} + do + if [ $vserver = "No-vserver" ]; then + #echo "No vserver found for tenant " $tenant + missingvms=$(expr "$missingvms" + 1) + else + #echo "Process vserver " $vserver + add=`getVserver $vserver` + #echo "adding vserver: " $add + add=`getVserverRelatedTo $vserver` + #echo "adding vserver: related-to " $add + LINTERFACES=`getLInterfaces $vserver` + linterfacecnt=0 + for linterface in ${LINTERFACES} + do + if [ $linterface = "No-l-interface" ]; then + #echo "No l-interface found for vserver " $vserver + missinginterfaces=$(expr "$missinginterfaces" + 1) + else + #echo "Process l-interface " $linterface + add=`getLInterface $linterface` + #echo "adding l-interface: " $add + VLANS=`getVlans $linterface` + for vlan in ${VLANS} + do + if [ $vlan = "No-vlan" ]; then + #echo "No vlan found for l-interface " $linterface + missingvlans=$(expr "$missingvlans" + 1) + else + #echo "Process vlan " $vlan + add=`getVlan $vlan $linterface` + #echo "adding vlan: " $add + vlancnt=$(expr "$vlancnt" + 1) + totalvlans=$(expr "$totalvlans" + 1) + fi + done + SRIOVVFS=`getSriovVfs $linterface` + for sriovvf in ${SRIOVVFS} + do + if [ $sriovvf = "No-sriov-vfs" ]; then + #echo "No sriov-vf found for l-interface " $linterface + # need to add relationship for pserver/lag-interface bond1 + getLagInterfaceRelatedTo $linterface + missingsriovvfs=$(expr "$missingsriovvfs" + 1) + else + #echo "Processing l-interface" $linterface >> /tmp/test.out + #echo "Processing with sriov-vf" $sriovvf >> /tmp/test.out + add=`getSriovVf $sriovvf` + #echo "adding sriovvf: " $add + add=`getSriovVfRelatedTo $sriovvf` + #echo "adding sriovvf: related-to " $add + sriovvfcnt=$(expr "$sriovvfcnt" + 1) + totalsriovvfs=$(expr "$totalsriovvfs" + 1) + fi + done + vlancnt=0 + sriovvfcnt=0 + linterfacecnt=$(expr "$linterfacecnt" + 1) + totalinterfaces=$(expr "$totalinterfaces" + 1) + fi + done + linterfacecnt=0 + # check that vserver related-to is present + if [ -e "$TARGETDIR/$regioncnt-$tenantcnt-$vservercnt-0-vserver-related-to-instance-group.json" ]; then + vservercnt=$(expr "$vservercnt" + 1) + totalvms=$(expr "$totalvms" + 1) + else + rm $TARGETDIR/$regioncnt-$tenantcnt-$vservercnt* + echo "no related vf-module, skip export for $vserver" + fi + fi + done + vservercnt=0 + tenantcnt=$(expr "$tenantcnt" + 1) + totaltenants=$(expr "$totaltenants" + 1) + fi + done + tenantcnt=0 + regioncnt=$(expr "$regioncnt" + 1) + fi +done +sed -i "s/aai\/v1./$targetVersion/g" $TARGETDIR/*related-to*.json +echo "Total cloud-regions to process " $regioncnt +echo "Total tenants to add " $totaltenants +echo "Total vms to add " $totalvms +#echo "Total interfaces to add " $totalinterfaces +#echo "Total vlans to add " $totalvlans +#echo "Total sriovvfs to add " $totalsriovvfs + +TS=$(date "+%Y_%m_%d_%H_%M_%S") +ARCHIVEDIR=$PROJECT_HOME/resources/etc/scriptdata/addmanualdata/vm_export/archive +if [ ! -d ${ARCHIVEDIR} ] +then + mkdir -p ${ARCHIVEDIR} + chown aaiadmin:aaiadmin ${ARCHIVEDIR} + chmod u+w ${ARCHIVEDIR} +fi +cd ${TARGETDIR} +tar c * -f ${ARCHIVEDIR}/vmExportArchive_${TS}.tar --exclude=payload +if [ $? -ne 0 ] +then + echo " Unable to tar ${TARGETDIR}" + exit 1 +fi +cd ${ARCHIVEDIR} +gzip ${ARCHIVEDIR}/vmExportArchive_${TS}.tar + +if [ $? -ne 0 ] +then + echo " Unable to gzip ${ARCHIVE_DIRECTORY}/vmExportArchive_${TS}.tar" + exit 1 +fi +echo "Completed successfully: ${ARCHIVE_DIRECTORY}/vmExportArchive_${TS}.tar" +exit 0
\ No newline at end of file |