diff --git a/README.rst b/README.rst
new file mode 100644
index 0000000..c0e0c8f
--- /dev/null
+++ b/README.rst
@@ -0,0 +1,159 @@
+Tempest Integration of Tungsten Fabric (Contrail)
+=================================================
+
+This directory contains Tempest tests to cover the contrail project, as well
+as a plugin to automatically load these tests into tempest. This is a set of
+integration tests to be run against a live open-contrail cluster. Tempest has
+test-cases for Contrail API validation, scenarios, and other specific tests
+useful in validating an open-contrail deployment.
+
+See the tempest plugin docs for information on using it:
+
+[http://docs.openstack.org/developer/tempest/plugin.html#using-plugins](http://docs.openstack.org/developer/tempest/plugin.html#using-plugins)
+
+See the tempest docs for information on writing new tests etc:
+
+[http://docs.openstack.org/developer/tempest/](http://docs.openstack.org/developer/tempest/)
+
+
+Quickstart
+----------
+
+#Tempest Installation
+
+To run *tungsten-tempest*, you must first have `Tempest`_ installed and configured 
+properly. Please reference Tempest's `Quickstart`_ guide to do so and for all
+exact details. Follow all the steps outlined therein.
+
+	Here are some sample steps:
+
+	$ git clone https://git.openstack.org/openstack/tempest
+	$ cd tempest
+	$ pip install -r requirements.txt
+	$ pip install -r test-requirements.txt
+	$ pip install tox
+	$ pip install tempest
+
+Now below command should show you list of available tempest test cases.
+
+	$ ostestr -l
+
+You can install all these including tempest in a virtual
+environment. If virtual environment is not installed, then install it using
+"`sudo apt-get install python-virtualenv`". Afterward, proceed with the steps below.
+
+#Patrole Installation
+
+This is done with pip after you check out the [Patrole repo](https://github.com/openstack/patrole "Patrole repo"). Please reference `Patrole` [Quickstart](https://github.com/openstack/patrole/blob/master/README.rst "Quickstart") guide for further details.
+
+    Here are some sample steps:
+
+	$ git clone https://git.openstack.org/openstack/patrole
+	$ cd patrole
+	$ pip install -e .
+
+NOTE: This can be done within a venv.
+Now below command should show you list of available Patrole test cases.
+	
+	$ ostestr -l | grep patrole
+
+#Tungsten-tempest Installation
+
+This is done with pip after you check out the tungsten-tempest repo::
+
+	$ git clone https://git.openstack.org/tungsten/tungsten-tempest
+	$ pip install -e tungsten_tempest/
+
+NOTE: This can be done within a venv.
+Now below command should show you list of available tungsten-tempest test cases.
+
+	$ ostestr -l | grep tungsten
+
+#Configuration
+
+You must properly configure tempest, which is relatively straightforward. For details on configuring tempest refer to the [tempest-configuration](https://github.com/openstack/tempest/blob/master/doc/source/configuration.rst "tempest-configuration").
+
+Next you must properly configure Patrole, which is relatively straightforward. For details on configuring Patrole refer to the [patrole-configuration](https://github.com/openstack/patrole/blob/master/doc/source/configuration.rst "patrole-configuration")
+
+Next you must properly configure tungsten-fabric, which is relatively straightforward too. For details on configuring tungsten-fabric refer to the :ref:`tungsten-configuration`.
+
+After comfiguring tempmest.conf as per tempest and Patrole requirements, please make below changes too in the patrole section of tempest.conf:
+
+    enable_rbac must be true.
+
+    test_custom_requirements must be true if you want to run tests against a `custom_requirements_file` which defines RBAC requirements.
+
+    custom_requirements_file must be absolute path of file path of the YAML file that defines your RBAC requirements.
+
+For the details about these flags please refer [patrole.conf.sample](https://github.com/openstack/patrole/blob/master/etc/patrole.conf.sample "patrole.conf.sample") file.
+
+
+**NOTE:** Make sure you have contrail endpoints in keystone catalog-list already like sdn-l-config-*. Otherwise configure below two keys under [sdn] section of tempest.conf.
+
+     [sdn]
+     endpoint_type = <public|admin|internal|publicURL|adminURL|internalURL>
+     catalog_type = <Catalog type of the SDN service, default sdn-l-config>
+
+#Running tungsten-tempest 
+
+Once the configuration is done you're now ready to run tungsten-fabric.
+
+The easiest way to run is using any testr utilities like below:
+
+	$ ostestr run --regex tungsten_tempest_plugin.tests.api
+
+This can also be done using the `tempest_run`_ command. This can be done by running::
+
+	$ tempest run --regex '^tungsten_tempest_plugin\.tests\.api'
+
+There is also the option to use testr directly, or any `testr`_ based test runner, like `ostestr`_. For example, from the work-space dir run::
+
+	$ stestr --regex '(?!.*\[.*\bslow\b.*\])(^tungsten_tempest_plugin\.tests\.api))'
+
+will run the same set of tests as the default gate jobs.
+
+You can also run tungsten_tempest tests using `tox`_. To do so, ``cd`` into the **Tempest** directory and run::
+
+	$ tox -eall-plugin -- tungstent_tempest_plugin.tests.api
+
+#Log Information
+
+Log information from tests is captured in ``tempest.log`` under the Tempest repository. Some Patrole debugging information is captured in that log related to expected test results and :ref:`role-overriding`.
+
+More detailed RBAC testing log output is emitted to ``tungsten_log``.
+
+To configure tungsten-tempest's logging, see the :ref:`tungsten-tempest-configuration` guide.
+
+
+Tempest: [https://github.com/openstack/tempest](https://github.com/openstack/tempest)
+
+Tempest Quickstart: [https://docs.openstack.org/tempest/latest/overview.html#quickstart](https://docs.openstack.org/tempest/latest/overview.html#quickstart)
+
+tempest_run: [https://docs.openstack.org/tempest/latest/run.html](https://docs.openstack.org/tempest/latest/run.html)
+
+testr: [https://testrepository.readthedocs.org/en/latest/MANUAL.html
+](https://testrepository.readthedocs.org/en/latest/MANUAL.html)
+
+ostestr: [https://docs.openstack.org/os-testr/latest/](https://docs.openstack.org/os-testr/latest/)
+
+tox: [https://tox.readthedocs.io/en/latest/](https://tox.readthedocs.io/en/latest/)
+
+
+
+#RBAC Tests
+----------
+
+To change the role that the tungsten_tempest tests are being run as, edit ``rbac_test_role`` in the ``patrole`` section of tempest.conf: ::
+
+    [patrole]
+    rbac_test_role = member
+    ...
+
+**NOTE**::
+
+The ``rbac_test_role`` is service-specific. member, for example, is an arbitrary role, but by convention is used to designate the default non-admin role in the system. Most tunsgtent_tempest tests should be run with **admin** and **member** roles. However, other services may use entirely different roles.
+
+For more information about the member role and its nomenclature,
+
+please see: `<https://ask.openstack.org/en/question/4759/member-vs-_member_/>`__.
+
