notify-by-spark.py 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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(
  36. format="%(asctime)s - %(name)s - %(levelname)s : %(message)s",
  37. filename="/var/log/spark.log",
  38. level=logging.DEBUG,
  39. )
  40. parser = argparse.ArgumentParser(
  41. prog=sys.argv[0], description="Send notifications to a Spark room"
  42. )
  43. parser.add_argument(
  44. "--team", "-t", metavar="<TEAM NAME>", help="Webex Teams Team name to use"
  45. )
  46. parser.add_argument(
  47. "--room",
  48. "-r",
  49. metavar="<ROOM NAME>",
  50. help="Webex Teams Room name to use",
  51. required=True,
  52. )
  53. parser.add_argument(
  54. "--token",
  55. "-T",
  56. metavar="<TOKEN>",
  57. help="Spark Token to use to post",
  58. required=True,
  59. )
  60. parser.add_argument(
  61. "--good", "-g", action="store_true", help="Is this a good message"
  62. )
  63. parser.add_argument(
  64. "--bad", "-b", action="store_true", help="Is this a bad message"
  65. )
  66. parser.set_defaults(team=None)
  67. args = parser.parse_args()
  68. spark = sparker.Sparker(logit=True, token=args.token)
  69. if not args.team and re.search(r":", args.room):
  70. team, room = args.room.split(":")
  71. args.team = team
  72. args.room = room
  73. msg = ""
  74. for c in sys.stdin.read():
  75. msg += c
  76. if args.good and not args.bad:
  77. msg = GOOD + " " + msg
  78. elif args.bad and not args.good:
  79. msg = BAD + " " + msg
  80. spark.post_to_spark(args.team, args.room, msg)