Expose MongoDB Atlas Cloud provider APIs
Project description
A
Current state of the python-atlasapi support
Version 0.10.0 (Beta)
Installation
This package is available for Python 3.6+.
Install the development version from github:
pip3 install git+https://github.com/mgmonteleone/python-atlasapi.git
Repo coming soon…
Usage
Get All Database Users
from atlasapi.atlas import Atlas
a = Atlas("<user>","<password>","<groupid>")
# Low level Api
details = a.DatabaseUsers.get_all_database_users(pageNum=1, itemsPerPage=100)
# Iterable
for user in a.DatabaseUsers.get_all_database_users(iterable=True):
print(user["username"])
Create a Database User
from atlasapi.atlas import Atlas
from atlasapi.specs import DatabaseUsersPermissionsSpecs, RoleSpecs
a = Atlas("<user>","<password>","<groupid>")
p = DatabaseUsersPermissionsSpecs("test", "password for test user")
p.add_roles("test-db",
[RoleSpecs.dbAdmin,
RoleSpecs.readWrite])
p.add_role("other-test-db", RoleSpecs.readWrite, "a_collection")
details = a.DatabaseUsers.create_a_database_user(p)
Update a Database User
from atlasapi.atlas import Atlas
from atlasapi.specs import DatabaseUsersUpdatePermissionsSpecs, RoleSpecs
a = Atlas("<user>","<password>","<groupid>")
# Update roles and password
p = DatabaseUsersUpdatePermissionsSpecs("password for test user")
p.add_role("test-db", RoleSpecs.read, "a_collection")
details = a.DatabaseUsers.update_a_database_user("test", p)
Delete a Database User
from atlasapi.atlas import Atlas
a = Atlas("<user>","<password>","<groupid>")
details = a.DatabaseUsers.delete_a_database_user("test")
Get a Single Database User
from atlasapi.atlas import Atlas
a = Atlas("<user>","<password>","<groupid>")
details = a.DatabaseUser.get_a_single_database_user("test")
Projects
from atlasapi.atlas import Atlas
a = Atlas("<user>","<password>","<groupid>")
# Get All Projects
for project in a.Projects.get_all_projects(iterable=True):
print(project["name"])
# Get One Project
details = a.Projects.get_one_project("59a03f423b34b9132757aa0d")
# Create a Project
details = a.Projects.create_a_project("test", "599eed989f78f769464d28cc")
Clusters
from atlasapi.atlas import Atlas
from atlasapi.clusters import AdvancedOptions
a = Atlas("<user>","<password>","<groupid>")
# Is existing cluster ?
a.Clusters.is_existing_cluster("cluster-dev")
# Get All Clusters
for cluster in a.Clusters.get_all_clusters(iterable=True):
print(cluster["name"])
# Get a Single Cluster
details = a.Clusters.get_a_single_cluster("cluster-dev")
# Delete a Cluster (dry run, raise ErrConfirmationRequested)
details = a.Clusters.delete_a_cluster("cluster-dev")
# Delete a Cluster (approved)
details = a.Clusters.delete_a_cluster("cluster-dev", areYouSure=True)
# Create a Simple Replica Set Cluster
details = a.Clusters.create_basic_rs(name="cluster-dev")
# Create a cluster
provider_settings: ProviderSettings = ProviderSettings()
regions_config = RegionConfig()
replication_specs = ReplicationSpecs(regions_config={provider_settings.region_name: regions_config.__dict__})
cluster_config = ClusterConfig(name='test2',
providerSettings=provider_settings,
replication_specs=replication_specs)
output = a.Clusters.create_a_cluster(cluster_config)
# Modify a cluster
existing_config = a.Clusters.get_a_single_cluster_as_obj(cluster=TEST_CLUSTER_NAME)
out.providerSettings.instance_size_name = InstanceSizeName.M10
out.disk_size_gb = 13
new_config = a.Clusters.modify_a_cluster('pyAtlasAPIClustersTest', out)
pprint(new_config)
# Modify cluster instance size
a.Clusters.modify_cluster_instanct_size(cluster='pyAtlasAPIClustersTest',new_cluster_size=InstanceSizeName.M20)
# Pause(unpause) a cluster
a.Clusters.pause_cluster(cluster='pyAtlasAPIClustersTest', toggle_if_paused=True)
# Get Advanced Options
a.Clusters.get_single_cluster_advanced_options(cluster='pyAtlasAPIClustersTest')
# Set Advanced Options
options = AdvancedOptions(failIndexKeyTooLong=True)
self.a.Clusters.modify_cluster_advanced_options(cluster='pyAtlasAPIClustersTest',
advanced_options=options)
Alerts
from atlasapi.atlas import Atlas
from atlasapi.specs import AlertStatusSpec
a = Atlas("<user>","<password>","<groupid>")
# Get All Alerts in OPEN status
for alert in a.Alerts.get_all_alerts(AlertStatusSpec.OPEN, iterable=True):
print(alert["id"])
# Get an Alert
details = a.Alerts.get_an_alert("597f221fdf9db113ce1755cd")
# Acknowledge an Alert (BROKEN)
# until (now + 6 hours)
from datetime import datetime, timezone, timedelta
now = datetime.now(timezone.utc)
until = now + timedelta(hours=6)
details = a.Alerts.acknowledge_an_alert("597f221fdf9db113ce1755cd", until, "Acknowledge reason")
# forever (BROKEN)
details = a.Alerts.acknowledge_an_alert_forever("597f221fdf9db113ce1755cd", "Acknowledge reason")
# Unacknowledge an Alert (BROKEN
details = a.Alerts.unacknowledge_an_alert("597f221fdf9db113ce1755cd")
Metrics
Examples coming soon.
Whitelists
Examples coming soon.
Error Types
About ErrAtlasGeneric
All ErrAtlas* Exception class inherit from ErrAtlasGeneric.
try:
...
except ErrAtlasGeneric as e:
c, details = e.getAtlasResponse()
- ‘c’
HTTP return code (4xx or 5xx for an error, 2xx otherwise)
- ‘details’
Response payload
Exceptions
- ErrRole
A role is not compatible with Atlas
- ErrPagination
An issue occurs during a “Get All” function with ‘iterable=True’
- ErrPaginationLimits
Out of limit on ‘pageNum’ or ‘itemsPerPage’ parameters
- ErrAtlasBadRequest
Something was wrong with the client request.
- ErrAtlasUnauthorized
Authentication is required
- ErrAtlasForbidden
Access to the specified resource is not permitted.
- ErrAtlasNotFound
The requested resource does not exist.
- ErrAtlasMethodNotAllowed
The HTTP method is not supported for the specified resource.
- ErrAtlasConflict
This is typically the response to a request to create or modify a property of an entity that is unique when an existing entity already exists with the same value for that property.
- ErrAtlasServerErrors
Something unexpected went wrong.
- ErrConfirmationRequested
Confirmation requested to execute the call.
Bugs or Issues
Please report bugs, issues or feature requests to Github Issues
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for atlasapi-0.10.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b1d894722a1a4c8f9a2c6e51d4cbcca2335ad844d579c9e88b7dd3c57ae71744 |
|
MD5 | ccba4f2e5b6de1abc2f857ca0f370be6 |
|
BLAKE2b-256 | 488de9cdd8af36b05ef6c21327ebf2ac5e2a843802f7636e7320c2f0be52359a |