Example #1
0
def create_netstorage_paths(sformat, geo, cpcodes, connectionDetails):
    '''Connects to Akamai's NetStorage infrastructure and creates file
    paths to receive log delivery via FTP

    Keyword Arguments:
    sformat -- string provided by user indicating streaming format
    geo -- string provided by user indicating service geo
    cpcodes -- list of cpcodes provided by user
    connectionDetails -- ConfigParser object containing NS auth details
    '''
    for cpcode in cpcodes:
        ns = Netstorage(connectionDetails['DEFAULT']['Hostname'],
                        connectionDetails['DEFAULT']['Key-name'],
                        connectionDetails['DEFAULT']['Key'],
                        ssl=True)
        ns_dir = '/{0}/logdelivery/{1}/{2}/{3}'\
            .format(connectionDetails['DEFAULT']['Cpcode'], sformat, geo, cpcode)
        print('Creating {0}'.format(ns_dir), flush=True)
        ok, response = ns.mkdir(ns_dir)

        if ok is True:
            print('Sucessfully created path {0}.'.format(ns_dir), flush=True)
        else:
            print('Error creating {0}. The error response code was {1}: {2}'.
                  format(ns_dir, response.status_code, response.text),
                  flush=True)
Example #2
0
def test_create_netstorage_paths():
    sformat = 'smooth'
    geo = 'us'
    cpcodes = ['123456', '789012']
    connectionDetails = alda.get_netstorage_credentials('alda.netstorage')
    ns = Netstorage(connectionDetails['DEFAULT']['Hostname'],
                    connectionDetails['DEFAULT']['Key-name'],
                    connectionDetails['DEFAULT']['Key'], ssl=True)
    for cpcode in cpcodes:
        ns_dir = '/{0}/logdelivery/{1}/{2}/{3}'\
                .format(connectionDetails['DEFAULT']['Cpcode'], sformat, geo, cpcode)
        ok, response = ns.mkdir(ns_dir)  # Test we can make directories
        assert ok is True
        assert response.status_code == 200
        ok, response = ns.rmdir(ns_dir)  # Remove test directories
        print(ok)
        print(response.text)
        assert ok is True
        assert response.status_code == 200
Example #3
0
         ok, res = ns.dir(args[0], ast.literal_eval(args[1]),
                          _arg(2))
     else:
         ok, res = ns.dir(args[0])
 elif options.action == 'list':
     if len(args) >= 2:
         ok, res = ns.list(args[0], ast.literal_eval(args[1]),
                           _arg(2))
     else:
         ok, res = ns.list(args[0])
 elif options.action == 'download':
     ok, res = ns.download(args[0], args[1], _arg(2))
 elif options.action == 'du':
     ok, res = ns.du(args[0], _arg(1))
 elif options.action == 'mkdir':
     ok, res = ns.mkdir(args[0], _arg(1))
 elif options.action == 'mtime':
     ok, res = ns.mtime(args[0], args[1], _arg(2))
 elif options.action == 'quick-delete':
     ok, res = ns.quick_delete(args[0], _arg(1))
 elif options.action == 'rmdir':
     ok, res = ns.rmdir(args[0], _arg(1))
 elif options.action == 'stat':
     ok, res = ns.stat(args[0], _arg(1))
 elif options.action == 'symlink':
     ok, res = ns.symlink(args[0], args[1], _arg(2))
 elif options.action == 'upload':
     if len(args) >= 3:
         ok, res = ns.upload(args[0], args[1], args[2], _arg(3))
     else:
         ok, res = ns.upload(args[0], args[1])
class TestNetstorage(unittest.TestCase):
    
    def setUp(self):
        self.cpcode_path = NS_CPCODE
        self.temp_ns_dir = "/{0}/{1}".format(self.cpcode_path, str(uuid.uuid4()))
        self.temp_file = "{0}.txt".format(str(uuid.uuid4()))
        self.temp_ns_file = "{0}/{1}".format(self.temp_ns_dir, self.temp_file)
        
        self.ns = Netstorage(NS_HOSTNAME, NS_KEYNAME, NS_KEY)
        
    def tearDown(self):
        # delete temp files for local
        if os.path.exists(self.temp_file):
            os.remove(self.temp_file)
            print("[TEARDOWN] remove {0} from local done".format(self.temp_file))
        
        if os.path.exists(self.temp_file + '_rename'):
            os.remove(self.temp_file + '_rename')
            print("[TEARDOWN] remove {0} from local done".format(self.temp_file + '_rename'))
        
        # delete temp files for netstorage    
        ok, _ = self.ns.delete(self.temp_ns_file)
        if ok:
            print("[TEARDOWN] delete {0} done".format(self.temp_ns_file))    
        ok, _ = self.ns.delete(self.temp_ns_file + '_lnk')
        if ok:
            print("[TEARDOWN] delete {0} done".format(self.temp_ns_file + '_lnk'))
        ok, _ = self.ns.delete(self.temp_ns_file + '_rename')
        if ok:
            print("[TEARDOWN] delete {0} done".format(self.temp_ns_file + '_rename'))
        ok, _ = self.ns.rmdir(self.temp_ns_dir)
        if ok:
            print("[TEARDOWN] rmdir {0} done".format(self.temp_ns_dir))
        
    def test_netstorage(self):
        # dir
        ok, _ = self.ns.dir("/" + self.cpcode_path)
        self.assertEqual(True, ok, "dir fail.")
        print("[TEST] dir {0} done".format("/" + self.cpcode_path))

        # mkdir
        ok, _ = self.ns.mkdir(self.temp_ns_dir)
        self.assertEqual(True, ok, "mkdir fail.")
        print("[TEST] mkdir {0} done".format(self.temp_ns_dir))

        # upload
        with open(self.temp_file, 'wt') as f:
            f.write("Hello, Netstorage API World!")
        ok, res = self.ns.upload(self.temp_file, self.temp_ns_file)
        self.assertEqual(True, ok, "upload fail.")
        print("[TEST] upload {0} to {1} done".format(self.temp_file, self.temp_ns_file))

        # du
        ok, res = self.ns.du(self.temp_ns_dir)
        self.assertEqual(True, ok)
        xml_tree = ET.fromstring(res.content)
        self.assertEqual(str(os.stat(self.temp_file).st_size), xml_tree[0].get('bytes'), "du fail.")
        print("[TEST] du done")

        # mtime
        current_time = int(time.time())
        ok, _ = self.ns.mtime(self.temp_ns_file, current_time)
        self.assertEqual(True, ok, "mtime fail.")
        print("[TEST] mtime {0} to {1} done".format(self.temp_ns_file, current_time))

        # stat
        ok, res = self.ns.stat(self.temp_ns_file)
        self.assertEqual(True, ok, "stat fail.")
        xml_tree = ET.fromstring(res.text)
        self.assertEqual(str(current_time), xml_tree[0].get('mtime'))
        print("[TEST] stat done")

        # symlink
        ok, _ = self.ns.symlink(self.temp_ns_file, self.temp_ns_file + "_lnk")
        self.assertEqual(True, ok, "symlink fail.")
        print("[TEST] symlink {0} to {1} done".format(self.temp_ns_file, self.temp_ns_file + "_lnk"))

        # rename
        ok, _ = self.ns.rename(self.temp_ns_file, self.temp_ns_file + "_rename")
        self.assertEqual(True, ok, "rename fail.")
        print("[TEST] rename {0} to {1} done".format(self.temp_ns_file, self.temp_ns_file + "_rename"))
        
        # download
        ok, _ = self.ns.download(self.temp_ns_file + "_rename")
        self.assertEqual(True, ok, "download fail.")
        print("[TEST] download {0} done".format(self.temp_ns_file + "_rename"))

        # delete
        ok, _ = self.ns.delete(self.temp_ns_file + "_rename")
        self.assertEqual(True, ok, "delete fail.")
        print("[TEST] delete {0} done".format(self.temp_ns_file + "_rename"))
        ok, _ = self.ns.delete(self.temp_ns_file + "_lnk")
        self.assertEqual(True, ok, "delete fail.")
        print("[TEST] delete {0} done".format(self.temp_ns_file + "_lnk"))

        # rmdir
        ok, _ = self.ns.rmdir(self.temp_ns_dir)
        self.assertEqual(True, ok, "rmdir fail.")
        print("[TEST] rmdir {0} done".format(self.temp_ns_dir))

    def test_netstorage_exception(self):
        print(os.linesep)

        with self.assertRaises(NetstorageError):
            self.ns.dir("Invalid ns path")
        print("[TEST] Invalid ns path NetstorageError test done")

        with self.assertRaises(NetstorageError):
            self.ns.upload("Invalid local path", self.temp_ns_file)
        print("[TEST] Invalid local path NetstorageError test done")

        with self.assertRaises(NetstorageError):
            self.ns.download("/123456/directory/", self.temp_file)
        print("[TEST] Download directory path NetstorageError test done")
Example #5
0
class TestNetstorage(unittest.TestCase):
    
    def setUp(self):
        self.cpcode_path = NS_CPCODE
        self.temp_ns_dir = "/{0}/{1}".format(self.cpcode_path, str(uuid.uuid4()))
        self.temp_file = "{0}.txt".format(str(uuid.uuid4()))
        self.temp_ns_file = "{0}/{1}".format(self.temp_ns_dir, self.temp_file)
        
        self.ns = Netstorage(NS_HOSTNAME, NS_KEYNAME, NS_KEY)
        
    def tearDown(self):
        # delete temp files for local
        if os.path.exists(self.temp_file):
            os.remove(self.temp_file)
            print("[TEARDOWN] remove {0} from local done".format(self.temp_file))
        
        if os.path.exists(self.temp_file + '_rename'):
            os.remove(self.temp_file + '_rename')
            print("[TEARDOWN] remove {0} from local done".format(self.temp_file + '_rename'))
        
        # delete temp files for netstorage    
        ok, _ = self.ns.delete(self.temp_ns_file)
        if ok:
            print("[TEARDOWN] delete {0} done".format(self.temp_ns_file))    
        ok, _ = self.ns.delete(self.temp_ns_file + '_lnk')
        if ok:
            print("[TEARDOWN] delete {0} done".format(self.temp_ns_file + '_lnk'))
        ok, _ = self.ns.delete(self.temp_ns_file + '_rename')
        if ok:
            print("[TEARDOWN] delete {0} done".format(self.temp_ns_file + '_rename'))
        ok, _ = self.ns.rmdir(self.temp_ns_dir)
        if ok:
            print("[TEARDOWN] rmdir {0} done".format(self.temp_ns_dir))
        
    def test_netstorage(self):
        # dir
        ok, _ = self.ns.dir("/" + self.cpcode_path)
        self.assertEqual(True, ok, "dir fail.")
        print("[TEST] dir {0} done".format("/" + self.cpcode_path))

        # mkdir
        ok, _ = self.ns.mkdir(self.temp_ns_dir)
        self.assertEqual(True, ok, "mkdir fail.")
        print("[TEST] mkdir {0} done".format(self.temp_ns_dir))

        # upload
        with open(self.temp_file, 'wt') as f:
            f.write("Hello, Netstorage API World!")
        ok, res = self.ns.upload(self.temp_file, self.temp_ns_file)
        self.assertEqual(True, ok, "upload fail.")
        print("[TEST] upload {0} to {1} done".format(self.temp_file, self.temp_ns_file))

        # du
        ok, res = self.ns.du(self.temp_ns_dir)
        self.assertEqual(True, ok)
        xml_tree = ET.fromstring(res.content)
        self.assertEqual(str(os.stat(self.temp_file).st_size), xml_tree[0].get('bytes'), "du fail.")
        print("[TEST] du done")

        # mtime
        current_time = int(time.time())
        ok, _ = self.ns.mtime(self.temp_ns_file, current_time)
        self.assertEqual(True, ok, "mtime fail.")
        print("[TEST] mtime {0} to {1} done".format(self.temp_ns_file, current_time))

        # stat
        ok, res = self.ns.stat(self.temp_ns_file)
        self.assertEqual(True, ok, "stat fail.")
        xml_tree = ET.fromstring(res.text)
        self.assertEqual(str(current_time), xml_tree[0].get('mtime'))
        print("[TEST] stat done")

        # symlink
        ok, _ = self.ns.symlink(self.temp_ns_file, self.temp_ns_file + "_lnk")
        self.assertEqual(True, ok, "symlink fail.")
        print("[TEST] symlink {0} to {1} done".format(self.temp_ns_file, self.temp_ns_file + "_lnk"))

        # rename
        ok, _ = self.ns.rename(self.temp_ns_file, self.temp_ns_file + "_rename")
        self.assertEqual(True, ok, "rename fail.")
        print("[TEST] rename {0} to {1} done".format(self.temp_ns_file, self.temp_ns_file + "_rename"))
        
        # download
        ok, _ = self.ns.download(self.temp_ns_file + "_rename")
        self.assertEqual(True, ok, "download fail.")
        print("[TEST] download {0} done".format(self.temp_ns_file + "_rename"))

        # delete
        ok, _ = self.ns.delete(self.temp_ns_file + "_rename")
        self.assertEqual(True, ok, "delete fail.")
        print("[TEST] delete {0} done".format(self.temp_ns_file + "_rename"))
        ok, _ = self.ns.delete(self.temp_ns_file + "_lnk")
        self.assertEqual(True, ok, "delete fail.")
        print("[TEST] delete {0} done".format(self.temp_ns_file + "_lnk"))

        # rmdir
        ok, _ = self.ns.rmdir(self.temp_ns_dir)
        self.assertEqual(True, ok, "rmdir fail.")
        print("[TEST] rmdir {0} done".format(self.temp_ns_dir))

    def test_netstorage_exception(self):
        print(os.linesep)
        if not (sys.version_info[0] == 2 and sys.version_info[1] <= 6):
            with self.assertRaises(NetstorageError):
                self.ns.dir("Invalid ns path")
            print("[TEST] Invalid ns path NetstorageError test done")

            with self.assertRaises(NetstorageError):
                self.ns.upload("Invalid local path", self.temp_ns_file)
            print("[TEST] Invalid local path NetstorageError test done")

            with self.assertRaises(NetstorageError):
                self.ns.download("/123456/directory/", self.temp_file)
            print("[TEST] Download directory path NetstorageError test done")
Example #6
0
 elif options.action == 'dir':
     if len(args) >= 2:
         ok, res = ns.dir(args[0], ast.literal_eval(args[1]))
     else:
         ok, res = ns.dir(args[0])
 elif options.action == 'list':
     if len(args) >= 2:
         ok, res = ns.list(args[0], ast.literal_eval(args[1]))
     else:
         ok, res = ns.list(args[0])
 elif options.action == 'download':
     ok, res = ns.download(args[0], args[1])
 elif options.action == 'du':
     ok, res = ns.du(args[0])
 elif options.action == 'mkdir':
     ok, res = ns.mkdir(args[0])
 elif options.action == 'mtime':
     ok, res = ns.mtime(args[0], args[1])
 elif options.action == 'quick-delete':
     ok, res = ns.quick_delete(args[0])
 elif options.action == 'rmdir':
     ok, res = ns.rmdir(args[0])
 elif options.action == 'stat':
     ok, res = ns.stat(args[0])
 elif options.action == 'symlink':
     ok, res = ns.symlink(args[0], args[1])
 elif options.action == 'upload':
     if len(args) >= 3:
         ok, res = ns.upload(args[0], args[1], args[2])
     else:
         ok, res = ns.upload(args[0], args[1])
    if options.hostname and options.keyname and options.key and options.action:
        ns = Netstorage(options.hostname, options.keyname, options.key)

        try:
            res = None
            if options.action == "delete":
                ok, res = ns.delete(args[0])
            elif options.action == "dir":
                ok, res = ns.dir(args[0])
            elif options.action == "download":
                ok, res = ns.download(args[0], args[1])
            elif options.action == "du":
                ok, res = ns.du(args[0])
            elif options.action == "mkdir":
                ok, res = ns.mkdir(args[0])
            elif options.action == "mtime":
                ok, res = ns.mtime(args[0], args[1])
            elif options.action == "quick-delete":
                ok, res = ns.quick_delete(args[0])
            elif options.action == "rmdir":
                ok, res = ns.rmdir(args[0])
            elif options.action == "stat":
                ok, res = ns.stat(args[0])
            elif options.action == "symlink":
                ok, res = ns.symlink(args[0], args[1])
            elif options.action == "upload":
                ok, res = ns.upload(args[0], args[1])
            else:
                print("Invalid action.\nUse option -h or --help")
                exit()