diff --git a/protogeni/lib/GeniSliver.pm.in b/protogeni/lib/GeniSliver.pm.in index 597f2027822df36483ebed39aa8fc9e41a3dd68a..784a057ce2181ccd8a267b658313f367bfe2ce69 100755 --- a/protogeni/lib/GeniSliver.pm.in +++ b/protogeni/lib/GeniSliver.pm.in @@ -727,10 +727,16 @@ sub AnnotateManifest($) print STDERR "Could not map sliver $self to its creator\n"; return undef; } + my $experiment = $self->GetExperiment(); + if (!defined($experiment)) { + print STDERR "Could not lookup experiment for sliver $self\n"; + return undef; + } my $sshdport = 22; my $hostname = GeniUtil::FindHostname($node->node_id()); my $phostname = $hostname; + my $vhostname = GeniUtil::FindVHostname($experiment, $node); if ($node->isvirtnode()) { $sshdport = $node->sshdport(); @@ -750,6 +756,11 @@ sub AnnotateManifest($) } else { GeniXML::SetText("sliver_id", $rspec, $self->sliver_urn()); GeniXML::SetText("component_id", $rspec, $self->component_urn()); + my $host = GeniXML::FindFirst("n:host", $rspec); + if (! defined($host)) { + $host = GeniXML::AddElement("host", $rspec); + } + GeniXML::SetText("name", $host, $vhostname); } my $services = GeniXML::FindFirst("n:services", $rspec); diff --git a/protogeni/lib/GeniUtil.pm.in b/protogeni/lib/GeniUtil.pm.in index 7e7dc71afe0e57c23fbc308e35b0b980229e02f9..05bea6a703df1da5711fa60b898326893ef42ceb 100644 --- a/protogeni/lib/GeniUtil.pm.in +++ b/protogeni/lib/GeniUtil.pm.in @@ -11,7 +11,7 @@ use Exporter; use vars qw(@ISA @EXPORT); @ISA = "Exporter"; -@EXPORT = qw(GENI_PURGEFLAG FindHostname); +@EXPORT = qw(GENI_PURGEFLAG FindHostname FindVHostname); use English; use Data::Dumper; @@ -157,6 +157,18 @@ sub FindHostname($) return $nodeid . "." . $prefix; } +sub FindVHostname($$) +{ + my ($exp, $node) = @_; + my $prefix = $OURDOMAIN; + if ($ELABINELAB == 1) { + $OUTERBOSS_NODENAME =~ /^[^.]+\.(.*)$/; + $prefix = $1; + } + return $node->vname() . "." . $exp->eid() . "." . $exp->pid() . "." + . $prefix; +} + # # Run a command, being sure to capture all output. #