from __future__ import print_function
+import io
import os
import re
import signal
SSH_PARAMS = ["-o", "UserKnownHostsFile=/dev/null",
"-o", "StrictHostKeyChecking=no",
"-o", "LogLevel=quiet"] # That supress most of warnings and info messages
+SSH_PUBKEYS_FILE = "keys.pub"
DNS_SERVER = "172.18.16.10" #Moscow DNS
cfg = dict()
cfg["RELEASE"] = os.getenv("RELEASE")
cfg["HA"] = os.getenv("HA")
cfg["NETWORK_TYPE"] = os.getenv("NETWORK_TYPE")
+cfg["SSH_PUB_KEYS"] = os.getenv("SSH_PUB_KEYS")
try:
vconn = libvirt.open("qemu:///system")
self.pswd=pswd
+ self._valid_key = re.compile('^ssh-rsa.*$')
+
def _calculate_conn_line(self, usr, subnet):
admip = str(subnet.ip + 2)
return "{usr}@{admip}".format(usr=usr, admip=admip)
ssh_cmd = ["scp"]+SSH_PARAMS+['./'+filename,self.conn_line+":"+dest],
)
+ def put_ssh_pub_keys(self, keys):
+ with io.open(SSH_PUBKEYS_FILE, "wb") as ofile:
+ for key in keys.split('\n'):
+ if self._valid_key.match(key):
+ ofile.write(key)
+ ofile.write('\n')
+ ofile.close()
+
+ self.put_file(SSH_PUBKEYS_FILE)
+ return self.execute(["cat", "/tmp/" + SSH_PUBKEYS_FILE, ">>", "~/.ssh/authorized_keys"])
+
def pprint_dict(subj):
if not isinstance(subj, dict):
print(summary)
print ("\nFUEL ACCESS:\n\thttp://{0}:8000".format(
str(cfg["PUBLIC_SUBNET"].ip + 2)))
+ print ("\nSSH ACCESS:\n\tssh root@{0}".format(
+ str(cfg["PUBLIC_SUBNET"].ip + 2)))
print ("\nVNC CONSOLES:\n")
for dom in vconn.listAllDomains():
if dom.name().startswith(cfg["ENV_NAME"]):
if cfg["ADD_CENT_REPO"]!="" and cfg["ADD_CENT_REPO"] is not None:
add_cent_repo(admin_node,cfg["ADD_CENT_REPO"])
+ if cfg["SSH_PUB_KEYS"]!="" and cfg["SSH_PUB_KEYS"] is not None:
+ admin_node.put_ssh_pub_keys(cfg["SSH_PUB_KEYS"])
+
if cfg["UPDATE_FUEL"]=="true":
if do_update(admin_node):
print("fuel update complete")
import netaddr
-CONNECT_LINE = "root@780_admin"
+CONNECT_LINE = "root@test_admin"
PSWD = "r00tme"
test_bool("scp put file check file",
not node.execute(["test", "-f","/tmp/update_helper.sh"]))
- # NOTE: can take too many time...
+ # NOTE: can take too many time...
test_bool("do update",
build_cluster.do_update (node))
repolist='''http://mirror.fuel-infra.org/mos-repos/centos/mos9.0-centos7/updates/x86_64/
test_bool("add repo rm repo file 2",
node.execute(["rm", "-f","/etc/yum.repos.d/add2.repo"]))
+ test_bool("add pub keys",
+ node.put_ssh_pub_keys("""ssh-rsa AAAAB6NzaC1yc2EAAAADAQABAAABAQC8PWq76FFIKmxPGMdWErBMEFwtb2NZYeTxu1lMVacC1QemMMaoybNisvD+L4JyaiC+zFQzlHlCDgicCgw7TXkgFtoyttLMxbshcu+wx0uG8bMlQTZ5DZ7ywwBU7+OysSgBEvju1dlMF7wOKDcYLfJxbYoUYvq+tgVbBWBFm8q+PrMvZZGfPX5M6m/sdpiFc3/f1K6Hh+DeV+9hFx/2vES62Qwv76zzr7oGS3tAi2RyBFt6BWrJx9vqa25AAoqzRsHoj0+0iAi1reZQ3jvz3FIsfgVN+ymVv431X4Gr3H8+BMj56VpT5z8McXj9+o+qoK70YLrtg2z2IpSONOE7o3JX ac@achevychalov_
+
+XXXXXJJJJJJJJJ ac@achevycahlov
+ssh-rsa AAAAB7NzaC1yc2EAAAADAQABAAABAQC8PWq76FFIKmxPGMdWErBMEFwtb2NZYeTxu1lMVacC1QemMMaoybNisvD+L4JyaiC+zFQzlHlCDgicCgw7TXkgFtoyttLMxbshcu+wx0uG8bMlQTZ5DZ7ywwBU7+OysSgBEvju1dlMF7wOKDcYLfJxbYoUYvq+tgVbBWBFm8q+PrMvZZGfPX5M6m/sdpiFc3/f1K6Hh+DeV+9hFx/2vES62Qwv76zzr7oGS3tAi2RyBFt6BWrJx9vqa25AAoqzRsHoj0+0iAi1reZQ3jvz3FIsfgVN+ymVv431X4Gr3H8+BMj56VpT5z8McXj9+o+qoK70YLrtg2z2IpSONOE7o3JX ac@achevychalov_"""))
+
+ test_bool("add pub keys CHECK1",
+ node.execute(["egrep","-q","AAAAB6N", ".ssh/authorized_keys"]))
+
+ test_bool("add pub keys CHECK2",
+ node.execute(["egrep","-q","AAAAB7N", ".ssh/authorized_keys"]))
+
+ test_bool("add pub keys CHECK3",
+ not node.execute(["egrep","-q","XXXXXJ", ".ssh/authorized_keys"]))
+
if __name__ == "__main__":
main()
</a>
</choices>
</hudson.model.ChoiceParameterDefinition>
+ <hudson.model.TextParameterDefinition>
+ <name>SSH_PUB_KEYS</name>
+ <description>Add you keys to default value of job</description>
+ <defaultValue></defaultValue>
+ </hudson.model.TextParameterDefinition>
<org.jvnet.jenkins.plugins.nodelabelparameter.LabelParameterDefinition plugin="nodelabelparameter@1.5.1">
<name>Label of Slave</name>
<description>You can choose where to deploy your cluster by typing exact slave label here.</description>
for file in build_cluster.py scancodes.py update_helper.sh repo_helper.sh; do
#curl -o ./${file} "https://raw.githubusercontent.com/Mirantis/tools-sustaining/master/jenkins/build_cluster/${file}"
- curl -o ./${file} "https://review.fuel-infra.org/gitweb?p=tools/sustaining.git;a=blob_plain;f=jenkins/build_cluster/${file}${commit_url}"
+ curl -s -o ./${file} "https://review.fuel-infra.org/gitweb?p=tools/sustaining.git;a=blob_plain;f=jenkins/build_cluster/${file}${commit_url}"
chmod +x ${file}
done;
while true; do
eval $1 && return 0
((cnt++))
- echo -en "$cnt... "
+ echo -en "."
[[ $cnt -eq $2 ]] && return 1
sleep $3
done;
+ echo ""
}
first_phase () {