Skip to main content

Cacholong CLI, manage cloud environments at Cacholong!

Project description

CLI frontend

The API client library for managing various resources.

Client Library Documentation

Getting started

To install this package you need to take a few steps before this works correctly

  1. Create an virtual environment: python3 -m venv
  2. Activate the environment: /bin/activate
  3. Now install the package: pip install cacholong-cloud-cli
  4. Or upgrade the package: pip install cacholong-cloud-cli --upgrade

Now you can use the command ccloud on the system. Please note, make sure to activate the virtual environment before running the command ccloud.

You will need an API-token. This token can be created using our panel at https://cp.cacholong.eu/#/user/settings/api. You can create an api token within your profile under API.

When running the command ccloud for the first time it will ask you for an API-token.

After that you will be able to run the following command:

ccloud accounts list

This will give you an overview of accounts where you have access to.

Usage

Overview of the possibilities:

ccloud --help

To fetch an overview of the dns-zones for an account:

ccloud dns-zones list --account <account uuid>

Creating a DNS-record:

ccloud dns-records create --dns-zone <dns-zone uuid> \
    --name localhost.example.com \
    --dns-record-type A \
    --content 127.0.0.1 \
    --ttl 300

Updating a DNS-record:

ccloud dns-records update <dns-record uuid> \
    --content 127.0.0.1

Deleting a DNS-record:

ccloud dns-records delete <dns-record uuid>

Every command includes an option --help which will give an overview of the possibilities.

Advanced usage

Its also possible to create your own command line utility to handle various parts. Here are the same examples as above but now using python.

Fetching DNS-zones

import asyncio

from cacholong_sdk.connection import connection
from cacholong_sdk import ResourceTuple, Inclusion, Filter
from cacholong_sdk import DnsZone, DnsZoneModel, DnsRecord, DnsRecordModel

async def main():
    async with connection('https://api.cacholong.eu/api/v1/', 'YOUR-API-TOKEN') as api:
        searchfilter = Filter(account="UUID_OF_ACCOUNT")
        DnsZoneCtrl = DnsZone(api)
        async for zone in DnsZoneCtrl.fetch_all(searchfilter):
            print(zone["domain"])

# Execute main function
asyncio.run(main())

Create a DNS-record

import asyncio

from cacholong_sdk.connection import connection
from cacholong_sdk import ResourceTuple, Inclusion, Filter
from cacholong_sdk import DnsZone, DnsZoneModel, DnsRecord, DnsRecordModel

async def main():
    async with connection('https://api.cacholong.eu/api/v1/', 'YOUR-API-TOKEN') as api:
        DnsRecordCtrl = DnsRecord(api)

        dns_record = DNSRecordCtrl.create()
        dns_record["dns-zone"] = ResourceTuple("UUID_DNS_ZONE", "dns-zones")
        dns_record["name"] = "localhost.example.nl"
        dns_record["dns_record_type"] = "A"
        dns_record["content"] = "127.0.0.1"
        dns_record["ttl"] = 300
        await DNSRecordCtrl.store(dns_record)

# Execute main function
asyncio.run(main())

Update a DNS-record

import asyncio

from cacholong_sdk.connection import connection
from cacholong_sdk import ResourceTuple, Inclusion, Filter
from cacholong_sdk import DnsZone, DnsZoneModel, DnsRecord, DnsRecordModel

async def main():
    async with connection('https://api.cacholong.eu/api/v1/', 'YOUR-API-TOKEN') as api:
        DnsRecordCtrl = DnsRecord(api)

        dns_record = await DnsRecordCtrl.fetch("UUID_OF_DNS_RECORD")
        dns_record["content"] = "127.0.0.1"

        # Be careful: the above change will be applied automatically

# Execute main function
asyncio.run(main())

Delete a DNS-record

import asyncio

from cacholong_sdk.connection import connection
from cacholong_sdk import ResourceTuple, Inclusion, Filter
from cacholong_sdk import DnsZone, DnsZoneModel, DnsRecord, DnsRecordModel

async def main():
    async with connection('https://api.cacholong.eu/api/v1/', 'YOUR-API-TOKEN') as api:
        DnsRecordCtrl = DnsRecord(api)

        await DnsRecordCtrl.destroy("UUID_OF_DNS_RECORD")

# Execute main function
asyncio.run(main())

SDK

cacholong_sdk is the programmatic layer bundled with this package. It gives you direct Python access to all Cacholong resources — DNS zones, mail, accounts, and more — without going through the CLI. Full documentation, including installation, authentication, CRUD examples, filtering, relationships, and error handling, is available at docs.cacholong.eu/sdk.

Support

Questions, feedback, or suggestions? Send us an email at [ccloud-support@cacholong.nl].

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cacholong_cloud_cli-1.8.1.tar.gz (43.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cacholong_cloud_cli-1.8.1-py3-none-any.whl (79.7 kB view details)

Uploaded Python 3

File details

Details for the file cacholong_cloud_cli-1.8.1.tar.gz.

File metadata

  • Download URL: cacholong_cloud_cli-1.8.1.tar.gz
  • Upload date:
  • Size: 43.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.4.1 CPython/3.11.13 Linux/6.1.0-49-amd64

File hashes

Hashes for cacholong_cloud_cli-1.8.1.tar.gz
Algorithm Hash digest
SHA256 45be4aa0b59d597aa50102fc35a9a982ee53a21761f074da49e2d4c98bcad492
MD5 9aef66e0595fcb7b3ac278508b92edcd
BLAKE2b-256 f91dd532c18784b32f9f40fc3d2462367001bb3441ad62de67ae181fcc9e9eba

See more details on using hashes here.

File details

Details for the file cacholong_cloud_cli-1.8.1-py3-none-any.whl.

File metadata

  • Download URL: cacholong_cloud_cli-1.8.1-py3-none-any.whl
  • Upload date:
  • Size: 79.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.4.1 CPython/3.11.13 Linux/6.1.0-49-amd64

File hashes

Hashes for cacholong_cloud_cli-1.8.1-py3-none-any.whl
Algorithm Hash digest
SHA256 162f111493edc7605537232b9643e430adc3b7f92c1c70b2d56fbc8a217916b5
MD5 7e825351d2e8e5600c312a26149cc5f1
BLAKE2b-256 26e59eaf15ca4a6ae04c6b8e68bb870efb5d16892bb5e27533cf61e896eab4a1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page