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 fe5e2363d2b80ab34a8a56ed25ddefaf5998008a Author: Tio Gobin <[email protected]> AuthorDate: Sun Aug 23 22:02:49 2020 +0200 Changed some utils function and some return value for more compliance with libcloud standard provider methods --- libcloud/compute/drivers/outscale.py | 122 +++++++++++++++++++---------------- 1 file changed, 66 insertions(+), 56 deletions(-) diff --git a/libcloud/compute/drivers/outscale.py b/libcloud/compute/drivers/outscale.py index 58bd08f..5e57ca3 100644 --- a/libcloud/compute/drivers/outscale.py +++ b/libcloud/compute/drivers/outscale.py @@ -52,11 +52,12 @@ class OutscaleNodeDriver(NodeDriver): self.connection.service_name = service self.service_name = service self.version = version - self.signer = OSCRequestSignerAlgorithmV4(access_key=self.key, - access_secret=self.secret, - version=self.version, - connection=self.connection) - + self.signer = OSCRequestSignerAlgorithmV4( + access_key=self.key, + access_secret=self.secret, + version=self.version, + connection=self.connection + ) self.NODE_STATE = { 'pending': NodeState.PENDING, 'running': NodeState.RUNNING, @@ -106,7 +107,10 @@ class OutscaleNodeDriver(NodeDriver): endpoint = self._get_outscale_endpoint(self.region, self.version, action) - return requests.post(endpoint, data=data, headers=headers) + + if requests.post(endpoint, data=data, headers=headers).status_code == 200: + return True + return False def ex_delete_public_ip(self, dry_run: bool = False, @@ -142,7 +146,9 @@ class OutscaleNodeDriver(NodeDriver): endpoint = self._get_outscale_endpoint(self.region, self.version, action) - return requests.post(endpoint, data=data, headers=headers) + if requests.post(endpoint, data=data, headers=headers).status_code == 200: + return True + return False def ex_list_public_ips(self, data: str = "{}"): """ @@ -239,7 +245,9 @@ class OutscaleNodeDriver(NodeDriver): endpoint = self._get_outscale_endpoint(self.region, self.version, action) - return requests.post(endpoint, data=data, headers=headers) + if requests.post(endpoint, data=data, headers=headers).status_code == 200: + return True + return False def ex_detach_public_ip(self, public_ip: str = None, @@ -275,7 +283,9 @@ class OutscaleNodeDriver(NodeDriver): endpoint = self._get_outscale_endpoint(self.region, self.version, action) - return requests.post(endpoint, data=data, headers=headers) + if requests.post(endpoint, data=data, headers=headers).status_code == 200: + return True + return False def create_node(self, ex_image_id: str, @@ -428,7 +438,9 @@ class OutscaleNodeDriver(NodeDriver): endpoint = self._get_outscale_endpoint(self.region, self.version, action) - return requests.post(endpoint, data=data, headers=headers) + vm = requests.post(endpoint, data=data, headers=headers).json()["Vms"][0] + + return self._to_node(vm) def reboot_node(self, node: Node): """ @@ -447,46 +459,42 @@ class OutscaleNodeDriver(NodeDriver): endpoint = self._get_outscale_endpoint(self.region, self.version, action) - return requests.post(endpoint, data=data, headers=headers) + if requests.post(endpoint, data=data, headers=headers).status_code == 200: + return False + return False + + def _to_node(self, vm): + name = "" + private_ips = [] + for tag in vm["Tags"]: + if tag["Key"] == "Name": + name = tag["Value"] + if "PrivateIps" in vm["Nics"]: + private_ips = vm["Nics"]["PrivateIps"] + + return Node(id=vm["VmId"], + name=name, + state=self.NODE_STATE[vm["State"]], + public_ips=[], + private_ips=private_ips, + driver=self, + extra=vm) def _to_nodes(self, vms: list): - nodes_list = [] - for vm in vms: - name = "" - private_ips = [] - for tag in vm["Tags"]: - if tag["Key"] == "Name": - name = tag["Value"] - if "PrivateIps" in vm["Nics"]: - private_ips = vm["Nics"]["PrivateIps"] - - node = Node(id=vm["VmId"], - name=name, - state=self.NODE_STATE[vm["State"]], - public_ips=[], - private_ips=private_ips, - driver=self, - extra=vm) - nodes_list.append(node) - return nodes_list + return [self._to_node(vm) for vm in vms] + + def _to_node_image(self, image): + name = "" + for tag in image["Tags"]: + if tag["Key"] == "Name": + name = tag["Value"] + return NodeImage(id=image["NodeId"], + name=name, + driver=self, + extra=image) def _to_node_images(self, node_images: list): - node_image_list = [] - for image in node_images: - name = "" - private_ips = [] - for tag in image["Tags"]: - if tag["Key"] == "Name": - name = tag["Value"] - if "PrivateIps" in image["Nics"]: - private_ips = image["Nics"]["PrivateIps"] - - node = NodeImage(id=image["NodeId"], - name=name, - driver=self, - extra=image) - node_image_list.append(node) - return node_image_list + return [self._to_node_image(node_image) for node_image in node_images] def list_nodes(self, ex_data: str = "{}"): """ @@ -519,7 +527,9 @@ class OutscaleNodeDriver(NodeDriver): endpoint = self._get_outscale_endpoint(self.region, self.version, action) - return requests.post(endpoint, data=data, headers=headers) + if requests.post(endpoint, data=data, headers=headers).status_code == 200: + return True + return False def create_image( self, @@ -603,7 +613,8 @@ class OutscaleNodeDriver(NodeDriver): endpoint = self._get_outscale_endpoint(self.region, self.version, action) - return requests.post(endpoint, data=data, headers=headers) + image = requests.post(endpoint, data=data, headers=headers).json()["Image"] + return self._to_node_images(image) def list_images(self, ex_data: str = "{}"): """ @@ -637,7 +648,7 @@ class OutscaleNodeDriver(NodeDriver): self.version, action) images = requests.post(endpoint, data=data, headers=headers).json()["Images"] - return self._to_node_images(images)[0] + return self._to_node_image(images) def delete_image(self, node_image: NodeImage): """ @@ -655,8 +666,7 @@ class OutscaleNodeDriver(NodeDriver): endpoint = self._get_outscale_endpoint(self.region, self.version, action) - response = requests.post(endpoint, data=data, headers=headers) - if response.status_code == 200: + if requests.post(endpoint, data=data, headers=headers).status_code == 200: return True return False @@ -667,7 +677,7 @@ class OutscaleNodeDriver(NodeDriver): private_key = key_pair["PrivateKey"] if "PrivateKey" in key_pair else "" return KeyPair( name=key_pair["KeypairName"], - public_key=None, + public_key="", private_key=private_key, fingerprint=key_pair["KeypairFingerprint"], driver=self) @@ -788,7 +798,8 @@ class OutscaleNodeDriver(NodeDriver): ex_snapshot_size: int = None, ex_source_region_name: str = None, ex_source_snapshot: VolumeSnapshot = None, - volume: StorageVolume = None): + volume: StorageVolume = None + ): """ Create a new snapshot. @@ -846,7 +857,8 @@ class OutscaleNodeDriver(NodeDriver): endpoint = self._get_outscale_endpoint(self.region, self.version, action) - return requests.post(endpoint, data=data, headers=headers) + snapshot = requests.post(endpoint, data=data, headers=headers).json()["Volume"] + return self._to_snapshot(snapshot) def _to_snapshot(self, snapshot): name = None @@ -963,9 +975,7 @@ class OutscaleNodeDriver(NodeDriver): endpoint = self._get_outscale_endpoint(self.region, self.version, action) - volume = requests.post(endpoint, data=data, headers=headers).json()["Volume"] - return self._to_volume(volume) def list_volumes(self, ex_data: str = "{}"):
