aboutsummaryrefslogtreecommitdiffstats
path: root/dgbuilder/tools/getRpcsClassFromYangs.sh
blob: f3ce4c8172c20f8ba9916b23938a66e8e0b4eba6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
toolsDir=$PROJECT_HOME/tools
. ${toolsDir}/setClasspath
if [ "$#" != "2" ]
then
	echo "Usage $0 yang_file generated_jar_file"
	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"
	exit
fi
yangFile="$1"
jarFile="$2"
module=$(cat $yangFile|egrep "module .*{"|awk '{print $2}'|sed -e 's/{//g')
#echo "	\"$module\" : ["
rpcs=$(grep rpc $yangFile|grep -v leaf|sed -e 's/^\s\+rpc//g'|awk '{print $1}')
for i in `find ${toolsDir}/yangToolsJars -name "*.jar" -print`
do
#echo $i
export CLASSPATH=$CLASSPATH:$i
done
export CLASSPATH=$2:$CLASSPATH:.:${toolsDir}/slf4j-api-1.7.2.jar:${toolsDir}/guava-14.0.1.jar:${toolsDir}/printYangToProp.jar
allProps=""
for rpc in $rpcs
do
rpcVal=$(echo $rpc|sed -e "s/\b\(.\)/\u\1/g"|sed s/\-//g)
#echo $rpcVal
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')
#echo $className
inputProps=""
if [ "$className" != "" ]
then
	#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"
	inputProps=$(java -cp $CLASSPATH PrintYangToProp $className 2>${toolsDir}/tmpws/logs/err.log)
fi
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')
#echo $inputProps
#echo $className
outputProps=""
if [ "$className" != "" ]
then
	#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"
	outputProps=$(java -cp $CLASSPATH PrintYangToProp $className 2>${toolsDir}/tmpws/logs/err.log)
fi
if [ -z "$allProps" ]
then
	allProps=$(echo ${inputProps}${outputProps}|sed -e s/,$//g)
else
	allProps=$(echo ${allProps},${inputProps}${outputProps}|sed -e s/,$//g)
fi
done
#echo $allProps
#OIFS=$IFS
#IFS=','
#arr2=$allProps
#for x in $arr2
#do
#    echo "$x"
#done
#IFS=$OIFS
#echo "	]"
echo "module.exports = {"
echo "\"moduleName\" : \"${module}\","
echo "'${module}_VALUES' : "
echo "[ $allProps ]"|python -m json.tool
echo ","
echo "'${module}_RPCS' : ["

cnt=0
#numOfRpcs=${#rpcs[@]}
numOfRpcs=0;
for rpc in $rpcs
do
	numOfRpcs=$((numOfRpcs+1))
done

for rpc in $rpcs
do
	cnt=$((cnt+1))
	if [ $cnt -eq $numOfRpcs ]
	then
		echo "		\"$rpc\""
	else
		echo "		\"$rpc\","
        fi
done
echo "	]"
echo "}"