#!/usr/bin/perl

use strict;
use warnings;
use Getopt::Long qw(:config no_ignore_case);
use Perun::Agent;
use Perun::Common qw(printMessage);

sub help {
	return qq{
	Creates a service. Service name is required field.
	--------------------------------------
	Available options:
	--name         | -n service name
	--description  | -d service description
	--script       | -s service script path (default './service_name')
	--enabled      | -e enabled (default 'true')
	--expired      | -x use expired members (default 'true')
	--batch        | -b batch
	--help         | -h prints this help

	};
}

my ($name, $description, $script, $enabled, $batch, $expired);
GetOptions ("help|h"  => sub {
		print help();
		exit 0;
	},
	"batch|b"      => \$batch,
	"name|n=s" => \$name,
	"description|d=s" => \$description,
	"script|s=s" => \$script,
	"enabled|e=s" => \$enabled,
	"expired|x=s" => \$expired,
) || die help();

# Check options
unless (defined($name)) { die "ERROR: name is required \n";}

my $agent = Perun::Agent->new();
my $servicesAgent = $agent->getServicesAgent;

my $service = Perun::beans::Service->new;
$service->setName( $name );
$service->setDescription( $description );
unless ($script) {
	$script = "./" . $name;
}
$service->setScript($script);
$service->setUseExpiredMembers($expired);
$service->setEnabled($enabled);
$service->setRecurrence(2);
$service->setDelay(10);
$service = $servicesAgent->createService( service => $service);

printMessage("Service Id:".$service->getId." successfully created", $batch);
