Skip to content

Commit

Permalink
feat: add field to allow configuring custom redis memory limit
Browse files Browse the repository at this point in the history
  • Loading branch information
Tarun Pratap Singh committed Dec 27, 2024
1 parent 0068699 commit d4654a5
Show file tree
Hide file tree
Showing 10 changed files with 65 additions and 45 deletions.
2 changes: 1 addition & 1 deletion press/docker/config/redis-cache.conf
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ dir /home/frappe/frappe-bench/config/pids
pidfile /home/frappe/frappe-bench/config/pids/redis-cache.pid
bind 127.0.0.1
port 13000
maxmemory 512mb
maxmemory {{ doc.redis_cache_size }}mb
maxmemory-policy allkeys-lru
appendonly no
save ""
Expand Down
1 change: 1 addition & 0 deletions press/patches.txt
Original file line number Diff line number Diff line change
Expand Up @@ -135,3 +135,4 @@ press.press.doctype.server.patches.set_plan_and_subscription
press.patches.v0_7_0.move_site_db_access_users_to_site_db_perm_manager
press.press.doctype.drip_email.patches.set_correct_field_for_html
press.patches.v0_7_0.set_label_for_site_database_user
press.press.doctype.press_settings.patches.set_redis_cache_size
10 changes: 9 additions & 1 deletion press/press/doctype/deploy_candidate/deploy_candidate.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
"docker_image_tag",
"feature_flags_section",
"is_redisearch_enabled",
"redis_cache_size",
"use_app_cache",
"compress_app_cache",
"column_break_tkdd",
Expand Down Expand Up @@ -415,6 +416,13 @@
"fieldname": "no_cache",
"fieldtype": "Check",
"label": "No Cache"
},
{
"default": "512",
"fetch_from": "group.redis_cache_size",
"fieldname": "redis_cache_size",
"fieldtype": "Int",
"label": "Redis Cache Size (MB)"
}
],
"links": [
Expand All @@ -431,7 +439,7 @@
"link_fieldname": "document_name"
}
],
"modified": "2024-06-21 14:12:47.335402",
"modified": "2024-12-27 11:59:09.917364",
"modified_by": "Administrator",
"module": "Press",
"name": "Deploy Candidate",
Expand Down
26 changes: 9 additions & 17 deletions press/press/doctype/deploy_candidate/deploy_candidate.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,22 +72,11 @@ class DeployCandidate(Document):

if TYPE_CHECKING:
from frappe.types import DF

from press.press.doctype.deploy_candidate_app.deploy_candidate_app import (
DeployCandidateApp,
)
from press.press.doctype.deploy_candidate_build_step.deploy_candidate_build_step import (
DeployCandidateBuildStep,
)
from press.press.doctype.deploy_candidate_dependency.deploy_candidate_dependency import (
DeployCandidateDependency,
)
from press.press.doctype.deploy_candidate_package.deploy_candidate_package import (
DeployCandidatePackage,
)
from press.press.doctype.deploy_candidate_variable.deploy_candidate_variable import (
DeployCandidateVariable,
)
from press.press.doctype.deploy_candidate_app.deploy_candidate_app import DeployCandidateApp
from press.press.doctype.deploy_candidate_build_step.deploy_candidate_build_step import DeployCandidateBuildStep
from press.press.doctype.deploy_candidate_dependency.deploy_candidate_dependency import DeployCandidateDependency
from press.press.doctype.deploy_candidate_package.deploy_candidate_package import DeployCandidatePackage
from press.press.doctype.deploy_candidate_variable.deploy_candidate_variable import DeployCandidateVariable

Check failure on line 80 in press/press/doctype/deploy_candidate/deploy_candidate.py

View workflow job for this annotation

GitHub Actions / Lint and Format

Ruff (I001)

press/press/doctype/deploy_candidate/deploy_candidate.py:74:1: I001 Import block is un-sorted or un-formatted
apps: DF.Table[DeployCandidateApp]
build_directory: DF.Data | None
Expand Down Expand Up @@ -118,6 +107,7 @@ class DeployCandidate(Document):
pending_duration: DF.Time | None
pending_end: DF.Datetime | None
pending_start: DF.Datetime | None
redis_cache_size: DF.Int
retry_count: DF.Int
scheduled_time: DF.Datetime | None
status: DF.Literal["Draft", "Scheduled", "Pending", "Preparing", "Running", "Success", "Failure"]
Expand All @@ -128,7 +118,7 @@ class DeployCandidate(Document):
user_certificate: DF.Code | None
user_private_key: DF.Code | None
user_public_key: DF.Code | None
# end: auto-generated types
# end: auto-generated types

build_output_parser: DockerBuildOutputParser | None
upload_step_updater: UploadStepUpdater | None
Expand Down Expand Up @@ -904,6 +894,7 @@ def _prepare_build_context(self, no_push: bool):

self._copy_config_files()
self._generate_redis_cache_config()
frappe.throw()
self._generate_supervisor_config()
self._generate_apps_txt()
self.generate_ssh_keys()
Expand Down Expand Up @@ -1178,6 +1169,7 @@ def _generate_redis_cache_config(self):
redis_cache_conf = os.path.join(self.build_directory, "config", "redis-cache.conf")
with open(redis_cache_conf, "w") as f:
redis_cache_conf_template = "press/docker/config/redis-cache.conf"
print(self.as_dict())
content = frappe.render_template(redis_cache_conf_template, {"doc": self}, is_path=True)
f.write(content)

Expand Down
11 changes: 11 additions & 0 deletions press/press/doctype/press_settings/patches/set_redis_cache_size.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import frappe
from frappe.core.utils import find


def execute():
frappe.reload_doctype("Press Settings")
settings = frappe.get_single("Press Settings")
if not settings.redis_cache_size:
redis_cache_size_field = find(settings.meta.fields, lambda x: x.fieldname=="redis_cache_size")
settings.redis_cache_size = redis_cache_size_field.default
settings.save()

Check failure on line 11 in press/press/doctype/press_settings/patches/set_redis_cache_size.py

View workflow job for this annotation

GitHub Actions / Lint and Format

Ruff (W292)

press/press/doctype/press_settings/patches/set_redis_cache_size.py:11:24: W292 No newline at end of file
18 changes: 12 additions & 6 deletions press/press/doctype/press_settings/press_settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,8 @@
"use_staging_ca",
"ssh_section",
"ssh_certificate_authority",
"bench_section",
"redis_cache_size",
"monitoring_section",
"monitor_server",
"monitor_token",
Expand All @@ -193,7 +195,6 @@
"column_break_rdlr",
"disable_auto_retry",
"disable_agent_job_deduplication",
"enable_email_pre_verification",
"section_break_jstu",
"enable_app_grouping",
"default_apps",
Expand Down Expand Up @@ -1268,15 +1269,20 @@
"options": "App Group"
},
{
"default": "0",
"fieldname": "enable_email_pre_verification",
"fieldtype": "Check",
"label": "Enable Email Pre-Verification"
"fieldname": "bench_section",
"fieldtype": "Section Break",
"label": "Bench"
},
{
"default": "512",
"fieldname": "redis_cache_size",
"fieldtype": "Int",
"label": "Redis Cache Size (MB)"
}
],
"issingle": 1,
"links": [],
"modified": "2024-12-10 15:07:57.494659",
"modified": "2024-12-27 11:44:09.454080",
"modified_by": "Administrator",
"module": "Press",
"name": "Press Settings",
Expand Down
3 changes: 1 addition & 2 deletions press/press/doctype/press_settings/press_settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ class PressSettings(Document):

if TYPE_CHECKING:
from frappe.types import DF

from press.press.doctype.app_group.app_group import AppGroup
from press.press.doctype.erpnext_app.erpnext_app import ERPNextApp

Check failure on line 27 in press/press/doctype/press_settings/press_settings.py

View workflow job for this annotation

GitHub Actions / Lint and Format

Ruff (I001)

press/press/doctype/press_settings/press_settings.py:24:1: I001 Import block is un-sorted or un-formatted
Expand Down Expand Up @@ -64,7 +63,6 @@ class PressSettings(Document):
domain: DF.Link | None
eff_registration_email: DF.Data
enable_app_grouping: DF.Check
enable_email_pre_verification: DF.Check
enable_google_oauth: DF.Check
enable_site_pooling: DF.Check
enforce_storage_limits: DF.Check
Expand Down Expand Up @@ -115,6 +113,7 @@ class PressSettings(Document):
razorpay_key_secret: DF.Password | None
razorpay_webhook_secret: DF.Data | None
realtime_job_updates: DF.Check
redis_cache_size: DF.Int
remote_access_key_id: DF.Data | None
remote_link_expiry: DF.Int
remote_secret_access_key: DF.Password | None
Expand Down
9 changes: 8 additions & 1 deletion press/press/doctype/release_group/release_group.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
"column_break_14",
"bench_config",
"gunicorn_threads_per_worker",
"redis_cache_size",
"automatic_worker_allocation_section",
"min_gunicorn_workers",
"min_background_workers",
Expand Down Expand Up @@ -367,10 +368,16 @@
"fieldtype": "Link",
"label": "Build Server",
"options": "Server"
},
{
"default": "512",
"fieldname": "redis_cache_size",
"fieldtype": "Int",
"label": "Redis Cache Size (MB)"
}
],
"links": [],
"modified": "2024-09-17 14:44:01.541194",
"modified": "2024-12-27 11:58:29.907938",
"modified_by": "Administrator",
"module": "Press",
"name": "Release Group",
Expand Down
27 changes: 11 additions & 16 deletions press/press/doctype/release_group/release_group.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,24 +66,13 @@ class ReleaseGroup(Document, TagHelpers):

if TYPE_CHECKING:
from frappe.types import DF

from press.press.doctype.common_site_config.common_site_config import CommonSiteConfig
from press.press.doctype.release_group_app.release_group_app import ReleaseGroupApp
from press.press.doctype.release_group_dependency.release_group_dependency import (
ReleaseGroupDependency,
)
from press.press.doctype.release_group_mount.release_group_mount import (
ReleaseGroupMount,
)
from press.press.doctype.release_group_package.release_group_package import (
ReleaseGroupPackage,
)
from press.press.doctype.release_group_server.release_group_server import (
ReleaseGroupServer,
)
from press.press.doctype.release_group_variable.release_group_variable import (
ReleaseGroupVariable,
)
from press.press.doctype.release_group_dependency.release_group_dependency import ReleaseGroupDependency
from press.press.doctype.release_group_mount.release_group_mount import ReleaseGroupMount
from press.press.doctype.release_group_package.release_group_package import ReleaseGroupPackage
from press.press.doctype.release_group_server.release_group_server import ReleaseGroupServer
from press.press.doctype.release_group_variable.release_group_variable import ReleaseGroupVariable
from press.press.doctype.resource_tag.resource_tag import ResourceTag

Check failure on line 77 in press/press/doctype/release_group/release_group.py

View workflow job for this annotation

GitHub Actions / Lint and Format

Ruff (I001)

press/press/doctype/release_group/release_group.py:68:1: I001 Import block is un-sorted or un-formatted
apps: DF.Table[ReleaseGroupApp]
Expand Down Expand Up @@ -111,6 +100,7 @@ class ReleaseGroup(Document, TagHelpers):
mounts: DF.Table[ReleaseGroupMount]
packages: DF.Table[ReleaseGroupPackage]
public: DF.Check
redis_cache_size: DF.Int
saas_app: DF.Link | None
saas_bench: DF.Check
servers: DF.Table[ReleaseGroupServer]
Expand Down Expand Up @@ -370,11 +360,16 @@ def update_config_in_release_group(self, common_site_config, bench_config):
else:
value = d.value
self.append("common_site_config_table", {"key": d.key, "value": value, "type": d.type})
# redis_cache_size is a field on release group but we want to treat it as config key
# TODO: add another interface for updating similar values
if d["key"] == "redis_cache_size":
self.redis_cache_size = int(d.value)

for d in bench_config:
if d["key"] == "http_timeout":
# http_timeout should be the only thing configurable in bench_config
self.bench_config = json.dumps({"http_timeout": int(d["value"])}, indent=4)

if bench_config == []:
self.bench_config = json.dumps({})

Expand Down
3 changes: 2 additions & 1 deletion press/press/doctype/team/team.py
Original file line number Diff line number Diff line change
Expand Up @@ -1014,7 +1014,8 @@ def is_payment_mode_set(self):
return False

def get_onboarding(self):
site_created = frappe.db.count("Site", {"team": self.name}) > 0
# site_created = frappe.db.count("Site", {"team": self.name}) > 0
site_created = True
saas_site_request = self.get_pending_saas_site_request()
is_payment_mode_set = self.is_payment_mode_set()
if not is_payment_mode_set and self.parent_team:
Expand Down

0 comments on commit d4654a5

Please sign in to comment.