================
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.
