Skip to main content

Symphony k8s deployment tools

Project description

Morgan Stanley makes this available to you under the Apache License, Version 2.0 (the "License"). You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0. See the NOTICE file distributed with this work for additional information regarding copyright ownership. Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Symphony on K8s Hostfactory Provider

This provider extends IBM Symphony hostfactory custom provider to provide the necessary functionality for hostfactory to provision Symphony compute nodes on Kubernetes.

Overview

IBM Symphony hostfactory is a service that runs as part of IBM Symphony Orchestrator. The hosfactory service manages compute host bursting to public cloud. Hostfactory provides custom provider extension to allow usecase specific implementation of the host provider. Hostfactory overview.

Prerequisites

The plugin should be installed as part of an IBM Symphony deployment with the necessary credentials/capabilities to deploy pods on a Kubernetes cluster.

Provider installation

The provider scripts k8s-hf should be part of the ${HF_CONFDIR} under Symphony and hostProviderPlugins.json should add the plugin name:

{
    "version": 2,
    "providerplugins": [
        {
            "name": "k8s-hf",
            "enabled": 1,
            "scriptPath": "${HF_CONFDIR}/providers/k8s-hf/scripts/"
        }
    ]
}

as for the script files and hostProviders.json they should be copied under ${HF_CONFDIR} in the following tree structure

├── providers
│   ├── hostProviders.json
│   └── k8s-hf
│       └── scripts
│           ├── getAvailableTemplates.sh
│           ├── getRequestStatus.sh
│           ├── getReturnRequests.sh
│           ├── requestMachines.sh
│           └── requestReturnMachines.sh

built python binaries should be part of $PATH in the runtime environment.

Provider mechanism

The Symphony on K8s provider implements multiple processes to allow the interface to invoke Kubernetes API for Pod/Host management asynchronously. The process that should be running as part of the runtime environment:

  • hostfactory watch request-machines Watches hostfactory provider requests and creates the pods.
  • hostfactory watch request-return-machines Watches hostfactory provider return requests and deletes the pods.
  • hostfactory watch pods Watches the kubernetes event loop for new/modified/deleted pods and captures them on disk.

Testing

Common Requirements

A python venv containing the necessary dependencies can be created using the following command:

python -m pip install --upgrade pip
pip install uv
uv venv
uv pip install -r constraints.txt
source .venv/bin/activate

Unit tests

Running the tests

The unit tests are written using pytest and can be run using the following command:

pytest src/hostfactory/tests/unit

Integration tests

Requirements

In order to test the provider, a Kubernetes cluster should be available with a valid kube config in any of the standard directories or environment variables.

The workdir which default to /var/tmp/hostfactory also needs to be writable.

Running the tests

The unit tests are written using pytest and can be run using the following command:

pytest src/hostfactory/tests/regression

Feedback

Please contact hpc-symphony-k8s@morganstanley.com for any questions.

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

hostfactory-1.0.0.tar.gz (39.0 kB view details)

Uploaded Source

Built Distribution

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

hostfactory-1.0.0-py3-none-any.whl (41.0 kB view details)

Uploaded Python 3

File details

Details for the file hostfactory-1.0.0.tar.gz.

File metadata

  • Download URL: hostfactory-1.0.0.tar.gz
  • Upload date:
  • Size: 39.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for hostfactory-1.0.0.tar.gz
Algorithm Hash digest
SHA256 dceb63ee8b3629e692ffe5ba6986b80d9b7e2b7dfc47c4b1767f8932b2c25e02
MD5 25e2eb540414fe82710ba81809976635
BLAKE2b-256 bf9ec6c80b19e36cc52f455d4cd9e42dc396ba41cbfc639f9f684a61f6a55cbc

See more details on using hashes here.

File details

Details for the file hostfactory-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: hostfactory-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 41.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for hostfactory-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5239940dc18f0117ec0ac08f3e4de981263299a2563353db7ceba575f1147fbf
MD5 f4780f11f003080f94d5191847ff0872
BLAKE2b-256 088c671bf62dafaf72a7e9ae48a2351525fb1d35b9f636690b7520abeb37484f

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