Initial commit for OpenECOMP SDN-C OA&M
[sdnc/oam.git] / dgbuilder / tools / getRpcsClassFromYangs.sh
1 toolsDir=$PROJECT_HOME/tools
2 . ${toolsDir}/setClasspath
3 if [ "$#" != "2" ]
4 then
5         echo "Usage $0 yang_file generated_jar_file"
6         echo "example $0 /home/users/sdnc/src/appName/model/src/main/yang/app.yang  /home/users/sdnc/src/appName/model/target/appName.model-2.0.0.jar"
7         exit
8 fi
9 yangFile="$1"
10 jarFile="$2"
11 module=$(cat $yangFile|egrep "module .*{"|awk '{print $2}'|sed -e 's/{//g')
12 #echo " \"$module\" : ["
13 rpcs=$(grep rpc $yangFile|grep -v leaf|sed -e 's/^\s\+rpc//g'|awk '{print $1}')
14 for i in `find ${toolsDir}/yangToolsJars -name "*.jar" -print`
15 do
16 #echo $i
17 export CLASSPATH=$CLASSPATH:$i
18 done
19 export CLASSPATH=$2:$CLASSPATH:.:${toolsDir}/slf4j-api-1.7.2.jar:${toolsDir}/guava-14.0.1.jar:${toolsDir}/printYangToProp.jar
20 allProps=""
21 for rpc in $rpcs
22 do
23 rpcVal=$(echo $rpc|sed -e "s/\b\(.\)/\u\1/g"|sed s/\-//g)
24 #echo $rpcVal
25 className=$(jar -tvf ${jarFile}|grep "org/opendaylight/yang/gen/"|grep -w "${rpcVal}Input.class"|grep -v grep|awk '{print $NF}'|sed -e 's/\//./g'|sed -e 's/.class$//g')
26 #echo $className
27 inputProps=""
28 if [ "$className" != "" ]
29 then
30         #java -cp $CLASSPATH PrintYangToProp $className 2>/dev/null|grep '*' |cut -d'*' -f2|sed -e "s/^[ \t]*//g"|sed -e "s/^/\t\t\"/g"|sed -e "s/$/\",/g"
31         inputProps=$(java -cp $CLASSPATH PrintYangToProp $className 2>${toolsDir}/tmpws/logs/err.log)
32 fi
33 className=$(jar -tvf ${jarFile}|grep "org/opendaylight/yang/gen/"|grep -w "${rpcVal}Output"|grep -v grep|awk '{print $NF}'|sed -e 's/\//./g'|sed -e 's/.class$//g')
34 #echo $inputProps
35 #echo $className
36 outputProps=""
37 if [ "$className" != "" ]
38 then
39         #java -cp $CLASSPATH PrintYangToProp $className 2>/dev/null|grep '*' |cut -d'*' -f2|sed -e "s/^[ \t]*//g"|sed -e "s/^/\t\t\"/g"|sed -e "s/$/\",/g"
40         outputProps=$(java -cp $CLASSPATH PrintYangToProp $className 2>${toolsDir}/tmpws/logs/err.log)
41 fi
42 if [ -z "$allProps" ]
43 then
44         allProps=$(echo ${inputProps}${outputProps}|sed -e s/,$//g)
45 else
46         allProps=$(echo ${allProps},${inputProps}${outputProps}|sed -e s/,$//g)
47 fi
48 done
49 #echo $allProps
50 #OIFS=$IFS
51 #IFS=','
52 #arr2=$allProps
53 #for x in $arr2
54 #do
55 #    echo "$x"
56 #done
57 #IFS=$OIFS
58 #echo " ]"
59 echo "module.exports = {"
60 echo "\"moduleName\" : \"${module}\","
61 echo "'${module}_VALUES' : "
62 echo "[ $allProps ]"|python -m json.tool
63 echo ","
64 echo "'${module}_RPCS' : ["
65
66 cnt=0
67 #numOfRpcs=${#rpcs[@]}
68 numOfRpcs=0;
69 for rpc in $rpcs
70 do
71         numOfRpcs=$((numOfRpcs+1))
72 done
73
74 for rpc in $rpcs
75 do
76         cnt=$((cnt+1))
77         if [ $cnt -eq $numOfRpcs ]
78         then
79                 echo "          \"$rpc\""
80         else
81                 echo "          \"$rpc\","
82         fi
83 done
84 echo "  ]"
85 echo "}"