This is an automated email from the ASF dual-hosted git repository.

micafer pushed a commit to branch unify_create_node
in repository https://gitbox.apache.org/repos/asf/libcloud.git

commit 6d6d051d52954a7082dc016442c073d834020094
Author: Miguel Caballer <[email protected]>
AuthorDate: Wed Jul 22 12:24:25 2026 +0200

    Unify create_node function
---
 libcloud/compute/drivers/abiquo.py        |  4 +++-
 libcloud/compute/drivers/azure.py         |  5 +++--
 libcloud/compute/drivers/azure_arm.py     |  6 +++---
 libcloud/compute/drivers/brightbox.py     |  4 +++-
 libcloud/compute/drivers/cloudscale.py    |  2 +-
 libcloud/compute/drivers/cloudsigma.py    |  4 ++++
 libcloud/compute/drivers/cloudstack.py    |  1 +
 libcloud/compute/drivers/digitalocean.py  |  3 ++-
 libcloud/compute/drivers/dimensiondata.py |  4 +++-
 libcloud/compute/drivers/dummy.py         |  2 +-
 libcloud/compute/drivers/ec2.py           | 11 +++++++++--
 libcloud/compute/drivers/ecs.py           |  1 +
 libcloud/compute/drivers/equinixmetal.py  |  3 ++-
 libcloud/compute/drivers/gandi.py         |  1 +
 libcloud/compute/drivers/gce.py           |  1 +
 libcloud/compute/drivers/gig_g8.py        |  7 ++++---
 libcloud/compute/drivers/gridscale.py     |  4 +++-
 libcloud/compute/drivers/kamatera.py      |  2 +-
 libcloud/compute/drivers/ktucloud.py      |  4 +++-
 libcloud/compute/drivers/kubevirt.py      |  4 ++--
 libcloud/compute/drivers/linode.py        |  3 ++-
 libcloud/compute/drivers/maxihost.py      |  4 +++-
 libcloud/compute/drivers/nttcis.py        |  4 +++-
 libcloud/compute/drivers/onapp.py         | 18 +++++++++++-------
 libcloud/compute/drivers/opennebula.py    |  6 ++++--
 libcloud/compute/drivers/openstack.py     |  6 +++++-
 libcloud/compute/drivers/outscale.py      |  5 ++++-
 libcloud/compute/drivers/ovh.py           |  2 +-
 libcloud/compute/drivers/rimuhosting.py   |  1 +
 libcloud/compute/drivers/scaleway.py      | 12 +++++++++++-
 libcloud/compute/drivers/upcloud.py       |  2 +-
 libcloud/compute/drivers/vcl.py           | 11 ++++++++++-
 libcloud/compute/drivers/vcloud.py        |  7 ++++---
 libcloud/compute/drivers/vpsnet.py        | 11 ++++++++++-
 libcloud/compute/drivers/vsphere.py       |  6 ++++--
 libcloud/compute/drivers/vultr.py         | 16 +++++++++++++---
 libcloud/test/compute/test_azure_arm.py   | 16 ++++++++--------
 libcloud/test/compute/test_gig_g8.py      |  4 +++-
 libcloud/test/compute/test_linode_v4.py   | 12 +++++++-----
 39 files changed, 156 insertions(+), 63 deletions(-)

diff --git a/libcloud/compute/drivers/abiquo.py 
b/libcloud/compute/drivers/abiquo.py
index 73bd208c0..7ce8a87e9 100644
--- a/libcloud/compute/drivers/abiquo.py
+++ b/libcloud/compute/drivers/abiquo.py
@@ -76,7 +76,9 @@ class AbiquoNodeDriver(NodeDriver):
         super().__init__(key=user_id, secret=secret, secure=False, host=None, 
port=None, **kwargs)
         self.ex_populate_cache()
 
-    def create_node(self, image, name=None, size=None, location=None, 
ex_group_name=None):
+    def create_node(
+        self, name, size, image, location=None, auth=None, ex_group_name=None
+    ):
         """
         Create a new node instance in Abiquo
 
diff --git a/libcloud/compute/drivers/azure.py 
b/libcloud/compute/drivers/azure.py
index d424f357d..a35488830 100644
--- a/libcloud/compute/drivers/azure.py
+++ b/libcloud/compute/drivers/azure.py
@@ -481,7 +481,9 @@ class AzureNodeDriver(NodeDriver):
         name,
         size,
         image,
-        ex_cloud_service_name,
+        location=None,
+        auth=None,
+        ex_cloud_service_name=None,
         ex_storage_service_name=None,
         ex_new_deployment=False,
         ex_deployment_slot="Production",
@@ -490,7 +492,6 @@ class AzureNodeDriver(NodeDriver):
         ex_custom_data=None,
         ex_virtual_network_name=None,
         ex_network_config=None,
-        auth=None,
         **kwargs,
     ):
         """
diff --git a/libcloud/compute/drivers/azure_arm.py 
b/libcloud/compute/drivers/azure_arm.py
index 852c350e5..9c76b384f 100644
--- a/libcloud/compute/drivers/azure_arm.py
+++ b/libcloud/compute/drivers/azure_arm.py
@@ -505,11 +505,11 @@ class AzureNodeDriver(NodeDriver):
         name,
         size,
         image,
-        auth,
-        ex_resource_group,
+        location=None,
+        auth=None,
+        ex_resource_group=None,
         ex_storage_account=None,
         ex_blob_container="vhds",
-        location=None,
         ex_user_name="azureuser",
         ex_network=None,
         ex_subnet=None,
diff --git a/libcloud/compute/drivers/brightbox.py 
b/libcloud/compute/drivers/brightbox.py
index 67ee9bcc2..7f7a8766e 100644
--- a/libcloud/compute/drivers/brightbox.py
+++ b/libcloud/compute/drivers/brightbox.py
@@ -168,7 +168,9 @@ class BrightboxNodeDriver(NodeDriver):
         headers = {"Content-Type": "application/json"}
         return self.connection.request(path, data=data, headers=headers, 
method="PUT")
 
-    def create_node(self, name, size, image, location=None, ex_userdata=None, 
ex_servergroup=None):
+    def create_node(
+        self, name, size, image, location=None, auth=None, ex_userdata=None, 
ex_servergroup=None
+    ):
         """Create a new Brightbox node
 
         Reference: https://api.gb1.brightbox.com/1.0/#server_create_server
diff --git a/libcloud/compute/drivers/cloudscale.py 
b/libcloud/compute/drivers/cloudscale.py
index 7698bd65d..58958c979 100644
--- a/libcloud/compute/drivers/cloudscale.py
+++ b/libcloud/compute/drivers/cloudscale.py
@@ -110,7 +110,7 @@ class CloudscaleNodeDriver(NodeDriver):
         """
         return self._list_resources("/v1/images", self._to_image)
 
-    def create_node(self, name, size, image, location=None, 
ex_create_attr=None):
+    def create_node(self, name, size, image, location=None, auth=None, 
ex_create_attr=None):
         """
         Create a node.
 
diff --git a/libcloud/compute/drivers/cloudsigma.py 
b/libcloud/compute/drivers/cloudsigma.py
index a012b480b..f533d756c 100644
--- a/libcloud/compute/drivers/cloudsigma.py
+++ b/libcloud/compute/drivers/cloudsigma.py
@@ -316,6 +316,8 @@ class CloudSigma_1_0_NodeDriver(CloudSigmaNodeDriver):
         name,
         size,
         image,
+        location=None,
+        auth=None,
         smp="auto",
         nic_model="e1000",
         vnc_password=None,
@@ -1223,6 +1225,8 @@ class CloudSigma_2_0_NodeDriver(CloudSigmaNodeDriver):
         name,
         size,
         image,
+        location=None,
+        auth=None,
         ex_metadata=None,
         ex_vnc_password=None,
         ex_avoid=None,
diff --git a/libcloud/compute/drivers/cloudstack.py 
b/libcloud/compute/drivers/cloudstack.py
index 69605c2f1..bec45459c 100644
--- a/libcloud/compute/drivers/cloudstack.py
+++ b/libcloud/compute/drivers/cloudstack.py
@@ -1601,6 +1601,7 @@ class CloudStackNodeDriver(CloudStackDriverMixIn, 
NodeDriver):
         size,
         image,
         location=None,
+        auth=None,
         networks=None,
         project=None,
         diskoffering=None,
diff --git a/libcloud/compute/drivers/digitalocean.py 
b/libcloud/compute/drivers/digitalocean.py
index 761199dcf..dbab5cff1 100644
--- a/libcloud/compute/drivers/digitalocean.py
+++ b/libcloud/compute/drivers/digitalocean.py
@@ -151,7 +151,8 @@ class 
DigitalOcean_v2_NodeDriver(DigitalOcean_v2_BaseDriver, DigitalOceanNodeDri
         name,
         size,
         image,
-        location,
+        location=None,
+        auth=None,
         ex_create_attr=None,
         ex_ssh_key_ids=None,
         ex_user_data=None,
diff --git a/libcloud/compute/drivers/dimensiondata.py 
b/libcloud/compute/drivers/dimensiondata.py
index 31660cec3..3dfdd34dc 100644
--- a/libcloud/compute/drivers/dimensiondata.py
+++ b/libcloud/compute/drivers/dimensiondata.py
@@ -272,8 +272,10 @@ class DimensionDataNodeDriver(NodeDriver):
     def create_node(
         self,
         name,
+        size,
         image,
-        auth,
+        location=None,
+        auth=None,
         ex_network_domain=None,
         ex_primary_nic_private_ipv4=None,
         ex_primary_nic_vlan=None,
diff --git a/libcloud/compute/drivers/dummy.py 
b/libcloud/compute/drivers/dummy.py
index 04889789d..a3fee5fd8 100644
--- a/libcloud/compute/drivers/dummy.py
+++ b/libcloud/compute/drivers/dummy.py
@@ -287,7 +287,7 @@ class DummyNodeDriver(NodeDriver):
             NodeLocation(id=3, name="Island Datacenter", country="FJ", 
driver=self),
         ]
 
-    def create_node(self, name, size, image):
+    def create_node(self, name, size, image, location=None, auth=None):
         """
         Creates a dummy node; the node id is equal to the number of
         nodes in the node list
diff --git a/libcloud/compute/drivers/ec2.py b/libcloud/compute/drivers/ec2.py
index 770a30d15..77a9a5017 100644
--- a/libcloud/compute/drivers/ec2.py
+++ b/libcloud/compute/drivers/ec2.py
@@ -5641,7 +5641,7 @@ class OutscaleNodeDriver(BaseEC2NodeDriver):
 
         super().__init__(key=key, secret=secret, secure=secure, host=host, 
port=port, **kwargs)
 
-    def create_node(self, **kwargs):
+    def create_node(self, name, size, image, location=None, auth=None, 
**kwargs):
         """
         Creates a new Outscale node. The ex_iamprofile keyword
         is not supported.
@@ -5680,7 +5680,14 @@ class OutscaleNodeDriver(BaseEC2NodeDriver):
         """
         if "ex_iamprofile" in kwargs:
             raise NotImplementedError("ex_iamprofile not implemented")
-        return super().create_node(**kwargs)
+        return super().create_node(
+            name=name,
+            size=size,
+            image=image,
+            location=location,
+            auth=auth,
+            **kwargs,
+        )
 
     def ex_create_network(self, cidr_block, name=None):
         """
diff --git a/libcloud/compute/drivers/ecs.py b/libcloud/compute/drivers/ecs.py
index 8fca7b455..45f050191 100644
--- a/libcloud/compute/drivers/ecs.py
+++ b/libcloud/compute/drivers/ecs.py
@@ -402,6 +402,7 @@ class ECSDriver(NodeDriver):
         name,
         size,
         image,
+        location=None,
         auth=None,
         ex_security_group_id=None,
         ex_description=None,
diff --git a/libcloud/compute/drivers/equinixmetal.py 
b/libcloud/compute/drivers/equinixmetal.py
index 2508e5fa6..2db8a0b6b 100644
--- a/libcloud/compute/drivers/equinixmetal.py
+++ b/libcloud/compute/drivers/equinixmetal.py
@@ -269,7 +269,8 @@ def _list_async(driver):
         name,
         size,
         image,
-        location,
+        location=None,
+        auth=None,
         ex_project_id=None,
         ip_addresses=None,
         cloud_init=None,
diff --git a/libcloud/compute/drivers/gandi.py 
b/libcloud/compute/drivers/gandi.py
index 594b5e204..8b97d5c22 100644
--- a/libcloud/compute/drivers/gandi.py
+++ b/libcloud/compute/drivers/gandi.py
@@ -244,6 +244,7 @@ class GandiNodeDriver(BaseGandiDriver, NodeDriver):
         size,
         image,
         location=None,
+        auth=None,
         login=None,
         password=None,
         inet_family=4,
diff --git a/libcloud/compute/drivers/gce.py b/libcloud/compute/drivers/gce.py
index bdb46dbdc..f15ee2aa8 100644
--- a/libcloud/compute/drivers/gce.py
+++ b/libcloud/compute/drivers/gce.py
@@ -4441,6 +4441,7 @@ class GCENodeDriver(NodeDriver):
         size,
         image,
         location=None,
+        auth=None,
         ex_network="default",
         ex_subnetwork=None,
         ex_tags=None,
diff --git a/libcloud/compute/drivers/gig_g8.py 
b/libcloud/compute/drivers/gig_g8.py
index fa85b62eb..1c5937a0f 100644
--- a/libcloud/compute/drivers/gig_g8.py
+++ b/libcloud/compute/drivers/gig_g8.py
@@ -168,11 +168,12 @@ class G8NodeDriver(NodeDriver):
     def create_node(
         self,
         name,
+        size,
         image,
-        ex_network,
-        ex_description,
-        size=None,
+        location=None,
         auth=None,
+        ex_network=None,
+        ex_description=None,
         ex_create_attr=None,
         ex_expose_ssh=False,
     ):
diff --git a/libcloud/compute/drivers/gridscale.py 
b/libcloud/compute/drivers/gridscale.py
index 64d5f93e0..69331b4b5 100644
--- a/libcloud/compute/drivers/gridscale.py
+++ b/libcloud/compute/drivers/gridscale.py
@@ -208,7 +208,9 @@ class GridscaleNodeDriver(GridscaleBaseDriver, NodeDriver):
             templates.append(template)
         return sorted(templates, key=lambda sort: sort.name)
 
-    def create_node(self, name, size, image, location, ex_ssh_key_ids=None, 
**kwargs):
+    def create_node(
+        self, name, size, image, location=None, auth=None, 
ex_ssh_key_ids=None, **kwargs
+    ):
         """
         Create a simple node  with a name, cores, memory at the designated
         location.
diff --git a/libcloud/compute/drivers/kamatera.py 
b/libcloud/compute/drivers/kamatera.py
index 6013ef893..051224afd 100644
--- a/libcloud/compute/drivers/kamatera.py
+++ b/libcloud/compute/drivers/kamatera.py
@@ -133,7 +133,7 @@ class KamateraNodeDriver(NodeDriver):
         name,
         size,
         image,
-        location,
+        location=None,
         auth=None,
         ex_networks=None,
         ex_dailybackup=False,
diff --git a/libcloud/compute/drivers/ktucloud.py 
b/libcloud/compute/drivers/ktucloud.py
index 3ec56867e..2c5dca14f 100644
--- a/libcloud/compute/drivers/ktucloud.py
+++ b/libcloud/compute/drivers/ktucloud.py
@@ -60,7 +60,9 @@ class KTUCloudNodeDriver(CloudStackNodeDriver):
             sizes.append(NodeSize(diskofferingid, sz["diskofferingdesc"], 0, 
0, 0, 0, self))
         return sizes
 
-    def create_node(self, name, size, image, location=None, 
ex_usageplantype="hourly"):
+    def create_node(
+        self, name, size, image, location=None, auth=None, 
ex_usageplantype="hourly"
+    ):
         params = {
             "displayname": name,
             "serviceofferingid": image.id,
diff --git a/libcloud/compute/drivers/kubevirt.py 
b/libcloud/compute/drivers/kubevirt.py
index b011c3a44..b6eceaddb 100644
--- a/libcloud/compute/drivers/kubevirt.py
+++ b/libcloud/compute/drivers/kubevirt.py
@@ -815,8 +815,8 @@ class KubeVirtNodeDriver(KubernetesDriverMixin, NodeDriver):
     def create_node(
         self,
         name,  # type: str
-        size=None,  # type: Optional[NodeSize]
-        image=None,  # type: Optional[Union[NodeImage, str]]
+        size,  # type: NodeSize
+        image,  # type: Union[NodeImage, str]
         location=None,  # type: Optional[NodeLocation]
         auth=None,  # type: Optional[Union[NodeAuthSSHKey, NodeAuthPassword]]
         ex_cpu=None,  # type: Optional[Union[int, str]]
diff --git a/libcloud/compute/drivers/linode.py 
b/libcloud/compute/drivers/linode.py
index b8da22ea4..cc6d988b2 100644
--- a/libcloud/compute/drivers/linode.py
+++ b/libcloud/compute/drivers/linode.py
@@ -254,7 +254,6 @@ class LinodeNodeDriverV4(LinodeNodeDriver):
 
     def create_node(
         self,
-        location,
         # Previously, the following 3 parameters did not match the rest of the 
libcloud
         # codebase drivers. They should be in the same order as other compute 
drivers.
         # Previously, it looked like this:
@@ -270,6 +269,8 @@ class LinodeNodeDriverV4(LinodeNodeDriver):
         name,  # Can be None
         size,  # Can be None
         image,  # Can be None
+        location=None,
+        auth=None,
         root_pass=None,
         ex_authorized_keys=None,
         ex_authorized_users=None,
diff --git a/libcloud/compute/drivers/maxihost.py 
b/libcloud/compute/drivers/maxihost.py
index c05d2efce..7107c8146 100644
--- a/libcloud/compute/drivers/maxihost.py
+++ b/libcloud/compute/drivers/maxihost.py
@@ -35,7 +35,9 @@ class MaxihostNodeDriver(NodeDriver):
     name = "Maxihost"
     website = "https://www.maxihost.com/";
 
-    def create_node(self, name, size, image, location, ex_ssh_key_ids=None):
+    def create_node(
+        self, name, size, image, location=None, auth=None, ex_ssh_key_ids=None
+    ):
         """
         Create a node.
 
diff --git a/libcloud/compute/drivers/nttcis.py 
b/libcloud/compute/drivers/nttcis.py
index 468cfd160..554f9b31e 100644
--- a/libcloud/compute/drivers/nttcis.py
+++ b/libcloud/compute/drivers/nttcis.py
@@ -282,8 +282,10 @@ class NttCisNodeDriver(NodeDriver):
     def create_node(
         self,
         name,
+        size,
         image,
-        auth,
+        location=None,
+        auth=None,
         ex_network_domain=None,
         ex_primary_nic_private_ipv4=None,
         ex_primary_nic_vlan=None,
diff --git a/libcloud/compute/drivers/onapp.py 
b/libcloud/compute/drivers/onapp.py
index 307d71d1f..902b80075 100644
--- a/libcloud/compute/drivers/onapp.py
+++ b/libcloud/compute/drivers/onapp.py
@@ -142,13 +142,17 @@ class OnAppNodeDriver(NodeDriver):
     def create_node(
         self,
         name,
-        ex_memory,
-        ex_cpus,
-        ex_cpu_shares,
-        ex_hostname,
-        ex_template_id,
-        ex_primary_disk_size,
-        ex_swap_disk_size,
+        size,
+        image,
+        location=None,
+        auth=None,
+        ex_memory=None,
+        ex_cpus=None,
+        ex_cpu_shares=None,
+        ex_hostname=None,
+        ex_template_id=None,
+        ex_primary_disk_size=None,
+        ex_swap_disk_size=None,
         ex_required_virtual_machine_build=1,
         ex_required_ip_address_assignment=1,
         **kwargs,
diff --git a/libcloud/compute/drivers/opennebula.py 
b/libcloud/compute/drivers/opennebula.py
index b67c9fa98..578a96977 100644
--- a/libcloud/compute/drivers/opennebula.py
+++ b/libcloud/compute/drivers/opennebula.py
@@ -339,7 +339,7 @@ class OpenNebulaNodeDriver(NodeDriver):
 
             return super().__new__(cls)
 
-    def create_node(self, name, size, image, networks=None):
+    def create_node(self, name, size, image, location=None, auth=None, 
networks=None):
         """
         Create a new OpenNebula node.
 
@@ -704,7 +704,9 @@ class OpenNebula_2_0_NodeDriver(OpenNebulaNodeDriver):
 
     name = "OpenNebula (v2.0 - v2.2)"
 
-    def create_node(self, name, size, image, networks=None, context=None):
+    def create_node(
+        self, name, size, image, location=None, auth=None, networks=None, 
context=None
+    ):
         """
         Create a new OpenNebula node.
 
diff --git a/libcloud/compute/drivers/openstack.py 
b/libcloud/compute/drivers/openstack.py
index e9d5104d9..b98e33fac 100644
--- a/libcloud/compute/drivers/openstack.py
+++ b/libcloud/compute/drivers/openstack.py
@@ -663,6 +663,8 @@ class OpenStack_1_0_NodeDriver(OpenStackNodeDriver):
         name,
         size,
         image,
+        location=None,
+        auth=None,
         ex_metadata=None,
         ex_files=None,
         ex_shared_ip_group=None,
@@ -1425,7 +1427,9 @@ class OpenStack_1_1_NodeDriver(OpenStackNodeDriver):
         self,
         name,
         size,
-        image=None,
+        image,
+        location=None,
+        auth=None,
         ex_keyname=None,
         ex_userdata=None,
         ex_config_drive=None,
diff --git a/libcloud/compute/drivers/outscale.py 
b/libcloud/compute/drivers/outscale.py
index 1fd5a5745..8ec74e746 100644
--- a/libcloud/compute/drivers/outscale.py
+++ b/libcloud/compute/drivers/outscale.py
@@ -314,8 +314,11 @@ class OutscaleNodeDriver(NodeDriver):
 
     def create_node(
         self,
+        name: str,
+        size,
         image: NodeImage,
-        name: str = None,
+        location=None,
+        auth=None,
         ex_dry_run: bool = False,
         ex_block_device_mapping: dict = None,
         ex_boot_on_creation: bool = True,
diff --git a/libcloud/compute/drivers/ovh.py b/libcloud/compute/drivers/ovh.py
index edeff5812..16a9f7c5e 100644
--- a/libcloud/compute/drivers/ovh.py
+++ b/libcloud/compute/drivers/ovh.py
@@ -120,7 +120,7 @@ class OvhNodeDriver(NodeDriver):
 
         return self._to_node(response.object)
 
-    def create_node(self, name, image, size, location, ex_keyname=None):
+    def create_node(self, name, size, image, location=None, auth=None, 
ex_keyname=None):
         """
         Create a new node
 
diff --git a/libcloud/compute/drivers/rimuhosting.py 
b/libcloud/compute/drivers/rimuhosting.py
index 60bce9f6f..7808d63cf 100644
--- a/libcloud/compute/drivers/rimuhosting.py
+++ b/libcloud/compute/drivers/rimuhosting.py
@@ -227,6 +227,7 @@ class RimuHostingNodeDriver(NodeDriver):
         name,
         size,
         image,
+        location=None,
         auth=None,
         ex_billing_oid=None,
         ex_host_server_oid=None,
diff --git a/libcloud/compute/drivers/scaleway.py 
b/libcloud/compute/drivers/scaleway.py
index 753c20e14..71f9405c1 100644
--- a/libcloud/compute/drivers/scaleway.py
+++ b/libcloud/compute/drivers/scaleway.py
@@ -372,7 +372,17 @@ class ScalewayNodeDriver(NodeDriver):
             created_at=parse_date(server["creation_date"]),
         )
 
-    def create_node(self, name, size, image, ex_volumes=None, ex_tags=None, 
region=None):
+    def create_node(
+        self,
+        name,
+        size,
+        image,
+        location=None,
+        auth=None,
+        ex_volumes=None,
+        ex_tags=None,
+        region=None,
+    ):
         """
         Create a new node.
 
diff --git a/libcloud/compute/drivers/upcloud.py 
b/libcloud/compute/drivers/upcloud.py
index 86ba8665d..83e68c72f 100644
--- a/libcloud/compute/drivers/upcloud.py
+++ b/libcloud/compute/drivers/upcloud.py
@@ -191,7 +191,7 @@ class UpcloudDriver(NodeDriver):
         name,
         size,
         image,
-        location,
+        location=None,
         auth=None,
         ex_hostname="localhost",
         ex_username="root",
diff --git a/libcloud/compute/drivers/vcl.py b/libcloud/compute/drivers/vcl.py
index 299cf5ffd..533733f75 100644
--- a/libcloud/compute/drivers/vcl.py
+++ b/libcloud/compute/drivers/vcl.py
@@ -99,7 +99,16 @@ class VCLNodeDriver(NodeDriver):
             raise LibcloudError(res["errormsg"], driver=self)
         return res
 
-    def create_node(self, image, start=None, length="60"):
+    def create_node(
+        self,
+        name,
+        size,
+        image,
+        location=None,
+        auth=None,
+        start=None,
+        length="60",
+    ):
         """Create a new VCL reservation
         size and name ignored, image is the id from list_image
 
diff --git a/libcloud/compute/drivers/vcloud.py 
b/libcloud/compute/drivers/vcloud.py
index fc3b21cd2..8a86f5e4b 100644
--- a/libcloud/compute/drivers/vcloud.py
+++ b/libcloud/compute/drivers/vcloud.py
@@ -871,6 +871,7 @@ class VCloudNodeDriver(NodeDriver):
         name,
         size,
         image,
+        location=None,
         auth=None,
         ex_network=None,
         ex_vdc=None,
@@ -1605,7 +1606,9 @@ class VCloud_1_5_NodeDriver(VCloudNodeDriver):
 
         return results
 
-    def create_node(self, **kwargs):
+    def create_node(
+        self, name, size, image, location=None, auth=None, **kwargs
+    ):
         """
         Creates and returns node. If the source image is:
           - vApp template - a new vApp is instantiated from template
@@ -1691,8 +1694,6 @@ class VCloud_1_5_NodeDriver(VCloudNodeDriver):
         :keyword    ex_description: Set a description for the vApp.
         :type       ex_description: ``str``
         """
-        name = kwargs["name"]
-        image = kwargs["image"]
         ex_vm_names = kwargs.get("ex_vm_names")
         ex_vm_cpu = kwargs.get("ex_vm_cpu")
         ex_vm_memory = kwargs.get("ex_vm_memory")
diff --git a/libcloud/compute/drivers/vpsnet.py 
b/libcloud/compute/drivers/vpsnet.py
index f92dfbecf..1531ecae1 100644
--- a/libcloud/compute/drivers/vpsnet.py
+++ b/libcloud/compute/drivers/vpsnet.py
@@ -131,7 +131,16 @@ class VPSNetNodeDriver(NodeDriver):
         single_node_price = self._get_size_price(size_id="1")
         return num * single_node_price
 
-    def create_node(self, name, image, size, ex_backups_enabled=False, 
ex_fqdn=None):
+    def create_node(
+        self,
+        name,
+        size,
+        image,
+        location=None,
+        auth=None,
+        ex_backups_enabled=False,
+        ex_fqdn=None,
+    ):
         """Create a new VPS.net node
 
         @inherits: :class:`NodeDriver.create_node`
diff --git a/libcloud/compute/drivers/vsphere.py 
b/libcloud/compute/drivers/vsphere.py
index 185cc6db7..884852d39 100644
--- a/libcloud/compute/drivers/vsphere.py
+++ b/libcloud/compute/drivers/vsphere.py
@@ -978,9 +978,10 @@ class VSphereNodeDriver(NodeDriver):
     def create_node(
         self,
         name,
-        image,
         size,
+        image,
         location=None,
+        auth=None,
         ex_cluster=None,
         ex_network=None,
         ex_datacenter=None,
@@ -1972,9 +1973,10 @@ class VSphere_REST_NodeDriver(NodeDriver):
     def create_node(
         self,
         name,
+        size,
         image,
-        size=None,
         location=None,
+        auth=None,
         ex_datastore=None,
         ex_disks=None,
         ex_folder=None,
diff --git a/libcloud/compute/drivers/vultr.py 
b/libcloud/compute/drivers/vultr.py
index abdf8b99e..6a852ad0f 100644
--- a/libcloud/compute/drivers/vultr.py
+++ b/libcloud/compute/drivers/vultr.py
@@ -851,7 +851,16 @@ class VultrNodeDriverV1(VultrNodeDriver):
         return self._list_resources("/v1/os/list", self._to_image)
 
     # pylint: disable=too-many-locals
-    def create_node(self, name, size, image, location, ex_ssh_key_ids=None, 
ex_create_attr=None):
+    def create_node(
+        self,
+        name,
+        size,
+        image,
+        location=None,
+        auth=None,
+        ex_ssh_key_ids=None,
+        ex_create_attr=None,
+    ):
         """
         Create a node
 
@@ -1133,8 +1142,9 @@ class VultrNodeDriverV2(VultrNodeDriver):
         self,
         name: str,
         size: NodeSize,
-        location: NodeLocation,
-        image: Optional[NodeImage] = None,
+        image: NodeImage,
+        location: Optional[NodeLocation] = None,
+        auth=None,
         ex_ssh_key_ids: Optional[List[str]] = None,
         ex_private_network_ids: Optional[List[str]] = None,
         ex_snapshot: Union[VultrNodeSnapshot, str, None] = None,
diff --git a/libcloud/test/compute/test_azure_arm.py 
b/libcloud/test/compute/test_azure_arm.py
index cd0a255e5..143ef1a2c 100644
--- a/libcloud/test/compute/test_azure_arm.py
+++ b/libcloud/test/compute/test_azure_arm.py
@@ -111,8 +111,8 @@ class AzureNodeDriverTests(LibcloudTestCase):
             "test-node-1",
             size,
             image,
-            auth,
             location=location,
+            auth=auth,
             ex_resource_group="000000",
             ex_storage_account="000000",
             ex_user_name="any_user",
@@ -162,8 +162,8 @@ class AzureNodeDriverTests(LibcloudTestCase):
             "test-node-1",
             size,
             image,
-            auth,
             location=location,
+            auth=auth,
             ex_resource_group="000000",
             ex_storage_account=None,
             ex_user_name="any_user",
@@ -177,8 +177,8 @@ class AzureNodeDriverTests(LibcloudTestCase):
             "test-node-1",
             size,
             image,
-            auth,
             location=location,
+            auth=auth,
             ex_resource_group="000000",
             ex_storage_account=None,
             ex_user_name="any_user",
@@ -198,8 +198,8 @@ class AzureNodeDriverTests(LibcloudTestCase):
             "test-node-1",
             size,
             image,
-            auth,
             location=location,
+            auth=auth,
             ex_resource_group="000000",
             ex_storage_account="000000",
             ex_user_name="any_user",
@@ -247,8 +247,8 @@ class AzureNodeDriverTests(LibcloudTestCase):
             "test-node-1",
             size,
             image,
-            auth,
             location=location,
+            auth=auth,
             ex_resource_group="000000",
             ex_storage_account="000000",
             ex_user_name="any_user",
@@ -268,8 +268,8 @@ class AzureNodeDriverTests(LibcloudTestCase):
             "test-node-1",
             size,
             image,
-            auth,
             location=location,
+            auth=auth,
             ex_resource_group="000000",
             ex_storage_account="000000",
             ex_user_name="any_user",
@@ -293,8 +293,8 @@ class AzureNodeDriverTests(LibcloudTestCase):
             "test-node-1",
             size,
             image,
-            auth,
             location=location,
+            auth=auth,
             ex_resource_group="000000",
             ex_storage_account="000000",
             ex_user_name="any_user",
@@ -340,8 +340,8 @@ class AzureNodeDriverTests(LibcloudTestCase):
             "test-node-1",
             size,
             image,
-            auth,
             location=location,
+            auth=auth,
             ex_resource_group="000000",
             ex_storage_account="000000",
             ex_user_name="any_user",
diff --git a/libcloud/test/compute/test_gig_g8.py 
b/libcloud/test/compute/test_gig_g8.py
index 386e4d767..bd77c6737 100644
--- a/libcloud/test/compute/test_gig_g8.py
+++ b/libcloud/test/compute/test_gig_g8.py
@@ -85,7 +85,9 @@ class G8Tests(unittest.TestCase):
         image = self.driver.list_images()[0]
         size = self.driver.list_sizes()[0]
         network = self.driver.ex_list_networks()[0]
-        node = self.driver.create_node("my test", image, network, "my 
description", size)
+        node = self.driver.create_node(
+            "my test", size, image, ex_network=network, ex_description="my 
description"
+        )
         self.assertIsInstance(node, Node)
 
     def test_stop_node(self):
diff --git a/libcloud/test/compute/test_linode_v4.py 
b/libcloud/test/compute/test_linode_v4.py
index 2bae27938..a166e95cf 100644
--- a/libcloud/test/compute/test_linode_v4.py
+++ b/libcloud/test/compute/test_linode_v4.py
@@ -103,10 +103,10 @@ class LinodeTestsV4(unittest.TestCase, TestCaseMixin):
         image = self.driver.list_images()[0]
         location = self.driver.list_locations()[0]
         node = self.driver.create_node(
-            location,
             "node-name",
             size=size,
             image=image,
+            location=location,
             root_pass="test123456",
         )
         self.assertTrue(isinstance(node, Node))
@@ -119,10 +119,10 @@ class LinodeTestsV4(unittest.TestCase, TestCaseMixin):
         LinodeMockHttpV4.type = "EX_USERDATA"
 
         node = self.driver.create_node(
-            location,
             "node-name",
             size=size,
             image=image,
+            location=location,
             root_pass="test123456",
             ex_userdata=EX_USERDATA,
         )
@@ -155,10 +155,10 @@ class LinodeTestsV4(unittest.TestCase, TestCaseMixin):
         location = self.driver.list_locations()[0]
 
         node = self.driver.create_node(
-            location,
             "TestNode",
             size,
             image=image,
+            location=location,
             root_pass="test123456",
             ex_backups_enabled=True,
             ex_tags=["testing123"],
@@ -176,13 +176,15 @@ class LinodeTestsV4(unittest.TestCase, TestCaseMixin):
         location = self.driver.list_locations()[0]
 
         with self.assertRaises(LinodeExceptionV4):
-            self.driver.create_node(location, "TestNode", size, image=image)
+            self.driver.create_node("TestNode", size, image=image, 
location=location)
 
     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, "TestNode", size, None, 
ex_tags=["testing123"])
+        node = self.driver.create_node(
+            "TestNode", size, None, location=location, ex_tags=["testing123"]
+        )
 
         self.assertIsNone(node.image)
         self.assertEqual(node.name, "TestNode")

Reply via email to