guest.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import jimit as ji
  4. from filter import FilterFieldType
  5. from orm import ORM
  6. from status import GuestState, DiskState
  7. from database import Database as db
  8. from initialize import app
  9. __author__ = 'James Iter'
  10. __date__ = '2017/3/22'
  11. __contact__ = 'james.iter.cn@gmail.com'
  12. __copyright__ = '(c) 2017 by James Iter.'
  13. class Guest(ORM):
  14. _table_name = 'guest'
  15. _primary_key = 'id'
  16. def __init__(self):
  17. super(Guest, self).__init__()
  18. self.id = 0
  19. self.uuid = None
  20. self.name = None
  21. self.password = None
  22. self.remark = ''
  23. self.os_template_id = None
  24. self.create_time = ji.Common.tus()
  25. self.status = GuestState.no_state.value
  26. self.on_host = ''
  27. self.cpu = None
  28. self.memory = None
  29. self.ip = None
  30. self.network = None
  31. self.manage_network = None
  32. self.vnc_port = None
  33. self.vnc_password = None
  34. self.xml = None
  35. @staticmethod
  36. def get_filter_keywords():
  37. return {
  38. 'name': FilterFieldType.STR.value,
  39. 'remark': FilterFieldType.STR.value,
  40. 'on_host': FilterFieldType.STR.value,
  41. 'ip': FilterFieldType.STR.value
  42. }
  43. @staticmethod
  44. def get_allow_update_keywords():
  45. return ['remark', 'cpu', 'memory', 'network', 'manage_network', 'vnc_password']
  46. @staticmethod
  47. def get_allow_content_search_keywords():
  48. return ['name', 'remark', 'on_host', 'ip']
  49. @staticmethod
  50. def emit_instruction(message):
  51. db.r.publish(app.config['instruction_channel'], message=message)
  52. class GuestDisk(ORM):
  53. _table_name = 'guest_disk'
  54. _primary_key = 'id'
  55. def __init__(self):
  56. super(GuestDisk, self).__init__()
  57. self.id = 0
  58. self.uuid = None
  59. self.label = None
  60. self.size = None
  61. self.sequence = None
  62. self.state = DiskState.pending.value
  63. self.format = 'qcow2'
  64. self.guest_uuid = None
  65. @staticmethod
  66. def get_filter_keywords():
  67. return {
  68. 'uuid': FilterFieldType.STR.value,
  69. 'label': FilterFieldType.STR.value,
  70. 'size': FilterFieldType.INT.value,
  71. 'state': FilterFieldType.INT.value,
  72. 'guest_uuid': FilterFieldType.STR.value
  73. }
  74. @staticmethod
  75. def get_allow_update_keywords():
  76. return []
  77. @staticmethod
  78. def get_allow_content_search_keywords():
  79. return ['label', 'size']