summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xabs/core-testing/LinHES-config/PKGBUILD2
-rwxr-xr-xabs/core-testing/LinHES-config/mv_common.py7
-rwxr-xr-xabs/core-testing/LinHES-config/mv_hostype.py84
-rwxr-xr-xabs/core-testing/LinHES-config/mv_ir.py18
-rwxr-xr-xabs/core-testing/LinHES-config/mv_misc.py13
-rwxr-xr-xabs/core-testing/LinHES-config/mv_network.py113
-rwxr-xr-xabs/core-testing/LinHES-config/systemconfig.py7
-rwxr-xr-xabs/core-testing/LinHES-config/systemconfig.sh2
8 files changed, 208 insertions, 38 deletions
diff --git a/abs/core-testing/LinHES-config/PKGBUILD b/abs/core-testing/LinHES-config/PKGBUILD
index 83b0101..76d3d43 100755
--- a/abs/core-testing/LinHES-config/PKGBUILD
+++ b/abs/core-testing/LinHES-config/PKGBUILD
@@ -1,6 +1,6 @@
pkgname=LinHES-config
pkgver=2.0
-pkgrel=15
+pkgrel=17
conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev )
pkgdesc="Install and configure your system"
depends=(bc libstatgrab mysql-python expect curl dnsutils parted sg3_utils nmbscan system-templates rsync python-parted ddcxinfo)
diff --git a/abs/core-testing/LinHES-config/mv_common.py b/abs/core-testing/LinHES-config/mv_common.py
index 31740c3..da3e25f 100755
--- a/abs/core-testing/LinHES-config/mv_common.py
+++ b/abs/core-testing/LinHES-config/mv_common.py
@@ -129,6 +129,13 @@ def pacremove(pkg):
def getpid(process):
return commands.getoutput('pidof %s' % process)
+def remove_file(filename):
+ logging.debug(" Removing %s", filename)
+ try:
+ os.remove(filename)
+ except:
+ logging.debug("* Could not remove %s", filename)
+
def restartLCD(RESTART_LCD):
if RESTART_LCD :
diff --git a/abs/core-testing/LinHES-config/mv_hostype.py b/abs/core-testing/LinHES-config/mv_hostype.py
index fff0e8a..b3899ff 100755
--- a/abs/core-testing/LinHES-config/mv_hostype.py
+++ b/abs/core-testing/LinHES-config/mv_hostype.py
@@ -29,18 +29,80 @@ def remove_avahi_service():
if os.path.exists(file):
logging.debug(" Removing avahi mysql.service file")
cmd="rm -rf %s" %file
- runcmd(cmd)
+ mv_common.runcmd(cmd)
cmd="sudo sv restart avahi"
mv_common.runcmd(cmd)
def setup_db():
logging.debug(" Setting up the database")
-def setup_mysqlnetwork():
+def setup_mysqlnetwork(EnableNetwork):
logging.debug(" Setting up mysql network")
+ mysqlconf = "/etc/my.cnf"
+ cmd = '''grep "#skip-networking" %s ''' %mysqlconf
+ status = mv_common.runcmd(cmd)
+
+ if EnableNetwork :
+ logging.debug(" Enabling mysql networking")
+ if status == 0 :
+ logging.debug(" Network is already enabled for mysql")
+ else:
+ cmd = '''sed -ie "s/^skip-networking/#skip-networking/g" %s ''' %mysqlconf
+ mv_common.runcmd(cmd)
+ mv_common.restart_service("mysqld")
+ else:
+ logging.debug(" Disabling mysql networking")
+ if status == 1 :
+ logging.debug(" Network is already disabled for mysql")
+ else:
+ cmd = '''sed -ie "s/#skip-networking/skip-networking/g" %s ''' %mysqlconf
+ mv_common.runcmd(cmd)
+ mv_common.restart_service("mysqld")
+
+def setup_mysql_connection(systemconfig):
+ logging.info(" Configuring database connection")
+ mythip = systemconfig["mythip"]
+ systemtype = systemconfig["SystemType"]
+ mv_root = systemconfig["MVROOT"]
+ mysqltxt = "/usr/share/mythtv/mysql.txt"
+ templates = systemconfig["TEMPLATES"]
+ mysqltemplate = templates + "/mysql.txt"
+ dbhost = systemconfig["dbhost"]
+
+ if systemtype == "Master_backend":
+ logging.debug(" Setting dbhost to %s in systemconfig", mythip)
+ dbhost = mythip
+ cmd = '''sed -ei "s/^dbhost=.*$/dbhost=\"%s\"/" /etc/systemconfig ''' %dbhost
+ mv_common.runcmd(cmd)
+ logging.debug(" Changing dbhost in settings table for master_backend")
+ cmd = '''%s/bin/restore_default_settings.sh -c BECONFIG -s master -a %s ''' %(mv_root, dbhost)
+ mv_common.runcmd(cmd)
+
+ if systemtype == "Slave_backend":
+ slavehost = mythip
+ logging.debug(" Changing slave in settings: %s", slavehost)
+ cmd = '''%s/bin/restore_default_settings.sh -c BECONFIG -s slave -a %s ''' %(mv_root, slavehost)
+ mv_common.runcmd(cmd)
+
+ if systemtype == "Master_backend":
+ logging.debug(" changing mysql.txt file to use localhost")
+ cmd = '''sed -e "s/^DBHostName=.*$/DBHostName="localhost"/" %s > %s ''' %(mysqltemplate, mysqltxt)
+ mv_common.runcmd(cmd)
+ else:
+ logging.debug(" changing mysql.txt file to use %s", dbhost)
+ cmd = '''sed -e "s/^DBHostName=.*$/DBHostName=%s/" %s > %s ''' %(dbhost, mysqltemplate, mysqltxt)
+ mv_common.runcmd(cmd)
+
+ delfile = data_config.MYTHHOME + "/.mythtv/mysql.txt"
+ mv_common.remove_file(delfile)
+ delfile = mv_root + "/bin/mythtv/.mythtv/mysql.txt"
+ mv_common.remove_file(delfile)
+ filecheck = data_config.MYTHHOME + "/templates/mysql.txt"
+ if os.path.exists(filecheck):
+ logging.info(" Scrapping all the previous work and using %s for mysql.txt", filecheck)
+ mv_common.cp_and_log(filecheck, mysqltxt)
+
-def setup_mysql():
- logging.debug(" Configuring mysql")
def setup_func_key():
if data_config.SYSTEMTYPE == "MythVantage":
@@ -66,11 +128,14 @@ def hostypeprint(systemconfig):
remove_list=''
daemon_list=''
daemon_remove_list=''
+ run_mysqlnetwork = False
if systemconfig["SystemType"] == "Standalone":
logging.info("Stand alone system being configured")
setup_ntp(False,"null")
remove_avahi_service()
+ EnableNetwork = False
+ run_mysqlnetwork = True
if systemconfig["hostypec"]:
setup_db()
install_list=("mysql", "mythdb-initial", "avahi", "portmap", "nfs-utils", "local-website", "myth2ipod", "mythtv-status")
@@ -82,6 +147,8 @@ def hostypeprint(systemconfig):
setup_avahi(systemconfig["TEMPLATES"])
install_list=("mysql", "mythdb-initial", "avahi", "portmap", "nfs-utils", "local-website", "myth2ipod", "mythtv-status")
daemon_list=("mysql", "mythbackend", "avahi", "portmap", "nfs-utils", "netfs", "lighttpd")
+ EnableNetwork = True
+ run_mysqlnetwork = True
if data_config.SYSTEMTYPE == "MythVantage":
install_list.append('func')
install_list.append('certmaster')
@@ -138,8 +205,13 @@ def hostypeprint(systemconfig):
mv_common.remove_service("frontend")
mv_common.remove_service("hal")
- setup_mysqlnetwork()
- setup_mysql()
+
+ if run_mysqlnetwork:
+ setup_mysqlnetwork(EnableNetwork)
+ else:
+ logging.debug(" Not running setup_mysql_connection")
+
+ setup_mysql_connection(systemconfig)
if data_config.SYSTEMTYPE == "MythVantage":
setup_func_minion(dbhost)
setup_func_key()
diff --git a/abs/core-testing/LinHES-config/mv_ir.py b/abs/core-testing/LinHES-config/mv_ir.py
index efc8a60..b8e9741 100755
--- a/abs/core-testing/LinHES-config/mv_ir.py
+++ b/abs/core-testing/LinHES-config/mv_ir.py
@@ -3,9 +3,17 @@ import logging, mv_common
import os, re , glob
from time import time, localtime, strftime
import time
+import pwd
def setup_lirc_links(mythhome):
logging.debug(" Creating links for lirc")
+ try:
+ mythuid = pwd.getpwnam('mythtv')[2]
+ mythgid = pwd.getpwnam('mythtv')[3]
+ except:
+ logging.critical("* mythuid not found")
+ mythuid = '1000'
+ mythgid = '1000'
if not os.path.exists(mythhome+"/.mythtv"):
logging.debug(" Creating %s/.mythtv",mythhome)
try:
@@ -13,7 +21,15 @@ def setup_lirc_links(mythhome):
except:
logging.debug(" Couldn't create .mythtv ")
return
- os.chown(mythhome+"/.mythtv","mythtv","mythtv")
+ try:
+ os.chown(mythhome+"/.mythtv", mythuid, mythgid)
+ logging.debug("* Couldn't chown of %s", mythhome)
+ except:
+ cmd = ''' chown -R mythtv %s/.mythtv''' %mythhome
+ mv_common.runcmd(cmd)
+ cmd = ''' chgrp -R mythtv %s/.mythtv''' %mythhome
+ mv_common.runcmd(cmd)
+ pass
if not os.path.exists(mythhome+"/.mythtv/lircrc"):
logging.debug(" Creating symlink for myth lircrc")
diff --git a/abs/core-testing/LinHES-config/mv_misc.py b/abs/core-testing/LinHES-config/mv_misc.py
index c93cd71..9ea9c95 100755
--- a/abs/core-testing/LinHES-config/mv_misc.py
+++ b/abs/core-testing/LinHES-config/mv_misc.py
@@ -30,12 +30,13 @@ def setup_tz(timezone,TEMPLATES):
if not timezone:
timezone="unknown"
logging.info(" Setting timezone to %s",timezone)
- try:
- logging.debug(" Removing /etc/localtime")
- os.remove("/etc/localtime")
- except:
- logging.debug(" Couldn't remove /etc/localtime")
- pass
+ mv_common.remove_file("/etc/localtime")
+ #try:
+ #logging.debug(" Removing /etc/localtime")
+ #os.remove("/etc/localtime")
+ #except:
+ #logging.debug(" Couldn't remove /etc/localtime")
+ #pass
srclink="/usr/share/zoneinfo/%s" %timezone
logging.debug(" symlinking %s to /etc/localtime",srclink)
diff --git a/abs/core-testing/LinHES-config/mv_network.py b/abs/core-testing/LinHES-config/mv_network.py
index ae3aaf7..ae7f861 100755
--- a/abs/core-testing/LinHES-config/mv_network.py
+++ b/abs/core-testing/LinHES-config/mv_network.py
@@ -2,20 +2,10 @@
import sys , os, commands , glob, time, re
import logging
import mv_common
+import socket, fcntl, struct, array
global etcnetdir
etcnetdir = "/etc/net/ifaces"
-
-def setup_MYTH_IP(systemconfig):
- default_interface = systemconfig["default_interface"]
- try:
- defaultip = systemconfig["Hostip"+default_interface]
- except:
- logging.debug(" Error occured finding the defaultip")
- defaultip = "127.0.0.1"
- logging.debug(" Using %s as default ip", defaultip)
- return defaultip
-
def setup_MYTH_DHCP(systemconfig):
default_interface = systemconfig["default_interface"]
try:
@@ -23,9 +13,56 @@ def setup_MYTH_DHCP(systemconfig):
except:
logging.critical(" *Error occured finding default dhcp")
defaultdhcp = "0"
- logging.debug(" Using %s as dhcp value for %s", default_interface, defaultdhcp)
+ logging.debug(" Using %s as dhcp value for %s", defaultdhcp, default_interface)
return defaultdhcp
+def all_interfaces():
+ max_possible = 128 # arbitrary. raise if needed.
+ bytes = max_possible * 32
+ s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+ names = array.array('B', '\0' * bytes)
+ outbytes = struct.unpack('iL', fcntl.ioctl(
+ s.fileno(),
+ 0x8912, # SIOCGIFCONF
+ struct.pack('iL', bytes, names.buffer_info()[0])
+ ))[0]
+ namestr = names.tostring()
+ return [namestr[i:i+32].split('\0', 1)[0] for i in range(0, outbytes, 32)]
+
+def get_ip(ifname):
+ logging.debug(" Finding ip address for %s", ifname)
+ all_if = all_interfaces()
+ logging.debug(" found interfaces:%s", all_if)
+ if ifname in all_if :
+ logging.debug(" Found %s in all_interfaces", ifname)
+ else:
+ logging.critical("* Couldn't find %s in list", ifname)
+ ifname = all_if[0]
+ logging.critical("* Using %s for interface name", ifname)
+
+
+ s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+ return socket.inet_ntoa(fcntl.ioctl(
+ s.fileno(),
+ 0x8915, # SIOCGIFADDR
+ struct.pack('256s', ifname[:15])
+ )[20:24])
+
+def setup_MYTH_IP(systemconfig):
+ default_interface = systemconfig["default_interface"]
+ #check for dhcp in use
+ if setup_MYTH_DHCP(systemconfig) == "0":
+ logging.debug(" dhcp is in use, finding dhcp ip")
+ defaultip = get_ip(default_interface)
+ else:
+ try:
+ defaultip = systemconfig["Hostip"+default_interface]
+ except:
+ logging.debug(" Error occured finding the defaultip")
+ defaultip = "127.0.0.1"
+ logging.debug(" Using %s as default ip", defaultip)
+ return defaultip
+
def flush(netdev):
logging.debug(" Flushing %s",netdev)
cmd = '''ip address flush dev %s''' %netdev
@@ -44,7 +81,7 @@ def kill_dhcp(basedir):
f.close
cmd = "kill -9 %s" %pid
mv_common.runcmd(cmd)
- os.remove(FILE)
+ mv_common.remove_file(FILE)
os.chdir(stddir)
except:
pass
@@ -68,6 +105,8 @@ def setup_hostname(systemconfig):
logging.info(" Using default value of me")
hostname = "me"
logging.info(" Setting the hostname to %s", hostname)
+ cmd = ''' echo %s > /etc/hostname ''' %hostname
+ mv_common.runcmd(cmd)
cmd = "cat /etc/hosts | grep -v 127.0.0.1 | grep -v %s > /tmp/hosts" %hostname
mv_common.runcmd(cmd)
if systemconfig["mythdhcp"] == "1" :
@@ -193,11 +232,12 @@ def setup_interface(netdev,systemconfig):
logging.info(" Disabling wireless extensions")
cmd = '''sed -i -e 's/^CONFIG_WIRLESS=.*$/CONFIG_WIRLESS=no/g' %s/%s/options''' %(etcnetdir, netdev)
mv_common.runcmd(cmd)
- try:
- wpafile=etcnetdir+"/"+netdev+"/wpa_supplicant.conf"
- os.remove(wpafile)
- except:
- logging.debug(" Couldn't remove %s",wpafile)
+ #try:
+ wpafile=etcnetdir+"/"+netdev+"/wpa_supplicant.conf"
+ #os.remove(wpafile)
+ mv_common.remove_file(wpafile)
+ #except:
+ #logging.debug(" Couldn't remove %s",wpafile)
if netinfo["UseDHCP"] == "0" :
logging.info(" Enabling DHCP support")
@@ -256,10 +296,11 @@ def find_active(systemconfig):
logging.debug(" _Start of find_active")
if systemconfig["mythdhcp"] == "1":
- try:
- os.remove("/etc/resolv.conf")
- except:
- logging.debug(" couldn't remove /etc/resolv.conf")
+ mv_common.remove_file("/etc/resolv.conf")
+ #try:
+ #os.remove("/etc/resolv.conf")
+ #except:
+ #logging.debug(" couldn't remove /etc/resolv.conf")
cmd = ''' echo search lan > /etc/resolv.conf '''
mv_common.runcmd(cmd)
cmd = ''' echo nameserver 127.0.0.1 >> /etc/resolv.conf '''
@@ -329,15 +370,43 @@ def stop_network():
logging.info(" Will not stop network due to netboot/vnc")
pass
+def hostname_change_check(systemconfig):
+ restartfe = False
+ logging.debug(" _Start of hostname_change_check")
+ oldhostname = socket.gethostname()
+ #oldhostname = "crap"
+ newhostname = systemconfig["hostname"]
+ mv_root = systemconfig["MVROOT"]
+ logging.debug(" Old hostname: %s", oldhostname)
+ logging.debug(" New hostname: %s", newhostname)
+ if oldhostname != newhostname :
+ logging.info(" Changing hostname in database to match new hostname")
+ cmd ="%s/bin/restore_default_settings.sh -cuhostname -o -h%s" %(mv_root, oldhostname)
+ mv_common.runcmd(cmd)
+ logging.info(" Changing hostname to %s", newhostname)
+ cmd = "hostname %s" %newhostname
+ mv_common.runcmd(cmd)
+ if systemconfig["SystemType"] != "Frontend_only" :
+ logging.info(" Restarting backend")
+ mv_common.stop_service("mythbackend")
+ mv_common.start_service("mythbackend")
+ restartfe = True
+ else:
+ logging.debug(" old and new hostnames matched, leaving things along")
+ logging.debug(" __End of hostname_change_check")
+ return restartfe
+
def setup_network (systemconfig):
logging.info("____Start of network____")
logging.info(" Setting up the network")
+ restartfe = hostname_change_check(systemconfig)
setup_hostname(systemconfig)
find_active(systemconfig)
start_network()
logging.info("__End of network\n")
+ return restartfe
diff --git a/abs/core-testing/LinHES-config/systemconfig.py b/abs/core-testing/LinHES-config/systemconfig.py
index 5ccaa10..4d69a1f 100755
--- a/abs/core-testing/LinHES-config/systemconfig.py
+++ b/abs/core-testing/LinHES-config/systemconfig.py
@@ -100,7 +100,10 @@ def main(argv):
cmdmodule["smolt"] = True
if cmdmodule["network"]:
- mv_network.setup_network(systemconfig)
+ restartfe = mv_network.setup_network(systemconfig)
+ if restartfe == True :
+ logging.debug(" Setting the frontend to restart due to network change")
+ cmdmodule["restartfe"] = True
@@ -109,7 +112,7 @@ def main(argv):
restart = mv_ir.setup_ir(systemconfig,data_config)
restartfe = restart[0]
restartlcd = restart[1]
- if restartfe == True:
+ if restartfe == True :
logging.debug(" Setting the frontend to restart due to lirc change")
cmdmodule["restartfe"] = True
cmdmodule["smolt"] = True
diff --git a/abs/core-testing/LinHES-config/systemconfig.sh b/abs/core-testing/LinHES-config/systemconfig.sh
index 4f58ee2..57bff5a 100755
--- a/abs/core-testing/LinHES-config/systemconfig.sh
+++ b/abs/core-testing/LinHES-config/systemconfig.sh
@@ -11,4 +11,6 @@ echo "----------------------start of systemconfig $@ ----------------------"
postfix=`cat ${BASE}/usr/local/share/mythtv/.releasetype`
systemconfig.py -m $@
+echo "exit code $?"
+