mirror of
				https://github.com/apache/cloudstack.git
				synced 2025-10-26 08:42:29 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			96 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #!/usr/bin/python
 | |
| # Licensed to the Apache Software Foundation (ASF) under one
 | |
| # or more contributor license agreements.  See the NOTICE file
 | |
| # distributed with this work for additional information
 | |
| # regarding copyright ownership.  The ASF licenses this file
 | |
| # to you 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.
 | |
| 
 | |
| 
 | |
| # Usage: prepare_tftp_bootfile.py tftp_dir mac cifs_server share directory image_to_restore cifs_username cifs_password
 | |
| import os, sys
 | |
| from sys import exit
 | |
| from os import makedirs
 | |
| from os.path import exists, join
 | |
| 
 | |
| restore_template = '''DEFAULT default
 | |
| PROMPT 1
 | |
| TIMEOUT 26
 | |
| DISPLAY boot.msg
 | |
| LABEL default
 | |
| KERNEL kernel
 | |
| APPEND vga=normal devfs=nomount pxe ramdisk_size=66000 load_ramdisk=1 init=/linuxrc prompt_ramdisk=0 initrd=initrd.gz root=/dev/ram0 rw noapic nolapic lba combined_mode=libata ide0=noprobe nomce pci=nomsi irqpoll quiet Server="%s" Share="%s" Directory="%s" Image_To_Restore="%s" After_Completion="Reboot" CIFS_Preferred="Y" Zsplit_Preferred="Y" AUTO="Y" User="%s" Passwd="%s" Extend_Parts_Whenever_Possible="N" Replace_BIOS="N" IP="%s" Netmask="%s" Gateway="%s"
 | |
| '''
 | |
| 
 | |
| backup_template = '''DEFAULT default
 | |
| PROMPT 1
 | |
| TIMEOUT 26
 | |
| DISPLAY boot.msg
 | |
| LABEL default
 | |
| KERNEL kernel
 | |
| APPEND vga=normal devfs=nomount pxe ramdisk_size=66000 load_ramdisk=1 init=/linuxrc prompt_ramdisk=0 initrd=initrd.gz root=/dev/ram0 rw noapic nolapic lba combined_mode=libata ide0=noprobe nomce pci=nomsi irqpoll quiet Server="%s" Share="%s" Directory="%s" Image_To_Restore="Create_New_Image" New_Image_Name="%s" Already_Existing_Image="Replace" Store_MD5="N" Compression_Type="gzip" After_Completion="Reboot" Minimize_Before_Storing="N" Repart="N" CIFS_Preferred="Y" AUTO="Y" User="%s" Passwd="%s" Extend_Parts_Whenever_Possible="N" Replace_BIOS="N" IP="%s" Netmask="%s" Gateway="%s"
 | |
| '''
 | |
| 
 | |
| 
 | |
| cmd = ''
 | |
| tftp_dir = ''
 | |
| mac = ''
 | |
| cifs_server = ''
 | |
| share = ''
 | |
| directory = ''
 | |
| template_dir = ''
 | |
| cifs_username = ''
 | |
| cifs_password = ''
 | |
| ip = ''
 | |
| netmask = ''
 | |
| gateway = ''
 | |
| 
 | |
| def prepare(is_restore):
 | |
|     try:
 | |
|         pxelinux = join(tftp_dir, "pxelinux.cfg")
 | |
|         if exists(pxelinux) == False:
 | |
|             makedirs(pxelinux)
 | |
| 
 | |
|         cfg_name = "01-" + mac.replace(':','-').lower()
 | |
|         cfg_path = join(pxelinux, cfg_name)
 | |
|         f = open(cfg_path, "w")
 | |
|         if is_restore:
 | |
|             fmt = restore_template
 | |
|         else:
 | |
|             fmt = backup_template
 | |
|         stuff = fmt % (cifs_server, share, directory, template_dir, cifs_username, cifs_password, ip, netmask, gateway)
 | |
|         f.write(stuff)
 | |
|         f.close()
 | |
|         return 0
 | |
|     except Exception, e:
 | |
|         print e
 | |
|         return 1
 | |
| 
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     if len(sys.argv) < 12:
 | |
|         print "Usage: prepare_tftp_bootfile.py tftp_dir mac cifs_server share directory image_to_restor cifs_username cifs_password ip netmask gateway"
 | |
|         exit(1)
 | |
| 
 | |
|     (cmd, tftp_dir, mac, cifs_server, share, directory, template_dir, cifs_username, cifs_password, ip, netmask, gateway) = sys.argv[1:]
 | |
|     
 | |
|     if cmd == "restore":
 | |
|         ret = prepare(True)
 | |
|     elif cmd == "backup":
 | |
|         ret = prepare(False)
 | |
|     else:
 | |
|         print "Unknown cmd: %s"%cmd
 | |
|         ret = 1
 | |
|         
 | |
|     exit(ret)
 |