Remove VMware drivers

This commit is contained in:
Jaime Melis committed 2016-04-07 11:19:33 +02:00
1 parent baa5fb814f
commit adeff7a751
62 files changed
+7 -3099

No files matched your search

-77
View File
@@ -242,14 +242,12 @@ VAR_DIRS="$VAR_LOCATION/remotes \
$VAR_LOCATION/remotes/im \
$VAR_LOCATION/remotes/im/kvm.d \
$VAR_LOCATION/remotes/im/kvm-probes.d \
$VAR_LOCATION/remotes/im/vmware.d \
$VAR_LOCATION/remotes/im/vcenter.d \
$VAR_LOCATION/remotes/im/ec2.d \
$VAR_LOCATION/remotes/im/sl.d \
$VAR_LOCATION/remotes/im/az.d \
$VAR_LOCATION/remotes/vmm \
$VAR_LOCATION/remotes/vmm/kvm \
$VAR_LOCATION/remotes/vmm/vmware \
$VAR_LOCATION/remotes/vmm/vcenter \
$VAR_LOCATION/remotes/vmm/ec2 \
$VAR_LOCATION/remotes/vmm/sl \
@@ -262,14 +260,12 @@ VAR_DIRS="$VAR_LOCATION/remotes \
$VAR_LOCATION/remotes/vnm/fw \
$VAR_LOCATION/remotes/vnm/ovswitch \
$VAR_LOCATION/remotes/vnm/ovswitch_brcompat \
$VAR_LOCATION/remotes/vnm/vmware \
$VAR_LOCATION/remotes/tm/ \
$VAR_LOCATION/remotes/tm/dummy \
$VAR_LOCATION/remotes/tm/shared \
$VAR_LOCATION/remotes/tm/fs_lvm \
$VAR_LOCATION/remotes/tm/qcow2 \
$VAR_LOCATION/remotes/tm/ssh \
$VAR_LOCATION/remotes/tm/vmfs \
$VAR_LOCATION/remotes/tm/lvm \
$VAR_LOCATION/remotes/tm/ceph \
$VAR_LOCATION/remotes/tm/dev \
@@ -280,7 +276,6 @@ VAR_DIRS="$VAR_LOCATION/remotes \
$VAR_LOCATION/remotes/datastore \
$VAR_LOCATION/remotes/datastore/dummy \
$VAR_LOCATION/remotes/datastore/fs \
$VAR_LOCATION/remotes/datastore/vmfs \
$VAR_LOCATION/remotes/datastore/lvm \
$VAR_LOCATION/remotes/datastore/ceph \
$VAR_LOCATION/remotes/datastore/dev \
@@ -377,7 +372,6 @@ INSTALL_FILES=(
IM_PROBES_FILES:$VAR_LOCATION/remotes/im
IM_PROBES_KVM_FILES:$VAR_LOCATION/remotes/im/kvm.d
IM_PROBES_KVM_PROBES_FILES:$VAR_LOCATION/remotes/im/kvm-probes.d
IM_PROBES_VMWARE_FILES:$VAR_LOCATION/remotes/im/vmware.d
IM_PROBES_VCENTER_FILES:$VAR_LOCATION/remotes/im/vcenter.d
IM_PROBES_EC2_FILES:$VAR_LOCATION/remotes/im/ec2.d
IM_PROBES_SL_FILES:$VAR_LOCATION/remotes/im/sl.d
@@ -390,7 +384,6 @@ INSTALL_FILES=(
AUTH_SERVER_CIPHER_FILES:$VAR_LOCATION/remotes/auth/server_cipher
AUTH_DUMMY_FILES:$VAR_LOCATION/remotes/auth/dummy
AUTH_PLAIN_FILES:$VAR_LOCATION/remotes/auth/plain
VMM_EXEC_VMWARE_SCRIPTS:$VAR_LOCATION/remotes/vmm/vmware
VMM_EXEC_VCENTER_SCRIPTS:$VAR_LOCATION/remotes/vmm/vcenter
VMM_EXEC_EC2_SCRIPTS:$VAR_LOCATION/remotes/vmm/ec2
VMM_EXEC_SL_SCRIPTS:$VAR_LOCATION/remotes/vmm/sl
@@ -400,7 +393,6 @@ INSTALL_FILES=(
TM_FS_LVM_FILES:$VAR_LOCATION/remotes/tm/fs_lvm
TM_QCOW2_FILES:$VAR_LOCATION/remotes/tm/qcow2
TM_SSH_FILES:$VAR_LOCATION/remotes/tm/ssh
TM_VMFS_FILES:$VAR_LOCATION/remotes/tm/vmfs
TM_LVM_FILES:$VAR_LOCATION/remotes/tm/lvm
TM_CEPH_FILES:$VAR_LOCATION/remotes/tm/ceph
TM_DEV_FILES:$VAR_LOCATION/remotes/tm/dev
@@ -410,7 +402,6 @@ INSTALL_FILES=(
DATASTORE_DRIVER_COMMON_SCRIPTS:$VAR_LOCATION/remotes/datastore/
DATASTORE_DRIVER_DUMMY_SCRIPTS:$VAR_LOCATION/remotes/datastore/dummy
DATASTORE_DRIVER_FS_SCRIPTS:$VAR_LOCATION/remotes/datastore/fs
DATASTORE_DRIVER_VMFS_SCRIPTS:$VAR_LOCATION/remotes/datastore/vmfs
DATASTORE_DRIVER_LVM_SCRIPTS:$VAR_LOCATION/remotes/datastore/lvm
DATASTORE_DRIVER_CEPH_SCRIPTS:$VAR_LOCATION/remotes/datastore/ceph
DATASTORE_DRIVER_DEV_SCRIPTS:$VAR_LOCATION/remotes/datastore/dev
@@ -427,7 +418,6 @@ INSTALL_FILES=(
NETWORK_FW_FILES:$VAR_LOCATION/remotes/vnm/fw
NETWORK_OVSWITCH_FILES:$VAR_LOCATION/remotes/vnm/ovswitch
NETWORK_OVSWITCH_BRCOMPAT_FILES:$VAR_LOCATION/remotes/vnm/ovswitch_brcompat
NETWORK_VMWARE_FILES:$VAR_LOCATION/remotes/vnm/vmware
EXAMPLE_SHARE_FILES:$SHARE_LOCATION/examples
WEBSOCKIFY_SHARE_FILES:$SHARE_LOCATION/websockify
INSTALL_GEMS_SHARE_FILE:$SHARE_LOCATION
@@ -533,7 +523,6 @@ INSTALL_ONEFLOW_ETC_FILES=(
INSTALL_ETC_FILES=(
ETC_FILES:$ETC_LOCATION
VMWARE_ETC_FILES:$ETC_LOCATION
EC2_ETC_FILES:$ETC_LOCATION
SL_ETC_FILES:$ETC_LOCATION
AZ_ETC_FILES:$ETC_LOCATION
@@ -678,31 +667,6 @@ VMM_EXEC_KVM_SCRIPTS="src/vmm_mad/remotes/kvm/cancel \
src/vmm_mad/remotes/kvm/reconfigure \
src/vmm_mad/remotes/kvm/prereconfigure"
#-------------------------------------------------------------------------------
# VMM Driver VMWARE scripts, to be installed under $REMOTES_LOCATION/vmm/vmware
#-------------------------------------------------------------------------------
VMM_EXEC_VMWARE_SCRIPTS="src/vmm_mad/remotes/vmware/cancel \
src/vmm_mad/remotes/vmware/attach_disk \
src/vmm_mad/remotes/vmware/detach_disk \
src/vmm_mad/remotes/vmware/attach_nic \
src/vmm_mad/remotes/vmware/detach_nic \
src/vmm_mad/remotes/vmware/snapshot_create \
src/vmm_mad/remotes/vmware/snapshot_revert \
src/vmm_mad/remotes/vmware/snapshot_delete \
src/vmm_mad/remotes/vmware/scripts_common_sh.sh \
src/vmm_mad/remotes/vmware/deploy \
src/vmm_mad/remotes/vmware/migrate \
src/vmm_mad/remotes/vmware/restore \
src/vmm_mad/remotes/vmware/reboot \
src/vmm_mad/remotes/vmware/reset \
src/vmm_mad/remotes/vmware/save \
src/vmm_mad/remotes/vmware/poll \
src/vmm_mad/remotes/vmware/checkpoint \
src/vmm_mad/remotes/vmware/shutdown \
src/vmm_mad/remotes/vmware/vmware_driver.rb \
src/vmm_mad/remotes/vmware/vi_driver.rb"
#-------------------------------------------------------------------------------
# VMM Driver vCenter scripts, installed under $REMOTES_LOCATION/vmm/vcenter
#-------------------------------------------------------------------------------
@@ -815,8 +779,6 @@ IM_PROBES_KVM_PROBES_FILES="src/im_mad/remotes/kvm-probes.d/kvm.rb \
src/im_mad/remotes/common.d/version.sh \
src/im_mad/remotes/common.d/collectd-client-shepherd.sh"
IM_PROBES_VMWARE_FILES="src/im_mad/remotes/vmware.d/vmware.rb"
IM_PROBES_VCENTER_FILES="src/im_mad/remotes/vcenter.d/vcenter.rb"
IM_PROBES_EC2_FILES="src/im_mad/remotes/ec2.d/poll"
@@ -901,12 +863,6 @@ NETWORK_OVSWITCH_BRCOMPAT_FILES="src/vnm_mad/remotes/ovswitch_brcompat/clean \
src/vnm_mad/remotes/ovswitch_brcompat/update_sg \
src/vnm_mad/remotes/ovswitch_brcompat/OpenvSwitch.rb"
NETWORK_VMWARE_FILES="src/vnm_mad/remotes/vmware/clean \
src/vnm_mad/remotes/vmware/post \
src/vnm_mad/remotes/vmware/pre \
src/vnm_mad/remotes/vmware/update_sg \
src/vnm_mad/remotes/vmware/VMware.rb"
#-------------------------------------------------------------------------------
# Transfer Manager commands, to be installed under $LIB_LOCATION/tm_commands
# - SHARED TM, $VAR_LOCATION/tm/shared
@@ -914,7 +870,6 @@ NETWORK_VMWARE_FILES="src/vnm_mad/remotes/vmware/clean \
# - QCOW2 TM, $VAR_LOCATION/tm/qcow2
# - SSH TM, $VAR_LOCATION/tm/ssh
# - DUMMY TM, $VAR_LOCATION/tm/dummy
# - VMWARE TM, $VAR_LOCATION/tm/vmware
# - LVM TM, $VAR_LOCATION/tm/lvm
# - CEPH TM, $VAR_LOCATION/tm/ceph
# - DEV TM, $VAR_LOCATION/tm/dev
@@ -1007,23 +962,6 @@ TM_DUMMY_FILES="src/tm_mad/dummy/clone \
src/tm_mad/dummy/snap_revert \
src/tm_mad/dummy/cpds"
TM_VMFS_FILES="src/tm_mad/vmfs/clone \
src/tm_mad/vmfs/delete
src/tm_mad/vmfs/ln \
src/tm_mad/vmfs/mkswap \
src/tm_mad/vmfs/mkimage \
src/tm_mad/vmfs/mv \
src/tm_mad/vmfs/context \
src/tm_mad/vmfs/mvds \
src/tm_mad/vmfs/cpds \
src/tm_mad/vmfs/postmigrate \
src/tm_mad/vmfs/snap_create \
src/tm_mad/vmfs/snap_create_live \
src/tm_mad/vmfs/snap_delete \
src/tm_mad/vmfs/snap_revert \
src/tm_mad/vmfs/failmigrate \
src/tm_mad/vmfs/premigrate"
TM_LVM_FILES="src/tm_mad/lvm/clone \
src/tm_mad/lvm/ln \
src/tm_mad/lvm/mv \
@@ -1102,7 +1040,6 @@ TM_ISCSI_FILES="src/tm_mad/iscsi/clone \
# Datastore drivers, to be installed under $REMOTES_LOCATION/datastore
# - Dummy Image Repository, $REMOTES_LOCATION/datastore/dummy
# - FS based Image Repository, $REMOTES_LOCATION/datastore/fs
# - VMFS based Image Repository, $REMOTES_LOCATION/datastore/vmfs
# - LVM based Image Repository, $REMOTES_LOCATION/datastore/lvm
#-------------------------------------------------------------------------------
@@ -1135,17 +1072,6 @@ DATASTORE_DRIVER_FS_SCRIPTS="src/datastore_mad/remotes/fs/cp \
src/datastore_mad/remotes/fs/rm \
src/datastore_mad/remotes/fs/export"
DATASTORE_DRIVER_VMFS_SCRIPTS="src/datastore_mad/remotes/vmfs/cp \
src/datastore_mad/remotes/vmfs/mkfs \
src/datastore_mad/remotes/vmfs/stat \
src/datastore_mad/remotes/vmfs/clone \
src/datastore_mad/remotes/vmfs/monitor \
src/datastore_mad/remotes/vmfs/rm \
src/datastore_mad/remotes/vmfs/snap_delete \
src/datastore_mad/remotes/vmfs/snap_revert \
src/datastore_mad/remotes/vmfs/snap_flatten \
src/datastore_mad/remotes/vmfs/vmfs.conf"
DATASTORE_DRIVER_LVM_SCRIPTS="src/datastore_mad/remotes/lvm/cp \
src/datastore_mad/remotes/lvm/mkfs \
src/datastore_mad/remotes/lvm/stat \
@@ -1287,8 +1213,6 @@ ETC_FILES="share/etc/oned.conf \
share/etc/defaultrc \
src/scheduler/etc/sched.conf"
VMWARE_ETC_FILES="src/vmm_mad/remotes/vmware/vmwarerc"
EC2_ETC_FILES="src/vmm_mad/remotes/ec2/ec2_driver.conf \
src/vmm_mad/remotes/ec2/ec2_driver.default"
@@ -1307,7 +1231,6 @@ AZ_ETC_FILES="src/vmm_mad/remotes/az/az_driver.conf \
VMM_EXEC_ETC_FILES="src/vmm_mad/exec/vmm_execrc \
src/vmm_mad/exec/vmm_exec_kvm.conf \
src/vmm_mad/exec/vmm_exec_vmware.conf \
src/vmm_mad/exec/vmm_exec_vcenter.conf"
#-------------------------------------------------------------------------------
+2 -6
View File
@@ -374,7 +374,7 @@ VM_MAD = [ name="dummy", executable="one_vmm_dummy", type="xml" ]
TM_MAD = [
executable = "one_tm",
arguments = "-t 15 -d dummy,lvm,shared,fs_lvm,qcow2,ssh,vmfs,ceph"
arguments = "-t 15 -d dummy,lvm,shared,fs_lvm,qcow2,ssh,ceph"
]
#*******************************************************************************
@@ -392,7 +392,7 @@ TM_MAD = [
DATASTORE_MAD = [
executable = "one_datastore",
arguments = "-t 15 -d dummy,fs,vmfs,lvm,ceph"
arguments = "-t 15 -d dummy,fs,lvm,ceph"
]
#*******************************************************************************
@@ -681,10 +681,6 @@ TM_MAD_CONF = [
name = "ssh", ln_target = "SYSTEM", clone_target = "SYSTEM", shared = "no"
]
TM_MAD_CONF = [
name = "vmfs", ln_target = "NONE", clone_target= "SYSTEM", shared = "yes"
]
TM_MAD_CONF = [
name = "ceph", ln_target = "NONE", clone_target = "SELF", shared = "yes"
]
+4 -45
View File
@@ -39,7 +39,7 @@
# passwd : (mysql) the password for user
# db_name : (mysql) the database name
#
# VNC_PORTS: VNC port pool fot automatic VNC port assigment, if possible the
# VNC_PORTS: VNC port pool fot automatic VNC port assigment, if possible the
# port will be set to ``START`` + ``VMID``
# start : first port to assgin
# reserved: comma separated list of ports
@@ -196,7 +196,7 @@ DEFAULT_COST = [
# reserved: Comma separated list of VLAN_IDs
#
# VXLAN_IDS: Automatic VXLAN Network ID (VNI) assigment. This is used
# for vxlan networks.
# for vxlan networks.
# start: First VNI to use
# NOTE: reserved is not supported by this pool
#*******************************************************************************
@@ -312,18 +312,6 @@ IM_MAD = [
# ARGUMENTS = "-r 3 -t 15 kvm-probes" ]
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# VMware Information Driver Manager Configuration
# -r number of retries when monitoring a host
# -t number of threads, i.e. number of hosts monitored at the same time
#-------------------------------------------------------------------------------
#IM_MAD = [
# NAME = "vmware",
# EXECUTABLE = "one_im_sh",
# ARGUMENTS = "-c -t 15 -r 0 vmware" ]
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# vCenter Information Driver Manager Configuration
# -r number of retries when monitoring a host
@@ -450,27 +438,6 @@ VM_MAD = [
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# VMware Virtualization Driver Manager Configuration
# -r number of retries when monitoring a host
# -t number of threads, i.e. number of hosts monitored at the same time
# -p more than one action per host in parallel, needs support from hypervisor
# -s <shell> to execute commands, bash by default
# -d default snapshot strategy. It can be either 'detach' or 'suspend'. It
# defaults to 'suspend'.
#-------------------------------------------------------------------------------
#VM_MAD = [
# NAME = "vmware",
# EXECUTABLE = "one_vmm_sh",
# ARGUMENTS = "-t 15 -r 0 vmware -s sh",
# DEFAULT = "vmm_exec/vmm_exec_vmware.conf",
# TYPE = "vmware",
# IMPORTED_VMS_ACTIONS = "shutdown, shutdown-hard, hold, release, suspend,
# resume, delete, reboot, reboot-hard, resched, unresched, disk-attach,
# disk-detach, nic-attach, nic-detach, snap-create, snap-delete"
# ]
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# vCenter Virtualization Driver Manager Configuration
# -r number of retries when monitoring a host
@@ -568,7 +535,7 @@ VM_MAD = [
TM_MAD = [
EXECUTABLE = "one_tm",
ARGUMENTS = "-t 15 -d dummy,lvm,shared,fs_lvm,qcow2,ssh,vmfs,ceph,dev,vcenter,iscsi"
ARGUMENTS = "-t 15 -d dummy,lvm,shared,fs_lvm,qcow2,ssh,ceph,dev,vcenter,iscsi"
]
#*******************************************************************************
@@ -587,7 +554,7 @@ TM_MAD = [
DATASTORE_MAD = [
EXECUTABLE = "one_datastore",
ARGUMENTS = "-t 15 -d dummy,fs,vmfs,lvm,ceph,dev,iscsi,vcenter -s shared,ssh,ceph"
ARGUMENTS = "-t 15 -d dummy,fs,lvm,ceph,dev,iscsi,vcenter -s shared,ssh,ceph"
]
#*******************************************************************************
@@ -944,10 +911,6 @@ TM_MAD_CONF = [
DS_MIGRATE = "YES"
]
TM_MAD_CONF = [
NAME = "vmfs", LN_TARGET = "NONE", CLONE_TARGET= "SYSTEM", SHARED = "YES"
]
TM_MAD_CONF = [
NAME = "ceph", LN_TARGET = "NONE", CLONE_TARGET = "SELF", SHARED = "YES",
DS_MIGRATE = "NO"
@@ -1018,10 +981,6 @@ DS_MAD_CONF = [
NAME = "ssh", REQUIRED_ATTRS = "", PERSISTENT_ONLY = "NO"
]
DS_MAD_CONF = [
NAME = "vmfs", REQUIRED_ATTRS = "BRIDGE_LIST", PERSISTENT_ONLY = "NO"
]
DS_MAD_CONF = [
NAME = "vcenter", REQUIRED_ATTRS = "VCENTER_CLUSTER", PERSISTENT_ONLY = "YES",
MARKETPLACE_ACTIONS = "export"
+1 -2
View File
@@ -20,8 +20,7 @@
# Set up Environment and transfer arguments
# ------------------------------------------------------------------------------
#
# vmfs.conf: includes default TMP_DIR
# libfs.sh a& scripts_common.sh: includes tools and lib calls
# libfs.sh & scripts_common.sh: includes tools and lib calls
# ------------------------------------------------------------------------------
if [ -z "${ONE_LOCATION}" ]; then
-121
View File
@@ -1,121 +0,0 @@
#!/bin/bash
# -------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
#--------------------------------------------------------------------------- #
###############################################################################
# This script is used to copy a VM image (SRC) to the image repository as DST
# Several SRC types are supported
###############################################################################
# ------------------------------------------------------------------------------
# Set up Environment and transfer arguments
# ------------------------------------------------------------------------------
#
# vmfs.conf: includes default TMP_DIR
# libfs.sh a& scripts_common.sh: includes tools and lib calls
# ------------------------------------------------------------------------------
if [ -z "${ONE_LOCATION}" ]; then
LIB_LOCATION=/usr/lib/one
VMWARERC=/etc/one/vmwarerc
else
LIB_LOCATION=$ONE_LOCATION/lib
VMWARERC=$ONE_LOCATION/etc/vmwarerc
fi
. $LIB_LOCATION/sh/scripts_common.sh
DRIVER_PATH=$(dirname $0)
source ${DRIVER_PATH}/../libfs.sh
source ${DRIVER_PATH}/vmfs.conf
# -------- Get clone and datastore arguments from OpenNebula core ------------
DRV_ACTION=$1
ID=$2
XPATH="${DRIVER_PATH}/../xpath.rb -b $DRV_ACTION"
unset i j XPATH_ELEMENTS
while IFS= read -r -d '' element; do
XPATH_ELEMENTS[i++]="$element"
done < <($XPATH /DS_DRIVER_ACTION_DATA/DATASTORE/BASE_PATH \
/DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/BRIDGE_LIST \
/DS_DRIVER_ACTION_DATA/DATASTORE/ID \
/DS_DRIVER_ACTION_DATA/IMAGE/PATH \
/DS_DRIVER_ACTION_DATA/IMAGE/TYPE \
/DS_DRIVER_ACTION_DATA/IMAGE/CLONE_FSTYPE)
BASE_PATH="${XPATH_ELEMENTS[j++]}"
BRIDGE_LIST="${XPATH_ELEMENTS[j++]}"
DS_ID="${XPATH_ELEMENTS[j++]}"
SRC="${XPATH_ELEMENTS[j++]}"
IMAGE_TYPE="${XPATH_ELEMENTS[j++]}"
CLONE_FSTYPE="${XPATH_ELEMENTS[j++]}"
# ------------------------------------------------------------------------------
# Set up datastore
# ------------------------------------------------------------------------------
#
# DST is the final generated image SOURCE, e.g. /vmfs/volumes/104/834efd1/
# SRC/DST_FOLDER is the image folder name, e.g. 834efd1
# DST_HOST is the host to make the transfers (from BRIDGE_LIST)
# ------------------------------------------------------------------------------
DST=`generate_image_path`
SRC_FOLDER=`basename $SRC`
DST_FOLDER=`basename $DST`
DST_HOST=`get_destination_host $ID`
if [ -z "$DST_HOST" ]; then
error_message "Datastore template missing 'BRIDGE_LIST' attribute."
exit -1
fi
set_up_datastore "$BASE_PATH" "$RESTRICTED_DIRS" "$SAFE_DIRS"
# ------------------------------------------------------------------------------
# Copy the image to the repository
# ------------------------------------------------------------------------------
log "Copying local image $SRC to the image repository"
if ! is_cdrom; then
exec_and_log "ssh_make_path $DST_HOST $DST" \
"Cannot create $DST in $DST_HOST"
if [ ! -z $CLONE_FSTYPE ]; then
CLONE_FSTYPE="-d $CLONE_FSTYPE"
fi
ssh_exec_and_log $DST_HOST "$VMKFSTOOLS $CLONE_FSTYPE -i $SRC/disk.vmdk $DST/disk.vmdk" \
"Error copying $SRC/disk.vmdk to $DST/disk.vmdk"
else
ssh_exec_and_log $DST_HOST "cp $SRC $DST" \
"Error copying $SRC $DST in $DST_HOST"
fi
# ------------------------------------------------------------------------------
# Send SOURCE to OpenNebula core
# ------------------------------------------------------------------------------
echo "$DST"
-174
View File
@@ -1,174 +0,0 @@
#!/bin/bash
# -------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
#--------------------------------------------------------------------------- #
# ------------------------------------------------------------------------------
# Set up Environment and transfer arguments
# ------------------------------------------------------------------------------
#
# vmfs.conf: includes default TMP_DIR
# libfs.sh a& scripts_common.sh: includes tools and lib calls
# ------------------------------------------------------------------------------
if [ -z "${ONE_LOCATION}" ]; then
LIB_LOCATION=/usr/lib/one
VMWARERC=/etc/one/vmwarerc
else
LIB_LOCATION=$ONE_LOCATION/lib
VMWARERC=$ONE_LOCATION/etc/vmwarerc
fi
. $LIB_LOCATION/sh/scripts_common.sh
DRIVER_PATH=$(dirname $0)
source ${DRIVER_PATH}/../libfs.sh
source ${DRIVER_PATH}/vmfs.conf
# -------- cp and datastore arguments from OpenNebula core ------------
DRV_ACTION=$1
ID=$2
export DRV_ACTION
UTILS_PATH="${DRIVER_PATH}/.."
XPATH="$UTILS_PATH/xpath.rb -b $DRV_ACTION"
unset i j XPATH_ELEMENTS
while IFS= read -r -d '' element; do
XPATH_ELEMENTS[i++]="$element"
done < <($XPATH /DS_DRIVER_ACTION_DATA/DATASTORE/BASE_PATH \
/DS_DRIVER_ACTION_DATA/DATASTORE/ID \
/DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/RESTRICTED_DIRS \
/DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/SAFE_DIRS \
/DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/BRIDGE_LIST \
/DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/DS_TMP_DIR \
/DS_DRIVER_ACTION_DATA/IMAGE/PATH \
/DS_DRIVER_ACTION_DATA/IMAGE/TEMPLATE/MD5 \
/DS_DRIVER_ACTION_DATA/IMAGE/TEMPLATE/SHA1 \
/DS_DRIVER_ACTION_DATA/IMAGE/TYPE \
/DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/NO_DECOMPRESS \
/DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/LIMIT_TRANSFER_BW)
BASE_PATH="${XPATH_ELEMENTS[j++]}"
DS_ID="${XPATH_ELEMENTS[j++]}"
RESTRICTED_DIRS="${XPATH_ELEMENTS[j++]}"
SAFE_DIRS="${XPATH_ELEMENTS[j++]}"
BRIDGE_LIST="${XPATH_ELEMENTS[j++]}"
TMP_DIR="${XPATH_ELEMENTS[j++]:-$DS_TMP_DIR}"
SRC="${XPATH_ELEMENTS[j++]}"
MD5="${XPATH_ELEMENTS[j++]}"
SHA1="${XPATH_ELEMENTS[j++]}"
IMAGE_TYPE="${XPATH_ELEMENTS[j++]}"
NO_DECOMPRESS="${XPATH_ELEMENTS[j++]}"
LIMIT_TRANSFER_BW="${XPATH_ELEMENTS[j++]}"
# ------------------------------------------------------------------------------
# Set up datastore & transfer folder
# ------------------------------------------------------------------------------
#
# DST is the final generated image SOURCE, e.g. /vmfs/volumes/104/834efd1/
# DST_FOLDER is the image folder name, e.g. 834efd1
# DST_HOST is the host to make the transfers (from BRIDGE_LIST)
# TMP_FOLDER tmp folder to download images, e.g. /var/tmp/834efd1/
# ------------------------------------------------------------------------------
DST=`generate_image_path`
DST_FOLDER=`basename $DST`
DST_HOST=`get_destination_host $ID`
if [ -z "$DST_HOST" ]; then
error_message "Datastore template missing 'BRIDGE_LIST' attribute."
exit -1
fi
set_up_datastore "$BASE_PATH" "$RESTRICTED_DIRS" "$SAFE_DIRS"
TMP_FOLDER="$TMP_DIR/$DST_FOLDER"
if [ ! -d $TMP_DIR ]; then
mkdir -p $TMP_DIR
fi
# ------------------------------------------------------------------------------
# Download Image to front-end
# ------------------------------------------------------------------------------
DOWNLOADER_ARGS=`set_downloader_args "$MD5" "$SHA1" "$NO_DECOMPRESS" "$LIMIT_TRANSFER_BW" "$SRC" "$TMP_FOLDER"`
COPY_COMMAND="$UTILS_PATH/downloader.sh $DOWNLOADER_ARGS"
case $SRC in
http://*|https://* )
log "Downloading $SRC to the image repository"
exec_and_log "$COPY_COMMAND" "Error copying $SRC to $TMP_FOLDER"
SRC="$TMP_FOLDER"
;;
*)
if [ `check_restricted $SRC` -eq 1 ]; then
log_error "Not allowed to copy images from $RESTRICTED_DIRS"
error_message "Not allowed to copy image file $SRC"
exit -1
fi
if is_cdrom; then
log "Copying local CD-ROM $SRC to the image repository"
elif [ -d $SRC ]; then
log "Copying local disk folder $SRC to the image repository"
else
exec_and_log "$COPY_COMMAND" "Error copying $SRC to $TMP_FOLDER"
SRC="$TMP_FOLDER"
fi
;;
esac
# ------------------------------------------------------------------------------
# Make the final hop, front-end -> VMFS Datastore
# ------------------------------------------------------------------------------
if [ -d "$SRC" -a ! -f "$SRC/disk.vmdk" ]; then
BASE_DISK_FILE=`ls $SRC | grep '\.vmdk$' | grep -v '\-\(flat\|delta\|s[0-9]*\)\.vmdk$'`
exec_and_log "mv -f $SRC/$BASE_DISK_FILE $SRC/disk.vmdk" \
"Error renaming file $SRC/$BASE_DISK_FILE to $SRC/disk.vmdk"
fi
if ! is_cdrom; then
exec_and_log "ssh_make_path $DST_HOST $DST" \
"Cannot create $DST in $DST_HOST"
exec_and_log "$SCP -r $SRC/* $DST_HOST:$DST" \
"Error copying $SRC to $DST through SCP"
else
exec_and_log "$SCP $SRC $DST_HOST:$DST" \
"Error copying $SRC to $DST through SCP"
fi
if [ -d "$TMP_FOLDER" -a -n "$DST_FOLDER" ]; then
rm -rf "$TMP_FOLDER" > /dev/null 2>&1
fi
# ------------------------------------------------------------------------------
# Send SOURCE to OpenNebula core
# ------------------------------------------------------------------------------
echo "$DST"
-123
View File
@@ -1,123 +0,0 @@
#!/bin/bash
# -------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
#--------------------------------------------------------------------------- #
# ------------------------------------------------------------------------------
# Set up Environment and transfer arguments
# ------------------------------------------------------------------------------
#
# vmfs.conf: includes default TMP_DIR
# libfs.sh a& scripts_common.sh: includes tools and lib calls
# ------------------------------------------------------------------------------
if [ -z "${ONE_LOCATION}" ]; then
LIB_LOCATION=/usr/lib/one
VMWARERC=/etc/one/vmwarerc
else
LIB_LOCATION=$ONE_LOCATION/lib
VMWARERC=$ONE_LOCATION/etc/vmwarerc
fi
. $LIB_LOCATION/sh/scripts_common.sh
DRIVER_PATH=$(dirname $0)
source ${DRIVER_PATH}/../libfs.sh
source ${DRIVER_PATH}/vmfs.conf
# -------- Get mkfs and datastore arguments from OpenNebula core ------------
DRV_ACTION=$1
ID=$2
XPATH="${DRIVER_PATH}/../xpath.rb -b $DRV_ACTION"
unset i j XPATH_ELEMENTS
while IFS= read -r -d '' element; do
XPATH_ELEMENTS[i++]="$element"
done < <($XPATH /DS_DRIVER_ACTION_DATA/DATASTORE/BASE_PATH \
/DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/RESTRICTED_DIRS \
/DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/SAFE_DIRS \
/DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/BRIDGE_LIST \
/DS_DRIVER_ACTION_DATA/DATASTORE/ID \
/DS_DRIVER_ACTION_DATA/IMAGE/FSTYPE \
/DS_DRIVER_ACTION_DATA/IMAGE/SIZE)
BASE_PATH="${XPATH_ELEMENTS[j++]}"
RESTRICTED_DIRS="${XPATH_ELEMENTS[j++]}"
SAFE_DIRS="${XPATH_ELEMENTS[j++]}"
BRIDGE_LIST="${XPATH_ELEMENTS[j++]}"
DS_ID="${XPATH_ELEMENTS[j++]}"
FSTYPE="${XPATH_ELEMENTS[j++]}"
SIZE="${XPATH_ELEMENTS[j++]}"
# ------------------------------------------------------------------------------
# Set up datastore
# ------------------------------------------------------------------------------
#
# DST is the final generated image SOURCE, e.g. /vmfs/volumes/104/834efd1/
# DST_FOLDER is the image folder name, e.g. 834efd1
# DST_HOST is the host to make the transfers (from BRIDGE_LIST)
# ------------------------------------------------------------------------------
DST=`generate_image_path`
DST_FOLDER=`basename $DST`
DST_HOST=`get_destination_host $ID`
if [ -z "$DST_HOST" ]; then
error_message "Datastore template missing 'BRIDGE_LIST' attribute."
exit -1
fi
set_up_datastore "$BASE_PATH" "$RESTRICTED_DIRS" "$SAFE_DIRS"
# ------------------------------------------------------------------------------
# Create image folder and set image size and attributes
# ------------------------------------------------------------------------------
exec_and_log "ssh_make_path $DST_HOST $DST" "Cannot create $DST in $DST_HOST"
IMAGE_FORMAT=vmdk
VMWARE_DISK_TYPE=`echo $FSTYPE|cut -d'_' -f 2`
echo "$VMWARE_DISK_TYPE" | \
grep '\<thin\>\|\<zeroedthic\>\|\<eagerzeroedthick\>' 2>&1 /dev/null
if [ $? -eq 1 ] ; then
VMWARE_DISK_TYPE="thin"
fi
# ------------------------------------------------------------------------------
# Create the image within the datastore
# ------------------------------------------------------------------------------
if [ "$FSTYPE" = "save_as" ]; then
echo "$DST"
exit 0
fi
log "Making raw filesystem of ${SIZE}M at $DST on $DST_HOST"
ssh_exec_and_log $DST_HOST \
"$VMKFSTOOLS -c ${SIZE}M -d ${VMWARE_DISK_TYPE} $DST/disk.vmdk" \
"Cannot create $DST/disk.vmdk on $DST_HOST"
# ------------------------------------------------------------------------------
# Send SOURCE to OpenNebula core
# ------------------------------------------------------------------------------
echo "$DST"
-86
View File
@@ -1,86 +0,0 @@
#!/bin/bash
# -------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
#--------------------------------------------------------------------------- #
###############################################################################
# This script is used to monitor the free and used space of a datastore
###############################################################################
# -------- Set up the environment to source common tools & conf ------------
if [ -z "${ONE_LOCATION}" ]; then
LIB_LOCATION=/usr/lib/one
else
LIB_LOCATION=$ONE_LOCATION/lib
fi
. $LIB_LOCATION/sh/scripts_common.sh
DRIVER_PATH=$(dirname $0)
source ${DRIVER_PATH}/../libfs.sh
# -------- Get datastore arguments from OpenNebula core ------------
DRV_ACTION=$1
ID=$2
XPATH="${DRIVER_PATH}/../xpath.rb -b $DRV_ACTION"
unset i XPATH_ELEMENTS
while IFS= read -r -d '' element; do
XPATH_ELEMENTS[i++]="$element"
done < <($XPATH /DS_DRIVER_ACTION_DATA/DATASTORE/BASE_PATH \
/DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/BRIDGE_LIST)
BASE_PATH="${XPATH_ELEMENTS[0]}"
BRIDGE_LIST="${XPATH_ELEMENTS[1]}"
HOST=`get_destination_host`
if [ -z "$HOST" ]; then
error_message "Datastore template missing 'BRIDGE_LIST' attribute."
exit -1
fi
# ------------ Compute datastore usage -------------
MONITOR_SCRIPT=$(cat <<EOF
set -e
USED_MB=\$($DU -sLm ${BASE_PATH%/} 2>/dev/null | $CUT -f1)
DF_STR=\$($DF -m | grep ${BASE_PATH%/} | sed -e 's/ \+/:/g')
TOTAL_MB=\$(echo \$DF_STR | $CUT -d: -f 2)
FREE_MB=\$(echo \$DF_STR | $CUT -d: -f 4)
echo "USED_MB=\$USED_MB"
echo "TOTAL_MB=\$TOTAL_MB"
echo "FREE_MB=\$FREE_MB"
EOF
)
MONITOR_DATA=$(ssh_monitor_and_log $HOST "$MONITOR_SCRIPT" 2>&1)
MONITOR_STATUS=$?
if [ "$MONITOR_STATUS" = "0" ]; then
echo "$MONITOR_DATA" | tr ' ' '\n'
else
echo "$MONITOR_DATA"
exit $MONITOR_STATUS
fi
-87
View File
@@ -1,87 +0,0 @@
#!/bin/bash
# -------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
#--------------------------------------------------------------------------- #
# ------------------------------------------------------------------------------
# Set up Environment and transfer arguments
# ------------------------------------------------------------------------------
#
# vmfs.conf: includes default TMP_DIR
# libfs.sh a& scripts_common.sh: includes tools and lib calls
# ------------------------------------------------------------------------------
if [ -z "${ONE_LOCATION}" ]; then
LIB_LOCATION=/usr/lib/one
VMWARERC=/etc/one/vmwarerc
else
LIB_LOCATION=$ONE_LOCATION/lib
VMWARERC=$ONE_LOCATION/etc/vmwarerc
fi
. $LIB_LOCATION/sh/scripts_common.sh
DRIVER_PATH=$(dirname $0)
source ${DRIVER_PATH}/../libfs.sh
source ${DRIVER_PATH}/vmfs.conf
# -------- Get rm and datastore arguments from OpenNebula core ------------
DRV_ACTION=$1
ID=$2
XPATH="${DRIVER_PATH}/../xpath.rb -b $DRV_ACTION"
unset i j XPATH_ELEMENTS
while IFS= read -r -d '' element; do
XPATH_ELEMENTS[i++]="$element"
done < <($XPATH /DS_DRIVER_ACTION_DATA/IMAGE/SOURCE \
/DS_DRIVER_ACTION_DATA/DATASTORE/ID \
/DS_DRIVER_ACTION_DATA/DATASTORE/TEMPLATE/BRIDGE_LIST)
SRC="${XPATH_ELEMENTS[j++]}"
DS_ID="${XPATH_ELEMENTS[j++]}"
BRIDGE_LIST="${XPATH_ELEMENTS[j++]}"
# ------------------------------------------------------------------------------
# Set up datastore
# ------------------------------------------------------------------------------
#
# SRC is the image SOURCE to remove, e.g. /vmfs/volumes/104/834efd1/
# SRC_FOLDER is the image folder name, e.g. 834efd1
# DST_HOST is the host to make the transfers (from BRIDGE_LIST)
# ------------------------------------------------------------------------------
DST_HOST=`get_destination_host $ID`
if [ -z "$DST_HOST" ]; then
error_message "Datastore template missing 'BRIDGE_LIST' attribute."
exit -1
fi
SRC_FOLDER=`basename $SRC`
# ------------------------------------------------------------------------------
# Remove the image from the repository
# ------------------------------------------------------------------------------
if [ -n $SRC -a -n $DST_HOST ]; then
log "Removing $SRC from the image repository"
ssh_exec_and_log $DST_HOST "rm -rf $SRC" "Error deleting $SRC on $DST_HOST"
fi
exit 0
@@ -1 +0,0 @@
../common/not_supported.sh
@@ -1 +0,0 @@
../common/not_supported.sh
@@ -1 +0,0 @@
../common/not_supported.sh
-1
View File
@@ -1 +0,0 @@
../common/stat
-21
View File
@@ -1,21 +0,0 @@
# -------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
#--------------------------------------------------------------------------- #
# Default values in case they are not defined in the Datastore template
DS_TMP_DIR=/var/lib/one/tmp
-45
View File
@@ -1,45 +0,0 @@
#!/usr/bin/env ruby
# ---------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
# ---------------------------------------------------------------------------- #
ONE_LOCATION=ENV["ONE_LOCATION"] if !defined?(ONE_LOCATION)
if !ONE_LOCATION
RUBY_LIB_LOCATION="/usr/lib/one/ruby" if !defined?(RUBY_LIB_LOCATION)
else
RUBY_LIB_LOCATION=ONE_LOCATION+"/lib/ruby" if !defined?(RUBY_LIB_LOCATION)
end
$: << "../../vmm/vmware/"
require 'vi_driver'
host = ARGV[-1]
if !host
exit -1
end
VIDriver::initialize(host)
results = VIDriver::poll_host_and_vms
if results != -1
puts results
else
exit results.to_i
end
-15
View File
@@ -340,21 +340,6 @@ function mkfs_command {
echo "$QEMU_IMG create -f qcow2 $DST ${SIZE}M"
return 0
;;
"vmdk_"*)
VMWARE_DISK_TYPE=`echo $FSTYPE|cut -d'_' -f 2`
echo "$VMWARE_DISK_TYPE" | \
grep '\<thin\>\|\<zeroedthic\>\|\<eagerzeroedthick\>' 2>&1 /dev/null
if [ $? -eq 1 ] ; then
VMWARE_DISK_TYPE="thin"
fi
echo "$VMKFSTOOLS -U $DST/disk.vmdk; \
rm -f $DST/*; \
$VMKFSTOOLS -c ${SIZE}M -d ${VMWARE_DISK_TYPE} $DST/disk.vmdk"
return 0
;;
*)
echo ""
echo "Filesystem '$FSTYPE' not valid." 1>&2
-4
View File
@@ -100,10 +100,6 @@ exec_and_set_error "$MKISOFS -o $ISO_FILE -V CONTEXT -J -R $ISO_DIR" \
exec_and_set_error "$SCP $ISO_FILE $DST" "Error copying context ISO to $DST"
[ -n "$ERROR" ] && exit_error
# Creates symbolic link to add a .iso suffix, needed for VMware CDROMs
DST_FILE=${DST_PATH##*/}
ssh_exec_and_log $DST_HOST "cd $DST_DIR && $LN -sf $DST_FILE $DST_FILE.iso" "Error creating ISO symbolic link"
rm -rf $ISO_DIR > /dev/null 2>&1
exit 0
-99
View File
@@ -1,99 +0,0 @@
#!/bin/bash
# -------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
#--------------------------------------------------------------------------- #
# clone fe:SOURCE host:remote_system_ds/disk.i vmid dsid
# - fe is the front-end hostname
# - SOURCE is the path of the disk image in the form DS_BASE_PATH/disk
# - host is the target host to deploy the VM
# - remote_system_ds is the path for the system datastore in the host
# - vmid is the id of the VM
# - dsid is the target datastore (0 is the system datastore)
SRC=$1
DST=$2
VMID=$3
DSID=$4
if [ -z "${ONE_LOCATION}" ]; then
TMCOMMON=/var/lib/one/remotes/tm/tm_common.sh
VMWARERC=/etc/one/vmwarerc
else
TMCOMMON=$ONE_LOCATION/var/remotes/tm/tm_common.sh
VMWARERC=$ONE_LOCATION/etc/vmwarerc
fi
. $TMCOMMON
#-------------------------------------------------------------------------------
# Retrieve needed information, Example (same for SRC)
# DST : esx1:/vmfs/volumes/105/90/disk.0
# SRC : one:/vmfs/volumes/104/84045f4a
# DST_PATH : /vmfs/volumes/105/90/disk.0
# DST_DIR : /vmfs/volumes/105/90/
# DST_HOST : esx1
#
# DISK_TYPE: CDROM if it is a cd (not a directory)
#-------------------------------------------------------------------------------
SRC_PATH=`arg_path $SRC`
DST_PATH=`arg_path $DST`
DST_HOST=`arg_host $DST`
DST_DIR=`dirname $DST_PATH`
DISK_TYPE=$(disk_type)
#-------------------------------------------------------------------------------
# Clone (cp) SRC into DST
#-------------------------------------------------------------------------------
log "Cloning $SRC in $DST"
CLONESCRIPT=$(cat <<EOF
cd $DST_DIR
export PATH=/usr/sbin:/sbin:\$PATH
if [ "$DISK_TYPE" != "CDROM" ]; then
if [ ! -d $DST_PATH ]; then
mkdir -p $DST_PATH
fi
$VMKFSTOOLS -U $DST_PATH/disk.vmdk
rm -f $DST_PATH/*
$VMKFSTOOLS -i $SRC_PATH/disk.vmdk -d thin $DST_PATH/disk.vmdk
else
if [ ! -d $DST_DIR ]; then
mkdir -p $DST_DIR
fi
rm -f $DST_PATH
cp $SRC_PATH $DST_PATH
rm -f $DST_PATH.iso
ln -s $DST_PATH $DST_PATH.iso
fi
EOF
)
ssh_exec_and_log $DST_HOST "$CLONESCRIPT" "Error cloning $SRC to $DST"
exit 0
-1
View File
@@ -1 +0,0 @@
../common/context
-1
View File
@@ -1 +0,0 @@
mvds
-60
View File
@@ -1,60 +0,0 @@
#!/bin/bash
# -------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
#--------------------------------------------------------------------------- #
# DELETE <host:remote_system_ds/disk.i|host:remote_system_ds/> vmid dsid
# - host is the target host to deploy the VM
# - remote_system_ds is the path for the system datastore in the host
# - vmid is the id of the VM
# - dsid is the target datastore
DST=$1
VMID=$2
if [ -z "${ONE_LOCATION}" ]; then
TMCOMMON=/var/lib/one/remotes/tm/tm_common.sh
VMWARERC=/etc/one/vmwarerc
else
TMCOMMON=$ONE_LOCATION/var/remotes/tm/tm_common.sh
VMWARERC=$ONE_LOCATION/etc/vmwarerc
fi
. $TMCOMMON
#-------------------------------------------------------------------------------
# Retrieve needed information
# DST : esx1:/vmfs/volumes/105/90/disk.0
# DST_PATH : /vmfs/volumes/105/90/disk.0
# DST_HOST : esx1
# DSID : 105
#-------------------------------------------------------------------------------
DST_PATH=`arg_path $DST`
DST_HOST=`arg_host $DST`
#-------------------------------------------------------------------------------
# Return if deleting a disk, we will delete them when removing the
# remote_system_ds directory for the VM (remotely)
#-------------------------------------------------------------------------------
if [ `is_disk $DST_PATH` -eq 1 ]; then
exit 0
else
ssh_exec_and_log $DST_HOST "rm -rf $DST_PATH" "Error deleting $DST_PATH"
fi
exit 0
-1
View File
@@ -1 +0,0 @@
../common/failmigrate
-95
View File
@@ -1,95 +0,0 @@
#!/bin/bash
# -------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
#--------------------------------------------------------------------------- #
# ln fe:SOURCE host:remote_system_ds/disk.i vmid dsid
# - fe is the front-end hostname
# - SOURCE is the path of the disk image in the form DS_BASE_PATH/disk
# - host is the target host to deploy the VM
# - remote_system_ds is the path for the system datastore in the host
# - vmid is the id of the VM
# - dsid is the target datastore (0 is the system datastore)
SRC=$1
DST=$2
VMID=$3
DSID=$4
if [ -z "${ONE_LOCATION}" ]; then
TMCOMMON=/var/lib/one/remotes/tm/tm_common.sh
else
TMCOMMON=$ONE_LOCATION/var/remotes/tm/tm_common.sh
fi
. $TMCOMMON
#-v ------------------------------------------------------------------------------
# Retrieve needed information, Example (same for SRC)
# DST : esx1:/vmfs/volumes/105/90/disk.0
# SRC : one:/vmfs/volumes/104/84045f4a
# DST_PATH : /vmfs/volumes/105/90/disk.0
# DST_DIR : /vmfs/volumes/105/90/
# DST_HOST : esx1
#
# DISK_TYPE: CDROM if it is a cd (not a directory)
#-------------------------------------------------------------------------------
SRC_PATH=`arg_path $SRC`
DST_PATH=`arg_path $DST`
DST_HOST=`arg_host $DST`
DST_DIR=`dirname $DST_PATH`
DISK_TYPE=$(disk_type)
#-------------------------------------------------------------------------------
# Link (ln) SRC into DST
#-------------------------------------------------------------------------------
if [ "$DISK_TYPE" != "CDROM" ]; then
log "Link all files in $SRC_PATH to $DST_PATH"
LINK_SCRIPT=$(cat <<EOF
if [ ! -d $DST_PATH ]; then
mkdir -p $DST_PATH
fi
for file in \$(find $SRC_PATH -type f); do
(cd $DST_PATH ; ln -sf \$file)
done
EOF
)
ssh_exec_and_log $DST_HOST "$LINK_SCRIPT" \
"Error linking files from $SRC_PATH to $DST_PATH"
else
log "Link CD-ROM from $SRC_PATH to $DST_PATH"
LINK_SCRIPT=$(cat <<EOF
if [ ! -d $DST_DIR ]; then
mkdir -p $DST_DIR
fi
rm -f $DST_PATH.iso
ln -s $SRC_PATH $DST_PATH.iso
EOF
)
ssh_exec_and_log $DST_HOST "$LINK_SCRIPT" \
"Error linking CDROM ISO file from $SRC_PATH to $DST_PATH"
fi
exit 0
-75
View File
@@ -1,75 +0,0 @@
#!/bin/bash
# -------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
#--------------------------------------------------------------------------- #
# mkimage size format host:remote_system_ds/disk.i vmid dsid
# - size in MB of the image
# - format for the image
# - host is the target host to deploy the VM
# - remote_system_ds is the path for the system datastore in the host
# - vmid is the id of the VM
# - dsid is the target datastore (0 is the system datastore)
SIZE=$1
FSTYPE=$2
DST=$3
VMID=$4
DSID=$5
if [ -z "${ONE_LOCATION}" ]; then
TMCOMMON=/var/lib/one/remotes/tm/tm_common.sh
VMWARERC=/etc/one/vmwarerc
else
TMCOMMON=$ONE_LOCATION/var/remotes/tm/tm_common.sh
VMWARERC=$ONE_LOCATION/etc/vmwarerc
fi
. $TMCOMMON
#-------------------------------------------------------------------------------
# Retrieve needed information
# DST : esx1:/vmfs/volumes/105/90/disk.0
# DST_PATH : /vmfs/volumes/105/90/disk.0
# DST_HOST : esx1
#-------------------------------------------------------------------------------
DST_PATH=`arg_path $DST`
DST_HOST=`arg_host $DST`
#-------------------------------------------------------------------------------
# Make the new image (file-based)
#-------------------------------------------------------------------------------
log "Making filesystem of ${SIZE}M and type $FSTYPE at $DST"
MKFS_CMD=`mkfs_command $DST_PATH $FSTYPE $SIZE`
MKSCRIPT=$(cat <<EOF
export PATH=/usr/sbin:/sbin:\$PATH
if [ ! -d $DST_PATH ]; then
mkdir -p $DST_PATH
fi
$MKFS_CMD
EOF
)
ssh_exec_and_log $DST_HOST "$MKSCRIPT" "Could not create image $DST_PATH"
exit 0
-1
View File
@@ -1 +0,0 @@
../dummy/mkswap
-1
View File
@@ -1 +0,0 @@
../shared/mv
-19
View File
@@ -1,19 +0,0 @@
#!/bin/bash
# -------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
#--------------------------------------------------------------------------- #
exit 0
-1
View File
@@ -1 +0,0 @@
../common/postmigrate
-1
View File
@@ -1 +0,0 @@
../common/premigrate
-1
View File
@@ -1 +0,0 @@
../common/not_supported.sh
-1
View File
@@ -1 +0,0 @@
../common/not_supported.sh
-1
View File
@@ -1 +0,0 @@
../common/not_supported.sh
-1
View File
@@ -1 +0,0 @@
../common/not_supported.sh
-6
View File
@@ -660,12 +660,6 @@ class ExecDriver < VirtualMachineDriver
action = VmmAction.new(self, id, :attach_disk, drv_message)
# Bug #1355, argument character limitation in ESX
# Message not used in vmware anyway
if @hypervisor == "vmware"
drv_message = "drv_message"
end
steps = [
# Perform a PROLOG on the disk
{
-30
View File
@@ -1,30 +0,0 @@
# ---------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
# ---------------------------------------------------------------------------- #
# Default configuration attributes for the VMware driver
# (all domains will use these values as defaults)
# Valid atributes:
# - vcpu
# - os[arch]
# - disk[driver]
# - nic[model]
# - raw
#VCPU = 1
OS = [ ARCH = i686 ]
#DISK = [ DRIVER = file ]
-43
View File
@@ -1,43 +0,0 @@
#!/bin/sh
# -------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
#--------------------------------------------------------------------------- #
source $(dirname $0)/scripts_common_sh.sh
DEPLOYID="$1"
SOURCE="$2"
TARGET="$3"
TARGET_NUMBER="$4"
CONTROLLER_NUMBER=0 # Only one controller at the moment (up to 16 devices)
DISK_NAME=`basename $SOURCE`
TEMP_PATH=`dirname $SOURCE`
VM_ID=`basename $TEMP_PATH`
TEMP_PATH=`dirname $TEMP_PATH`
DATASTORE=`basename $TEMP_PATH`
DISK_PATH="/vmfs/volumes/$DATASTORE/$VM_ID/$DISK_NAME/disk.vmdk"
# Get the VMware ID corresponding to the deploy_id
VMWAREID=`$SUDO vim-cmd vmsvc/getallvms|grep $DEPLOYID|cut -d' ' -f 1`
ATTACH_PARAMS="$VMWAREID $DISK_PATH $CONTROLLER_NUMBER $TARGET_NUMBER $DATASTORE"
exec_and_log "$SUDO vim-cmd vmsvc/device.diskaddexisting $ATTACH_PARAMS" \
"Could not attach $SOURCE ($TARGET) to $DEPLOYID"
-42
View File
@@ -1,42 +0,0 @@
#!/usr/bin/env ruby
# -------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
#--------------------------------------------------------------------------- #
ONE_LOCATION=ENV["ONE_LOCATION"] if !defined?(ONE_LOCATION)
if !ONE_LOCATION
RUBY_LIB_LOCATION="/usr/lib/one/ruby" if !defined?(RUBY_LIB_LOCATION)
else
RUBY_LIB_LOCATION=ONE_LOCATION+"/lib/ruby" if !defined?(RUBY_LIB_LOCATION)
end
$: << RUBY_LIB_LOCATION
$: << File.dirname(__FILE__)
require 'vi_driver'
deploy_id = ARGV[0]
mac = ARGV[1]
bridge = ARGV[2]
model = ARGV[3]
host = ARGV[6]
VIDriver::initialize(host, false)
vivm = VIDriver::VIVm.new(deploy_id, nil)
puts vivm.attach_nic(bridge, mac, model)
-37
View File
@@ -1,37 +0,0 @@
#!/usr/bin/env ruby
# ---------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
# ---------------------------------------------------------------------------- #
ONE_LOCATION=ENV["ONE_LOCATION"] if !defined?(ONE_LOCATION)
if !ONE_LOCATION
RUBY_LIB_LOCATION="/usr/lib/one/ruby" if !defined?(RUBY_LIB_LOCATION)
else
RUBY_LIB_LOCATION=ONE_LOCATION+"/lib/ruby" if !defined?(RUBY_LIB_LOCATION)
end
$: << RUBY_LIB_LOCATION
$: << File.dirname(__FILE__)
require 'vmware_driver'
deploy_id = ARGV[0]
host = ARGV[1]
vmware_drv = VMwareDriver.new(host)
vmware_drv.cancel(deploy_id)
-1
View File
@@ -1 +0,0 @@
<domainsnapshot><name>checkpoint</name></domainsnapshot>
-40
View File
@@ -1,40 +0,0 @@
#!/usr/bin/env ruby
# ---------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
# ---------------------------------------------------------------------------- #
ONE_LOCATION=ENV["ONE_LOCATION"] if !defined?(ONE_LOCATION)
if !ONE_LOCATION
RUBY_LIB_LOCATION="/usr/lib/one/ruby" if !defined?(RUBY_LIB_LOCATION)
else
RUBY_LIB_LOCATION=ONE_LOCATION+"/lib/ruby" if !defined?(RUBY_LIB_LOCATION)
end
$: << RUBY_LIB_LOCATION
$: << File.dirname(__FILE__)
require 'vmware_driver'
dfile = ARGV[0]
host = ARGV[1]
id = ARGV[2]
vmware_drv = VMwareDriver.new(host)
puts vmware_drv.deploy(dfile, id)
exit 0
-34
View File
@@ -1,34 +0,0 @@
#!/bin/sh
# -------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
#--------------------------------------------------------------------------- #
source $(dirname $0)/scripts_common_sh.sh
DEPLOYID="$1"
IMAGE_PATH="$2"
UNIT="$3"
UNIT_NUMBER="$4"
CONTROLLER_NUMBER=0 # Only one controller at the moment (up to 16 devices)
# Get the VMware ID corresponding to the deploy_id
VMWAREID=`$SUDO vim-cmd vmsvc/getallvms|grep $DEPLOYID|cut -d' ' -f 1`
DETACH_PARAMS="$VMWAREID $CONTROLLER_NUMBER $UNIT_NUMBER $IMAGE_PATH"
exec_and_log "$SUDO vim-cmd vmsvc/device.diskremove $DETACH_PARAMS" \
"Could not detach $TARGET from $DEPLOYID"
-41
View File
@@ -1,41 +0,0 @@
#!/usr/bin/env ruby
# -------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
#--------------------------------------------------------------------------- #
ONE_LOCATION=ENV["ONE_LOCATION"] if !defined?(ONE_LOCATION)
if !ONE_LOCATION
RUBY_LIB_LOCATION="/usr/lib/one/ruby" if !defined?(RUBY_LIB_LOCATION)
else
RUBY_LIB_LOCATION=ONE_LOCATION+"/lib/ruby" if !defined?(RUBY_LIB_LOCATION)
end
$: << RUBY_LIB_LOCATION
$: << File.dirname(__FILE__)
require 'vi_driver'
deploy_id = ARGV[0]
mac = ARGV[1]
host = ARGV[3]
VIDriver::initialize(host, false)
vivm = VIDriver::VIVm.new(deploy_id, nil)
puts vivm.detach_nic(mac)
-38
View File
@@ -1,38 +0,0 @@
#!/usr/bin/env ruby
# ---------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
# ---------------------------------------------------------------------------- #
ONE_LOCATION=ENV["ONE_LOCATION"] if !defined?(ONE_LOCATION)
if !ONE_LOCATION
RUBY_LIB_LOCATION="/usr/lib/one/ruby" if !defined?(RUBY_LIB_LOCATION)
else
RUBY_LIB_LOCATION=ONE_LOCATION+"/lib/ruby" if !defined?(RUBY_LIB_LOCATION)
end
$: << RUBY_LIB_LOCATION
$: << File.dirname(__FILE__)
require 'vmware_driver'
deploy_id = ARGV[0]
dst_host = ARGV[1]
src_host = ARGV[2]
vmware_drv = VMwareDriver.new(src_host)
vmware_drv.migrate(deploy_id, dst_host, src_host)
-38
View File
@@ -1,38 +0,0 @@
#!/usr/bin/env ruby
# ---------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
# ---------------------------------------------------------------------------- #
ONE_LOCATION=ENV["ONE_LOCATION"] if !defined?(ONE_LOCATION)
if !ONE_LOCATION
RUBY_LIB_LOCATION="/usr/lib/one/ruby" if !defined?(RUBY_LIB_LOCATION)
else
RUBY_LIB_LOCATION=ONE_LOCATION+"/lib/ruby" if !defined?(RUBY_LIB_LOCATION)
end
$: << RUBY_LIB_LOCATION
$: << File.dirname(__FILE__)
require 'vi_driver'
deploy_id = ARGV[0]
host = ARGV[1]
VIDriver::initialize(host)
puts VIDriver::poll_vm(deploy_id)
-37
View File
@@ -1,37 +0,0 @@
#!/usr/bin/env ruby
# ---------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
# ---------------------------------------------------------------------------- #
ONE_LOCATION=ENV["ONE_LOCATION"] if !defined?(ONE_LOCATION)
if !ONE_LOCATION
RUBY_LIB_LOCATION="/usr/lib/one/ruby" if !defined?(RUBY_LIB_LOCATION)
else
RUBY_LIB_LOCATION=ONE_LOCATION+"/lib/ruby" if !defined?(RUBY_LIB_LOCATION)
end
$: << RUBY_LIB_LOCATION
$: << File.dirname(__FILE__)
require 'vmware_driver'
deploy_id = ARGV[0]
host = ARGV[1]
vmware_drv = VMwareDriver.new(host)
vmware_drv.reboot(deploy_id)
-43
View File
@@ -1,43 +0,0 @@
#!/usr/bin/env ruby
# ---------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
# ---------------------------------------------------------------------------- #
ONE_LOCATION=ENV["ONE_LOCATION"] if !defined?(ONE_LOCATION)
if !ONE_LOCATION
RUBY_LIB_LOCATION="/usr/lib/one/ruby" if !defined?(RUBY_LIB_LOCATION)
else
RUBY_LIB_LOCATION=ONE_LOCATION+"/lib/ruby" if !defined?(RUBY_LIB_LOCATION)
end
$: << RUBY_LIB_LOCATION
$: << File.dirname(__FILE__)
require 'vi_driver'
deploy_id = ARGV[0]
host = ARGV[1]
begin
VIDriver::initialize(host, false)
vivm = VIDriver::VIVm.new(deploy_id, nil)
vivm.reset
rescue Exception => e
STDERR.puts "Reset of VM #{deploy_id} on host #{host} failed " +
"due to \"#{e.message}\""
exit -1
end
-37
View File
@@ -1,37 +0,0 @@
#!/usr/bin/env ruby
# ---------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
# ---------------------------------------------------------------------------- #
ONE_LOCATION=ENV["ONE_LOCATION"] if !defined?(ONE_LOCATION)
if !ONE_LOCATION
RUBY_LIB_LOCATION="/usr/lib/one/ruby" if !defined?(RUBY_LIB_LOCATION)
else
RUBY_LIB_LOCATION=ONE_LOCATION+"/lib/ruby" if !defined?(RUBY_LIB_LOCATION)
end
$: << RUBY_LIB_LOCATION
$: << File.dirname(__FILE__)
require 'vmware_driver'
checkpoint_file = ARGV[0]
host = ARGV[1]
vmware_drv = VMwareDriver.new(host)
vmware_drv.restore(checkpoint_file)
-38
View File
@@ -1,38 +0,0 @@
#!/usr/bin/env ruby
# ---------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
# ---------------------------------------------------------------------------- #
ONE_LOCATION=ENV["ONE_LOCATION"] if !defined?(ONE_LOCATION)
if !ONE_LOCATION
RUBY_LIB_LOCATION="/usr/lib/one/ruby" if !defined?(RUBY_LIB_LOCATION)
else
RUBY_LIB_LOCATION=ONE_LOCATION+"/lib/ruby" if !defined?(RUBY_LIB_LOCATION)
end
$: << RUBY_LIB_LOCATION
$: << File.dirname(__FILE__)
require 'vmware_driver'
deploy_id = ARGV[0]
file = ARGV[1]
host = ARGV[2]
vmware_drv = VMwareDriver.new(host)
vmware_drv.save(deploy_id)
@@ -1,59 +0,0 @@
# -------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
#--------------------------------------------------------------------------- #
error_message()
{
(
echo "ERROR MESSAGE --8<------"
echo "$1"
echo "ERROR MESSAGE ------>8--"
) 1>&2
}
log_function()
{
echo "$1: $SCRIPT_NAME: $2" 1>&2
}
log_error()
{
log_function "ERROR" "$1"
}
exec_and_log()
{
message=$2
EXEC_LOG_ERR=`$1 2>&1 1>/dev/null`
EXEC_LOG_RC=$?
if [ $EXEC_LOG_RC -ne 0 ]; then
log_error "Command \"$1\" failed: $EXEC_LOG_ERR"
if [ -n "$2" ]; then
error_message "$2"
else
error_message "Error executing $1: $EXEC_LOG_ERR"
fi
exit $EXEC_LOG_RC
fi
}
WHICH_SUDO=`which sudo`
if [ ! -z "$WHICH_SUDO" -a -f "$WHICH_SUDO" ]; then
SUDO="sudo "
fi
-57
View File
@@ -1,57 +0,0 @@
#!/usr/bin/env ruby
# ---------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
# ---------------------------------------------------------------------------- #
ONE_LOCATION=ENV["ONE_LOCATION"] if !defined?(ONE_LOCATION)
if !ONE_LOCATION
RUBY_LIB_LOCATION="/usr/lib/one/ruby" if !defined?(RUBY_LIB_LOCATION)
else
RUBY_LIB_LOCATION=ONE_LOCATION+"/lib/ruby" if !defined?(RUBY_LIB_LOCATION)
end
$: << RUBY_LIB_LOCATION
$: << File.dirname(__FILE__)
require 'vmware_driver'
require 'vi_driver'
#------------------------------------------------------------------------------
# Wait the VM to shutdown TIMEOUT (xPOLL_INTERVAL) seconds.
# Set to ~10min
#------------------------------------------------------------------------------
POLL_INTERVAL=2
TIMEOUT=300
deploy_id = ARGV[0]
host = ARGV[1]
VIDriver::initialize(host)
vmware_drv = VMwareDriver.new(host)
vmware_drv.shutdown(deploy_id)
count=0
while (VIDriver::poll_vm(deploy_id).match(/STATE=(.*)/)[1] != "d") do
sleep POLL_INTERVAL
if count > TIMEOUT then
OpenNebula.log_debug("Timeout reached and VM #{deploy_id} is still alive.")
exit -1
end
count+=POLL_INTERVAL
end
@@ -1,40 +0,0 @@
#!/usr/bin/env ruby
# ---------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
# ---------------------------------------------------------------------------- #
ONE_LOCATION=ENV["ONE_LOCATION"] if !defined?(ONE_LOCATION)
if !ONE_LOCATION
RUBY_LIB_LOCATION="/usr/lib/one/ruby" if !defined?(RUBY_LIB_LOCATION)
else
RUBY_LIB_LOCATION=ONE_LOCATION+"/lib/ruby" if !defined?(RUBY_LIB_LOCATION)
end
$: << RUBY_LIB_LOCATION
$: << File.dirname(__FILE__)
require 'vmware_driver'
deploy_id = ARGV[0]
host = ARGV[3]
vmware_drv = VMwareDriver.new(host)
hypervisor_id = vmware_drv.snapshot_create(deploy_id)
puts hypervisor_id
exit 0
@@ -1,38 +0,0 @@
#!/usr/bin/env ruby
# ---------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
# ---------------------------------------------------------------------------- #
ONE_LOCATION=ENV["ONE_LOCATION"] if !defined?(ONE_LOCATION)
if !ONE_LOCATION
RUBY_LIB_LOCATION="/usr/lib/one/ruby" if !defined?(RUBY_LIB_LOCATION)
else
RUBY_LIB_LOCATION=ONE_LOCATION+"/lib/ruby" if !defined?(RUBY_LIB_LOCATION)
end
$: << RUBY_LIB_LOCATION
$: << File.dirname(__FILE__)
require 'vmware_driver'
deploy_id = ARGV[0]
snapshot_id = ARGV[1]
host = ARGV[3]
vmware_drv = VMwareDriver.new(host)
vmware_drv.snapshot_delete(deploy_id, snapshot_id)
@@ -1,38 +0,0 @@
#!/usr/bin/env ruby
# ---------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
# ---------------------------------------------------------------------------- #
ONE_LOCATION=ENV["ONE_LOCATION"] if !defined?(ONE_LOCATION)
if !ONE_LOCATION
RUBY_LIB_LOCATION="/usr/lib/one/ruby" if !defined?(RUBY_LIB_LOCATION)
else
RUBY_LIB_LOCATION=ONE_LOCATION+"/lib/ruby" if !defined?(RUBY_LIB_LOCATION)
end
$: << RUBY_LIB_LOCATION
$: << File.dirname(__FILE__)
require 'vmware_driver'
deploy_id = ARGV[0]
snapshot_id = ARGV[1]
host = ARGV[3]
vmware_drv = VMwareDriver.new(host)
vmware_drv.snapshot_revert(deploy_id, snapshot_id)
-513
View File
@@ -1,513 +0,0 @@
# ---------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
# ---------------------------------------------------------------------------- #
# -------------------------------------------------------------------------#
# Set up the environment for the driver #
# -------------------------------------------------------------------------#
ONE_LOCATION = ENV["ONE_LOCATION"] if !defined?(ONE_LOCATION)
if !ONE_LOCATION
BIN_LOCATION = "/usr/bin" if !defined?(BIN_LOCATION)
LIB_LOCATION = "/usr/lib/one" if !defined?(LIB_LOCATION)
ETC_LOCATION = "/etc/one/" if !defined?(ETC_LOCATION)
VAR_LOCATION = "/var/lib/one" if !defined?(VAR_LOCATION)
else
BIN_LOCATION = ONE_LOCATION + "/bin" if !defined?(BIN_LOCATION)
LIB_LOCATION = ONE_LOCATION + "/lib" if !defined?(LIB_LOCATION)
ETC_LOCATION = ONE_LOCATION + "/etc/" if !defined?(ETC_LOCATION)
VAR_LOCATION = ONE_LOCATION + "/var/" if !defined?(VAR_LOCATION)
end
ENV['LANG'] = 'C'
$: << LIB_LOCATION+'/ruby/vendors/rbvmomi/lib'
require 'rbvmomi'
require 'yaml'
module VIDriver
CONF_FILE = ETC_LOCATION + "/vmwarerc"
CHECKPOINT = VAR_LOCATION + "/remotes/vmm/vmware/checkpoint"
############################################################################
# Initialize the module by creating a VI connection and setting up
# configuration attributes
# @param hostname [String] to access the VI API and interact to
# @param monitor [false, true] monitor the host on creation. Defaults true
############################################################################
def self.initialize(hostname, monitor = true )
conf = YAML::load(File.read(CONF_FILE))
if conf[:password] and !conf[:password].empty?
pass=conf[:password]
else
pass="\"\""
end
begin
@@client = RbVmomi::VIM.connect(:host => hostname,
:user => conf[:username],
:password => pass,
:insecure => true)
@@root = @@client.root
@@host = VIHost.new(hostname)
@@host.monitor if monitor
rescue Exception => e
raise "Connection error to #{hostname}: " + e.message
end
end
############################################################################
# Return the OpenNebula monitoring string for the given VM
# @param deploy_id [String] OpenNebula VM ID, e.g. "one-237"
############################################################################
def self.poll_vm(deploy_id)
begin
vm = VIVm.new(deploy_id, nil)
vm.monitor
str_info = vm.info
rescue Exception => e
str_info = "STATE=d"
STDERR.puts e.message
end
return str_info
end
############################################################################
# Return the OpenNebula monitoring string for the given host and the running
# VMs in that host
############################################################################
def self.poll_host_and_vms
begin
str_info = @@host.info
vms_info = @@host.all_vms_info
str_info << "\nVM_POLL=YES\n"
str_info << "#{vms_info}" if !vms_info.empty?
rescue Exception => e
STDERR.puts e.message
str_info = ""
end
return str_info
end
############################################################################
# The VIVm is a high level abstraction of a VI VirtualMachine class for
# OpenNebula semantics. The VIDriver::initialize MUST be called before
# instantiating this class
############################################################################
class VIVm
########################################################################
# Creates a new VIVm using its name or a RbVmomi::VirtualMachine object
# @param vmname [String] the OpenNebula vm deploy_id (e.g. "one-237")
# @param vm_vi [RbVmomi::VirtualMachine] it will be used if not nil
########################################################################
def initialize(vmname, vm_vi)
if vm_vi.nil?
@vm = VIDriver::host.vm.find { |v|
v.name == vmname
}
else
@vm = vm_vi
end
raise "Cannot find VM #{vmname}" if @vm.nil?
end
########################################################################
# Set the guest OS
########################################################################
def set_guestos(guest_os_id)
return if (guest_os_id.nil? || guest_os_id.empty? )
spec = {:guestId => guest_os_id}
@vm.ReconfigVM_Task(:spec => spec).wait_for_completion
end
########################################################################
# Set or removes a pciBridge from VM
########################################################################
def set_pcibridge(pciBridge)
num = pciBridge.to_i
return if (num == 0)
spec = []
num.times { |i|
spec << { :key => "pciBridge#{i}.present", :value => "TRUE" }
}
vmspec = RbVmomi::VIM.VirtualMachineConfigSpec(:extraConfig => spec)
@vm.ReconfigVM_Task(:spec => vmspec).wait_for_completion
end
########################################################################
#
########################################################################
def attach_nic(bridge, mac, model='default')
return if bridge.empty? || mac.empty?
card_num = 1 # start in one, we want the next avaiable id
@vm.config.hardware.device.each{ |dv|
if dv.class.ancestors[1] == RbVmomi::VIM::VirtualEthernetCard
card_num = card_num + 1
end
}
backing = RbVmomi::VIM.VirtualEthernetCardNetworkBackingInfo(
:deviceName => bridge)
device_spec = {
:key => 0,
:deviceInfo => {
:label => "net" + card_num.to_s,
:summary => bridge
},
:backing => backing,
:addressType => 'manual',
:macAddress => mac
}
device = case model.downcase
when 'pcnet32'
RbVmomi::VIM.VirtualPCNet32(device_spec)
when 'VirtualVmxnet'
RbVmomi::VIM.VirtualVmxnet(device_spec)
else # By default, assume E1000 model
RbVmomi::VIM.VirtualE1000(device_spec)
end
spec = {:deviceChange => [:operation => :add, :device => device]}
@vm.ReconfigVM_Task(:spec => spec).wait_for_completion
end
########################################################################
# Initialize the vm monitor information
########################################################################
def detach_nic(mac)
eth = @vm.config.hardware.device.find { |d|
(d.class.ancestors[1] == RbVmomi::VIM::VirtualEthernetCard) &&
(d.macAddress == mac)
}
return -1 if eth.nil?
spec = {
:deviceChange => [
:operation => :remove,
:device => eth
]
}
@vm.ReconfigVM_Task(:spec => spec).wait_for_completion
end
############################################################################
# Resets a VM
# @param deploy_id vcenter identifier of the VM
# @param hostname name of the host (equals the vCenter cluster)
############################################################################
def reset
@vm.ResetVM_Task.wait_for_completion
end
########################################################################
# Initialize the vm monitor information
########################################################################
def monitor
@summary = @vm.summary
@state = state_to_c(@summary.runtime.powerState)
if @state != 'a'
@used_cpu = 0
@used_memory = 0
@netrx = 0
@nettx = 0
return
end
@used_memory = @summary.quickStats.hostMemoryUsage * 1024
host = VIDriver::host
cpuMhz = host.cpuMhz.to_f
@used_cpu =
((@summary.quickStats.overallCpuUsage.to_f / cpuMhz) * 100).to_s
@used_cpu = sprintf('%.2f',@used_cpu).to_s
vm_stats = VIDriver::retrieve_stats([@vm],
["net.packetsRx","net.packetsTx"])
@netrx = 0
@nettx = 0
if vm_stats[@vm] && vm_stats[@vm][:metrics]
if vm_stats[@vm][:metrics]["net.packetsRx"]
@netrx = vm_stats[@vm][:metrics]["net.packetsRx"].first
end
if vm_stats[@vm][:metrics]["net.packetsTx"]
@nettx = vm_stats[@vm][:metrics]["net.packetsTx"].first
end
end
# Check for negative values
@used_memory = 0 if @used_memory.to_i < 0
@used_cpu = 0 if @used_cpu.to_i < 0
@netrx = 0 if @netrx.to_i < 0
@nettx = 0 if @nettx.to_i < 0
end
########################################################################
# Generates a OpenNebula IM Driver valid string with the monitor info
########################################################################
def info
return 'STATE=d' if @state == 'd'
str_info = ""
str_info << "STATE=" << @state << " "
str_info << "CPU=" << @used_cpu.to_s << " "
str_info << "MEMORY=" << @used_memory.to_s << " "
str_info << "NETRX=" << @netrx.to_s << " "
str_info << "NETTX=" << @nettx.to_s
end
private
########################################################################
# Converts the VI string state to OpenNebula state convention
# Guest states are:
# - poweredOff The virtual machine is currently powered off.
# - poweredOn The virtual machine is currently powered on.
# - suspended The virtual machine is currently suspended.
########################################################################
def state_to_c(state)
case state
when 'poweredOn'
'a'
when 'suspended'
'p'
when 'poweredOff'
'd'
else
'-'
end
end
end
private
############################################################################
# The VIHost is a high level abstraction of a HostSystem class for
# OpenNebula semantics. The VIDriver::initialize MUST be called before
# instantiating this class
############################################################################
class VIHost
attr_reader :host, :cpuMhz, :numCpuCores
def initialize(hostname)
@ip = Socket.getaddrinfo(hostname,nil).first[3]
raise "Cannot get host IP" if @ip.nil? || @ip.empty?
@host =VIDriver::root.findByIp @ip, RbVmomi::VIM::HostSystem
raise "Cannot find host #{hostname}" if @host.nil?
end
########################################################################
# Initialize the host monitor information
########################################################################
def monitor
summary = @host.summary
hardware = summary.hardware
stats = summary.quickStats
@cpuModel = hardware.cpuModel
@cpuMhz = hardware.cpuMhz
@total_cpu = hardware.numCpuCores*100
@used_cpu = (stats.overallCpuUsage.to_f / @cpuMhz.to_f) * 100
@used_cpu = sprintf('%.2f', @used_cpu).to_f # Trim precission
@total_memory = hardware.memorySize/1024
@used_memory = stats.overallMemoryUsage*1024
net = VIDriver::retrieve_stats([@host],
["net.packetsRx","net.packetsTx"])
@netrx = 0
@nettx = 0
if net[@host] && net[@host][:metrics]
if net[@host][:metrics]["net.packetsRx"]
@netrx = net[@host][:metrics]["net.packetsRx"].first
end
if net[@host][:metrics]["net.packetsTx"]
@nettx = net[@host][:metrics]["net.packetsTx"].first
end
end
# Check for negative values
@used_memory = 0 if @used_memory.to_i < 0
@used_cpu = 0 if @used_cpu.to_i < 0
@netrx = 0 if @netrx.to_i < 0
@nettx = 0 if @nettx.to_i < 0
# Check free datastore space
@free_ds_info = VIDriver::retrieve_free_ds(@host)
end
########################################################################
# Generates a OpenNebula IM Driver valid string with the monitor info
########################################################################
def info
str_info = ""
# CPU
str_info << "MODELNAME=\"" << @cpuModel.to_s << "\"\n"
str_info << "CPUSPEED=" << @cpuMhz.to_s << "\n"
str_info << "TOTALCPU=" << @total_cpu.to_s << "\n"
str_info << "USEDCPU=" << @used_cpu.to_s << "\n"
str_info << "FREECPU=" << (@total_cpu - @used_cpu).to_s << "\n"
# Memory
str_info << "TOTALMEMORY=" << @total_memory.to_s << "\n"
str_info << "USEDMEMORY=" << @used_memory.to_s << "\n"
str_info << "FREEMEMORY=" << (@total_memory - @used_memory).to_s << "\n"
# Networking
str_info << "NETRX=" << @netrx.to_s << "\n"
str_info << "NETTX=" << @nettx.to_s << "\n"
# Datastores
@free_ds_info.each{|k,v|
used_space = v[:capacity].to_i - v[:free_space].to_i
str_info << "DS=[ID=\"#{k}\",USED_MB=#{used_space},"
str_info << "TOTAL_MB=#{v[:capacity]},"
str_info << "FREE_MB=#{v[:free_space]}]\n"
}
str_info.strip
end
########################################################################
# Generates a OpenNebula IM Driver valid string with the monitor info
# of all VMs defined/running in the ESXi host.
########################################################################
def all_vms_info()
str_info = ""
@host.vm.each { |v|
begin
vivm = VIDriver::VIVm.new("", v)
rescue
next
end
vivm.monitor
name = v.name
number = -1
number = name.split('-').last if (name =~ /^one-\d*$/)
str_info << "VM = ["
str_info << "ID=#{number},"
str_info << "DEPLOY_ID=\"#{name}\","
str_info << "POLL=\"#{vivm.info}\"]\n"
}
return str_info
end
def vm
@host.vm
end
end
############################################################################
# Get performance values for metrics (array) of objects (array)
############################################################################
def self.retrieve_stats(objects,metrics)
perfManager = @@client.serviceContent.perfManager
metrics.each do |metric|
return if !perfManager.perfcounter_hash.member? metric
end
interval = perfManager.provider_summary(objects.first).refreshRate
start_time = nil
if interval == -1
interval = 300
start_time = Time.now - 300 * 5
end
stat_opts = {
:interval => interval,
:startTime => start_time,
}
return perfManager.retrieve_stats(objects, metrics, stat_opts)
end
def self.retrieve_free_ds(host)
pc = @@client.serviceContent.propertyCollector
hds = host.configManager.datastoreSystem
datastore_props = pc.collectMultiple(hds.datastore, 'summary', 'name')
free_ds_info=Hash.new
hds.datastore.each{|ds|
free_ds_info[datastore_props[ds]['name']]=Hash.new
free_ds_info[datastore_props[ds]['name']][:free_space] =
datastore_props[ds]['summary'].freeSpace.to_i / 1024 / 1024
free_ds_info[datastore_props[ds]['name']][:capacity] =
datastore_props[ds]['summary'].capacity.to_i / 1024 / 1024
}
free_ds_info
end
def self.root
@@root
end
def self.host
@@host
end
end
-429
View File
@@ -1,429 +0,0 @@
# ---------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
# ---------------------------------------------------------------------------- #
ONE_LOCATION=ENV["ONE_LOCATION"] if !defined?(ONE_LOCATION)
if !ONE_LOCATION
RUBY_LIB_LOCATION="/usr/lib/one/ruby" if !defined?(RUBY_LIB_LOCATION)
else
RUBY_LIB_LOCATION=ONE_LOCATION+"/lib/ruby" if !defined?(RUBY_LIB_LOCATION)
end
$: << RUBY_LIB_LOCATION
$: << File.dirname(__FILE__)
require 'vi_driver'
require "scripts_common"
require 'yaml'
require "CommandManager"
require 'rexml/document'
class VMwareDriver
# -------------------------------------------------------------------------#
# Set up the environment for the driver #
# -------------------------------------------------------------------------#
ONE_LOCATION = ENV["ONE_LOCATION"]
if !ONE_LOCATION
BIN_LOCATION = "/usr/bin"
LIB_LOCATION = "/usr/lib/one"
ETC_LOCATION = "/etc/one/"
VAR_LOCATION = "/var/lib/one"
else
LIB_LOCATION = ONE_LOCATION + "/lib"
BIN_LOCATION = ONE_LOCATION + "/bin"
ETC_LOCATION = ONE_LOCATION + "/etc/"
VAR_LOCATION = ONE_LOCATION + "/var/"
end
CONF_FILE = ETC_LOCATION + "/vmwarerc"
CHECKPOINT = VAR_LOCATION + "/remotes/vmm/vmware/checkpoint"
ENV['LANG'] = 'C'
SHUTDOWN_INTERVAL = 5
SHUTDOWN_TIMEOUT = 500
def initialize(host)
conf = YAML::load(File.read(CONF_FILE))
@uri = conf[:libvirt_uri].gsub!('@HOST@', host)
@host = host
@reserve_memory = conf[:reserve_memory_in_disk]
@user = conf[:username]
if conf[:password] and !conf[:password].empty?
@pass=conf[:password]
else
@pass="\"\""
end
@datacenter = conf[:datacenter]
@vcenter = conf[:vcenter]
end
# ######################################################################## #
# VMWARE DRIVER ACTIONS #
# ######################################################################## #
# ------------------------------------------------------------------------ #
# Deploy & define a VM based on its description file #
# ------------------------------------------------------------------------ #
def deploy(dfile, id)
# Define the domain if it is not already defined (e.g. from UNKNOWN)
if not domain_defined?(id)
deploy_id = define_domain(dfile)
exit(-1) if deploy_id.nil?
else
deploy_id = "one-#{id}"
end
OpenNebula.log_debug("Successfully defined domain #{deploy_id}.")
# Start the VM
rc, info = do_action("virsh -c #{@uri} start #{deploy_id}")
if rc == false
undefine_domain(deploy_id)
exit info
end
return deploy_id
end
# ------------------------------------------------------------------------ #
# Cancels & undefine the VM #
# ------------------------------------------------------------------------ #
def cancel(deploy_id)
rc, info = do_action("virsh -c #{@uri} --readonly dominfo #{deploy_id}")
if rc
# Destroy the VM
rc, info = do_action("virsh -c #{@uri} destroy #{deploy_id}")
exit info if rc == false
OpenNebula.log_debug("Successfully canceled domain #{deploy_id}.")
end
# Undefine the VM
undefine_domain(deploy_id)
end
# ------------------------------------------------------------------------ #
# Reboots a running VM #
# ------------------------------------------------------------------------ #
def reboot(deploy_id)
rc, info = do_action("virsh -c #{@uri} reboot #{deploy_id}")
exit info if rc == false
OpenNebula.log_debug("Domain #{deploy_id} successfully rebooted.")
end
# ------------------------------------------------------------------------ #
# Migrate #
# ------------------------------------------------------------------------ #
def migrate(deploy_id, dst_host, src_host)
src_url = "vpx://#{@vcenter}/#{@datacenter}/#{src_host}/?no_verify=1"
dst_url = "vpx://#{@vcenter}/#{@datacenter}/#{dst_host}/?no_verify=1"
mgr_cmd = "-r virsh -c #{src_url} migrate #{deploy_id} #{dst_url}"
rc, info = do_action(mgr_cmd)
exit info if rc == false
end
# ------------------------------------------------------------------------ #
# Restore a VM from a previously saved checkpoint #
# ------------------------------------------------------------------------ #
def restore(checkpoint)
begin
vm_id = File.basename(File.dirname(checkpoint))
vm_folder=VAR_LOCATION <<
"/vms/" << vm_id
dfile=`ls -1 #{vm_folder}/deployment*|tail -1`
dfile.strip!
rescue => e
OpenNebula.log_error("Cannot open checkpoint #{e.message}")
exit(-1)
end
if not domain_defined?(id)
deploy_id = define_domain(dfile)
exit(-1) if deploy_id.nil?
else
deploy_id = "one-#{id}"
end
# Revert snapshot VM
# Note: This assumes the checkpoint name is "checkpoint", to change
# this it is needed to change also [1]
#
# [1] $ONE_LOCATION/lib/remotes/vmm/vmware/checkpoint
rc = false
2.times {
rc, info = do_action(
"virsh -c #{@uri} snapshot-revert #{deploy_id} checkpoint")
break if rc == true
}
exit info if rc == false
# Delete checkpoint
rc, info = do_action(
"virsh -c #{@uri} snapshot-delete #{deploy_id} checkpoint")
OpenNebula.log_error("Could not delete snapshot") if rc == false
end
# ------------------------------------------------------------------------ #
# Saves a VM taking a snapshot #
# ------------------------------------------------------------------------ #
def save(deploy_id)
# Take a snapshot for the VM
rc, info = do_action(
"virsh -c #{@uri} snapshot-create #{deploy_id} #{CHECKPOINT}")
exit info if rc == false
# Suspend VM
rc, info = do_action("virsh -c #{@uri} suspend #{deploy_id}")
exit info if rc == false
# Undefine VM
undefine_domain(deploy_id)
end
# ------------------------------------------------------------------------ #
# Shutdown a VM #
# ------------------------------------------------------------------------ #
def shutdown(deploy_id)
rc, info = do_action("virsh -c #{@uri} shutdown #{deploy_id}")
exit info if rc == false
counter = 0
begin
rc, info = do_action("virsh -c #{@uri} list")
info = "" if rc == false
sleep SHUTDOWN_INTERVAL
counter = counter + SHUTDOWN_INTERVAL
end while info.match(deploy_id) and counter < SHUTDOWN_TIMEOUT
if counter >= SHUTDOWN_TIMEOUT
OpenNebula.error_message(
"Timeout reached, VM #{deploy_id} is still alive")
exit - 1
end
undefine_domain(deploy_id)
end
# ------------------------------------------------------------------------ #
# Creates a new system snapshot #
# ------------------------------------------------------------------------ #
def snapshot_create(deploy_id)
rc, info = do_action(
"virsh -c #{@uri} snapshot-create-as #{deploy_id}")
exit info if rc == false
hypervisor_id = info.split[2]
return hypervisor_id
end
# ------------------------------------------------------------------------ #
# Delete a system snapshot #
# ------------------------------------------------------------------------ #
def snapshot_delete(deploy_id, snapshot_id)
rc, info = do_action(
"virsh -c #{@uri} snapshot-delete #{deploy_id} #{snapshot_id}")
exit info if rc == false
end
# ------------------------------------------------------------------------ #
# Revert to a system snapshot #
# ------------------------------------------------------------------------ #
def snapshot_revert(deploy_id, snapshot_id)
action = "virsh -c #{@uri} snapshot-revert " <<
"--force #{deploy_id} #{snapshot_id}"
rc, info = do_action(action)
exit info if rc == false
end
# ######################################################################## #
# DRIVER HELPER FUNCTIONS #
# ######################################################################## #
private
#Generates an ESX command using ttyexpect
def esx_cmd(command)
cmd = "#{BIN_LOCATION}/tty_expect -u #{@user} -p #{@pass} #{command}"
end
#Performs a action usign libvirt
def do_action(cmd, log=true)
rc = LocalCommand.run(esx_cmd(cmd))
if rc.code == 0
return [true, rc.stdout]
else
err = "Error executing: #{cmd} err: #{rc.stderr} out: #{rc.stdout}"
OpenNebula.log_error(err) if log
return [false, rc.code]
end
end
#Performs a remote action using ssh
def do_ssh_action(cmd, stdin=nil)
rc = SSHCommand.run("'#{cmd}'", @host, nil, stdin)
if rc.code == 0
return [true, rc.stdout]
else
err = "Error executing: #{cmd} on host: #{@host} " <<
"err: #{rc.stderr} out: #{rc.stdout}"
OpenNebula.log_error(err)
return [false, rc.code]
end
end
# Undefines a domain in the ESX hypervisor
def undefine_domain(id)
if @vcenter and !@vcenter.empty? and @datacenter and !@datacenter.empty?
undefine_uri =
"vpx://#{@vcenter}/#{@datacenter}/#{@host}/?no_verify=1"
else
undefine_uri = @uri
end
rc = false
30.times do
rc, info = do_action("virsh -c #{undefine_uri} undefine #{id}")
break if rc
sleep 1
end
if rc == false
OpenNebula.log_error("Error undefining domain #{id}")
OpenNebula.log_error("Domain #{id} has to be undefined manually")
return rc
end
return 0
end
#defines a domain in the ESX hypervisor
def define_domain(dfile)
deploy_id = nil
rc, info = do_action("virsh -c #{@uri} define #{dfile}")
return nil if rc == false
info.split('\n').each{ |line|
mdata = line.match("Domain (.*) defined from (.*)")
if mdata
deploy_id = mdata[1]
break
end
}
deploy_id.strip!
handle_metadata(dfile, deploy_id)
return deploy_id
end
def domain_defined?(one_id)
rc, info = do_action("virsh -c #{@uri} dominfo one-#{one_id}", false)
return rc
end
def handle_metadata(dfile, deploy_id)
dfile_hash = REXML::Document.new(File.open(dfile).read)
# Check for the known elements in metadata
guestos = REXML::XPath.first(dfile_hash, "/domain/metadata/guestos")
pcibridge = REXML::XPath.first(dfile_hash, "/domain/metadata/pcibridge")
if (guestos || pcibridge)
VIDriver::initialize(@host, false)
vivm = VIDriver::VIVm.new(deploy_id, nil)
vivm.set_guestos(guestos.text) if guestos
vivm.set_pcibridge(pcibridge.text) if pcibridge
end
# Append the raw datavmx to vmx file
metadata = REXML::XPath.first(dfile_hash, "/domain/metadata/datavmx")
if metadata.nil? || metadata.text.nil? || metadata.text.strip.empty?
metadata = ''
else
metadata = metadata.text
end
if !@reserve_memory
mem_txt = REXML::XPath.first(dfile_hash, "/domain/memory").text
mem = mem_txt.to_i/1024
metadata << "\\nsched.mem.min = \"#{mem}\""
metadata << "\\nsched.mem.shares = \"normal\""
metadata << "\\nsched.mem.pin = \"TRUE\""
end
return if metadata.strip.empty?
# Get the ds_id for system_ds from the first disk
disk = REXML::XPath.first(dfile_hash, "/domain//disk/source")
source = disk.attributes['file']
ds_id = source.match(/^\[(.*)\](.*)/)[1]
name = REXML::XPath.first(dfile_hash, "/domain/name").text
vm_id = name.match(/^one-(.*)/)[1]
# Reconstruct path to vmx & add metadata
path_to_vmx = "\$(find /vmfs/volumes/#{ds_id}/#{vm_id}/"
path_to_vmx << " -name #{name}.vmx)"
metadata.gsub!("\\n","\n")
sed_str = metadata.scan(/^([^ ]+) *=/).join("|")
cmd_str = "sed -ri \"/^(#{sed_str}) *=.*$/d\" #{path_to_vmx}; "
cmd_str << "cat >> #{path_to_vmx}"
do_ssh_action(cmd_str, metadata)
end
end
-30
View File
@@ -1,30 +0,0 @@
# ---------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
# ---------------------------------------------------------------------------- #
# Libvirt congfiguration
:libvirt_uri: "'esx://@HOST@/?no_verify=1&auto_answer=1'"
# Username and password of the VMware hypervisor
:username: "oneadmin"
:password:
# VMotion configuration attributes
:datacenter: "ha-datacenter"
:vcenter:
# true to instruct ESX to create vswp files with disk reservation
# for memory, false for the vice versa
:reserve_memory_in_disk: true
-18
View File
@@ -86,24 +86,6 @@ module VNMNetwork
self
end
end
# A NIC using VMware. This class implements functions to get the physical interface
# that the NIC is using
class NicVMware < Hash
VNMNetwork::HYPERVISORS["vmware"] = self
def initialize
super(nil)
end
def get_info(vm)
end
def get_tap(vm)
self
end
end
end
end
-114
View File
@@ -1,114 +0,0 @@
# -------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
#--------------------------------------------------------------------------- #
# ---------------------------------------------------------------------------#
# Set up the environment for the driver #
# ---------------------------------------------------------------------------#
ONE_LOCATION = ENV["ONE_LOCATION"]
if !ONE_LOCATION
ETC_LOCATION = "/etc/one/"
RUBY_LIB_LOCATION = "/usr/lib/one/ruby"
else
ETC_LOCATION = ONE_LOCATION + "/etc/"
RUBY_LIB_LOCATION = ONE_LOCATION + "/lib/ruby"
end
CONF_FILE = ETC_LOCATION + "/vmwarerc"
$: << RUBY_LIB_LOCATION
# ---------------------------------------------------------------------------#
require 'yaml'
require 'CommandManager'
require 'vnmmad'
class OpenNebulaVMware < VNMMAD::VNMDriver
DRIVER = "vmware"
XPATH_FILTER = "TEMPLATE/NIC[VN_MAD='vmware']"
VCLI_CMD = "/sbin/esxcfg-vswitch"
def initialize(vm, deploy_id = nil, hypervisor = nil)
super(vm,XPATH_FILTER,deploy_id,hypervisor)
@locking = false
@config = YAML::load(File.read(CONF_FILE))
end
def activate
lock
vm_id = @vm['ID']
host = @vm['HISTORY_RECORDS/HISTORY/HOSTNAME']
process do |nic|
switch = nic[:bridge]
network_id = nic[:network_id]
pg = "one-pg-#{network_id}"
if nic[:vlan] == "YES"
if nic[:vlan_id]
vlan = nic[:vlan_id]
else
if nic[:parent_network_id]
network_id = nic[:parent_network_id].to_i
else
network_id = nic[:network_id].to_i
end
vlan = CONF[:start_vlan] + network_id
end
else
vlan = nil
end
add_pg_to_switch(host, pg, switch, vlan)
end
unlock
return 0
end
private
# Add port group to switch in host, and sets vlan if available
def add_pg_to_switch(host, pg, switch, vlan)
# Check's first if the vSwitch exists
add_pg_cmd = "((esxcfg-vswitch #{switch} -l|grep #{pg})"
add_pg_cmd << " || #{VCLI_CMD} #{switch} --add-pg #{pg})"
if vlan
add_pg_cmd << "; #{VCLI_CMD} #{switch} -p #{pg} --vlan=#{vlan}"
end
do_ssh_action(add_pg_cmd, host)
end
# Performs a remote action in host using ssh
def do_ssh_action(cmd, host)
rc = SSHCommand.run("'#{cmd}'", host, nil, nil)
if rc.code == 0
return [true, rc.stdout]
else
err = "Error executing: #{cmd} on host: #{@host} " <<
"err: #{rc.stderr} out: #{rc.stdout}"
OpenNebula.log_error(err)
return [false, rc.code]
end
end
end
-19
View File
@@ -1,19 +0,0 @@
#!/bin/sh
# -------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
#--------------------------------------------------------------------------- #
exit 0
-19
View File
@@ -1,19 +0,0 @@
#!/bin/sh
# -------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
#--------------------------------------------------------------------------- #
exit 0
-30
View File
@@ -1,30 +0,0 @@
#!/usr/bin/env ruby
# -------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
#--------------------------------------------------------------------------- #
# $stdout = $stderr
$: << File.dirname(__FILE__)
$: << File.join(File.dirname(__FILE__), "..")
require 'VMware'
deploy_id = nil
hypervisor = "vmware"
vm_64 = ARGV[0]
vmware = OpenNebulaVMware.from_base64(vm_64, deploy_id, hypervisor)
exit vmware.activate
-21
View File
@@ -1,21 +0,0 @@
#!/bin/bash
# -------------------------------------------------------------------------- #
# Copyright 2002-2015, OpenNebula Project, OpenNebula Systems #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); you may #
# not use this file except in compliance with the License. You may obtain #
# a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
#--------------------------------------------------------------------------- #
source $(dirname $0)/../../scripts_common.sh
log_error "Security groups not supported for vmware"
exit 1