| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- from lib.compose.object import ComposeManifest
- from lib.compose.services import ClimcService, new_cloudid_service, new_scheduler_service, WebService, \
- new_apigateway_service, \
- new_webconsole_service, new_yunionconf_service, new_monitor_service, InfluxdbService, EtcdService, \
- new_glance_service, KubeServerService, new_scheduledtask_service, new_logger_service, new_notify_service, \
- new_cloudmon_service, new_esxi_agent_service
- from lib.compose.services import new_keystone_service, new_region_service, new_ansibleserver_service
- from lib.compose.services import MysqlService
- from lib.compose.services.dhcp_relay import DHCPRelayService
- from lib.compose.services.baremetal import BaremetalService
- from lib.compose.services.host_deployer import HostDeployerService
- from lib.compose import options
- def new_cmp_manifest(version):
- manifest = ComposeManifest()
- mysql = MysqlService()
- manifest.add_service(mysql)
- etcd = EtcdService()
- keystone = new_keystone_service(version, mysql, etcd)
- hostdeployer = HostDeployerService(version, keystone)
- logger = new_logger_service(version, mysql, keystone)
- influxdb = InfluxdbService(keystone)
- region = new_region_service(version, mysql, keystone)
- scheduler = new_scheduler_service(version, mysql, region)
- scheduledtask = new_scheduledtask_service(version, mysql, region)
- glance = new_glance_service(version, mysql, keystone, hostdeployer)
- esxiagent = new_esxi_agent_service(version, keystone, region)
- kubeServer = KubeServerService(version, mysql, keystone)
- ansibleserver = new_ansibleserver_service(version, mysql, keystone)
- climc = ClimcService(version, keystone, region)
- apigateway = new_apigateway_service(version, keystone, region)
- webconsole = new_webconsole_service(version, mysql, keystone)
- yunionconf = new_yunionconf_service(version, mysql, keystone)
- monitor = new_monitor_service(version, mysql, region)
- cloudmon = new_cloudmon_service(version, keystone)
- notify = new_notify_service(version, mysql, keystone)
- cloudid = new_cloudid_service(version, mysql, region)
- web = WebService(version, apigateway, webconsole)
- for svc in [
- etcd,
- keystone,
- hostdeployer,
- logger,
- notify,
- influxdb,
- region,
- scheduler,
- scheduledtask,
- glance,
- kubeServer,
- ansibleserver,
- climc,
- yunionconf,
- apigateway,
- webconsole,
- monitor,
- cloudmon,
- cloudid,
- esxiagent,
- web,
- ]:
- init_svc = svc.get_init_service()
- if init_svc:
- manifest.add_service(init_svc)
- manifest.add_service(svc)
- post_init_svc = svc.get_post_init_service()
- if post_init_svc:
- manifest.add_service(post_init_svc)
- return manifest
- def new_baremetal_manifest(version):
- options.set_has_public_ip(True)
- manifest = ComposeManifest()
- mysql = MysqlService()
- manifest.add_service(mysql)
- etcd = EtcdService()
- keystone = new_keystone_service(version, mysql, etcd)
- hostdeployer = HostDeployerService(version, keystone)
- logger = new_logger_service(version, mysql, keystone)
- influxdb = InfluxdbService(keystone)
- region = new_region_service(version, mysql, keystone)
- dhcp_relay = DHCPRelayService(version)
- baremetal = BaremetalService(version, keystone, region, dhcp_relay)
- scheduler = new_scheduler_service(version, mysql, region)
- scheduledtask = new_scheduledtask_service(version, mysql, region)
- glance = new_glance_service(version, mysql, keystone, hostdeployer)
- ansibleserver = new_ansibleserver_service(version, mysql, keystone)
- climc = ClimcService(version, keystone, region)
- apigateway = new_apigateway_service(version, keystone, region)
- webconsole = new_webconsole_service(version, mysql, keystone)
- yunionconf = new_yunionconf_service(version, mysql, keystone)
- monitor = new_monitor_service(version, mysql, region)
- # cloudmon = new_cloudmon_service(version, keystone)
- notify = new_notify_service(version, mysql, keystone)
- web = WebService(version, apigateway, webconsole)
- for svc in [
- etcd,
- keystone,
- hostdeployer,
- logger,
- notify,
- influxdb,
- region,
- scheduler,
- scheduledtask,
- glance,
- baremetal,
- dhcp_relay,
- ansibleserver,
- climc,
- yunionconf,
- apigateway,
- webconsole,
- monitor,
- # cloudmon,
- web,
- ]:
- init_svc = svc.get_init_service()
- if init_svc:
- manifest.add_service(init_svc)
- manifest.add_service(svc)
- post_init_svc = svc.get_post_init_service()
- if post_init_svc:
- manifest.add_service(post_init_svc)
- return manifest
- PRODUCT_VERSION_CMP = "cmp"
- PRODUCT_VERSION_BAREMETAL = "baremetal"
- PRODUCT_VERSION_FACTORY = {
- PRODUCT_VERSION_CMP: new_cmp_manifest,
- PRODUCT_VERSION_BAREMETAL: new_baremetal_manifest,
- }
- def new_manifest(version, product_version=PRODUCT_VERSION_CMP):
- f = PRODUCT_VERSION_FACTORY.get(product_version.lower(), None)
- if not f:
- raise Exception(f'not found product_version {product_version}')
- return f(version)
|