};
my $tower_access_point = process_tower($self, $tower_opt);
+ return $tower_access_point if $tower_access_point->{error};
#get list of all access points
my $hash_opt = {
'sector_downrate_limit' => $tower_sector->{Hash}->{down_rate_limit},
'modify_existing' => '1', # modify an existing access point with this info
};
- my $sector_access_point = process_sector($self, $sector_opt);
+ my $sector_access_point = process_sector($self, $sector_opt) unless ($sector_name eq "_default");
+ return $sector_access_point if $sector_access_point->{error};
}
- return $self->api_error;
+ return { error => $self->api_error, };
}
## creates the rateplan name
my $service_name = $svc_name ? $svc_name : $service_part->{Hash}->{svc};
my $rateplan_name = $service_name . " " . $svc_broadband->{Hash}->{speed_down} . "-" . $svc_broadband->{Hash}->{speed_up};
- $rateplan_name =~ s/\s/_/g;
+ $rateplan_name =~ s/\s/_/g; $rateplan_name =~ s/[^A-Za-z0-9\-_]//g;
return $rateplan_name;
}
$client->setHost('http://'.$self->{Hash}->{machine}.':'.$self->option('port'));
$client->$method('/rest/top/configurations/running'.$path, $data, { "Content-type" => 'application/json'});
- warn "Response Code is ".$client->responseCode()."\n" if $self->option('debug');
+ warn "Saisei Response Code is ".$client->responseCode()."\n" if $self->option('debug');
my $result;
if ($client->responseCode() eq '200' || $client->responseCode() eq '201') {
eval { $result = decode_json($client->responseContent()) };
unless ($result) {
- $self->{'__saisei_error'} = "Error decoding json: $@";
+ $self->{'__saisei_error'} = "Error decoding json from Saisei";
+ warn "Saisei RC 201 Response Content is not json\n".$client->responseContent()."\n" if $self->option('debug');
return;
}
}
elsif ($client->responseCode() eq '404') {
eval { $result = decode_json($client->responseContent()) };
unless ($result) {
- $self->{'__saisei_error'} = "Error decoding json: $@";
+ $self->{'__saisei_error'} = "Error decoding json from Saisei";
+ warn "Saisei RC 404 Response Content is not json\n".$client->responseContent()."\n" if $self->option('debug');
return;
}
## check if message is for empty hash.
my($does_not_exist) = $result->{message} =~ /'(.*)' does not exist$/;
$self->{'__saisei_error'} = "Error ".$result->{message} unless $does_not_exist;
- warn "Response Content is\n".$client->responseContent."\n" if ($self->option('debug') && !$does_not_exist);
+ warn "Saisei Response Content is\n".$client->responseContent."\n" if ($self->option('debug') && !$does_not_exist);
return;
}
elsif ($client->responseCode() eq '500') {
$self->{'__saisei_error'} = "Can't connect to host during $method , received responce code: " . $client->responseCode() . " and message: " . $client->responseContent();
- warn "Response Content is\n".$client->responseContent."\n" if $self->option('debug');
+ warn "Saisei Response Content is\n".$client->responseContent."\n" if $self->option('debug');
return;
}
else {
$self->{'__saisei_error'} = "Bad response from server during $method , received responce code: " . $client->responseCode() . " and message: " . $client->responseContent();
-# unless ($method eq "GET");
- warn "Response Content is\n".$client->responseContent."\n" if $self->option('debug');
+ warn "Saisei Response Content is\n".$client->responseContent."\n" if $self->option('debug');
return;
}
my $get_host = $self->api_call("GET", "/hosts/$ip");
- return $self->api_error if $self->api_error;
+ return { message => $self->api_error, } if $self->api_error;
return $get_host;
}
sub api_create_accesspoint {
my ($self,$accesspoint, $upratelimit, $downratelimit) = @_;
- # this has not been tested, but should work, if needed.
my $new_accesspoint = $self->api_call(
"PUT",
"/access_points/$accesspoint",
sub process_tower {
my ($self, $opt) = @_;
+ if (!$opt->{tower_uprate_limit} || !$opt->{tower_downrate_limit}) {
+ $self->{'__saisei_error'} = "Can not export tower, no up or down rates attached to tower";
+ return { error => $self->api_error, };
+ }
+
my $existing_tower_ap;
my $tower_name = $opt->{tower_name};
'', # tower does not have a uplink on sectors.
$opt->{tower_uprate_limit},
$opt->{tower_downrate_limit},
- ) if $existing_tower_ap && $opt->{modify_existing};
+ ) if $existing_tower_ap->{collection} && $opt->{modify_existing};
#if tower does not exist as an access point create it.
$self->api_create_accesspoint(
$tower_name,
$opt->{tower_uprate_limit},
- $opt->{tower_downrate_limit}
- ) unless $existing_tower_ap;
+ $opt->{tower_downrate_limit},
+ ) unless $existing_tower_ap->{collection};
my $accesspoint = $self->api_get_accesspoint($tower_name);
+ return { error => $self->api_error, } if $self->api_error;
return $accesspoint;
}
sub process_sector {
my ($self, $opt) = @_;
+ if (!$opt->{sector_uprate_limit} || !$opt->{sector_downrate_limit}) {
+ $self->{'__saisei_error'} = "Can not export sector, no up or down rates attached to sector";
+ return { error => $self->api_error, };
+ }
+
my $existing_sector_ap;
my $sector_name = $opt->{sector_name};
# set access point to existing one or newly created one.
my $accesspoint = $existing_sector_ap ? $existing_sector_ap : $self->api_get_accesspoint($sector_name);
+ return { error => $self->api_error, } if $self->api_error;
return $accesspoint;
}
$opt->{virtual_downrate_limit},
) unless $existing_virtual_ap;
-my $update_sector;
-if ($existing_virtual_ap && (ref $existing_virtual_ap->{collection}->[0]->{uplink} eq "HASH") && ($existing_virtual_ap->{collection}->[0]->{uplink}->{link}->{name} ne $opt->{sector_name})) {
- $update_sector = 1;
-}
+ my $update_sector;
+ if ($existing_virtual_ap && (ref $existing_virtual_ap->{collection}->[0]->{uplink} eq "HASH") && ($existing_virtual_ap->{collection}->[0]->{uplink}->{link}->{name} ne $opt->{sector_name})) {
+ $update_sector = 1;
+ }
# Attach newly created virtual ap to tower sector ap or if sector has changed.
$self->api_modify_accesspoint($virtual_name, $opt->{sector_name}) unless ($self->{'__saisei_error'} || ($existing_virtual_ap && !$update_sector));