From: Viktor M. <mih...@us...> - 2005-05-03 17:41:35
|
Update of /cvsroot/sblim/cmpi-samples/autotools In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1083 Added Files: pegregconv.pl Log Message: Added script to help in the conversion from Pegasus to generic registration format. --- NEW FILE: pegregconv.pl --- #!/usr/bin/perl # $Id: pegregconv.pl,v 1.1 2005/05/03 17:41:19 mihajlov Exp $ # ================================================================== # (C) Copyright IBM Corp. 2005 # # THIS FILE IS PROVIDED UNDER THE TERMS OF THE COMMON PUBLIC LICENSE # ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE # CONSTITUTES RECIPIENTS ACCEPTANCE OF THE AGREEMENT. # # You can obtain a current copy of the Common Public License from # http://www.opensource.org/licenses/cpl1.0.php # # Author: Viktor Mihajlovski <mih...@de...> # Contributors: # Description: Converter for Pegasus Registration Files # ================================================================== # ------------------------------------------------------------------ # This is a small helper script to convert Pegasus Registration MOFs # to the generic registration file format of SBLIM's # provider-register.sh . # Please verify the result of the conversion! # This script is still very rudimentary and probably full of errors. # ------------------------------------------------------------------ use strict; use warnings; use Text::Balanced qw (extract_delimited extract_bracketed extract_tagged); my $oneline = ""; my $before; my $extracted; my $after; my $insttype; my $ign; my $ign1; my $pmod; my $ploc; my $prov; my $cls; my $ns; my $ptype; my $i; my $j; my $tempstr; my %pmods = (); my %pclass = (); while (<>) { s#//.*$##; s#\t+# #g; s#^\s+##g; s#\s+$##g; s#\s*=\s*#=#g; s#\s+# #g; s/^#.*$//; chomp(); $oneline = $oneline . $_ if length > 0; } do { ($extracted, $after, $before) = extract_bracketed($oneline,"{}","instance of [a-zA-Z0-9_]+ ?"); ($ign,$ign1,$insttype) = split(/ /,$before); if ($insttype eq "PG_ProviderModule") { $i = index($extracted,"Name="); if ($i >= 0) { $tempstr = substr($extracted,$i); ($pmod,$ign,$ign1) = extract_delimited($tempstr,'"',"Name="); } $i = index($extracted,"Location="); if ($i >= 0) { $tempstr = substr($extracted,$i); ($ploc,$ign,$ign1) = extract_delimited($tempstr,'"',"Location="); } $pmod =~ s/"//g; $ploc =~ s/"//g; # Add hashtable entry $pmods{$pmod}=$ploc; } elsif ($insttype eq "PG_Provider") { $i = index($extracted,"ProviderModuleName="); if ($i >= 0) { $tempstr = substr($extracted,$i); ($pmod,$ign,$ign) = extract_delimited($tempstr,'"',"ProviderModuleName="); } $j = index($extracted,"Name="); if ($j - length("ProviderModule") == $i) { $j = index($extracted,"Name=",$j+1); } if ($j >= 0) { $tempstr = substr($extracted,$j); ($prov,$ign,$ign) = extract_delimited($tempstr,'"',"Name="); } } elsif ($insttype eq "PG_ProviderCapabilities") { $i = index($extracted,"ProviderModuleName="); if ($i >= 0) { $tempstr = substr($extracted,$i); ($pmod,$ign,$ign) = extract_delimited($tempstr,'"',"ProviderModuleName="); } $i = index($extracted,"ProviderName="); if ($i >= 0) { $tempstr = substr($extracted,$i); ($prov,$ign,$ign) = extract_delimited($tempstr,'"',"ProviderName="); } $i = index($extracted,"ClassName="); if ($i >= 0) { $tempstr = substr($extracted,$i); ($cls,$ign,$ign) = extract_delimited($tempstr,'"',"ClassName="); } $i = index($extracted,"Namespaces="); if ($i >= 0) { $tempstr = substr($extracted,$i); ($ns,$ign,$ign) = extract_delimited($tempstr,'"',"Namespaces={"); } $i = index($extracted,"ProviderType="); if ($i >= 0) { $tempstr = substr($extracted,$i); ($ptype,$ign,$ign) = extract_bracketed($tempstr,'{}',"ProviderType="); } $cls =~ s/"//g; $pmod =~ s/"//g; $prov=~ s/"//g; $ns =~ s/"//g; $ptype =~ tr/{}/ /; # Add hashtable entry $pclass{$cls} = { "module" => $pmod, "provider" => $prov, "namespace" => $ns, "type" => $ptype}; } $after =~ s/^;//; $oneline = $after; } while (length($oneline)); print "# Classname Namespace Providername Libraryname Capabilities ...\n"; for my $key (keys %pclass) { my $mod = $pclass{$key}{"module"}; my $provider = $pclass{$key}{"provider"}; my $namesp = $pclass{$key}{"namespace"}; my $type = $pclass{$key}{"type"}; my $loc = $pmods{$mod}; print "$key $namesp $provider $loc"; my @types = split(/,/,$type); for my $ttt (@types) { if ($ttt == 2) { print " instance"; } elsif ($ttt == 3) { print " association"; } elsif ($ttt == 4) { print " indication"; } elsif ($ttt == 5) { print " method"; } } print "\n"; } |