tempest - interactively manage OS through tempest lib

Registered by alex kang

Motive:
[1] tempest lacks utilities to interactively communicate with OS.
[2] the only method I know to interactively communicate with OS is specifying -d at run_tempest.sh so test cases go to debug mode when "import pdb; pdb.set_trace()" executed. With -d, pdb.set_trace() cause error.

Functions: itempest provides the interactive actions between users and OS via tempest libraries and its configuration to provide:
[1] interactively managing OS - thinking python commands mapping to CLI commands
[2] interactively design functions to manage OS which latest can be used in designing tempest test cases (API, Scenario, performance and scaling) - using reload command, use can, at runtime, design functions, debug them, test them before design tempest test cases.
[3] a different prospective to invite users to try-it to find out how tempest works without knowing how testtools embedded into the test framework.
[4] As teach tool in python commands format to manage OS like CLI does.

Real world scenarios:
[A.1] create project/user CTX1
[A.2] create network topology using CTX1
[A.3] boot VM's to CTX1 - validate data plane
[A.4] do other things == add/delete/update ...
[A.5] notify CTX1 upgrading is coming
[A.6] upgrade OS
[A.7] Upgrade completed, notify CTX1 to validate its network topology and data plane
[B] repeat A with project/user CTX2 or executed simultaneously with CTX1

Blueprint information

Status:
Complete
Approver:
alex kang
Priority:
Undefined
Drafter:
alex kang
Direction:
Needs approval
Assignee:
alex kang
Definition:
New
Series goal:
None
Implementation:
Implemented
Milestone target:
None
Started by
alex kang
Completed by
alex kang

Related branches

Sprints

Whiteboard

[1] a TempestMgr class create admin/demo users (like the admin and demo account in devstack).
    [1.1] tm = TempestMgr('Demo') # create Demo-A (admin) and Demo-D (demo) project/tenant and user
    [1.2] network = c_network(tm.network_client)
              network = c_network(tm.network_client, name='demo-network')
    [1.3] subnet = c_subnet(tm.network_client, network)
              subnet = c_subnet(tm.network_client, network, cidr='192.168.123.0/24', mask_bits=26, ip_version=4)
    [1.4] d_network(tm.network_client, network.id)
    [1.5] ?change to TempestProject | TempestOSProject as openstack package seems to replace keystone and everything starts with project/tenent & its users.
[2] modules contains mehtods demo how to create resources/objects:
    [2.1] create network (and delete, update, list, show - CRUD)
    [2.2] CRUD subnet
    [2.3] CRUD router, and set-gateway, add/del-interface
    [2.4] CRUD server
    [2.5] CRUD floating-ip and associate to server, disassociate from server
    [2.6] CRUD security-group

changed the work to mimic openstack CLI. so we can do something like CLI. Please refer to https://etherpad.openstack.org/p/itempest-example-01

(?)

Work Items

Work items:
Create TempestMgr class to can create project and user: DONE
Create access functions to perform neutron functions: DONE
Create access functions to perform nova functions: DONE
Create access functions to perform glance functions: DONE
Create access functions to perform keystone functions: DONE
Upload itempest source repository to https://github.com/gravity-tak/interactive-tempest.git : DONE

This blueprint contains Public information 
Everyone can see this information.