mirror of
https://github.com/camptocamp/odoo-cloud-platform.git
synced 2026-06-24 08:47:40 +00:00
Configure storage by platform kind
This commit is contained in:
@@ -38,14 +38,32 @@ class CloudPlatform(models.AbstractModel):
|
|||||||
_name = 'cloud.platform'
|
_name = 'cloud.platform'
|
||||||
|
|
||||||
@api.model
|
@api.model
|
||||||
def _config_by_server_env(self, environment):
|
def _platform_kinds(self):
|
||||||
|
# XXX for backward compatibility, we need this one here, move
|
||||||
|
# it in cloud_platform_exoscale in V11
|
||||||
|
return ['exoscale']
|
||||||
|
|
||||||
|
# XXX for backward compatibility, we need this one here, move
|
||||||
|
# it in cloud_platform_exoscale in V11
|
||||||
|
@api.model
|
||||||
|
def _config_by_server_env_for_exoscale(self):
|
||||||
configs = {
|
configs = {
|
||||||
'prod': PlatformConfig(filestore=FilestoreKind.s3),
|
'prod': PlatformConfig(filestore=FilestoreKind.s3),
|
||||||
'integration': PlatformConfig(filestore=FilestoreKind.s3),
|
'integration': PlatformConfig(filestore=FilestoreKind.s3),
|
||||||
'test': PlatformConfig(filestore=FilestoreKind.db),
|
'test': PlatformConfig(filestore=FilestoreKind.db),
|
||||||
'dev': PlatformConfig(filestore=FilestoreKind.db),
|
'dev': PlatformConfig(filestore=FilestoreKind.db),
|
||||||
}
|
}
|
||||||
return configs.get(environment) or configs['dev']
|
return configs
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def _config_by_server_env(self, platform_kind, environment):
|
||||||
|
configs_getter = getattr(
|
||||||
|
self,
|
||||||
|
'_config_by_server_env_for_%s' % platform_kind,
|
||||||
|
None
|
||||||
|
)
|
||||||
|
configs = configs_getter() if configs_getter else {}
|
||||||
|
return configs.get(environment) or FilestoreKind.db
|
||||||
|
|
||||||
# Due to the addition of the ovh cloud platform
|
# Due to the addition of the ovh cloud platform
|
||||||
# This will be moved to cloud_platform_exoscale on v11
|
# This will be moved to cloud_platform_exoscale on v11
|
||||||
@@ -55,11 +73,11 @@ class CloudPlatform(models.AbstractModel):
|
|||||||
|
|
||||||
@api.model
|
@api.model
|
||||||
def install(self, platform_kind):
|
def install(self, platform_kind):
|
||||||
assert platform_kind in ('ovh', 'exoscale')
|
assert platform_kind in self._platform_kinds()
|
||||||
params = self.env['ir.config_parameter'].sudo()
|
params = self.env['ir.config_parameter'].sudo()
|
||||||
params.set_param('cloud.platform.kind', platform_kind)
|
params.set_param('cloud.platform.kind', platform_kind)
|
||||||
environment = config['running_env']
|
environment = config['running_env']
|
||||||
configs = self._config_by_server_env(environment)
|
configs = self._config_by_server_env(platform_kind, environment)
|
||||||
params.set_param('ir_attachment.location', configs.filestore)
|
params.set_param('ir_attachment.location', configs.filestore)
|
||||||
self.check()
|
self.check()
|
||||||
if configs.filestore in [FilestoreKind.swift, FilestoreKind.s3]:
|
if configs.filestore in [FilestoreKind.swift, FilestoreKind.s3]:
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ from odoo import api, models
|
|||||||
_logger = logging.getLogger(__name__)
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from ...cloud_platform.models.cloud_platform import FilestoreKind
|
from odoo.addons.cloud_platform.models.cloud_platform import FilestoreKind
|
||||||
from ...cloud_platform.models.cloud_platform import PlatformConfig
|
from odoo.addons.cloud_platform.models.cloud_platform import PlatformConfig
|
||||||
except ImportError:
|
except ImportError:
|
||||||
FilestoreKind = None
|
FilestoreKind = None
|
||||||
PlatformConfig = None
|
PlatformConfig = None
|
||||||
@@ -21,14 +21,20 @@ class CloudPlatform(models.AbstractModel):
|
|||||||
_inherit = 'cloud.platform'
|
_inherit = 'cloud.platform'
|
||||||
|
|
||||||
@api.model
|
@api.model
|
||||||
def _config_by_server_env(self, environment):
|
def _platform_kinds(self):
|
||||||
|
kinds = super(CloudPlatform, self)._platform_kinds()
|
||||||
|
kinds.append('ovh')
|
||||||
|
return kinds
|
||||||
|
|
||||||
|
@api.model
|
||||||
|
def _config_by_server_env_for_ovh(self):
|
||||||
configs = {
|
configs = {
|
||||||
'prod': PlatformConfig(filestore=FilestoreKind.swift),
|
'prod': PlatformConfig(filestore=FilestoreKind.swift),
|
||||||
'integration': PlatformConfig(filestore=FilestoreKind.swift),
|
'integration': PlatformConfig(filestore=FilestoreKind.swift),
|
||||||
'test': PlatformConfig(filestore=FilestoreKind.db),
|
'test': PlatformConfig(filestore=FilestoreKind.db),
|
||||||
'dev': PlatformConfig(filestore=FilestoreKind.db),
|
'dev': PlatformConfig(filestore=FilestoreKind.db),
|
||||||
}
|
}
|
||||||
return configs.get(environment) or configs['dev']
|
return configs
|
||||||
|
|
||||||
@api.model
|
@api.model
|
||||||
def install_ovh(self):
|
def install_ovh(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user