web/modules/rhn/RHN/DB/Server.pm | 25 +++++++++++++++++++++++++ web/modules/rhn/RHN/Server.pm | 31 +++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+)
New commits: commit 7ac3cf3b9e4e419227f5c8e8eef21b41ede32958 Author: Simon Lukasik slukasik@redhat.com Date: Mon Mar 19 15:09:28 2012 +0100
Show details of SCAP event.
diff --git a/web/modules/rhn/RHN/DB/Server.pm b/web/modules/rhn/RHN/DB/Server.pm index b20f0c1..5ab7520 100644 --- a/web/modules/rhn/RHN/DB/Server.pm +++ b/web/modules/rhn/RHN/DB/Server.pm @@ -952,6 +952,28 @@ sub server_event_config_diff { return $ret; }
+sub server_event_xccdf_eval { + my $class = shift; + my $sid = shift; + my $aid = shift; + my $action_type = shift; + + my $ret = $class->server_event_simple_action($sid, $aid); + my $dbh = RHN::DB->connect; + my $sth = $dbh->prepare(<<EOS); +SELECT ras.path, ras.parameters, tr.id as test_result + FROM rhnActionScap ras + LEFT OUTER JOIN rhnXccdfTestresult tr ON ras.id = tr.action_scap_id + AND tr.server_id = :sid + WHERE ras.action_id = :aid +EOS + $sth->execute_h(sid => $sid, aid => $aid); + $ret->{DATA} = $sth->fetchrow_hashref_copy; + $sth->finish; + + return $ret; +} +
sub server_event_details { my $class = shift; @@ -998,6 +1020,9 @@ EOS elsif ($label eq 'configfiles.diff') { return ($label, $class->server_event_config_diff($sid, $aid, $label)); } + elsif ($label eq 'scap.xccdf_eval') { + return ($label, $class->server_event_xccdf_eval($sid, $aid, $label)); + } else { return ($label, $class->server_event_simple_action($sid, $aid)); } diff --git a/web/modules/rhn/RHN/Server.pm b/web/modules/rhn/RHN/Server.pm index 312b86b..47342ef 100644 --- a/web/modules/rhn/RHN/Server.pm +++ b/web/modules/rhn/RHN/Server.pm @@ -84,6 +84,9 @@ sub lookup_server_event { elsif ($label eq 'script.run') { return bless $struct, "RHN::ServerEvent::RemoteCommand"; } + elsif ($label eq 'scap.xccdf_eval') { + return bless $struct, "RHN::ServerEvent::XccdfEval"; + } else { return bless $struct, "RHN::ServerEvent::SimpleAction"; } @@ -523,5 +526,33 @@ EOQ return $ret; }
+package RHN::ServerEvent::XccdfEval; +our @ISA = qw/RHN::ServerEvent::SimpleAction/; + +sub render { + my $self = shift; + my $details_url = "/rhn/systems/details/audit/XccdfDetails.do"; + + my $ret = $self->SUPER::render(@_); + $ret->{server_event_details} .= + sprintf(<<EOQ, PXT::Utils->escapeHTML($self->{DATA}->{PATH}), PXT::Utils->escapeHTML($self->{DATA}->{PARAMETERS})); +<br/><br/> +<strong>Path to XCCDF document:</strong> %s<br/> +<strong>Parameters:</strong> %s<br/><br/> +EOQ + + if (defined $self->{DATA}->{TEST_RESULT}) { + $ret->{server_event_details} .= + PXT::HTML->link2(-url => $details_url, + -params => {sid => $self->{SERVER_ID}, + xid => $self->{DATA}->{TEST_RESULT}}, + -text => 'View detailed results.'); + } + else { + $ret->{server_event_details} .= qq{Detailed results not available.}; + } + return $ret; +} + 1;
spacewalk-commits@lists.fedorahosted.org