Skip to content

Commit

Permalink
Add --snapshot-from option for sync-node init
Browse files Browse the repository at this point in the history
  • Loading branch information
badrogger committed Oct 10, 2024
1 parent 5a53762 commit 5ca8eeb
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 7 deletions.
16 changes: 13 additions & 3 deletions node_cli/cli/sync_node.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,17 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.

from typing import Optional

import click

from node_cli.core.node import init_sync, update_sync
from node_cli.utils.helper import (
abort_if_false,
error_exit,
IP_TYPE,
safe_load_texts,
streamed_cmd,
error_exit
)
from node_cli.utils.exit_codes import CLIExitCodes

Expand Down Expand Up @@ -60,14 +63,21 @@ def sync_node():
help=TEXTS['init']['historic_state'],
is_flag=True
)
@click.option(
'--snapshot-from',
type=IP_TYPE,
default=None,
hidden=True,
help='Ip of the node from to download snapshot from'
)
@streamed_cmd
def _init_sync(env_file, archive, catchup, historic_state):
def _init_sync(env_file, archive, catchup, historic_state, snapshot_from: Optional[str]):
if historic_state and not archive:
error_exit(
'--historic-state can be used only is combination with --archive',
exit_code=CLIExitCodes.FAILURE
)
init_sync(env_file, archive, catchup, historic_state)
init_sync(env_file, archive, catchup, historic_state, snapshot_from)


@sync_node.command('update', help='Update sync node from .env file')
Expand Down
6 changes: 4 additions & 2 deletions node_cli/core/node.py
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,8 @@ def init_sync(
env_filepath: str,
archive: bool,
catchup: bool,
historic_state: bool
historic_state: bool,
snapshot_from: str
) -> None:
configure_firewall_rules()
env = get_node_env(env_filepath, sync_node=True)
Expand All @@ -197,7 +198,8 @@ def init_sync(
env,
archive,
catchup,
historic_state
historic_state,
snapshot_from
)
if not inited_ok:
error_exit(
Expand Down
1 change: 1 addition & 0 deletions node_cli/core/schains.py
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ def get_node_cli_schain_status_filepath(schain_name: str) -> str:

def update_node_cli_schain_status(schain_name: str, status: dict) -> None:
path = get_node_cli_schain_status_filepath(schain_name)
os.makedirs(os.path.dirname(path), exist_ok=True)
save_json(path, status)


Expand Down
11 changes: 9 additions & 2 deletions node_cli/operations/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
import distro
import functools
import logging
from typing import Dict
from typing import Dict, Optional

from node_cli.cli.info import VERSION
from node_cli.configs import CONTAINER_CONFIG_PATH, CONTAINER_CONFIG_TMP_PATH
Expand All @@ -47,6 +47,7 @@
from node_cli.operations.skale_node import download_skale_node, sync_skale_node, update_images
from node_cli.core.checks import CheckType, run_checks as run_host_checks
from node_cli.core.iptables import configure_iptables
from node_cli.core.schains import update_node_cli_schain_status
from node_cli.utils.docker_utils import (
compose_rm,
compose_up,
Expand Down Expand Up @@ -184,7 +185,8 @@ def init_sync(
env: dict,
archive: bool,
catchup: bool,
historic_state: bool
historic_state: bool,
snapshot_from: Optional[str]
) -> bool:
cleanup_volume_artifacts(env['DISK_MOUNTPOINT'])
download_skale_node(
Expand Down Expand Up @@ -224,6 +226,11 @@ def init_sync(
distro.version()
)
update_resource_allocation(env_type=env['ENV_TYPE'])

schain_name = env['SCHAIN_NAME']
if snapshot_from:
update_node_cli_schain_status(schain_name, {'snapshot_from': snapshot_from})

update_images(env.get('CONTAINER_CONFIGS_DIR') != '', sync_node=True)

compose_up(env, sync_node=True)
Expand Down

0 comments on commit 5ca8eeb

Please sign in to comment.