#!/usr/bin/env perl
use
lib
"$FindBin::Bin/../t/lib"
;
my
$VALID_ID
= match
qr{^[a-f0-9\-]+$}
;
my
$IMAGE_UID
=
'170fafa5-1329-44a3-9c27-9bb77b77206d'
;
my
$IMAGE_NAME
=
'myimage'
;
my
$SERVER_NAME
=
'testsuite OpenStack::MetaAPI'
;
SKIP: {
skip
"OS_AUTH_URL unset, please source one openrc.sh file before."
unless
$ENV
{OS_AUTH_URL};
mock_lwp_useragent();
my
$api
= OpenStack::MetaAPI->new(
$ENV
{OS_AUTH_URL},
username
=>
$ENV
{
'OS_USERNAME'
},
password
=>
$ENV
{
'OS_PASSWORD'
},
version
=> 3,
scope
=> {
project
=> {
name
=>
$ENV
{
'OS_PROJECT_NAME'
},
domain
=> {
id
=>
'default'
},
}
},
);
{
note
"delete servers from previous run"
;
delete_test_servers(
$api
);
}
{
note
"create a server from one image"
;
my
$vm
=
$api
->create_vm(
name
=>
$SERVER_NAME
,
image
=>
$IMAGE_UID
,
flavor
=>
'small'
,
key_name
=>
'openStack nico'
,
network
=>
'Dev Infra initial gre network'
,
network_for_floating_ip
=>
'vlan3340-product'
,
);
like
$vm
, hash {
field
id
=>
$VALID_ID
;
field
name
=>
$SERVER_NAME
;
field
floating_ip_address
=> match
qr/^\d+\.\d+\.\d+\.\d+$/
a;
field
floating_ip_id
=>
$VALID_ID
;
field
status
=>
'ACTIVE'
;
etc;
},
"created a vm with a floating ip"
or diag explain
$vm
;
}
}
done_testing;
exit
;
sub
delete_test_servers {
my
(
$api
) =
@_
;
my
@servers
=
$api
->servers(
name
=>
$SERVER_NAME
);
foreach
my
$server
(
@servers
) {
next
unless
defined
$server
->{id} &&
length
$server
->{id};
note
"delete server - "
,
"id: "
,
$server
->{id},
" ; name: "
,
$server
->{name};
$api
->delete_server(
$server
->{id});
}
return
;
}