Resource plugin for Monasca Alarm and Notification

https://blueprints.launchpad.net/heat/+spec/support-monasca-alarm-notification

Adds resource plugin for Monasca Alarm and Notification

Problem description

OpenStack provides monitoring-as-a-service (monasca) and more details are available at wiki https://wiki.openstack.org/wiki/Monasca In heat, resource plug-ins are not available for monasca service. And this blueprint is created to provide required plug-ins for monasca alarm and notification.

Proposed change

Add following resource plugins:

  • OS::Monasca::Alarm:

    • name
      • type: string

      • required: false

      • default: physical_resource_name

      • update_allowed: false

      • description:

    • description
      • type: string

      • required: false

      • update_allowed: true

    • expression
      • type: string

      • required: true

      • update_allowed: true

    • match_by
      • type: string

      • required: false

      • update_allowed: true

    • severity
      • type: list

      • required: false

      • update_allowed: true

      • allowed_values: [low, medium, high, critical]

      • default: low

    • alarm_actions
      • type: list

      • required: false

      • update_allowed: true

      • List item constrains: Custom constrain ‘monasca.notification’

    • ok_actions
      • type: list

      • required: false

      • update_allowed: true

      • List item constrains: Custom constrain ‘monasca.notification’

    • undetermined_actions
      • type: list

      • required: false

      • update_allowed: true

      • List item constrains: Custom constrain ‘monasca.notification’

  • OS::Monasca::Notification:

    • name
      • type: string

      • required: false

      • default: physical_resource_name

      • update_allowed: false

    • type
      • type: string

      • required: true

      • update_allowed: true

      • allowed_values: [email, webhook, pagerduty]

    • address
      • type: string

      • required: true

      • update_allowed: true

  • Custom constrain ‘monasca.notification’

As monasca provides Notification separated from the Alarm, to be compatible with other existing alarm resources in heat, following additional resource is added, where all actions are considered as webhook.

If the user provided webhook is not exist in the monasca, heat will create new notification with that webhook, before creating the alarm, otherwise, the existing notification for that webhook will be used.

  • OS::Monasca::AlarmI:

    • name
      • type: string

      • required: false

      • default: physical_resource_name

      • update_allowed: false

      • description:

    • description
      • type: string

      • required: false

      • update_allowed: true

    • expression
      • type: string

      • required: true

      • update_allowed: true

    • match_by
      • type: string

      • required: false

      • update_allowed: true

    • severity
      • type: list

      • required: false

      • update_allowed: true

      • allowed_values: [low, medium, high, critical]

      • default: low

    • alarm_actions
      • type: list

      • required: false

      • update_allowed: true

      • List item constrains: Webhook URL

    • ok_actions
      • type: list

      • required: false

      • update_allowed: true

      • List item constrains: Webhook URL

    • undetermined_actions
      • type: list

      • required: false

      • update_allowed: true

      • List item constrains: Webhook URL

  • All of these resource plugins will be supported from version ‘5.0.0’

Alternatives

None

Implementation

Assignee(s)

Primary assignee:

duanlg@live.cn kanagaraj-manickam

Milestones

Target Milestone for completion:

Liberty-1

Work Items

  • Implement Monasca client plugin

  • Implement custom constrain ‘monasca.notification’

  • Implement alarm and notification resource plugins as detailed above

  • Implement the logic to load the monsaca resources only when python-monascaclient is available.

  • Implement required test cases.

  • Add sample template in the heat-templates github repo.

Dependencies

None