package Cluster::CCS;

use strict;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);

require Exporter;
require DynaLoader;

@ISA = qw(Exporter DynaLoader);
# Items to export into callers namespace by default. Note: do not export
# names by default without a very good reason. Use EXPORT_OK instead.
# Do not simply export all your public functions/methods/constants.
our %EXPORT_TAGS = ( 'all' => [qw(

)]);
@EXPORT = qw(
	
);
@EXPORT_OK = (@{$EXPORT_TAGS{'all'}});

our $VERSION = '@VERSION@';

require XSLoader;
XSLoader::load('Cluster::CCS', $VERSION);

sub new {
	my $class = shift;
	my $self = bless { 
		@_
	};
	return $self;
}

1;
__END__

=head1 NAME

Cluster::CCS - Perl wrapper for the Cluster Configuration Service library

=head1 SYNOPSIS

  use Cluster::CCS;

  my $ccs = new Cluster::CCS();

  $ccs->fullxpath(1);

  my $ccshandle = $ccs->connect();

  if ($ccshandle < 1) {
    print "Cannot comunicate with libccs\n";
    exit $ccshandle;
  }

  my $rtn;
  my $err;

  $err = $ccs->get($ccshandle, '/cluster/@name', $rtn);

  if ($err != 0) {
    print "Query is not valid\n";
  }

  print "My Cluster name is $rtn\n";

  $err = $ccs->disconnect($ccshandle);

  if ($err != 0) {
    print "Problems disconnecting from libccs\n";
  }

  exit $err;

=head1 DESCRIPTION

  Cluster::CCS provides a perl XS wrapper for libccs. 

=head1 METHODS

=head2 new

  Creates a new Cluster::CCS object.

=head2 fullxpath(value)

  Enable or disable full xpath queries. Set 1 to enable, 0 to disable.
  This has to be set before connect() or force_connect.
  In order to change this value, a disconnect operation is required.

=head2 connect(void)

  Initialize the connection to libccs/libconfdb/corosync objdb.
  Returns 1 on success or negative on failure.

=head2 force_connect(cluster_name, blocking)

  Initialize the connection to libccs/libconfdb/corosync objdb.
  If blocking is set, it will retry the operation until it succeed.
  Returns 1 on success or negative on failure.

=head2 disconnect(desc)

  Disconnect and free resources allocated during opertaion.
  Returns 0 on success.

=head2 get(desc, query, rtn)

  Perform a simple xpath query.
  Returns 0 on success, negative otherwise. On success rtn will contain the
  requested data.

=head2 get_list(desc, query, rtn)

  Perform a simple xpath query and retain some data to iterate over a list of
  results.
  Returns 0 on success, negative otherwise. On success rtn will contain the
  requested data.

=head2 set(desc, path, val)

  This operation is not yet implemented in libccs.

=head2 lookup_nodename(desc, nodename, rtn)

  Perform a nodename lookup using several methods.
  Return 0 on success and rtn will contain the requested data.

=head1 EXPORTS

Nothing is exported by default.

=head1 BUGS

  https://bugzilla.redhat.com/

=head1 SEE ALSO

  cluster.conf(5), ccs(7), ccs_tool(8)

=head1 AUTHOR

Fabio M. Di Nitto <fdinitto@redhat.com>

=cut
