+OpenStack CLI Verification
+--------------------------
+
+This section is for users who do not have web access or prefer to use command line rather
+than a web browser to validate the OpenStack installation. Do not run this if you have
+already completed the OpenStack verification, since this uses the same names.
+
+1. Install the OpenStack CLI tools or log-in to one of the compute or control servers.
+
+2. Find the IP of keystone public VIP. As root:
+
+ cat /var/opt/opnfv/foreman_vm/opnfv_ksgen_settings.yml | \
+ grep keystone_public_vip
+
+3. Set the environment variables. Substitute the keystone public VIP for <VIP> below.
+
+ | export OS_AUTH_URL=http://<VIP>:5000/v2.0
+ | export OS_TENANT_NAME="admin"
+ | export OS_USERNAME="admin"
+ | export OS_PASSWORD="octopus"
+
+4. Load the CirrOS image into glance.
+
+ glance image-create --copy-from \
+ http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img \
+ --disk-format qcow2 --container-format bare --name 'CirrOS'
+
+5. Verify the image is downloaded. The status will be "active" when the download completes.
+
+ ``glance image-show CirrOS``
+
+6. Create a private tenant network.
+
+ ``neutron net-create test_network``
+
+7. Verify the network has been created by running the command below.
+
+ ``neutron net-show test_network``
+
+8. Create a subnet for the tenant network.
+
+ ``neutron subnet-create test_network --name test_subnet --dns-nameserver 8.8.8.8 10.0.0.0/24``
+
+9. Verify the subnet was created.
+
+ ``neutron subnet-show test_subnet``
+
+10. Add an interface from the test_subnet to the provider router.
+
+ ``neutron router-interface-add provider_router test_subnet``
+
+11. Verify the interface was added.
+
+ ``neutron router-port-list``
+
+12. Deploy a VM.
+
+ ``nova boot --flavor 1 --image CirrOS cirros1``
+
+13. Wait for the VM to complete booting. This can be completed by viewing the console log until a
+ login prompt appears.
+
+ ``nova console-log cirros1``
+
+14. Get the local ip from the VM.
+
+ ``nova show cirros1 | grep test_network``
+
+15. Get the port ID for the ip from the previous command. Replace <IP> with the IP from the previous
+ command. The port id is the first series of numbers and letters.
+
+ ``neutron port-list | grep 10.0.0.2 | awk ' { print $2 } '``
+
+16. Assign a floating ip to the VM. Substitue the port-id from the previous command for <PORT_ID>
+
+ ``neutron floatingip-create --port-id <PORT_ID> provider_network``
+
+17. Log into the vm. Substitute FLOATING_IP for the floating_ip_address displayed in the output in
+ the above command.
+
+ ``ssh cirros@<FLOATING_IP>``
+
+18. Logout and create a second VM.
+
+ ``nova boot --flavor 1 --image CirrOS cirros2``
+
+19. Get the ip for cirros2.
+
+ ``nova show cirros2 | grep test_network``
+
+20. Redo step 17 to log back into cirros1 and ping cirros2. Replace <CIRROS2> with the ip from the
+ previous step.
+
+ ``ping <CIRROS2>``
+