__init__.py 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. from lib.compose.object import ComposeManifest
  2. from lib.compose.services import ClimcService, new_cloudid_service, new_scheduler_service, WebService, \
  3. new_apigateway_service, \
  4. new_webconsole_service, new_yunionconf_service, new_monitor_service, InfluxdbService, EtcdService, \
  5. new_glance_service, KubeServerService, new_scheduledtask_service, new_logger_service, new_notify_service, \
  6. new_cloudmon_service, new_esxi_agent_service
  7. from lib.compose.services import new_keystone_service, new_region_service, new_ansibleserver_service
  8. from lib.compose.services import MysqlService
  9. from lib.compose.services.dhcp_relay import DHCPRelayService
  10. from lib.compose.services.baremetal import BaremetalService
  11. from lib.compose.services.host_deployer import HostDeployerService
  12. from lib.compose import options
  13. def new_cmp_manifest(version):
  14. manifest = ComposeManifest()
  15. mysql = MysqlService()
  16. manifest.add_service(mysql)
  17. etcd = EtcdService()
  18. keystone = new_keystone_service(version, mysql, etcd)
  19. hostdeployer = HostDeployerService(version, keystone)
  20. logger = new_logger_service(version, mysql, keystone)
  21. influxdb = InfluxdbService(keystone)
  22. region = new_region_service(version, mysql, keystone)
  23. scheduler = new_scheduler_service(version, mysql, region)
  24. scheduledtask = new_scheduledtask_service(version, mysql, region)
  25. glance = new_glance_service(version, mysql, keystone, hostdeployer)
  26. esxiagent = new_esxi_agent_service(version, keystone, region)
  27. kubeServer = KubeServerService(version, mysql, keystone)
  28. ansibleserver = new_ansibleserver_service(version, mysql, keystone)
  29. climc = ClimcService(version, keystone, region)
  30. apigateway = new_apigateway_service(version, keystone, region)
  31. webconsole = new_webconsole_service(version, mysql, keystone)
  32. yunionconf = new_yunionconf_service(version, mysql, keystone)
  33. monitor = new_monitor_service(version, mysql, region)
  34. cloudmon = new_cloudmon_service(version, keystone)
  35. notify = new_notify_service(version, mysql, keystone)
  36. cloudid = new_cloudid_service(version, mysql, region)
  37. web = WebService(version, apigateway, webconsole)
  38. for svc in [
  39. etcd,
  40. keystone,
  41. hostdeployer,
  42. logger,
  43. notify,
  44. influxdb,
  45. region,
  46. scheduler,
  47. scheduledtask,
  48. glance,
  49. kubeServer,
  50. ansibleserver,
  51. climc,
  52. yunionconf,
  53. apigateway,
  54. webconsole,
  55. monitor,
  56. cloudmon,
  57. cloudid,
  58. esxiagent,
  59. web,
  60. ]:
  61. init_svc = svc.get_init_service()
  62. if init_svc:
  63. manifest.add_service(init_svc)
  64. manifest.add_service(svc)
  65. post_init_svc = svc.get_post_init_service()
  66. if post_init_svc:
  67. manifest.add_service(post_init_svc)
  68. return manifest
  69. def new_baremetal_manifest(version):
  70. options.set_has_public_ip(True)
  71. manifest = ComposeManifest()
  72. mysql = MysqlService()
  73. manifest.add_service(mysql)
  74. etcd = EtcdService()
  75. keystone = new_keystone_service(version, mysql, etcd)
  76. hostdeployer = HostDeployerService(version, keystone)
  77. logger = new_logger_service(version, mysql, keystone)
  78. influxdb = InfluxdbService(keystone)
  79. region = new_region_service(version, mysql, keystone)
  80. dhcp_relay = DHCPRelayService(version)
  81. baremetal = BaremetalService(version, keystone, region, dhcp_relay)
  82. scheduler = new_scheduler_service(version, mysql, region)
  83. scheduledtask = new_scheduledtask_service(version, mysql, region)
  84. glance = new_glance_service(version, mysql, keystone, hostdeployer)
  85. ansibleserver = new_ansibleserver_service(version, mysql, keystone)
  86. climc = ClimcService(version, keystone, region)
  87. apigateway = new_apigateway_service(version, keystone, region)
  88. webconsole = new_webconsole_service(version, mysql, keystone)
  89. yunionconf = new_yunionconf_service(version, mysql, keystone)
  90. monitor = new_monitor_service(version, mysql, region)
  91. # cloudmon = new_cloudmon_service(version, keystone)
  92. notify = new_notify_service(version, mysql, keystone)
  93. web = WebService(version, apigateway, webconsole)
  94. for svc in [
  95. etcd,
  96. keystone,
  97. hostdeployer,
  98. logger,
  99. notify,
  100. influxdb,
  101. region,
  102. scheduler,
  103. scheduledtask,
  104. glance,
  105. baremetal,
  106. dhcp_relay,
  107. ansibleserver,
  108. climc,
  109. yunionconf,
  110. apigateway,
  111. webconsole,
  112. monitor,
  113. # cloudmon,
  114. web,
  115. ]:
  116. init_svc = svc.get_init_service()
  117. if init_svc:
  118. manifest.add_service(init_svc)
  119. manifest.add_service(svc)
  120. post_init_svc = svc.get_post_init_service()
  121. if post_init_svc:
  122. manifest.add_service(post_init_svc)
  123. return manifest
  124. PRODUCT_VERSION_CMP = "cmp"
  125. PRODUCT_VERSION_BAREMETAL = "baremetal"
  126. PRODUCT_VERSION_FACTORY = {
  127. PRODUCT_VERSION_CMP: new_cmp_manifest,
  128. PRODUCT_VERSION_BAREMETAL: new_baremetal_manifest,
  129. }
  130. def new_manifest(version, product_version=PRODUCT_VERSION_CMP):
  131. f = PRODUCT_VERSION_FACTORY.get(product_version.lower(), None)
  132. if not f:
  133. raise Exception(f'not found product_version {product_version}')
  134. return f(version)