API-ISPManager
view release on metacpan or search on metacpan
vdsmanager.pl view on Meta::CPAN
API::ISPManager::vdspreset::list( $connection_params );
return '' unless $disk_templates && ref $disk_templates eq 'HASH';
# List all VPS templates
my @list = keys %$disk_templates;
for (@list) {
# If this preset exists:
my $preset_ok =
$disk_preset_name eq $_ &&
$disk_templates->{$_};
return 1 if $preset_ok;
}
return '';
}
# ÐолÑÑаем деÑализаÑÐ¸Ñ ÑаÑиÑа ÐÐС
sub get_vps_preset_details {
my $preset_name = shift;
return '' unless $preset_name;
my $vds_template_details = API::ISPManager::vdspreset::get( {
%$connection_params ,
elid => $preset_name
} );
# ФилÑÑÑÑем ÑолÑко нÑжнÑе паÑамеÑÑÑ ÑаÑиÑа
my $clean_plan_details = { };
my @required_params = qw(disk mem cpu proc desc traf);
for (@required_params) {
unless ( $vds_template_details->{$_} ) {
warn "Required detail is missing!!\n";
return '';
}
$clean_plan_details->{$_} = $vds_template_details->{$_};
}
return $clean_plan_details;
}
# ÐолÑÑаем ID ÑледÑÑÑей впÑки
sub get_next_veid {
my $node_id = shift;
return '' unless $node_id;
my $vds_list = API::ISPManager::vds::list( { %$connection_params } );
return unless $vds_list && ref $vds_list eq 'HASH';
my @id_list =
sort { $a <=> $b }
grep { /^$node_id\d{3}$/ }
map { $vds_list->{$_}->{id} }
keys %$vds_list;
if (@id_list) {
return ++$id_list[-1]; # пÑодолжаем имеÑÑÑÑÑÑ Ð½ÑмеÑаÑиÑ
} else {
return "${node_id}001"; # ÑÑо пеÑвÑй впÑ
}
}
# Создаем ÐÐС
sub create_vps {
my %params = @_;
my $all_params_ok =
$params{password} &&
$params{os} &&
$params{owner} &&
$params{preset} &&
$params{node_id};
unless ($all_params_ok) {
warn "Required parameter missing!\n";
return '';
}
# Ðлок пÑовеÑки вÑ
однÑÑ
паÑамеÑÑов
my $disk_preset = $params{os};
unless ( check_disk_preset($disk_preset) ) {
warn "Disk preset incorrect!\n";
return '';
}
my $vps_preset = $params{preset};
unless ( check_vps_preset($vps_preset) ) {
warn "VPS preset incorrect!\n";
return '';
}
# ÐÑгÑÑжаем подÑобноÑÑи ÑаÑиÑа
my $vps_preset_details = get_vps_preset_details( $vps_preset );
unless ($vps_preset_details && ref $vps_preset_details eq 'HASH') {
warn "Cannot get preset details!\n";
return '';
}
my $node_id = $params{node_id};
unless ($node_id =~ m/^\d$/) {
warn "In Node ID only numbers allowed!\n";
return '';
}
( run in 0.721 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )