server_workflow_mixin#

This module implements all “Workflow” mentioned in Operation and Workflow.

class acore_server.server_workflow_mixin.Workflow(workflow_id: str)[source]#

因为一个 workflow 在执行过程中会有多个步骤, 有些步骤可能会失败. 为了能在执行的过程中记录下 执行的状态, 以便能在失败重试的时候从上一个成功的地方继续执行, 我们需要一个 Workflow 类来 记录这些状态. 我选择将 Workflow 的数据保存在 S3 上.

class acore_server.server_workflow_mixin.CreateNewServerWorkflow(workflow_id: str, ec2_inst_id: Optional[str] = None, db_inst_id: Optional[str] = None)[source]#
class acore_server.server_workflow_mixin.CreateClonedServerWorkflow(workflow_id: str, ec2_ami_id: Optional[str] = None, db_snapshot_id: Optional[str] = None, ec2_inst_id: Optional[str] = None, db_inst_id: Optional[str] = None, is_ec2_ami_deleted: bool = False, is_db_snapshot_deleted: bool = False)[source]#
class acore_server.server_workflow_mixin.CreateUpdatedServerWorkflow(workflow_id: str, db_snapshot_id: Optional[str] = None, ec2_inst_id: Optional[str] = None, db_inst_id: Optional[str] = None, is_ec2_ami_deleted: bool = False, is_db_snapshot_deleted: bool = False)[source]#
class acore_server.server_workflow_mixin.DeleteServerWorkflow(workflow_id: str, ec2_ami_id: Optional[str] = None, db_snapshot_id: Optional[str] = None, is_ec2_ami_available: bool = False, is_db_snapshot_available: bool = False, is_ec2_deleted: bool = False, is_db_deleted: bool = False)[source]#
class acore_server.server_workflow_mixin.ServerWorkflowMixin[source]#

Server Workflow Mixin class that contains all the server workflow methods.

create_new_server(bsm: BotoSesManager, workflow_id: str, s3path_workflow: S3Path, ami_id: str, stack_exports: StackExports)[source]#

Implement Workflow 1 - Create New Server.

Parameters:

ami_id – the AMI ID to create the new EC2 instance.

create_cloned_server(bsm: BotoSesManager, workflow_id: str, s3path_workflow: S3Path, new_server_id: str, stack_exports: StackExports, snapshot_id: Optional[str] = None, skip_reboot: bool = False, delete_ami_afterwards: bool = False, delete_snapshot_afterwards: bool = False)[source]#

Implement Workflow 2 - Create Cloned Server.

create_updated_server(bsm: BotoSesManager, workflow_id: str, s3path_workflow: S3Path, new_server_id: str, ami_id: str, stack_exports: StackExports, snapshot_id: Optional[str] = None, delete_snapshot_afterwards: bool = False)[source]#

Implement Workflow 3 - Create Updated Server.

Parameters:
  • ami_id – the AMI ID to create the new EC2 instance.

  • snapshot_id – if None, it will try to run the db instance and wait it become available, then create a snapshot from it; if None and the db instant not exists, then raise error immediately; if provided use the given snapshot_id to create the db instance.

delete_server(bsm: BotoSesManager, workflow_id: str, s3path_workflow: S3Path, skip_reboot: bool = False, create_backup_ec2_ami: bool = True, create_backup_db_snapshot: bool = True, skip_prompt: bool = False)[source]#

Implement Workflow 6 - Delete Server.

stop_server(bsm: BotoSesManager)[source]#

Implement Workflow 4 - Stop Server. 这个 workflow 不需要用 S3 来 track status.

start_server(bsm: BotoSesManager)[source]#

Implement Workflow 5 - Start Server. 这个 workflow 不需要用 S3 来 track status.