#!/usr/bin/env perl
use
lib
"$FindBin::Bin/lib"
;
mock_lwp_useragent();
$Test::OpenStack::MetaAPI::UA_DISPLAY_OUTPUT
= 1;
my
$api
= get_api_object(
use_env
=> 0);
ok
$api
,
"got one api object"
or
die
;
{
note
"Testing Network service"
;
mock_get_request(
application_json(json_for_floatingips()),
);
my
$IMAGE_UID
=
'170fafa5-1329-44a3-9c27-9bb77b77206d'
;
my
$IMAGE_NAME
=
'myimage'
;
like [
$api
->floatingips()],
[
{
'created_at'
=>
'2016-12-21T10:55:50Z'
,
'description'
=>
'for test'
,
'dns_domain'
=>
'my-domain.org.'
,
'dns_name'
=>
'myfip'
,
'fixed_ip_address'
=>
'10.0.0.3'
,
'floating_ip_address'
=>
'172.24.4.228'
,
'floating_network_id'
=>
'376da547-b977-4cfe-9cba-275c80debf57'
,
'id'
=>
'2f245a7b-796b-4f26-9cf9-9e82d248fda7'
,
'port_details'
=> {
'admin_state_up'
=>
bless
(
do
{ \(
my
$o
= 1) },
'JSON::PP::Boolean'
),
'device_id'
=>
'8e3941b4-a6e9-499f-a1ac-2a4662025cba'
,
'device_owner'
=>
'compute:nova'
,
'mac_address'
=>
'fa:16:3e:b1:3b:30'
,
'name'
=>
''
,
'network_id'
=>
'02dd8479-ef26-4398-a102-d19d0a7b3a1f'
,
'status'
=>
'ACTIVE'
},
'port_forwardings'
=> [],
'port_id'
=>
'ce705c24-c1ef-408a-bda3-7bbd946164ab'
,
'project_id'
=>
'4969c491a3c74ee4af974e6d800c62de'
,
'revision_number'
=> 1,
'router_id'
=>
'd23abc8d-2991-4a55-ba98-2aaea84cc72f'
,
'status'
=>
'ACTIVE'
,
'tags'
=> [
'tag1,tag2'
],
'tenant_id'
=>
'4969c491a3c74ee4af974e6d800c62de'
,
'updated_at'
=>
'2016-12-21T10:55:53Z'
},
{
'created_at'
=>
'2016-12-21T11:55:50Z'
,
'description'
=>
'for test'
,
'dns_domain'
=>
'my-domain.org.'
,
'dns_name'
=>
'myfip2'
,
'fixed_ip_address'
=>
undef
,
'floating_ip_address'
=>
'172.24.4.227'
,
'floating_network_id'
=>
'376da547-b977-4cfe-9cba-275c80debf57'
,
'id'
=>
'61cea855-49cb-4846-997d-801b70c71bdd'
,
'port_details'
=>
undef
,
'port_forwardings'
=> [],
'port_id'
=>
undef
,
'project_id'
=>
'4969c491a3c74ee4af974e6d800c62de'
,
'revision_number'
=> 2,
'router_id'
=>
undef
,
'status'
=>
'DOWN'
,
'tags'
=> [
'tag1,tag2'
],
'tenant_id'
=>
'4969c491a3c74ee4af974e6d800c62de'
,
'updated_at'
=>
'2016-12-21T11:55:53Z'
},
{
'created_at'
=>
'2018-06-15T02:12:48Z'
,
'description'
=>
'for test with port forwarding'
,
'dns_domain'
=>
'my-domain.org.'
,
'dns_name'
=>
'myfip3'
,
'fixed_ip_address'
=>
undef
,
'floating_ip_address'
=>
'172.24.4.42'
,
'floating_network_id'
=>
'376da547-b977-4cfe-9cba-275c80debf57'
,
'id'
=>
'898b198e-49f7-47d6-a7e1-53f626a548e6'
,
'port_forwardings'
=> [
{
'external_port'
=> 2225,
'internal_ip_address'
=>
'10.0.0.19'
,
'internal_port'
=> 25,
'protocol'
=>
'tcp'
},
{
'external_port'
=> 8786,
'internal_ip_address'
=>
'10.0.0.18'
,
'internal_port'
=> 16666,
'protocol'
=>
'tcp'
}
],
'port_id'
=>
undef
,
'project_id'
=>
'4969c491a3c74ee4af974e6d800c62de'
,
'revision_number'
=> 1,
'router_id'
=>
'0303bf18-2c52-479c-bd68-e0ad712a1639'
,
'status'
=>
'ACTIVE'
,
'tags'
=> [],
'tenant_id'
=>
'4969c491a3c74ee4af974e6d800c62de'
,
'updated_at'
=>
'2018-06-15T02:12:57Z'
}]
,
"floatingips"
;
mock_get_request(
application_json(json_for_security_groups()),
);
is
$api
->security_groups, {
'created_at'
=>
'2018-03-19T19:16:56Z'
,
'description'
=>
'default'
,
'id'
=>
'85cc3048-abc3-43cc-89b3-377341426ac5'
,
'name'
=>
'default'
,
'project_id'
=>
'e4f50856753b4dc6afee5fa6b9b6c550'
,
'revision_number'
=> 8,
'security_group_rules'
=> [
{
'created_at'
=>
'2018-03-19T19:16:56Z'
,
'description'
=>
''
,
'direction'
=>
'egress'
,
'ethertype'
=>
'IPv6'
,
'id'
=>
'3c0e45ff-adaf-4124-b083-bf390e5482ff'
,
'port_range_max'
=>
undef
,
'port_range_min'
=>
undef
,
'project_id'
=>
'e4f50856753b4dc6afee5fa6b9b6c550'
,
'protocol'
=>
undef
,
'remote_group_id'
=>
undef
,
'remote_ip_prefix'
=>
undef
,
'revision_number'
=> 1,
'security_group_id'
=>
'85cc3048-abc3-43cc-89b3-377341426ac5'
,
'tags'
=> [
'tag1,tag2'
],
'tenant_id'
=>
'e4f50856753b4dc6afee5fa6b9b6c550'
,
'updated_at'
=>
'2018-03-19T19:16:56Z'
},
{
'created_at'
=>
'2018-03-19T19:16:56Z'
,
'description'
=>
''
,
'direction'
=>
'egress'
,
'ethertype'
=>
'IPv4'
,
'id'
=>
'93aa42e5-80db-4581-9391-3a608bd0e448'
,
'port_range_max'
=>
undef
,
'port_range_min'
=>
undef
,
'project_id'
=>
'e4f50856753b4dc6afee5fa6b9b6c550'
,
'protocol'
=>
undef
,
'remote_group_id'
=>
undef
,
'remote_ip_prefix'
=>
undef
,
'revision_number'
=> 2,
'security_group_id'
=>
'85cc3048-abc3-43cc-89b3-377341426ac5'
,
'tags'
=> [
'tag1,tag2'
],
'tenant_id'
=>
'e4f50856753b4dc6afee5fa6b9b6c550'
,
'updated_at'
=>
'2018-03-19T19:16:56Z'
},
{
'created_at'
=>
'2018-03-19T19:16:56Z'
,
'description'
=>
''
,
'direction'
=>
'ingress'
,
'ethertype'
=>
'IPv6'
,
'id'
=>
'c0b09f00-1d49-4e64-a0a7-8a186d928138'
,
'port_range_max'
=>
undef
,
'port_range_min'
=>
undef
,
'project_id'
=>
'e4f50856753b4dc6afee5fa6b9b6c550'
,
'protocol'
=>
undef
,
'remote_group_id'
=>
'85cc3048-abc3-43cc-89b3-377341426ac5'
,
'remote_ip_prefix'
=>
undef
,
'revision_number'
=> 1,
'security_group_id'
=>
'85cc3048-abc3-43cc-89b3-377341426ac5'
,
'tags'
=> [
'tag1,tag2'
],
'tenant_id'
=>
'e4f50856753b4dc6afee5fa6b9b6c550'
,
'updated_at'
=>
'2018-03-19T19:16:56Z'
},
{
'created_at'
=>
'2018-03-19T19:16:56Z'
,
'description'
=>
''
,
'direction'
=>
'ingress'
,
'ethertype'
=>
'IPv4'
,
'id'
=>
'f7d45c89-008e-4bab-88ad-d6811724c51c'
,
'port_range_max'
=>
undef
,
'port_range_min'
=>
undef
,
'project_id'
=>
'e4f50856753b4dc6afee5fa6b9b6c550'
,
'protocol'
=>
undef
,
'remote_group_id'
=>
'85cc3048-abc3-43cc-89b3-377341426ac5'
,
'remote_ip_prefix'
=>
undef
,
'revision_number'
=> 1,
'security_group_id'
=>
'85cc3048-abc3-43cc-89b3-377341426ac5'
,
'tags'
=> [
'tag1,tag2'
],
'tenant_id'
=>
'e4f50856753b4dc6afee5fa6b9b6c550'
,
'updated_at'
=>
'2018-03-19T19:16:56Z'
}
],
'tags'
=> [
'tag1,tag2'
],
'tenant_id'
=>
'e4f50856753b4dc6afee5fa6b9b6c550'
,
'updated_at'
=>
'2018-03-19T19:16:56Z'
},
"security_groups"
;
}
done_testing;
sub
json_for_floatingips {
return
<<'JSON';
{
"floatingips": [
{
"router_id": "d23abc8d-2991-4a55-ba98-2aaea84cc72f",
"description": "for test",
"dns_domain": "my-domain.org.",
"dns_name": "myfip",
"created_at": "2016-12-21T10:55:50Z",
"updated_at": "2016-12-21T10:55:53Z",
"revision_number": 1,
"project_id": "4969c491a3c74ee4af974e6d800c62de",
"tenant_id": "4969c491a3c74ee4af974e6d800c62de",
"floating_network_id": "376da547-b977-4cfe-9cba-275c80debf57",
"fixed_ip_address": "10.0.0.3",
"floating_ip_address": "172.24.4.228",
"port_id": "ce705c24-c1ef-408a-bda3-7bbd946164ab",
"id": "2f245a7b-796b-4f26-9cf9-9e82d248fda7",
"status": "ACTIVE",
"port_details": {
"status": "ACTIVE",
"name": "",
"admin_state_up": true,
"network_id": "02dd8479-ef26-4398-a102-d19d0a7b3a1f",
"device_owner": "compute:nova",
"mac_address": "fa:16:3e:b1:3b:30",
"device_id": "8e3941b4-a6e9-499f-a1ac-2a4662025cba"
},
"tags": ["tag1,tag2"],
"port_forwardings": []
},
{
"router_id": null,
"description": "for test",
"dns_domain": "my-domain.org.",
"dns_name": "myfip2",
"created_at": "2016-12-21T11:55:50Z",
"updated_at": "2016-12-21T11:55:53Z",
"revision_number": 2,
"project_id": "4969c491a3c74ee4af974e6d800c62de",
"tenant_id": "4969c491a3c74ee4af974e6d800c62de",
"floating_network_id": "376da547-b977-4cfe-9cba-275c80debf57",
"fixed_ip_address": null,
"floating_ip_address": "172.24.4.227",
"port_id": null,
"id": "61cea855-49cb-4846-997d-801b70c71bdd",
"status": "DOWN",
"port_details": null,
"tags": ["tag1,tag2"],
"port_forwardings": []
},
{
"router_id": "0303bf18-2c52-479c-bd68-e0ad712a1639",
"description": "for test with port forwarding",
"dns_domain": "my-domain.org.",
"dns_name": "myfip3",
"created_at": "2018-06-15T02:12:48Z",
"updated_at": "2018-06-15T02:12:57Z",
"revision_number": 1,
"project_id": "4969c491a3c74ee4af974e6d800c62de",
"tenant_id": "4969c491a3c74ee4af974e6d800c62de",
"floating_network_id": "376da547-b977-4cfe-9cba-275c80debf57",
"fixed_ip_address": null,
"floating_ip_address": "172.24.4.42",
"port_id": null,
"id": "898b198e-49f7-47d6-a7e1-53f626a548e6",
"status": "ACTIVE",
"tags": [],
"port_forwardings": [
{
"protocol": "tcp",
"internal_ip_address": "10.0.0.19",
"internal_port": 25,
"external_port": 2225
},
{
"protocol": "tcp",
"internal_ip_address": "10.0.0.18",
"internal_port": 16666,
"external_port": 8786
}
]
}
]
}
JSON
}
sub
json_for_security_groups {
return
<<JSON;
{
"security_groups": [
{
"description": "default",
"id": "85cc3048-abc3-43cc-89b3-377341426ac5",
"name": "default",
"security_group_rules": [
{
"direction": "egress",
"ethertype": "IPv6",
"id": "3c0e45ff-adaf-4124-b083-bf390e5482ff",
"port_range_max": null,
"port_range_min": null,
"protocol": null,
"remote_group_id": null,
"remote_ip_prefix": null,
"security_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5",
"project_id": "e4f50856753b4dc6afee5fa6b9b6c550",
"revision_number": 1,
"tags": ["tag1,tag2"],
"tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550",
"created_at": "2018-03-19T19:16:56Z",
"updated_at": "2018-03-19T19:16:56Z",
"description": ""
},
{
"direction": "egress",
"ethertype": "IPv4",
"id": "93aa42e5-80db-4581-9391-3a608bd0e448",
"port_range_max": null,
"port_range_min": null,
"protocol": null,
"remote_group_id": null,
"remote_ip_prefix": null,
"security_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5",
"project_id": "e4f50856753b4dc6afee5fa6b9b6c550",
"revision_number": 2,
"tags": ["tag1,tag2"],
"tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550",
"created_at": "2018-03-19T19:16:56Z",
"updated_at": "2018-03-19T19:16:56Z",
"description": ""
},
{
"direction": "ingress",
"ethertype": "IPv6",
"id": "c0b09f00-1d49-4e64-a0a7-8a186d928138",
"port_range_max": null,
"port_range_min": null,
"protocol": null,
"remote_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5",
"remote_ip_prefix": null,
"security_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5",
"project_id": "e4f50856753b4dc6afee5fa6b9b6c550",
"revision_number": 1,
"tags": ["tag1,tag2"],
"tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550",
"created_at": "2018-03-19T19:16:56Z",
"updated_at": "2018-03-19T19:16:56Z",
"description": ""
},
{
"direction": "ingress",
"ethertype": "IPv4",
"id": "f7d45c89-008e-4bab-88ad-d6811724c51c",
"port_range_max": null,
"port_range_min": null,
"protocol": null,
"remote_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5",
"remote_ip_prefix": null,
"security_group_id": "85cc3048-abc3-43cc-89b3-377341426ac5",
"project_id": "e4f50856753b4dc6afee5fa6b9b6c550",
"revision_number": 1,
"tags": ["tag1,tag2"],
"tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550",
"created_at": "2018-03-19T19:16:56Z",
"updated_at": "2018-03-19T19:16:56Z",
"description": ""
}
],
"project_id": "e4f50856753b4dc6afee5fa6b9b6c550",
"revision_number": 8,
"created_at": "2018-03-19T19:16:56Z",
"updated_at": "2018-03-19T19:16:56Z",
"tags": ["tag1,tag2"],
"tenant_id": "e4f50856753b4dc6afee5fa6b9b6c550"
}
]
}
JSON
}