Statistiques
| Révision :

root / trunk / shell / configuration-start-compute-nodes @ 52

Historique | Voir | Annoter | Télécharger (3,38 ko)

1
#! /bin/bash -x
2
#
3
# ST - 2012-07-03
4
#
5
# Start the compute nodes for a configuration.
6
#
7
# Get the directory of the script.
8
SCRIPT_PATH=`dirname $0`
9
# Get the script name.
10
SCRIPT_NAME=`basename $0`
11
# Source the common configuration variables.
12
. $SCRIPT_PATH/c-i-a-b.common
13
#
14
#
15
# Get the configurations
16
#
17
CONFIGURATIONS=`ls $SCRIPT_PATH/$CONST_CONFIGURATIONS_DIR`
18
CONFIGURATIONS_STRING="{"
19
echo $CONFIGURATIONS
20
for i in $CONFIGURATIONS ; do
21
  CONFIGURATIONS_STRING="$CONFIGURATIONS_STRING$i|"
22
done
23
#
24
# Check command line arguments.
25
#
26
if [ "x$1" == "x" ]
27
  then
28
     echo
29
     echo "Missing parameter. Aborting!"
30
     echo
31
     echo "Usage: $SCRIPT_NAME configuration"
32
     echo
33
     echo -e "  configuration: one of $CONFIGURATIONS_STRING\b}"
34
     exit 1
35
fi
36
#
37
# Does the configuration exist?
38
#
39
CONFIGURATION_FOUND=""
40
CONFIGURATION=`echo $1 | tr [:upper:] [:lower:]`
41
for i in $CONFIGURATIONS ; do
42
    CURRENT_CONFIGURATION=`echo $i | tr [:upper:] [:lower:]`
43
    if [ $CONFIGURATION == $CURRENT_CONFIGURATION ] ; then
44
      CONFIGURATION_FOUND=$i
45
    fi
46
done
47
if [ -z $CONFIGURATION_FOUND ] ; then
48
  echo
49
  echo
50
  echo "The configuration \"$1\" does not exist".
51
  echo -e "The configuration must be one of $CONFIGURATIONS_STRING\b}."
52
  echo "Aborting!"
53
  echo
54
  echo
55
  exit 1
56
else
57
  CONFIGURATION=$CONFIGURATION_FOUND
58
fi
59
#
60
# Source the specific variables for the configuration.
61
#
62
. $SCRIPT_PATH/$CONST_CONFIGURATIONS_DIR/$CONFIGURATION/c-i-a-b.config.common
63
#
64
# Start the compute-nodes.
65
#
66
COMPUTE_NODE_INDEX=1
67
while [ $COMPUTE_NODE_INDEX -le $COMPUTE_NODE_MAX_INDEX ] ; do
68
  #
69
  # Convert the number into a three caracters strings.
70
  #
71
  COMPUTE_NODE_INDEX_STRING=$COMPUTE_NODE_INDEX
72
  while [ ${#COMPUTE_NODE_INDEX_STRING} -lt 3 ] ; do
73
    COMPUTE_NODE_INDEX_STRING="0$COMPUTE_NODE_INDEX_STRING"
74
  done
75
  #
76
  # Compute the host name.
77
  #
78
  CURRENT_HOST_NAME=${COMPUTE_NODE_NAME_PREFIX}${COMPUTE_NODE_INDEX_STRING}
79
  #
80
  # Check if the corresponding VM is already running.
81
  #
82
  IS_RUNNING=`xm list | grep $CURRENT_HOST_NAME`
83
  if [ -n "$IS_RUNNING" ] ; then
84
    echo
85
    echo The \"$CURRENT_HOST_NAME\" domU already exists.
86
    echo
87
  fi
88
  #
89
  # Get the CPU data.
90
  #
91
  COMPUTE_NODE_CPUS=`sed -n ${COMPUTE_NODE_INDEX},${COMPUTE_NODE_INDEX}p $SCRIPT_PATH/$CONST_CONFIGURATIONS_DIR/$CONFIGURATION/$COMPUTE_NODE_CPUS_FILE`
92
  COMPUTE_NODE_VCPUS_NUM=0
93
  COMPUTE_NODE_CPUS_LIST=""
94
  for i in $COMPUTE_NODE_CPUS ; do
95
    if [ -z $COMPUTE_NODE_CPUS_LIST ] ; then
96
      COMPUTE_NODE_CPUS_LIST=$i
97
    else
98
      COMPUTE_NODE_CPUS_LIST="$COMPUTE_NODE_CPUS_LIST,$i"
99
    fi
100
    COMPUTE_NODE_VCPUS_NUM=$((COMPUTE_NODE_VCPUS_NUM + 1))
101
  done
102
  #
103
  # Check that the configuration file exists.
104
  #
105
  if [ ! -f $CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg ] ; then
106
    echo
107
    echo
108
    echo "No configuration file for \"$CURRENT_HOST_NAME\."
109
    echo "Aborting!"
110
    echo
111
    echo
112
    xm list
113
    exit 1
114
  fi
115
  #
116
  # Start the virtual machine
117
  #
118
  xm create $CONST_XEN_CONFIG_DIR/$CURRENT_HOST_NAME.cfg
119
  #
120
  # Wait until the virtual machine has started
121
  #
122
  IS_RUNNING=""
123
  while [ -z "$IS_RUNNING" ]
124
    do
125
      IS_RUNNING=`xm list | grep $CURRENT_HOST_NAME`
126
      sleep 1
127
  done # End while
128
  #
129
  # Pin the VCPUs to "real" CPUs.
130
  #
131
  VCPU_INDEX=0
132
  for i in $COMPUTE_NODE_CPUS_LIST ; do
133
    xm vcpu-pin $CURRENT_HOST_NAME $VCPU_INDEX $i
134
    VCPU_INDEX=$((VCPU_INDEX + 1))
135
  done # End for i
136
  COMPUTE_NODE_INDEX=$((COMPUTE_NODE_INDEX + 1))
137
done # End main loop.
138
#
139
exit 0