{"library":"python-designateclient","title":"OpenStack Designate Client","description":"python-designateclient is a Python client library for OpenStack's DNS-as-a-Service (Designate) API. It provides a Python API for programmatic interaction with Designate and also ships with a command-line tool. The current version is 6.4.0. The library follows the OpenStack release cycle, typically seeing new versions every six months, aligned with OpenStack major releases.","language":"python","status":"active","last_verified":"Thu Apr 16","install":{"commands":["pip install python-designateclient"],"cli":{"name":"designate","version":"sh: 1: designate: not found"}},"imports":["from designateclient.v2 import client","from keystoneauth1.identity import generic"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nfrom keystoneauth1.identity import generic\nfrom keystoneauth1 import session as keystone_session\nfrom designateclient.v2 import client\n\n# OpenStack credentials from environment variables\nauth_url = os.environ.get('OS_AUTH_URL', 'https://your-openstack-cloud.com:5000/v3')\nusername = os.environ.get('OS_USERNAME', 'your-username')\npassword = os.environ.get('OS_PASSWORD', 'your-password')\nproject_name = os.environ.get('OS_PROJECT_NAME', 'your-project')\nproject_domain_name = os.environ.get('OS_PROJECT_DOMAIN_NAME', 'Default')\nuser_domain_name = os.environ.get('OS_USER_DOMAIN_NAME', 'Default')\n\nif not all([auth_url, username, password, project_name, project_domain_name, user_domain_name]):\n    print(\"Please set OpenStack environment variables (OS_AUTH_URL, OS_USERNAME, OS_PASSWORD, OS_PROJECT_NAME, OS_PROJECT_DOMAIN_NAME, OS_USER_DOMAIN_NAME)\")\n    exit(1)\n\n# Authenticate with Keystone\nauth = generic.Password(\n    auth_url=auth_url,\n    username=username,\n    password=password,\n    project_name=project_name,\n    project_domain_name=project_domain_name,\n    user_domain_name=user_domain_name\n)\nsession = keystone_session.Session(auth=auth)\n\n# Initialize Designate client\ndesig_client = client.Client(session=session)\n\ntry:\n    # List all zones\n    zones = desig_client.zones.list()\n    print(f\"Found {len(zones)} DNS zones:\")\n    for zone in zones:\n        print(f\"  - {zone.name} (ID: {zone.id})\")\n\n    # Example: Create a new zone (replace with your domain and email)\n    # new_zone_name = 'example.com.'\n    # new_zone_email = 'admin@example.com'\n    # new_zone = desig_client.zones.create(new_zone_name, email=new_zone_email)\n    # print(f\"Created new zone: {new_zone.name} (ID: {new_zone.id})\")\n\nexcept Exception as e:\n    print(f\"An error occurred: {e}\")\n","lang":"python","description":"This quickstart demonstrates how to authenticate with an OpenStack cloud using environment variables and then initialize the Designate v2 client. It proceeds to list existing DNS zones. Ensure your OpenStack environment variables (OS_AUTH_URL, OS_USERNAME, OS_PASSWORD, OS_PROJECT_NAME, OS_PROJECT_DOMAIN_NAME, OS_USER_DOMAIN_NAME) are set for authentication.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}