#!/usr/bin/perl use strict; use warnings; use English; use Getopt::Long; use Pod::Usage; use NGCP::API::Client; use Readonly; Readonly my @required => qw(domain); my $opts = { domain => $ARGV[0], skip_xmpp => 0, skip_sip => 0, verbose => 0, }; GetOptions( $opts, "help|h" => sub { usage() }, "domain=s", "skip_xmpp", "skip_sip", "verbose", ) or usage(); sub check_params { my @missing; foreach my $param (@required) { push @missing, $param unless $opts->{$param}; } usage(join(' ', @missing)) if scalar @missing; return; } sub usage { my $msg = shift; pod2usage(-exitval => $msg ? 1 : 0, -verbose => 99, -sections => 'SYNOPSIS|REQUIRED ARGUMENTS|OPTIONS', -message => $msg ? $msg =~ /not found/i ? $msg : "Missing parameters: $msg" : '', ); return; } sub main { check_params(); my $uri = '/api/domains/'; my %data = map { "_".$_."_reload" => $opts->{$_} } qw(skip_xmpp skip_sip); my $client = new NGCP::API::Client; $client->set_verbose($opts->{verbose}); # domain_id my $dom = $client->request("GET", "/api/domains/?domain=".$opts->{domain}); my $dom_id; if ($dom->as_hash->{total_count} == 1) { my $tmp = $dom->as_hash->{_embedded}->{'ngcp:domains'}; if (ref $tmp eq 'ARRAY') { $dom_id = @{$tmp}[0]->{id}; } else { $dom_id = $tmp->{id}; } die "Domain $opts->{domain} not found\n" unless $dom_id; $uri .= $dom_id; } else { die "Domain $opts->{domain} not found\n"; } my $res = $client->request("DELETE", $uri, \%data); print $res->result."\n"; exit !$res->is_success; return; } main(); exit 0; __END__ =head1 NAME ngcp-delete-domain - delete an NGCP domain =head1 SYNOPSIS B [I...] I... =head1 DESCRIPTION B deletes a domain on the NGCP platform. =head1 REQUIRED ARGUMENTS =over 8 =item B<--domain> I The domain name to delete. =back =head1 OPTIONS =over 8 =item B<--skip_sip> Skip reloading SIP services. If true, changes will not be effective immedeately until the respective service is restarted or properly notified. Default false. =item B<--skip_xmpp> Skip reloading XMPP services. If true, changes will not be effective immedeately until the respective service is restarted or properly notified. Default false. =item B<--verbose> Show additional debug information. Default false. =item B<--help> Print a brief help message. =back =head1 EXIT STATUS Exit code 0 means everything is ok otherwise 1. =head1 SEE ALSO NGCP::API::Client =head1 BUGS AND LIMITATIONS Please report problems you notice to the Sipwise Development Team . =head1 AUTHOR Victor Seva =head1 LICENSE Copyright (C) 2016 Sipwise GmbH, Austria This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . =cut