diff --git a/protogeni/lib/GeniCM.pm.in b/protogeni/lib/GeniCM.pm.in index 3f073f914481e74f7fcd2e78d50b17d897daad13..cc9ae882b101be624ba1a863868973e158af0b65 100644 --- a/protogeni/lib/GeniCM.pm.in +++ b/protogeni/lib/GeniCM.pm.in @@ -796,7 +796,7 @@ sub GetTicketAuxAux($$$$$$$$$) # # Check for disk_image request. Specified as a URN. # - my $diskref = GeniXML::FindFirst("n:disk_image", $ref); + my $diskref = GeniXML::GetDiskImage($ref); if (defined($diskref)) { my $dname = GeniXML::GetText("name", $diskref); diff --git a/protogeni/lib/GeniXML.pm.in b/protogeni/lib/GeniXML.pm.in index 7bf0476fa6af5bbf8807a17904b2bacc1ff2fd02..2d1cabf70d139c7bec8f9ff9317f3fadb81abad8 100644 --- a/protogeni/lib/GeniXML.pm.in +++ b/protogeni/lib/GeniXML.pm.in @@ -18,7 +18,8 @@ GetNodeId GetVirtualId GetInterfaceId GetInterfaceNodeId GetSliverId GetManagerId GetColocate GetSubnodeOf GetStartupCommand GetTarball GetVirtualizationType SetVirtualizationSubtype GetVirtualizationSubtype GetExclusive SetExclusive GetLinkManager SetText GetText Serialize -CreateDocument AddElement RemoveChild PolicyExists GetMask); +CreateDocument AddElement RemoveChild PolicyExists GetMask +GetDiskImage); use English; use XML::LibXML; @@ -545,6 +546,21 @@ sub GetVirtualizationSubtype($) return $result; } +sub GetDiskImage($) +{ + my ($node) = @_; + my $result = undef; + if (IsVersion0($node)) { + $result = FindFirst("n:disk_image", $node); + } else { + my $type = FindFirst("n:sliver_type", $node); + if (defined($type)) { + $result = FindFirst("n:disk_image", $type); + } + } + return $result; +} + sub GetExclusive($) { my ($node) = @_;