diff options
| -rwxr-xr-x | abs/core/LinHES-config/PKGBUILD | 12 | ||||
| -rwxr-xr-x | abs/core/LinHES-config/mv_config.py | 6 | ||||
| -rwxr-xr-x | abs/core/LinHES-config/mv_fileshare.py | 122 | ||||
| -rwxr-xr-x | abs/core/LinHES-config/mv_install.py | 3 | ||||
| -rw-r--r-- | abs/core/LinHES-config/myth_settings_wrapper.sh | 15 | ||||
| -rwxr-xr-x | abs/core/LinHES-config/systemconfig.py | 4 | 
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__":  | 
