From 5f3cca665ddf46a03cbd09cec3112eb2e8408e9c Mon Sep 17 00:00:00 2001 From: git_admin Date: Mon, 27 Apr 2026 08:14:48 +0000 Subject: [PATCH] Tower: upload cetmix_tower_ovh 16.0.1.0.1 (via marketplace) --- addons/cetmix_tower_ovh/README.rst | 273 +++++++++++++++++++++++++++++ 1 file changed, 273 insertions(+) create mode 100644 addons/cetmix_tower_ovh/README.rst diff --git a/addons/cetmix_tower_ovh/README.rst b/addons/cetmix_tower_ovh/README.rst new file mode 100644 index 0000000..43112db --- /dev/null +++ b/addons/cetmix_tower_ovh/README.rst @@ -0,0 +1,273 @@ +================ +Cetmix Tower OVH +================ + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:ccd66d74df51fff24d12ccf1aa06e22728f13ce8d5aeacf3968af23e4794f591 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-cetmix%2Fcetmix--tower-lightgray.png?logo=github + :target: https://github.com/cetmix/cetmix-tower/tree/16.0/cetmix_tower_ovh + :alt: cetmix/cetmix-tower + +|badge1| |badge2| |badge3| + +This module integrates the OVH Python client, enabling seamless +interaction with OVH cloud services within the Cetmix Tower. + +**Table of contents** + +.. contents:: + :local: + +Use Cases / Context +=================== + +Although OVH allows API calls without using an SDK, we found that +integrating the OVH SDK into Cetmix Tower makes provisioning, +configuring, and maintaining OVH instances more convenient for the end +user. However, not all Cetmix Tower users require this functionality, so +to avoid overloading the system, we have included it in a separate +module. + +Configuration +============= + +Setting up OVH Access +===================== + +Create OVH API Credentials +-------------------------- + +To use the OVH integration with Cetmix Tower, you need to create OVH API +credentials: + +- Follow the `official OVH + documentation `__ + (https://docs.ovh.com/gb/en/api/first-steps/) for creating an + application and generating API keys +- It's recommended to create a dedicated application with appropriate + permissions for Cetmix Tower +- Store your Application Key, Application Secret, and Consumer Key + securely—you'll need them in the next step + +Configure OVH Secrets in Cetmix Tower +------------------------------------- + +Create three secrets in Cetmix Tower to store your OVH credentials: + +- Navigate to ``Cetmix Tower > Settings > Keys and Secrets`` +- Create a new Secret with: + + - Name: ``OVH Application Key`` + - Reference: ``ovh_application_key`` + - Key Type: ``Secret`` + +- Enter your OVH Application Key in the Secret Value tab +- Similarly, create another Secret with: + + - Name: ``OVH Application Secret`` + - Reference: ``ovh_application_secret`` + - Key Type: ``Secret`` + +- Enter your OVH Application Secret in the Secret Value tab +- Finally, create a Secret with: + + - Name: ``OVH Consumer Key`` + - Reference: ``ovh_consumer_key`` + - Key Type: ``Secret`` + +- Enter your OVH Consumer Key in the Secret Value tab + +.. + + Note: These secrets will be accessible as + ``#!cxtower.secret.ovh_application_key!#``, + ``#!cxtower.secret.ovh_application_secret!#``, and + ``#!cxtower.secret.ovh_consumer_key!#`` in your commands. + +Configure OVH Endpoint +---------------------- + +Create a variable to define your OVH API endpoint (region): + +- Navigate to ``Cetmix Tower > Settings > Variables`` +- Create a new Variable with: + + - Name: ``OVH Endpoint`` + - Reference: ``ovh_endpoint`` + - Type: ``String`` + +- Set your OVH endpoint (e.g., ``ovh-eu``, ``ovh-ca``, ``ovh-us``) as + the value + +Usage +===== + +Cetmix Tower OVHcloud Command Usage +=================================== + + **Disclaimer**: The following example demonstrates one of many + possible commands you can create and run with this module. The + ``ovh`` Python library provides access to the full range of OVHcloud + APIs – this is just a starting point to help you get familiar with + the integration. + +Example of Cetmix Tower Python Command to Create DNS Records +------------------------------------------------------------ + +- **Navigate to Command Creation** + + - Go to ``Cetmix Tower > Commands > Commands`` + - Click the ``Create`` button + +- **Configure Command Settings** + + - Set a descriptive ``Name`` (e.g., "List OVHcloud Instances") + - Leave ``Reference`` blank to generate automatically (or set a custom + reference) + - Select ``Action``: "Execute Python code" + - Set ``Access Level``: Choose appropriate level (e.g., "Manager") + - Optional: Set ``Default Path`` if needed + - Optional: Add ``Tags`` (e.g., "ovh", "cloud", "instance") for better + organization + +- **Add Required Variables** + + - In the ``Variables`` tab, add the previously configured variable: + + - ``ovh_endpoint`` (e.g., "ovh-eu") + +- **Add Required Secrets** + + - In the ``Secrets`` field, add the previously configured secrets: + + - ``ovh_application_key`` + - ``ovh_application_secret`` + - ``ovh_consumer_key`` + +- **Write Python Code** + + - Go to the ``Code`` tab + - Enter the following Python code: + + .. code:: python + + # List OVHcloud instances using ovh API + result = {"exit_code": 0, "message": None} + + client = ovh.Client( + endpoint={{ ovh_endpoint }}, + application_key=#!cxtower.secret.ovh_application_key!#, + application_secret=#!cxtower.secret.ovh_application_secret!#, + consumer_key=#!cxtower.secret.ovh_consumer_key!# + ) + + # Required variables: + # - domain_name: The main domain (e.g., "example.com") + # - subdomain: The subdomain to create (e.g., "test") + + try: + # Create a new subdomain by adding a DNS entry (A record as example) + ip_address = "1.2.3.4" # Replace with the desired IP address + response = client.post( + "/domain/zone/" + domain_name + "/record", + fieldType="A", + subDomain=subdomain, + target=ip_address, + ttl=3600 + ) + # Refresh the zone to apply changes + client.post("/domain/zone/" + domain_name + "/refresh") + result["message"] = "Subdomain '" + subdomain + "." + domain_name + "' created and DNS zone refreshed." + except Exception as e: + result["exit_code"] = 1 + result["message"] = "Error: " + str(e) + +- **Save the Command** + + - Click the ``Save`` button to create the command + +Running the OVHcloud Instance Command +------------------------------------- + +- **Navigate to Server** + + - Go to ``Cetmix Tower > Servers > Servers`` + - Open the server where you want to run the command + +- **Execute Command from Server** + + - Click the ``Command`` button at the top of the server form + - In the popup dialog: + + - Select your OVHcloud instance command from the dropdown + - Verify the variable values (if any need adjustment) + - Click ``Run`` to execute + +- **View Command Results** + + - After execution, the command log will display showing: + + - The command executed + - Execution status + - Output message containing OVHcloud instance details if successful + +Changelog +========= + +14.0.1.3.0 (2025-07-15) +----------------------- + +- Features: Improve the way Python libraries are added using custom + modules (4832) + +14.0.1.2.0 (2025-06-12) +----------------------- + +- Features: Refactor the library import using the latest updates in the + cetmix_tower_server module. (4768) + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +------- + +* Cetmix +* Giovanni Serra + +Maintainers +----------- + +.. |maintainer-GSLabIt| image:: https://github.com/GSLabIt.png?size=40px + :target: https://github.com/GSLabIt + :alt: GSLabIt + +Current maintainer: + +|maintainer-GSLabIt| + +This module is part of the `cetmix/cetmix-tower `_ project on GitHub. + +You are welcome to contribute.