Skip to main content

Expose MongoDB Atlas Cloud provider APIs

Project description

A Python package for MongoDB Atlas Cloud provider.

Atlas API

Configure Atlas API Access

Current state of the python-atlasapi support

Code documentation (sphinx)

Installation

This package is available for Python 3.5+.

pip3 install atlasapi

Or install the development version from github:

pip3 install git+https://github.com/mickybart/python-atlasapi.git

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

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)

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
#  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
details = a.Alerts.acknowledge_an_alert_forever("597f221fdf9db113ce1755cd", "Acknowledge reason")

# Unacknowledge an Alert
details = a.Alerts.unacknowledge_an_alert("597f221fdf9db113ce1755cd")

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for atlasapi, version 0.5.4
Filename, size File type Python version Upload date Hashes
Filename, size atlasapi-0.5.4-py3-none-any.whl (15.0 kB) File type Wheel Python version py3 Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page