You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by to...@apache.org on 2019/12/21 11:45:41 UTC

[libcloud] 01/09: Add type annotations for more methods on the NodeDriver class.

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

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

commit c8ae2839cfa6ed42db7b333402d5b299e3a9e30f
Author: Tomaz Muraus <to...@tomaz.me>
AuthorDate: Sat Dec 21 12:00:50 2019 +0100

    Add type annotations for more methods on the NodeDriver class.
---
 libcloud/compute/base.py | 38 ++++++++++++++++++++++++++++++--------
 1 file changed, 30 insertions(+), 8 deletions(-)

diff --git a/libcloud/compute/base.py b/libcloud/compute/base.py
index 06e1a2d..35a0b82 100644
--- a/libcloud/compute/base.py
+++ b/libcloud/compute/base.py
@@ -48,6 +48,7 @@ if TYPE_CHECKING:
 from libcloud.compute.types import Provider
 from libcloud.compute.types import NodeImageMemberState
 from libcloud.compute.ssh import SSHClient
+from libcloud.compute.ssh import BaseSSHClient
 from libcloud.common.base import Connection
 from libcloud.common.base import ConnectionKey
 from libcloud.common.base import BaseDriver
@@ -69,6 +70,8 @@ else:
 
 T_Auth = Union['NodeAuthSSHKey', 'NodeAuthPassword']
 
+T_Ssh_key = Union[List[str], str]
+
 # How long to wait for the node to come online after creating it
 NODE_ONLINE_WAIT_TIMEOUT = 10 * 60
 
@@ -940,7 +943,7 @@ class NodeDriver(BaseDriver):
                     ssh_alternate_usernames=None,  # type: Optional[List[str]]
                     ssh_port=22,  # type: int
                     ssh_timeout=10,  # type: int
-                    ssh_key=None,  # type: Optional[str]
+                    ssh_key=None,  # type: Optional[T_Ssh_key]
                     auth=None,  # type: T_Auth
                     timeout=SSH_CONNECT_TIMEOUT,  # type: int
                     max_tries=3,  # type: int
@@ -1509,9 +1512,14 @@ class NodeDriver(BaseDriver):
         raise NotImplementedError(
             'delete_key_pair not implemented for this driver')
 
-    def wait_until_running(self, nodes, wait_period=3,
-                           timeout=600, ssh_interface='public_ips',
-                           force_ipv4=True, ex_list_nodes_kwargs=None):
+    def wait_until_running(self,
+                           nodes,  # type: List[Node]
+                           wait_period=3,  # type: float
+                           timeout=600,  # type: int
+                           ssh_interface='public_ips',  # type: str
+                           force_ipv4=True,  # type: bool
+                           ex_list_nodes_kwargs=None  # type: Optional[Dict]
+                           ):
         # type: (...) -> List[Tuple[Node, List[str]]]
         """
         Block until the provided nodes are considered running.
@@ -1653,6 +1661,7 @@ class NodeDriver(BaseDriver):
 
     def _wait_until_running(self, node, wait_period=3, timeout=600,
                             ssh_interface='public_ips', force_ipv4=True):
+        # type: (Node, float, int, str, bool) -> List[Tuple[Node, List[str]]]
         # This is here for backward compatibility and will be removed in the
         # next major release
         return self.wait_until_running(nodes=[node], wait_period=wait_period,
@@ -1661,6 +1670,7 @@ class NodeDriver(BaseDriver):
                                        force_ipv4=force_ipv4)
 
     def _ssh_client_connect(self, ssh_client, wait_period=1.5, timeout=300):
+        # type: (BaseSSHClient, float, int) -> BaseSSHClient
         """
         Try to connect to the remote SSH server. If a connection times out or
         is refused it is retried up to timeout number of seconds.
@@ -1713,10 +1723,19 @@ class NodeDriver(BaseDriver):
         raise LibcloudError(value='Could not connect to the remote SSH ' +
                             'server. Giving up.', driver=self)
 
-    def _connect_and_run_deployment_script(self, task, node, ssh_hostname,
-                                           ssh_port, ssh_username,
-                                           ssh_password, ssh_key_file,
-                                           ssh_timeout, timeout, max_tries):
+    def _connect_and_run_deployment_script(
+        self,
+        task,  # type: Deployment
+        node,  # type: Node
+        ssh_hostname,  # type: str
+        ssh_port,  # type: int
+        ssh_username,  # type: str
+        ssh_password,  # type: Optional[str]
+        ssh_key_file,  # type:Optional[T_Ssh_key]
+        ssh_timeout,  # type: int
+        timeout,  # type: int
+        max_tries  # type: int
+    ):
         """
         Establish an SSH connection to the node and run the provided deployment
         task.
@@ -1740,6 +1759,7 @@ class NodeDriver(BaseDriver):
         return node
 
     def _run_deployment_script(self, task, node, ssh_client, max_tries=3):
+        # type: (Deployment, Node, BaseSSHClient, int) -> Node
         """
         Run the deployment script on the provided node. At this point it is
         assumed that SSH connection has already been established.
@@ -1776,6 +1796,8 @@ class NodeDriver(BaseDriver):
                 ssh_client.close()
                 return node
 
+        return node
+
     def _get_size_price(self, size_id):
         """
         Return pricing information for the provided size id.