项目作者: moira-alert

项目描述 :
Python client for Moira
高级语言: Python
项目地址: git://github.com/moira-alert/python-moira-client.git
创建时间: 2016-10-24T09:56:51Z
项目社区:https://github.com/moira-alert/python-moira-client

开源协议:MIT License

下载


Build Status

Moira Client

If you’re new here, better check out our main README.

Python client for Moira.

Installation

  1. pip install moira-python-client

Getting started

Initialize Moira client:

  1. from moira_client import Moira
  2. moira = Moira('http://localhost:8888/api/')

Triggers

Create new trigger

  1. from moira_client.models.trigger import STATE_ERROR
  2. trigger = moira.trigger.create(
  3. id='service_trigger_name',
  4. name='Trigger name',
  5. tags=['service'],
  6. targets=['prefix.service.*.postfix'],
  7. warn_value=300,
  8. error_value=600,
  9. desc='my trigger',
  10. ttl_state=STATE_ERROR
  11. )
  12. trigger.disable_day('Tue')
  13. trigger.save()
  14. print(trigger.id)

Note: id parameter is not required but highly recommended for large production solutions

(e.q. fetch_by_id will work faster than is_exist).
If parameter is not specified, random trigger guid will be generated.

Update triggers

Turn off all triggers for Monday.

  1. triggers = moira.trigger.fetch_all()
  2. for trigger in triggers:
  3. trigger.disable_day('Mon')
  4. trigger.update()

Delete trigger

  1. trigger = moira.trigger.fetch_by_id('bb1a8514-128b-406e-bec3-25e94153ab30')
  2. moira.trigger.delete(trigger.id)

Check whether trigger exists or not (manually)

  1. trigger = moira.trigger.create(
  2. name='service',
  3. targets=['service.rps'],
  4. tags=['ops']
  5. )
  6. if not moira.trigger.is_exist(trigger):
  7. trigger.save()

Get non existent triggers

  1. trigger1 = moira.trigger.create(
  2. name='service',
  3. targets=['service.rps'],
  4. tags=['ops']
  5. )
  6. trigger2 = moira.trigger.create(
  7. name='site',
  8. targets=['site.rps'],
  9. tags=['ops']
  10. )
  11. triggers = [trigger1, trigger2]
  12. non_existent_triggers = moira.trigger.get_non_existent(triggers)

Subscription

Create subscription

  1. subscription = moira.subscription.create(
  2. contacts=['79ac9de2-a3b3-4f94-b3ea-74f6f4094fd2'],
  3. tags=['tag']
  4. )
  5. subscription.save()

Delete subscription

Delete all subscriptions

  1. subscriptions = moira.subscription.fetch_all()
  2. for subscription in subscriptions:
  3. moira.subscription.delete(subscription.id)

Contact

Get all contacts

  1. contacts = moira.contact.fetch_all()
  2. for contact in contacts:
  3. print(contact.id)

Get contact id by type and value

  1. contact_id = moira.contact.get_id(type='slack', value='#err')
  2. print(contact_id)

Team

Get all teams

  1. teams = moira.team.get_all()

Create a new team

  1. from moira_client.models.team import TeamModel
  2. team = TeamModel(
  3. description="Team that holds all members of infrastructure division",
  4. name="Infrastructure Team",
  5. )
  6. saved_team = moira.team.create(team)

Delete a team

  1. team_id = "d5d98eb3-ee18-4f75-9364-244f67e23b54"
  2. deleted_team = moira.team.delete(team_id)

Get a team by ID

  1. team_id = "d5d98eb3-ee18-4f75-9364-244f67e23b54"
  2. team = moira.team.get(team_id)

Update existing team

  1. from moira_client.models.team import TeamModel
  2. team_id = "d5d98eb3-ee18-4f75-9364-244f67e23b54"
  3. team = TeamModel(
  4. description="Team that holds all members of infrastructure division",
  5. name="Infrastructure Team",
  6. )
  7. updated_team = moira.team.update(team_id, team)

Team Settings

Get team settings

  1. team_id = "d5d98eb3-ee18-4f75-9364-244f67e23b54"
  2. settings = moira.team.settings.get(team_id)

Team User

Get users of a team

  1. team_id = "d5d98eb3-ee18-4f75-9364-244f67e23b54"
  2. users = moira.team.user.get(team_id)

Add users to a team

  1. from moira_client.models.team.user import TeamMembers
  2. team_id = "d5d98eb3-ee18-4f75-9364-244f67e23b54"
  3. users_to_add = TeamMembers(usernames=["anonymous", ])
  4. users = moira.team.user.add(team_id, users_to_add)

Set users of a team

  1. from moira_client.models.team.user import TeamMembers
  2. team_id = "d5d98eb3-ee18-4f75-9364-244f67e23b54"
  3. users_to_set = TeamMembers(usernames=["anonymous", ])
  4. users = moira.team.user.set(team_id, users_to_set)

Delete a user from a team

  1. team_id = "d5d98eb3-ee18-4f75-9364-244f67e23b54"
  2. team_user_id = "anonymous"
  3. users = moira.team.user.delete(team_id, team_user_id)

Team Subscription

Create a new team subscription

  1. from moira_client.models.subscription import SubscriptionModel
  2. team_id = "d5d98eb3-ee18-4f75-9364-244f67e23b54"
  3. subscription_to_create = SubscriptionModel(
  4. any_tags=False,
  5. contacts=[
  6. "acd2db98-1659-4a2f-b227-52d71f6e3ba1"
  7. ],
  8. enabled=True,
  9. ignore_recoverings=False,
  10. ignore_warnings=False,
  11. plotting={
  12. "enabled": True,
  13. "theme": "dark"
  14. },
  15. sched={
  16. "days": [
  17. {
  18. "enabled": True,
  19. "name": "Mon"
  20. }
  21. ],
  22. "endOffset": 1439,
  23. "startOffset": 0,
  24. "tzOffset": -60
  25. },
  26. tags=[
  27. "server",
  28. "cpu"
  29. ],
  30. throttling=False,
  31. user="",
  32. )
  33. subscription = moira.team.subscription.create(team_id, subscription_to_create)

Team Contact

Create a new team contact

  1. from moira_client.models.contact import Contact
  2. team_id = "d5d98eb3-ee18-4f75-9364-244f67e23b54"
  3. contact_to_create = Contact(
  4. name="Mail Alerts",
  5. team_id=team_id,
  6. type="mail",
  7. user="",
  8. value="devops@example.com",
  9. )
  10. contact = moira.team.contact.create(team_id, contact_to_create)