os-xenapi/os_xenapi/utils/consoles.py

55 lines
1.9 KiB
Python
Executable File

#!/usr/bin/env python
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
"""console utils
It contains the utilities relative to guest VM console logs collecting."""
import os
import sys
from os_xenapi.utils import sshclient
from os_xenapi.utils import xapi_plugin
OS_XENAPI_PKG = 'os-xenapi'
def exit_with_error(err_msg):
sys.stderr.write(err_msg)
sys.exit(1)
def setup_guest_console_log(dom0_client):
"Install console logrotate script"
dom0_client.ssh('mkdir -p /var/log/xen/guest')
dom0_client.ssh('mkdir -p /opt/xensource/bin')
is_tmp_dir, os_xenapi_dir = xapi_plugin.get_os_xenapi_dir()
dom0_client.scp(
os_xenapi_dir + "/os_xenapi/utils/rotate_xen_guest_logs.sh",
os.path.join("/opt/xensource/bin/", 'rotate_xen_guest_logs.sh'))
dom0_client.ssh('''crontab - << CRONTAB
* * * * * /opt/xensource/bin/rotate_xen_guest_logs.sh >/dev/null 2>&1
CRONTAB''')
if __name__ == '__main__':
if len(sys.argv) != 4:
exit_with_error("Wrong parameters input.")
dom0_himn_ip, user_name, password = sys.argv[1:]
try:
client = sshclient.SSHClient(dom0_himn_ip, user_name, password)
except Exception:
exit_with_error("Create connection failed, ip: %(dom0_himn_ip)s,"
" user_name: %(user_name)s" %
{'dom0_himn_ip': dom0_himn_ip, 'user_name': user_name})
setup_guest_console_log(client)