Tower: upload cetmix_tower_ovh 16.0.1.0.1 (via marketplace)
This commit is contained in:
273
addons/cetmix_tower_ovh/README.rst
Normal file
273
addons/cetmix_tower_ovh/README.rst
Normal file
@@ -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/>`__
|
||||||
|
(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.
|
||||||
Reference in New Issue
Block a user