Browse Source

加入 Guest 不可用判断

James Iter 9 years ago
parent
commit
b885e3f127
2 changed files with 19 additions and 0 deletions
  1. 4 0
      state_code.py
  2. 15 0
      views/guest.py

+ 4 - 0
state_code.py

@@ -53,6 +53,10 @@ own_state_branch = {
         'code': '41258',
         'zh-cn': u'欲挂载的磁盘已被别的实例使用'
     },
+    '41259': {
+        'code': '41259',
+        'zh-cn': u'Guest 暂时不可用'
+    },
     '50050': {
         'code': '50050',
         'zh-cn': u'MySQL 链接或执行出错'

+ 15 - 0
views/guest.py

@@ -19,6 +19,7 @@ from models import Utils
 from models import Guest
 from models import OSTemplate
 from models import GuestXML
+from models import status
 
 
 __author__ = 'James Iter'
@@ -394,6 +395,11 @@ def r_attach_disk(uuid, disk_uuid):
             ret['state'] = ji.Common.exchange_state(41258)
             return ret
 
+        # 判断 Guest 是否处于可用状态
+        if guest.status == status.GuestState.no_state.value:
+            ret['state'] = ji.Common.exchange_state(41259)
+            return ret
+
         # 取出该 guest 已挂载的磁盘,来做出决定,确定该磁盘的序列
         guest_disk.guest_uuid = guest.uuid
         disks, count = guest_disk.get_by_filter(filter_str='guest_uuid:in:' + guest.uuid)
@@ -450,6 +456,15 @@ def r_detach_disk(disk_uuid):
         guest_disk.guest_uuid = ''
         guest_disk.sequence = -1
 
+        guest = Guest()
+        guest.uuid = guest_disk.guest_uuid
+        guest.get_by('uuid')
+
+        # 判断 Guest 是否处于可用状态
+        if guest.status == status.GuestState.no_state.value:
+            ret['state'] = ji.Common.exchange_state(41259)
+            return ret
+
         config = Config()
         config.id = 1
         config.get()