diff --git a/tcp_tests/tests/system/test_ceph_operations.py b/tcp_tests/tests/system/test_ceph_operations.py
index 44ae014..ef23b67 100644
--- a/tcp_tests/tests/system/test_ceph_operations.py
+++ b/tcp_tests/tests/system/test_ceph_operations.py
@@ -1,70 +1,10 @@
 import pytest
 
 from tcp_tests import logger
+from string import Template
 
 LOG = logger.logger
 
-xtra_network_interface = """
-parameters:
-  _param:
-    linux_network_interfaces:
-      br_ctl:
-        address: ${_param:single_address}
-        enabled: True
-        name_servers:
-        - ${_param:dns_server01}
-        - ${_param:dns_server02}
-        netmask: ${_param:control_network_netmask}
-        proto: static
-        require_interfaces: ['ens4']
-        type: bridge
-        use_interfaces: ['ens4']
-      ens3:
-        enabled: True
-        name: ens3
-        proto: dhcp
-        type: eth
-      ens4:
-        enabled: True
-        ipflush_onchange: True
-        name: ens4
-        proto: manual
-        type: eth
-"""
-
-add_osd_ceph_init_yml = """
-parameters:
-  _param:
-    ceph_osd_node04_hostname: xtra
-    ceph_osd_node04_address: 10.6.0.205
-    ceph_osd_system_codename: xenial
-  linux:
-    network:
-      host:
-        xtra:
-          address: ${_param:ceph_osd_node04_address}
-          names:
-          - ${_param:ceph_osd_node04_hostname}
-          - ${_param:ceph_osd_node04_hostname}.${_param:cluster_domain}
-        """
-
-add_osd_config_init_yml = """
-parameters:
-  reclass:
-    storage:
-      node:
-        ceph_osd_node04:
-          name: ${_param:ceph_osd_node04_hostname}
-          domain: ${_param:cluster_domain}
-          classes:
-          - cluster.${_param:cluster_name}.ceph.osd
-          params:
-            salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename:  ${_param:ceph_osd_system_codename}
-            single_address: ${_param:ceph_osd_node04_address}
-            ceph_crush_parent: rack02
-"""
-
 
 @pytest.fixture(scope='session')
 def add_xtra_node_to_salt(salt_actions, underlay_actions,
@@ -80,27 +20,19 @@
     cfg_node = [node['node_name'] for node in config.underlay.ssh
                 if 'salt_master' in node.get('roles')][0]
 
-    salt_actions.enforce_state("*", "reclass")
-    reclass_actions.add_class(
-        "environment.heat-cicd-queens-dvr-sl.linux_network_interface",
-        short_path="../nodes/_generated/xtra.*.yml")
-    reclass_actions.add_class("environment.heat-cicd-queens-dvr-sl.overrides",
-                              short_path="../nodes/_generated/xtra.*.yml")
-    reclass_actions.merge_context(yaml_context=xtra_network_interface,
-                                  short_path="../nodes/_generated/xtra.*.yml")
+    # salt_actions.enforce_state("I@salt:master", "reclass")
 
     underlay_actions.check_call(
             "salt-key -a {node} --include-all -y".format(node=xtra_node),
             node_name=cfg_node,
             raise_on_err=False)
     # Need to restart salt-minion service after accepting it in Salt Master
-    underlay_actions.check_call(
-        "systemctl restart salt-minion",
-        node_name=xtra_node,
-        raise_on_err=False)
-    salt_actions.enforce_state("I@salt:master", "reclass")
-    salt_actions.enforce_state("xtra*", "linux")
-    salt_actions.enforce_state("xtra*", "openssh")
+    # underlay_actions.check_call(
+    #     "systemctl restart salt-minion",
+    #     node_name=xtra_node,
+    #     raise_on_err=False)
+    # salt_actions.enforce_state("xtra*", "linux")
+    # salt_actions.enforce_state("xtra*", "openssh")
 
     yield
 
@@ -121,6 +53,64 @@
                          "wa_prod36167")
 class TestCephOsd(object):
 
+    add_osd_ceph_init_yml = """
+    parameters:
+      _param:
+        ceph_osd_node04_hostname: xtra
+        ceph_osd_node04_address: 10.6.0.205
+        ceph_osd_system_codename: xenial
+      linux:
+        network:
+          host:
+            xtra:
+              address: ${_param:ceph_osd_node04_address}
+              names:
+              - ${_param:ceph_osd_node04_hostname}
+              - ${_param:ceph_osd_node04_hostname}.${_param:cluster_domain}
+            """
+
+    add_osd_config_init_yml = """
+    parameters:
+      reclass:
+        storage:
+          node:
+            ceph_osd_node04:
+              name: ${_param:ceph_osd_node04_hostname}
+              domain: ${_param:cluster_domain}
+              classes:
+              - cluster.${_param:cluster_name}.ceph.osd
+              - environment.heat-cicd-queens-dvr-sl.linux_network_interface
+              - environment.heat-cicd-queens-dvr-sl.overrides
+              params:
+                salt_master_host: ${_param:reclass_config_master}
+                linux_system_codename:  ${_param:ceph_osd_system_codename}
+                single_address: ${_param:ceph_osd_node04_address}
+                ceph_crush_parent: rack02
+                linux_network_interfaces:
+                  br_ctl:
+                    address: ${_param:ceph_osd_node04_address}
+                    enabled: True
+                    name_servers:
+                    - ${_param:dns_server01}
+                    - ${_param:dns_server02}
+                    netmask: ${_param:control_network_netmask}
+                    proto: static
+                    require_interfaces: ['ens4']
+                    type: bridge
+                    use_interfaces: ['ens4']
+                  ens3:
+                    enabled: True
+                    name: ens3
+                    proto: dhcp
+                    type: eth
+                  ens4:
+                    enabled: True
+                    ipflush_onchange: True
+                    name: ens4
+                    proto: manual
+                    type: eth
+    """
+
     @pytest.fixture
     def describe_node_in_reclass(self,
                                  reclass_actions,
@@ -128,14 +118,17 @@
         LOG.info("Executing pytest SETUP "
                  "from describe_node_in_reclass fixture")
         reclass = reclass_actions
+
         # ---- cluster/*/ceph/init.yml ---------------
-        reclass.merge_context(yaml_context=add_osd_ceph_init_yml,
+        reclass.merge_context(yaml_context=self.add_osd_ceph_init_yml,
                               short_path="cluster/*/ceph/init.yml")
 
         # ------- cluster/infra/config/init.yml -----------
-        reclass.merge_context(yaml_context=add_osd_config_init_yml,
-                              short_path="cluster/*/infra/config/init.yml")
-        salt_actions.run_state("*", "saltutil.refresh_pillar")
+        reclass.merge_context(yaml_context=build_node_config('osd'),
+                              short_path="cluster/*/infra/config/nodes.yml")
+
+        # salt_actions.run_state("*", "saltutil.refresh_pillar")
+        # salt_actions.enforce_state("I@salt:master", "reclass")
 
     @pytest.fixture
     def remove_node_from_reclass(self,
@@ -144,7 +137,7 @@
 
         reclass.delete_key(
             key="parameters.reclass.storage.node.ceph_osd_node04",
-            short_path="cluster/*/infra/config/init.yml"
+            short_path="cluster/*/infra/config/nodes.yml"
             )
         reclass.delete_key(
             key="parameters.linux.network.host.xtra",
@@ -212,77 +205,36 @@
         assert job_result == 'SUCCESS', job_description
 
 
-add_mon_ceph_init_yml = """
-parameters:
-  _param:
-    ceph_mon_node04_hostname: xtra
-    ceph_mon_node04_address: 10.6.0.205
-    ceph_mon_node04_ceph_public_address: 10.166.49.209
-    ceph_mon_node04_ceph_backup_hour: 4
-    ceph_mon_node04_ceph_backup_minute: 0
-  linux:
-    network:
-      host:
-        xtra:
-          address: ${_param:ceph_mon_node04_address}
-          names:
-          - ${_param:ceph_mon_node04_hostname}
-          - ${_param:ceph_mon_node04_hostname}.${_param:cluster_domain}
-"""
-
-add_mon_ceph_common_yml = """
-parameters:
-  ceph:
-    common:
-      members:
-        - name: ${_param:ceph_mon_node04_hostname}
-          host: ${_param:ceph_mon_node04_address}
-"""
-
-add_mon_config_node_yml = """
-parameters:
-  reclass:
-    storage:
-      node:
-        ceph_mon_node04:
-          name: ${_param:ceph_mon_node04_hostname}
-          domain: ${_param:cluster_domain}
-          classes:
-          - cluster.${_param:cluster_name}.ceph.mon
-          params:
-            ceph_public_address: ${_param:ceph_mon_node04_ceph_public_address}
-            ceph_backup_time_hour: ${_param:ceph_mon_node04_ceph_backup_hour}
-            ceph_backup_time_minute: ${_param:ceph_mon_node04_ceph_backup_minute}
-            salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: ${_param:ceph_mon_system_codename}
-            single_address: ${_param:ceph_mon_node04_address}
-            keepalived_vip_priority: 104
-"""  # noqa: E501
-
-add_mon_infra_kvm_yml = """
-parameters:
-  salt:
-    control:
-      size:
-        ceph.mon:
-          cpu: 8
-          ram: 16384
-          disk_profile: small
-          net_profile: default
-      cluster:
-        internal:
-          node:
-            cmn04:
-              name: ${_param:ceph_mon_node04_hostname}
-              provider: ${_param:infra_kvm_node03_hostname}.${_param:cluster_domain}
-              image: ${_param:salt_control_xenial_image}
-              size: ceph.mon
-"""  # noqa: E501
-
-
 @pytest.mark.usefixtures("add_xtra_node_to_salt",
                          "wa_prod36167")
 class TestCephMon(object):
+    add_mon_ceph_init_yml = """
+    parameters:
+      _param:
+        ceph_mon_node04_hostname: xtra
+        ceph_mon_node04_address: 10.6.0.205
+        ceph_mon_node04_ceph_public_address: 10.166.49.209
+        ceph_mon_node04_ceph_backup_hour: 4
+        ceph_mon_node04_ceph_backup_minute: 0
+      linux:
+        network:
+          host:
+            xtra:
+              address: ${_param:ceph_mon_node04_address}
+              names:
+              - ${_param:ceph_mon_node04_hostname}
+              - ${_param:ceph_mon_node04_hostname}.${_param:cluster_domain}
+    """
+
+    add_mon_ceph_common_yml = """
+    parameters:
+      ceph:
+        common:
+          members:
+            - name: ${_param:ceph_mon_node04_hostname}
+              host: ${_param:ceph_mon_node04_address}
+    """
+
     @pytest.fixture
     def describe_node_in_reclass(self,
                                  reclass_actions, salt_actions):
@@ -290,18 +242,20 @@
                  "from describe_node_in_reclass fixture")
         reclass = reclass_actions
         # ---- cluster/*/ceph/init.yml --------------
-        reclass.merge_context(yaml_context=add_mon_ceph_init_yml,
+        reclass.merge_context(yaml_context=self.add_mon_ceph_init_yml,
                               short_path="cluster/*/ceph/init.yml")
 
         # ------- cluster/infra/config/init.yml -----------
-        reclass.merge_context(yaml_context=add_mon_ceph_common_yml,
+        reclass.merge_context(yaml_context=self.add_mon_ceph_common_yml,
                               short_path="cluster/*/ceph/common.yml")
-        reclass.merge_context(yaml_context=add_mon_config_node_yml,
+        reclass.merge_context(yaml_context=build_node_config('mon'),
                               short_path="cluster/*/infra/config/nodes.yml")
 
         # ------- define settings for new mon node in KVM cluster -----------
-        reclass.merge_context(yaml_context=add_mon_infra_kvm_yml,
-                              short_path="cluster/*/infra/kvm.yml")
+        # Commented because we don't add VM machine, we add already
+        # deployed node
+        # reclass.merge_context(yaml_context=add_mon_infra_kvm_yml,
+        #                       short_path="cluster/*/infra/kvm.yml")
 
         salt_actions.run_state("*", "saltutil.refresh_pillar")
 
@@ -313,7 +267,7 @@
         reclass = reclass_actions
         reclass.delete_key(
             key="parameters.reclass.storage.node.ceph_mon_node04",
-            short_path="cluster/*/infra/config/init.yml")
+            short_path="cluster/*/infra/config/nodes.yml")
         reclass.delete_key(
             key="parameters.salt.control.cluster.internal.node.cmn04",
             short_path="cluster/*/infra/kvm.yml"
@@ -362,68 +316,48 @@
         assert job_result == 'SUCCESS', job_description
 
 
-add_rgw_ceph_init_yml = """
-parameters:
-    _param:
-        ceph_rgw_node04_hostname: xtra
-        ceph_rgw_node04_address: 10.6.0.205
-        ceph_rgw_node04_ceph_public_address: 10.166.49.209
-    linux:
-        network:
-            host:
-                rgw04:
-                    address: ${_param:ceph_rgw_node04_address}
-                    names:
-                    - ${_param:ceph_rgw_node04_hostname}
-                    - ${_param:ceph_rgw_node04_hostname}.${_param:cluster_domain}
-"""  # noqa: E501
-
-add_rgw_ceph_rgw_yml = """
-parameters:
-  _param:
-    cluster_node04_hostname: ${_param:ceph_rgw_node04_hostname}
-    cluster_node04_address: ${_param:ceph_rgw_node04_address}
-  ceph:
-    common:
-      keyring:
-        rgw.xtra:
-          caps:
-            mon: "allow rw"
-            osd: "allow rwx"
-  haproxy:
-    proxy:
-      listen:
-        radosgw:
-          servers:
-            - name: ${_param:cluster_node04_hostname}
-              host: ${_param:cluster_node04_address}
-              port: ${_param:haproxy_radosgw_source_port}
-              params: check
-"""
-
-add_rgw_config_init_yml = """
-parameters:
-  reclass:
-    storage:
-      node:
-        ceph_rgw_node04:
-          name: ${_param:ceph_rgw_node04_hostname}
-          domain: ${_param:cluster_domain}
-          classes:
-          - cluster.${_param:cluster_name}.ceph.rgw
-          params:
-            salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename:  ${_param:ceph_rgw_system_codename}
-            single_address: ${_param:ceph_rgw_node04_address}
-            deploy_address: ${_param:ceph_rgw_node04_deploy_address}
-            ceph_public_address: ${_param:ceph_rgw_node04_public_address}
-            keepalived_vip_priority: 104
-"""
-
-
 @pytest.mark.usefixtures("add_xtra_node_to_salt",
                          "wa_prod36167")
 class TestCephRgw(object):
+    add_rgw_ceph_init_yml = """
+    parameters:
+        _param:
+            ceph_rgw_node04_hostname: xtra
+            ceph_rgw_node04_address: 10.6.0.205
+            ceph_rgw_node04_ceph_public_address: 10.166.49.209
+        linux:
+            network:
+                host:
+                    rgw04:
+                        address: ${_param:ceph_rgw_node04_address}
+                        names:
+                        - ${_param:ceph_rgw_node04_hostname}
+                        - ${_param:ceph_rgw_node04_hostname}.${_param:cluster_domain}
+    """  # noqa: E501
+
+    add_rgw_ceph_rgw_yml = """
+    parameters:
+      _param:
+        cluster_node04_hostname: ${_param:ceph_rgw_node04_hostname}
+        cluster_node04_address: ${_param:ceph_rgw_node04_address}
+      ceph:
+        common:
+          keyring:
+            rgw.xtra:
+              caps:
+                mon: "allow rw"
+                osd: "allow rwx"
+      haproxy:
+        proxy:
+          listen:
+            radosgw:
+              servers:
+                - name: ${_param:cluster_node04_hostname}
+                  host: ${_param:cluster_node04_address}
+                  port: ${_param:haproxy_radosgw_source_port}
+                  params: check
+    """
+
     @pytest.fixture
     def describe_node_in_reclass(self,
                                  reclass_actions, salt_actions):
@@ -431,14 +365,14 @@
                  "from describe_node_in_reclass fixture")
         reclass = reclass_actions
         # ---- cluster/*/ceph/init.yml --------------
-        reclass.merge_context(yaml_context=add_rgw_ceph_init_yml,
+        reclass.merge_context(yaml_context=self.add_rgw_ceph_init_yml,
                               short_path="cluster/*/ceph/init.yml")
 
-        reclass.merge_context(yaml_context=add_rgw_ceph_rgw_yml,
+        reclass.merge_context(yaml_context=self.add_rgw_ceph_rgw_yml,
                               short_path="cluster/*/ceph/rgw.yml")
 
-        reclass.merge_context(yaml_context=add_rgw_config_init_yml,
-                              short_path="cluster/*/infra/config/init.yml")
+        reclass.merge_context(yaml_context=build_node_config('rgw'),
+                              short_path="cluster/*/infra/config/nodes.yml")
 
         salt_actions.run_state("*", "saltutil.refresh_pillar")
 
@@ -503,3 +437,90 @@
 
     def test_delete_node(self):
         pass
+
+
+def build_node_config(node=''):
+    """
+
+    :param node:  [osd, mon, rgw, mgr]
+    :return: string in yaml format
+    """
+
+    class _Template(Template):
+        delimiter = "#"
+        idpattern = '[A-Z]*'
+
+    template = _Template("""
+    parameters:
+      reclass:
+        storage:
+          node:
+            ceph_#NODE_node04:
+              name: ${_param:ceph_#NODE_node04_hostname}
+              domain: ${_param:cluster_domain}
+              classes:
+              - cluster.${_param:cluster_name}.ceph.#NODE
+              - environment.${_param:cluster_name}.linux_network_interface
+              - environment.${_param:cluster_name}.overrides
+              params:
+                salt_master_host: ${_param:reclass_config_master}
+                linux_system_codename: ${_param:ceph_#NODE_system_codename}
+                single_address: ${_param:ceph_#NODE_node04_address}
+                #OSDSETTINGS
+                #MONSETTINGS
+                #RGWSETTINGS
+                linux_network_interfaces:
+                  br_ctl:
+                    address: ${_param:ceph_#NODE_node04_address}
+                    enabled: True
+                    name_servers:
+                    - ${_param:dns_server01}
+                    - ${_param:dns_server02}
+                    netmask: ${_param:control_network_netmask}
+                    proto: static
+                    require_interfaces: ['ens4']
+                    type: bridge
+                    use_interfaces: ['ens4']
+                  ens3:
+                    enabled: True
+                    name: ens3
+                    proto: dhcp
+                    type: eth
+                  ens4:
+                    enabled: True
+                    ipflush_onchange: True
+                    name: ens4
+                    proto: manual
+                    type: eth
+    """)
+
+    data = {
+        'NODE': node,
+        'OSDSETTINGS': '',
+        'MONSETTINGS': '',
+        'RGWSETTINGS': '',
+
+    }
+    # # ------------------OSD specific settings ----------
+    if node == 'osd':
+        data['OSDSETTINGS'] = """
+                ceph_crush_parent: rack02
+                """
+    # # ------------------MON specific settings ----------
+    if node == 'mon':
+        data['MONSETTINGS'] = """
+                ceph_backup_time_hour: ${_param:ceph_mon_node04_ceph_backup_hour}
+                ceph_backup_time_minute: ${_param:ceph_mon_node04_ceph_backup_minute}
+                ceph_public_address: ${_param:ceph_mon_node04_public_address}
+                keepalived_vip_priority: 104
+                """  # noqa: E501
+    # # ------------------RGW specific settings -----------
+    if node == 'rgw':
+        data['RGWSETTINGS'] = """
+                ceph_public_address: ${_param:ceph_rgw_node04_public_address}
+                keepalived_vip_priority: 104
+                """  # noqa: E501
+
+    yaml_config = template.substitute(data)
+
+    return yaml_config
