-[ "$#" -lt "5" ] && echo "Missing parameters" && usage
-[ "$#" -gt "6" ] && echo "Too many parameters" && usage
-HOST_NAME=`cat /etc/hostname`
-[ "$#" -eq "6" ] && HOST_NAME=$6
-FEATURES_LIST="lps,dioc,hwsv,tlbps,ht,lps,64b,iommu"
-NUMAS=2
-CORES=$3
-MEMORY=$4
-INTERFACES=$5
-
-#Ensure the user input is big enough
-([ $((CORES%2)) -ne 0 ] || [ $CORES -lt 4 ] ) && echo -e "ERROR: Wrong number of cores\n" && usage
-([ $((MEMORY%2)) -ne 0 ] || [ $MEMORY -lt 16 ] ) && echo -e "ERROR: Wrong number of memory\n" && usage
-([ $((INTERFACES%2)) -ne 0 ] || [ $INTERFACES -lt 4 ] ) && echo -e "ERROR: Wrong number of interfaces\n" && usage
-
-#Generate a cpu topology for 4 numas with hyperthreading
-CPUS=`pairs_gap=$((CORES/NUMAS));numa=0;inc=0;sibling=0;for((thread=0;thread<=$((pairs_gap-1));thread++)); do printf " ${numa}-${sibling}-${thread} ${numa}-${sibling}-$((thread+pairs_gap))";numa=$(((numa+1)%$NUMAS)); sibling=$((sibling+inc)); inc=$(((inc+1)%2)); done`
-
-#in this developing/fake server all cores can be used
-
-echo "#This file was created by $0"
-echo "#for adding this compute node to openvim"
-echo "#copy this file to openvim controller and run"
-echo "#openvim host-add <this>"
-echo
-echo "host:"
-echo " name: $HOST_NAME"
-echo " user: $1"
-echo " ip_name: $2"
-echo "host-data:"
-echo " name: $HOST_NAME"
-echo " user: $1"
-echo " ip_name: $2"
-echo " ranking: 100"
-echo " description: $HOST_NAME"
-echo " features: $FEATURES_LIST"
-echo " numas:"
-
-numa=0
-last_iface=0
-iface_counter=0
-while [ $numa -lt $NUMAS ]
-do
- echo " - numa_socket: $numa"
-#MEMORY
- echo " hugepages: $((MEMORY/2-2))"
- echo " memory: $((MEMORY/2))"
-
-#CORES
- echo " cores:"
- for cpu in $CPUS
- do
- PHYSICAL=`echo $cpu | cut -f 1 -d"-"`
- CORE=`echo $cpu | cut -f 2 -d"-"`
- THREAD=`echo $cpu | cut -f 3 -d"-"`
- [ $PHYSICAL != $numa ] && continue #skip non physical
- echo " - core_id: $CORE"
- echo " thread_id: $THREAD"
- [ $CORE -eq 0 ] && echo " status: noteligible"
- done
-
-
- #GENERATE INTERFACES INFORMATION AND PRINT IT
- seed=$RANDOM
- echo " interfaces:"
- for ((iface=0;iface<$INTERFACES;iface+=2))
- do
- name="iface$iface_counter"
- bus=$((iface+last_iface))
- pci=`printf "0000:%02X:00.0" $bus`
- mac=`get_mac $seed`
- seed=$((seed+1))
-
- echo " - source_name: $name"
- echo " Mbps: 10000"
- echo " pci: \"$pci\""
- echo " mac: \"$mac\""
- echo " switch_dpid: \"01:02:03:04:05:06\""
- echo " switch_port: fake0/$iface_counter"
- echo " sriovs:"
-
- for((nb_sriov=0;nb_sriov<8;nb_sriov++))
+ #User argument
+ [ -z "$option_user_name" ] && echo -e "ERROR: User argument is mandatory, --user-name=<user>\n" && usage
+ USER_NAME=${option_user_name}
+
+ [ -z "$option_ip" ] && echo -e "ERROR: OAM IP argument is mandatory, --ip=<X.X.X.X>\n" && usage
+ IP=${option_ip}
+
+ #TODO to be checl diference between real cores an numa cores
+ #cores argument
+ REAL_CORES=$(grep -c "^processor" "/proc/cpuinfo")
+ if [ -z "$option_cores" ] ; then
+ CORES=REAL_CORES
+ else
+ CORES=${option_cores}
+ fi
+
+ #Ensure the core user input is big enough
+ ([ $((CORES%2)) -ne 0 ]) && echo -e "ERROR: Wrong number of cores\n" && usage
+
+ MEMORY=$(($(grep MemTotal /proc/meminfo | awk '{print $2}') /1024/1024))
+ if [ -z "$option_huge_pages_1G" ] ; then
+ HUGE_PAGES_MEMORY=0
+ else
+ HUGE_PAGES_MEMORY=${option_huge_pages_1G}
+ fi
+ #Ensure the memory user input is big enough
+ #([ $((MEMORY%2)) -ne 0 ] || [ $MEMORY -lt 16 ] ) && echo -e "ERROR: Wrong number of memory\n" && usage
+
+ #nb_10GB_interfaces argument
+ if [ -z "$nb_10GB_interfaces" ] ; then
+ INTERFACES=8
+ else
+ INTERFACES=${nb_10GB_interfaces}
+ fi
+ ([ $((INTERFACES%2)) -ne 0 ] || [ $INTERFACES -lt 4 ] ) && echo -e "ERROR: Wrong number of interfaces\n" && usage
+
+ # Parameter by default
+ NUMAS=1
+ ([ $((NUMAS%2)) -ne 0 ]) && NUMAS=1
+}
+
+function _generate_compute_develope_yaml(){
+
+ _yaml_init
+
+ FEATURES_LIST="lps,dioc,hwsv,tlbps,ht,lps,64b,iommu"
+
+ #Generate a cpu topology for 4 numas with hyperthreading
+ #in this developing/fake server all cores can be used
+ #TODO check if this calculation is correct
+ echo2file "#This file was created by $0"
+ echo2file "#for adding this compute node to openvim"
+ echo2file "#copy this file to openvim controller and run"
+ echo2file "#openvim host-add <this>"
+ echo2file
+ echo2file "host:"
+ echo2file " name: $HOST_NAME"
+ echo2file " user: $USER_NAME"
+ echo2file " ip_name: $IP"
+ echo2file "host-data:"
+ echo2file " name: $HOST_NAME"
+ echo2file " user: $USER_NAME"
+ echo2file " ip_name: $IP"
+ echo2file " ranking: 100"
+ echo2file " description: $HOST_NAME"
+ echo2file " features: $FEATURES_LIST"
+ echo2file " numas:"
+
+ numa=0
+ last_iface=0
+ iface_counter=0
+
+ while [ $numa -lt $NUMAS ]
+ do
+
+ HUGE_PAGES=$((HUGE_PAGES_MEMORY/2-2))
+ ([ ${HUGE_PAGES} -lt -1 ]) && HUGE_PAGES=0
+
+ echo2file " - numa_socket: $numa"
+ #MEMORY
+ echo2file " hugepages: $((HUGE_PAGES))"
+ echo2file " memory: $((MEMORY/$NUMAS))"
+ #CORES
+ echo2file " cores:"
+
+ for((n_core=0;n_core<$REAL_CORES;n_core++))
+ do
+ THREAD_ID=$(($n_core+1))
+ CORE_ID=$(($((${n_core}+${numa}))/2))
+ echo2file " - core_id: ${CORE_ID}"
+ echo2file " thread_id: ${THREAD_ID}"
+ [ $CORE_ID -eq 0 ] && echo2file " status: noteligible"
+
+ thread_counter=$((thread_counter+1))
+ done
+ # GENERATE INTERFACES INFORMATION AND PRINT IT
+ seed=$RANDOM
+ echo2file " interfaces:"
+ for ((iface=0;iface<$INTERFACES;iface+=2))
+ do
+ name="iface$iface_counter"
+ bus=$((iface+last_iface))
+ bus=$((iface))
+ pci=`printf "0000:%02X:00.0" $bus`
+ mac=`get_mac $seed`
+ seed=$((seed+1))
+
+ echo2file " - source_name: $name"
+ echo2file " Mbps: 10000"
+ echo2file " pci: \"$pci\""
+ echo2file " mac: \"$mac\""
+ echo2file " sriovs:"
+
+ PCI_COUNTER=0
+ for((nb_sriov=0;nb_sriov<8;nb_sriov++))
+ do
+ #PCI_COUNTER=$((PCI_COUNTER+2))
+ #echo2file "nb_sriov "$nb_sriov
+ #echo2file "PCI_COUNTER "$PCI_COUNTER
+
+ pci=`printf "0000:%02X:10.%i" $bus $nb_sriov`
+ mac=`get_mac $seed`
+ seed=$((seed+1))
+ echo2file " - source_name: eth$nb_sriov"
+ echo2file " mac: \"$mac\""
+ echo2file " pci: \"$pci\""
+ done
+ iface_counter=$((iface_counter+1))
+ done
+ last_iface=$(((numa+1)*127/NUMAS+5)) #made-up formula for more realistic pci numbers
+ numa=$((numa+1))
+ done
+}
+
+function _yaml_init(){
+ echo -n > host-develope.yaml
+}
+
+function echo2file(){
+ echo "${1}"
+ echo "${1}" >> host-develope.yaml
+}
+
+function _get_opts()
+{
+ options="$1"
+ shift
+
+ get_argument=""
+ #reset variables
+ params=""
+ for option_group in $options