OSDN Git Service

It corresponds to the addition of net information with list.
[fulcon/Fulcon.git] / src / lib / lib-list
1 #!/bin/bash 
2
3 # Copyright (C) 2015-2016 NIWA Hideyuki
4
5 FULCONDIR=/var/lib/fulcon
6
7 usage()
8 {
9         echo "usage: lib-list [ NAME ]"
10 }
11
12 lsdir() {
13   ls -f --ind=none $1 | sed '/^\.\{1,2\}$/d'
14 }
15
16 driver-net-info()
17 {
18         fulcon-exec $1 ip a show
19 }
20
21 RUNNING=`fulcon-list-running | awk '{printf "%s ",$1}'`
22 PAUSED=`fulcon-list-paused | awk '{printf "%s ",$1}'`
23 ALLCONT=`fulcon-list-all | awk '{printf "%s ",$1}'`
24
25 list1()
26 {
27         NAME=$1
28         mkdir -p $FULCONDIR/slot/$NAME/net
29         if [ -f /var/lib/fulcon/container/$NAME/imagename ]; then
30                 IMAGE=`cat /var/lib/fulcon/container/$NAME/imagename`
31                 echo $RUNNING | egrep -w $NAME >& /dev/null
32                 if [ $? -eq 0 ]; then
33                         STATUS="RUNNING"
34
35                         # network information
36                         IPADDR=`driver-net-info $NAME | \
37                           awk '$1=="inet" && $2!="127.0.0.1/8"{printf "%s ", $2}'`
38                         printf "%s\t\tRUNNING\t\t%s $IPADDR\n" $NAME $IMAGE
39                 else
40                         # network information
41                         IPADDR=""
42                         for k in `lsdir $FULCONDIR/container/$NAME/net`
43                         do
44                                 IP1=`awk '{printf "%s ",$3}' $FULCONDIR/container/$NAME/net/$k`
45                                 IPADDR="$IPADDR $IP1"
46                         done
47
48                         echo $PAUSED | egrep -w $NAME >& /dev/null
49                         if [ $? -eq 0 ]; then
50                                 STATUS="PAUSED"
51                                 printf "%s\t\tPAUSED\t\t%s$IPADDRs\n" $NAME $IMAGE
52                         else
53                                 STATUS="STOPPED"
54                                 printf "%s\t\tSTOPPED\t\t%s$IPADDR\n" $NAME $IMAGE
55                         fi
56                 fi
57         fi
58 }
59
60 if [ $# -eq 1 ]; then
61         list1 $1
62 else
63         for i in $ALLCONT
64         do
65                 list1 $i
66         done | sort
67 fi
68
69 exit 0
70
71