Changeset 6094


Ignore:
Timestamp:
Oct 26, 2017, 12:18:24 PM (23 months ago)
Author:
hectorgh
Message:

adding add_mirror functionality

Location:
n4d-nfs/trunk/fuentes
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • n4d-nfs/trunk/fuentes/debian/changelog

    r5250 r6094  
     1n4d-nfs (0.6) xenial; urgency=high
     2
     3  * Adding add_mirror functionality.
     4
     5 -- Hector Garcia Huerta <hectorgh@gmail.com>  Thu, 26 Oct 2017 12:15:37 +0200
     6
    17n4d-nfs (0.5) xenial; urgency=high
    28
  • n4d-nfs/trunk/fuentes/install/etc/n4d/conf.d/NfsManager

    r4886 r6094  
    66export_directories=adm,admins
    77add_share=adm,admins
     8add_mirror=adm,admins
    89remove_ip_from_share=adm,admins
     10remove_ip_from_mirror=adm,admins
    911configure_mount_on_boot=adm,admins
    1012clean_exports_file=adm,admins
  • n4d-nfs/trunk/fuentes/install/usr/share/n4d/python-plugins/NfsManager.py

    r5249 r6094  
    1414                self.nfs_dir="/etc/exports.d/"
    1515                self.nfs_file=self.nfs_dir+"net.exports"
     16                self.mirror_file=self.nfs_dir+"mirror.exports"
    1617                self.default_options="rw,sync,no_subtree_check,no_root_squash"
    1718                self.regex_pattern="^(/[\-/\w]+)(\s+)((((\d{1,3}\.){3}\d{1,3})|\w+)\((.*)\)(\s+|$))+"
     
    3031                if not os.path.exists(self.nfs_dir):
    3132                        os.makedirs(self.nfs_dir)
    32                
    3333               
    3434        #def __init__
     
    6565                                        exports[d][ip]=options
    6666                return exports
    67 
    6867       
    6968        #def parse_exports_file
     69       
    7070
    7171        def fix_missing_no_root_squash(self):
     
    115115       
    116116       
     117        def add_mirror(self,mirror_dir,ip,options=None):
     118               
     119                if options==None:
     120                        options=self.default_options
     121                       
     122                exports=self.parse_exports_file(self.mirror_file)
     123       
     124                if mirror_dir not in exports:
     125                        exports[mirror_dir]={}
     126                exports[mirror_dir][ip]=options
     127                return self.write_exports_file(exports,self.mirror_file)
     128               
     129        #def add_share
     130       
     131       
    117132        def remove_ip_from_share(self,share,ip):
    118133               
     
    124139                               
    125140                                self.write_exports_file(exports)
     141                               
     142                                return {"status":True,"msg":"Removed IP from server"}
     143                       
     144                        else:
     145                                return {"status":False,"msg":"IP not found"}
     146                               
     147                else:
     148                        return {"status":True,"msg":"Share dir. not found"}
     149                       
     150               
     151        #def remove_ip_from_share
     152       
     153       
     154        def remove_ip_from_mirror(self,mirror_dir,ip):
     155               
     156                exports=self.parse_exports_file(self.mirror_file)
     157               
     158                if mirror_dir in exports:
     159                        if ip in exports[mirror_dir]:
     160                                exports[mirror_dir].pop(ip)
     161                               
     162                                self.write_exports_file(exports,self.mirror_file)
    126163                               
    127164                                return {"status":True,"msg":"Removed IP from server"}
     
    202239        #def configure_mount_on_boot
    203240       
     241       
    204242        def remove_mount_on_boot(self,target):
    205243               
     
    220258        #def remove_mount_on_boot
    221259       
    222         def clean_exports_file(self):
    223                
    224                 if os.path.exists(self.nfs_file):
    225                         os.remove(self.nfs_file)
     260       
     261        def clean_exports_file(self,f=None):
     262               
     263                if f==None:
     264                        f=self.nfs_file
     265               
     266                if os.path.exists(f):
     267                        os.remove(f)
    226268                        self.export_directories()
    227269               
    228270                return {"status":True,"msg":"NfsManager exports.d file is now clean"}
    229271
    230         def makedir(self,dir_path=None):
    231 
    232                 if not os.path.isdir(dir_path):
    233                         os.makedirs(dir_path)
    234 
    235                 return [True]
    236                
     272        def makedir(self,dir_path=None):
     273
     274                if not os.path.isdir(dir_path):
     275                        os.makedirs(dir_path)
     276                return [True]
     277               
     278        #def makedir
     279       
     280       
    237281        def backup(self,dir_path="/backup"):
    238                 try:
    239                         self.makedir(dir_path)
    240 
    241                         #get_backup_name es una funcion que esta definida en n4d
    242                         file_path=dir_path+"/"+get_backup_name("NfsManager")
    243 
    244                         tar=tarfile.open(file_path,"w:gz")
    245                         for f in self.backup_files:
     282                try:
     283                        self.makedir(dir_path)
     284                        #get_backup_name es una funcion que esta definida en n4d
     285                        file_path=dir_path+"/"+get_backup_name("NfsManager")
     286
     287                        tar=tarfile.open(file_path,"w:gz")
     288                        for f in self.backup_files:
    246289                                if os.path.exists(f):
    247                                         tar.add(f)
     290                                        tar.add(f)
    248291                        for d in self.backup_dirs:
    249                              if os.path.exists(d):
    250                                 for f in os.listdir(d):
    251                                         tar.add(d+f)
    252 
    253                         tar.close()
    254                         print "Backup generated in %s" % file_path
    255                         return [True,file_path]
    256 
    257 
    258                 except Exception as e:
    259                                 print "Backup failed", e
    260                                 return [False,str(e)]
    261 
    262         #def backup
     292                                if os.path.exists(d):
     293                                        for f in os.listdir(d):
     294                                                tar.add(d+f)
     295
     296                        tar.close()
     297                        print "Backup generated in %s" % file_path
     298                        return [True,file_path]
     299
     300
     301                except Exception as e:
     302                        print "Backup failed", e
     303                        return [False,str(e)]
     304
     305        #def backup
    263306
    264307
    265308        def restore(self,file_path=None):
    266309
    267                 #Ordeno de manera alfabetica el directorio y busco el fichero que tiene mi cadena
    268                 if file_path==None:
    269                         dir_path="/backup"
    270                         for f in sorted(os.listdir(dir_path),reverse=True):
    271 
    272                                 if "NfsManager" in f:
    273                                         file_path=dir_path+"/"+f
    274                                         break
    275 
    276                 #Descomprimo el fichero y solo las cadenas que espero encontrar son las que restauro, reiniciando el servicio
    277 
    278 
    279                 try:
    280                         if os.path.exists(file_path):
    281 
    282                                 tmp_dir=tempfile.mkdtemp()
    283                                 tar=tarfile.open(file_path)
    284                                 tar.extractall(tmp_dir)
    285                                 tar.close
    286 
    287                                 for f in self.backup_files:
    288                                                 tmp_path=tmp_dir+f
    289                                                 if os.path.exists(tmp_path):
    290                                                         shutil.copy(tmp_path,f)
    291 
     310                #Ordeno de manera alfabetica el directorio y busco el fichero que tiene mi cadena
     311                if file_path==None:
     312                        dir_path="/backup"
     313                        for f in sorted(os.listdir(dir_path),reverse=True):
     314                                if "NfsManager" in f:
     315                                        file_path=dir_path+"/"+f
     316                                        break
     317
     318                #Descomprimo el fichero y solo las cadenas que espero encontrar son las que restauro, reiniciando el servicio
     319                try:
     320                        if os.path.exists(file_path):
     321                                tmp_dir=tempfile.mkdtemp()
     322                                tar=tarfile.open(file_path)
     323                                tar.extractall(tmp_dir)
     324                                tar.close()
     325
     326                                for f in self.backup_files:
     327                                                tmp_path=tmp_dir+f
     328                                                if os.path.exists(tmp_path):
     329                                                        shutil.copy(tmp_path,f)
    292330
    293331                                for d in self.backup_dirs:
     
    296334                                                cmd="cp -r " + tmp_path + "/* " + d
    297335                                                if not os.path.exists(d):
    298                                                         os.makedirs(d)
     336                                                        os.makedirs(d)
    299337                                                os.system(cmd)
    300338
    301 
    302                         print "File is restored in %s" % self.backup_files
    303 
    304                         return [True,""]
    305 
    306 
    307                 except Exception as e:
    308 
    309                         print "Restored failed", e
    310                         return [False,str(e)]
    311 
    312                 pass
    313 
    314         #def restore
    315 
     339                        print "File is restored in %s" % self.backup_files
     340                        return [True,""]
     341
     342                except Exception as e:
     343
     344                        print "Restored failed", e
     345                        return [False,str(e)]
     346
     347        #def restore
     348       
     349       
    316350       
    317351       
Note: See TracChangeset for help on using the changeset viewer.