Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rehmatworks/serverpilot-python
A Python package to interact with ServerPilot API.
https://github.com/rehmatworks/serverpilot-python
python python-2 python-3 python2 python3 serverpilot serverpilot-api
Last synced: about 1 month ago
JSON representation
A Python package to interact with ServerPilot API.
- Host: GitHub
- URL: https://github.com/rehmatworks/serverpilot-python
- Owner: rehmatworks
- License: mit
- Created: 2019-04-11T18:17:43.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2022-12-08T04:58:22.000Z (almost 2 years ago)
- Last Synced: 2024-10-07T21:48:55.891Z (about 1 month ago)
- Topics: python, python-2, python-3, python2, python3, serverpilot, serverpilot-api
- Language: Python
- Homepage: https://serverpilot.io/docs/how-to-use-the-serverpilot-api
- Size: 26.4 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Python API Wrapper for ServerPilot API
ServerPilot is an awesome tool to manage Ubuntu servers in order to run PHP (and other) web apps flawlessly. This is a Python package to interact with [ServerPilot API](https://serverpilot.io/docs/how-to-use-the-serverpilot-api).## Installation
Install from PyPi:
```shell
pip install rwsp
```
or clone this repo and run:
```python
python setup.py install
```
### Usage
```python
from serverpilot.serverpilot import ServerPilot
# Get API Creds at https://manage.serverpilot.io/account/api
clientId = '###############'
apiKey = '##############'
sp = ServerPilot(clientId, apiKey)
```## Servers
#### List Servers
```python
sp.list_servers()
```#### Get a Server
```python
serverId = 'ID of the server'
sp.get_server(serverId)
```#### Create a Server
You will get server ID in response that you can use manually to configure your server
```python
data = {
'name': 'mynewserver',
'plan': 'business',
'enable_ssh_password_auth': True
}
sp.create_server(data)
```#### Update a Server
```python
data = {
'plan': 'business',
'firewall': True,
'autoupdates': True,
'deny_unknown_domains': True
}
serverId = 'ID of the server'
sp.update_server(serverId, data)
```#### Delete a Server
This action will detach your server from your ServerPilot account.
```python
serverId = 'ID of the server'
sp.delete_server(serverId)
```## SSH Keys
#### List SSH Keys
```python
sp.list_sshkeys()
```#### Add an SSH Key
```python
name = 'my_ssh_key'
public_key = 'public_key_data'
sp.add_sshkey(name, public_key)
```#### Get an SSH Key
```python
ssh_key_id = 'your-ssh-key-id'
sp.get_sshkey(ssh_key_id)
```#### Rename an SSH Key
```python
ssh_key_id = 'your-ssh-key-id'
new_name = 'my_updated_ssh_key'
sp.rename_sshkey(ssh_key_id, new_name)
```#### Delete an SSH Key
```python
ssh_key_id = 'your-ssh-key-id'
sp.delete_sshkey(ssh_key_id)
```#### Assign SSH Key
This action assigns an SSH key to a system user.
```python
sys_user_id = 'system-user-id'
ssh_key_id = 'your-ssh-key-id'
sp.assign_sshkey(ssh_key_id, sys_user_id)
```#### Detach SSH Key
This action will detach an SSH key from a system user.
```python
sys_user_id = 'system-user-id'
ssh_key_id = 'your-ssh-key-id'
sp.detach_sshkey(ssh_key_id, sys_user_id)
```#### List User SSH Keys
```python
sys_user_id = 'system-user-id'
sp.list_userkeys(sys_user_id)
```## Users
#### List Users
```python
sp.list_users()
```#### Create a User
```python
data = {
'name': 'mynewsshuser',
'password': 'mysecurepassword'
}
serverId = 'ID of the server'
sp.create_user(serverId, data)
```#### Get a User
```python
userId = 'ID of the SSH user'
sp.get_user(userId)
```
#### Update a User
You can update a user password.
```python
data = {
'password': 'mynewsecurepassword'
}
userId = 'ID of the SSH user'
sp.update_user(userId, data)
```#### Delete a User
```python
userId = 'ID of the SSH user'
sp.delete_user(userId)
```## Apps
#### List Apps
```python
sp.list_apps()
```#### Create a New App
```python
data = {
'sysuserid': '####', # ID of the owner (SSH User)
'name': 'myawesomeapp',
'runtime': 'php7.2',
'domains': ['mysite.com', 'www.mysite.com'],
# Provide wordpress dictionary only if you need WP to be installed in your new app
'wordpress': {
'site_title': 'My WP Site',
'admin_user': 'admin',
'admin_password': 'mysecurepassword', # Min: 8, Max: 200
'admin_email': '[email protected]'
}
}
sp.create_app(data)
```#### Get App Details
```python
appId = 'ID of the app'
sp.get_app(appId)
```#### Update App Details
```python
data = {
'runtime': 'php7.3',
'domains': ['mysite.com', 'www.mysite.com', 'newsite.com', 'www.newsite.com']
}
appId = 'ID of the app'
sp.update_app(appId, data)
```#### Enable / Install SSL
To enable `Auto-SSL`, don't pass the data object, just pass appId
```python
appId = 'ID of the app'
sp.enable_ssl(appId) # Throws an exception if SSL is already enabled
```If you want to install a custom SSL, pass data with SSL assets
```python
appId = 'ID of the app'
data = {
'key': 'privateKey',
'cert': 'SSLCertContent',
'cacerts': 'CACertsIfApplicable' # Optional
}
sp.enable_ssl(appId, data) # Throws an exception if already installed
```#### Force SSL
```python
appId = 'ID of the app'
sp.force_ssl(appId) # Throws an exception if already forced
```#### Disable SSL
This will uninstall / disable SSL (regardless of it is auto-ssl or custom)
```python
appId = 'ID of the app'
sp.disable_ssl(appId) # Throws an exception if already disabled
```#### Delete an App
```python
appId = 'ID of the app'
sp.delete_app(appId)
```### Databases
#### List Databases
```python
sp.list_databases()
```#### Create a Database
```python
data = {
'appid': 'appId', # ID of the app for which you are creating the database
'name': 'databasename',
'user': {
'name': 'dbusername',
'password': 'dbpassword'
}
}
sp.create_database(data)
```#### Get a Database
```python
databaseId = 'ID of the database'
sp.get_database(databaseId)
```#### Update a Database
You can only update the user password for a database.
```python
data = {
'user': {
'password': 'newpassword'
}
}
databaseId = 'ID of the database'
sp.update_database(databaseId, data)
```#### Delete a Database
```python
databaseId = 'ID of the database'
sp.delete_database(databaseId)
```## Actions
Each API call returns an action ID and you can use that ID to check the status of the concerned API call.
```python
actionId = 'ID of the action'
sp.check_action(actionId)
```## Troubleshooting
Some of the most common errors you may encounter during utilizing this library are explained below:
* `Exception: 401 Error: Unauthorized` is thrown when API credentials are incorrect
* `Exception: 404 Error: Not Found` is thrown when you attempt to access a non-existent resource
* `Exception: 400 Error: Bad Request` is thrown generally when form parameters are invalidThis package covers all API operations supported by ServerPilot. If you have any confusions on required parameters or something else, you should check the [API documentation of ServerPilot](https://github.com/ServerPilot/API).