Skip to content

Commit

Permalink
Merge pull request #30 from NetApp/release-v2.5
Browse files Browse the repository at this point in the history
Merge v2.5 Release Branch
  • Loading branch information
mboglesby committed Mar 26, 2024
2 parents 6723750 + 51982c8 commit 53498d1
Show file tree
Hide file tree
Showing 20 changed files with 457 additions and 1,004 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ The NetApp DataOps Toolkit is a Python-based tool that simplifies the management

## Getting Started

The latest stable release of the NetApp DataOps Toolkit is version 2.4.0. It is recommended to always use the latest stable release. You can access the documentation for the latest stable release [here](https://github.com/NetApp/netapp-dataops-toolkit/tree/v2.4.0)
The latest stable release of the NetApp DataOps Toolkit is version 2.5.0. It is recommended to always use the latest stable release. You can access the documentation for the latest stable release [here](https://github.com/NetApp/netapp-dataops-toolkit/tree/v2.5.0)

The NetApp DataOps Toolkit comes in two different flavors. For access to the most capabilities, we recommend using the [NetApp DataOps Toolkit for Kubernetes](netapp_dataops_k8s/). This flavor supports the full functionality of the toolkit, including JupyterLab workspace and NVIDIA Triton Inference Server management capabilities, but requires access to a Kubernetes cluster.

Expand Down
4 changes: 2 additions & 2 deletions netapp_dataops_k8s/Examples/Airflow/ai-training-run.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@
# Define step to take a snapshot of the dataset volume for traceability
dataset_snapshot = KubernetesPodOperator(
namespace=namespace,
image="python:3",
image="python:3.11",
cmds=["/bin/bash", "-c"],
arguments=["\
python3 -m pip install netapp-dataops-k8s && \
Expand Down Expand Up @@ -144,7 +144,7 @@
# Define step to take a snapshot of the model volume for versioning/baselining
model_snapshot = KubernetesPodOperator(
namespace=namespace,
image="python:3",
image="python:3.11",
cmds=["/bin/bash", "-c"],
arguments=["\
python3 -m pip install netapp-dataops-k8s && \
Expand Down
4 changes: 2 additions & 2 deletions netapp_dataops_k8s/Examples/Airflow/clone-volume.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,11 +53,11 @@
# Define step to clone source volume
clone_volume = KubernetesPodOperator(
namespace=namespace,
image="python:3",
image="python:3.11",
cmds=["/bin/bash", "-c"],
arguments=[arg],
name="clone-volume-clone-volume",
task_id="clone-volume",
is_delete_operator_pod=True,
hostnetwork=False
)
)
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ def ai_training_run(
volume_snapshot_name = "dataset-{{workflow.uid}}"
dataset_snapshot = dsl.ContainerOp(
name="dataset-snapshot",
image="python:3",
image="python:3.11",
command=["/bin/bash", "-c"],
arguments=["\
python3 -m pip install netapp-dataops-k8s && \
Expand Down Expand Up @@ -85,7 +85,7 @@ def ai_training_run(
volume_snapshot_name = "kfp-model-{{workflow.uid}}"
model_snapshot = dsl.ContainerOp(
name="model-snapshot",
image="python:3",
image="python:3.11",
command=["/bin/bash", "-c"],
arguments=["\
python3 -m pip install netapp-dataops-k8s && \
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ def clone_volume(

# Create a clone of the source volume
name = "clone-volume"
image = "python:3"
image = "python:3.11"
command = ["/bin/bash", "-c"]
file_outputs = {"new_volume_pvc_name": "/new_volume_pvc_name.txt"}
args = "\
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ def delete_volume(
# Delete Snapshot
delete_snapshot = dsl.ContainerOp(
name="delete-snapshot",
image="python:3",
image="python:3.11",
command=["/bin/bash", "-c"],
arguments=["\
python3 -m pip install netapp-dataops-k8s && \
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ def delete_volume(
# Delete Volume
delete_volume = dsl.ContainerOp(
name="delete-volume",
image="python:3",
image="python:3.11",
command=["/bin/bash", "-c"],
arguments=["\
python3 -m pip install netapp-dataops-k8s && \
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ def netappCloudSyncUpdate(relationshipId: str, printResponse: bool = True, keepC
syncCloudSyncRelationship(relationshipID=relationshipId, waitUntilComplete=keepCheckingUntilComplete, printOutput=printResponse)

# Convert netappCloudSyncUpdate function to Kubeflow Pipeline ContainerOp named 'NetappCloudSyncUpdateOp'
NetappCloudSyncUpdateOp = comp.func_to_container_op(netappCloudSyncUpdate, base_image='python:3')
NetappCloudSyncUpdateOp = comp.func_to_container_op(netappCloudSyncUpdate, base_image='python:3.11')


# Define Kubeflow Pipeline
Expand Down Expand Up @@ -61,4 +61,4 @@ def replicate_data_cloud_sync(

if __name__ == '__main__' :
import kfp.compiler as compiler
compiler.Compiler().compile(replicate_data_cloud_sync, __file__ + '.yaml')
compiler.Compiler().compile(replicate_data_cloud_sync, __file__ + '.yaml')
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ def netappSnapMirrorUpdate(
syncSnapMirrorRelationship(uuid=uuid, waitUntilComplete=waitUntilComplete, printOutput=True)

# Convert netappSnapMirrorUpdate function to Kubeflow Pipeline ContainerOp named 'NetappSnapMirrorUpdateOp'
NetappSnapMirrorUpdateOp = comp.func_to_container_op(netappSnapMirrorUpdate, base_image='python:3')
NetappSnapMirrorUpdateOp = comp.func_to_container_op(netappSnapMirrorUpdate, base_image='python:3.11')


# Define Kubeflow Pipeline
Expand Down
21 changes: 2 additions & 19 deletions netapp_dataops_k8s/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ The NetApp DataOps Toolkit for Kubernetes supports Linux and macOS hosts.

The toolkit must be used in conjunction with a Kubernetes cluster in order to be useful. Additionally, [Trident](https://netapp.io/persistent-storage-provisioner-for-kubernetes/), NetApp's dynamic storage orchestrator for Kubernetes, and/or the [BeeGFS CSI driver](https://github.com/NetApp/beegfs-csi-driver/) must be installed within the Kubernetes cluster. The toolkit simplifies performing of various data management tasks that are actually executed by a NetApp maintained CSI driver. In order to facilitate this, the toolkit communicates with the appropriate driver via the Kubernetes API.

The toolkit is currently compatible with Kubernetes versions 1.17 and above, and OpenShift versions 4.4 and above.
The toolkit is currently compatible with Kubernetes versions 1.20 and above, and OpenShift versions 4.7 and above.

The toolkit is currently compatible with Trident versions 20.07 and above. Additionally, the toolkit is compatible with the following Trident backend types:

Expand All @@ -24,7 +24,7 @@ The toolkit is currently compatible with all versions of the BeeGFS CSI driver,

### Prerequisites

The NetApp DataOps Toolkit for Kubernetes requires that Python 3.8 or above be installed on the local host. Additionally, the toolkit requires that pip for Python3 be installed on the local host. For more details regarding pip, including installation instructions, refer to the [pip documentation](https://pip.pypa.io/en/stable/installing/).
The NetApp DataOps Toolkit for Kubernetes requires that Python 3.8, 3.9, 3.10, or 3.11 be installed on the local host. Additionally, the toolkit requires that pip for Python3 be installed on the local host. For more details regarding pip, including installation instructions, refer to the [pip documentation](https://pip.pypa.io/en/stable/installing/).

### Installation Instructions

Expand Down Expand Up @@ -67,23 +67,6 @@ In the [Examples](Examples/) directory, you will find the following examples per
Refer to the [Kubernetes documentation](https://kubernetes.io/docs/tasks/run-application/access-api-from-pod/) for more information on accessing the Kubernetes API from within a pod.
## Extended Functionality with Astra Control
The NetApp DataOps Toolkit provides several extended capabilities that require [Astra Control](https://cloud.netapp.com/astra). Any operation that requires Astra Control is specifically noted within the documentation as requiring Astra Control. The prerequisites outlined in this section are required in order to perform any operation that requires Astra Control.
The toolkit uses the Astra Control Python SDK to interface with the Astra Control API. The Astra Control Python SDK is installed automatically when you install the NetApp DataOps Toolkit using pip.
In order for the Astra Control Python SDK to be able to communicate with the Astra Control API, you must create a 'config.yaml' file containing your Astra Control API connection details. Refer to the [Astra Control Python SDK README](https://github.com/NetApp/netapp-astra-toolkits/tree/v2.1.3) for formatting details. Note that you do not need to follow the installation instructions outlined in the Astra Control Python SDK README; you only need to create the 'config.yaml' file. Once you have created the 'config.yaml' file, you must store it in one of the following locations:
- ~/.config/astra-toolkits/
- /etc/astra-toolkits/
- The directory pointed to by the shell environment variable 'ASTRATOOLKITS_CONF'
Additionally, you must set the shell environment variable 'ASTRA_K8S_CLUSTER_NAME' to the name of your specific Kubernetes cluster in Astra Control.
```sh
export ASTRA_K8S_CLUSTER_NAME="<Kubernetes_cluster_name_in_Astra_Control"
```

## Capabilities
The NetApp DataOps Toolkit for Kubernetes provides the following capabilities.
Expand Down
20 changes: 10 additions & 10 deletions netapp_dataops_k8s/docs/inference_server_management.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ The NetApp DataOps Toolkit for Kubernetes can be used to manage inference server

You can perform the following operation(s) using the toolkit's command line utility

| Triton Inference Server operations | Supported by BeeGFS | Supported by Trident | Requires Astra Control |
| ------------------------------------------------------------------------------------ | ------------------- | -------------------- | ---------------------- |
| [Deploy a new NVIDIA Triton Inference Server.](#cli-create-triton-server) | Yes | Yes | No |
| [Delete an NVIDIA Triton Inference Server.](#cli-delete-triton-server) | Yes | Yes | No |
| [List all NVIDIA Triton Inference Servers in a specific namespace.](#cli-list-triton)| Yes | Yes | No |
| Triton Inference Server operations | Supported by BeeGFS | Supported by Trident |
| ------------------------------------------------------------------------------------ | ------------------- | -------------------- |
| [Deploy a new NVIDIA Triton Inference Server.](#cli-create-triton-server) | Yes | Yes |
| [Delete an NVIDIA Triton Inference Server.](#cli-delete-triton-server) | Yes | Yes |
| [List all NVIDIA Triton Inference Servers in a specific namespace.](#cli-list-triton)| Yes | Yes |

### NVIDIA Triton Inference Server Management Operations

Expand Down Expand Up @@ -136,11 +136,11 @@ from netapp_dataops.k8s import list_triton_servers

The following server management operations are available within the set of functions.

| Triton Inference Server operations | Supported by BeeGFS | Supported by Trident | Requires Astra Control |
| ------------------------------------------------------------------------------------ | ------------------- | -------------------- | ---------------------- |
| [Deploy a new NVIDIA Triton Inference Server.](#lib-create-triton-server) | Yes | Yes | No |
| [Delete an NVIDIA Triton Inference Server.](#lib-delete-triton-server) | Yes | Yes | No |
| [List all NVIDIA Triton Inference Servers in a specific namespace.](#lib-list-triton)| Yes | Yes | No |
| Triton Inference Server operations | Supported by BeeGFS | Supported by Trident |
| ------------------------------------------------------------------------------------ | ------------------- | -------------------- |
| [Deploy a new NVIDIA Triton Inference Server.](#lib-create-triton-server) | Yes | Yes |
| [Delete an NVIDIA Triton Inference Server.](#lib-delete-triton-server) | Yes | Yes |
| [List all NVIDIA Triton Inference Servers in a specific namespace.](#lib-list-triton)| Yes | Yes |

### NVIDIA Triton Inference Server instance Management Operations

Expand Down
40 changes: 20 additions & 20 deletions netapp_dataops_k8s/docs/volume_management.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,16 @@ The NetApp DataOps Toolkit for Kubernetes can be used to manage persistent volum

You can perform volume management operations using the toolkit's command line utility. The command line utility supports the following operations.

| Kubernetes persistent volume management operations | Supported by BeeGFS | Supported by Trident | Requires Astra Control |
| ------------------------------------------------------------------------------------ | ------------------- | -------------------- | ---------------------- |
| [Clone a persistent volume.](#cli-clone-volume) | No | Yes | No |
| [Create a new persistent volume.](#cli-create-volume) | Yes | Yes | No |
| [Delete an existing persistent volume.](#cli-delete-volume) | Yes | Yes | No |
| [List all persistent volumes.](#cli-list-volumes) | Yes | Yes | No |
| [Create a new snapshot for a persistent volume.](#cli-create-volume-snapshot) | No | Yes | No |
| [Delete an existing snapshot.](#cli-delete-volume-snapshot) | No | Yes | No |
| [List all snapshots.](#cli-list-volume-snapshots) | No | Yes | No |
| [Restore a snapshot.](#cli-restore-volume-snapshot) | No | Yes | No |
| Kubernetes persistent volume management operations | Supported by BeeGFS | Supported by Trident |
| ------------------------------------------------------------------------------------ | ------------------- | -------------------- |
| [Clone a persistent volume.](#cli-clone-volume) | No | Yes |
| [Create a new persistent volume.](#cli-create-volume) | Yes | Yes |
| [Delete an existing persistent volume.](#cli-delete-volume) | Yes | Yes |
| [List all persistent volumes.](#cli-list-volumes) | Yes | Yes |
| [Create a new snapshot for a persistent volume.](#cli-create-volume-snapshot) | No | Yes |
| [Delete an existing snapshot.](#cli-delete-volume-snapshot) | No | Yes |
| [List all snapshots.](#cli-list-volume-snapshots) | No | Yes |
| [Restore a snapshot.](#cli-restore-volume-snapshot) | No | Yes |

### Kubernetes Persistent Volume Management Operations

Expand Down Expand Up @@ -329,16 +329,16 @@ from netapp_dataops.k8s import clone_volume, create_volume, delete_volume, list_
The following volume management operations are available within the set of functions.
| Kubernetes persistent volume management operations | Supported by BeeGFS | Supported by Trident | Requires Astra Control |
| ------------------------------------------------------------------------------------ | ------------------- | -------------------- | ---------------------- |
| [Clone a persistent volume.](#lib-clone-volume) | No | Yes | No |
| [Create a new persistent volume.](#lib-create-volume) | Yes | Yes | No |
| [Delete an existing persistent volume.](#lib-delete-volume) | Yes | Yes | No |
| [List all persistent volumes.](#lib-list-volumes) | Yes | Yes | No |
| [Create a new snapshot for a persistent volume.](#lib-create-volume-snapshot) | No | Yes | No |
| [Delete an existing snapshot.](#lib-delete-volume-snapshot) | No | Yes | No |
| [List all snapshots.](#lib-list-volume-snapshots) | No | Yes | No |
| [Restore a snapshot.](#lib-restore-volume-snapshot) | No | Yes | No |
| Kubernetes persistent volume management operations | Supported by BeeGFS | Supported by Trident |
| ------------------------------------------------------------------------------------ | ------------------- | -------------------- |
| [Clone a persistent volume.](#lib-clone-volume) | No | Yes |
| [Create a new persistent volume.](#lib-create-volume) | Yes | Yes |
| [Delete an existing persistent volume.](#lib-delete-volume) | Yes | Yes |
| [List all persistent volumes.](#lib-list-volumes) | Yes | Yes |
| [Create a new snapshot for a persistent volume.](#lib-create-volume-snapshot) | No | Yes |
| [Delete an existing snapshot.](#lib-delete-volume-snapshot) | No | Yes |
| [List all snapshots.](#lib-list-volume-snapshots) | No | Yes |
| [Restore a snapshot.](#lib-restore-volume-snapshot) | No | Yes |
### Kubernetes Persistent Volume Management Operations
Expand Down
Loading

0 comments on commit 53498d1

Please sign in to comment.