Update underlay ssh host by VCP hodes

Change-Id: I6125db762a0974143a2454b288d3a42e9b6c5829
diff --git a/tcp_tests/managers/saltmanager.py b/tcp_tests/managers/saltmanager.py
index d02d7db..4a58e93 100644
--- a/tcp_tests/managers/saltmanager.py
+++ b/tcp_tests/managers/saltmanager.py
@@ -12,6 +12,8 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
+import netaddr
+
 from collections import defaultdict
 
 from datetime import datetime
@@ -155,3 +157,38 @@
     def get_pillar(self, tgt, pillar):
         result = self.local(tgt=tgt, fun='pillar.get', args=pillar)
         return result['return']
+
+    def get_ssh_data(self):
+        """Generate ssh config for Underlay
+
+        :param roles: list of strings
+        """
+
+        pool_name = self.__config.underlay.net_mgmt
+        pool_net = netaddr.IPNetwork(self.__config.underlay.address_pools[
+            self.__config.underlay.net_mgmt])
+        hosts = self.local('*', 'grains.item', ['host', 'ipv4'])
+
+        if len(hosts.get('return', [])) == 0:
+            raise LookupError("Hosts is empty or absent")
+        hosts = hosts['return'][0]
+        if len(hosts) == 0:
+            raise LookupError("Hosts is empty or absent")
+
+        def host(node_name, ip):
+            return {
+                'roles': ['salt_minion'],
+                'keys': [
+                    k['private'] for k in self.__config.underlay.ssh_keys
+                ],
+                'node_name': node_name,
+                'host': ip,
+                'address_pool': pool_name,
+                'login': settings.SSH_NODE_CREDENTIALS['login'],
+                'password': settings.SSH_NODE_CREDENTIALS['password']
+            }
+
+        return [
+            host(k, next(i for i in v['ipv4'] if i in pool_net))
+            for k, v in hosts.items()
+            if next(i for i in v['ipv4'] if i in pool_net)]