aboutsummaryrefslogtreecommitdiffstats
path: root/puppet/services/ceilometer-collector.yaml
blob: e3f1ef4e402de8f6655f0b27b9af340ac388221c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
heat_template_version: 2016-04-08

description: >
  OpenStack Ceilometer Collector service configured with Puppet

parameters:
  ServiceNetMap:
    default: {}
    description: Mapping of service_name -> network name. Typically set
                 via parameter_defaults in the resource registry.  This
                 mapping overrides those in ServiceNetMapDefaults.
    type: json
  DefaultPasswords:
    default: {}
    type: json
  EndpointMap:
    default: {}
    description: Mapping of service endpoint -> protocol. Typically set
                 via parameter_defaults in the resource registry.
    type: json
  MonitoringSubscriptionCeilometerCollector:
    default: 'overcloud-ceilometer-collector'
    type: string
  CeilometerCollectorLoggingSource:
    type: json
    default:
      tag: openstack.ceilometer.collector
      path: /var/log/ceilometer/collector.log

resources:
  CeilometerServiceBase:
    type: ./ceilometer-base.yaml
    properties:
      ServiceNetMap: {get_param: ServiceNetMap}
      DefaultPasswords: {get_param: DefaultPasswords}
      EndpointMap: {get_param: EndpointMap}

  MongoDbBase:
    type: ./database/mongodb-base.yaml
    properties:
      ServiceNetMap: {get_param: ServiceNetMap}
      DefaultPasswords: {get_param: DefaultPasswords}
      EndpointMap: {get_param: EndpointMap}

outputs:
  role_data:
    description: Role data for the Ceilometer Collector role.
    value:
      service_name: ceilometer_collector
      monitoring_subscription: {get_param: MonitoringSubscriptionCeilometerCollector}
      logging_source: {get_param: CeilometerCollectorLoggingSource}
      logging_groups:
        - ceilometer
      config_settings:
        map_merge:
          - get_attr: [MongoDbBase, role_data, config_settings]
          - get_attr: [CeilometerServiceBase, role_data, config_settings]
      service_config_settings:
        get_attr: [CeilometerServiceBase, role_data, service_config_settings]
      step_config: |
        include ::tripleo::profile::base::ceilometer::collector
'#n580'>580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787
.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0
.. (c) OPNFV

========================
IPv6 test specification
========================

.. toctree::
   :maxdepth: 2

Scope
=====

The IPv6 test area will evaluate the ability for a SUT to support IPv6
Tenant Network features and functionality. The tests in this test area will
evaluate,

- network, subnet, port, router API CRUD operations
- interface add and remove operations
- security group and security group rule API CRUD operations
- IPv6 address assignment with dual stack, dual net, multiprefix in mode DHCPv6 stateless or SLAAC

References
================

- upstream openstack API reference

  - http://developer.openstack.org/api-ref

- upstream openstack IPv6 reference

  - https://docs.openstack.org/newton/networking-guide/config-ipv6.html

Definitions and abbreviations
=============================

The following terms and abbreviations are used in conjunction with this test area

- API - Application Programming Interface
- CIDR - Classless Inter-Domain Routing
- CRUD - Create, Read, Update, and Delete
- DHCP - Dynamic Host Configuration Protocol
- DHCPv6 - Dynamic Host Configuration Protocol version 6
- ICMP - Internet Control Message Protocol
- NFVI - Network Functions Virtualization Infrastructure
- NIC - Network Interface Controller
- RA - Router Advertisements
- radvd - The Router Advertisement Daemon
- SDN - Software Defined Network
- SLAAC - Stateless Address Auto Configuration
- TCP - Transmission Control Protocol
- UDP - User Datagram Protocol
- VM - Virtual Machine
- vNIC - virtual Network Interface Card

System Under Test (SUT)
=======================

The system under test is assumed to be the NFVI and VIM deployed with a Pharos compliant infrastructure.

Test Area Structure
====================

The test area is structured based on network, port and subnet operations. Each test case
is able to run independently, i.e. irrelevant of the state created by a previous test.

Test Descriptions
=================

API Used and Reference
----------------------

Networks: https://developer.openstack.org/api-ref/networking/v2/index.html#networks

- show network details
- update network
- delete network
- list networks
- create netowrk
- bulk create networks

Subnets: https://developer.openstack.org/api-ref/networking/v2/index.html#subnets

- list subnets
- create subnet
- bulk create subnet
- show subnet details
- update subnet
- delete subnet

Routers and interface: https://developer.openstack.org/api-ref/networking/v2/index.html#routers-routers

- list routers
- create router
- show router details
- update router
- delete router
- add interface to router
- remove interface from router

Ports: https://developer.openstack.org/api-ref/networking/v2/index.html#ports

- show port details
- update port
- delete port
- list port
- create port
- bulk create ports

Security groups: https://developer.openstack.org/api-ref/networking/v2/index.html#security-groups-security-groups

- list security groups
- create security groups
- show security group
- update security group
- delete security group

Security groups rules: https://developer.openstack.org/api-ref/networking/v2/index.html#security-group-rules-security-group-rules

- list security group rules
- create security group rule
- show security group rule
- delete security group rule

Servers: https://developer.openstack.org/api-ref/compute/

- list servers
- create server
- create multiple servers
- list servers detailed
- show server details
- update server
- delete server

------------------------------------------------------------------
Test Case 1 - Create and Delete Bulk Network, IPv6 Subnet and Port
------------------------------------------------------------------

Short name
----------

opnfv.ipv6.bulk_network_subnet_port_create_delete

Use case specification
----------------------

This test case evaluates the SUT API ability of creating and deleting multiple networks,
IPv6 subnets, ports in one request, the reference is,

tempest.api.network.test_networks.BulkNetworkOpsIpV6Test.test_bulk_create_delete_network
tempest.api.network.test_networks.BulkNetworkOpsIpV6Test.test_bulk_create_delete_subnet
tempest.api.network.test_networks.BulkNetworkOpsIpV6Test.test_bulk_create_delete_port

Test preconditions
------------------

None

Basic test flow execution description and pass/fail criteria
------------------------------------------------------------

Test execution
'''''''''''''''

* Test action 1: Create 2 networks using bulk create, storing the "id" parameters returned in the response
* Test action 2: List all networks, verifying the two network id's are found in the list
* **Test assertion 1:** The two "id" parameters are found in the network list
* Test action 3: Delete the 2 created networks using the stored network ids
* Test action 4: List all networks, verifying the network ids are no longer present
* **Test assertion 2:** The two "id" parameters are not present in the network list
* Test action 5: Create 2 networks using bulk create, storing the "id" parameters returned in the response
* Test action 6: Create an IPv6 subnets on each of the two networks using bulk create commands,
  storing the associated "id" parameters
* Test action 7: List all subnets, verify the IPv6 subnets are found in the list
* **Test assertion 3:** The two IPv6 subnet "id" parameters are found in the network list
* Test action 8: Delete the 2 IPv6 subnets using the stored "id" parameters
* Test action 9: List all subnets, verify the IPv6 subnets are no longer present in the list
* **Test assertion 4:** The two IPv6 subnet "id" parameters, are not present in list
* Test action 10: Delete the 2 networks created in test action 5, using the stored network ids
* Test action 11: List all networks, verifying the network ids are no longer present
* **Test assertion 5:** The two "id" parameters are not present in the network list
* Test action 12: Create 2 networks using bulk create, storing the "id" parameters returned in the response
* Test action 13: Create a port on each of the two networks using bulk create commands,
  storing the associated "port_id" parameters
* Test action 14: List all ports, verify the port_ids are found in the list
* **Test assertion 6:** The two "port_id" parameters are found in the ports list
* Test action 15: Delete the 2 ports using the stored "port_id" parameters
* Test action 16: List all ports, verify port_ids are no longer present in the list
* **Test assertion 7:** The two "port_id" parameters, are not present in list
* Test action 17: Delete the 2 networks created in test action 12, using the stored network ids
* Test action 18: List all networks, verifying the network ids are no longer present
* **Test assertion 8:** The two "id" parameters are not present in the network list

Pass / fail criteria
'''''''''''''''''''''

This test evaluates the ability to use bulk create commands to create networks, IPv6 subnets and ports on
the SUT API.  Specifically it verifies that:

* Bulk network create commands return valid "id" parameters which are reported in the list commands
* Bulk IPv6 subnet commands return valid "id" parameters which are reported in the list commands
* Bulk port commands return valid "port_id" parameters which are reported in the list commands
* All items created using bulk create commands are able to be removed using the returned identifiers

Post conditions
---------------

N/A

-------------------------------------------------------------------
Test Case 2 - Create, Update and Delete an IPv6 Network and Subnet
-------------------------------------------------------------------

Short name
-----------

opnfv.ipv6.network_subnet_create_update_delete

Use case specification
----------------------

This test case evaluates the SUT API ability of creating, updating, deleting
network and IPv6 subnet with the network, the reference is

tempest.api.network.test_networks.NetworksIpV6Test.test_create_update_delete_network_subnet

Test preconditions
------------------

None

Basic test flow execution description and pass/fail criteria
------------------------------------------------------------

Test execution
'''''''''''''''

* Test action 1: Create a network, storing the "id" and "status" parameters returned
  in the response
* Test action 2: Verify the value of the created network's "status" is ACTIVE
* **Test assertion 1:** The created network's "status" is ACTIVE
* Test action 3: Update this network with a new_name
* Test action 4: Verify the network's name equals the new_name
* **Test assertion 2:** The network's name equals to the new_name after name updating
* Test action 5: Create an IPv6 subnet within the network, storing the "id" parameters
  returned in the response
* Test action 6: Update this IPv6 subnet with a new_name
* Test action 7: Verify the IPv6 subnet's name equals the new_name
* **Test assertion 3:** The IPv6 subnet's name equals to the new_name after name updating
* Test action 8: Delete the IPv6 subnet created in test action 5, using the stored subnet id
* Test action 9: List all subnets, verifying the subnet id is no longer present
* **Test assertion 4:** The IPv6 subnet "id" is not present in the subnet list
* Test action 10: Delete the network created in test action 1, using the stored network id
* Test action 11: List all networks, verifying the network id is no longer present
* **Test assertion 5:** The network "id" is not present in the network list


Pass / fail criteria
'''''''''''''''''''''

This test evaluates the ability to create, update, delete network, IPv6 subnet on the
SUT API. Specifically it verifies that:

* Create network commands return ACTIVE "status" parameters which are reported in the list commands
* Update network commands return updated "name" parameters which equals to the "name" used
* Update subnet commands return updated "name" parameters which equals to the "name" used
* All items created using create commands are able to be removed using the returned identifiers

Post conditions
---------------

None

-------------------------------------------------
Test Case 3 - Check External Network Visibility
-------------------------------------------------

Short name
-----------

opnfv.ipv6.external_network_visibility

Use case specification
----------------------

This test case verifies user can see external networks but not subnets, the reference is,

tempest.api.network.test_networks.NetworksIpV6Test.test_external_network_visibility

Test preconditions
------------------

1. The SUT has at least one external network.
2. In the external network list, there is no network without external router, i.e.,
all networks in this list are with external router.
3. There is one external network with configured public network id and there is
no subnet on this network

Basic test flow execution description and pass/fail criteria
------------------------------------------------------------

Test execution
'''''''''''''''

* Test action 1: List all networks with external router, storing the "id"s parameters returned in the response
* Test action 2: Verify list in test action 1 is not empty
* **Test assertion 1:** The network with external router list is not empty
* Test action 3: List all netowrks without external router in test action 1 list
* Test action 4: Verify list in test action 3 is empty
* **Test assertion 2:** networks without external router in the external network
  list is empty
* Test action 5: Verify the configured public network id is found in test action 1 stored "id"s
* **Test assertion 3:** the public network id is found in the external network "id"s
* Test action 6: List the subnets of the external network with the configured
  public network id
* Test action 7: Verify list in test action 6 is empty
* **Test assertion 4:** There is no subnet of the external network with the configured
  public network id

Pass / fail criteria
'''''''''''''''''''''

This test evaluates the ability to use list commands to list external networks, pre-configured
public network. Specifically it verifies that:

* Network list commands to find visible networks with external router
* Network list commands to find visible network with pre-configured public network id
* Subnet list commands to find no subnet on the pre-configured public network

Post conditions
---------------

None

---------------------------------------------
Test Case 4 - List IPv6 Networks and Subnets
---------------------------------------------

Short name
-----------

opnfv.ipv6.network_subnet_list

Use case specification
----------------------

This test case evaluates the SUT API ability of listing netowrks,
subnets after creating a network and an IPv6 subnet, the reference is

tempest.api.network.test_networks.NetworksIpV6Test.test_list_networks
tempest.api.network.test_networks.NetworksIpV6Test.test_list_subnets

Test preconditions
------------------

None

Basic test flow execution description and pass/fail criteria
------------------------------------------------------------

Test execution
'''''''''''''''

* Test action 1: Create a network, storing the "id" parameter returned in the response
* Test action 2: List all networks, verifying the network id is found in the list
* **Test assertion 1:** The "id" parameter is found in the network list
* Test action 3: Create an IPv6 subnet of the network created in test action 1.
  storing the "id" parameter returned in the response
* Test action 4: List all subnets of this network, verifying the IPv6 subnet id
  is found in the list
* **Test assertion 2:** The "id" parameter is found in the IPv6 subnet list
* Test action 5: Delete the IPv6 subnet using the stored "id" parameters
* Test action 6: List all subnets, verify subnet_id is no longer present in the list
* **Test assertion 3:** The IPv6 subnet "id" parameter is not present in list
* Test action 7: Delete the network created in test action 1, using the stored network ids
* Test action 8: List all networks, verifying the network id is no longer present
* **Test assertion 4:** The network "id" parameter is not present in the network list

Pass / fail criteria
''''''''''''''''''''

This test evaluates the ability to use create commands to create network, IPv6 subnet, list
commands to list the created networks, IPv6 subnet on the SUT API. Specifically it verifies that:

* Create commands to create network, IPv6 subnet
* List commands to find that netowrk, IPv6 subnet in the all networks, subnets list after creating
* All items created using create commands are able to be removed using the returned identifiers

Post conditions
---------------

None

-------------------------------------------------------------
Test Case 5 - Show Details of an IPv6 Network and Subnet
-------------------------------------------------------------

Short name
----------

opnfv.ipv6.network_subnet_show

Use case specification
----------------------

This test case evaluates the SUT API ability of showing the network, subnet
details, the reference is,

tempest.api.network.test_networks.NetworksIpV6Test.test_show_network
tempest.api.network.test_networks.NetworksIpV6Test.test_show_subnet

Test preconditions
------------------

None

Basic test flow execution description and pass/fail criteria
------------------------------------------------------------

Test execution
'''''''''''''''

* Test action 1: Create a network, storing the "id" and "name" parameter returned in the response
* Test action 2: Show the network id and name, verifying the network id and name equal to the
  "id" and "name" stored in test action 1
* **Test assertion 1:** The id and name equal to the "id" and "name" stored in test action 1
* Test action 3: Create an IPv6 subnet of the network, storing the "id" and CIDR parameter
  returned in the response
* Test action 4: Show the details of the created IPv6 subnet, verifying the
  id and CIDR in the details are equal to the stored id and CIDR in test action 3.
* **Test assertion 2:** The "id" and CIDR in show details equal to "id" and CIDR stored in test action 3
* Test action 5: Delete the IPv6 subnet using the stored "id" parameter
* Test action 6: List all subnets on the network, verify the IPv6 subnet id is no longer present in the list
* **Test assertion 3:** The IPv6 subnet "id" parameter is not present in list
* Test action 7: Delete the network created in test action 1, using the stored network id
* Test action 8: List all networks, verifying the network id is no longer present
* **Test assertion 4:** The "id" parameter is not present in the network list

Pass / fail criteria
'''''''''''''''''''''

This test evaluates the ability to use create commands to create network, IPv6 subnet and show
commands to show network, IPv6 subnet details on the SUT API. Specifically it verifies that:

* Network show commands return correct "id" and "name" parameter which equal to the returned response in the create commands
* IPv6 subnet show commands return correct "id" and CIDR parameter which equal to the returned response in the create commands
* All items created using create commands are able to be removed using the returned identifiers

Post conditions
---------------

None

-------------------------------------------------------------
Test Case 6 - Create an IPv6 Port in Allowed Allocation Pools
-------------------------------------------------------------

Short name
----------

opnfv.ipv6.port_create_in_allocation_pool

Use case specification
----------------------

This test case evaluates the SUT API ability of creating
an IPv6 subnet within allowed IPv6 address allocation pool and creating
a port whose address is in the range of the pool, the reference is,

tempest.api.network.test_ports.PortsIpV6TestJSON.test_create_port_in_allowed_allocation_pools

Test preconditions
------------------

There should be an IPv6 CIDR configuration, which prefixlen is less than 126.

Basic test flow execution description and pass/fail criteria
------------------------------------------------------------

Test execution
'''''''''''''''

* Test action 1: Create a network, storing the "id" parameter returned in the response
* Test action 2: Check the allocation pools configuration, verifying the prefixlen
  of the IPv6 CIDR configuration is less than 126.
* **Test assertion 1:** The prefixlen of the IPv6 CIDR configuration is less than 126
* Test action 3: Get the allocation pool by setting the start_ip and end_ip
  based on the IPv6 CIDR configuration.
* Test action 4: Create an IPv6 subnet of the network within the allocation pools,
  storing the "id" parameter returned in the response
* Test action 5: Create a port of the network, storing the "id" parameter returned in the response
* Test action 6: Verify the port's id is in the range of the allocation pools which is got is test action 3
* **Test assertion 2:** the port's id is in the range of the allocation pools
* Test action 7: Delete the port using the stored "id" parameter
* Test action 8: List all ports, verify the port id is no longer present in the list
* **Test assertion 3:** The port "id" parameter is not present in list
* Test action 9: Delete the IPv6 subnet using the stored "id" parameter
* Test action 10: List all subnets on the network, verify the IPv6 subnet id is no longer present in the list
* **Test assertion 4:** The IPv6 subnet "id" parameter is not present in list
* Test action 11: Delete the network created in test action 1, using the stored network id
* Test action 12: List all networks, verifying the network id is no longer present
* **Test assertion 5:** The "id" parameter is not present in the network list

Pass / fail criteria
'''''''''''''''''''''

This test evaluates the ability to use create commands to create an IPv6 subnet within allowed
IPv6 address allocation pool and create a port whose address is in the range of the pool. Specifically it verifies that:

* IPv6 subnet create command to create an IPv6 subnet within allowed IPv6 address allocation pool
* Port create command to create a port whose id is in the range of the allocation pools
* All items created using create commands are able to be removed using the returned identifiers

Post conditions
---------------

None

-------------------------------------------------------------
Test Case 7 - Create an IPv6 Port with Empty Security Groups
-------------------------------------------------------------

Short name
-----------

opnfv.ipv6.port_create_empty_security_group

Use case specification
----------------------

This test case evaluates the SUT API ability of creating port with empty
security group, the reference is,

tempest.api.network.test_ports.PortsIpV6TestJSON.test_create_port_with_no_securitygroups

Test preconditions
------------------

None

Basic test flow execution description and pass/fail criteria
------------------------------------------------------------

Test execution
'''''''''''''''

* Test action 1: Create a network, storing the "id" parameter returned in the response
* Test action 2: Create an IPv6 subnet of the network, storing the "id" parameter returned in the response
* Test action 3: Create a port of the network with an empty security group, storing the "id" parameter returned in the response
* Test action 4: Verify the security group of the port is not none but is empty
* **Test assertion 1:** the security group of the port is not none but is empty
* Test action 5: Delete the port using the stored "id" parameter
* Test action 6: List all ports, verify the port id is no longer present in the list
* **Test assertion 2:** The port "id" parameter is not present in list
* Test action 7: Delete the IPv6 subnet using the stored "id" parameter
* Test action 8: List all subnets on the network, verify the IPv6 subnet id is no longer present in the list
* **Test assertion 3:** The IPv6 subnet "id" parameter is not present in list
* Test action 9: Delete the network created in test action 1, using the stored network id
* Test action 10: List all networks, verifying the network id is no longer present
* **Test assertion 4:** The "id" parameter is not present in the network list

Pass / fail criteria
'''''''''''''''''''''

This test evaluates the ability to use create commands to create port with
empty security group of the SUT API. Specifically it verifies that:

* Port create commands to create a port with an empty security group
* All items created using create commands are able to be removed using the returned identifiers

Post conditions
---------------

None

-----------------------------------------------------
Test Case 8 - Create, Update and Delete an IPv6 Port
-----------------------------------------------------

Short name
----------

opnfv.ipv6.port_create_update_delete

Use case specification
----------------------

This test case evaluates the SUT API ability of creating, updating,
deleting IPv6 port, the reference is,

tempest.api.network.test_ports.PortsIpV6TestJSON.test_create_update_delete_port

Test preconditions
------------------

None

Basic test flow execution description and pass/fail criteria
------------------------------------------------------------

Test execution
'''''''''''''''

* Test action 1: Create a network, storing the "id" parameter returned in the response
* Test action 2: Create a port of the network, storing the "id" and "admin_state_up" parameters
  returned in the response
* Test action 3: Verify the value of port's 'admin_state_up' is True
* **Test assertion 1:** the value of port's 'admin_state_up' is True after creating
* Test action 4: Update the port's name with a new_name and set port's admin_state_up to False,
  storing the name and admin_state_up parameters returned in the response
* Test action 5: Verify the stored port's name equals to new_name and the port's admin_state_up is False.
* **Test assertion 2:** the stored port's name equals to new_name and the port's admin_state_up is False
* Test action 6: Delete the port using the stored "id" parameter
* Test action 7: List all ports, verify the port is no longer present in the list
* **Test assertion 3:** The port "id" parameter is not present in list
* Test action 8: Delete the network created in test action 1, using the stored network id
* Test action 9: List all networks, verifying the network id is no longer present
* **Test assertion 4:** The "id" parameter is not present in the network list

Pass / fail criteria
''''''''''''''''''''

This test evaluates the ability to use create/update/delete commands to create/update/delete port
of the SUT API. Specifically it verifies that:

* Port create commands return True of 'admin_state_up' in response
* Port update commands to update 'name' to new_name and 'admin_state_up' to false
* All items created using create commands are able to be removed using the returned identifiers

Post conditions
---------------

None

------------------------------
Test Case 9 - List IPv6 Ports
------------------------------

Short name
----------

opnfv.ipv6.tc009.port_list

Use case specification
----------------------

This test case evaluates the SUT ability of creating a port on a network and
finding the port in the all ports list, the reference is,

tempest.api.network.test_ports.PortsIpV6TestJSON.test_list_ports

Test preconditions
------------------

None

Basic test flow execution description and pass/fail criteria
------------------------------------------------------------

Test execution
'''''''''''''''

* Test action 1: Create a network, storing the "id" parameter returned in the response
* Test action 2: Create a port of the network, storing the "id" parameter returned in the response
* Test action 3: List all ports, verify the port id is found in the list
* **Test assertion 1:** The "id" parameter is found in the port list
* Test action 4: Delete the port using the stored "id" parameter
* Test action 5: List all ports, verify the port is no longer present in the list
* **Test assertion 2:** The port "id" parameter is not present in list
* Test action 6: Delete the network created in test action 1, using the stored network id
* Test action 7: List all networks, verifying the network id is no longer present
* **Test assertion 3:** The "id" parameter is not present in the network list

Pass / fail criteria
'''''''''''''''''''''

This test evaluates the ability to use list commands to list the networks and ports on
the SUT API. Specifically it verifies that:

* Port list command to list all ports, the created port is found in the list.
* All items created using create commands are able to be removed using the returned identifiers

Post conditions
---------------

None

-------------------------------------------------------
Test Case 10 - Show Key/Valus Details of an IPv6 Port
-------------------------------------------------------

Short name
----------

opnfv.ipv6.tc010.port_show_details

Use case specification
----------------------

This test case evaluates the SUT ability of showing the port
details, the values in the details should be equal to the values to create the port,
the reference is,

tempest.api.network.test_ports.PortsIpV6TestJSON.test_show_port

Test preconditions
------------------

None

Basic test flow execution description and pass/fail criteria
------------------------------------------------------------

Test execution
'''''''''''''''

* Test action 1: Create a network, storing the "id" parameter returned in the response
* Test action 2: Create a port of the network, storing the "id" parameter returned in the response
* Test action 3: Show the details of the port, verify the stored port's id
  in test action 2 exists in the details
* **Test assertion 1:** The "id" parameter is found in the port shown details
* Test action 4: Verify the values in the details of the port are the same as the values
  to create the port
* **Test assertion 2:** The values in the details of the port are the same as the values
  to create the port
* Test action 5: Delete the port using the stored "id" parameter
* Test action 6: List all ports, verify the port is no longer present in the list
* **Test assertion 3:** The port "id" parameter is not present in list
* Test action 7: Delete the network created in test action 1, using the stored network id
* Test action 8: List all networks, verifying the network id is no longer present
* **Test assertion 4:** The "id" parameter is not present in the network list

Pass / fail criteria
'''''''''''''''''''''

This test evaluates the ability to use show commands to show port details on the SUT API.
Specifically it verifies that:

* Port show commands to show the details of the port, whose id is in the details
* Port show commands to show the details of the port, whose values are the same as the values
  to create the port
* All items created using create commands are able to be removed using the returned identifiers

Post conditions
---------------

None

---------------------------------------------------------
Test Case 11 - Add Multiple Interfaces for an IPv6 Router
---------------------------------------------------------

Short name
-----------

opnfv.ipv6.router_add_multiple_interface

Use case specification
----------------------

This test case evaluates the SUT ability of adding multiple interface
to a router, the reference is,

tempest.api.network.test_routers.RoutersIpV6Test.test_add_multiple_router_interfaces

Test preconditions
------------------

None

Basic test flow execution description and pass/fail criteria
------------------------------------------------------------

Test execution
'''''''''''''''

* Test action 1: Create 2 networks named network01 and network02 sequentially,
  storing the "id" parameters returned in the response
* Test action 2: Create an IPv6 subnet01 in network01, an IPv6 subnet02 in network02 sequentially,
  storing the "id" parameters returned in the response
* Test action 3: Create a router, storing the "id" parameter returned in the response
* Test action 4: Create interface01 with subnet01 and the router
* Test action 5: Verify the router_id stored in test action 3 equals to the interface01's 'device_id'
  and subnet01_id stored in test action 2 equals to the interface01's 'subnet_id'
* **Test assertion 1:** the router_id equals to the interface01's 'device_id'
  and subnet01_id equals to the interface01's 'subnet_id'
* Test action 5: Create interface02 with subnet02 and the router
* Test action 6: Verify the router_id stored in test action 3 equals to the interface02's 'device_id'
  and subnet02_id stored in test action 2 equals to the interface02's 'subnet_id'
* **Test assertion 2:** the router_id equals to the interface02's 'device_id'
  and subnet02_id equals to the interface02's 'subnet_id'
* Test action 7: Delete the interfaces, router, IPv6 subnets and networks, networks, subnets, then list
  all interfaces, ports, IPv6 subnets, networks, the test passes if the deleted ones
  are not found in the list.
* **Test assertion 3:** The interfaces, router, IPv6 subnets and networks ids are not present in the lists
  after deleting

Pass / fail criteria
'''''''''''''''''''''

This test evaluates the ability to use bulk create commands to create networks, IPv6 subnets and ports on
the SUT API.  Specifically it verifies that:

* Interface create commands to create interface with IPv6 subnet and router, interface 'device_id' and
  'subnet_id' should equal to the router id and IPv6 subnet id, respectively.
* Interface create commands to create multiple interface with the same router and multiple IPv6 subnets.
* All items created using create commands are able to be removed using the returned identifiers

Post conditions
---------------

None

-------------------------------------------------------------------
Test Case 12 - Add and Remove an IPv6 Router Interface with port_id
-------------------------------------------------------------------

Short name
----------

opnfv.ipv6.router_interface_add_remove_with_port

Use case specification
----------------------

This test case evaluates the SUT abiltiy of adding, removing router interface to
a port, the subnet_id and port_id of the interface will be checked,
the port's device_id will be checked if equals to the router_id or not. The
reference is,

tempest.api.network.test_routers.RoutersIpV6Test.test_add_remove_router_interface_with_port_id

Test preconditions
------------------

None

Basic test flow execution description and pass/fail criteria
------------------------------------------------------------

Test execution
'''''''''''''''

* Test action 1: Create a network, storing the "id" parameter returned in the response
* Test action 2: Create an IPv6 subnet of the network, storing the "id" parameter returned in the response
* Test action 3: Create a router, storing the "id" parameter returned in the response
* Test action 4: Create a port of the network, storing the "id" parameter returned in the response
* Test action 5: Add router interface to the port created, storing the "id" parameter returned in the response
* Test action 6: Verify the interface's keys include 'subnet_id' and 'port_id'
* **Test assertion 1:** the interface's keys include 'subnet_id' and 'port_id'
* Test action 7: Show the port details, verify the 'device_id' in port details equals to the router id stored
  in test action 3
* **Test assertion 2:** 'device_id' in port details equals to the router id
* Test action 8: Delete the interface, port, router, subnet and network, then list
  all interfaces, ports, routers, subnets and networks, the test passes if the deleted
  ones are not found in the list.
* **Test assertion 3:** interfaces, ports, routers, subnets and networks are not found in the lists after deleting

Pass / fail criteria
'''''''''''''''''''''

This test evaluates the ability to use add/remove commands to add/remove router interface to the port,
show commands to show port details on the SUT API. Specifically it verifies that:

* Router_interface add commands to add router interface to a port, the interface's keys should include 'subnet_id' and 'port_id'
* Port show commands to show 'device_id' in port details, which should be equal to the router id
* All items created using create commands are able to be removed using the returned identifiers

Post conditions
---------------

None

---------------------------------------------------------------------
Test Case 13 - Add and Remove an IPv6 Router Interface with subnet_id
---------------------------------------------------------------------

Short name
----------

opnfv.ipv6.router_interface_add_remove

Use case specification
----------------------

This test case evaluates the SUT API ability of adding and removing a router interface with
the IPv6 subnet id, the reference is

tempest.api.network.test_routers.RoutersIpV6Test.test_add_remove_router_interface_with_subnet_id

Test preconditions
------------------

None

Basic test flow execution description and pass/fail criteria
------------------------------------------------------------

Test execution
'''''''''''''''

* Test action 1: Create a network, storing the "id" parameter returned in the response
* Test action 2: Create an IPv6 subnet with the network created, storing the "id" parameter
  returned in the response
* Test action 3: Create a router, storing the "id" parameter returned in the response
* Test action 4: Add a router interface with the stored ids of the router and IPv6 subnet
* **Test assertion 1:** Key 'subnet_id' is included in the added interface's keys
* **Test assertion 2:** Key 'port_id' is included in the added interface's keys
* Test action 5: Show the port info with the stored interface's port id
* **Test assertion 3:**: The stored router id is equal to the device id shown in the port info
* Test action 6: Delete the router interface created in test action 4, using the stored subnet id
* Test action 7: List all router interfaces, verifying the router interface is no longer present
* **Test assertion 4:** The router interface with the stored subnet id is not present
  in the router interface list
* Test action 8: Delete the router created in test action 3, using the stored router id
* Test action 9: List all routers, verifying the router id is no longer present
* **Test assertion 5:** The router "id" parameter is not present in the router list
* Test action 10: Delete the subnet created in test action 2, using the stored subnet id
* Test action 11: List all subnets, verifying the subnet id is no longer present
* **Test assertion 6:** The subnet "id" parameter is not present in the subnet list
* Test action 12: Delete the network created in test action 1, using the stored network id
* Test action 13: List all networks, verifying the network id is no longer present
* **Test assertion 7:** The network "id" parameter is not present in the network list

Pass / fail criteria
''''''''''''''''''''

This test evaluates the ability to add and remove router interface with the subnet id on the
SUT API. Specifically it verifies that:

* Router interface add command returns valid 'subnet_id' parameter which is reported
  in the interface's keys
* Router interface add command returns valid 'port_id' parameter which is reported
  in the interface's keys
* All items created using create commands are able to be removed using the returned identifiers

Post conditions
---------------

None

-------------------------------------------------------------------
Test Case 14 - Create, Show, List, Update and Delete an IPv6 router
-------------------------------------------------------------------

Short name
----------

opnfv.ipv6.router_create_show_list_update_delete

Use case specification
----------------------

This test case evaluates the SUT API ability of creating, showing, listing, updating
and deleting routers, the reference is

tempest.api.network.test_routers.RoutersIpV6Test.test_create_show_list_update_delete_router

Test preconditions
------------------

There should exist an OpenStack external network.

Basic test flow execution description and pass/fail criteria
------------------------------------------------------------

Test execution
'''''''''''''''

* Test action 1: Create a router, set the admin_state_up to be False and external_network_id
  to be public network id, storing the "id" parameter returned in the response
* **Test assertion 1:** The created router's admin_state_up is False
* **Test assertion 2:** The created router's external network id equals to the public network id
* Test action 2: Show details of the router created in test action 1, using the stored router id
* **Test assertion 3:** The router's name shown is the same as the router created
* **Test assertion 4:** The router's external network id shown is the same as the public network id
* Test action 3: List all routers and verify if created router is in response message
* **Test assertion 5:** The stored router id is in the router list
* Test action 4: Update the name of router and verify if it is updated
* **Test assertion 6:** The name of router equals to the name used to update in test action 4
* Test action 5: Show the details of router, using the stored router id
* **Test assertion 7:** The router's name shown equals to the name used to update in test action 4
* Test action 6: Delete the router created in test action 1, using the stored router id
* Test action 7: List all routers, verifying the router id is no longer present
* **Test assertion 8:** The "id" parameter is not present in the router list

Pass / fail criteria
'''''''''''''''''''''

This test evaluates the ability to create, show, list, update and delete router on
the SUT API. Specifically it verifies that:

* Router create command returns valid "admin_state_up" and "id" parameters which equal to the
  "admin_state_up" and "id" returned in the response
* Router show command returns valid "name" parameter which equals to the "name" returned in the response
* Router show command returns valid "external network id" parameters which equals to the public network id
* Router list command returns valid "id" parameter which equals to the stored router "id"
* Router update command returns updated "name" parameters which equals to the "name" used to update
* Router created using create command is able to be removed using the returned identifiers

Post conditions
---------------

None

---------------------------------------------------------------------------
Test Case 15 - Create, List, Update, Show and Delete an IPv6 security group
---------------------------------------------------------------------------

Short name
----------

opnfv.ipv6.security_group_create_list_update_show_delete

Use case specification
----------------------

This test case evaluates the SUT API ability of creating, listing, updating, showing
and deleting security groups, the reference is

tempest.api.network.test_security_groups.SecGroupIPv6Test.test_create_list_update_show_delete_security_group

Test preconditions
------------------

None

Basic test flow execution description and pass/fail criteria
------------------------------------------------------------

Test execution
'''''''''''''''

* Test action 1: Create a security group, storing the "id" parameter returned in the response
* Test action 2: List all security groups and verify if created security group is there in response
* **Test assertion 1:** The created security group's "id" is found in the list
* Test action 3: Update the name and description of this security group, using the stored id
* Test action 4: Verify if the security group's name and description are updated
* **Test assertion 2:** The security group's name equals to the name used in test action 3
* **Test assertion 3:** The security group's description equals to the description used in test action 3
* Test action 5: Show details of the updated security group, using the stored id
* **Test assertion 4:** The security group's name shown equals to the name used in test action 3
* **Test assertion 5:** The security group's description shown equals to the description used in test action 3
* Test action 6: Delete the security group created in test action 1, using the stored id
* Test action 7: List all security groups, verifying the security group's id is no longer present
* **Test assertion 6:** The "id" parameter is not present in the security group list

Pass / fail criteria
''''''''''''''''''''

This test evaluates the ability to create list, update, show and delete security group on
the SUT API. Specifically it verifies that:

* Security group create commands return valid "id" parameter which is reported in the list commands
* Security group update commands return valid "name" and "description" parameters which are
  reported in the show commands
* Security group created using create command is able to be removed using the returned identifiers

Post conditions
---------------

None

---------------------------------------------------------------
Test Case 16 - Create, Show and Delete IPv6 security group rule
---------------------------------------------------------------

Short name
----------

opnfv.ipv6.security_group_rule_create_show_delete

Use case specification
----------------------

This test case evaluates the SUT API ability of creating, showing, listing and deleting
security group rules, the reference is

tempest.api.network.test_security_groups.SecGroupIPv6Test.test_create_show_delete_security_group_rule

Test preconditions
------------------

None

Basic test flow execution description and pass/fail criteria
------------------------------------------------------------

Test execution
'''''''''''''''

* Test action 1: Create a security group, storing the "id" parameter returned in the response
* Test action 2: Create a rule of the security group with protocol tcp, udp and icmp, respectively,
  using the stored security group's id, storing the "id" parameter returned in the response
* Test action 3: Show details of the created security group rule, using the stored id of the
  security group rule
* **Test assertion 1:** All the created security group rule's values equal to the rule values
  shown in test action 3
* Test action 4: List all security group rules
* **Test assertion 2:** The stored security group rule's id is found in the list
* Test action 5: Delete the security group rule, using the stored security group rule's id
* Test action 6: List all security group rules, verifying the security group rule's id is no longer present
* **Test assertion 3:** The security group rule "id" parameter is not present in the list
* Test action 7: Delete the security group, using the stored security group's id
* Test action 8: List all security groups, verifying the security group's id is no longer present
* **Test assertion 4:** The security group "id" parameter is not present in the list

Pass / fail criteria
'''''''''''''''''''''

This test evaluates the ability to create, show, list and delete security group rules on
the SUT API. Specifically it verifies that:

* Security group rule create command returns valid values which are reported in the show command
* Security group rule created using create command is able to be removed using the returned identifiers

Post conditions
---------------

None

----------------------------------------
Test Case 17 - List IPv6 Security Groups
----------------------------------------

Short name
----------

opnfv.ipv6.security_group_list

Use case specification
----------------------

This test case evaluates the SUT API ability of listing security groups, the reference is

tempest.api.network.test_security_groups.SecGroupIPv6Test.test_list_security_groups

Test preconditions
------------------

There should exist a default security group.

Basic test flow execution description and pass/fail criteria
------------------------------------------------------------

Test execution
'''''''''''''''

* Test action 1: List all security groups
* Test action 2: Verify the default security group exists in the list, the test passes
  if the default security group exists
* **Test assertion 1:** The default security group is in the list

Pass / fail criteria
'''''''''''''''''''''

This test evaluates the ability to list security groups on the SUT API.
Specifically it verifies that:

* Security group list command return valid security groups which include the default security group

Post conditions
---------------

None

----------------------------------------------------------------------------
Test Case 18 - IPv6 Address Assignment - Dual Stack, SLAAC, DHCPv6 Stateless
----------------------------------------------------------------------------

Short name
----------

opnfv.ipv6.dhcpv6_stateless

Use case specification
----------------------

This test case evaluates IPv6 address assignment in ipv6_ra_mode 'dhcpv6_stateless'
and ipv6_address_mode 'dhcpv6_stateless'.
In this case, guest instance obtains IPv6 address from OpenStack managed radvd
using SLAAC and optional info from dnsmasq using DHCPv6 stateless. This test case then
verifies the ping6 available VM can ping the other VM's v4 and v6 addresses
as well as the v6 subnet's gateway ip in the same network, the reference is

tempest.scenario.test_network_v6.TestGettingAddress.test_dhcp6_stateless_from_os

Test preconditions
------------------

There should exist a public router or a public network.

Basic test flow execution description and pass/fail criteria
------------------------------------------------------------

Test execution
'''''''''''''''

* Test action 1: Create one network, storing the "id" parameter returned in the response
* Test action 2: Create one IPv4 subnet of the created network, storing the "id"
  parameter returned in the response
* Test action 3: If there exists a public router, use it as the router. Otherwise,
  use the public network to create a router
* Test action 4: Connect the IPv4 subnet to the router, using the stored IPv4 subnet id
* Test action 5: Create one IPv6 subnet of the network created in test action 1 in
  ipv6_ra_mode 'dhcpv6_stateless' and ipv6_address_mode 'dhcpv6_stateless',
  storing the "id" parameter returned in the response
* Test action 6: Connect the IPv6 subnet to the router, using the stored IPv6 subnet id
* Test action 7: Boot two VMs on this network, storing the "id" parameters returned in the response
* **Test assertion 1:** The vNIC of each VM gets one v4 address and one v6 address actually assigned
* **Test assertion 2:** Each VM can ping the other's v4 private address
* **Test assertion 3:** The ping6 available VM can ping the other's v6 address
  as well as the v6 subnet's gateway ip
* Test action 8: Delete the 2 VMs created in test action 7, using the stored ids
* Test action 9: List all VMs, verifying the ids are no longer present
* **Test assertion 4:** The two "id" parameters are not present in the VM list
* Test action 10: Delete the IPv4 subnet created in test action 2, using the stored id
* Test action 11: Delete the IPv6 subnet created in test action 5, using the stored id
* Test action 12: List all subnets, verifying the ids are no longer present
* **Test assertion 5:** The "id" parameters of IPv4 and IPv6 are not present in the list
* Test action 13: Delete the network created in test action 1, using the stored id
* Test action 14: List all networks, verifying the id is no longer present
* **Test assertion 6:** The "id" parameter is not present in the network list

Pass / fail criteria
'''''''''''''''''''''

This test evaluates the ability to assign IPv6 addresses in ipv6_ra_mode
'dhcpv6_stateless' and ipv6_address_mode 'dhcpv6_stateless',
and verify the ping6 available VM can ping the other VM's v4 and v6 addresses as well as
the v6 subnet's gateway ip in the same network. Specifically it verifies that:

* The IPv6 addresses in mode 'dhcpv6_stateless' assigned successfully
* The VM can ping the other VM's IPv4 and IPv6 private addresses as well as the v6 subnet's gateway ip
* All items created using create commands are able to be removed using the returned identifiers

Post conditions
---------------

None

--------------------------------------------------------------------------------------
Test Case 19 - IPv6 Address Assignment - Dual Net, Dual Stack, SLAAC, DHCPv6 Stateless
--------------------------------------------------------------------------------------

Short name
----------

opnfv.ipv6.dualnet_dhcpv6_stateless

Use case specification
----------------------

This test case evaluates IPv6 address assignment in ipv6_ra_mode 'dhcpv6_stateless'
and ipv6_address_mode 'dhcpv6_stateless'.
In this case, guest instance obtains IPv6 address from OpenStack managed radvd
using SLAAC and optional info from dnsmasq using DHCPv6 stateless. This test case then
verifies the ping6 available VM can ping the other VM's v4 address in one network
and v6 address in another network as well as the v6 subnet's gateway ip, the reference is

tempest.scenario.test_network_v6.TestGettingAddress.test_dualnet_dhcp6_stateless_from_os

Test preconditions
------------------

There should exists a public router or a public network.

Basic test flow execution description and pass/fail criteria
------------------------------------------------------------

Test execution
'''''''''''''''

* Test action 1: Create one network, storing the "id" parameter returned in the response
* Test action 2: Create one IPv4 subnet of the created network, storing the "id"
  parameter returned in the response
* Test action 3: If there exists a public router, use it as the router. Otherwise,
  use the public network to create a router
* Test action 4: Connect the IPv4 subnet to the router, using the stored IPv4 subnet id
* Test action 5: Create another network, storing the "id" parameter returned in the response
* Test action 6: Create one IPv6 subnet of network created in test action 5 in
  ipv6_ra_mode 'dhcpv6_stateless' and ipv6_address_mode 'dhcpv6_stateless',
  storing the "id" parameter returned in the response
* Test action 7: Connect the IPv6 subnet to the router, using the stored IPv6 subnet id
* Test action 8: Boot two VMs on these two networks, storing the "id" parameters returned in the response
* Test action 9: Turn on 2nd NIC of each VM for the network created in test action 5
* **Test assertion 1:** The 1st vNIC of each VM gets one v4 address assigned and
  the 2nd vNIC of each VM gets one v6 address actually assigned
* **Test assertion 2:** Each VM can ping the other's v4 private address
* **Test assertion 3:** The ping6 available VM can ping the other's v6 address
  as well as the v6 subnet's gateway ip
* Test action 10: Delete the 2 VMs created in test action 8, using the stored ids
* Test action 11: List all VMs, verifying the ids are no longer present
* **Test assertion 4:** The two "id" parameters are not present in the VM list
* Test action 12: Delete the IPv4 subnet created in test action 2, using the stored id
* Test action 13: Delete the IPv6 subnet created in test action 6, using the stored id
* Test action 14: List all subnets, verifying the ids are no longer present
* **Test assertion 5:** The "id" parameters of IPv4 and IPv6 are not present in the list
* Test action 15: Delete the 2 networks created in test action 1 and 5, using the stored ids
* Test action 16: List all networks, verifying the ids are no longer present
* **Test assertion 6:** The two "id" parameters are not present in the network list

Pass / fail criteria
''''''''''''''''''''

This test evaluates the ability to assign IPv6 addresses in ipv6_ra_mode 'dhcpv6_stateless'
and ipv6_address_mode 'dhcpv6_stateless', and verify the ping6 available VM can ping
the other VM's v4 address in one network and v6 address in another network as well as
the v6 subnet's gateway ip. Specifically it verifies that:

* The IPv6 addresses in mode 'dhcpv6_stateless' assigned successfully
* The VM can ping the other VM's IPv4 address in one network and IPv6 address in another
  network as well as the v6 subnet's gateway ip
* All items created using create commands are able to be removed using the returned identifiers

Post conditions
---------------

None

-----------------------------------------------------------------------------------------------
Test Case 20 - IPv6 Address Assignment - Multiple Prefixes, Dual Stack, SLAAC, DHCPv6 Stateless
-----------------------------------------------------------------------------------------------

Short name
----------

opnfv.ipv6.multiple_prefixes_dhcpv6_stateless

Use case specification
----------------------

This test case evaluates IPv6 address assignment in ipv6_ra_mode 'dhcpv6_stateless'
and ipv6_address_mode 'dhcpv6_stateless'.
In this case, guest instance obtains IPv6 addresses from OpenStack managed radvd
using SLAAC and optional info from dnsmasq using DHCPv6 stateless. This test case then
verifies the ping6 available VM can ping the other VM's one v4 address and two v6
addresses with different prefixes as well as the v6 subnets' gateway ips in the
same network, the reference is

tempest.scenario.test_network_v6.TestGettingAddress.test_multi_prefix_dhcpv6_stateless

Test preconditions
------------------

There should exist a public router or a public network.

Basic test flow execution description and pass/fail criteria
------------------------------------------------------------

Test execution
'''''''''''''''

* Test action 1: Create one network, storing the "id" parameter returned in the response
* Test action 2: Create one IPv4 subnet of the created network, storing the "id"
  parameter returned in the response
* Test action 3: If there exists a public router, use it as the router. Otherwise,
  use the public network to create a router
* Test action 4: Connect the IPv4 subnet to the router, using the stored IPv4 subnet id
* Test action 5: Create two IPv6 subnets of the network created in test action 1 in
  ipv6_ra_mode 'dhcpv6_stateless' and ipv6_address_mode 'dhcpv6_stateless',
  storing the "id" parameters returned in the response
* Test action 6: Connect the two IPv6 subnets to the router, using the stored IPv6 subnet ids
* Test action 7: Boot two VMs on this network, storing the "id" parameters returned in the response
* **Test assertion 1:** The vNIC of each VM gets one v4 address and two v6 addresses with
  different prefixes actually assigned
* **Test assertion 2:** Each VM can ping the other's v4 private address
* **Test assertion 3:** The ping6 available VM can ping the other's v6 addresses
  as well as the v6 subnets' gateway ips
* Test action 8: Delete the 2 VMs created in test action 7, using the stored ids
* Test action 9: List all VMs, verifying the ids are no longer present
* **Test assertion 4:** The two "id" parameters are not present in the VM list
* Test action 10: Delete the IPv4 subnet created in test action 2, using the stored id
* Test action 11: Delete two IPv6 subnets created in test action 5, using the stored ids
* Test action 12: List all subnets, verifying the ids are no longer present
* **Test assertion 5:** The "id" parameters of IPv4 and IPv6 are not present in the list
* Test action 13: Delete the network created in test action 1, using the stored id
* Test action 14: List all networks, verifying the id is no longer present
* **Test assertion 6:** The "id" parameter is not present in the network list

Pass / fail criteria
'''''''''''''''''''''

This test evaluates the ability to assign IPv6 addresses in ipv6_ra_mode 'dhcpv6_stateless'
and ipv6_address_mode 'dhcpv6_stateless',
and verify the ping6 available VM can ping the other VM's v4 address and two
v6 addresses with different prefixes as well as the v6 subnets' gateway ips in the same network.
Specifically it verifies that:

* The different prefixes IPv6 addresses in mode 'dhcpv6_stateless' assigned successfully
* The VM can ping the other VM's IPv4 and IPv6 private addresses as well as the v6 subnets' gateway ips
* All items created using create commands are able to be removed using the returned identifiers

Post conditions
---------------

None

---------------------------------------------------------------------------------------------------------
Test Case 21 - IPv6 Address Assignment - Dual Net, Multiple Prefixes, Dual Stack, SLAAC, DHCPv6 Stateless
---------------------------------------------------------------------------------------------------------

Short name
----------

opnfv.ipv6.dualnet_multiple_prefixes_dhcpv6_stateless

Use case specification
----------------------

This test case evaluates IPv6 address assignment in ipv6_ra_mode 'dhcpv6_stateless'
and ipv6_address_mode 'dhcpv6_stateless'.
In this case, guest instance obtains IPv6 addresses from OpenStack managed radvd
using SLAAC and optional info from dnsmasq using DHCPv6 stateless. This test case then
verifies the ping6 available VM can ping the other VM's v4 address in one network
and two v6 addresses with different prefixes in another network as well as the
v6 subnets' gateway ips, the reference is

tempest.scenario.test_network_v6.TestGettingAddress.test_dualnet_multi_prefix_dhcpv6_stateless

Test preconditions
------------------

There should exist a public router or a public network.

Basic test flow execution description and pass/fail criteria
------------------------------------------------------------

Test execution
'''''''''''''''

* Test action 1: Create one network, storing the "id" parameter returned in the response
* Test action 2: Create one IPv4 subnet of the created network, storing the "id"
  parameter returned in the response
* Test action 3: If there exists a public router, use it as the router. Otherwise,
  use the public network to create a router
* Test action 4: Connect the IPv4 subnet to the router, using the stored IPv4 subnet id
* Test action 5: Create another network, storing the "id" parameter returned in the response
* Test action 6: Create two IPv6 subnets of network created in test action 5 in
  ipv6_ra_mode 'dhcpv6_stateless' and ipv6_address_mode 'dhcpv6_stateless',
  storing the "id" parameters returned in the response
* Test action 7: Connect the two IPv6 subnets to the router, using the stored IPv6 subnet ids
* Test action 8: Boot two VMs on these two networks, storing the "id" parameters returned in the response
* Test action 9: Turn on 2nd NIC of each VM for the network created in test action 5
* **Test assertion 1:** The vNIC of each VM gets one v4 address and two v6 addresses
  with different prefixes actually assigned
* **Test assertion 2:** Each VM can ping the other's v4 private address
* **Test assertion 3:** The ping6 available VM can ping the other's v6 addresses
  as well as the v6 subnets' gateway ips
* Test action 10: Delete the 2 VMs created in test action 8, using the stored ids
* Test action 11: List all VMs, verifying the ids are no longer present
* **Test assertion 4:** The two "id" parameters are not present in the VM list
* Test action 12: Delete the IPv4 subnet created in test action 2, using the stored id
* Test action 13: Delete two IPv6 subnets created in test action 6, using the stored ids
* Test action 14: List all subnets, verifying the ids are no longer present
* **Test assertion 5:** The "id" parameters of IPv4 and IPv6 are not present in the list
* Test action 15: Delete the 2 networks created in test action 1 and 5, using the stored ids
* Test action 16: List all networks, verifying the ids are no longer present
* **Test assertion 6:** The two "id" parameters are not present in the network list

Pass / fail criteria
'''''''''''''''''''''

This test evaluates the ability to assign IPv6 addresses in ipv6_ra_mode 'dhcpv6_stateless'
and ipv6_address_mode 'dhcpv6_stateless',
and verify the ping6 available VM can ping the other VM's v4 address in one network and two
v6 addresses with different prefixes in another network as well as the v6 subnets'
gateway ips. Specifically it verifies that:

* The IPv6 addresses in mode 'dhcpv6_stateless' assigned successfully
* The VM can ping the other VM's IPv4 and IPv6 private addresses as well as the v6 subnets' gateway ips
* All items created using create commands are able to be removed using the returned identifiers

Post conditions
---------------

None

----------------------------------------------------------
Test Case 22 - IPv6 Address Assignment - Dual Stack, SLAAC
----------------------------------------------------------

Short name
----------

opnfv.ipv6.slaac

Use case specification
----------------------

This test case evaluates IPv6 address assignment in ipv6_ra_mode 'slaac' and
ipv6_address_mode 'slaac'.
In this case, guest instance obtains IPv6 address from OpenStack managed radvd
using SLAAC. This test case then verifies the ping6 available VM can ping the other
VM's v4 and v6 addresses as well as the v6 subnet's gateway ip in the
same network, the reference is

tempest.scenario.test_network_v6.TestGettingAddress.test_slaac_from_os

Test preconditions
------------------

There should exist a public router or a public network.

Basic test flow execution description and pass/fail criteria
------------------------------------------------------------

Test execution
'''''''''''''''

* Test action 1: Create one network, storing the "id" parameter returned in the response
* Test action 2: Create one IPv4 subnet of the created network, storing the "id"
  parameter returned in the response
* Test action 3: If there exists a public router, use it as the router. Otherwise,
  use the public network to create a router
* Test action 4: Connect the IPv4 subnet to the router, using the stored IPv4 subnet id
* Test action 5: Create one IPv6 subnet of the network created in test action 1 in
  ipv6_ra_mode 'slaac' and ipv6_address_mode 'slaac', storing the "id" parameter returned in the response
* Test action 6: Connect the IPv6 subnet to the router, using the stored IPv6 subnet id
* Test action 7: Boot two VMs on this network, storing the "id" parameters returned in the response
* **Test assertion 1:** The vNIC of each VM gets one v4 address and one v6 address actually assigned
* **Test assertion 2:** Each VM can ping the other's v4 private address
* **Test assertion 3:** The ping6 available VM can ping the other's v6 address
  as well as the v6 subnet's gateway ip
* Test action 8: Delete the 2 VMs created in test action 7, using the stored ids
* Test action 9: List all VMs, verifying the ids are no longer present
* **Test assertion 4:** The two "id" parameters are not present in the VM list
* Test action 10: Delete the IPv4 subnet created in test action 2, using the stored id
* Test action 11: Delete the IPv6 subnet created in test action 5, using the stored id
* Test action 12: List all subnets, verifying the ids are no longer present
* **Test assertion 5:** The "id" parameters of IPv4 and IPv6 are not present in the list
* Test action 13: Delete the network created in test action 1, using the stored id
* Test action 14: List all networks, verifying the id is no longer present
* **Test assertion 6:** The "id" parameter is not present in the network list

Pass / fail criteria
'''''''''''''''''''''

This test evaluates the ability to assign IPv6 addresses in ipv6_ra_mode 'slaac'
and ipv6_address_mode 'slaac',
and verify the ping6 available VM can ping the other VM's v4 and v6 addresses as well as
the v6 subnet's gateway ip in the same network. Specifically it verifies that:

* The IPv6 addresses in mode 'slaac' assigned successfully
* The VM can ping the other VM's IPv4 and IPv6 private addresses as well as the v6 subnet's gateway ip
* All items created using create commands are able to be removed using the returned identifiers

Post conditions
---------------

None

--------------------------------------------------------------------
Test Case 23 - IPv6 Address Assignment - Dual Net, Dual Stack, SLAAC
--------------------------------------------------------------------

Short name
----------

opnfv.ipv6.dualnet_slaac

Use case specification
----------------------

This test case evaluates IPv6 address assignment in ipv6_ra_mode 'slaac' and
ipv6_address_mode 'slaac'.
In this case, guest instance obtains IPv6 address from OpenStack managed radvd
using SLAAC. This test case then verifies the ping6 available VM can ping the other
VM's v4 address in one network and v6 address in another network as well as the
v6 subnet's gateway ip, the reference is

tempest.scenario.test_network_v6.TestGettingAddress.test_dualnet_slaac_from_os

Test preconditions
------------------

There should exist a public router or a public network.

Basic test flow execution description and pass/fail criteria
------------------------------------------------------------

Test execution
'''''''''''''''

* Test action 1: Create one network, storing the "id" parameter returned in the response
* Test action 2: Create one IPv4 subnet of the created network, storing the "id"
  parameter returned in the response
* Test action 3: If there exists a public router, use it as the router. Otherwise,
  use the public network to create a router
* Test action 4: Connect the IPv4 subnet to the router, using the stored IPv4 subnet id
* Test action 5: Create another network, storing the "id" parameter returned in the response
* Test action 6: Create one IPv6 subnet of network created in test action 5 in
  ipv6_ra_mode 'slaac' and ipv6_address_mode 'slaac', storing the "id" parameter returned in the response
* Test action 7: Connect the IPv6 subnet to the router, using the stored IPv6 subnet id
* Test action 8: Boot two VMs on these two networks, storing the "id" parameters returned in the response
* Test action 9: Turn on 2nd NIC of each VM for the network created in test action 5
* **Test assertion 1:** The 1st vNIC of each VM gets one v4 address assigned and
  the 2nd vNIC of each VM gets one v6 address actually assigned
* **Test assertion 2:** Each VM can ping the other's v4 private address
* **Test assertion 3:** The ping6 available VM can ping the other's v6 address
  as well as the v6 subnet's gateway ip
* Test action 10: Delete the 2 VMs created in test action 8, using the stored ids
* Test action 11: List all VMs, verifying the ids are no longer present
* **Test assertion 4:** The two "id" parameters are not present in the VM list
* Test action 12: Delete the IPv4 subnet created in test action 2, using the stored id
* Test action 13: Delete the IPv6 subnet created in test action 6, using the stored id
* Test action 14: List all subnets, verifying the ids are no longer present
* **Test assertion 5:** The "id" parameters of IPv4 and IPv6 are not present in the list
* Test action 15: Delete the 2 networks created in test action 1 and 5, using the stored ids
* Test action 16: List all networks, verifying the ids are no longer present
* **Test assertion 6:** The two "id" parameters are not present in the network list

Pass / fail criteria
'''''''''''''''''''''

This test evaluates the ability to assign IPv6 addresses in ipv6_ra_mode 'slaac'
and ipv6_address_mode 'slaac',
and verify the ping6 available VM can ping the other VM's v4 address in one network and
v6 address in another network as well as the v6 subnet's gateway ip. Specifically it verifies that:

* The IPv6 addresses in mode 'slaac' assigned successfully
* The VM can ping the other VM's IPv4 address in one network and IPv6 address
  in another network as well as the v6 subnet's gateway ip
* All items created using create commands are able to be removed using the returned identifiers

Post conditions
---------------

None

-----------------------------------------------------------------------------
Test Case 24 - IPv6 Address Assignment - Multiple Prefixes, Dual Stack, SLAAC
-----------------------------------------------------------------------------

Short name
----------

opnfv.ipv6.multiple_prefixes_slaac

Use case specification
----------------------

This test case evaluates IPv6 address assignment in ipv6_ra_mode 'slaac' and
ipv6_address_mode 'slaac'.
In this case, guest instance obtains IPv6 addresses from OpenStack managed radvd
using SLAAC. This test case then verifies the ping6 available VM can ping the other
VM's one v4 address and two v6 addresses with different prefixes as well as the v6
subnets' gateway ips in the same network, the reference is

tempest.scenario.test_network_v6.TestGettingAddress.test_multi_prefix_slaac

Test preconditions
------------------

There should exists a public router or a public network.

Basic test flow execution description and pass/fail criteria
------------------------------------------------------------

Test execution
'''''''''''''''

* Test action 1: Create one network, storing the "id" parameter returned in the response
* Test action 2: Create one IPv4 subnet of the created network, storing the "id
  parameter returned in the response
* Test action 3: If there exists a public router, use it as the router. Otherwise,
  use the public network to create a router
* Test action 4: Connect the IPv4 subnet to the router, using the stored IPv4 subnet id
* Test action 5: Create two IPv6 subnets of the network created in test action 1 in
  ipv6_ra_mode 'slaac' and ipv6_address_mode 'slaac', storing the "id" parameters returned in the response
* Test action 6: Connect the two IPv6 subnets to the router, using the stored IPv6 subnet ids
* Test action 7: Boot two VMs on this network, storing the "id" parameters returned in the response
* **Test assertion 1:** The vNIC of each VM gets one v4 address and two v6 addresses with
  different prefixes actually assigned
* **Test assertion 2:** Each VM can ping the other's v4 private address
* **Test assertion 3:** The ping6 available VM can ping the other's v6 addresses
  as well as the v6 subnets' gateway ips
* Test action 8: Delete the 2 VMs created in test action 7, using the stored ids
* Test action 9: List all VMs, verifying the ids are no longer present
* **Test assertion 4:** The two "id" parameters are not present in the VM list
* Test action 10: Delete the IPv4 subnet created in test action 2, using the stored id
* Test action 11: Delete two IPv6 subnets created in test action 5, using the stored ids
* Test action 12: List all subnets, verifying the ids are no longer present
* **Test assertion 5:** The "id" parameters of IPv4 and IPv6 are not present in the list
* Test action 13: Delete the network created in test action 1, using the stored id
* Test action 14: List all networks, verifying the id is no longer present
* **Test assertion 6:** The "id" parameter is not present in the network list

Pass / fail criteria
'''''''''''''''''''''

This test evaluates the ability to assign IPv6 addresses in ipv6_ra_mode 'slaac'
and ipv6_address_mode 'slaac',
and verify the ping6 available VM can ping the other VM's v4 address and two
v6 addresses with different prefixes as well as the v6 subnets' gateway ips in the same network.
Specifically it verifies that:

* The different prefixes IPv6 addresses in mode 'slaac' assigned successfully
* The VM can ping the other VM's IPv4 and IPv6 private addresses as well as the v6 subnets' gateway ips
* All items created using create commands are able to be removed using the returned identifiers

Post conditions
---------------

None

---------------------------------------------------------------------------------------
Test Case 25 - IPv6 Address Assignment - Dual Net, Dual Stack, Multiple Prefixes, SLAAC
---------------------------------------------------------------------------------------

Short name
----------

opnfv.ipv6.dualnet_multiple_prefixes_slaac

Use case specification
----------------------

This test case evaluates IPv6 address assignment in ipv6_ra_mode 'slaac' and
ipv6_address_mode 'slaac'.
In this case, guest instance obtains IPv6 addresses from OpenStack managed radvd
using SLAAC. This test case then verifies the ping6 available VM can ping the other
VM's v4 address in one network and two v6 addresses with different prefixes in another
network as well as the v6 subnets' gateway ips, the reference is

tempest.scenario.test_network_v6.TestGettingAddress.test_dualnet_multi_prefix_slaac

Test preconditions
------------------

There should exist a public router or a public network.

Basic test flow execution description and pass/fail criteria
------------------------------------------------------------

Test execution
'''''''''''''''

* Test action 1: Create one network, storing the "id" parameter returned in the response
* Test action 2: Create one IPv4 subnet of the created network, storing the "id"
  parameter returned in the response
* Test action 3: If there exists a public router, use it as the router. Otherwise,
  use the public network to create a router
* Test action 4: Connect the IPv4 subnet to the router, using the stored IPv4 subnet id
* Test action 5: Create another network, storing the "id" parameter returned in the response
* Test action 6: Create two IPv6 subnets of network created in test action 5 in
  ipv6_ra_mode 'slaac' and ipv6_address_mode 'slaac', storing the "id" parameters returned in the response
* Test action 7: Connect the two IPv6 subnets to the router, using the stored IPv6 subnet ids
* Test action 8: Boot two VMs on these two networks, storing the "id" parameters returned in the response
* Test action 9: Turn on 2nd NIC of each VM for the network created in test action 5
* **Test assertion 1:** The vNIC of each VM gets one v4 address and two v6 addresses
  with different prefixes actually assigned
* **Test assertion 2:** Each VM can ping the other's v4 private address
* **Test assertion 3:** The ping6 available VM can ping the other's v6 addresses
  as well as the v6 subnets' gateway ips
* Test action 10: Delete the 2 VMs created in test action 8, using the stored ids
* Test action 11: List all VMs, verifying the ids are no longer present
* **Test assertion 4:** The two "id" parameters are not present in the VM list
* Test action 12: Delete the IPv4 subnet created in test action 2, using the stored id
* Test action 13: Delete two IPv6 subnets created in test action 6, using the stored ids
* Test action 14: List all subnets, verifying the ids are no longer present
* **Test assertion 5:** The "id" parameters of IPv4 and IPv6 are not present in the list
* Test action 15: Delete the 2 networks created in test action 1 and 5, using the stored ids
* Test action 16: List all networks, verifying the ids are no longer present
* **Test assertion 6:** The two "id" parameters are not present in the network list

Pass / fail criteria
'''''''''''''''''''''

This test evaluates the ability to assign IPv6 addresses in ipv6_ra_mode 'slaac'
and ipv6_address_mode 'slaac',
and verify the ping6 available VM can ping the other VM's v4 address in one network and two
v6 addresses with different prefixes in another network as well as the v6 subnets' gateway ips.
Specifically it verifies that:

* The IPv6 addresses in mode 'slaac' assigned successfully
* The VM can ping the other VM's IPv4 and IPv6 private addresses as well as the v6 subnets' gateway ips
* All items created using create commands are able to be removed using the returned identifiers

Post conditions
---------------

None