Copying openrc from controller node, adding to global config and external ip to config yaml added.
diff --git a/scripts/connector.py b/scripts/connector.py
index 0bbf447..28a4a40 100644
--- a/scripts/connector.py
+++ b/scripts/connector.py
@@ -1,4 +1,7 @@
import argparse
+import logging
+import re
+import string
import sys
import tempfile
import os
@@ -6,24 +9,63 @@
from urlparse import urlparse
from nodes.node import Node
+from ssh_utils import ssh_connect, ssh_copy_file, connect
from utils import parse_creds
-from keystone import KeystoneAuth
-
-
-from keystone import KeystoneAuth
+from fuel_rest_api import KeystoneAuth
tmp_file = tempfile.NamedTemporaryFile().name
+openrc_path = tempfile.NamedTemporaryFile().name
+logger = logging.getLogger("io-perf-tool")
-def discover_fuel_nodes(fuel_url, creds, cluster_id):
+def get_cluster_id(cluster_name, conn):
+ clusters = conn.do("get", path="/api/clusters")
+ for cluster in clusters:
+ if cluster['name'] == cluster_name:
+ return cluster['id']
+
+
+def get_openrc_data(file_name):
+ openrc_dict = {}
+
+ with open(file_name) as f:
+ for line in f.readlines():
+ if len(line.split(" ")) > 1:
+ line = line.split(' ')[1]
+ key, value = line.split('=')
+
+ if key in ['OS_AUTH_URL', 'OS_PASSWORD',
+ 'OS_TENANT_NAME', 'OS_USERNAME']:
+ openrc_dict[key] = value[1: len(value) - 2]
+
+ return openrc_dict
+
+
+def get_openrc(nodes):
+ controller = None
+
+ for node in nodes:
+ if 'controller' in node.roles:
+ controller = node
+ break
+
+ url = controller.conn_url[6:]
+ ssh = connect(url)
+ sftp = ssh.open_sftp()
+ sftp.get('/root/openrc', openrc_path)
+ sftp.close()
+
+ return get_openrc_data(openrc_path)
+
+
+def discover_fuel_nodes(fuel_url, creds, cluster_name):
username, tenant_name, password = parse_creds(creds)
creds = {"username": username,
"tenant_name": tenant_name,
"password": password}
- admin_ip = urlparse(fuel_url).hostname
- fuel = KeystoneAuth(fuel_url, creds, headers=None, echo=None,
- admin_node_ip=admin_ip)
+ fuel = KeystoneAuth(fuel_url, creds, headers=None, echo=None,)
+ cluster_id = get_cluster_id(cluster_name, fuel)
nodes = fuel.do("get", path="/api/nodes?cluster_id=" + str(cluster_id))
ips = [node["ip"] for node in nodes]
roles = [node["roles"] for node in nodes]
@@ -33,7 +75,9 @@
nodes, to_clean = run_agent(ips, roles, host, tmp_file)
nodes = [Node(node[0], node[1]) for node in nodes]
- return nodes, to_clean
+ openrc_dict = get_openrc(nodes)
+
+ return nodes, to_clean, openrc_dict
def discover_fuel_nodes_clean(fuel_url, ssh_creds, nodes, base_port=12345):
@@ -102,9 +146,9 @@
+ ":" + fuel_id_rsa_path, role))
ssh.close()
- print 'Files has been transfered successefully to Fuel node, ' \
- 'agent has been launched'
- print nodes
+ logger.info('Files has been transferred successfully to Fuel node, ' \
+ 'agent has been launched')
+ logger.info("Nodes : " + str(nodes))
return nodes, nodes_to_clean
@@ -115,11 +159,11 @@
parser.add_argument(
"--fuel_url", required=True)
parser.add_argument(
- "--cluster_id", required=True)
+ "--cluster_name", required=True)
parser.add_argument(
"--iface", default="eth1")
parser.add_argument(
- "--creds", default="admin:admin:admin")
+ "--creds", default="admin:admin@admin")
return parser.parse_args(argv)
@@ -128,7 +172,7 @@
args = parse_command_line(argv)
nodes, to_clean = discover_fuel_nodes(args.fuel_url,
- args.creds, args.cluster_id)
+ args.creds, args.cluster_name)
discover_fuel_nodes_clean(args.fuel_url, {"username": "root",
"password": "test37",
"port": 22}, to_clean)