opennebula-4.12.1-runasuser.diff

Patch for OpenNebula 4.12.1 (tested) - Roy Keene, 06/15/2016 07:48 PM

Download (9.85 KB)

View differences:

opennebula-4.12.1-runasuser/src/tm/TransferManager.cc 2015-10-10 09:52:48.332082925 -0500
397 397
            << vm->get_hostname() << ":"
398 398
            << vm->get_remote_system_dir() << "/disk." << disk_id << " "
399 399
            << vm->get_oid() << " "
400
            << vm->get_ds_id()
400
            << vm->get_ds_id() << " "
401
            << (vm->get_oid() + 131072) << " "
402
            << (vm->get_oid() + 131072)
401 403
            << endl;
402 404
    }
403 405
    else if ( type == "FS" )
......
428 430
            << vm->get_hostname() << ":"
429 431
            << vm->get_remote_system_dir() << "/disk." << disk_id << " "
430 432
            << vm->get_oid() << " "
431
            << vm->get_ds_id()
433
            << vm->get_ds_id() << " "
434
            << (vm->get_oid() + 131072) << " "
435
            << (vm->get_oid() + 131072)
432 436
            << endl;
433 437
    }
434 438
    else
......
479 483
        xfr << vm->get_hostname() << ":"
480 484
            << vm->get_remote_system_dir() << "/disk." << disk_id << " "
481 485
            << vm->get_oid() << " "
482
            << ds_id
486
            << ds_id << " "
487
            << (vm->get_oid() + 131072) << " "
488
            << (vm->get_oid() + 131072)
483 489
            << endl;
484 490
    }
485 491

  
......
536 542
        << vm->get_hostname() << ":"
537 543
        << base_dst.str() << " "
538 544
        << vm->get_oid() << " "
539
        << ds_id
545
        << ds_id << " "
546
        << (vm->get_oid() + 131072) << " "
547
        << (vm->get_oid() + 131072)
540 548
        << endl;
541 549

  
542 550
    return base_dst.str();
opennebula-4.12.1-runasuser/src/tm_mad/common/mkimage 2015-10-10 09:52:48.332082925 -0500
31 31
VMID=$4
32 32
DSID=$5
33 33

  
34
VMUID="$6"
35
VMGID="$7"
36

  
34 37
if [ -z "${ONE_LOCATION}" ]; then
35 38
    TMCOMMON=/var/lib/one/remotes/tm/tm_common.sh
39
    KVMRC=/var/lib/one/remotes/vmm/kvm/kvmrc
36 40
else
37 41
    TMCOMMON=$ONE_LOCATION/var/remotes/tm/tm_common.sh
42
    KVMRC=$ONE_LOCATION/var/remotes/vmm/kvm/kvmrc
38 43
fi
39 44

  
40 45
. $TMCOMMON
46
. $KVMRC
41 47

  
42 48
#-------------------------------------------------------------------------------
43 49
# Set dst path and dir
......
51 57
#-------------------------------------------------------------------------------
52 58
ssh_make_path $DST_HOST $DST_DIR
53 59

  
54
CREATE_IMAGE="$DD if=/dev/zero of=$DST_PATH bs=1 count=1 seek=${SIZE}M"
60
CREATE_IMAGE="$DD if=/dev/zero of=$DST_PATH bs=1 count=1 seek=$[${SIZE} * 1024 * 1024 - 1]"
55 61
MKFS_CMD=`mkfs_command $DST_PATH $FSTYPE $SIZE`
56 62

  
57 63
MKSCRIPT=$(cat <<EOF
58 64
set -e
59 65
export PATH=/usr/sbin:/sbin:\$PATH
60 66
$CREATE_IMAGE
67
sudo chmod 600 $DST_PATH
61 68
$MKFS_CMD
69
VMUID="${VMUID}"
70
VMGID="${VMGID}"
71
if [ -z "\${VMUID}" -o -z "\${VMGID}" ]; then
72
    eval "\$(virsh -c $LIBVIRT_URI dumpxml one-$VMID | grep '<label>+.*:+.*</label>' | sed 's@.*<label>\(.*\)</label>@\1@;s@^+@VMUID=@;s@:+@; VMGID=@')"
73
fi
74
if [ -n "\${VMUID}" -a -n "\${VMGID}" ]; then
75
  sudo chown "\${VMUID}:\${VMGID}" $DST_PATH
76
fi
62 77
EOF
63 78
)
64 79

  
opennebula-4.12.1-runasuser/src/tm_mad/common/mkswap 2015-10-10 09:52:48.333082925 -0500
29 29
VMID=$3
30 30
DSID=$4
31 31

  
32
CMD="`dirname $0`/mkimage $SIZE swap $DST $VMID $DSID"
32
VMUID="$5"
33
VMGID="$6"
34

  
35
CMD="`dirname $0`/mkimage $SIZE swap $DST $VMID $DSID $VMUID $VMGID"
33 36
`$CMD`
opennebula-4.12.1-runasuser/src/tm_mad/qcow2/clone 2015-10-10 09:52:48.333082925 -0500
30 30
VMID=$3
31 31
DSID=$4
32 32

  
33
VMUID="$5"
34
VMGID="$6"
35

  
33 36
if [ -z "${ONE_LOCATION}" ]; then
34 37
    TMCOMMON=/var/lib/one/remotes/tm/tm_common.sh
35 38
else
......
57 60
#-------------------------------------------------------------------------------
58 61
# Clone (cp) SRC into DST
59 62
#-------------------------------------------------------------------------------
63
if [ -n "${VMUID}" -a -n "${VMGID}" ]; then
64
    ADD_CMD=" && sudo chown ${VMUID}:${VMGID} $DST_PATH"
65
fi
66

  
60 67
case $SRC in
61 68
http://*)
62 69
    log "Downloading $SRC into $DST_PATH"
63 70
    ssh_exec_and_log $DST_HOST \
64
                     "$WGET -O $DST_PATH $SRC" \
71
                     "$WGET -O $DST_PATH $SRC${ADD_CMD}" \
65 72
                     "Error downloading $SRC"
66 73
    ;;
67 74

  
68 75
*)
69 76
    log "Cloning $SRC_PATH in $DST"
70 77

  
71
    CLONE_CMD="cd $DST_DIR; rm -f $DST_PATH; $QEMU_IMG create -b $SRC_PATH -f qcow2 $DST_PATH"
78
    CLONE_CMD="cd $DST_DIR && rm -f $DST_PATH && $QEMU_IMG create -b $SRC_PATH -f qcow2 $DST_PATH${ADD_CMD}"
72 79
    ssh_exec_and_log "$DST_HOST" "$CLONE_CMD" "Error copying $SRC to $DST"
73 80
    ;;
74 81
esac
opennebula-4.12.1-runasuser/src/tm_mad/shared/clone 2015-10-10 09:52:48.333082925 -0500
30 30
VMID=$3
31 31
DSID=$4
32 32

  
33
VMUID=$5
34
VMGID=$6
35

  
33 36
if [ -z "${ONE_LOCATION}" ]; then
34 37
    TMCOMMON=/var/lib/one/remotes/tm/tm_common.sh
35 38
else
......
62 65
# Clone (cp) SRC into DST
63 66
#-------------------------------------------------------------------------------
64 67

  
68
if [ -n "${VMUID}" -a -n "${VMGID}" ]; then
69
	ADD_CMD=" && sudo chown ${VMUID}:${VMGID} ${DST_PATH}"
70
fi
71

  
65 72
case $SRC in
66 73
http://*)
67 74
    log "Downloading $SRC into $DST_PATH"
68 75
    ssh_exec_and_log $DST_HOST \
69
                     "$WGET -O $DST_PATH $SRC" \
76
                     "$WGET -O $DST_PATH $SRC${ADD_CMD}" \
70 77
                     "Error downloading $SRC"
71 78
    ;;
72 79

  
73 80
*)
74 81
    log "Cloning $SRC_PATH in $DST"
75 82
    ssh_exec_and_log $DST_HOST \
76
                     "cd $DST_DIR; cp $SRC_PATH $DST_PATH" \
83
                     "cd $DST_DIR && cp $SRC_PATH $DST_PATH${ADD_CMD}" \
77 84
                     "Error copying $SRC to $DST"
78 85
    ;;
79 86
esac
opennebula-4.12.1-runasuser/src/tm_mad/shared/ln 2015-10-10 09:52:48.333082925 -0500
64 64
log "Linking $SRC_PATH in $DST"
65 65

  
66 66
ssh_exec_and_log $DST_HOST \
67
                "cd $DST_DIR; rm -f $DST_PATH ; ln -s $SRC_PATH $DST_PATH" \
67
                "cd $DST_DIR && rm -f $DST_PATH && ln -s $SRC_PATH $DST_PATH" \
68 68
                "Error linking $SRC to $DST"
69 69

  
70 70
exit 0
opennebula-4.12.1-runasuser/src/tm_mad/ssh/mv 2015-10-10 09:52:48.333082925 -0500
71 71
ssh_exec_and_log "$DST_HOST" "rm -rf '$DST_PATH'" \
72 72
    "Error removing target path to prevent overwrite errors"
73 73

  
74
TAR_COPY="$SSH $SRC_HOST '$TAR -C $SRC_DS_DIR --sparse -cf - $SRC_VM_DIR'"
75
TAR_COPY="$TAR_COPY | $SSH $DST_HOST '$TAR -C $DST_DIR --sparse -xf -'"
74
TAR_COPY="$SSH $SRC_HOST '$SUDO $TAR -C $SRC_DS_DIR --sparse -cf - $SRC_VM_DIR | $SSH $DST_HOST '\''$SUDO $TAR -C $DST_DIR --sparse -xf -'\'''"
76 75

  
77 76
exec_and_log "eval $TAR_COPY" "Error copying disk directory to target host"
78 77

  
opennebula-4.12.1-runasuser/src/vmm/LibVirtDriverKVM.cc 2015-10-10 09:52:48.334082925 -0500
209 209
         << "' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>"
210 210
         << endl;
211 211

  
212
    /* Domain user information */
213
    file << "\t<seclabel type='static' model='dac'>" << endl;
214
    file << "\t\t<label>+" << (vm->get_oid() + 131072) << ":+" << (vm->get_oid() + 131072) << "</label>" << endl;
215
    file << "\t</seclabel>" << endl;
216

  
212 217
    // ------------------------------------------------------------------------
213 218
    // Domain name
214 219
    // ------------------------------------------------------------------------
opennebula-4.12.1-runasuser/src/vmm_mad/remotes/kvm/restore 2015-12-09 10:40:24.127476035 -0600
20 20
source $(dirname $0)/../../scripts_common.sh
21 21

  
22 22
file=$1
23
oid="$4"
24
if [ -z "${oid}" ]; then
25
	oid='0'
26
fi
27
vmuid=$[131072+$oid]
28
vmgid="${vmuid}"
23 29

  
24
exec_and_log "virsh --connect $LIBVIRT_URI restore $file" \
30
# Update any newly restored VMs with the appropriate security label
31
exec_and_log "
32
eval EDITOR=\"sed -i 's@<label>.*</label>@<label>+$vmuid:+$vmgid</label>@'\" virsh --connect $LIBVIRT_URI save-image-edit $file || true;
33
virsh --connect $LIBVIRT_URI restore $file
34
" \
25 35
    "Could not restore from $file"
26 36

  
27 37
rm "$file"
opennebula-4.12.1-runasuser/src/vmm_mad/remotes/kvm/save 2015-12-09 15:44:17.058537328 -0600
31 31
fi
32 32

  
33 33
touch $file
34
chmod 666 $file
34
chmod 600 $file
35 35

  
36 36
exec_and_log "virsh --connect $LIBVIRT_URI save $deploy_id $file" \
37 37
    "Could not save $deploy_id to $file"