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)]