guest.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  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. 'id': FilterFieldType.INT.value,
  39. 'uuid': FilterFieldType.STR.value,
  40. 'name': FilterFieldType.STR.value,
  41. 'remark': FilterFieldType.STR.value,
  42. 'on_host': FilterFieldType.STR.value,
  43. 'ip': FilterFieldType.STR.value
  44. }
  45. @staticmethod
  46. def get_allow_update_keywords():
  47. return ['remark', 'cpu', 'memory', 'network', 'manage_network', 'vnc_password']
  48. @staticmethod
  49. def get_allow_content_search_keywords():
  50. return ['name', 'remark', 'on_host', 'ip']
  51. @staticmethod
  52. def emit_instruction(message):
  53. db.r.publish(app.config['instruction_channel'], message=message)
  54. class Disk(ORM):
  55. _table_name = 'disk'
  56. _primary_key = 'id'
  57. def __init__(self):
  58. super(Disk, self).__init__()
  59. self.id = 0
  60. self.uuid = None
  61. self.label = None
  62. self.path = None
  63. self.size = None
  64. self.sequence = None
  65. self.state = DiskState.pending.value
  66. self.format = 'qcow2'
  67. self.guest_uuid = None
  68. @staticmethod
  69. def get_filter_keywords():
  70. return {
  71. 'id': FilterFieldType.INT.value,
  72. 'uuid': FilterFieldType.STR.value,
  73. 'label': FilterFieldType.STR.value,
  74. 'size': FilterFieldType.INT.value,
  75. 'state': FilterFieldType.INT.value,
  76. 'guest_uuid': FilterFieldType.STR.value
  77. }
  78. @staticmethod
  79. def get_allow_update_keywords():
  80. return []
  81. @staticmethod
  82. def get_allow_content_search_keywords():
  83. return ['label', 'size']
  84. class GuestMigrateInfo(ORM):
  85. _table_name = 'guest_migrate_info'
  86. _primary_key = 'id'
  87. def __init__(self):
  88. super(GuestMigrateInfo, self).__init__()
  89. self.id = 0
  90. self.uuid = None
  91. self.type = None
  92. self.time_elapsed = None
  93. self.time_remaining = None
  94. self.data_total = None
  95. self.data_processed = None
  96. self.data_remaining = None
  97. self.mem_total = None
  98. self.mem_processed = None
  99. self.mem_remaining = None
  100. self.file_total = None
  101. self.file_processed = None
  102. self.file_remaining = None
  103. @staticmethod
  104. def get_filter_keywords():
  105. return {
  106. 'id': FilterFieldType.INT.value,
  107. 'uuid': FilterFieldType.STR.value
  108. }
  109. @staticmethod
  110. def get_allow_update_keywords():
  111. return []
  112. @staticmethod
  113. def get_allow_content_search_keywords():
  114. return []