Exemple #1
0
def main():
    global LOGGING

    if "-v" in sys.argv or "--verbose" in sys.argv:
        LOGGING = True

    usage = """
Lind Fuse File System.

""" + Fuse.fusage

    lind.load_fs()
    
    gotlock = runonce.getprocesslock('lind_fuse')
    if gotlock == True:
      pass
    else:
      if gotlock:
        print "\n\n#########################################################"
        print "[Warning] Another Process (pid: " + str(gotlock) + ") already in use."
        print "#########################################################\n\n"
      else:
        print "[Warning] Another Process is running"

    server = LindFuseFS(version="%prog " + fuse.__version__,
                 usage=usage,
                 dash_s_do='setsingle')

    server.multithreaded = False  # if this is true, better add some locks!

    server.parser.add_option("-v", "--verbose",
                             action="store_true",
                             dest="verbose",
                             default=False,
                             help="print extra information about which system"
                             " calls are being called.")

    server.parser.add_option(mountopt="root", metavar="PATH", default='/',
                             help="mirror filesystem from under PATH "
                             "[default: %default]")
    server.parse(values=server, errex=1)

    server.main()
    lind.persist_metadata("lind.metadata")
Exemple #2
0
def main():
    global LOGGING

    if "-v" in sys.argv or "--verbose" in sys.argv:
        LOGGING = True

    usage = """
Lind Fuse File System.

""" + Fuse.fusage

    lind.load_fs()
    
    gotlock = runonce.getprocesslock('lind_fuse')
    if gotlock == True:
      pass
    else:
      if gotlock:
        print "\n\n#########################################################"
        print "[Warning] Another Process (pid: " + str(gotlock) + ") already in use."
        print "#########################################################\n\n"
      else:
        print "[Warning] Another Process is running"

    server = LindFuseFS(version="%prog " + fuse.__version__,
                 usage=usage,
                 dash_s_do='setsingle')

    server.multithreaded = False  # if this is true, better add some locks!

    server.parser.add_option("-v", "--verbose",
                             action="store_true",
                             dest="verbose",
                             default=False,
                             help="print extra information about which system"
                             " calls are being called.")

    server.parser.add_option(mountopt="root", metavar="PATH", default='/',
                             help="mirror filesystem from under PATH "
                             "[default: %default]")
    server.parse(values=server, errex=1)

    server.main()
    lind.persist_metadata("lind.metadata")
Exemple #3
0
def main():

    usage = """
Lind Fuse File System.

""" + Fuse.fusage

    lind.load_fs()


    server = LindFuseFS(version="%prog " + fuse.__version__,
                 usage=usage,
                 dash_s_do='setsingle')

    server.multithreaded = False  # if this is true, better add some locks!

    server.parser.add_option(mountopt="root", metavar="PATH", default='/',
                             help="mirror filesystem from under PATH [default: %default]")
    server.parse(values=server, errex=1)
    server.main()
    lind.persist_metadata("lind.metadata")
Exemple #4
0
 def fsync(self, isfsyncfile):
     log("fsync", self.fd, isfsyncfile)
     lind.persist_metadata("lind.metadata")
     return 0
Exemple #5
0
    # read the first 5 bytes (hello)
    assert (lind_test_server.read_syscall(myfd, 5) == 'hello')

    # change it to hello world!
    assert (lind_test_server.write_syscall(myfd, ' world') == 6)

    # seek to the beginning again...
    assert (lind_test_server.lseek_syscall(myfd, 0, SEEK_SET) == 0)

    # and read it all...
    assert (lind_test_server.read_syscall(myfd, 100) == 'hello world!')

    lind_test_server.close_syscall(myfd)

    # Now make and remove a file:
    myfd = lind_test_server.open_syscall(TEST2_FILENAME, \
                                      O_CREAT | O_EXCL | O_RDWR, S_IRWXA)

    # write should succeed
    message = '================================================================================================================================'
    assert (lind_test_server.write_syscall(myfd, message) == len(message))

    lind_test_server.close_syscall(myfd)

    lind_test_server.unlink_syscall(TEST2_FILENAME)

    lind_test_server.persist_metadata(DEFAULT_METADATA_FILENAME)

    # ensure the metadata exists...
    assert (os.access(DEFAULT_METADATA_FILENAME, os.W_OK))
Exemple #6
0
def main():
	
	lind_test_server.load_fs()
	
	inter = 0
	no_args = 1
	
	# with no arguments we go into interactive mode
	if len(sys.argv) == 1:
		inter = 1
	else:
		# with 2 args we may want to do a copy
		if len(sys.argv) == 3:
			# if the args dont start with a '-' we want to do a copy
			if not ('-' == sys.argv[1][0] or '-' == sys.argv[2][0]):
				cp_cmd(sys.argv[1], sys.argv[2])
				return # we are done now
		
		# iterate over the args in a non pythonish way 
		#	so we can jump around when we need to
		i = 1
		while i<len(sys.argv):
			arg = sys.argv[i]
			
			# interactive mode specified
			if (arg == '-i' or arg == '-interactive'):
				inter = 1
		
			# we want to copy some files so get the source and dest
			elif (arg == '-cp' or arg == '-copy'):
				no_args = 0		
				if (i+2 < len(sys.argv)):
					cp_cmd(sys.argv[i+1], sys.argv[i+2])
					i += 1 # move one forward so after the loop we have moved 2 args
				else:
					print_help("cp")
					
			# we want to ls something
			elif (arg == '-ls'):
				no_args = 0
				num_args = get_num_args(sys.argv[i+1:])
				if num_args:
					ls_cmd(sys.argv[i+1:i+num_args+1]) # num_args+1 as its [inclusive:exclusive]
				else:
					ls_cmd(lind_test_server.fs_calls_context['currentworkingdirectory'])
				i += num_args
				
			# we want to read some files
			elif (arg == '-cat'):
				no_args = 0
				num_args = get_num_args(sys.argv[i+1:])
				if num_args:
					print num_args
					cat_cmd(sys.argv[i+1:i+num_args+1])
					i += num_args
				else:
					print_help("cat")

			# we want to do an md5 sum
			elif (arg == '-md5' or arg == '-md5sum'):
				no_args = 0
				num_args = get_num_args(sys.argv[i+1:])
				if num_args:
					md5_cmd(sys.argv[i+1:i+num_args+1])
					i += num_args
				else:
					print_help("md5")

			# we want to wipe the filesystem
			elif (arg == '-w' or arg == '-wipe'):
				no_args = 0
				wipe_cmd()

			# we want some help!
			elif (arg == '-h' or arg == '-help'):
				no_args = 0
				print_help(ALL_ARGS + " inter cmd")

			# next arg
			i += 1

	# we now enter interactive mode if specified
	if inter:	
		no_args = 0
		print "interactive mode, type 'exit' to exit"
		#request user input (the command they want to type)
		input_value = raw_input(lind_test_server.fs_calls_context['currentworkingdirectory'] +": ")
	
		#loop until the user hits exit, prompting them to enter a command at each iteration
		while((not input_value == "exit")):
			parse_input(input_value)
			input_value = raw_input(lind_test_server.fs_calls_context['currentworkingdirectory'] +": ")
	
	# if we didnt find any usable args print usage
	if no_args:
		print_help(ALL_ARGS + " inter cmd")

	lind_test_server.persist_metadata("lind.metadata")
Exemple #7
0
 def fsync(self, isfsyncfile):
     log("fsync", self.fd, isfsyncfile)
     lind.persist_metadata("lind.metadata")
     return 0
    # read the first 5 bytes (hello)
    assert lind_test_server.read_syscall(myfd, 5) == "hello"

    # change it to hello world!
    assert lind_test_server.write_syscall(myfd, " world") == 6

    # seek to the beginning again...
    assert lind_test_server.lseek_syscall(myfd, 0, SEEK_SET) == 0

    # and read it all...
    assert lind_test_server.read_syscall(myfd, 100) == "hello world!"

    lind_test_server.close_syscall(myfd)

    # Now make and remove a file:
    myfd = lind_test_server.open_syscall(TEST2_FILENAME, O_CREAT | O_EXCL | O_RDWR, S_IRWXA)

    # write should succeed
    message = "================================================================================================================================"
    assert lind_test_server.write_syscall(myfd, message) == len(message)

    lind_test_server.close_syscall(myfd)

    lind_test_server.unlink_syscall(TEST2_FILENAME)

    lind_test_server.persist_metadata(DEFAULT_METADATA_FILENAME)

    # ensure the metadata exists...
    assert os.access(DEFAULT_METADATA_FILENAME, os.W_OK)