Просмотр исходного кода

整合创建虚拟机的启动作业

James Iter 9 лет назад
Родитель
Сommit
8d91849256
3 измененных файлов с 14 добавлено и 10 удалено
  1. 12 9
      api/guest.py
  2. 1 0
      models/event_processor.py
  3. 1 1
      models/utils.py

+ 12 - 9
api/guest.py

@@ -77,9 +77,12 @@ def r_create():
             return ret
             return ret
 
 
         os_template.get()
         os_template.get()
+        # 重置密码的 boot job id 固定为 1
+        boot_jobs_id = [1, os_template.boot_job_id]
 
 
-        operate_rules, operate_rules_count = OperateRule.get_by_filter(
-            filter_str='boot_job_id:in:' + os_template.boot_job_id.__str__())
+        boot_jobs, boot_jobs_count = OperateRule.get_by_filter(
+            filter_str='boot_job_id:in:' +
+                       ','.join(['{0}'.format(boot_job_id) for boot_job_id in boot_jobs_id]).__str__())
 
 
         if db.r.scard(app.config['ip_available_set']) < 1:
         if db.r.scard(app.config['ip_available_set']) < 1:
             ret['state'] = ji.Common.exchange_state(50350)
             ret['state'] = ji.Common.exchange_state(50350)
@@ -128,9 +131,9 @@ def r_create():
             guest.create()
             guest.create()
 
 
             # 替换占位符为有效内容
             # 替换占位符为有效内容
-            _operate_rules = copy.deepcopy(operate_rules)
-            for k, v in enumerate(_operate_rules):
-                _operate_rules[k]['content'] = v['content'].replace('{IP}', guest.ip).\
+            _boot_jobs = copy.deepcopy(boot_jobs)
+            for k, v in enumerate(_boot_jobs):
+                _boot_jobs[k]['content'] = v['content'].replace('{IP}', guest.ip).\
                     replace('{HOSTNAME}', guest.name). \
                     replace('{HOSTNAME}', guest.name). \
                     replace('{PASSWORD}', guest.password). \
                     replace('{PASSWORD}', guest.password). \
                     replace('{NETMASK}', config.netmask).\
                     replace('{NETMASK}', config.netmask).\
@@ -138,7 +141,7 @@ def r_create():
                     replace('{DNS1}', config.dns1).\
                     replace('{DNS1}', config.dns1).\
                     replace('{DNS2}', config.dns2)
                     replace('{DNS2}', config.dns2)
 
 
-                _operate_rules[k]['command'] = v['command'].replace('{IP}', guest.ip). \
+                _boot_jobs[k]['command'] = v['command'].replace('{IP}', guest.ip). \
                     replace('{HOSTNAME}', guest.name). \
                     replace('{HOSTNAME}', guest.name). \
                     replace('{PASSWORD}', guest.password). \
                     replace('{PASSWORD}', guest.password). \
                     replace('{NETMASK}', config.netmask). \
                     replace('{NETMASK}', config.netmask). \
@@ -153,9 +156,9 @@ def r_create():
                 'glusterfs_volume': config.glusterfs_volume,
                 'glusterfs_volume': config.glusterfs_volume,
                 'template_path': os_template.path,
                 'template_path': os_template.path,
                 'disk': disk.__dict__,
                 'disk': disk.__dict__,
-                'writes': _operate_rules,
-                'password': guest.password,
-                'xml': guest_xml.get_domain()
+                'xml': guest_xml.get_domain(),
+                'boot_jobs': _boot_jobs,
+                'passback_parameters': {'boot_jobs_id': boot_jobs_id}
             }
             }
             db.r.rpush(app.config['downstream_queue'], json.dumps(create_vm_msg, ensure_ascii=False))
             db.r.rpush(app.config['downstream_queue'], json.dumps(create_vm_msg, ensure_ascii=False))
 
 

+ 1 - 0
models/event_processor.py

@@ -110,6 +110,7 @@ class EventProcessor(object):
 
 
         if action == 'create_guest':
         if action == 'create_guest':
             if state == ResponseState.success.value:
             if state == ResponseState.success.value:
+                # 系统盘的 UUID 与其 Guest 的 UUID 相同
                 cls.disk.uuid = uuid
                 cls.disk.uuid = uuid
                 cls.disk.get_by('uuid')
                 cls.disk.get_by('uuid')
                 cls.disk.guest_uuid = uuid
                 cls.disk.guest_uuid = uuid

+ 1 - 1
models/utils.py

@@ -196,7 +196,7 @@ def utility_processor():
             desc = '迁移中'
             desc = '迁移中'
 
 
         elif status == GuestState.dirty.value:
         elif status == GuestState.dirty.value:
-            color = 'FCFF07'
+            color = 'FF0707'
             icon = 'glyph-icon icon-remove'
             icon = 'glyph-icon icon-remove'
             desc = '创建失败,待清理'
             desc = '创建失败,待清理'