summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Meyer <james.meyer@operamail.com>2012-09-20 21:10:42 (GMT)
committerJames Meyer <james.meyer@operamail.com>2012-09-20 21:10:42 (GMT)
commit24f531c22f8c07112d4d71ae37f6f65a85f6e815 (patch)
tree3c8b35fb1fc5dd3eada80b8ad2a7f32a5a253511
parent269509031d79a1e0b455fa2ad2daeb8477ddc470 (diff)
downloadlinhes_pkgbuild-24f531c22f8c07112d4d71ae37f6f65a85f6e815.zip
linhes_pkgbuild-24f531c22f8c07112d4d71ae37f6f65a85f6e815.tar.gz
linhes_pkgbuild-24f531c22f8c07112d4d71ae37f6f65a85f6e815.tar.bz2
LinHES-config: write out /etc/exports for non-sg systems
-rwxr-xr-xabs/core/LinHES-config/PKGBUILD12
-rwxr-xr-xabs/core/LinHES-config/mv_config.py6
-rwxr-xr-xabs/core/LinHES-config/mv_fileshare.py122
-rwxr-xr-xabs/core/LinHES-config/mv_install.py3
-rw-r--r--abs/core/LinHES-config/myth_settings_wrapper.sh15
-rwxr-xr-xabs/core/LinHES-config/systemconfig.py4
6 files changed, 134 insertions, 28 deletions
diff --git a/abs/core/LinHES-config/PKGBUILD b/abs/core/LinHES-config/PKGBUILD
index 2d9e0d6..e1879b9 100755
--- a/abs/core/LinHES-config/PKGBUILD
+++ b/abs/core/LinHES-config/PKGBUILD
@@ -1,6 +1,6 @@
pkgname=LinHES-config
pkgver=2.3
-pkgrel=132
+pkgrel=140
conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev LinHes-config )
pkgdesc="Install and configure your system"
depends=('bc' 'libstatgrab' 'mysql-python' 'expect' 'curl' 'dnsutils' 'parted'
@@ -125,9 +125,9 @@ build() {
install -o root -g root -D -m 0755 blacklist_pcspkr.conf $startdir/pkg/etc/modprobe.d/blacklist_pcspkr.conf
install -o root -g root -D -m 0755 blacklist_nouveau.conf $startdir/pkg/etc/modprobe.d/blacklist_nouveau.conf
}
-md5sums=('5d5a33523956d3e56d8d5913fcdc0855'
+md5sums=('d27979591231e647f59c23ae18a3d37b'
'f33e1a6f7985091b8d47cbaf7433f90f'
- '04c72de15178f1577ce40a8cb045930a'
+ '1afacd0337d95f140b2a1777c27f041a'
'2596460462cf6c889cf8f95485537b20'
'985891a43f7c4c983eb2a362162f1a0f'
'fda01259a4bc74d83c9092d338bd247a'
@@ -135,7 +135,7 @@ md5sums=('5d5a33523956d3e56d8d5913fcdc0855'
'f73d6d6f98839e900cb6685bf5dc4eae'
'68199e861c2933ccbb84735b9b440157'
'2a7f3b34e522acfd08283b86c8926aba'
- '60103d94ada98ac583fea620294f14d3'
+ '4a538bdfbb2833c48bcffb4f82729de6'
'689b01f7636e09b2f9657c6ce6006ee7'
'ecf9e5df20683a769c4a8a8f2d65de85'
'a6faa20d905e2fd92ce79acab044b759'
@@ -160,8 +160,8 @@ md5sums=('5d5a33523956d3e56d8d5913fcdc0855'
'cc5ee06e2182bb825ca3712a1c1afb64'
'919909f4d23b9ee3caf71193c042cc40'
'85101b79d1ee30bff8244c810828033f'
- 'f15d7fef91565494deb0de50bb67a957'
- '419a2eaa52b8639da1076828a85bf355'
+ '923197a517cb83d77263e8cea8b8c16a'
+ '60611c3f90dbaafde9c41421b2bf759d'
'2596460462cf6c889cf8f95485537b20'
'4cba2bb55c6b8e27c57a6171f42d0455'
'4804aa93aaad3dfcfff08cd9ffd68836'
diff --git a/abs/core/LinHES-config/mv_config.py b/abs/core/LinHES-config/mv_config.py
index fa8f3bd..381f424 100755
--- a/abs/core/LinHES-config/mv_config.py
+++ b/abs/core/LinHES-config/mv_config.py
@@ -13,6 +13,12 @@ NOOPDEBUG="FALSE"
TEMP_TEMPLATES="/tmp/templates"
share_exclude_dir=['mysql','srv']
+SG_MAP_AUTONFS_SKIP=['media/tv','media/video','media/video_stuff']
+
+MAP_AUTONFS_SKIP=['lost+found','media','backup']
+
+
+
SQUASHFILE="/tmp/.squashlist"
diff --git a/abs/core/LinHES-config/mv_fileshare.py b/abs/core/LinHES-config/mv_fileshare.py
index d8866c4..ebb53c7 100755
--- a/abs/core/LinHES-config/mv_fileshare.py
+++ b/abs/core/LinHES-config/mv_fileshare.py
@@ -2,10 +2,12 @@
import logging, os, re
import mv_common
import glob
+from urllib2 import Request, urlopen, URLError, HTTPError
#client side
def setup_nfs_client(systemconfig,data_config):
nfslist=[]
+ nfsmap_serverfile ="nfsmap"
logging.info("____Start of setup_nfs__client____")
scrubnfs(systemconfig.get("TEMPLATES"))
@@ -17,22 +19,28 @@ def setup_nfs_client(systemconfig,data_config):
if not os.path.exists(nfsmap_file):
logging.debug(" Couldn't find local %s",nfsmap_file)
logging.info(" Trying to download nfsmap from MBE")
- nfsmap_file = download_nfsmap(systemconfig.get("dbhost"))
+ nfsmap_file = download_nfsmap(systemconfig.get("dbhost"),nfsmap_serverfile)
nfslist = process_nfsmap_file(nfsmap_file)
+
# if it's an ip parse ip and download file
elif re.search(systemconfig.get("NFSserver"),":nfsmap"):
ip=systemconfig.get("NFSserver").split(":")[0]
- nfsmap_file = download_nfsmap(ip)
+ nfsmap_file = download_nfsmap(ip,nfsmap_serverfile)
nfslist = process_nfsmap_file(nfsmap_file)
#else treat it as a single mount point
else:
item = (systemconfig.get("NFSserver") , systemconfig["NFSmount"])
nfslist.append(item)
else:
- #if standalone or slave try to use MBE
+ #if frontend_only or slave try to use MBE nfs_map_auto
if systemconfig.get("SystemType") == "Frontend_only" or systemconfig["SystemType"] == "Slave_Backend":
- item = (systemconfig.get("dbhost")+":"+ data_config.DATAMOUNT, data_config.DATAMOUNT)
- nfslist.append(item)
+ logging.info(" Central NFS not found, trying to use MBE as nfs server")
+ nfsmap_serverfile = "nfsmap_auto"
+ ip=systemconfig.get("dbhost")
+ nfsmap_file = download_nfsmap(ip,nfsmap_serverfile)
+ nfslist = process_nfsmap_file(nfsmap_file)
+
+
setup_nfs_fstab(nfslist)
logging.info("__End of nfs\n")
@@ -61,10 +69,11 @@ def scrubnfs(templates):
cmd='''sed '/^#STARTSCRUB.*$/,/^#ENDSCRUB.*$/d' %s/fstab.conf.template > /etc/fstab''' %templates
mv_common.runcmd(cmd)
-def download_nfsmap(ip):
+def download_nfsmap(ip,nfsmap_serverfile):
nfsmap_file="/tmp/nfsmap"
- myurl="http://%s:1337/templates/nfsmap" %ip
+ myurl="http://%s:1337/templates/%s" %(ip,nfsmap_serverfile)
req = Request(myurl)
+
try:
f = urlopen(req)
logging.info(" downloading %s", myurl)
@@ -84,6 +93,15 @@ def download_nfsmap(ip):
return nfsmap_file
+def setup_nfs_mkdir(nfs_dirname):
+ logging.info(" Creating NFS mount point %s" , nfs_dirname)
+ try:
+ os.makedirs(nfs_dirname)
+ except:
+ logging.debug(" Failed creating nfs mount point")
+
+
+
def setup_nfs_fstab(nfslist):
logging.info(" Adding nfs paths to fstab")
try:
@@ -92,6 +110,7 @@ def setup_nfs_fstab(nfslist):
f.write(line)
for s, m in nfslist:
line = "%s %s nfs \n" %(s,m)
+ setup_nfs_mkdir(m)
logging.debug(" %s",line)
f.write(line)
line = "#ENDSCRUB\n"
@@ -252,7 +271,7 @@ def scan_for_shares():
share_list = []
for conf_file in file_list:
try:
- logging.debug(" mv_advanced: reading in %s" %conf_file)
+ logging.debug(" mv_fileshare: reading in %s" %conf_file)
config.read(conf_file)
shareable = config.get('storage','shareable')
if shareable == "True" :
@@ -261,24 +280,87 @@ def scan_for_shares():
if config.get('storage','mmount') == "True" :
share_list.append("/myth")
except:
- logging.debug(" mv_advanced: Couldn't open %s for reading" %conf_file)
+ logging.debug(" mv_fileshare: Couldn't open %s for reading" %conf_file)
return share_list
-def setup_etc_exports(shares,data_config):
+def setup_etc_exports(shares,data_config,servername):
#read in /etc/ exports
conf_file="/etc/exports"
excludes = data_config.share_exclude_dir
+ nfsmap_sg_auto_skip = data_config.SG_MAP_AUTONFS_SKIP
+ nfsmap_auto_skip = data_config.MAP_AUTONFS_SKIP
+
+ #print nfsmap_auto_skip
+ nfs_auto_line ="%s:%s %s"
+
+
+ nfs_map_auto = []
+
+ share_list = []
+
+
+ #create the lists for both /etc/exports and nfs_map_auto
+ for share in shares:
+ if share == "/myth":
+ continue
+ os.chdir(share)
+ file_list=glob.glob("*")
+ for dirname in file_list:
+ if os.path.isdir(dirname):
+ tempname = "%s/%s" %(share,dirname)
+ if dirname not in nfsmap_auto_skip:
+ share_list.append(tempname)
+ if dirname not in nfsmap_sg_auto_skip:
+ templine = nfs_auto_line %(servername,tempname,tempname)
+ nfs_map_auto.append(templine)
+
+
+ file_list=glob.glob("media/*")
+ for dirname in file_list:
+ if os.path.isdir(dirname):
+ tempname = "%s/%s" %(share,dirname)
+ if dirname not in nfsmap_auto_skip:
+ share_list.append(tempname)
+ if dirname not in nfsmap_sg_auto_skip:
+ templine = nfs_auto_line %(servername,tempname,tempname)
+ nfs_map_auto.append(templine)
+
+
+
+
new_exports=[]
- new_exports.append("#This file was generated by systemconfig.py -m advanced")
+ new_exports.append("#This file was generated by systemconfig.py -m fileshare")
new_exports.append("#Use exportfs -arv to reread. \n\n")
+ #for exclude in excludes:
+ # share_line='''/%s *(noaccess)''' %exclude
+ # new_exports.append(share_line)
- for share in shares:
+ for share in share_list:
share_line='''%s *(rw,all_squash,anonuid=1000,anongid=1000,no_subtree_check)''' %share
new_exports.append(share_line)
- for exclude in excludes:
- share_line='''/%s *(noaccess)''' %exclude
- new_exports.append(share_line)
+ #for exclude in excludes:
+ #share_line='''/%s *(noaccess)''' %exclude
+ #new_exports.append(share_line)
+
+ #write out nfs_map_auto
+ try:
+
+ logging.info(" writing nfsmap_auto")
+ try:
+ os.makedirs("%s/templates/" %data_config.MYTHHOME)
+ except:
+ pass
+ conf_file_nfs = "%s/templates/nfsmap_auto" %(data_config.MYTHHOME)
+ f=open(conf_file_nfs,'w')
+ for line in nfs_map_auto:
+ f.write(line)
+ f.write("\n")
+ logging.debug("%s" %line)
+ f.close()
+ except:
+ logging.info("* error writing /data/srv/htdocs/nfsmap_auto")
+
try:
logging.info(" writing /etc/exports")
f=open(conf_file,'w')
@@ -292,17 +374,19 @@ def setup_etc_exports(shares,data_config):
-def setup_NFSshares(UseNFS,templatefile,data_config):
+def setup_NFSshares(UseNFS,templatefile,data_config,servername):
if UseNFS == "1":
logging.info(" Activating NFS server")
mv_common.pacinstall("nfs-utils")
mv_common.pacinstall("rpcbind")
shares = scan_for_shares()
- setup_etc_exports(shares,data_config)
+ setup_etc_exports(shares,data_config,servername)
mv_common.add_service("nfsd")
mv_common.add_service("nfs-common")
mv_common.add_service("rpcbind")
+ cmd="exportfs -arv"
+ mv_common.runcmd(cmd)
else:
logging.info(" Removing NFS server")
mv_common.remove_service("nfsd")
@@ -328,7 +412,7 @@ def setup_fileshare(systemconfig,data_config):
setup_nfs_client(systemconfig,data_config)
#server
setup_NFSshares(systemconfig.get("UseNFS"),
- systemconfig.get("TEMPLATES")+"/exports.template",data_config)
+ systemconfig.get("TEMPLATES")+"/exports.template",data_config,systemconfig.get("hostname"))
setup_samba(systemconfig,data_config)
- logging.info("__End of advanced configuration\n")
+ logging.info("__End of fileshare configuration\n")
diff --git a/abs/core/LinHES-config/mv_install.py b/abs/core/LinHES-config/mv_install.py
index ccfcb8e..54f4051 100755
--- a/abs/core/LinHES-config/mv_install.py
+++ b/abs/core/LinHES-config/mv_install.py
@@ -1156,7 +1156,8 @@ def double_mount(fe_only=False, upgrade=False):
if fe_only == True:
cmd = "chroot " + data_config.MOUNTPOINT +" /usr/LH/bin/add_storage.py --double_myth --no_mount --fe_only"
else:
- cmd = "chroot " + data_config.MOUNTPOINT +" /usr/LH/bin/add_storage.py --double_myth --no_mount"
+ #cmd = "chroot " + data_config.MOUNTPOINT +" /usr/LH/bin/add_storage.py --double_myth --no_mount"
+ cmd = "chroot " + data_config.MOUNTPOINT +" /usr/LH/bin/add_storage.py --double_myth "
if runcmd(cmd)[0] == 0:
logging.debug(" Add storage worked, breaking out of loop")
diff --git a/abs/core/LinHES-config/myth_settings_wrapper.sh b/abs/core/LinHES-config/myth_settings_wrapper.sh
index 7bf8782..90d41de 100644
--- a/abs/core/LinHES-config/myth_settings_wrapper.sh
+++ b/abs/core/LinHES-config/myth_settings_wrapper.sh
@@ -1,4 +1,5 @@
#!/bin/bash
+MYTH_RUN_STATUS="1"
. /etc/profile
. /etc/systemconfig
shopt -s -o nounset
@@ -103,6 +104,9 @@ do
echo "template is hostsettings"
Thistemplate=syssettings
loadhost=true
+ elif [ x$Thistemplate = x"custom" ]
+ then
+ echo "template is custom"
else
echo "invalid template name"
exit 1
@@ -171,8 +175,15 @@ case $OPERATION in
;;
load)
- #this loads the distro default file, it's not active by any hosts
- mythutil --import-settings --infile $TEMPLATES/$Thistemplate/distro_default.xml
+ if [ x$Thistemplate = "xcustom" ]
+ then
+ define_xml $5 $hostname settings $6
+ load_xml $gen_xml > /tmp/load_xml_custom.log
+
+ else
+ #this loads the distro default file, it's not active by any hosts
+ mythutil --import-settings --infile $TEMPLATES/$Thistemplate/distro_default.xml
+ fi
;;
diff --git a/abs/core/LinHES-config/systemconfig.py b/abs/core/LinHES-config/systemconfig.py
index d2596e7..73cb45b 100755
--- a/abs/core/LinHES-config/systemconfig.py
+++ b/abs/core/LinHES-config/systemconfig.py
@@ -281,6 +281,10 @@ def main(argv):
import mv_vnc
mv_vnc.setupvnc(systemconfig,data_config)
+ if cmdmodule["fileshare"]:
+ import mv_fileshare
+ mv_fileshare.setup_fileshare(systemconfig, data_config)
+
if __name__ == "__main__":