diff --git a/_modules/runtest/tempest_sections/__init__.py b/_modules/runtest/tempest_sections/__init__.py
index 56b3238..a320ce8 100644
--- a/_modules/runtest/tempest_sections/__init__.py
+++ b/_modules/runtest/tempest_sections/__init__.py
@@ -24,6 +24,7 @@
 import scenario
 import service_clients
 import service_available
+import share
 import telemetry
 import validation
 import volume
@@ -54,6 +55,7 @@
     scenario.Scenario,
     service_clients.ServiceClients,
     service_available.ServiceAvailable,
+    share.Share,
     telemetry.Telemetry,
     validation.Validation,
     volume.Volume,
diff --git a/_modules/runtest/tempest_sections/share.py b/_modules/runtest/tempest_sections/share.py
new file mode 100644
index 0000000..be882df
--- /dev/null
+++ b/_modules/runtest/tempest_sections/share.py
@@ -0,0 +1,177 @@
+from runtest import conditions
+import base_section
+
+
+MICROVERSION_RELEASE_MAPPING = {
+    'pike':
+        {
+            'min_api_microversion': '2.0',
+            'max_api_microversion': '2.40'
+        }
+}
+
+
+class Share(base_section.BaseSection):
+    name = "share"
+    options = [
+        'backend_names',
+        'capability_create_share_from_snapshot_support',
+        'capability_storage_protocol',
+        'default_share_type_name',
+        'enable_ip_rules_for_protocols',
+        'enable_user_rules_for_protocols',
+        'enable_protocols',
+        'max_api_microversion',
+        'min_api_microversion',
+        'multitenancy_enabled',
+        'multi_backend',
+        'run_ipv6_tests',
+        'run_mount_snapshot_tests',
+        'run_migration_with_preserve_snapshots_tests',
+        'run_driver_assisted_migration_tests',
+        'run_host_assisted_migration_tests',
+        'run_replication_tests',
+        'run_manage_unmanage_snapshot_tests',
+        'run_manage_unmanage_tests',
+        'run_share_group_tests',
+        'run_revert_to_snapshot_tests',
+        'run_snapshot_tests',
+        'run_shrink_tests',
+        'run_quota_tests',
+        'suppress_errors_in_cleanup',
+        'share_creation_retry_number',
+    ]
+
+    @property
+    def backend_names(self):
+        c = conditions.BaseRule('manila.share.enabled', 'eq', True)
+        backend_names = []
+        backends = self.get_item_when_condition_match(
+            'manila.share.enabled_share_backends', c)
+        if backends:
+            for item, value in backends.items():
+                if value.get('enabled', True):
+                    backend_names.append(value['name'])
+        return ', '.join(backend_names)
+
+    @property
+    def capability_create_share_from_snapshot_support(self):
+        pass
+
+    @property
+    def capability_storage_protocol(self):
+        pass
+
+    @property
+    def default_share_type_name(self):
+        pass
+
+    @property
+    def enable_ip_rules_for_protocols(self):
+        pass
+
+    @property
+    def enable_user_rules_for_protocols(self):
+        pass
+
+    @property
+    def enable_protocols(self):
+        c = conditions.BaseRule('manila.share.enabled', 'eq', True)
+        proto = self.get_item_when_condition_match(
+            'manila.share.shares.Share2.share_proto', c)
+        if proto:
+            return proto.lower()
+
+    @property
+    def multitenancy_enabled(self):
+        c = conditions.BaseRule('manila.share.enabled', 'eq', True)
+        return self.get_item_when_condition_match(
+            'manila.share.shares.Share2.share_type.dhss',
+            c) or False
+
+    @property
+    def multi_backend(self):
+        c = conditions.BaseRule('manila.api.enabled', 'eq', True)
+        backends = self.get_item_when_condition_match('manila.share.enabled_share_backends', c)
+        backend_names = []
+        if backends:
+            for item, value in backends.items():
+                if value.get('enabled', True):
+                    backend_names.append(value['name'])
+            return True if len(backend_names) > 1 else False
+
+    @property
+    def max_api_microversion(self):
+        c = conditions.BaseRule('manila.api.enabled', 'eq', True)
+        manila_version = self.get_item_when_condition_match('manila.api.version', c)
+        if manila_version:
+            return MICROVERSION_RELEASE_MAPPING[manila_version]['max_api_microversion']
+
+    @property
+    def min_api_microversion(self):
+        c = conditions.BaseRule('manila.api.enabled', 'eq', True)
+        manila_version = self.get_item_when_condition_match('manila.api.version', c)
+        if manila_version:
+            return MICROVERSION_RELEASE_MAPPING[manila_version]['min_api_microversion']
+
+    @property
+    def run_ipv6_tests(self):
+        pass
+
+    @property
+    def run_mount_snapshot_tests(self):
+        pass
+
+    @property
+    def run_migration_with_preserve_snapshots_tests(self):
+        pass
+
+    @property
+    def run_driver_assisted_migration_tests(self):
+        pass
+
+    @property
+    def run_host_assisted_migration_tests(self):
+        pass
+
+    @property
+    def run_replication_tests(self):
+        pass
+
+    @property
+    def run_manage_unmanage_snapshot_tests(self):
+        pass
+
+    @property
+    def run_manage_unmanage_tests(self):
+        pass
+
+    @property
+    def run_share_group_tests(self):
+        pass
+
+    @property
+    def run_revert_to_snapshot_tests(self):
+        pass
+
+    @property
+    def run_snapshot_tests(self):
+        pass
+
+    @property
+    def run_shrink_tests(self):
+        pass
+
+    @property
+    def run_quota_tests(self):
+        pass
+
+    # Defines number of retries for share creation.
+    @property
+    def share_creation_retry_number(self):
+        pass
+
+    # Whether to suppress errors with clean up operation or not.
+    @property
+    def suppress_errors_in_cleanup(self):
+        pass
diff --git a/metadata/service/tempest/init.yml b/metadata/service/tempest/init.yml
index 86be784..9546471 100644
--- a/metadata/service/tempest/init.yml
+++ b/metadata/service/tempest/init.yml
@@ -3,7 +3,7 @@
   - service.runtest.tempest.nova
   - service.runtest.tempest.neutron
 applications:
- - runtest
+  - runtest
 parameters:
   _param:
     runtest_heat_plugin_skip_scenario_test_list: 'SoftwareConfigIntegrationTest, VolumeBackupRestoreIntegrationTest, AodhAlarmTest'
diff --git a/metadata/service/tempest/services/manila/backend/lvm.yml b/metadata/service/tempest/services/manila/backend/lvm.yml
new file mode 100644
index 0000000..f60634c
--- /dev/null
+++ b/metadata/service/tempest/services/manila/backend/lvm.yml
@@ -0,0 +1,30 @@
+parameters:
+  _param:
+    tempest_test_target: cfg01*
+  runtest:
+    enabled: true
+    openstack_version: stable/${_param:openstack_version}
+    tempest:
+      enabled: true
+      test_target: ${_param:tempest_test_target}
+      share:
+        capability_create_share_from_snapshot_support: true
+        capability_storage_protocol: NFS_CIFS
+        enable_ip_rules_for_protocols: nfs
+        enable_user_rules_for_protocols: cifs
+        run_ipv6_tests: false
+        run_mount_snapshot_tests: true
+        run_migration_with_preserve_snapshots_tests: false
+        run_driver_assisted_migration_tests: false
+        run_host_assisted_migration_tests: false
+        run_replication_tests: false
+        run_manage_unmanage_snapshot_tests: false
+        run_manage_unmanage_tests: false
+        run_share_group_tests: false
+        run_revert_to_snapshot_tests: true
+        run_snapshot_tests: false
+        run_shrink_tests: false
+        run_quota_tests: false
+        share_creation_retry_number: 2
+        suppress_errors_in_cleanup: true
+        default_share_type_name: default
