Designate resources

https://blueprints.launchpad.net/heat/+spec/heat-designate-resource

This blueprint adds heat resource plug-ins for OpenStack DNS as a service (designate).

Problem description

OpenStack provides DNS as a service (designate) and more details are available at wiki https://wiki.openstack.org/wiki/Designate

In heat, resource plug-ins are not available for designate service. And this blueprint is created to provide required plug-ins for designate service.

Proposed change

Designate service provides v1 and v2 APIs[1] and it’s python client[2] provides support only for v1. So in this blueprint, v1 support is added with following resources.

  • OS::Designate::Domain

Properties:

  • name:
    • required: True

    • type: String

    • update_allowed: False

    • description: Domain name

  • ttl:
    • required: False

    • type: int

    • update_allowed: True

    • description: Time To Live (Seconds)

  • description:
    • required: False

    • type: String

    • update_allowed: True

    • description: Description of domain

  • email:
    • required: True

    • type: String

    • update_allowed: True

    • description: Domain email

Attributes:

  • serial:
    • description: DNS domain serial

  • OS::Designate::Server

Properties:

  • name:
    • required: True

    • type: String

    • update_allowed: True

    • description: DNS Server Name

  • OS:Designate::Record

Properties:

  • domain:
    • required: True

    • type: String

    • update_allowed: False

    • description: DNS Domain id or name

    • constraints: CustomConstrain(‘designate.domain’)

  • name:
    • required: True

    • type: String

    • update_allowed: False

    • description: DNS Name

  • type:
    • required: True

    • type: String

    • update_allowed: True

    • description: DNS record type

    • constraints:[A, AAAA, CNAME, MX, SRV, TXT, SPF, NS, PTR, SSHFP, SOA]

  • data:
    • required: True

    • type: String

    • update_allowed: True

    • description: DNS record data (Ip address)

  • ttl:
    • required: False

    • type: int

    • update_allowed: True

    • description: DNS record Time To Live (Seconds)

  • description:
    • required: False

    • type: String

    • update_allowed: True

    • description: Description of DNS record

  • priority:
    • required: False

    • type: int

    • update_allowed: True

    • description: DNS record priority

Alternatives

None

Implementation

Assignee(s)

Primary assignee:

Kanagaraj Manickam (kanagaraj-manickam) Anant Patil (ananta)

Milestones

Target Milestone for completion:

Liberty-1

Work Items

  • Implement proposed resource plug-ins

  • Implement custom constrain for ‘designate.domain’

  • Add required test cases

Dependencies

[1] http://designate.readthedocs.org/en/latest/rest.html [2] https://github.com/openstack/python-designateclient