Mini Shell
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from openstack import proxy
from openstack.dns.v2 import recordset as _rs
from openstack.dns.v2 import zone as _zone
from openstack.dns.v2 import zone_import as _zone_import
from openstack.dns.v2 import zone_export as _zone_export
from openstack.dns.v2 import zone_transfer as _zone_transfer
from openstack.dns.v2 import floating_ip as _fip
class Proxy(proxy.Proxy):
# ======== Zones ========
def zones(self, **query):
"""Retrieve a generator of zones
:param dict query: Optional query parameters to be sent to limit the
resources being returned.
* `name`: Zone Name field.
* `type`: Zone Type field.
* `email`: Zone email field.
* `status`: Status of the zone.
* `ttl`: TTL field filter.abs
* `description`: Zone description field filter.
:returns: A generator of zone
:class:`~openstack.dns.v2.zone.Zone` instances.
"""
return self._list(_zone.Zone, **query)
def create_zone(self, **attrs):
"""Create a new zone from attributes
:param dict attrs: Keyword arguments which will be used to create
a :class:`~openstack.dns.v2.zone.Zone`,
comprised of the properties on the Zone class.
:returns: The results of zone creation.
:rtype: :class:`~openstack.dns.v2.zone.Zone`
"""
return self._create(_zone.Zone, prepend_key=False, **attrs)
def get_zone(self, zone):
"""Get a zone
:param zone: The value can be the ID of a zone
or a :class:`~openstack.dns.v2.zone.Zone` instance.
:returns: Zone instance.
:rtype: :class:`~openstack.dns.v2.zone.Zone`
"""
return self._get(_zone.Zone, zone)
def delete_zone(self, zone, ignore_missing=True):
"""Delete a zone
:param zone: The value can be the ID of a zone
or a :class:`~openstack.dns.v2.zone.Zone` instance.
:param bool ignore_missing: When set to ``False``
:class:`~openstack.exceptions.ResourceNotFound` will be raised when
the zone does not exist.
When set to ``True``, no exception will be set when attempting to
delete a nonexistent zone.
:returns: Zone been deleted
:rtype: :class:`~openstack.dns.v2.zone.Zone`
"""
return self._delete(_zone.Zone, zone, ignore_missing=ignore_missing)
def update_zone(self, zone, **attrs):
"""Update zone attributes
:param zone: The id or an instance of
:class:`~openstack.dns.v2.zone.Zone`.
:param dict attrs: attributes for update on
:class:`~openstack.dns.v2.zone.Zone`.
:rtype: :class:`~openstack.dns.v2.zone.Zone`
"""
return self._update(_zone.Zone, zone, **attrs)
def find_zone(self, name_or_id, ignore_missing=True, **attrs):
"""Find a single zone
:param name_or_id: The name or ID of a zone
:param bool ignore_missing: When set to ``False``
:class:`~openstack.exceptions.ResourceNotFound` will be raised
when the zone does not exist.
When set to ``True``, no exception will be set when attempting
to delete a nonexistent zone.
:returns: :class:`~openstack.dns.v2.zone.Zone`
"""
return self._find(_zone.Zone, name_or_id,
ignore_missing=ignore_missing)
def abandon_zone(self, zone, **attrs):
"""Abandon Zone
:param zone: The value can be the ID of a zone to be abandoned
or a :class:`~openstack.dns.v2.zone_export.ZoneExport` instance.
:returns: None
"""
zone = self._get_resource(_zone.Zone, zone)
return zone.abandon(self)
def xfr_zone(self, zone, **attrs):
"""Trigger update of secondary Zone
:param zone: The value can be the ID of a zone to be abandoned
or a :class:`~openstack.dns.v2.zone_export.ZoneExport` instance.
:returns: None
"""
zone = self._get_resource(_zone.Zone, zone)
return zone.xfr(self)
# ======== Recordsets ========
def recordsets(self, zone=None, **query):
"""Retrieve a generator of recordsets
:param zone: The optional value can be the ID of a zone
or a :class:`~openstack.dns.v2.zone.Zone` instance. If it is not
given all recordsets for all zones of the tenant would be
retrieved
:param dict query: Optional query parameters to be sent to limit the
resources being returned.
* `name`: Recordset Name field.
* `type`: Type field.
* `status`: Status of the recordset.
* `ttl`: TTL field filter.
* `description`: Recordset description field filter.
:returns: A generator of zone
(:class:`~openstack.dns.v2.recordset.Recordset`) instances
"""
base_path = None
if not zone:
base_path = '/recordsets'
else:
zone = self._get_resource(_zone.Zone, zone)
query.update({'zone_id': zone.id})
return self._list(_rs.Recordset, base_path=base_path, **query)
def create_recordset(self, zone, **attrs):
"""Create a new recordset in the zone
:param zone: The value can be the ID of a zone
or a :class:`~openstack.dns.v2.zone.Zone` instance.
:param dict attrs: Keyword arguments which will be used to create
a :class:`~openstack.dns.v2.recordset.Recordset`,
comprised of the properties on the Recordset class.
:returns: The results of zone creation
:rtype: :class:`~openstack.dns.v2.recordset.Recordset`
"""
zone = self._get_resource(_zone.Zone, zone)
attrs.update({'zone_id': zone.id})
return self._create(_rs.Recordset, prepend_key=False, **attrs)
def update_recordset(self, recordset, **attrs):
"""Update Recordset attributes
:param dict attrs: Keyword arguments which will be used to create
a :class:`~openstack.dns.v2.recordset.Recordset`,
comprised of the properties on the Recordset class.
:returns: The results of zone creation
:rtype: :class:`~openstack.dns.v2.recordset.Recordset`
"""
return self._update(_rs.Recordset, recordset, **attrs)
def get_recordset(self, recordset, zone):
"""Get a recordset
:param zone: The value can be the ID of a zone
or a :class:`~openstack.dns.v2.zone.Zone` instance.
:param recordset: The value can be the ID of a recordset
or a :class:`~openstack.dns.v2.recordset.Recordset` instance.
:returns: Recordset instance
:rtype: :class:`~openstack.dns.v2.recordset.Recordset`
"""
zone = self._get_resource(_zone.Zone, zone)
return self._get(_rs.Recordset, recordset, zone_id=zone.id)
def delete_recordset(self, recordset, zone=None, ignore_missing=True):
"""Delete a zone
:param recordset: The value can be the ID of a recordset
or a :class:`~openstack.dns.v2.recordset.Recordset`
instance.
:param zone: The value can be the ID of a zone
or a :class:`~openstack.dns.v2.zone.Zone` instance.
:param bool ignore_missing: When set to ``False``
:class:`~openstack.exceptions.ResourceNotFound` will be raised when
the zone does not exist. When set to ``True``, no exception will
be set when attempting to delete a nonexistent zone.
:returns: Recordset instance been deleted
:rtype: :class:`~openstack.dns.v2.recordset.Recordset`
"""
if zone:
zone = self._get_resource(_zone.Zone, zone)
recordset = self._get(
_rs.Recordset, recordset, zone_id=zone.id)
return self._delete(_rs.Recordset, recordset,
ignore_missing=ignore_missing)
def find_recordset(self, zone, name_or_id, ignore_missing=True, **attrs):
"""Find a single recordset
:param zone: The value can be the ID of a zone
or a :class:`~openstack.dns.v2.zone.Zone` instance.
:param name_or_id: The name or ID of a zone
:param bool ignore_missing: When set to ``False``
:class:`~openstack.exceptions.ResourceNotFound` will be raised
when the zone does not exist.
When set to ``True``, no exception will be set when attempting
to delete a nonexistent zone.
:returns: :class:`~openstack.dns.v2.recordset.Recordset`
"""
zone = self._get_resource(_zone.Zone, zone)
return self._find(_rs.Recordset, name_or_id,
ignore_missing=ignore_missing, zone_id=zone.id,
**attrs)
# ======== Zone Imports ========
def zone_imports(self, **query):
"""Retrieve a generator of zone imports
:param dict query: Optional query parameters to be sent to limit the
resources being returned.
* `zone_id`: Zone I field.
* `message`: Message field.
* `status`: Status of the zone import record.
:returns: A generator of zone
:class:`~openstack.dns.v2.zone_import.ZoneImport` instances.
"""
return self._list(_zone_import.ZoneImport, **query)
def create_zone_import(self, **attrs):
"""Create a new zone import from attributes
:param dict attrs: Keyword arguments which will be used to create
a :class:`~openstack.dns.v2.zone_import.ZoneImport`,
comprised of the properties on the ZoneImport class.
:returns: The results of zone creation.
:rtype: :class:`~openstack.dns.v2.zone_import.ZoneImport`
"""
return self._create(_zone_import.ZoneImport, prepend_key=False,
**attrs)
def get_zone_import(self, zone_import):
"""Get a zone import record
:param zone: The value can be the ID of a zone import
or a :class:`~openstack.dns.v2.zone_import.ZoneImport` instance.
:returns: ZoneImport instance.
:rtype: :class:`~openstack.dns.v2.zone_import.ZoneImport`
"""
return self._get(_zone_import.ZoneImport, zone_import)
def delete_zone_import(self, zone_import, ignore_missing=True):
"""Delete a zone import
:param zone_import: The value can be the ID of a zone import
or a :class:`~openstack.dns.v2.zone_import.ZoneImport` instance.
:param bool ignore_missing: When set to ``False``
:class:`~openstack.exceptions.ResourceNotFound` will be raised when
the zone does not exist.
When set to ``True``, no exception will be set when attempting to
delete a nonexistent zone.
:returns: None
"""
return self._delete(_zone_import.ZoneImport, zone_import,
ignore_missing=ignore_missing)
# ======== Zone Exports ========
def zone_exports(self, **query):
"""Retrieve a generator of zone exports
:param dict query: Optional query parameters to be sent to limit the
resources being returned.
* `zone_id`: Zone I field.
* `message`: Message field.
* `status`: Status of the zone import record.
:returns: A generator of zone
:class:`~openstack.dns.v2.zone_export.ZoneExport` instances.
"""
return self._list(_zone_export.ZoneExport, **query)
def create_zone_export(self, zone, **attrs):
"""Create a new zone export from attributes
:param zone: The value can be the ID of a zone to be exported
or a :class:`~openstack.dns.v2.zone_export.ZoneExport` instance.
:param dict attrs: Keyword arguments which will be used to create
a :class:`~openstack.dns.v2.zone_export.ZoneExport`,
comprised of the properties on the ZoneExport class.
:returns: The results of zone creation.
:rtype: :class:`~openstack.dns.v2.zone_export.ZoneExport`
"""
zone = self._get_resource(_zone.Zone, zone)
return self._create(_zone_export.ZoneExport,
base_path='/zones/%(zone_id)s/tasks/export',
prepend_key=False,
zone_id=zone.id,
**attrs)
def get_zone_export(self, zone_export):
"""Get a zone export record
:param zone: The value can be the ID of a zone import
or a :class:`~openstack.dns.v2.zone_export.ZoneExport` instance.
:returns: ZoneExport instance.
:rtype: :class:`~openstack.dns.v2.zone_export.ZoneExport`
"""
return self._get(_zone_export.ZoneExport, zone_export)
def get_zone_export_text(self, zone_export):
"""Get a zone export record as text
:param zone: The value can be the ID of a zone import
or a :class:`~openstack.dns.v2.zone_export.ZoneExport` instance.
:returns: ZoneExport instance.
:rtype: :class:`~openstack.dns.v2.zone_export.ZoneExport`
"""
return self._get(_zone_export.ZoneExport, zone_export,
base_path='/zones/tasks/export/%(id)s/export')
def delete_zone_export(self, zone_export, ignore_missing=True):
"""Delete a zone export
:param zone_export: The value can be the ID of a zone import
or a :class:`~openstack.dns.v2.zone_export.ZoneExport` instance.
:param bool ignore_missing: When set to ``False``
:class:`~openstack.exceptions.ResourceNotFound` will be raised when
the zone does not exist.
When set to ``True``, no exception will be set when attempting to
delete a nonexistent zone.
:returns: None
"""
return self._delete(_zone_export.ZoneExport, zone_export,
ignore_missing=ignore_missing)
# ======== FloatingIPs ========
def floating_ips(self, **query):
"""Retrieve a generator of recordsets
:param dict query: Optional query parameters to be sent to limit the
resources being returned.
* `name`: Recordset Name field.
* `type`: Type field.
* `status`: Status of the recordset.
* `ttl`: TTL field filter.
* `description`: Recordset description field filter.
:returns: A generator of floatingips
(:class:`~openstack.dns.v2.floating_ip.FloatingIP`) instances
"""
return self._list(_fip.FloatingIP, **query)
def get_floating_ip(self, floating_ip):
"""Get a Floating IP
:param floating_ip: The value can be the ID of a floating ip
or a :class:`~openstack.dns.v2.floating_ip.FloatingIP` instance.
The ID is in format "region_name:floatingip_id"
:returns: FloatingIP instance.
:rtype: :class:`~openstack.dns.v2.floating_ip.FloatingIP`
"""
return self._get(_fip.FloatingIP, floating_ip)
def update_floating_ip(self, floating_ip, **attrs):
"""Update floating ip attributes
:param floating_ip: The id or an instance of
:class:`~openstack.dns.v2.fip.FloatingIP`.
:param dict attrs: attributes for update on
:class:`~openstack.dns.v2.fip.FloatingIP`.
:rtype: :class:`~openstack.dns.v2.fip.FloatingIP`
"""
return self._update(_fip.FloatingIP, floating_ip, **attrs)
# ======== Zone Transfer ========
def zone_transfer_requests(self, **query):
"""Retrieve a generator of zone transfer requests
:param dict query: Optional query parameters to be sent to limit the
resources being returned.
* `status`: Status of the recordset.
:returns: A generator of transfer requests
(:class:`~openstack.dns.v2.zone_transfer.ZoneTransferRequest`)
instances
"""
return self._list(_zone_transfer.ZoneTransferRequest, **query)
def get_zone_transfer_request(self, request):
"""Get a ZoneTransfer Request info
:param request: The value can be the ID of a transfer request
or a :class:`~openstack.dns.v2.zone_transfer.ZoneTransferRequest`
instance.
:returns: Zone transfer request instance.
:rtype: :class:`~openstack.dns.v2.zone_transfer.ZoneTransferRequest`
"""
return self._get(_zone_transfer.ZoneTransferRequest, request)
def create_zone_transfer_request(self, zone, **attrs):
"""Create a new ZoneTransfer Request from attributes
:param zone: The value can be the ID of a zone to be transferred
or a :class:`~openstack.dns.v2.zone_export.ZoneExport` instance.
:param dict attrs: Keyword arguments which will be used to create
a :class:`~openstack.dns.v2.zone_transfer.ZoneTransferRequest`,
comprised of the properties on the ZoneTransferRequest class.
:returns: The results of zone transfer request creation.
:rtype: :class:`~openstack.dns.v2.zone_transfer.ZoneTransferRequest`
"""
zone = self._get_resource(_zone.Zone, zone)
return self._create(
_zone_transfer.ZoneTransferRequest,
base_path='/zones/%(zone_id)s/tasks/transfer_requests',
prepend_key=False,
zone_id=zone.id,
**attrs)
def update_zone_transfer_request(self, request, **attrs):
"""Update ZoneTransfer Request attributes
:param floating_ip: The id or an instance of
:class:`~openstack.dns.v2.zone_transfer.ZoneTransferRequest`.
:param dict attrs: attributes for update on
:class:`~openstack.dns.v2.zone_transfer.ZoneTransferRequest`.
:rtype: :class:`~openstack.dns.v2.zone_transfer.ZoneTransferRequest`
"""
return self._update(_zone_transfer.ZoneTransferRequest,
request, **attrs)
def delete_zone_transfer_request(self, request, ignore_missing=True):
"""Delete a ZoneTransfer Request
:param request: The value can be the ID of a zone transfer request
or a :class:`~openstack.dns.v2.zone_transfer.ZoneTransferRequest`
instance.
:param bool ignore_missing: When set to ``False``
:class:`~openstack.exceptions.ResourceNotFound` will be raised when
the zone does not exist.
When set to ``True``, no exception will be set when attempting to
delete a nonexistent zone.
:returns: None
"""
return self._delete(_zone_transfer.ZoneTransferRequest, request,
ignore_missing=ignore_missing)
def zone_transfer_accepts(self, **query):
"""Retrieve a generator of zone transfer accepts
:param dict query: Optional query parameters to be sent to limit the
resources being returned.
* `status`: Status of the recordset.
:returns: A generator of transfer accepts
(:class:`~openstack.dns.v2.zone_transfer.ZoneTransferAccept`)
instances
"""
return self._list(_zone_transfer.ZoneTransferAccept, **query)
def get_zone_transfer_accept(self, accept):
"""Get a ZoneTransfer Accept info
:param request: The value can be the ID of a transfer accept
or a :class:`~openstack.dns.v2.zone_transfer.ZoneTransferAccept`
instance.
:returns: Zone transfer request instance.
:rtype: :class:`~openstack.dns.v2.zone_transfer.ZoneTransferAccept`
"""
return self._get(_zone_transfer.ZoneTransferAccept, accept)
def create_zone_transfer_accept(self, **attrs):
"""Create a new ZoneTransfer Accept from attributes
:param dict attrs: Keyword arguments which will be used to create
a :class:`~openstack.dns.v2.zone_transfer.ZoneTransferAccept`,
comprised of the properties on the ZoneTransferAccept class.
:returns: The results of zone transfer request creation.
:rtype: :class:`~openstack.dns.v2.zone_transfer.ZoneTransferAccept`
"""
return self._create(_zone_transfer.ZoneTransferAccept, **attrs)
def _get_cleanup_dependencies(self):
# DNS may depend on floating ip
return {
'dns': {
'before': ['network']
}
}
def _service_cleanup(self, dry_run=True, client_status_queue=False,
identified_resources=None,
filters=None, resource_evaluation_fn=None):
pass
Zerion Mini Shell 1.0