Esempio n. 1
0
def deleteNode(provider,driverUno,driverDos,driverTres,driverCuatro,nodeId):
	pass
	nodesProvider = ''
	if provider == "Digital Ocean":
		pass
		accessKey = driverUno
		driverDos = driverDos
		driverTres = driverTres
		driverCuatro = driverCuatro
		nodeId = nodeId
		driver = DigitalOceanNodeDriver(accessKey)
		
		idsNodes = driver.list_nodes()

		for idNodes in idsNodes:
			#print idsNodes
			if idNodes.id == nodeId:
				pass
				idNod = idNodes
	#			print idNod
				nodeDelete = driver.destroy_node(idNod)

				types = 'terminated'

				node = checkStatus.checkStatus(driver, idNod.id, types)

				if node != 0:
					nodesProvider = nodeDelete

	if provider == "EC2":
		pass
		accessId = driverUno
		secretKey = driverDos
		region = driverTres
		driverCuatro = driverCuatro
		nodeId = nodeId
	#	driver = BaseEC2NodeDriver(accessId,secretKey,'eu-west-1')

		cls = get_driver(Provider.EC2)
		driver = cls(accessId, secretKey, region=region)

		idsNodes = driver.list_nodes()

		for idNodes in idsNodes:
			#print idsNodes
			if idNodes.id == nodeId:
				pass
				idNod = idNodes
	#			print idNod
				public_ips = driver.ex_describe_all_addresses(only_associated = True)

				for public_ip in public_ips:

					if public_ip.instance_id == idNod.id:
						ip = public_ip
						
						nodeDelete = driver.destroy_node(idNod)

						driver.ex_release_address(ip, domain = ip.domain)

						types = 'terminated'

						node = checkStatus.checkStatus(driver, idNod.id, types)

						if node != 0:
							nodesProvider = nodeDelete
						else:
							nodesProvider = 'null'

	if provider == "Azure":
		pass
		tenantId = driverUno
		subscriptionId = driverDos
		applicationId = driverTres
		keyPaswd = driverCuatro
		nodeId = nodeId
		driver = AzureNodeDriver(tenantId,subscriptionId,applicationId,keyPaswd)

		idsNodes = driver.list_nodes()

		for idNodes in idsNodes:
			#print idsNodes
			if idNodes.id == nodeId:
				pass
				idNod = idNodes
	#			print idNod

				nodeDelete = driver.destroy_node(idNod)

				types = 'terminated'

				node = checkStatus.checkStatus(driver, idNod.id, types)

				if node != 0:
					nodesProvider = nodeDelete



	if provider == "Linode":
		pass
		apiKey = driverUno
		driverDos = driverDos
		driverTres = driverTres
		driverCuatro = driverCuatro
		nodeId = nodeId
		driver = LinodeNodeDriver(apiKey)

		idsNodes = driver.list_nodes()

		for idNodes in idsNodes:
			#print idsNodes
			if idNodes.id == nodeId:
				pass
				idNod = idNodes
	#			print idNod
				nodeDelete = driver.destroy_node(idNod)

				types = 'terminated'

				node = checkStatus.checkStatus(driver, idNod.id, types)

				if node != 0:
					nodesProvider = nodeDelete

	return nodesProvider
Esempio n. 2
0
class LinodeTest(unittest.TestCase, TestCaseMixin):
    # The Linode test suite

    def setUp(self):
        LinodeNodeDriver.connectionCls.conn_classes = (None, LinodeMockHttp)
        LinodeMockHttp.use_param = 'api_action'
        self.driver = LinodeNodeDriver('foo')

    def test_list_nodes(self):
        nodes = self.driver.list_nodes()
        self.assertEqual(len(nodes), 1)
        node = nodes[0]
        self.assertEqual(node.id, "8098")
        self.assertEqual(node.name, 'api-node3')
        self.assertEqual(node.extra['PLANID'], '1')
        self.assertTrue('75.127.96.245' in node.public_ips)
        self.assertEqual(node.private_ips, [])

    def test_reboot_node(self):
        # An exception would indicate failure
        node = self.driver.list_nodes()[0]
        self.driver.reboot_node(node)

    def test_destroy_node(self):
        # An exception would indicate failure
        node = self.driver.list_nodes()[0]
        self.driver.destroy_node(node)

    def test_create_node_password_auth(self):
        # Will exception on failure
        self.driver.create_node(name="Test",
                                location=self.driver.list_locations()[0],
                                size=self.driver.list_sizes()[0],
                                image=self.driver.list_images()[6],
                                auth=NodeAuthPassword("test123"))

    def test_create_node_ssh_key_auth(self):
        # Will exception on failure
        node = self.driver.create_node(name="Test",
                                       location=self.driver.list_locations()[
                                           0],
                                       size=self.driver.list_sizes()[0],
                                       image=self.driver.list_images()[6],
                                       auth=NodeAuthSSHKey('foo'))
        self.assertTrue(isinstance(node, Node))

    def test_list_sizes(self):
        sizes = self.driver.list_sizes()
        self.assertEqual(len(sizes), 10)
        for size in sizes:
            self.assertEqual(size.ram, int(size.name.split(" ")[1]))

    def test_list_images(self):
        images = self.driver.list_images()
        self.assertEqual(len(images), 22)

    def test_create_node_response(self):
        # should return a node object
        node = self.driver.create_node(name="node-name",
                                       location=self.driver.list_locations()[
                                           0],
                                       size=self.driver.list_sizes()[0],
                                       image=self.driver.list_images()[0],
                                       auth=NodeAuthPassword("foobar"))
        self.assertTrue(isinstance(node, Node))
class LinodeTest(unittest.TestCase, TestCaseMixin):
    # The Linode test suite

    def setUp(self):
        LinodeNodeDriver.connectionCls.conn_classes = (None, LinodeMockHttp)
        LinodeMockHttp.use_param = 'api_action'
        self.driver = LinodeNodeDriver('foo')

    def test_list_nodes(self):
        nodes = self.driver.list_nodes()
        self.assertEqual(len(nodes), 1)
        node = nodes[0]
        self.assertEqual(node.id, "8098")
        self.assertEqual(node.name, 'api-node3')
        self.assertEqual(node.extra['PLANID'], '1')
        self.assertTrue('75.127.96.245' in node.public_ips)
        self.assertEqual(node.private_ips, [])

    def test_reboot_node(self):
        # An exception would indicate failure
        node = self.driver.list_nodes()[0]
        self.driver.reboot_node(node)

    def test_destroy_node(self):
        # An exception would indicate failure
        node = self.driver.list_nodes()[0]
        self.driver.destroy_node(node)

    def test_create_node_password_auth(self):
        # Will exception on failure
        self.driver.create_node(name="Test",
                                location=self.driver.list_locations()[0],
                                size=self.driver.list_sizes()[0],
                                image=self.driver.list_images()[6],
                                auth=NodeAuthPassword("test123"))

    def test_create_node_ssh_key_auth(self):
        # Will exception on failure
        node = self.driver.create_node(name="Test",
                                location=self.driver.list_locations()[0],
                                size=self.driver.list_sizes()[0],
                                image=self.driver.list_images()[6],
                                auth=NodeAuthSSHKey('foo'))
        self.assertTrue(isinstance(node, Node))

    def test_list_sizes(self):
        sizes = self.driver.list_sizes()
        self.assertEqual(len(sizes), 10)
        for size in sizes:
            self.assertEqual(size.ram, int(size.name.split(" ")[1]))

    def test_list_images(self):
        images = self.driver.list_images()
        self.assertEqual(len(images), 22)

    def test_create_node_response(self):
        # should return a node object
        node = self.driver.create_node(name="node-name",
                         location=self.driver.list_locations()[0],
                         size=self.driver.list_sizes()[0],
                         image=self.driver.list_images()[0],
                         auth=NodeAuthPassword("foobar"))
        self.assertTrue(isinstance(node, Node))
 def setUp(self):
     LinodeNodeDriver.connectionCls.conn_classes = (None, LinodeMockHttp)
     LinodeMockHttp.use_param = 'api_action'
     self.driver = LinodeNodeDriver('foo')
Esempio n. 5
0
class LinodeTest(unittest.TestCase, TestCaseMixin):
    # The Linode test suite

    def setUp(self):
        LinodeNodeDriver.connectionCls.conn_classes = (None, LinodeMockHttp)
        LinodeMockHttp.use_param = 'api_action'
        self.driver = LinodeNodeDriver('foo')

    def test_list_nodes(self):
        nodes = self.driver.list_nodes()
        self.assertEqual(len(nodes), 1)
        node = nodes[0]
        self.assertEqual(node.id, "8098")
        self.assertEqual(node.name, 'api-node3')
        self.assertEqual(node.extra['PLANID'], '2')
        self.assertTrue('75.127.96.245' in node.public_ips)
        self.assertEqual(node.private_ips, [])

    def test_reboot_node(self):
        # An exception would indicate failure
        node = self.driver.list_nodes()[0]
        self.driver.reboot_node(node)

    def test_destroy_node(self):
        # An exception would indicate failure
        node = self.driver.list_nodes()[0]
        self.driver.destroy_node(node)

    def test_create_node_password_auth(self):
        # Will exception on failure
        self.driver.create_node(name="Test",
                                location=self.driver.list_locations()[0],
                                size=self.driver.list_sizes()[0],
                                image=self.driver.list_images()[6],
                                auth=NodeAuthPassword("test123"))

    def test_create_node_ssh_key_auth(self):
        # Will exception on failure
        node = self.driver.create_node(name="Test",
                                       location=self.driver.list_locations()[
                                           0],
                                       size=self.driver.list_sizes()[0],
                                       image=self.driver.list_images()[6],
                                       auth=NodeAuthSSHKey('foo'))
        self.assertTrue(isinstance(node, Node))

    def test_list_sizes(self):
        sizes = self.driver.list_sizes()
        self.assertEqual(len(sizes), 9)
        for size in sizes:
            self.assertEqual(size.ram, int(size.name.split(" ")[1]))

    def test_list_images(self):
        images = self.driver.list_images()
        self.assertEqual(len(images), 30)

    def test_create_node_response(self):
        # should return a node object
        node = self.driver.create_node(name="node-name",
                                       location=self.driver.list_locations()[
                                           0],
                                       size=self.driver.list_sizes()[0],
                                       image=self.driver.list_images()[0],
                                       auth=NodeAuthPassword("foobar"))
        self.assertTrue(isinstance(node, Node))

    def test_destroy_volume(self):
        # Will exception on failure
        node = self.driver.list_nodes()[0]
        volume = StorageVolume(id=55648, name="test", size=1024,
                               driver=self.driver, extra={"LINODEID": node.id})
        self.driver.destroy_volume(volume)

    def test_ex_create_volume(self):
        # should return a StorageVolume object
        node = self.driver.list_nodes()[0]
        volume = self.driver.ex_create_volume(size=4096,
                                              name="Another test image",
                                              node=node,
                                              fs_type="ext4")
        self.assertTrue(isinstance(volume, StorageVolume))

    def test_ex_list_volumes(self):
        # should return list of StorageVolume objects
        node = self.driver.list_nodes()[0]
        volumes = self.driver.ex_list_volumes(node=node)

        self.assertTrue(isinstance(volumes, list))
        self.assertTrue(isinstance(volumes[0], StorageVolume))
        self.assertEqual(len(volumes), 2)
def resizeNode(provider, driverUno, driverDos, driverTres, driverCuatro, size,
               nodeId):
    pass
    nodesProvider = ''
    if provider == "Digital Ocean":
        pass
        accessKey = driverUno
        driverDos = driverDos
        driverTres = driverTres
        driverCuatro = driverCuatro
        size = size
        nodeId = nodeId
        driver = DigitalOceanNodeDriver(accessKey)

        idsNodes = driver.list_nodes()
        sizesNode = driver.list_sizes()

        for idNodes in idsNodes:
            #print idsNodes
            if idNodes.id == nodeId:
                pass
                idNod = idNodes
    #			print idNod

        for sizeNode in sizesNode:
            if sizeNode.name == size:
                pass
                sizeName = sizeNode

                nodesProvider = driver.resize_node(sizeName, idNod)

    if provider == "EC2":
        pass
        accessId = driverUno
        secretKey = driverDos
        region = driverTres
        driverCuatro = driverCuatro
        size = size
        nodeId = nodeId
        #	driver = BaseEC2NodeDriver(accessId,secretKey,'eu-west-1')

        cls = get_driver(Provider.EC2)
        driver = cls(accessId, secretKey, region=region)

        idsNodes = driver.list_nodes()
        sizesNode = driver.list_sizes()

        idNod = ''
        sizeName = ''

        for idNodes in idsNodes:
            #print idsNodes
            if idNodes.id == nodeId:
                pass
                idNod = idNodes
    #			print idNod

        for sizeNode in sizesNode:
            if sizeNode.id == size:
                pass
                sizeName = sizeNode

        nodesProvider = driver.ex_change_node_size(idNod, sizeName)
    if provider == "Azure":
        pass
        tenantId = driverUno
        subscriptionId = driverDos
        applicationId = driverTres
        keyPaswd = driverCuatro
        size = size
        nodeId = nodeId
        driver = AzureNodeDriver(tenantId, subscriptionId, applicationId,
                                 keyPaswd)

        idsNodes = driver.list_nodes()
        sizesNode = driver.list_sizes()

        for idNodes in idsNodes:
            #print idsNodes
            if idNodes.id == nodeId:
                pass
                idNod = idNodes
    #			print idNod

        for sizeNode in sizesNode:
            if sizeNode.name == size:
                pass
                sizeName = sizeNode

                nodesProvider = driver.resize_node(sizeName, idNod)

    if provider == "Linode":
        pass
        apiKey = driverUno
        driverDos = driverDos
        driverTres = driverTres
        driverCuatro = driverCuatro
        size = size
        nodeId = nodeId
        driver = LinodeNodeDriver(apiKey)

        idsNodes = driver.list_nodes()
        sizesNode = driver.list_sizes()

        for idNodes in idsNodes:
            #print idsNodes
            if idNodes.id == nodeId:
                pass
                idNod = idNodes
    #			print idNod

        for sizeNode in sizesNode:
            if sizeNode.name == size:
                pass
                sizeName = sizeNode

                nodesProvider = driver.ex_resize_node(sizeName, idNod)

    return nodesProvider
Esempio n. 7
0
 def setUp(self):
     LinodeNodeDriver.connectionCls.conn_class = LinodeMockHttpV4
     LinodeMockHttpV4.type = None
     self.driver = LinodeNodeDriver('foo', api_version='4.0')
Esempio n. 8
0
class LinodeTest(unittest.TestCase, TestCaseMixin):
    # The Linode test suite

    def setUp(self):
        LinodeNodeDriver.connectionCls.conn_class = LinodeMockHttp
        LinodeMockHttp.use_param = 'api_action'
        self.driver = LinodeNodeDriver('foo', api_version='3.0')

    def test_list_nodes(self):
        nodes = self.driver.list_nodes()
        self.assertEqual(len(nodes), 1)
        node = nodes[0]
        self.assertEqual(node.id, "8098")
        self.assertEqual(node.name, 'api-node3')
        self.assertEqual(node.extra['PLANID'], '2')
        self.assertTrue('75.127.96.245' in node.public_ips)
        self.assertEqual(node.private_ips, [])

    def test_reboot_node(self):
        # An exception would indicate failure
        node = self.driver.list_nodes()[0]
        self.driver.reboot_node(node)

    def test_destroy_node(self):
        # An exception would indicate failure
        node = self.driver.list_nodes()[0]
        self.driver.destroy_node(node)

    def test_create_node_password_auth(self):
        # Will exception on failure
        self.driver.create_node(name="Test",
                                location=self.driver.list_locations()[0],
                                size=self.driver.list_sizes()[0],
                                image=self.driver.list_images()[6],
                                auth=NodeAuthPassword("test123"))

    def test_create_node_ssh_key_auth(self):
        # Will exception on failure
        node = self.driver.create_node(name="Test",
                                       location=self.driver.list_locations()[
                                           0],
                                       size=self.driver.list_sizes()[0],
                                       image=self.driver.list_images()[6],
                                       auth=NodeAuthSSHKey('foo'))
        self.assertTrue(isinstance(node, Node))

    def test_list_sizes(self):
        sizes = self.driver.list_sizes()
        self.assertEqual(len(sizes), 9)
        for size in sizes:
            self.assertEqual(size.ram, int(size.name.split(" ")[1]))

    def test_list_images(self):
        images = self.driver.list_images()
        self.assertEqual(len(images), 30)

    def test_create_node_response(self):
        # should return a node object
        node = self.driver.create_node(name="node-name",
                                       location=self.driver.list_locations()[
                                           0],
                                       size=self.driver.list_sizes()[0],
                                       image=self.driver.list_images()[0],
                                       auth=NodeAuthPassword("foobar"))
        self.assertTrue(isinstance(node, Node))

    def test_destroy_volume(self):
        # Will exception on failure
        node = self.driver.list_nodes()[0]
        volume = StorageVolume(id=55648, name="test", size=1024,
                               driver=self.driver, extra={"LINODEID": node.id})
        self.driver.destroy_volume(volume)

    def test_ex_create_volume(self):
        # should return a StorageVolume object
        node = self.driver.list_nodes()[0]
        volume = self.driver.ex_create_volume(size=4096,
                                              name="Another test image",
                                              node=node,
                                              fs_type="ext4")
        self.assertTrue(isinstance(volume, StorageVolume))

    def test_ex_list_volumes(self):
        # should return list of StorageVolume objects
        node = self.driver.list_nodes()[0]
        volumes = self.driver.ex_list_volumes(node=node)

        self.assertTrue(isinstance(volumes, list))
        self.assertTrue(isinstance(volumes[0], StorageVolume))
        self.assertEqual(len(volumes), 2)
Esempio n. 9
0
class LinodeTestsV4(unittest.TestCase, TestCaseMixin):
    should_list_volumes = True

    def setUp(self):
        LinodeNodeDriver.connectionCls.conn_class = LinodeMockHttpV4
        LinodeMockHttpV4.type = None
        self.driver = LinodeNodeDriver("foo", api_version="4.0")

    def test_unknown_api_version(self):
        self.assertRaises(NotImplementedError,
                          LinodeNodeDriver,
                          "foo",
                          api_version="2.0")

    def test_correct_class_is_used(self):
        self.assertIsInstance(self.driver, LinodeNodeDriverV4)

    def test_list_sizes(self):
        sizes = self.driver.list_sizes()
        self.assertEqual(len(sizes), 28)
        size = sizes[0]
        self.assertEqual(size.id, "g6-nanode-1")
        for size in sizes:
            self.assertIsInstance(size.price, float)
            if size.extra["class"] == "gpu":
                self.assertGreater(size.extra["gpus"], 0)
            else:
                self.assertEqual(size.extra["gpus"], 0)

    def test_list_images(self):
        images = self.driver.list_images()
        self.assertEqual(len(images), 34)
        image = images[0]
        self.assertEqual(image.id, "linode/alpine3.10")
        self.assertEqual(image.extra["type"], "manual")
        self.assertEqual(image.extra["vendor"], "Alpine")
        for image in images:
            self.assertIsInstance(image.extra["size"], int)
            self.assertTrue(image.extra["is_public"])

    def test_list_locations(self):
        locations = self.driver.list_locations()
        self.assertEqual(len(locations), 10)
        location = locations[0]
        self.assertEqual(location.country, "IN")
        self.assertEqual(location.id, "ap-west")
        self.assertEqual(location.extra["status"], "ok")
        self.assertIsInstance(location.extra["capabilities"], list)

    def test_create_node_response(self):
        size = self.driver.list_sizes()[0]
        image = self.driver.list_images()[0]
        location = self.driver.list_locations()[0]
        node = self.driver.create_node(
            location=location,
            name="node-name",
            image=image,
            root_pass="******",
            size=size,
        )
        self.assertTrue(isinstance(node, Node))

    def test_list_nodes(self):
        nodes = self.driver.list_nodes()
        self.assertEqual(len(nodes), 2)
        node = nodes[0]
        node_2 = nodes[1]
        self.assertEqual(node.id, "22344420")
        self.assertEqual(node.public_ips, ["138.89.34.81"])
        self.assertEqual(node.private_ips, ["192.168.1.230"])
        self.assertEqual(node.extra["hypervisor"], "kvm")
        self.assertEqual(node_2.public_ips, ["156.12.197.243"])
        self.assertEqual(node_2.private_ips, [])

    def test_list_nodes_UNAUTHORIZED(self):
        LinodeMockHttpV4.type = "UNAUTHORIZED"
        with self.assertRaises(InvalidCredsError):
            self.driver.list_nodes()

    def test_list_nodes_fills_datetime(self):
        nodes = self.driver.list_nodes()
        self.assertEqual(nodes[0].created_at, datetime(2020, 10, 8, 18, 51,
                                                       29))

    def test_create_node(self):
        image = self.driver.list_images()[0]
        size = self.driver.list_sizes()[0]
        location = self.driver.list_locations()[0]

        node = self.driver.create_node(
            location,
            size,
            image=image,
            name="TestNode",
            root_pass="******",
            ex_backups_enabled=True,
            ex_tags=["testing123"],
            ex_private_ip=True,
        )

        self.assertEqual(node.name, "TestNode")
        self.assertEqual(len(node.private_ips), 1)
        self.assertTrue(node.extra["backups"]["enabled"])
        self.assertEqual(node.extra["tags"], ["testing123"])

    def test_create_node_no_root_pass(self):
        image = self.driver.list_images()[0]
        size = self.driver.list_sizes()[0]
        location = self.driver.list_locations()[0]

        with self.assertRaises(LinodeExceptionV4):
            self.driver.create_node(location,
                                    size,
                                    image=image,
                                    name="TestNode")

    def test_create_node_no_image(self):
        size = self.driver.list_sizes()[0]
        location = self.driver.list_locations()[0]
        LinodeMockHttpV4.type = "NO_IMAGE"
        node = self.driver.create_node(location,
                                       size,
                                       name="TestNode",
                                       ex_tags=["testing123"])

        self.assertIsNone(node.image)
        self.assertEqual(node.name, "TestNode")
        self.assertFalse(node.extra["backups"]["enabled"])
        self.assertEqual(node.extra["tags"], ["testing123"])
        self.assertEqual(len(node.private_ips), 0)

    def test_create_node_invalid_name(self):
        size = self.driver.list_sizes()[0]
        location = self.driver.list_locations()[0]

        with self.assertRaises(LinodeExceptionV4):
            self.driver.create_node(location, size, name="Test__Node")
        with self.assertRaises(LinodeExceptionV4):
            self.driver.create_node(location, size, name="Test Node")
        with self.assertRaises(LinodeExceptionV4):
            self.driver.create_node(location, size, name="Test--Node")
        with self.assertRaises(LinodeExceptionV4):
            self.driver.create_node(location, size, name="Test..Node")

    def test_reboot_node(self):
        node = Node("22344420", None, None, None, None, driver=self.driver)
        result = self.driver.reboot_node(node)
        self.assertTrue(result)

    def test_start_node(self):
        node = Node("22344420", None, None, None, None, driver=self.driver)
        result = self.driver.start_node(node)
        self.assertTrue(result)

    def test_start_node_error(self):
        LinodeMockHttpV4.type = "ALREADY_BOOTED"
        node = Node("22344420",
                    None,
                    NodeState.RUNNING,
                    None,
                    None,
                    driver=self.driver)
        with self.assertRaises(LibcloudError):
            self.driver.start_node(node)

    def test_stop_node(self):
        node = Node("22344420", None, None, None, None, driver=self.driver)
        result = self.driver.stop_node(node)
        self.assertTrue(result)

    def test_destroy_node(self):
        node = Node("22344420", None, None, None, None, driver=self.driver)
        result = self.driver.stop_node(node)
        self.assertTrue(result)

    def test_ex_rename_node(self):
        node = Node("22344420", "name1", None, None, None, driver=self.driver)
        renamed_node = self.driver.ex_rename_node(node, "new_name")
        self.assertEqual(renamed_node.name, "new_name")

    def test_ex_resize_node(self):
        node = Node("22344420",
                    None,
                    None,
                    None,
                    None,
                    driver=self.driver,
                    size="g6-nanode-1")
        size = self.driver.list_sizes()[0]
        result = self.driver.ex_resize_node(node, size=size)
        self.assertTrue(result)

    def test_ex_get_node(self):
        node_id = "22344420"
        node = self.driver.ex_get_node(node_id)
        self.assertEqual(node.name, "test_2")
        self.assertEqual(node.image, "linode/centos8")
        self.assertEqual(node.extra["tags"], ["testing"])
        self.assertEqual(node.public_ips, ["212.71.239.24"])
        self.assertEqual(node.extra["hypervisor"], "kvm")

    def test_ex_list_disks(self):
        node = Node("22344420", None, None, None, None, driver=self.driver)
        disks = self.driver.ex_list_disks(node)
        disk = disks[0]
        self.assertEqual(disk.name, "CentOS 7 Disk")
        self.assertEqual(disk.size, 25088)
        for disk in disks:
            self.assertIsInstance(disk, LinodeDisk)

    def test_ex_create_disk(self):
        node = Node("22344420", None, None, None, None, driver=self.driver)
        image = self.driver.list_images()[0]
        disk = self.driver.ex_create_disk(5000,
                                          "TestDisk",
                                          node,
                                          "ext4",
                                          image=image,
                                          ex_root_pass="******")
        self.assertIsInstance(disk, LinodeDisk)
        self.assertEqual(disk.size, 5000)
        self.assertEqual(disk.filesystem, "ext4")
        self.assertEqual(disk.name, "TestingDisk")

    def test_ex_create_disk_no_image(self):
        node = Node("22344420", None, None, None, None, driver=self.driver)
        disk = self.driver.ex_create_disk(5000, "TestDisk", node, "ext4")
        self.assertIsInstance(disk, LinodeDisk)
        self.assertEqual(disk.size, 5000)
        self.assertEqual(disk.filesystem, "ext4")
        self.assertEqual(disk.name, "TestingDisk")

    def test_ex_create_disk_exception_no_root_pass(self):
        node = Node("22344420", None, None, None, None, driver=self.driver)
        image = self.driver.list_images()[0]
        with self.assertRaises(LinodeExceptionV4):
            self.driver.ex_create_disk(5000,
                                       "TestDisk",
                                       node,
                                       "ext4",
                                       image=image)

    def test_ex_create_disk_exception_invalid_fs(self):
        node = Node("22344420", None, None, None, None, driver=self.driver)
        image = self.driver.list_images()[0]
        with self.assertRaises(LinodeExceptionV4):
            self.driver.ex_create_disk(
                5000,
                "TestDisk",
                node,
                "random_fs",
                image=image,
                ex_root_pass="******",
            )

    def test_ex_destroy_disk(self):
        node = Node("22344420",
                    None,
                    NodeState.STOPPED,
                    None,
                    None,
                    driver=self.driver)
        disk = LinodeDisk("23517413", None, None, None, self.driver, None)
        result = self.driver.ex_destroy_disk(node, disk)
        self.assertTrue(result)

    def test_ex_destroy_disk_exception(self):
        node = Node("22344420",
                    None,
                    NodeState.RUNNING,
                    None,
                    None,
                    driver=self.driver)
        disk = LinodeDisk("23517413", None, None, None, self.driver, None)
        with self.assertRaises(LinodeExceptionV4):
            self.driver.ex_destroy_disk(node, disk)

    def test_list_volumes(self):
        volumes = self.driver.list_volumes()
        self.assertEqual(len(volumes), 2)
        volume = volumes[0]
        volume_2 = volumes[1]
        self.assertEqual(volume.id, "12345")
        self.assertEqual(volume.name, "Testvolume1")
        self.assertEqual(volume.size, 100)
        self.assertEqual(volume.extra["linode_id"], 456353688)
        self.assertIsNone(volume_2.extra["linode_id"])

    def test_create_volume(self):
        node = Node("22344420",
                    None,
                    NodeState.RUNNING,
                    None,
                    None,
                    driver=self.driver)
        volume = self.driver.create_volume("Volume1",
                                           50,
                                           node=node,
                                           tags=["test123", "testing"])

        self.assertEqual(volume.extra["linode_id"], 22344420)
        self.assertEqual(volume.size, 50)
        self.assertEqual(volume.name, "Volume1")
        self.assertEqual(volume.extra["tags"], ["test123", "testing"])

    def test_create_volume_unattached(self):
        location = self.driver.list_locations()[0]
        LinodeMockHttpV4.type = "UNATTACHED"
        volume = self.driver.create_volume("Volume1",
                                           50,
                                           location=location,
                                           tags=["test123", "testing"])

        self.assertEqual(volume.size, 50)
        self.assertEqual(volume.name, "Volume1")
        self.assertEqual(volume.extra["tags"], ["test123", "testing"])

    def test_create_volume_invalid_name(self):
        location = self.driver.list_locations()[0]
        with self.assertRaises(LinodeExceptionV4):
            self.driver.create_volume("Volume__1", 50, location=location)
        with self.assertRaises(LinodeExceptionV4):
            self.driver.create_volume("Volume 1", 50, location=location)
        with self.assertRaises(LinodeExceptionV4):
            self.driver.create_volume("Volume--1", 50, location=location)

    def test_attach_volume_already_attached(self):
        volume = self.driver.list_volumes()[0]
        node = self.driver.list_nodes()[0]
        with self.assertRaises(LinodeExceptionV4):
            self.driver.attach_volume(node, volume)

    def test_attach_volume(self):
        volume = self.driver.list_volumes()[1]
        node = self.driver.list_nodes()[0]
        attached_volume = self.driver.attach_volume(node, volume)
        self.assertIsInstance(attached_volume, StorageVolume)
        self.assertEqual(str(attached_volume.extra["linode_id"]), node.id)

    def test_detach_volume(self):
        volume = self.driver.list_volumes()[0]
        result = self.driver.detach_volume(volume)
        self.assertTrue(result)

    def test_detach_volume_already_detached(self):
        volume = self.driver.list_volumes()[1]
        with self.assertRaises(LinodeExceptionV4):
            self.driver.detach_volume(volume)

    def test_destroy_volume(self):
        volume = self.driver.list_volumes()[1]
        result = self.driver.destroy_volume(volume)
        self.assertTrue(result)

    def test_destroy_volume_attached(self):
        volume = self.driver.list_volumes()[0]
        with self.assertRaises(LinodeExceptionV4):
            self.driver.destroy_volume(volume)

    def test_ex_resize_volume(self):
        volume = self.driver.list_volumes()[0]
        size = 200
        result = self.driver.ex_resize_volume(volume, size)
        self.assertTrue(result)

    def test_ex_resize_volume_resize_down(self):
        volume = self.driver.list_volumes()[0]
        size = 50
        with self.assertRaises(LinodeExceptionV4):
            self.driver.ex_resize_volume(volume, size)

    def test_ex_clone_volume(self):
        volume = self.driver.list_volumes()[0]
        cloned_volume = self.driver.ex_clone_volume(volume, "TestingClone")
        self.assertIsInstance(cloned_volume, StorageVolume)
        self.assertEqual(volume.size, cloned_volume.size)
        self.assertEqual(cloned_volume.name, "TestingClone")

    def test_ex_get_volume(self):
        volume_id = "123456"
        volume = self.driver.ex_get_volume(volume_id)

        self.assertEqual(volume.name, "Testvolume1")
        self.assertEqual(volume.size, 10)
        self.assertEqual(volume.extra["linode_id"], 456353688)

    def test_create_image(self):
        node = Node("22344420", None, None, None, None, driver=self.driver)
        disk = self.driver.ex_list_disks(node)[0]
        image = self.driver.create_image(disk,
                                         name="Test",
                                         description="Test Image")
        self.assertIsInstance(image, NodeImage)
        self.assertEqual(image.name, "Test")
        self.assertEqual(image.extra["description"], "Test Image")

    def test_delete_image(self):
        node = Node("22344420", None, None, None, None, driver=self.driver)
        disk = self.driver.ex_list_disks(node)[0]
        image = self.driver.create_image(disk,
                                         name="Test",
                                         description="Test Image")
        result = self.driver.delete_image(image)
        self.assertTrue(result)

    def test_ex_list_addresses(self):
        ips = self.driver.ex_list_addresses()
        self.assertEqual(len(ips), 3)
        ip = ips[0]
        self.assertEqual(ip.inet, "192.168.15.21")
        self.assertEqual(ip.version, "ipv4")
        self.assertFalse(ip.public)
        for ip in ips:
            self.assertIsInstance(ip, LinodeIPAddress)

    def test_ex_list_node_addresses(self):
        node = Node("22344420", None, None, None, None, driver=self.driver)
        ips = self.driver.ex_list_node_addresses(node)
        ip = ips[0]
        self.assertEqual(ip.inet, "176.58.100.100")
        self.assertEqual(ip.version, "ipv4")
        self.assertTrue(ip.public)
        for ip in ips:
            self.assertIsInstance(ip, LinodeIPAddress)
            self.assertEqual(node.id, str(ip.extra["node_id"]))

    def test_ex_allocate_private_address(self):
        node = Node("22344420", None, None, None, None, driver=self.driver)
        ip = self.driver.ex_allocate_private_address(node)
        self.assertIsInstance(ip, LinodeIPAddress)
        self.assertEqual(ip.version, "ipv4")
        self.assertEqual(ip.inet, "192.168.100.10")

    def test_ex_share_address(self):
        node = Node("22344420", None, None, None, None, driver=self.driver)
        ips = self.driver.ex_list_addresses()
        result = self.driver.ex_share_address(node, ips)
        self.assertTrue(result)

    def test__paginated_request_two_pages(self):
        LinodeMockHttpV4.type = "PAGINATED"
        images = self.driver.list_images()
        self.assertEqual(len(images), 34)
Esempio n. 10
0
class LinodeTestsV4(unittest.TestCase, TestCaseMixin):
    should_list_volumes = True

    def setUp(self):
        LinodeNodeDriver.connectionCls.conn_class = LinodeMockHttpV4
        LinodeMockHttpV4.type = None
        self.driver = LinodeNodeDriver('foo', api_version='4.0')

    def test_unknown_api_version(self):
        self.assertRaises(NotImplementedError,
                          LinodeNodeDriver,
                          'foo',
                          api_version='2.0')

    def test_correct_class_is_used(self):
        self.assertIsInstance(self.driver, LinodeNodeDriverV4)

    def test_list_sizes(self):
        sizes = self.driver.list_sizes()
        self.assertEqual(len(sizes), 28)
        size = sizes[0]
        self.assertEqual(size.id, 'g6-nanode-1')
        for size in sizes:
            self.assertIsInstance(size.price, float)
            if size.extra['class'] == 'gpu':
                self.assertGreater(size.extra['gpus'], 0)
            else:
                self.assertEqual(size.extra['gpus'], 0)

    def test_list_images(self):
        images = self.driver.list_images()
        self.assertEqual(len(images), 34)
        image = images[0]
        self.assertEqual(image.id, 'linode/alpine3.10')
        self.assertEqual(image.extra['type'], 'manual')
        self.assertEqual(image.extra['vendor'], 'Alpine')
        for image in images:
            self.assertIsInstance(image.extra['size'], int)
            self.assertTrue(image.extra['is_public'])

    def test_list_locations(self):
        locations = self.driver.list_locations()
        self.assertEqual(len(locations), 10)
        location = locations[0]
        self.assertEqual(location.country, 'IN')
        self.assertEqual(location.id, 'ap-west')
        self.assertEqual(location.extra['status'], 'ok')
        self.assertIsInstance(location.extra['capabilities'], list)

    def test_create_node_response(self):
        size = self.driver.list_sizes()[0]
        image = self.driver.list_images()[0]
        location = self.driver.list_locations()[0]
        node = self.driver.create_node(location=location,
                                       name='node-name',
                                       image=image,
                                       root_pass='******',
                                       size=size)
        self.assertTrue(isinstance(node, Node))

    def test_list_nodes(self):
        nodes = self.driver.list_nodes()
        self.assertEqual(len(nodes), 2)
        node = nodes[0]
        node_2 = nodes[1]
        self.assertEqual(node.id, '22344420')
        self.assertEqual(node.public_ips, ['138.89.34.81'])
        self.assertEqual(node.private_ips, ['192.168.1.230'])
        self.assertEqual(node.extra['hypervisor'], 'kvm')
        self.assertEqual(node_2.public_ips, ['156.12.197.243'])
        self.assertEqual(node_2.private_ips, [])

    def test_list_nodes_UNAUTHORIZED(self):
        LinodeMockHttpV4.type = 'UNAUTHORIZED'
        with self.assertRaises(InvalidCredsError):
            self.driver.list_nodes()

    def test_list_nodes_fills_datetime(self):
        nodes = self.driver.list_nodes()
        self.assertEqual(nodes[0].created_at, datetime(2020, 10, 8, 18, 51,
                                                       29))

    def test_create_node(self):
        image = self.driver.list_images()[0]
        size = self.driver.list_sizes()[0]
        location = self.driver.list_locations()[0]

        node = self.driver.create_node(location,
                                       size,
                                       image=image,
                                       name='TestNode',
                                       root_pass='******',
                                       ex_backups_enabled=True,
                                       ex_tags=['testing123'],
                                       ex_private_ip=True)

        self.assertEqual(node.name, 'TestNode')
        self.assertEqual(len(node.private_ips), 1)
        self.assertTrue(node.extra['backups']['enabled'])
        self.assertEqual(node.extra['tags'], ['testing123'])

    def test_create_node_no_root_pass(self):
        image = self.driver.list_images()[0]
        size = self.driver.list_sizes()[0]
        location = self.driver.list_locations()[0]

        with self.assertRaises(LinodeExceptionV4):
            self.driver.create_node(location,
                                    size,
                                    image=image,
                                    name='TestNode')

    def test_create_node_no_image(self):
        size = self.driver.list_sizes()[0]
        location = self.driver.list_locations()[0]
        LinodeMockHttpV4.type = 'NO_IMAGE'
        node = self.driver.create_node(location,
                                       size,
                                       name='TestNode',
                                       ex_tags=['testing123'])

        self.assertIsNone(node.image)
        self.assertEqual(node.name, 'TestNode')
        self.assertFalse(node.extra['backups']['enabled'])
        self.assertEqual(node.extra['tags'], ['testing123'])
        self.assertEqual(len(node.private_ips), 0)

    def test_create_node_invalid_name(self):
        size = self.driver.list_sizes()[0]
        location = self.driver.list_locations()[0]

        with self.assertRaises(LinodeExceptionV4):
            self.driver.create_node(location, size, name='Test__Node')
        with self.assertRaises(LinodeExceptionV4):
            self.driver.create_node(location, size, name='Test Node')
        with self.assertRaises(LinodeExceptionV4):
            self.driver.create_node(location, size, name='Test--Node')
        with self.assertRaises(LinodeExceptionV4):
            self.driver.create_node(location, size, name='Test..Node')

    def test_reboot_node(self):
        node = Node('22344420', None, None, None, None, driver=self.driver)
        result = self.driver.reboot_node(node)
        self.assertTrue(result)

    def test_start_node(self):
        node = Node('22344420', None, None, None, None, driver=self.driver)
        result = self.driver.start_node(node)
        self.assertTrue(result)

    def test_start_node_error(self):
        LinodeMockHttpV4.type = 'ALREADY_BOOTED'
        node = Node('22344420',
                    None,
                    NodeState.RUNNING,
                    None,
                    None,
                    driver=self.driver)
        with self.assertRaises(LibcloudError):
            self.driver.start_node(node)

    def test_stop_node(self):
        node = Node('22344420', None, None, None, None, driver=self.driver)
        result = self.driver.stop_node(node)
        self.assertTrue(result)

    def test_destroy_node(self):
        node = Node('22344420', None, None, None, None, driver=self.driver)
        result = self.driver.stop_node(node)
        self.assertTrue(result)

    def test_ex_rename_node(self):
        node = Node('22344420', 'name1', None, None, None, driver=self.driver)
        renamed_node = self.driver.ex_rename_node(node, 'new_name')
        self.assertEqual(renamed_node.name, 'new_name')

    def test_ex_resize_node(self):
        node = Node('22344420',
                    None,
                    None,
                    None,
                    None,
                    driver=self.driver,
                    size='g6-nanode-1')
        size = self.driver.list_sizes()[0]
        result = self.driver.ex_resize_node(node, size=size)
        self.assertTrue(result)

    def test_ex_get_node(self):
        node_id = '22344420'
        node = self.driver.ex_get_node(node_id)
        self.assertEqual(node.name, 'test_2')
        self.assertEqual(node.image, 'linode/centos8')
        self.assertEqual(node.extra['tags'], ['testing'])
        self.assertEqual(node.public_ips, ['212.71.239.24'])
        self.assertEqual(node.extra['hypervisor'], 'kvm')

    def test_ex_list_disks(self):
        node = Node('22344420', None, None, None, None, driver=self.driver)
        disks = self.driver.ex_list_disks(node)
        disk = disks[0]
        self.assertEqual(disk.name, 'CentOS 7 Disk')
        self.assertEqual(disk.size, 25088)
        for disk in disks:
            self.assertIsInstance(disk, LinodeDisk)

    def test_ex_create_disk(self):
        node = Node('22344420', None, None, None, None, driver=self.driver)
        image = self.driver.list_images()[0]
        disk = self.driver.ex_create_disk(5000,
                                          'TestDisk',
                                          node,
                                          'ext4',
                                          image=image,
                                          ex_root_pass='******')
        self.assertIsInstance(disk, LinodeDisk)
        self.assertEqual(disk.size, 5000)
        self.assertEqual(disk.filesystem, 'ext4')
        self.assertEqual(disk.name, 'TestingDisk')

    def test_ex_create_disk_no_image(self):
        node = Node('22344420', None, None, None, None, driver=self.driver)
        disk = self.driver.ex_create_disk(5000, 'TestDisk', node, 'ext4')
        self.assertIsInstance(disk, LinodeDisk)
        self.assertEqual(disk.size, 5000)
        self.assertEqual(disk.filesystem, 'ext4')
        self.assertEqual(disk.name, 'TestingDisk')

    def test_ex_create_disk_exception_no_root_pass(self):
        node = Node('22344420', None, None, None, None, driver=self.driver)
        image = self.driver.list_images()[0]
        with self.assertRaises(LinodeExceptionV4):
            self.driver.ex_create_disk(5000,
                                       'TestDisk',
                                       node,
                                       'ext4',
                                       image=image)

    def test_ex_create_disk_exception_invalid_fs(self):
        node = Node('22344420', None, None, None, None, driver=self.driver)
        image = self.driver.list_images()[0]
        with self.assertRaises(LinodeExceptionV4):
            self.driver.ex_create_disk(5000,
                                       'TestDisk',
                                       node,
                                       'random_fs',
                                       image=image,
                                       ex_root_pass='******')

    def test_ex_destroy_disk(self):
        node = Node('22344420',
                    None,
                    NodeState.STOPPED,
                    None,
                    None,
                    driver=self.driver)
        disk = LinodeDisk('23517413', None, None, None, self.driver, None)
        result = self.driver.ex_destroy_disk(node, disk)
        self.assertTrue(result)

    def test_ex_destroy_disk_exception(self):
        node = Node('22344420',
                    None,
                    NodeState.RUNNING,
                    None,
                    None,
                    driver=self.driver)
        disk = LinodeDisk('23517413', None, None, None, self.driver, None)
        with self.assertRaises(LinodeExceptionV4):
            self.driver.ex_destroy_disk(node, disk)

    def test_list_volumes(self):
        volumes = self.driver.list_volumes()
        self.assertEqual(len(volumes), 2)
        volume = volumes[0]
        volume_2 = volumes[1]
        self.assertEqual(volume.id, '12345')
        self.assertEqual(volume.name, 'Testvolume1')
        self.assertEqual(volume.size, 100)
        self.assertEqual(volume.extra['linode_id'], 456353688)
        self.assertIsNone(volume_2.extra['linode_id'])

    def test_create_volume(self):
        node = Node('22344420',
                    None,
                    NodeState.RUNNING,
                    None,
                    None,
                    driver=self.driver)
        volume = self.driver.create_volume('Volume1',
                                           50,
                                           node=node,
                                           tags=['test123', 'testing'])

        self.assertEqual(volume.extra['linode_id'], 22344420)
        self.assertEqual(volume.size, 50)
        self.assertEqual(volume.name, 'Volume1')
        self.assertEqual(volume.extra['tags'], ['test123', 'testing'])

    def test_create_volume_unattached(self):
        location = self.driver.list_locations()[0]
        LinodeMockHttpV4.type = 'UNATTACHED'
        volume = self.driver.create_volume('Volume1',
                                           50,
                                           location=location,
                                           tags=['test123', 'testing'])

        self.assertEqual(volume.size, 50)
        self.assertEqual(volume.name, 'Volume1')
        self.assertEqual(volume.extra['tags'], ['test123', 'testing'])

    def test_create_volume_invalid_name(self):
        location = self.driver.list_locations()[0]
        with self.assertRaises(LinodeExceptionV4):
            self.driver.create_volume('Volume__1', 50, location=location)
        with self.assertRaises(LinodeExceptionV4):
            self.driver.create_volume('Volume 1', 50, location=location)
        with self.assertRaises(LinodeExceptionV4):
            self.driver.create_volume('Volume--1', 50, location=location)

    def test_attach_volume_already_attached(self):
        volume = self.driver.list_volumes()[0]
        node = self.driver.list_nodes()[0]
        with self.assertRaises(LinodeExceptionV4):
            self.driver.attach_volume(node, volume)

    def test_attach_volume(self):
        volume = self.driver.list_volumes()[1]
        node = self.driver.list_nodes()[0]
        attached_volume = self.driver.attach_volume(node, volume)
        self.assertIsInstance(attached_volume, StorageVolume)
        self.assertEqual(str(attached_volume.extra['linode_id']), node.id)

    def test_detach_volume(self):
        volume = self.driver.list_volumes()[0]
        result = self.driver.detach_volume(volume)
        self.assertTrue(result)

    def test_detach_volume_already_detached(self):
        volume = self.driver.list_volumes()[1]
        with self.assertRaises(LinodeExceptionV4):
            self.driver.detach_volume(volume)

    def test_destroy_volume(self):
        volume = self.driver.list_volumes()[1]
        result = self.driver.destroy_volume(volume)
        self.assertTrue(result)

    def test_destroy_volume_attached(self):
        volume = self.driver.list_volumes()[0]
        with self.assertRaises(LinodeExceptionV4):
            self.driver.destroy_volume(volume)

    def test_ex_resize_volume(self):
        volume = self.driver.list_volumes()[0]
        size = 200
        result = self.driver.ex_resize_volume(volume, size)
        self.assertTrue(result)

    def test_ex_resize_volume_resize_down(self):
        volume = self.driver.list_volumes()[0]
        size = 50
        with self.assertRaises(LinodeExceptionV4):
            self.driver.ex_resize_volume(volume, size)

    def test_ex_clone_volume(self):
        volume = self.driver.list_volumes()[0]
        cloned_volume = self.driver.ex_clone_volume(volume, 'TestingClone')
        self.assertIsInstance(cloned_volume, StorageVolume)
        self.assertEqual(volume.size, cloned_volume.size)
        self.assertEqual(cloned_volume.name, 'TestingClone')

    def test_ex_get_volume(self):
        volume_id = '123456'
        volume = self.driver.ex_get_volume(volume_id)

        self.assertEqual(volume.name, 'Testvolume1')
        self.assertEqual(volume.size, 10)
        self.assertEqual(volume.extra['linode_id'], 456353688)

    def test_create_image(self):
        node = Node('22344420', None, None, None, None, driver=self.driver)
        disk = self.driver.ex_list_disks(node)[0]
        image = self.driver.create_image(disk,
                                         name='Test',
                                         description='Test Image')
        self.assertIsInstance(image, NodeImage)
        self.assertEqual(image.name, 'Test')
        self.assertEqual(image.extra['description'], 'Test Image')

    def test_delete_image(self):
        node = Node('22344420', None, None, None, None, driver=self.driver)
        disk = self.driver.ex_list_disks(node)[0]
        image = self.driver.create_image(disk,
                                         name='Test',
                                         description='Test Image')
        result = self.driver.delete_image(image)
        self.assertTrue(result)

    def test_ex_list_addresses(self):
        ips = self.driver.ex_list_addresses()
        self.assertEqual(len(ips), 3)
        ip = ips[0]
        self.assertEqual(ip.inet, '192.168.15.21')
        self.assertEqual(ip.version, 'ipv4')
        self.assertFalse(ip.public)
        for ip in ips:
            self.assertIsInstance(ip, LinodeIPAddress)

    def test_ex_list_node_addresses(self):
        node = Node('22344420', None, None, None, None, driver=self.driver)
        ips = self.driver.ex_list_node_addresses(node)
        ip = ips[0]
        self.assertEqual(ip.inet, '176.58.100.100')
        self.assertEqual(ip.version, 'ipv4')
        self.assertTrue(ip.public)
        for ip in ips:
            self.assertIsInstance(ip, LinodeIPAddress)
            self.assertEqual(node.id, str(ip.extra['node_id']))

    def test_ex_allocate_private_address(self):
        node = Node('22344420', None, None, None, None, driver=self.driver)
        ip = self.driver.ex_allocate_private_address(node)
        self.assertIsInstance(ip, LinodeIPAddress)
        self.assertEqual(ip.version, 'ipv4')
        self.assertEqual(ip.inet, '192.168.100.10')

    def test_ex_share_address(self):
        node = Node('22344420', None, None, None, None, driver=self.driver)
        ips = self.driver.ex_list_addresses()
        result = self.driver.ex_share_address(node, ips)
        self.assertTrue(result)

    def test__paginated_request_two_pages(self):
        LinodeMockHttpV4.type = 'PAGINATED'
        images = self.driver.list_images()
        self.assertEqual(len(images), 34)
def createNode(provider, driverUno, driverDos, driverTres, driverCuatro, name,
               size, image, location, ex_network):
    pass
    nodesProvider = ''
    if provider == "Digital Ocean":
        pass
        accessKey = driverUno
        sshKey = driverDos
        driverTres = driverTres
        driverCuatro = driverCuatro
        driver = DigitalOceanNodeDriver(accessKey)

        sshKeyID = list()

        ssh = int(sshKey)
        keyPairs = driver.list_key_pairs()
        sizesNode = driver.list_sizes()
        imagesNode = driver.list_images()
        locationsNode = driver.list_locations()

        for keyPair in keyPairs:
            if keyPair.extra['id'] == ssh:
                pass
                sshKeyID.append(keyPair.extra['id'])

        for sizeNode in sizesNode:
            if sizeNode.name == size:
                pass
                sizeName = sizeNode

        for imageNode in imagesNode:
            if imageNode.id == image:
                pass
                imageId = imageNode

        for locationNode in locationsNode:
            if locationNode.id == location:
                pass
                locationId = locationNode

        idNodes = driver.create_node(name, sizeName, imageId, locationId, None,
                                     sshKeyID, None)
        idNodes.extra = json.dumps(idNodes.extra)
        attr = {
            'id': idNodes.id,
            'name': idNodes.name,
            'state': idNodes.state,
            'public_ips': idNodes.public_ips,
            'private_ips': idNodes.private_ips,
            'provider': 'DigitalOcean',
            'extra': idNodes.extra
        }

        nodesProvider = json.dumps(attr)
    if provider == "EC2":
        pass
        accessId = driverUno
        secretKey = driverDos
        region = driverTres
        driverCuatro = driverCuatro
        reg = region[0:len(region) - 1]
        #	driver = BaseEC2NodeDriver(accessId,secretKey,'eu-west-1')

        cls = get_driver(Provider.EC2)
        driver = cls(accessId, secretKey, region=reg)

        sizesNode = driver.list_sizes()
        imagesNode = driver.list_images()

        sizeName = ''
        imageId = ''

        for sizeNode in sizesNode:
            if sizeNode.id == size:
                pass
                sizeName = sizeNode

        for imageNode in imagesNode:
            if imageNode.name == image:
                pass
                imageId = imageNode

        nodeCreate = driver.create_node(name=name,
                                        image=imageId,
                                        size=sizeName)

        types = 'running'

        node = checkStatus.checkStatus(driver, nodeCreate.id, types)

        if node != 0:
            pass
            elastic = elasticIP.setElasticIP(driver, node.id)
            if elastic != 0:
                pass
                v4 = []
                ips = {
                    'ipaddress': elastic.ip,
                    'gateway': 'NULL',
                    'mask': 'NULL',
                    'private_ip': node.private_ips[0]
                }

                v4.append(ips)

                network = {'v4': v4}

                extra = {
                    'launch_time': node.extra['launch_time'],
                    'instance_type': node.extra['instance_type'],
                    'network': network
                }

                attr = {
                    'id': node.id,
                    'region': reg,
                    'name': node.name,
                    'state': node.state,
                    'public_ip': elastic.ip,
                    'provider': 'Amazon',
                    'extra': extra
                }

                print json.dumps(attr)
            else:
                v4 = []
                ips = {
                    'ipaddress': node.public_ips[0],
                    'gateway': 'NULL',
                    'mask': 'NULL',
                    'private_ip': node.private_ips[0]
                }

                v4.append(ips)

                network = {'v4': v4}

                extra = {
                    'launch_time': node.extra['launch_time'],
                    'instance_type': node.extra['instance_type'],
                    'network': network
                }

                attr = {
                    'id': node.id,
                    'region': region,
                    'name': node.name,
                    'state': node.state,
                    'public_ip': node.public_ips[0],
                    'provider': 'Amazon',
                    'extra': extra,
                    'elastic': '0'
                }

            nodesProvider = json.dumps(attr)

    if provider == "Azure":
        pass
        tenantId = driverUno
        subscriptionId = driverDos
        applicationId = driverTres
        keyPaswd = driverCuatro
        driver = AzureNodeDriver(tenantId, subscriptionId, applicationId,
                                 keyPaswd)

        locations = driver.list_locations()
        networks = driver.ex_list_networks()

        for network in networks:
            pass
            if network.name == ex_network:
                pass
                ex_network = network

        for loc in locations:
            pass
            if loc.id == location:
                pass
                locationID = loc

        sizesNode = driver.list_sizes(location=locationID)
        imagesNode = driver.list_images(location=locationID,
                                        ex_publisher=None,
                                        ex_offer=None,
                                        ex_sku=None,
                                        ex_version=None)
        for sizeNode in sizesNode:
            if sizeNode.name == size:
                pass
                sizeName = sizeNode

        for imageNode in imagesNode:
            if imageNode.id == image:
                pass
                imageId = imageNode

        nodeCreate = driver.create_node(name,
                                        sizeName,
                                        imageId,
                                        None,
                                        None,
                                        None,
                                        location=locationID,
                                        ex_network=ex_network,
                                        ex_subnet=None,
                                        ex_nic=None)

        types = 'running'

        node = checkStatus.checkStatus(driver, nodeCreate.id, types)

        if node != 0:
            pass
            v4 = []
            ips = {
                'ipaddress': node.public_ips,
                'gateway': 'NULL',
                'mask': 'NULL',
                'private_ip': node.private_ips
            }

            v4.append(ips)

            network = {'v4': v4}

            extra = {
                'instance_type':
                node.extra['properties']['hardwareProfile']['vmSize'],
                'network':
                network
            }

            attr = {
                'id': node.extra['properties']['vmId'],
                'region': node.extra['location'],
                'name': node.name,
                'state': node.state,
                'public_ip': node.public_ips,
                'provider': 'Azure Virtual machines',
                'extra': extra
            }

            nodesProvider = json.dumps(attr)

    if provider == "Linode":
        pass
        apiKey = driverUno
        driverDos = driverDos
        driverTres = driverTres
        driverCuatro = driverCuatro
        nodeId = nodeId
        driver = LinodeNodeDriver(apiKey)

        node = driver.create_node(name, image, size, auth, location)
        nodesProvider = json.dumps(node)

    return nodesProvider
def getNode(provider,driverUno,driverDos,driverTres,driverCuatro,nodeId):
	pass
	nodesProvider = ''
	if provider == "Digital Ocean":
		pass
		accessKey = driverUno
		driverDos = driverDos
		driverTres = driverTres
		driverCuatro = driverCuatro
		nodeId = nodeId
		driver = DigitalOceanNodeDriver(accessKey)
		
		idsNodes = driver.list_nodes()
		
		for idNodes in idsNodes:
		#print idsNodes
			if idNodes.id == nodeId:
				pass
				idNod = idNodes
	#			print idNod
				idNod.extra = json.dumps(idNod.extra);
				attr = {'id' : idNod.id, 'name' : idNod.name, 
				'state' : idNod.state, 'public_ips' : idNod.public_ips, 
				'private_ips' : idNod.private_ips, 'provider' : 'DigitalOcean',
				'extra' : idNod.extra}

				nodesProvider = json.dumps(attr)
	if provider == "EC2":
		pass
		accessId = driverUno
		secretKey = driverDos
		region = driverTres
		driverCuatro = driverCuatro
		nodeId = nodeId
	#	driver = BaseEC2NodeDriver(accessId,secretKey,'eu-west-1')

		cls = get_driver(Provider.EC2)
		driver = cls(accessId, secretKey, region=region)

		idsNodes = driver.list_nodes()

		for idNodes in idsNodes:
			#print idsNodes
			if idNodes.id == nodeId:
				pass
				node = idNodes

				if node.state == 'terminated':
					v4 = []
					ips = {'ipaddress' : node.public_ips, 'gateway' : 'NULL', 'mask' : 'NULL', 'private_ip' : node.private_ips}

					v4.append(ips)

					network = {'v4' : v4}


					extra = {'launch_time' : node.extra['launch_time'], 'instance_type' : node.extra['instance_type'],
					'network' : network}

					attr = {'id' : node.id, 'region' : region, 'name': node.name, 'state' : node.state, 
					'public_ip' : node.public_ips, 'provider' : 'Amazon', 'extra' : extra}
				if node.state != 'terminated':
					v4 = []
					ips = {'ipaddress' : node.public_ips[0], 'gateway' : 'NULL', 'mask' : 'NULL', 'private_ip' : node.private_ips[0]}

					v4.append(ips)

					network = {'v4' : v4}


					extra = {'launch_time' : node.extra['launch_time'], 'instance_type' : node.extra['instance_type'],
					'network' : network}

					attr = {'id' : node.id, 'region' : region, 'name': node.name, 'state' : node.state, 
					'public_ip' : node.public_ips[0], 'provider' : 'Amazon', 'extra' : extra} 

			nodesProvider = json.dumps(attr)
	if provider == "Azure":
		pass
		tenantId = driverUno
		subscriptionId = driverDos
		applicationId = driverTres
		keyPaswd = driverCuatro
		nodeId = nodeId
		driver = AzureNodeDriver(tenantId,subscriptionId,applicationId,keyPaswd)

		idsNodes = driver.list_nodes()

		for idNodes in idsNodes:
			#print idsNodes
			if idNodes.id == nodeId:
				pass
				node = idNodes
	#			print idNod
				v4 = []
				ips = {'ipaddress' : node.public_ips, 'gateway' : 'NULL', 'mask' : 'NULL', 'private_ip' : node.private_ips}

				v4.append(ips)

				network = {'v4' : v4}


				extra = {'instance_type' : node.extra['properties']['hardwareProfile']['vmSize'],
				'network' : network}

				attr = {'id' : node.extra['properties']['vmId'], 'region' : node.extra['location'], 'name': node.name, 'state' : node.state, 
				'public_ip' : node.public_ips, 'provider' : 'Azure Virtual machines', 'extra' : extra} 

				nodesProvider = json.dumps(node)

	if provider == "Linode":
		pass
		apiKey = driverUno
		driverDos = driverDos
		driverTres = driverTres
		driverCuatro = driverCuatro
		nodeId = nodeId
		driver = LinodeNodeDriver(apiKey)

		for idNodes in idsNodes:
			#print idsNodes
			if idNodes.id == nodeId:
				pass
				idNod = idNodes
	#			print idNod

				nodesProvider = json.dumps(idNod)

	return nodesProvider
Esempio n. 13
0
 def setUp(self):
     LinodeNodeDriver.connectionCls.conn_class = LinodeMockHttp
     LinodeMockHttp.use_param = 'api_action'
     self.driver = LinodeNodeDriver('foo', api_version='3.0')
Esempio n. 14
0
 def setUp(self):
     LinodeNodeDriver.connectionCls.conn_classes = (None, LinodeMockHttp)
     LinodeMockHttp.use_param = 'api_action'
     self.driver = LinodeNodeDriver('foo')
def getAllNodes(provider, driverUno, driverDos, driverTres, driverCuatro):
    pass
    nodesProvider = ''
    node = []
    if provider == "Digital Ocean":
        pass
        accessKey = driverUno
        driverDos = driverDos
        driverTres = driverTres
        driverCuatro = driverCuatro
        driver = DigitalOceanNodeDriver(accessKey)

        idsNodes = driver.list_nodes()

        for idNodes in idsNodes:
            #print idsNodes
            pass
            idNodes.extra = json.dumps(idNodes.extra)
            attr = {
                'id': idNodes.id,
                'name': idNodes.name,
                'state': idNodes.state,
                'public_ips': idNodes.public_ips,
                'private_ips': idNodes.private_ips,
                'provider': 'DigitalOcean',
                'extra': idNodes.extra
            }

            node.append(attr)

        nodesProvider = json.dumps(attr)
    if provider == "EC2":
        pass
        accessId = driverUno
        secretKey = driverDos
        region = driverTres
        driverCuatro = driverCuatro
        #	driver = BaseEC2NodeDriver(accessId,secretKey,'eu-west-1')

        cls = get_driver(Provider.EC2)
        driver = cls(accessId, secretKey, region=region)

        nodes = driver.list_nodes()

        nodeFunction = []
        for node in nodes:
            pass
            if node.state != 'terminated':

                v4 = []
                ips = {
                    'ipaddress': node.public_ips[0],
                    'gateway': 'NULL',
                    'mask': 'NULL',
                    'private_ip': node.private_ips[0]
                }

                v4.append(ips)

                network = {'v4': v4}

                extra = {
                    'launch_time': node.extra['launch_time'],
                    'instance_type': node.extra['instance_type'],
                    'network': network
                }

                attr = {
                    'id': node.id,
                    'region': region,
                    'name': node.name,
                    'state': node.state,
                    'public_ip': node.public_ips[0],
                    'provider': 'Amazon',
                    'extra': extra
                }

                nodeFunction.append(json.dumps(attr))
        nodesProvider = nodeFunction

    if provider == "Azure":
        pass
        tenantId = driverUno
        subscriptionId = driverDos
        applicationId = driverTres
        keyPaswd = driverCuatro
        driver = AzureNodeDriver(tenantId, subscriptionId, applicationId,
                                 keyPaswd)

        nodes = driver.list_nodes()

        print nodes

    if provider == "Linode":
        pass
        apiKey = driverUno
        driverDos = driverDos
        driverTres = driverTres
        driverCuatro = driverCuatro
        driver = LinodeNodeDriver(apiKey)

        nodes = driver.list_nodes()

        nodesProvider = nodes
    return nodesProvider
Esempio n. 16
0
def shutdownNode(provider, driverUno, driverDos, driverTres, driverCuatro,
                 nodeId):
    pass
    nodesProvider = ''
    if provider == "Digital Ocean":
        pass
        accessKey = driverUno
        driverDos = driverDos
        driverTres = driverTres
        driverCuatro = driverCuatro
        nodeId = nodeId
        driver = DigitalOceanNodeDriver(accessKey)

        idsNodes = driver.list_nodes()

        for idNodes in idsNodes:
            #print idsNodes
            if idNodes.id == nodeId:
                pass
                idNod = idNodes
                #			print idNod
                nodeStopped = driver.ex_shutdown_node(idNod)

                types = 'stopped'

                node = checkStatus.checkStatus(driver, idNod.id, types)

                if node != 0:
                    nodesProvider = nodeStopped

    if provider == "EC2":
        pass
        accessId = driverUno
        secretKey = driverDos
        region = driverTres
        driverCuatro = driverCuatro
        nodeId = nodeId
        #	driver = BaseEC2NodeDriver(accessId,secretKey,'eu-west-1')

        cls = get_driver(Provider.EC2)
        driver = cls(accessId, secretKey, region=region)

        idsNodes = driver.list_nodes()

        for idNodes in idsNodes:
            #print idsNodes
            if idNodes.id == nodeId:
                pass
                idNod = idNodes
                #			print idNod
                nodeStopped = driver.ex_stop_node(idNod)

                types = 'stopped'

                node = checkStatus.checkStatus(driver, idNod.id, types)

                if node != 0:
                    nodesProvider = nodeStopped

    if provider == "Azure":
        pass
        tenantId = driverUno
        subscriptionId = driverDos
        applicationId = driverTres
        keyPaswd = driverCuatro
        nodeId = nodeId
        driver = AzureNodeDriver(tenantId, subscriptionId, applicationId,
                                 keyPaswd)

        idsNodes = driver.list_nodes()

        for idNodes in idsNodes:
            #print idsNodes
            if idNodes.id == nodeId:
                pass
                idNod = idNodes
                #			print idNod
                nodeStopped = driver.ex_stop_node(idNod)

                types = 'stopped'

                node = checkStatus.checkStatus(driver, idNod.id, types)

                if node != 0:
                    nodesProvider = nodeStopped

    if provider == "Linode":
        pass
        apiKey = driverUno
        driverDos = driverDos
        driverTres = driverTres
        driverCuatro = driverCuatro
        nodeId = nodeId
        driver = LinodeNodeDriver(apiKey)

        idsNodes = driver.list_nodes()

        for idNodes in idsNodes:
            #print idsNodes
            if idNodes.id == nodeId:
                pass
                idNod = idNodes
                #			print idNod
                nodeStopped = driver.ex_stop_node(idNod)

                types = 'stopped'

                node = checkStatus.checkStatus(driver, idNod.id, types)

                if node != 0:
                    nodesProvider = nodeStopped

    return nodesProvider
Esempio n. 17
0
 def setUp(self):
     LinodeNodeDriver.connectionCls.conn_class = LinodeMockHttp
     LinodeMockHttp.use_param = "api_action"
     self.driver = LinodeNodeDriver("foo", api_version="3.0")