# Superalgos Operations Server Module
The Superalgos Operations Server manages the clone life cycle inside the **Superalgos Ecosystem**.
The main function includes storing the metadata information of the clones and handling the interaction with the orchestration software which is [Kubernetes](https://Kubernetes.io).
# Execution sequence
The operations module (or Clones) integrates with other system modules to enable secure and encapsulated execution. On the clone creation process the encapsulation is achieved by deploying a **Clone Executor** Image on a **Kubernates** container.
- [Keys](https://github.com/Superalgos/KeyVaultModule): Manages the signature of the messages sent to the external exchanges.
- [Teams](https://github.com/Superalgos/TeamsModule): Provide team and bot authorization.
- [Clone Executor](https://github.com/Superalgos/CloneExecutor): Receive the execution parameters and runs an independent instance of the platform.
```mermaid
sequenceDiagram
User ->> Keys: createKey
User ->> Keys: getAvailableKeys
User ->> Clones: createClone
Clones ->> Keys: getAvailableKeys
Clones ->> Keys: authorizeCloneToUseKey
Keys ->> Clones: geCloneTeamAndBot
Keys ->> Teams: getTeamMembers
Keys -->> Clones: authorizeCloneToUseKey
Clones ->> Clone Executor: createClone
Clone Executor ->> Keys: signTransaction
Clone Executor ->> Clones: updateExection
Note left of Clone Executor: signTransaction and
updateExection are
called n number
of times
User ->> Clones: getCloneExecutionInformation
Clone Executor ->> Clones: cloneExecutionComplete
User ->> Clones: deleteClone
Clones ->> Keys: releaseKey
```
> Details about all available methods can be found at the GraphQL endpoint.
## List active clones
- List the clones created by the user that are currently running on the virtual machine.
- List the running clones of the teams who the user is authorized to manage (future release)
## List history clones
- List the clones owned by the user that were completed and deleted
- List the finalised clones of the teams who the user is authorized to manage (future release)
## Add new clones
A clone can be created:
- As a personal clone (the source code will be the one on the personal user folder)
- As a team clone (the source code will be the one on the main team folder)
Who can create each type:
- Personal clones are managed by the user who creates it, not visible for any other user.
- Team clones are managed by any ADMIN type team member (on the team member role attribute), and all team admins will see it listed.
> Written with [StackEdit](https://stackedit.io/).