274 lines
8.1 KiB
ReStructuredText
274 lines
8.1 KiB
ReStructuredText
================
|
||
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/>`__
|
||
(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 <https://github.com/cetmix/cetmix-tower/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 <https://github.com/cetmix/cetmix-tower/issues/new?body=module:%20cetmix_tower_ovh%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
|
||
|
||
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 <https://github.com/cetmix/cetmix-tower/tree/16.0/cetmix_tower_ovh>`_ project on GitHub.
|
||
|
||
You are welcome to contribute.
|