notify-by-spark.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. #
  4. # Copyright (c) 2017-2019 Joe Clarke <jclarke@cisco.com>
  5. # All rights reserved.
  6. #
  7. # Redistribution and use in source and binary forms, with or without
  8. # modification, are permitted provided that the following conditions
  9. # are met:
  10. # 1. Redistributions of source code must retain the above copyright
  11. # notice, this list of conditions and the following disclaimer.
  12. # 2. Redistributions in binary form must reproduce the above copyright
  13. # notice, this list of conditions and the following disclaimer in the
  14. # documentation and/or other materials provided with the distribution.
  15. #
  16. # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  17. # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  18. # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  19. # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  20. # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  21. # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  22. # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  23. # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  24. # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  25. # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  26. # SUCH DAMAGE.
  27. import sparker
  28. import sys
  29. import logging
  30. import re
  31. import argparse
  32. GOOD = '✅'
  33. BAD = '🚨🚨'
  34. if __name__ == '__main__':
  35. logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s : %(message)s',
  36. filename='/var/log/spark.log', level=logging.DEBUG)
  37. parser = argparse.ArgumentParser(
  38. prog=sys.argv[0], description='Send notifications to a Spark room')
  39. parser.add_argument('--team', '-t', metavar='<TEAM NAME>',
  40. help='Webex Teams Team name to use')
  41. parser.add_argument('--room', '-r', metavar='<ROOM NAME>',
  42. help='Webex Teams Room name to use', required=True)
  43. parser.add_argument('--token', '-T', metavar='<TOKEN>',
  44. help='Spark Token to use to post', required=True)
  45. parser.add_argument('--good', '-g', action='store_true',
  46. help='Is this a good message')
  47. parser.add_argument('--bad', '-b', action='store_true',
  48. help='Is this a bad message')
  49. parser.set_defaults(team=None)
  50. args = parser.parse_args()
  51. spark = sparker.Sparker(logit=True, token=args.token)
  52. if not args.team and re.search(r':', args.room):
  53. team, room = args.room.split(':')
  54. args.team = team
  55. args.room = room
  56. msg = ''
  57. for c in sys.stdin.read():
  58. msg += c
  59. if args.good and not args.bad:
  60. msg = GOOD + ' ' + msg
  61. elif args.bad and not args.good:
  62. msg = BAD + ' ' + msg
  63. spark.post_to_spark(args.team, args.room, msg)