You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datalab.apache.org by op...@apache.org on 2022/09/08 11:49:57 UTC

[incubator-datalab] branch DATALAB-3004 updated: [DATALAB-3004]: changed status checker scripts

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

opolishchuk pushed a commit to branch DATALAB-3004
in repository https://gitbox.apache.org/repos/asf/incubator-datalab.git


The following commit(s) were added to refs/heads/DATALAB-3004 by this push:
     new e28dd1ac9 [DATALAB-3004]: changed status checker scripts
e28dd1ac9 is described below

commit e28dd1ac963b542973816754d09214c2e8371302
Author: Oleksandr Polishchuk <po...@gmail.com>
AuthorDate: Thu Sep 8 14:49:39 2022 +0300

    [DATALAB-3004]: changed status checker scripts
---
 .../src/general/lib/aws/meta_lib.py                | 28 ++++++++++++++--------
 .../src/general/lib/azure/meta_lib.py              | 26 ++++++++++++++++++++
 .../src/general/lib/gcp/meta_lib.py                |  9 +++++--
 .../general/scripts/azure/common_collect_data.py   |  2 +-
 4 files changed, 52 insertions(+), 13 deletions(-)

diff --git a/infrastructure-provisioning/src/general/lib/aws/meta_lib.py b/infrastructure-provisioning/src/general/lib/aws/meta_lib.py
index a6f918b19..340eba86c 100644
--- a/infrastructure-provisioning/src/general/lib/aws/meta_lib.py
+++ b/infrastructure-provisioning/src/general/lib/aws/meta_lib.py
@@ -759,17 +759,25 @@ def get_list_image_statuses(image_ids, data=[]):
     for k in image_ids:
         host = {}
         try:
-            if 'id' in k:
-                response = client.describe_images(ImageIds=[k.get('id')]).get('Reservations')
-                for i in response:
-                    img = i.get('Images')
-                    for j in img:
-                        host['id'] = j.get('ImageId')
-                        host['status'] = j.get('State').get('Name')
-                        data.append(host)
+            response = client.describe_images(ImageIds=[k.get('id')]).get('Images')
+            for i in response:
+                host['id'] = i.get('ImageId')
+                if i.get('State') == 'pending':
+                    host['status'] = 'CREATING'
+                elif i.get('State') == 'available':
+                    host['status'] = 'ACTIVE'
+                elif i.get('State') == 'invalid':
+                    host['status'] = 'FAILED'
+                elif i.get('State') == 'error':
+                    host['status'] = 'FAILED'
+                elif i.get('State') == 'failed':
+                    host['status'] = 'FAILED'
+                elif i.get('State') == 'deregistered':
+                    host['status'] = 'TERMINATED'
+                data.append(host)
         except Exception as err:
-            host['id'] = h.get('id')
-            host['status'] = 'terminated'
+            host['id'] = k.get('id')
+            host['status'] = 'TERMINATED'
             data.append(host)
     return data
 
diff --git a/infrastructure-provisioning/src/general/lib/azure/meta_lib.py b/infrastructure-provisioning/src/general/lib/azure/meta_lib.py
index e795c7789..e43713bc9 100644
--- a/infrastructure-provisioning/src/general/lib/azure/meta_lib.py
+++ b/infrastructure-provisioning/src/general/lib/azure/meta_lib.py
@@ -531,6 +531,32 @@ class AzureMeta:
                 data.append(host)
         return data
 
+    def get_image_statuses(self, resource_group_name, image_name_list):
+        data = []
+        for image_name in image_name_list:
+            image_name = image_name['id']
+            host = {}
+            try:
+                request = self.compute_client.images.get(resource_group_name, image_name)
+                host['id'] = image_name
+                if request.provisioning_state == 'Succeeded':
+                    host['status'] = 'ACTIVE'
+                elif request.provisioning_state == 'Deleting':
+                    host['status'] = 'TERMINATING'
+                elif request.provisioning_state == 'Canceled':
+                    host['status'] = 'FAILED'
+                elif request.provisioning_state == 'Creating':
+                    host['status'] = 'CREATING'
+                elif request.provisioning_state == 'Locked':
+                    host['status'] = 'FAILED'
+                data.append(host)
+            except:
+                host['id'] = image_name
+                host['status'] = 'TERMINATED'
+                data.append(host)
+        return data
+
+
     def get_instance_status(self, resource_group_name, instance_name):
         try:
             request = self.compute_client.virtual_machines.get(resource_group_name, instance_name, expand='instanceView')
diff --git a/infrastructure-provisioning/src/general/lib/gcp/meta_lib.py b/infrastructure-provisioning/src/general/lib/gcp/meta_lib.py
index b8f01e764..cbccd9c02 100644
--- a/infrastructure-provisioning/src/general/lib/gcp/meta_lib.py
+++ b/infrastructure-provisioning/src/general/lib/gcp/meta_lib.py
@@ -681,11 +681,16 @@ class GCPMeta:
                 request = self.service.images().get(project=self.project, image=image)
                 result = request.execute()
                 host['id'] = image
-                host['status'] = result.get('status').lower().replace("terminated", "stopped")
+                if result.get('status') == 'PENDING':
+                    host['status'] = 'CREATING'
+                elif result.get('status') == 'READY':
+                    host['status'] = 'ACTIVE'
+                else:
+                    host['status'] = result.get('status')
                 data.append(host)
             except:
                 host['id'] = image
-                host['status'] = 'terminated'
+                host['status'] = 'TERMINATED'
                 data.append(host)
         return data
 
diff --git a/infrastructure-provisioning/src/general/scripts/azure/common_collect_data.py b/infrastructure-provisioning/src/general/scripts/azure/common_collect_data.py
index 3394f041a..89569200e 100644
--- a/infrastructure-provisioning/src/general/scripts/azure/common_collect_data.py
+++ b/infrastructure-provisioning/src/general/scripts/azure/common_collect_data.py
@@ -47,7 +47,7 @@ if __name__ == "__main__":
         except:
             logging.error("Hosts JSON wasn't been provided")
         try:
-            data_images = AzureMeta().list_images(data.get('image'))
+            data_images = AzureMeta().get_image_statuses(args.resource_group_name, data.get('image'))
             statuses['image'] = data_images
         except:
             logging.error("Images JSON wasn't been provided")


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datalab.apache.org
For additional commands, e-mail: commits-help@datalab.apache.org