#!/usr/bin/python
-
+#
# Copyright (c) 2003 Intel Corporation
# All rights reserved.
#
import utils
import os
+import ModelOptions
+
def Run( vars, log ):
"""
Expect the following variables to be set:
SYSIMG_PATH the path where the system image will be mounted
MINIMUM_DISK_SIZE any disks smaller than this size, in GB, are not used
+ NODE_MODEL_OPTIONS the node's model options
Set the following variables upon successfully running:
ROOT_MOUNTED the node root file system is mounted
if PARTITIONS == None:
raise ValueError, "PARTITIONS"
+ NODE_MODEL_OPTIONS= vars["NODE_MODEL_OPTIONS"]
except KeyError, var:
raise BootManagerException, "Missing variable in vars: %s\n" % var
except ValueError, var:
# this is the lvm partition, if it exists on that device
lvm_partition= InstallPartitionDisks.get_partition_path_from_device( device, vars, log )
cmd = "pvdisplay %s | grep -q 'planetlab'" % lvm_partition
- already_added= utils.sysexec_noerr(cmd, log)
+ already_added = utils.sysexec_noerr(cmd, log, shell=True)
if already_added:
log.write( "It appears %s is part of the volume group, continuing.\n" %
# just to be extra paranoid, ignore the device if it already has
# an lvm partition on it (new disks won't have this, and that is
# what this code is for, so it should be ok).
- cmd = "sfdisk -l %s | grep -q 'Linux LVM'" % device
+ cmd = "parted --script --list %s | grep -q lvm$" % device
has_lvm= utils.sysexec_noerr(cmd, log)
if has_lvm:
log.write( "It appears %s has lvm already setup on it.\n" % device)
log.write("To paranoid to add %s to vservers lvm.\n" % device)
continue
- log.write( "Attempting to add %s to the volume group\n" % device )
-
if not InstallPartitionDisks.single_partition_device( device, vars, log ):
log.write( "Unable to partition %s, not using it.\n" % device )
continue
- log.write( "Successfully initialized %s\n" % device )
+ log.write( "Successfully partitioned %s\n" % device )
+
+ if NODE_MODEL_OPTIONS & ModelOptions.RAWDISK:
+ log.write( "Running on a raw disk node, not using it.\n" )
+ continue
part_path= InstallPartitionDisks.get_partition_path_from_device( device,
vars, log )
+
+ log.write( "Attempting to add %s to the volume group\n" % device )
+
if not InstallPartitionDisks.create_lvm_physical_volume( part_path,
vars, log ):
log.write( "Unable to create lvm physical volume %s, not using it.\n" %
try:
# backwards compat, though, we should never hit this case post PL 3.2
os.stat("%s/rcfs/taskclass"%SYSIMG_PATH)
- utils.sysexec_noerr( "chroot %s umount /rcfs" % SYSIMG_PATH, log )
+ utils.sysexec_chroot_noerr( SYSIMG_PATH, "umount /rcfs", log )
except OSError, e:
pass
res = 1
break
- log.write( "making the ext3 filesystem match new logical volume size.\n" )
+ log.write( "making the ext filesystem match new logical volume size.\n" )
vars['ROOT_MOUNTED']= 1
cmd = "mount %s %s" % (PARTITIONS["root"],SYSIMG_PATH)
cmd = "mount %s %s/vservers" % \
(PARTITIONS["vservers"],SYSIMG_PATH)
utils.sysexec_noerr( cmd, log )
- cmd = "ext2online %s/vservers" % SYSIMG_PATH
+ cmd = "resize2fs %s" % PARTITIONS["vservers"]
resize = utils.sysexec_noerr(cmd,log)
utils.sysexec_noerr( "umount %s/vservers" % SYSIMG_PATH, log )
utils.sysexec_noerr( "umount %s" % SYSIMG_PATH, log )