Improve heat environment manager

- For underlay SSH, use "fixed" heat stack addresses
  instead of "floating". "fixed" addresses must be
  accessible from Jenkins slave node.
- do not include fuel-devops engine libraries in case if
  ENV_MANAGER is not 'devops', to avoid configuring database.
- use LAB_PARAM_DEFAULTS to specify heat template "environment"
  file with default parameters
- use required OS_USER_DOMAIN_NAME to initialize heat client.
- When heat stack is created, two parameters are passed into the
  .hot template from heat manager:

    'mcp_version': settings.MCP_VERSION
    'env_name': settings.ENV_NAME

Related-task: #PROD-27687
Change-Id: I8efcdacf6f8115e5c01c144207a2cf8a4ff9fb48
diff --git a/tcp_tests/fixtures/underlay_fixtures.py b/tcp_tests/fixtures/underlay_fixtures.py
index 1770c62..a8856d6 100644
--- a/tcp_tests/fixtures/underlay_fixtures.py
+++ b/tcp_tests/fixtures/underlay_fixtures.py
@@ -18,9 +18,6 @@
 from tcp_tests.helpers import utils
 from tcp_tests import logger
 from tcp_tests import settings
-from tcp_tests.managers import envmanager_devops
-from tcp_tests.managers import envmanager_empty
-from tcp_tests.managers import envmanager_heat
 from tcp_tests.managers import underlay_ssh_manager
 
 LOG = logger.logger
@@ -60,18 +57,21 @@
         # No environment manager is used.
         # 'config' should contain config.underlay.ssh settings
         # 'config' should contain config.underlay.current_snapshot setting
+        from tcp_tests.managers import envmanager_empty
         env = envmanager_empty.EnvironmentManagerEmpty(config=config)
 
     elif env_manager == 'devops':
         # fuel-devops environment manager is used.
         # config.underlay.ssh settings can be empty or witn SSH to existing env
         # config.underlay.current_snapshot
+        from tcp_tests.managers import envmanager_devops
         env = envmanager_devops.EnvironmentManager(config=config)
 
     elif env_manager == 'heat':
         # heat environment manager is used.
         # config.underlay.ssh settings can be empty or witn SSH to existing env
         # config.underlay.current_snapshot
+        from tcp_tests.managers import envmanager_heat
         env = envmanager_heat.EnvironmentManagerHeat(config=config)
     else:
         raise Exception("Unknown hardware manager: '{}'".format(env_manager))
diff --git a/tcp_tests/managers/envmanager_heat.py b/tcp_tests/managers/envmanager_heat.py
index 2d52e00..c5cee17 100644
--- a/tcp_tests/managers/envmanager_heat.py
+++ b/tcp_tests/managers/envmanager_heat.py
@@ -102,7 +102,7 @@
             username=settings.OS_USERNAME,
             password=settings.OS_PASSWORD,
             project_name=settings.OS_PROJECT_NAME,
-            user_domain_name='Default',
+            user_domain_name=settings.OS_USER_DOMAIN_NAME,
             project_domain_name='Default')
         return keystone_session.Session(auth=keystone_auth, verify=False)
 
@@ -210,7 +210,9 @@
                     pool_net = netaddr.IPNetwork(address_pool['cidr'])
                     if fixed in pool_net:
                         for role in address_pool['roles']:
-                            addresses[role] = floating
+                            # addresses[role] = floating
+                            # Use fixed addresses for SSH access
+                            addresses[role] = fixed
 
             nodes.append({
                 'name': heat_node.attributes['name'],
@@ -485,6 +487,10 @@
             'template': template,
             'files': dict(list(tpl_files.items()) + list(env_files.items())),
             'environment': env,
+            'parameters': {
+                'mcp_version': settings.MCP_VERSION,
+                'env_name': settings.ENV_NAME,
+            }
         }
 
         if env_files_list:
diff --git a/tcp_tests/settings.py b/tcp_tests/settings.py
index 346506f..f98981d 100644
--- a/tcp_tests/settings.py
+++ b/tcp_tests/settings.py
@@ -101,9 +101,10 @@
 SKIP_SYNC_TIME = get_var_as_bool("SKIP_SYNC_TIME", False)
 
 # OpenStack parameters to work with Heat stacks
-OS_STACK_NAME = os.environ.get("OS_STACK_NAME", ENV_NAME)
 OS_HEAT_VERSION = os.environ.get('OS_HEAT_VERSION', 1)
 OS_AUTH_URL = os.environ.get('OS_AUTH_URL', None)
 OS_USERNAME = os.environ.get('OS_USERNAME', None)
 OS_PASSWORD = os.environ.get('OS_PASSWORD', None)
 OS_PROJECT_NAME = os.environ.get('OS_PROJECT_NAME', None)
+OS_USER_DOMAIN_NAME = os.environ.get('OS_USER_DOMAIN_NAME', 'Default')
+LAB_PARAM_DEFAULTS = os.environ.get('LAB_PARAM_DEFAULTS', '')
diff --git a/tcp_tests/settings_oslo.py b/tcp_tests/settings_oslo.py
index e930729..7fc8870 100644
--- a/tcp_tests/settings_oslo.py
+++ b/tcp_tests/settings_oslo.py
@@ -30,7 +30,8 @@
 _default_heat_conf = pkg_resources.resource_filename(
     __name__, 'templates/{0}/underlay.hot'.format(settings.LAB_CONFIG_NAME))
 _default_heat_env = pkg_resources.resource_filename(
-    __name__, 'templates/_heat_environments/microcloud-8116.env')
+    __name__, 'templates/_heat_environments/{0}'.format(
+        settings.LAB_PARAM_DEFAULTS))
 
 _default_salt_steps = pkg_resources.resource_filename(
     __name__, 'templates/{0}/salt.yaml'.format(settings.LAB_CONFIG_NAME))