'-d' => $config->{release},
'-m' => $config->{mirror},
);
+ write_file('/etc/vservers/' . $vsname . '/context', getFreeContext() . "\n");
system('vserver', $vsname, 'start');
write_file('/etc/vservers/' . $vsname . '/profile', $profile . "\n");
write_file($vsroot . 'etc/apt/sources.list', $config->{files}{aptsources});
return undef;
} # }}}
+sub getFreeContext { # {{{
+ my $existingContext = { 1 => 1 };
+ foreach my $contextFile ( glob '/etc/vservers/*/context' ) {
+ my $context = slurp($contextFile);
+ next unless $context =~ m{ \A \s* (\d+) \s* \z }xms;
+ $existingContext->{$1} = 1;
+ }
+
+ # Note: probably should allow more than 255 vservers here
+ for ( my $i = 101; $i < 255 ; $i++ ) {
+ return "$i" unless $existingContext->{$i};
+ }
+ return undef;
+} # }}}