return @cl;
}
+sub yum_add_repository ($@) {
+ my ($ho, @repos_url) = @_;
+
+ my $repos = '';
+ my $yum_repo_number = 1;
+ foreach my $url (@repos_url) {
+ $repos .= <<END;
+[osstest-repo-$yum_repo_number]
+name=osstest-repo-$yum_repo_number
+baseurl=$url
+gpgcheck=0
+END
+ $yum_repo_number += 1;
+ }
+ target_putfilecontents_root_stash($ho, 10, $repos,
+ "/etc/yum.repos.d/Osstest.repo");
+
+ target_cmd_root($ho, 'yum -y update', 30*60);
+}
+
+sub setupbridge ($) {
+ my ($ho) = @_;
+ my $bridge_xenbr0 = <<END;
+DEVICE=xenbr0
+STP=no
+BRIDGING_OPTS="hello_time=0"
+TYPE=Bridge
+BOOTPROTO=dhcp
+ONBOOT=yes
+END
+ target_putfilecontents_root_stash($ho, 10, $bridge_xenbr0,
+ "/etc/sysconfig/network-scripts/ifcfg-xenbr0");
+
+ # Should be setup by install
+ target_editfile_root($ho, "/etc/sysconfig/network-scripts/ifcfg-osstest-if0",
+ sub { target_editfile_kvp_replace("BRIDGE", "xenbr0") });
+ target_editfile_root($ho, "/etc/sysconfig/network-scripts/ifcfg-osstest-if0",
+ sub { target_editfile_kvp_replace("BOOTPROTO", "none") });
+
+}
+
1;
use File::Basename;
use POSIX;
use Osstest::Debian;
+use Osstest::RedHat;
use Osstest::TestSupport;
use Data::Dumper;
use Osstest::CXFabric;
my %distpath;
+sub setup_package_repo_config () {
+ # TODO: Find an appropriate runvar
+ # all_host_xen_repo?
+ my $repos_url = $r{redhat_repos_url};
+ die "no repo" unless defined($repos_url);
+ my @repos_url = ();
+ while ($repos_url =~ s/^([^,]+),(.*)$/$2/) {
+ push @repos_url, "$1";
+ }
+ push @repos_url, "$repos_url";
+ host_add_repository($ho)->($ho, @repos_url);
+}
+
sub packages () {
target_install_packages($ho,
qw(bridge-utils vncsnapshot libaio1 libpixman-1-0
}
}
+sub packages_redhat () {
+ # Merge that with packages()
+ # Maybe have a runvar for packages to install
+ # if a runvar exist for Xen package, do not run extract
+ my @packages;
+
+ # For vncpasswd
+ if ($ho->{RedhatRelease} == 6) {
+ push @packages, 'tigervnc-server';
+ } else {
+ push @packages, 'tigervnc-server-minimal';
+ }
+ target_install_packages($ho, @packages);
+
+ # This packages is necessary, in order to get the right kernel
+ # It pull /usr/bin/grub-bootxen.sh (helper to boot Xen by default).
+ target_install_packages($ho, qw(centos-release-xen-common));
+
+ # Xen
+ my @xen_packages = qw(xen);
+ push @xen_packages, qw(libvirt-daemon-xen libvirt-client)
+ if toolstack($ho)->{Name} eq "libvirt";
+ target_install_packages($ho, @xen_packages);
+
+ if ($ho->{RedhatRelease} == 6) {
+ # Update Xen kernel parametter
+ target_cmd_root($ho, "grubby --update-kernel=/boot/xen.gz --args='console=hvc0'");
+ }
+}
+
sub extradebs () {
my $suite = $ho->{Suite};
die if @hos > 1;
$ho= $hos[0];
-packages();
-extradebs();
-extract();
+if (is_host_redhat_derived($ho)) {
+ # centos, install packages
+
+ # Could look up for repo url
+ setup_package_repo_config();
+ packages_redhat();
+} else {
+ # debian, extract dist tarballs
+ packages();
+ extradebs();
+ extract();
+}
forbidden();
adjustconfig();
-setupboot();
-setupinitd();
-ensurebridge();
+if (is_host_redhat_derived($ho)) {
+ Osstest::RedHat::setupbridge($ho);
+} else {
+ setupboot();
+ setupinitd();
+ ensurebridge();
+}
hosts();