diff --git a/doc/source/test_results/control_plane/configs/Network_Scheme.png b/doc/source/test_results/control_plane/configs/Network_Scheme.png
new file mode 100644
index 0000000..b3bdca4
Binary files /dev/null and b/doc/source/test_results/control_plane/configs/Network_Scheme.png differ
diff --git a/doc/source/test_results/control_plane/configs/compute-1.tar.gz b/doc/source/test_results/control_plane/configs/compute-1.tar.gz
new file mode 100644
index 0000000..1fe8957
Binary files /dev/null and b/doc/source/test_results/control_plane/configs/compute-1.tar.gz differ
diff --git a/doc/source/test_results/control_plane/configs/compute-osd-1.tar.gz b/doc/source/test_results/control_plane/configs/compute-osd-1.tar.gz
new file mode 100644
index 0000000..0004875
Binary files /dev/null and b/doc/source/test_results/control_plane/configs/compute-osd-1.tar.gz differ
diff --git a/doc/source/test_results/control_plane/configs/controller-1.tar.gz b/doc/source/test_results/control_plane/configs/controller-1.tar.gz
new file mode 100644
index 0000000..94c0c40
Binary files /dev/null and b/doc/source/test_results/control_plane/configs/controller-1.tar.gz differ
diff --git a/doc/source/test_results/control_plane/configs/controller-2.tar.gz b/doc/source/test_results/control_plane/configs/controller-2.tar.gz
new file mode 100644
index 0000000..83b3515
Binary files /dev/null and b/doc/source/test_results/control_plane/configs/controller-2.tar.gz differ
diff --git a/doc/source/test_results/control_plane/configs/controller-3.tar.gz b/doc/source/test_results/control_plane/configs/controller-3.tar.gz
new file mode 100644
index 0000000..61dfb19
Binary files /dev/null and b/doc/source/test_results/control_plane/configs/controller-3.tar.gz differ
diff --git a/doc/source/test_results/control_plane/configs/deployment.json b/doc/source/test_results/control_plane/configs/deployment.json
new file mode 100644
index 0000000..4a78143
--- /dev/null
+++ b/doc/source/test_results/control_plane/configs/deployment.json
@@ -0,0 +1,13 @@
+{
+ "admin": {
+ "password": "password",
+ "tenant_name": "tenant",
+ "username": "user"
+ },
+ "auth_url": "http://1.2.3.4:5000/v2.0",
+ "region_name": "RegionOne",
+ "type": "ExistingCloud",
+ "endpoint_type": "internal",
+ "admin_port": 35357,
+ "https_insecure": true
+}
\ No newline at end of file
diff --git a/doc/source/test_results/control_plane/configs/job-params.yaml b/doc/source/test_results/control_plane/configs/job-params.yaml
new file mode 100644
index 0000000..91ad721
--- /dev/null
+++ b/doc/source/test_results/control_plane/configs/job-params.yaml
@@ -0,0 +1,5 @@
+---
+ concurrency: 5
+ compute: 196
+ gre_enabled: false
+ http_server_with_glance_images: "1.2.3.4"
\ No newline at end of file
diff --git a/doc/source/test_results/control_plane/configs/rally_report.html b/doc/source/test_results/control_plane/configs/rally_report.html
new file mode 100644
index 0000000..59c0eaf
--- /dev/null
+++ b/doc/source/test_results/control_plane/configs/rally_report.html
@@ -0,0 +1,856 @@
+
+
+
+
+
+ Rally | Rally Task Report
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Task overview
+
Input file
+
+
+
+ ►
+ ▼
+ {{n.cls}}
+
{{m.name}}
+
+
+
+
+
+
+
Task overview
+
+
+
+
+ Scenario
+
+ ▴
+ ▾
+
+ |
+ Load duration (s)
+
+ ▴
+ ▾
+
+ |
+ Full duration (s)
+
+ ▴
+ ▾
+
+ |
+ Iterations
+
+ ▴
+ ▾
+
+ |
+ Runner
+
+ ▴
+ ▾
+
+ |
+ Errors
+
+ ▴
+ ▾
+
+ |
+ Success (SLA)
+
+ ▴
+ ▾
+
+ |
+
+
+
+ {{sc.ref}}
+ | {{sc.load_duration | number:3}}
+ | {{sc.full_duration | number:3}}
+ | {{sc.iterations_count}}
+ | {{sc.runner}}
+ | {{sc.errors.length}}
+ |
+ ✔
+ ✖
+ |
+
+
+
+
+
+
Input file
+
{{source}}
+
+
+
+
{{scenario.cls}}.{{scenario.name}} ({{scenario.full_duration | number:3}}s)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/source/test_results/control_plane/configs/run_test_script.sh b/doc/source/test_results/control_plane/configs/run_test_script.sh
new file mode 100644
index 0000000..df1ebb0
--- /dev/null
+++ b/doc/source/test_results/control_plane/configs/run_test_script.sh
@@ -0,0 +1,12 @@
+${WORK_DIR:?}
+DEPLOYMENT_NAME="$(uuidgen)"
+DEPLOYMENT_CONFIG="${WORK_DIR}/deployment.json"
+PLUGIN_PATH="${WORK_DIR}/plugins/nova_scale.py"
+JOB_PARAMS_CONFIG="${WORK_DIR}/job-params.yaml"
+rally deployment create --filename $(DEPLOYMENT_CONFIG) --name $(DEPLOYMENT_NAME)
+SCENARIOS="boot_attach_live_migrate_and_delete_server_with_secgroups create-and-delete-image keystone.json"
+for scenario in SCENARIOS; do
+rally --plugin-paths ${PLUGINS_PATH} task start --tag ${scenario} --task-args-file ${JOB_PARAMS_CONFIG} ${WORK_DR}/scenarios/${scenario}
+done
+task_list="$(rally task list --uuids-only)"
+rally task report --tasks ${task_list} --out=${WORK_DIR}/rally_report.html
\ No newline at end of file
diff --git a/doc/source/test_results/control_plane/main.rst b/doc/source/test_results/control_plane/main.rst
new file mode 100644
index 0000000..e7160d7
--- /dev/null
+++ b/doc/source/test_results/control_plane/main.rst
@@ -0,0 +1,305 @@
+
+.. _openstack_control_plane_performance_report:
+
+******************************************
+OpenStack control plane performance report
+******************************************
+
+:Abstract:
+
+ This document includes OpenStack control plane performance test results.
+ All tests have been performed regarding
+ :ref:`openstack_control_plane_performance_test_plan`
+
+
+Environment description
+=======================
+
+Environment contains 4 types of servers:
+
+- rally node
+- controller node
+- compute-osd node
+- compute node
+
+.. table:: Amount of servers each role
+
+ +------------+--------------+
+ |Role |Servers count |
+ +============+==============+
+ |rally |1 |
+ +------------+--------------+
+ |controller |3 |
+ +------------+--------------+
+ |compute |176 |
+ +------------+--------------+
+ |compute-osd |20 |
+ +------------+--------------+
+
+Hardware configuration of each server
+-------------------------------------
+
+All servers have same configuration describing in table below
+
+.. table:: Description of servers hardware
+
+ +-------+----------------+-------------------------------+
+ |server |vendor,model |HP,DL380 Gen9 |
+ +-------+----------------+-------------------------------+
+ |CPU |vendor,model |Intel,E5-2680 v3 |
+ | +----------------+-------------------------------+
+ | |processor_count |2 |
+ | +----------------+-------------------------------+
+ | |core_count |12 |
+ | +----------------+-------------------------------+
+ | |frequency_MHz |2500 |
+ +-------+----------------+-------------------------------+
+ |RAM |vendor,model |HP,752369-081 |
+ | +----------------+-------------------------------+
+ | |amount_MB |262144 |
+ +-------+----------------+-------------------------------+
+ |NETWORK|interface_name |p1p1 |
+ | +----------------+-------------------------------+
+ | |vendor,model |Intel,X710 Dual Port |
+ | +----------------+-------------------------------+
+ | |bandwidth |10G |
+ +-------+----------------+-------------------------------+
+ |STORAGE|dev_name |/dev/sda |
+ | +----------------+-------------------------------+
+ | |vendor,model | | raid10 - HP P840 |
+ | | | | 12 disks EH0600JEDHE |
+ | +----------------+-------------------------------+
+ | |SSD/HDD |HDD |
+ | +----------------+-------------------------------+
+ | |size | 3,6TB |
+ +-------+----------------+-------------------------------+
+
+Network configuration of each server
+------------------------------------
+
+All servers have same network configuration:
+
+.. image:: configs/Network_Scheme.png
+ :alt: Network Scheme of the environment
+
+Here is the part of switch configuration for each switch port which connected to
+ens1f0 interface of a server:
+
+.. code:: bash
+
+ switchport mode trunk
+ switchport trunk native vlan 600
+ switchport trunk allowed vlan 600-602,630-649
+ spanning-tree port type edge trunk
+ spanning-tree bpduguard enable
+ no snmp trap link-status
+
+Software configuration on servers with controller, compute and compute-osd roles
+--------------------------------------------------------------------------------
+
+.. table:: Services on servers by role
+
+ +------------+----------------------------+
+ |Role |Service name |
+ +============+============================+
+ |controller || horizon |
+ | || keystone |
+ | || nova-api |
+ | || nava-scheduler |
+ | || nova-cert |
+ | || nova-conductor |
+ | || nova-consoleauth |
+ | || nova-consoleproxy |
+ | || cinder-api |
+ | || cinder-backup |
+ | || cinder-scheduler |
+ | || cinder-volume |
+ | || glance-api |
+ | || glance-glare |
+ | || glance-registry |
+ | || neutron-dhcp-agent |
+ | || neutron-l3-agent |
+ | || neutron-metadata-agent |
+ | || neutron-openvswitch-agent |
+ | || neutron-server |
+ | || heat-api |
+ | || heat-api-cfn |
+ | || heat-api-cloudwatch |
+ | || ceph-mon |
+ | || rados-gw |
+ | || memcached |
+ | || rabbitmq_server |
+ | || mysqld |
+ | || galera |
+ | || corosync |
+ | || pacemaker |
+ | || haproxy |
+ +------------+----------------------------+
+ |compute || nova-compute |
+ | || neutron-l3-agent |
+ | || neutron-metadata-agent |
+ | || neutron-openvswitch-agent |
+ +------------+----------------------------+
+ |compute-osd || nova-compute |
+ | || neutron-l3-agent |
+ | || neutron-metadata-agent |
+ | || neutron-openvswitch-agent |
+ | || ceph-osd |
+ +------------+----------------------------+
+
+.. table:: Software version on servers with controller, compute and compute-osd roles
+
+ +------------+-------------------+
+ |Software |Version |
+ +============+===================+
+ |OpenStack |Mitaka |
+ +------------+-------------------+
+ |Ceph |Hammer |
+ +------------+-------------------+
+ |Ubuntu |Ubuntu 14.04.3 LTS |
+ +------------+-------------------+
+
+You can find outputs of some commands and /etc folder in the following archives:
+
+| :download:`controller-1.tar.gz `
+| :download:`controller-2.tar.gz `
+| :download:`controller-3.tar.gz `
+| :download:`compute-1.tar.gz `
+| :download:`compute-osd-1.tar.gz `
+
+Software configuration on servers with rally role
+-------------------------------------------------
+
+On this server should be installed Rally. How to do it you can find in
+`Rally installation documentation`_
+
+.. table:: Software version on server with rally role
+
+ +------------+-------------------+
+ |Software |Version |
+ +============+===================+
+ |Rally |0.4.0 |
+ +------------+-------------------+
+ |Ubuntu |Ubuntu 14.04.3 LTS |
+ +------------+-------------------+
+
+Testing process
+===============
+
+.. table:: Some test parameters
+
+ +--------------------------------+--------+
+ |Name |Value |
+ +================================+========+
+ |Volume size to create in Cinder |1GB |
+ +--------------------------------+--------+
+ |Flavor to create VM from |m1.tiny |
+ +--------------------------------+--------+
+ |Image name to create VM from |cirros |
+ +--------------------------------+--------+
+
+1. Create work directory on server with Rally role. In future we will call that directory as WORK_DIR
+2. Create directory "plugins" in WORK_DIR and copy to that directory
+ :download:`nova_performance.py <../../test_plans/control_plane/plugins/nova_performance.py>` plugin.
+3. Create directory "scenarios" in WORK_DIR and copy to that directory
+ :download:`boot_attach_live_migrate_and_delete_server_with_secgroups.json
+ `,
+ :download:`create-and-delete-image.json `
+ and :download:`keystone.json ` scenarios.
+4. Create deployment.json file in WORK_DIR and fill it with OpenStack environment info.
+ It should looks like this:
+
+ .. literalinclude:: configs/deployment.json
+ :language: bash
+
+5. Create job-params.yaml file in WORK_DIR and fill it with scenarios info.
+ It should looks like this:
+
+ .. literalinclude:: configs/job-params.yaml
+ :language: bash
+
+6. Perform tests:
+
+ .. literalinclude:: configs/run_test_script.sh
+ :language: bash
+
+As a result of this part we got the following HTML file:
+
+:download:`rally_report.html `
+
+Test results
+============
+
+All values in tables below are in seconds.
+
+Cinder
+------
+
++---------------+---------+----------+----------+---------+---------+
+| Operation | Mean | 90%ile | 50%ile | Max | Min |
+| | (sec) | (sec) | (sec) | (sec) | (sec) |
++===============+=========+==========+==========+=========+=========+
+| create_volume | 2.619 | 2.754 | 2.593 | 2.988 | 2.453 |
++---------------+---------+----------+----------+---------+---------+
+| delete_volume | 2.339 | 2.449 | 2.323 | 2.666 | 2.200 |
++---------------+---------+----------+----------+---------+---------+
+
+Glance
+------
+
++--------------+----------+----------+----------+----------+-----------+
+| Operation | Mean | 90%ile | 50%ile | Max | Min |
+| | (sec) | (sec) | (sec) | (sec) | (sec) |
++==============+==========+==========+==========+==========+===========+
+| create_image | 44.204 | 56.243 | 43.835 | 74.826 | 22.382 |
++--------------+----------+----------+----------+----------+-----------+
+| delete_image | 1.579 | 2.049 | 1.540 | 3.846 | 0.718 |
++--------------+----------+----------+----------+----------+-----------+
+
+Keystone
+--------
+
++--------------+-----------+----------+-----------+----------+-----------+
+| Operation | Mean | 90%ile | 50%ile | Max | Min |
+| | (sec) | (sec) | (sec) | (sec) | (sec) |
++==============+===========+==========+===========+==========+===========+
+| authenticate | 0.099 | 0.135 | 0.093 | 0.718 | 0.054 |
++--------------+-----------+----------+-----------+----------+-----------+
+
+Neutron
+-------
+
++--------------------------+----------+----------+----------+----------+----------+
+| Operation | Mean | 90%ile | 50%ile | Max | Min |
+| | (sec) | (sec) | (sec) | (sec) | (sec) |
++==========================+==========+==========+==========+==========+==========+
+| create_20_rules | 4.535 | 4.883 | 4.515 | 5.577 | 3.873 |
++--------------------------+----------+----------+----------+----------+----------+
+| create_2_security_groups | 0.412 | 0.477 | 0.401 | 0.670 | 0.292 |
++--------------------------+----------+----------+----------+----------+----------+
+| delete_2_security_groups | 0.380 | 0.480 | 0.371 | 0.771 | 0.234 |
++--------------------------+----------+----------+----------+----------+----------+
+
+Nova
+----
+
++----------------------+-----------+-----------+-----------+-----------+-----------+
+| Operation | Mean | 90%ile | 50%ile | Max | Min |
+| | (sec) | (sec) | (sec) | (sec) | (sec) |
++======================+===========+===========+===========+===========+===========+
+| attach_volume | 2.806 | 2.985 | 2.781 | 3.294 | 2.563 |
++----------------------+-----------+-----------+-----------+-----------+-----------+
+| boot_server | 11.989 | 12.937 | 11.953 | 14.265 | 9.482 |
++----------------------+-----------+-----------+-----------+-----------+-----------+
+| delete_server | 2.531 | 2.670 | 2.467 | 4.817 | 2.348 |
++----------------------+-----------+-----------+-----------+-----------+-----------+
+| detach_volume | 2.701 | 2.861 | 2.684 | 3.201 | 2.464 |
++----------------------+-----------+-----------+-----------+-----------+-----------+
+| find_host_to_migrate | 0.554 | 0.682 | 0.520 | 0.954 | 0.419 |
++----------------------+-----------+-----------+-----------+-----------+-----------+
+| live_migrate | 15.351 | 15.715 | 15.221 | 28.692 | 12.623 |
++----------------------+-----------+-----------+-----------+-----------+-----------+
+
+.. references:
+
+.. _Rally installation documentation: https://rally.readthedocs.io/en/latest/install.html
\ No newline at end of file
diff --git a/doc/source/test_results/control_plane/rally_scenarios/boot_attach_live_migrate_and_delete_server_with_secgroups.json b/doc/source/test_results/control_plane/rally_scenarios/boot_attach_live_migrate_and_delete_server_with_secgroups.json
new file mode 100644
index 0000000..8500ca9
--- /dev/null
+++ b/doc/source/test_results/control_plane/rally_scenarios/boot_attach_live_migrate_and_delete_server_with_secgroups.json
@@ -0,0 +1,68 @@
+{% set flavor_name = flavor_name or "m1.tiny" %}
+{% set image_name = image_name or "^(cirros.*uec|TestVM)$" %}
+{
+ "NovaPerformancePlugin.boot_attach_live_migrate_and_delete_server_with_secgroups": [
+ {
+ "args": {
+ "flavor": {
+ "name": "{{flavor_name}}"
+ },
+ "image": {
+ "name": "{{image_name}}"
+ },
+ "security_group_count": 2,
+ "rules_per_security_group": 10,
+ "boot_server_kwargs": { "auto_assign_nic" : true },
+ "create_volume_kwargs": {},
+ "volume_size": 1,
+ "disk_over_commit": false,
+ "min_sleep": 0,
+ "max_sleep": 0,
+ "block_migration": false,
+ "do_migration": true,
+ "do_delete": true
+ },
+ "runner": {
+ "type": "constant",
+ "times": {{ 5 * compute }},
+ "concurrency": {{concurrency}}
+ },
+ "context": {
+ "users": {
+ "tenants": 1,
+ "users_per_tenant": 10
+ },
+ "quotas": {
+ "neutron": {
+ "network": -1,
+ "security_group": -1,
+ "security_group_rule": -1,
+ "port": -1,
+ "subnet": -1,
+ "router": -1
+ },
+ "nova": {
+ "instances": -1,
+ "cores": -1,
+ "ram": -1,
+ "floating_ips": -1,
+ "security_groups": -1,
+ "security_group_rules": -1
+ },
+ "cinder": {
+ "volumes": -1,
+ "gigabytes": -1,
+ "snapshots": -1
+ }
+ },
+ "network": {
+ "start_cidr": "{{ "100.1.0.0/25" if gre_enabled else "1.0.0.0/25" }}",
+ "networks_per_tenant": 1
+ }
+ },
+ "sla": {
+ "failure_rate": { "max": 0 }
+ }
+ }
+ ]
+}
diff --git a/doc/source/test_results/control_plane/rally_scenarios/create-and-delete-image.json b/doc/source/test_results/control_plane/rally_scenarios/create-and-delete-image.json
new file mode 100644
index 0000000..ca72b12
--- /dev/null
+++ b/doc/source/test_results/control_plane/rally_scenarios/create-and-delete-image.json
@@ -0,0 +1,25 @@
+{
+ "GlanceImages.create_and_delete_image": [
+ {
+ "args": {
+ "image_location": "http://{{http_server_with_glance_images}}/images/glance_1g_image.raw",
+ "container_format": "bare",
+ "disk_format": "raw"
+ },
+ "runner": {
+ "type": "constant",
+ "times": 400,
+ "concurrency": 50
+ },
+ "context": {
+ "users": {
+ "tenants": 2,
+ "users_per_tenant": 3
+ }
+ },
+ "sla": {
+ "failure_rate": { "max": 0 }
+ }
+ }
+ ]
+}
diff --git a/doc/source/test_results/control_plane/rally_scenarios/keystone.json b/doc/source/test_results/control_plane/rally_scenarios/keystone.json
new file mode 100644
index 0000000..58bc8a0
--- /dev/null
+++ b/doc/source/test_results/control_plane/rally_scenarios/keystone.json
@@ -0,0 +1,20 @@
+{
+ "Authenticate.keystone": [
+ {
+ "runner": {
+ "type": "rps",
+ "times": 120000,
+ "rps": 180
+ },
+ "context": {
+ "users": {
+ "tenants": 10,
+ "users_per_tenant": 10
+ }
+ },
+ "sla": {
+ "failure_rate": { "max": 0 }
+ }
+ }
+ ]
+}
diff --git a/doc/source/test_results/index.rst b/doc/source/test_results/index.rst
index 328c438..eb96534 100644
--- a/doc/source/test_results/index.rst
+++ b/doc/source/test_results/index.rst
@@ -22,3 +22,5 @@ Test Results
openstack_load/index
1000_nodes/index
reliability/index
+ control_plane/main
+