From 092008345413b05d51c75626cc67f5741326a9a6 Mon Sep 17 00:00:00 2001 From: jasonnovichRunAI <124490127+jasonnovichRunAI@users.noreply.github.com> Date: Thu, 3 Aug 2023 12:41:57 +0300 Subject: [PATCH 01/58] some corrections --- docs/Researcher/cli-reference/runai-submit-dist-TF.md | 2 +- docs/Researcher/cli-reference/runai-submit-dist-mpi.md | 2 +- docs/Researcher/cli-reference/runai-submit-dist-pytorch.md | 2 +- docs/home/whats-new-2-13.md | 1 + mkdocs.yml | 7 ++++++- 5 files changed, 10 insertions(+), 4 deletions(-) diff --git a/docs/Researcher/cli-reference/runai-submit-dist-TF.md b/docs/Researcher/cli-reference/runai-submit-dist-TF.md index e71ba4d931..824a926b4e 100644 --- a/docs/Researcher/cli-reference/runai-submit-dist-TF.md +++ b/docs/Researcher/cli-reference/runai-submit-dist-TF.md @@ -5,7 +5,7 @@ Submit a distributed TensorFlow training run:ai job to run. !!! Note - To use distributed training you need to have installed the < insert TensorFlow operator here > as specified < insert pre-requisites link here >. + To use distributed training you need to have installed the TensorFlow operator as specified in [Distributed training](../../admin/runai-setup/cluster-setup/cluster-prerequisites.md#distributed-training). Syntax notes: diff --git a/docs/Researcher/cli-reference/runai-submit-dist-mpi.md b/docs/Researcher/cli-reference/runai-submit-dist-mpi.md index 83de206581..04e591b360 100644 --- a/docs/Researcher/cli-reference/runai-submit-dist-mpi.md +++ b/docs/Researcher/cli-reference/runai-submit-dist-mpi.md @@ -3,7 +3,7 @@ Submit a Distributed Training (MPI) Run:ai Job to run. !!! Note - To use distributed training you need to have installed the Kubeflow MPI Operator as specified [here](../../../admin/runai-setup/cluster-setup/cluster-prerequisites/#distributed-training-via-kubeflow-mpi) + To use distributed training you need to have installed the Kubeflow MPI Operator as specified in [Distributed training](../../admin/runai-setup/cluster-setup/cluster-prerequisites.md#distributed-training). Syntax notes: diff --git a/docs/Researcher/cli-reference/runai-submit-dist-pytorch.md b/docs/Researcher/cli-reference/runai-submit-dist-pytorch.md index 9ed82d7a9a..96365ce10e 100644 --- a/docs/Researcher/cli-reference/runai-submit-dist-pytorch.md +++ b/docs/Researcher/cli-reference/runai-submit-dist-pytorch.md @@ -5,7 +5,7 @@ Submit a distributed PyTorch training run:ai job to run. !!! Note - To use distributed training you need to have installed the < insert pytorch operator here > as specified < insert pre-requisites link here >. + To use distributed training you need to have installed the Pytorch operator as specified in [Distributed training](../../admin/runai-setup/cluster-setup/cluster-prerequisites.md#distributed-training). Syntax notes: diff --git a/docs/home/whats-new-2-13.md b/docs/home/whats-new-2-13.md index 1d89e9aea2..5b5731deb1 100644 --- a/docs/home/whats-new-2-13.md +++ b/docs/home/whats-new-2-13.md @@ -20,6 +20,7 @@ July 2023 | RUN-11120 | Fixed an issue where the *Projects* table does not show correct metrics when Run:ai version 2.13 is paired with a Run:ai 2.8 cluster. | | RUN-11121 | Fixed an issue where the wrong over quota memory alert is shown in the *Quota management* pane in project edit form. | | RUN-11272 | Fixed an issue in OpenShift environments where the selection in the cluster drop down in the main UI does not match the cluster selected on the login page. | + ## Version 2.13.4 ### Release date diff --git a/mkdocs.yml b/mkdocs.yml index 2135477dbd..ad751a555c 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -32,7 +32,11 @@ markdown_extensions: - pymdownx.inlinehilite - pymdownx.snippets: base_path: docs/docs - - pymdownx.superfences + - pymdownx.superfences: + custom_fences: + - name: mermaid + class: mermaid + format: !!python/name:pymdownx.superfences.fence_code_format - pymdownx.tabbed: alternate_style: true - pymdownx.details @@ -140,6 +144,7 @@ nav: - 'Overview': 'index.md' - 'System Components' : 'home/components.md' - 'Whats New' : + - 'Version 2.14' : 'home/whats-new-2-14.md' - 'Version 2.13' : 'home/whats-new-2-13.md' - 'Version 2.12' : 'home/whats-new-2-12.md' - 'Version 2.10' : 'home/whats-new-2-10.md' From b26005807ccd5b7ef194c1dcf99f8a7a4e8887b7 Mon Sep 17 00:00:00 2001 From: Itay Vallach Date: Sun, 6 Aug 2023 13:59:41 +0300 Subject: [PATCH 02/58] Update allow-external-access-to-containers.md --- .../allow-external-access-to-containers.md | 51 +++++++++---------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/docs/admin/runai-setup/config/allow-external-access-to-containers.md b/docs/admin/runai-setup/config/allow-external-access-to-containers.md index 6564d15769..18811c834c 100644 --- a/docs/admin/runai-setup/config/allow-external-access-to-containers.md +++ b/docs/admin/runai-setup/config/allow-external-access-to-containers.md @@ -37,37 +37,36 @@ To address this issue, Run:ai provides support for __host-based routing__. When To enable host-based routing you must perform the following steps: -1. Create a second DNS entry `*.`, pointing to the same IP as the original [Cluster URL](../cluster-setup/cluster-prerequisites.md#cluster-url) DNS. +1. Create a second DNS entry `*.`, pointing to the same IP as the original [Cluster URL](../cluster-setup/cluster-prerequisites.md#cluster-url) DNS. 2. Obtain a __star__ SSL certificate for this DNS. 3. Add the certificate as a secret: -=== "SaaS" - ``` - kubectl create secret tls runai-cluster-domain-star-tls-secret -n runai \ - --cert /path/to/fullchain.pem --key /path/to/private.pem - ``` - -=== "Self hosted" - ``` - kubectl create secret tls runai-cluster-domain-star-tls-secret -n runai-backend \ - --cert /path/to/fullchain.pem --key /path/to/private.pem - ``` - -4. Create an ingress rule to direct traffic: - -=== "SaaS" - ``` - kubectl patch ingress researcher-service-ingress -n runai --type json \ - --patch '[{ "op": "add", "path": "/spec/tls/-", "value": { "hosts": [ "*." ], "secretName": "runai-cluster-domain-star-tls-secret" } }]' - ``` - -=== "Self hosted" - ``` - kubectl patch ingress runai-backend-ingress -n runai-backend --type json \ - --patch '[{ "op": "add", "path": "/spec/tls/-", "value": { "hosts": [ "*." ], "secretName": "runai-cluster-domain-star-tls-secret" } }]' - ``` +``` +kubectl create secret tls runai-cluster-domain-star-tls-secret -n runai \ + --cert /path/to/fullchain.pem --key /path/to/private.pem +``` + +4. Create the following ingress rule: + +``` YAML +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: runai-cluster-domain-star-ingress + namespace: runai +spec: + ingressClassName: nginx + rules: + - host: '*.' + tls: + - hosts: + - '*.' + secretName: runai-cluster-domain-star-tls-secret +``` + +Replace `` as described above. 5. Edit Runaiconfig to generate the URLs correctly: From 52f59221bbee1970575668cdc0725756c23c26d3 Mon Sep 17 00:00:00 2001 From: jasonnovichRunAI <124490127+jasonnovichRunAI@users.noreply.github.com> Date: Tue, 8 Aug 2023 10:37:20 +0300 Subject: [PATCH 03/58] changed headings --- docs/admin/integration/ray.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/admin/integration/ray.md b/docs/admin/integration/ray.md index fb4ab52634..78ca42c443 100644 --- a/docs/admin/integration/ray.md +++ b/docs/admin/integration/ray.md @@ -2,7 +2,7 @@ Ray is an open-source unified framework for scaling AI and Python applications like machine learning. It provides the compute layer for parallel processing so that you don’t need to be a distributed systems expert. -## Sumitting Ray jobs +## Install Ray operator You must install KubeRay version 0.5.0 or greater in order to work with the different types of Ray workloads. @@ -16,7 +16,8 @@ helm install kuberay-operator kuberay/kuberay-operator -n kuberay-operator --ver For more information, see [Deploying RayKube operator](https://docs.ray.io/en/latest/cluster/kubernetes/getting-started.html#deploying-the-kuberay-operator){target=_blank}. -## Submit Ray jobs +## Submit a Ray job + Run:AI integrates with ray by interacting with the kuberay CRDs (RayJob, RayServe and RayCluster). The following is an example of RayJob scheduled by Run:AI. Use the following command to submit your Ray job: From f83414b7568a095ce3cda9e40a9b623ffa476105 Mon Sep 17 00:00:00 2001 From: Yaron Date: Mon, 7 Aug 2023 15:29:24 +0300 Subject: [PATCH 04/58] remove-stuff-related-to-28-29 --- .../cluster-setup/cluster-install.md | 6 +----- .../customize-cluster-install.md | 20 ------------------- .../self-hosted/k8s/additional-clusters.md | 2 -- 3 files changed, 1 insertion(+), 27 deletions(-) diff --git a/docs/admin/runai-setup/cluster-setup/cluster-install.md b/docs/admin/runai-setup/cluster-setup/cluster-install.md index 6645aefe54..42bbdcd2f0 100644 --- a/docs/admin/runai-setup/cluster-setup/cluster-install.md +++ b/docs/admin/runai-setup/cluster-setup/cluster-install.md @@ -31,11 +31,7 @@ Using the Wizard: * Go to `.run.ai/dashboards/now`. * Verify that the number of GPUs on the top right reflects your GPU resources on your cluster and the list of machines with GPU resources appears on the bottom line. - - -:octicons-versions-24: Version 2.9 and up - -Run: `kubectl get cm runai-public -n runai -o jsonpath='{.data}' | yq -P` +* Run: `kubectl get cm runai-public -n runai -o jsonpath='{.data}' | yq -P` (assumes the [yq](https://mikefarah.gitbook.io/yq/v/v3.x/){target=_blank} is instaled) diff --git a/docs/admin/runai-setup/cluster-setup/customize-cluster-install.md b/docs/admin/runai-setup/cluster-setup/customize-cluster-install.md index 70e3b82413..930c5799d7 100644 --- a/docs/admin/runai-setup/cluster-setup/customize-cluster-install.md +++ b/docs/admin/runai-setup/cluster-setup/customize-cluster-install.md @@ -13,30 +13,10 @@ The Run:ai cluster creation wizard requires the download of a _Helm values file_ | `runai-operator.config.global.runtime` | `docker` | Defines the container runtime of the cluster (supports `docker` and `containerd`). Set to `containerd` when using Tanzu | | `runai-operator.config.global.nvidiaDcgmExporter.namespace` | `gpu-operator` | The namespace where dcgm-exporter (or gpu-operator) was installed | | `runai-operator.config.global.nvidiaDcgmExporter.installedFromGpuOperator` | `true` | Indicated whether the dcgm-exporter was installed via gpu-operator or not | -| `kube-prometheus-stack.enabled` | `true` | (Version 2.8 or lower) Set to `false` when the cluster has an existing Prometheus installation that is __not based__ on the Prometheus __operator__. This setting requires Run:ai customer support | -| `kube-prometheus-stack.prometheusOperator.enabled` | `true` | (Version 2.8 or lower) Set to `false` when the cluster has an existing Prometheus installation __based__ on the Prometheus __operator__ and Run:ai should use the existing one rather than install a new one | -| `prometheus-adapter.enabled` | `false` | (Version 2.8 or lower) Install Prometheus Adapter. Used for Inference workloads using a custom metric for autoscaling. Set to `true` if __Prometheus Adapter__ is not already installed in the cluster | -| `prometheus-adapter.prometheus` | The address of the default Prometheus Service | (Version 2.8 or lower) If you installed your own custom Prometheus Service, set this field accordingly with `url` and `port` | -### Prometheus - -=== "Version 2.9 or higher" - Not relevant - -=== "Version 2.8 or lower" - The Run:ai Cluster installation uses [Prometheus](https://prometheus.io/){target=_blank}. There are 3 alternative configurations: - - 1. Run:ai installs Prometheus (default). - 2. Run:ai uses an existing Prometheus installation based on the Prometheus operator. - 3. Run:ai uses an existing Prometheus installation based on a regular Prometheus installation. - - For option 2, disable the flag `kube-prometheus-stack.prometheusOperator.enabled`. For option 3, please contact Run:ai Customer support. - - For options 2 and 3, if you enabled `prometheus-adapter`, please configure it as described in the Prometheus Adapter [documentation](https://github.com/prometheus-community/helm-charts/blob/97f23f1ff7ca62f33ab4dd339cc62addec7eccde/charts/prometheus-adapter/values.yaml#L34) - ## Understanding Custom Access Roles diff --git a/docs/admin/runai-setup/self-hosted/k8s/additional-clusters.md b/docs/admin/runai-setup/self-hosted/k8s/additional-clusters.md index 36c11f465b..79b667cfb5 100644 --- a/docs/admin/runai-setup/self-hosted/k8s/additional-clusters.md +++ b/docs/admin/runai-setup/self-hosted/k8s/additional-clusters.md @@ -2,8 +2,6 @@ The first Run:ai cluster is typically installed on the same Kubernetes cluster as the Run:ai control plane. Run:ai supports multiple clusters per single control plane. This document is about installing additional clusters on __different Kubernetes clusters__. -The instructions are for Run:ai version 2.8 and up. - ## Installation From 0b95a86325db860805596e94fbf8ea1d14acc9e9 Mon Sep 17 00:00:00 2001 From: Itay Vallach Date: Sun, 6 Aug 2023 13:59:41 +0300 Subject: [PATCH 05/58] Update allow-external-access-to-containers.md --- .../allow-external-access-to-containers.md | 51 +++++++++---------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/docs/admin/runai-setup/config/allow-external-access-to-containers.md b/docs/admin/runai-setup/config/allow-external-access-to-containers.md index 6564d15769..18811c834c 100644 --- a/docs/admin/runai-setup/config/allow-external-access-to-containers.md +++ b/docs/admin/runai-setup/config/allow-external-access-to-containers.md @@ -37,37 +37,36 @@ To address this issue, Run:ai provides support for __host-based routing__. When To enable host-based routing you must perform the following steps: -1. Create a second DNS entry `*.`, pointing to the same IP as the original [Cluster URL](../cluster-setup/cluster-prerequisites.md#cluster-url) DNS. +1. Create a second DNS entry `*.`, pointing to the same IP as the original [Cluster URL](../cluster-setup/cluster-prerequisites.md#cluster-url) DNS. 2. Obtain a __star__ SSL certificate for this DNS. 3. Add the certificate as a secret: -=== "SaaS" - ``` - kubectl create secret tls runai-cluster-domain-star-tls-secret -n runai \ - --cert /path/to/fullchain.pem --key /path/to/private.pem - ``` - -=== "Self hosted" - ``` - kubectl create secret tls runai-cluster-domain-star-tls-secret -n runai-backend \ - --cert /path/to/fullchain.pem --key /path/to/private.pem - ``` - -4. Create an ingress rule to direct traffic: - -=== "SaaS" - ``` - kubectl patch ingress researcher-service-ingress -n runai --type json \ - --patch '[{ "op": "add", "path": "/spec/tls/-", "value": { "hosts": [ "*." ], "secretName": "runai-cluster-domain-star-tls-secret" } }]' - ``` - -=== "Self hosted" - ``` - kubectl patch ingress runai-backend-ingress -n runai-backend --type json \ - --patch '[{ "op": "add", "path": "/spec/tls/-", "value": { "hosts": [ "*." ], "secretName": "runai-cluster-domain-star-tls-secret" } }]' - ``` +``` +kubectl create secret tls runai-cluster-domain-star-tls-secret -n runai \ + --cert /path/to/fullchain.pem --key /path/to/private.pem +``` + +4. Create the following ingress rule: + +``` YAML +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: runai-cluster-domain-star-ingress + namespace: runai +spec: + ingressClassName: nginx + rules: + - host: '*.' + tls: + - hosts: + - '*.' + secretName: runai-cluster-domain-star-tls-secret +``` + +Replace `` as described above. 5. Edit Runaiconfig to generate the URLs correctly: From 4ed2da0ac2977b0dd8f3d0cf7349404130fa7b21 Mon Sep 17 00:00:00 2001 From: jasonnovichRunAI <124490127+jasonnovichRunAI@users.noreply.github.com> Date: Mon, 31 Jul 2023 15:15:06 +0300 Subject: [PATCH 06/58] Merge pull request #424 from run-ai/master (#425) From 30ddaa9e96a4f911419db8c3256e6047ce919db0 Mon Sep 17 00:00:00 2001 From: jasonnovichRunAI <124490127+jasonnovichRunAI@users.noreply.github.com> Date: Mon, 31 Jul 2023 16:02:50 +0300 Subject: [PATCH 07/58] javier-set-fix2 (#430) Co-authored-by: Yaron From 8d3b9623867ac6cf894a5f08e600074a689eebfd Mon Sep 17 00:00:00 2001 From: jasonnovichRunAI <124490127+jasonnovichRunAI@users.noreply.github.com> Date: Thu, 10 Aug 2023 17:29:02 +0300 Subject: [PATCH 08/58] [RUN-7510] RBAC additions to the docs --- docs/admin/admin-ui-setup/project-setup.md | 31 ++++++++++++++-------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/docs/admin/admin-ui-setup/project-setup.md b/docs/admin/admin-ui-setup/project-setup.md index f449e6456d..d823322c23 100644 --- a/docs/admin/admin-ui-setup/project-setup.md +++ b/docs/admin/admin-ui-setup/project-setup.md @@ -46,12 +46,10 @@ As an administrator, you may want to disconnect the two parameters. So, for exam !!! Note To be able to create or edit Projects, you must have *Editor* access. See the [Users](admin-ui-users.md) documentation. -1. In the left-menu, press **Projects**. -1.5 On the top right, select "Add New Project" +1. In the left-menu, press **Projects**, then press *+Add New Project*. 2. Choose a *Department* from the drop-down. The default is `default`. 3. Enter a *Project name*. Press *Namespace* to set the namespace associated with the project. You can either create the namespace from the project name (default) or enter an existing namespace. -4. In *Access control*, add one or more applications or users. If your user or application isn't in the list, see [Roles and permissions](admin-ui-users.md#roles-and-permissions), and verify that the users have the correct permissions. To change user permissions, see [Working with users](admin-ui-users.md#working-with-users). -5. In *Quota management*, configure the node pool priority (if editable), the GPUs, CPUs, CPU memory, and Over-quota priority settings. Configure the following: +4. In *Quota management*, configure the node pool priority (if editable), the GPUs, CPUs, CPU memory, and Over-quota priority settings. Configure the following: * *Order of priority*—the priority the node pool will receive when trying to schedule workloads. For more information, see [Node pool priority](../../Researcher/scheduling/using-node-pools.md#multiple-node-pools-selection). * *GPUs*—the number of GPUs in the node pool. Press *GPUs* and enter the number of GPUs, then press *Apply* to save. @@ -59,16 +57,27 @@ As an administrator, you may want to disconnect the two parameters. So, for exam * *CPU Memory*—the amount of memory the CPUs will be allocated. Press *CPU Memory*, enter an amount of memory, then press *Apply* to save. * Over-quota priority—the priority for the specific node pool to receive over-quota allocations. -6. (Optional) In the *Scheduling rules* pane, use the dropdown arrow to open the pane. Press on the *+ Rule* button to add a new rule to the project. Add one (or more) of the following rule types: +5. (Optional) In the *Scheduling rules* pane, use the dropdown arrow to open the pane. Press on the *+ Rule* button to add a new rule to the project. Add one (or more) of the following rule types: * *Idle GPU timeout*—controls the amount of time that specific workload GPUs which are idle will be remain assigned to the project before getting reassigned. * *Workspace duration*—limit the length of time a workspace will before being terminated. * *Training duration*—limit the length of time training workloads will run. * *Node type (Affinity)*—limits specific workloads to run on specific node types. + + + +## Assign users to a Project + + -## Assign Users to Project +To assign *Access rules* to the project: -When [Researcher Authentication](../runai-setup/authentication/researcher-authentication.md) is enabled, the Project form will contain an additional *Access Control* tab. The tab will allow you to assign Researchers to their Projects. +1. Select a project from the list, then press *Access rules*, then press then press *+Access rule*. +2. From the *Subject type* dropdown choose *User* or *Application*, then enter the user name or the application name. +3. From the *Role* dropdown, select the desired role, then press *Save rule*. +4. If you want to add another rule, use the *+Access rule*. +5. When all the rules are configured, press *Close*. If you are using Single-sign-on, you can also assign Groups @@ -175,9 +184,9 @@ To set a duration limit for interactive Jobs: * Create a Project or edit an existing Project. * Go to the *Time Limit* tab * You can limit interactive Jobs using two criteria: - * Set a hard time limit (day, hour, minute) to an Interactive Job, regardless of the activity of this Job, e.g. stop the Job after 1 day of work. - * Set a time limit for Idle Interactive Jobs, i.e. an Interactive Job idle for X time is stopped. Idle means no GPU activity. - * You can set if this idle time limit is effective for Interactive Jobs that are Preemptible, non-Preemptible, or both. + * Set a hard time limit (day, hour, minute) to an Interactive Job, regardless of the activity of this Job, e.g. stop the Job after 1 day of work. + * Set a time limit for Idle Interactive Jobs, i.e. an Interactive Job idle for X time is stopped. Idle means no GPU activity. + * You can set if this idle time limit is effective for Interactive Jobs that are Preemptible, non-Preemptible, or both. The setting only takes effect for Jobs that have started after the duration has been changed. @@ -187,7 +196,7 @@ To set a duration limit for Training Jobs: * Create a Project or edit an existing Project. * Go to the *Time Limit* tab: - * Set a time limit for Idle Training Jobs, i.e. a Training Job idle for X time is stopped. Idle means no GPU activity. + * Set a time limit for Idle Training Jobs, i.e. a Training Job idle for X time is stopped. Idle means no GPU activity. The setting only takes effect for Jobs that have started after the duration has been changed. From ac03b65b8a549759906a5ef0028dc6fd0f80776e Mon Sep 17 00:00:00 2001 From: jasonnovichRunAI <124490127+jasonnovichRunAI@users.noreply.github.com> Date: Mon, 14 Aug 2023 10:18:06 +0300 Subject: [PATCH 09/58] [RUN-9002] updates to the main PR --- docs/admin/admin-ui-setup/admin-ui-users.md | 65 ++++------- docs/admin/admin-ui-setup/department-setup.md | 35 ++++-- .../admin-ui-setup/img/settings-icon.png | Bin 0 -> 520 bytes .../admin-ui-setup/img/tools-and-settings.svg | 3 + docs/admin/runai-setup/access-control/rbac.md | 109 ++++++++++++++++++ docs/home/whats-new-2-14.md | 21 ++++ docs/images/scope-icon.svg | 3 + mkdocs.yml | 6 +- 8 files changed, 186 insertions(+), 56 deletions(-) create mode 100644 docs/admin/admin-ui-setup/img/settings-icon.png create mode 100644 docs/admin/admin-ui-setup/img/tools-and-settings.svg create mode 100644 docs/admin/runai-setup/access-control/rbac.md create mode 100644 docs/images/scope-icon.svg diff --git a/docs/admin/admin-ui-setup/admin-ui-users.md b/docs/admin/admin-ui-setup/admin-ui-users.md index 01701d7e3e..f743756a62 100644 --- a/docs/admin/admin-ui-setup/admin-ui-users.md +++ b/docs/admin/admin-ui-setup/admin-ui-users.md @@ -2,10 +2,10 @@ ## Introduction -The Run:ai User Interface allows the creation of Run:ai Users. Run:ai Users can receive varying levels of access to the Administration UI and submit Jobs on the Cluster. +The Run:ai UI allows the creation of Run:ai Users. Users are assigned levels of access to the to all aspects of the UI including submitting jobs on the cluster. !!! Tip - It is possible to connect the Run:ai user interface to the organization's directory and use single sign-on. This allows you to set Run:ai roles for users and groups from the organizational directory. For further information see [single sign-on configuration](../runai-setup/authentication/sso.md). + It is possible to connect the Run:ai UI to the organization's directory and use single sign-on (SSO). This allows you to set Run:ai roles for users and groups from the organizational directory. For further information see [single sign-on configuration](../runai-setup/authentication/sso.md). ## Working with Users @@ -14,54 +14,29 @@ You can create users, as well as update and delete users. ### Create a User !!! Note - To be able to review, add, update and delete users, you must have an *Administrator* access. If you do not have such access, please contact an Administrator. + To be able to review, add, update and delete users, you must have *System Administrator* access. To upgrade your access, contact a system administrator. -:octicons-versions-24: Department Admin is available in version 2.10 and later. +To create a new user: -1. Login to the Users area of the Run:ai User interface at `company-name.run.ai`. -2. Select the `Users` tab for local users, or the `SSO Users` tab for SSO users. -3. On the top right, select "NEW USER". -4. Enter the user's email. -5. Select Roles. More than one role can be selected. Available roles are: - * **Administrator**—Can manage Users and install Clusters. - * **Editor**—Can manage Projects and Departments. - * **Viewer**—View-only access to the Run:ai User Interface. - * **Researcher**—Can submit ML workloads. Setting a user as a *Researcher* also requires [assigning the user to projects](../project-setup/#create-a-new-project.md). - * **Research Manager**—Can act as *Researcher* in all projects, including new ones to be created in the future. - * **ML Engineer**—Can view and manage deployments and cluster resources. Available only when [Inference module is installed](../workloads/inference-overview.md). - * **Department Administrator**—Can manage Departments, descendent Projects and Workloads. +1. Login to the Run:ai UI at `company-name.run.ai`. +2. Press the ![Tools and Settings](img/tools-and-settings.svg) icon, then select *Users*. +3. Press *New user* and enter the user's email address, then press *Create*. +4. Review the new user information and note the temporary password that has been assigned. You can opt to send the user an introductory email by selecting the checkbox. +5. When complete, press *Done*. - For more information, [Roles and permissions](#roles-and-permissions). +## Assigning access rules to users -6. (Optional) Select Cluster(s). This determines what Clusters are accessible to this User. -7. Press "Save". +Once you have created the users you can assign them *Access rules*. This provides the needed authorization to access system assets and resources. -You will get the new user credentials and have the option to send the credentials by email. +To add an *Access rule* to a user: -### Roles and permissions - -Roles provide a way to group permissions and assign them to either users or user groups. The role identifies the collection of permissions that administrators assign to users or user groups. Permissions define the actions that users can perform on the managed entities. The following table shows the default roles and permissions. +1. Select the user, then press *Access rules*, then press *+Access rule*. +2. From the dropdown, select a *Role*. +3. Press on the ![Scope](../../images/scope-icon.svg) and select a scope for the user. +4. After selecting all the required scopes, press *Save rule*. +5. If you want to add another rule, use the *+Access rule*. +6. When all the rules are configured, press *Done*. -| Managed Entity / Roles | Admin | Dep. Admin | Editor | Research Manager | Researcher | ML Eng. | Viewer | -|:--|:--|:--|:--|:--|:--|:--|:--| -| Assign (Settings) Users/Groups/Apps to Roles | CRUD (all roles) | CRUD (Proj. Researchers and ML Engineers only) | N/A | N/A | N/A | N/A | N/A | -| Assign Users/Groups/Apps to Organizations | R (Projects, Departments) | CRUD (Projects only) | CRUD (Projects, Departments) | N/A | N/A | N/A | N/A | -| Departments | R | R | CRUD | N/A | N/A | R | R | -| Projects | R | CRUD | CRUD | R | R | R | R | -| Jobs | R | R | R | R | CRUD | N/A | R | -| Deployments | R | R | R | N/A | N/A | CRUD | R | -| Workspaces | R | R | R | R | CRUD | N/A | N/A | -| Environments | CRUD | CRUD | CRUD | CRUD | CRUD | N/A | N/A | -| Data Sources | CRUD | CRUD | CRUD | CRUD | CRUD | N/A | N/A | -| Compute Resources | CRUD | CRUD | CRUD | CRUD | CRUD | N/A | N/A | -| Templates | CRUD | CRUD | CRUD | CRUD | CRUD | N/A | N/A | -| Clusters | CRUD | N/A | R | N/A | N/A | R | R | -| Node Pools | CRUD | N/A | R | N/A | N/A | R | R | -| Nodes | R | N/A | R | N/A | N/A | R | R | -| Settings (General, Credentials) | CRUD | N/A | N/A | N/A | N/A | N/A | N/A | -| Events History | R | N/A | N/A | N/A | N/A | N/A | N/A | -| Dashboard.Overview | R | R | R | R | R | R | R | -| Dashboards.Analytics | R | R | R | R | R | R | R | -| Dashboards.Consumption | R | N/A | N/A | N/A | N/A | N/A | N/A | +### Roles and permissions -Permissions: **C** = Create, **R** = Read, **U** = Update, **D** = Delete +Roles provide a way to group permissions and assign them to either users or user groups. The role identifies the collection of permissions that administrators assign to users or user groups. Permissions define the actions that users can perform on the managed entities. The following table shows the default roles and permissions. For more information on roles, see [Role based access control](../runai-setup/access-control/rbac.md). diff --git a/docs/admin/admin-ui-setup/department-setup.md b/docs/admin/admin-ui-setup/department-setup.md index 20abbb479b..fc00c9e089 100644 --- a/docs/admin/admin-ui-setup/department-setup.md +++ b/docs/admin/admin-ui-setup/department-setup.md @@ -56,21 +56,39 @@ To add a new department: 1. In the **Departments** grid, press **New Department**. 2. Enter a name. -3. In *Quota management* configure the number GPUs, CPUs, and CPU memory. -4. In *Access control* select a user or application to be department administrator. If there are no users assigned the role of department administrator, see [Assigning Department Administrator role](#assigning-department-administrator-role). +3. In *Quota management* configure the number GPUs, CPUs, and CPU memory, then press *Save*. + + ### Assigning Department Administrator role +There are two ways to add *Department Administrator* roles to a department. + +The first is through the *Users* UI, and the second is through the *Access rules* that you can assign to a department. + +#### Users UI + You can create a new user with the *Department Administrator* role, or add the role to existing users. To create a new user with this role, see [Create a user](admin-ui-users.md#create-a-user). To add this role to an existing user: -1. Go to `Settings | Users`. -2. Select a user from the list and then press `Edit User`. -3. Select the `Department Admin` role from the list. (Deselect to remove the role from the user). -4. Press save when complete. +1. Press the ![Tools and Settings](img/tools-and-settings.svg) icon, then select *Users*.. +2. Select a user, then press *Access rules*, then press *+Access rule*. +3. Select the `Department Administrator` role from the list. +4. Press on the ![Scope](../../images/scope-icon.svg) and select one or more departments. +5. Press *Save rule* and then *Close*. -After you have created the user with the Department Administrator role, you will need to assign the user to the correct department. +#### Assigning the access rule to the department + +To assign the *Access rule* to the department: + +1. Select a department from the list, then press *Access rules*, then press then press *+Access rule*. +2. From the *Subject type* dropdown choose *User* or *Application*, then enter the user name or the application name. +3. From the *Role* dropdown, select *Department administrator*, then press *Save rule*. +4. If you want to add another rule, use the *+Access rule*. +5. When all the rules are configured, press *Close*. + + ### Assigning Projects to Departments diff --git a/docs/admin/admin-ui-setup/img/settings-icon.png b/docs/admin/admin-ui-setup/img/settings-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..01602ffc34cea439558887036e6e855a74401919 GIT binary patch literal 520 zcmeAS@N?(olHy`uVBq!ia0vp^Vn8gy!3HEdYt9+~DaPU;cPEB*=VV?2IWDOYo@u_m z3|c@o2Loe!CIbsd2@p#GF#`kh0!9XAAk7F8TfhXD6H(nO<+T1%%MGiqItu=oLU$J_-8B1ibI z9Gh7ULRso3o*7gjr;IrdWfy9nU>)Z?|ysxb$9Qc-aR{Z-FId7 z3kMvvl#AB|nax-6)tM}u+uFB)b*J-J=(B%Z9-Y-3u*QhNwry{PLAE?9qucMQ%pNdwf4I#Vg)l- uI*FH7t#9K{f9u1u$i6qm>Es$lrhN>j^4O*xn%1=h6bqiNelF{r5}E+Y + + diff --git a/docs/admin/runai-setup/access-control/rbac.md b/docs/admin/runai-setup/access-control/rbac.md new file mode 100644 index 0000000000..889db164c8 --- /dev/null +++ b/docs/admin/runai-setup/access-control/rbac.md @@ -0,0 +1,109 @@ +# Role based access control + +User authorization to system resources and assets is managed using [Role-based access control(RBAC)](https://en.wikipedia.org/wiki/Role-based_access_control){target=_blank}. RBAC is a policy-neutral access control mechanism defined around roles and privileges. The components of RBAC make it simple to manage access to system resources and assets. + +## RBAC components + +Run:ai uses the following components for RBAC: + +### Subjects + +A *Subject* is an entity that receives the rule. *Subjects* are: + +* Users +* Applications +* Groups (SSO only) + +### Roles + +A role is a combination of entities and actions. Run:ai supports the following roles and actions: + +| Managed Entity | System Admin (1) | Department Admin (4) | Editor (5) | Research Manager | Researcher | ML Eng. | Viewer | Researcher L1 | Environments Admin | Data Sources Admin | Compute Resources Admin | Templates Admin | Department Viewer | +|:-|:-|:-|:-|:-|:-|:-|:-|:-|:-|:-|:-|:-|:-| +| Create local users and applications | CRUD | CRUD | | | | | | | | | | | | +| Assign Users/Groups/Apps to Roles with scopes (Departments, Projects) | CRUD | CRUD | CRUD | | | | | | | | | | | +| Roles | CRUD | R | R | | | | | | | | | | | +| Departments | CRUD | R (6) | CRUD | | | R | R | | R | R | R | R | R | +| Projects | CRUD | CRUD | CRUD | R (2) (3) | R | R | R | R | R | R | R | R | R | +| Jobs | CRUD | CRUD | CRUD | R | CRUD | | R | CRUD | R | R | R | R | R | +| Deployments | CRUD | CRUD | R | | | CRUD | R | | | | | | R | +| Workspaces | CRUD | CRUD | CRUD | R | CRUD | | R | CRUD | R | R | R | R | R | +| Trainings | CRUD | CRUD | CRUD | R | CRUD | | R | CRUD | R | R | R | R | R | +| Environments | CRUD | CRUD | CRUD | CRUD | CRUD | | R | R | CRUD | R | R | R | R | +| Data Sources | CRUD | CRUD | CRUD | CRUD | CRUD | | R | R | R | CRUD | R | R | R | +| Compute Resources | CRUD | CRUD | CRUD | CRUD | CRUD | | R | R | R | R | CRUD | R | R | +| Templates | CRUD | CRUD | CRUD | CRUD | CRUD | | R | R | R | R | R | CRUD | R | +| Policies (7) | CRUD | CRUD | R | R | R | R | R | R | R | R | R | R | R | +| Clusters | CRUD | R | R | R | R | R | R | R | R | R | R | R | R | +| Node Pools | CRUD | R | R | | | R | R | | | | | | | +| Nodes | R | R | R | | | R | R | | | | | | | +| Settings.General | CRUD | | | | | | | | | | | | | +| Credentials (Settings.Cre...) | CRUD | R | R | R | R | R | R | R | | R | | | | +| Events History | R | | | | | | | | | | | | | +| Dashboard.Overview | R | R | R | R | R | R | R | R | R | R | R | R | R | +| Dashboards.Analytics | R | R | R | R | R | R | R | R | R | R | R | R | R | +| Dashboards.Consumption | R | R | | | | | | | | | | | | + +Permissions: **C** = Create, **R** = Read, **U** = Update, **D** = Delete + +!!!Note + + 1. *Admin* becomes *System Admin* with full access to all managed objects and scopes. + 2. *Research Manager* is **not** automatically assigned to all projects but to Projects set by the relevant *Admin* when assigning this role to a user, group, or app. + 3. To preserve backward compatibility, users with the role of *Research Manager* are assigned to all current projects, but not to new projects. + 4. To allow the *Department Admin* to assign a *Researcher* role to a user, group, or app, the *Department Admin* must have **CRUD** permissions for **Jobs** and **Workspaces**. This creates a broader span of managed objects. + 5. To preserve backward compatibility, users with the role *Editor*, are assigned to the same scope they had before the upgrade. However, with new user assignments, the *Admin* can limit the scope to only part of the organizational scope. + 6. *Department Admin* permissions for **Departments** remain **Read** as long as there is no hierarchy. Once a hierarchy is introduced, permissions need to change to **CRUD** to allow the *Department Admin* to create new Departments under its own department. + 7. Policies are accessible through **Clusters** using YAML files. There is no UI interface, although these policies affect UI elements (for example, Job Forms, Workspaces, Trainings). + +### Scope + +A *Scope* is an organizational component which accessible based on assigned roles. *Scopes* include: + +* Projects +* Departments +* Clusters +* Tenant (all clusters) + +### Asset + +RBAC uses [rules](#access-rules) to ensure that only authorized users or applications can gain access to system assets. Assets that can have RBAC rules applied are: + +* Departments +* Projects +* Deployments +* Workspaces +* Environments +* Quota management dashboard +* Training + +### RBAC enforcement + +RBAC ensures that user have access to system assets based on the rules that are applied to those assets. Should an asset be part of a larger scope of assets to which the user does not have access. The scope shown to the user will appear to be incomplete because the user is able to access **only** the assets to which they are authorized. + +## Access rules + +An *Access rule* is the assignment of a *Role* to a *Subject* in a *Scope*. *Access rules* are expressed as follows: + +` is a in a `. + +**For example:** +User **user@domain.com** is a **department admin** in **Department A**. + +### Create or delete rules + +To create a new access rule: + +1. Press the ![Tools and Settings](../../admin-ui-setup/img/tools-and-settings.svg) icon, then *Roles and Access rules*. +2. Choose *Access rules*, then *New access rule*. +3. Select a user type from the dropdown. +4. Select a role from the dropdown. +5. Press the ![Scope](../../../images/scope-icon.svg) icon and select a scope, and press *Save rule* when done. + +!!! Note + You cannot edit *Access rules*. To change an *Access rule*, you need to delete the rule, create a new rule to replace it. You can also add multiple rules for the same user. + +To delete a rule: + +1. Press the ![Tools and Settings](../../admin-ui-setup/img/tools-and-settings.svg) icon, then *Roles and Access rules*. +2. Choose *Access rules*, then select a rule and press *Delete*. diff --git a/docs/home/whats-new-2-14.md b/docs/home/whats-new-2-14.md index 39c22ddb78..f08edd6ea3 100644 --- a/docs/home/whats-new-2-14.md +++ b/docs/home/whats-new-2-14.md @@ -8,6 +8,27 @@ August 2023 #### Release content +This version contains features and fixes from previous versions starting with 2.9. Refer to the prior versions for specific features and fixes. For information about features, functionality, and fixed issues in previous versions see: + +* [What's new 2.13](whats-new-2-13.md) +* [What's new 2.12](whats-new-2-12.md) +* [What's new 2.10](whats-new-2-10.md) + + +##### Role based access control + +Stating in this version, Run:ai had updated the authorization system to Role Based Access Control (RBAC). RBAC is a policy-neutral access control mechanism defined around roles and privileges. For more information, see [Role based access control](../admin/runai-setup/access-control/rbac.md#role-based-access-control). + +When upgrading the system, previous access and authorizations that were configured will be migrated to the new RBAC roles. See the table below for role conversions: + +| Previous user type | RBAC role | +| -- | -- | +| Admin | [System admin](../admin/runai-setup/access-control/rbac.md#roles) | +| next one | [next one](../admin/runai-setup/access-control/rbac.md#roles) | + + + + #### Fixed issues | Internal ID | Description | diff --git a/docs/images/scope-icon.svg b/docs/images/scope-icon.svg new file mode 100644 index 0000000000..9a4c79019a --- /dev/null +++ b/docs/images/scope-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/mkdocs.yml b/mkdocs.yml index ad751a555c..38ecb20509 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -2,7 +2,7 @@ site_name: Run:ai Documentation Library site_url: https://docs.run.ai/ copyright: Copyright © 2020 - 2023 Run:ai repo_url: https://github.com/run-ai/docs/ -edit_uri: edit/v2.13/docs/ +edit_uri: edit/v2.14/docs/ docs_dir: docs theme: name: material @@ -26,6 +26,7 @@ extra_css: # strict: true markdown_extensions: + - footnotes # - markdown_include.include - pymdownx.highlight: anchor_linenums: true @@ -200,8 +201,9 @@ nav: - 'Install Administrator CLI' : 'admin/runai-setup/config/cli-admin-install.md' - 'Disaster Recovery' : 'admin/runai-setup/config/dr.md' - 'Node Affinity with Cloud Node Pools' : 'admin/runai-setup/config/node-affinity-with-cloud-node-pools.md' - - 'Authentication' : + - 'Authentication and Access Control' : - 'Overview' : 'admin/runai-setup/authentication/authentication-overview.md' + - 'Access control' : 'admin/runai-setup/access-control/rbac.md' - 'Researcher Authentication' : 'admin/runai-setup/authentication/researcher-authentication.md' - 'Single Sign-On' : 'admin/runai-setup/authentication/sso.md' - 'Maintenance' : From 72d7f109e4a41b4447d7f89fe751fdd901fb056e Mon Sep 17 00:00:00 2001 From: jasonnovichRunAI <124490127+jasonnovichRunAI@users.noreply.github.com> Date: Mon, 14 Aug 2023 14:19:00 +0300 Subject: [PATCH 10/58] remove rke2 incorrect instructions --- .../cluster-setup/cluster-prerequisites.md | 102 +++++++++--------- 1 file changed, 52 insertions(+), 50 deletions(-) diff --git a/docs/admin/runai-setup/cluster-setup/cluster-prerequisites.md b/docs/admin/runai-setup/cluster-setup/cluster-prerequisites.md index 015767ea2d..2c03066b54 100644 --- a/docs/admin/runai-setup/cluster-setup/cluster-prerequisites.md +++ b/docs/admin/runai-setup/cluster-setup/cluster-prerequisites.md @@ -1,4 +1,4 @@ -Below are the prerequisites of a cluster installed with Run:ai. +Below are the prerequisites of a cluster installed with Run:ai. ## Prerequisites in a Nutshell @@ -6,42 +6,42 @@ The following is a checklist of the Run:ai prerequisites: | Prerequisite | Details | |--------------|---------| -| [Kubernetes](#kubernetes) | Verify certified vendor and correct version. | +| [Kubernetes](#kubernetes) | Verify certified vendor and correct version. | | [NVIDIA GPU Operator](#nvidia) | Different Kubernetes flavors have slightly different setup instructions.
Verify correct version. | -| [Ingress Controller](#ingress-controller) | Install and configure NGINX (some Kubernetes flavors have NGINX pre-installed). | -| [Prometheus](#prometheus) | Install Prometheus. | -| [Trusted domain name](#cluster-url) | You must provide a trusted domain name. Accessible only inside the organization | -| (Optional) [Distributed Training](#distributed-training) | Install Kubeflow Training Operator if required. | -| (Optional) [Inference](#inference) | Some third party software needs to be installed to use the Run:ai inference module. | +| [Ingress Controller](#ingress-controller) | Install and configure NGINX (some Kubernetes flavors have NGINX pre-installed). | +| [Prometheus](#prometheus) | Install Prometheus. | +| [Trusted domain name](#cluster-url) | You must provide a trusted domain name. Accessible only inside the organization | +| (Optional) [Distributed Training](#distributed-training) | Install Kubeflow Training Operator if required. | +| (Optional) [Inference](#inference) | Some third party software needs to be installed to use the Run:ai inference module. | -There are also specific [hardware](#hardware-requirements), [operating system](#operating-system) and [network access](#network-access-requirements) requirements. A [pre-install](#pre-install-script) script is available to test if the prerequisites are met before installation. +There are also specific [hardware](#hardware-requirements), [operating system](#operating-system) and [network access](#network-access-requirements) requirements. A [pre-install](#pre-install-script) script is available to test if the prerequisites are met before installation. ## Software Requirements ### Operating System -* Run:ai will work on any __Linux__ operating system that is supported by __both__ Kubernetes and [NVIDIA](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html){target=_blank}. +* Run:ai will work on any __Linux__ operating system that is supported by __both__ Kubernetes and [NVIDIA](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html){target=_blank}. * An important highlight is that GKE (Google Kubernetes Engine) will only work with Ubuntu, as NVIDIA [does not support](https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/latest/google-gke.html#about-using-the-operator-with-google-gke) the default _Container-Optimized OS with Containerd_ image. -* Run:ai performs its internal tests on Ubuntu 20.04 and CoreOS for OpenShift. +* Run:ai performs its internal tests on Ubuntu 20.04 and CoreOS for OpenShift. ### Kubernetes -Run:ai requires Kubernetes. Run:ai is been certified with the following Kubernetes distributions: +Run:ai requires Kubernetes. Run:ai is been certified with the following Kubernetes distributions: -| Kubernetes Distribution | Description | Installation Notes | +| Kubernetes Distribution | Description | Installation Notes | |-----------------------------------|-------------|--------------------| | Vanilla Kubernetes | Using no specific distribution but rather k8s native installation | See instructions for a simple (non-production-ready) [Kubernetes Installation](install-k8s.md) script. | -| OCP | OpenShift Container Platform | The Run:ai operator is [certified](https://catalog.redhat.com/software/operators/detail/60be3acc3308418324b5e9d8){target=_blank} for OpenShift by Red Hat. | +| OCP | OpenShift Container Platform | The Run:ai operator is [certified](https://catalog.redhat.com/software/operators/detail/60be3acc3308418324b5e9d8){target=_blank} for OpenShift by Red Hat. | | EKS | Amazon Elastic Kubernetes Service | | | AKS | Azure Kubernetes Services | | -| GKE | Google Kubernetes Engine | | +| GKE | Google Kubernetes Engine | | | RKE | Rancher Kubernetes Engine | When installing Run:ai, select _On Premise_. RKE2 has a defect which requires a specific installation flow. Please contact Run:ai customer support for additional details. | | Bright | [NVIDIA Bright Cluster Manager](https://www.nvidia.com/en-us/data-center/bright-cluster-manager/){target=_blank} | In addition, NVIDIA DGX comes [bundled](dgx-bundle.md) with Run:ai | -Run:ai has been tested with the following Kubernetes distributions. Please contact Run:ai Customer Support for up to date certification details: +Run:ai has been tested with the following Kubernetes distributions. Please contact Run:ai Customer Support for up to date certification details: -| Kubernetes Distribution | Description | Installation Notes | +| Kubernetes Distribution | Description | Installation Notes | |-----------------------------------|-------------|--------------------| | Ezmeral | HPE Ezmeral Container Platform | See Run:ai at [Ezmeral marketplace](https://www.hpe.com/us/en/software/marketplace/runai.html){target=_blank} | | Tanzu | VMWare Kubernetes | Tanzu supports _containerd_ rather than _docker_. See the NVIDIA prerequisites below as well as [cluster customization](customize-cluster-install.md) for changes required for containerd | @@ -63,15 +63,16 @@ For an up-to-date end-of-life statement of Kubernetes see [Kubernetes Release Hi Run:ai does not support [Pod Security Admission](https://kubernetes.io/docs/concepts/security/pod-security-admission/){target=_blank}. Support for [Pod Security Policy](https://kubernetes.io/docs/concepts/policy/pod-security-policy/){target=_blank} has been removed with Run:ai 2.9. -### NVIDIA +### NVIDIA -Run:ai has been certified on __NVIDIA GPU Operator__ 22.9 to 23.3. Older versions (1.10 and 1.11) have a documented [NVIDIA issue](https://github.com/NVIDIA/gpu-feature-discovery/issues/26){target=_blank}. +Run:ai has been certified on __NVIDIA GPU Operator__ 22.9 to 23.3. Older versions (1.10 and 1.11) have a documented [NVIDIA issue](https://github.com/NVIDIA/gpu-feature-discovery/issues/26){target=_blank}. Follow the [Getting Started guide](https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/getting-started.html#install-nvidia-gpu-operator){target=blank} to install the NVIDIA GPU Operator, or see the distribution-specific instructions below: === "EKS" + * When setting up EKS, do not install the NVIDIA device plug-in (as we want the NVIDIA GPU Operator to install it instead). When using the [eksctl](https://eksctl.io/){target=_blank} tool to create an AWS EKS cluster, use the flag `--install-nvidia-plugin=false` to disable this install. - * Follow the [Getting Started guide](https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/getting-started.html#install-nvidia-gpu-operator){target=blank} to install the NVIDIA GPU Operator. For GPU nodes, EKS uses an AMI which already contains the NVIDIA drivers. As such, you must use the GPU Operator flags: `--set driver.enabled=false`. + * Follow the [Getting Started guide](https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/getting-started.html#install-nvidia-gpu-operator){target=blank} to install the NVIDIA GPU Operator. For GPU nodes, EKS uses an AMI which already contains the NVIDIA drivers. As such, you must use the GPU Operator flags: `--set driver.enabled=false`. === "GKE" @@ -105,24 +106,25 @@ Follow the [Getting Started guide](https://docs.nvidia.com/datacenter/cloud-nati !!! Important * Run:ai on GKE has only been tested with GPU Operator version 22.9 and up. * The above only works for Run:ai 2.7.16 and above. - + !!! Notes * Use the default namespace `gpu-operator`. Otherwise, you must specify the target namespace using the flag `runai-operator.config.nvidiaDcgmExporter.namespace` as described in [customized cluster installation](customize-cluster-install.md). - * NVIDIA drivers may already be installed on the nodes. In such cases, use the NVIDIA GPU Operator flags `--set driver.enabled=false`. [DGX OS](https://docs.nvidia.com/dgx/index.html){target=_blank} is one such example as it comes bundled with NVIDIA Drivers. + * NVIDIA drivers may already be installed on the nodes. In such cases, use the NVIDIA GPU Operator flags `--set driver.enabled=false`. [DGX OS](https://docs.nvidia.com/dgx/index.html){target=_blank} is one such example as it comes bundled with NVIDIA Drivers. * To use [Dynamic MIG](../../../Researcher/scheduling/fractions.md#dynamic-mig), the GPU Operator must be installed with the flag `mig.strategy=mixed`. If the GPU Operator is already installed, edit the clusterPolicy by running ```kubectl patch clusterPolicy cluster-policy -n gpu-operator --type=merge -p '{"spec":{"mig":{"strategy": "mixed"}}}``` ### Ingress Controller -Run:ai requires an ingress controller as a prerequisite. The Run:ai cluster installation configures one or more ingress objects on top of the controller. +Run:ai requires an ingress controller as a prerequisite. The Run:ai cluster installation configures one or more ingress objects on top of the controller. There are many ways to install and configure an ingress controller and configuration is environment-dependent. A simple solution is to install & configure _NGINX_: -=== "On Prem" +=== "On Prem" ``` bash helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx @@ -136,11 +138,11 @@ There are many ways to install and configure an ingress controller and configura 1. External and internal IP of one of the nodes === "RKE" - RKE and RKE2 come pre-installed with NGINX. No further action needs to be taken. + RKE and RKE2 come pre-installed with NGINX. No further action needs to be taken. === "Managed Kubernetes" - For managed Kubernetes such as EKS: + For managed Kubernetes such as EKS: ``` bash helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx @@ -149,7 +151,7 @@ There are many ways to install and configure an ingress controller and configura --namespace nginx-ingress --create-namespace ``` -For support of ingress controllers different than NGINX please contact Run:ai customer support. +For support of ingress controllers different than NGINX please contact Run:ai customer support. !!! Note In a self-hosted installation, the typical scenario is to install the first Run:ai cluster on the same Kubernetes cluster as the control plane. In this case, there is no need to install an ingress controller as it is pre-installed by the control plane. @@ -172,17 +174,17 @@ kubectl create secret tls runai-cluster-domain-tls-secret -n runai \ ``` 1. The domain's cert (public key). -2. The domain's private key. +2. The domain's private key. For more information on how to create a TLS secret see: [https://kubernetes.io/docs/concepts/configuration/secret/#tls-secrets](https://kubernetes.io/docs/concepts/configuration/secret/#tls-secrets){target=_blank}. !!! Note - In a self-hosted installation, the typical scenario is to install the first Run:ai cluster on the same Kubernetes cluster as the control plane. In this case, the cluster URL need not be provided as it will be the same as the control-plane URL. + In a self-hosted installation, the typical scenario is to install the first Run:ai cluster on the same Kubernetes cluster as the control plane. In this case, the cluster URL need not be provided as it will be the same as the control-plane URL. -### Prometheus +### Prometheus -If not already installed on your cluster, install the full `kube-prometheus-stack` through the [Prometheus community Operator](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack){target=_blank}. +If not already installed on your cluster, install the full `kube-prometheus-stack` through the [Prometheus community Operator](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack){target=_blank}. !!! Note * If Prometheus has been installed on the cluster in the past, even if it was uninstalled (such as when upgrading from Run:ai 2.8 or lower), you will need to update Prometheus CRDs as described [here](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack#upgrading-chart){target=_blank}. For more information on the Prometheus bug see [here](https://github.com/prometheus-community/helm-charts/issues/2753){target=_blank}. @@ -197,7 +199,7 @@ helm install prometheus prometheus-community/kube-prometheus-stack \ -n monitoring --create-namespace --set grafana.enabled=false # (1) ``` -1. The Grafana component is not required for Run:ai. +1. The Grafana component is not required for Run:ai. ## Optional Software Requirements @@ -220,7 +222,7 @@ kubectl apply -k "github.com/kubeflow/training-operator/manifests/overlays/stand To use the Run:ai inference module you must pre-install [Knative Serving](https://knative.dev/docs/install/yaml-install/serving/install-serving-with-yaml/){target=_blank}. Follow the instructions [here](https://knative.dev/docs/install/){target=_blank} to install. Run:ai is certified on Knative 1.4 to 1.8 with Kubernetes 1.22 or later. -Post-install, you must configure Knative to use the Run:ai scheduler and allow pod affinity, by running: +Post-install, you must configure Knative to use the Run:ai scheduler and allow pod affinity, by running: ``` kubectl patch configmap/config-features \ @@ -236,7 +238,7 @@ Run:ai allows to autoscale a deployment according to various metrics: 2. CPU Utilization (%) 3. Latency (milliseconds) 4. Throughput (requests/second) -5. Concurrency +5. Concurrency 6. Any custom metric Additional installation may be needed for some of the metrics as follows: @@ -245,12 +247,12 @@ Additional installation may be needed for some of the metrics as follows: * Any other metric will require installing the [HPA Autoscaler](https://knative.dev/docs/install/yaml-install/serving/install-serving-with-yaml/#install-optional-serving-extensions){target=_blank}. * Using _GPU Utilization_, _Latency_ or _Custom metric_ will __also__ require the Prometheus adapter. The Prometheus adapter is part of the Run:ai installer and can be added by setting the `prometheus-adapter.enabled` flag to `true`. See [Customizing the Run:ai installation](./customize-cluster-install.md) for further information. -If you wish to use an _existing_ Prometheus adapter installation, you will need to configure it manually with the Run:ai Prometheus rules, specified in the Run:ai chart values under `prometheus-adapter.rules` field. For further information please contact Run:ai customer support. +If you wish to use an _existing_ Prometheus adapter installation, you will need to configure it manually with the Run:ai Prometheus rules, specified in the Run:ai chart values under `prometheus-adapter.rules` field. For further information please contact Run:ai customer support. #### Accessing Inference from outside the Cluster -Inference workloads will typically be accessed by consumers residing outside the cluster. You will hence want to provide consumers with a URL to access the workload. The URL can be found in the Run:ai user interface under the deployment screen (alternatively, run `kubectl get ksvc -n `). +Inference workloads will typically be accessed by consumers residing outside the cluster. You will hence want to provide consumers with a URL to access the workload. The URL can be found in the Run:ai user interface under the deployment screen (alternatively, run `kubectl get ksvc -n `). However, for the URL to be accessible outside the cluster you must configure your DNS as described [here](https://knative.dev/docs/install/yaml-install/serving/install-serving-with-yaml/#configure-dns){target=_blank}. @@ -270,43 +272,43 @@ However, for the URL to be accessible outside the cluster you must configure you (see picture below) * (Production only) __Run:ai System Nodes__: To reduce downtime and save CPU cycles on expensive GPU Machines, we recommend that production deployments will contain __two or more__ worker machines, designated for Run:ai Software. The nodes do not have to be dedicated to Run:ai, but for Run:ai purposes we would need: - + * 8 CPUs * 16GB of RAM * 50GB of Disk space - + * __Shared data volume:__ Run:ai uses Kubernetes to abstract away the machine on which a container is running: - * Researcher containers: The Researcher's containers need to be able to access data from any machine in a uniform way, to access training data and code as well as save checkpoints, weights, and other machine-learning-related artifacts. + * Researcher containers: The Researcher's containers need to be able to access data from any machine in a uniform way, to access training data and code as well as save checkpoints, weights, and other machine-learning-related artifacts. * The Run:ai system needs to save data on a storage device that is not dependent on a specific node. - Typically, this is achieved via Kubernetes Storage class based on Network File Storage (NFS) or Network-attached storage (NAS). + Typically, this is achieved via Kubernetes Storage class based on Network File Storage (NFS) or Network-attached storage (NAS). * __Docker Registry:__ With Run:ai, Workloads are based on Docker images. For container images to run on any machine, these images must be downloaded from a docker registry rather than reside on the local machine (though this also is [possible](../../../researcher-setup/docker-to-runai/#image-repository)). You can use a public registry such as [docker hub](https://hub.docker.com/){target=_blank} or set up a local registry on-prem (preferably on a dedicated machine). Run:ai can assist with setting up the repository. -* __Kubernetes:__ Production Kubernetes installation requires separate nodes for the Kubernetes master. For more details see your specific Kubernetes distribution documentation. +* __Kubernetes:__ Production Kubernetes installation requires separate nodes for the Kubernetes master. For more details see your specific Kubernetes distribution documentation. ![img/prerequisites.png](img/prerequisites.jpg) ## User requirements -__Usage of containers and images:__ The individual Researcher's work must be based on [container](https://www.docker.com/resources/what-container){target=_blank} images. +__Usage of containers and images:__ The individual Researcher's work must be based on [container](https://www.docker.com/resources/what-container){target=_blank} images. ## Network Access Requirements -__Internal networking:__ Kubernetes networking is an add-on rather than a core part of Kubernetes. Different add-ons have different network requirements. You should consult the documentation of the specific add-on on which ports to open. It is however important to note that unless special provisions are made, Kubernetes assumes __all__ cluster nodes can interconnect using __all__ ports. +__Internal networking:__ Kubernetes networking is an add-on rather than a core part of Kubernetes. Different add-ons have different network requirements. You should consult the documentation of the specific add-on on which ports to open. It is however important to note that unless special provisions are made, Kubernetes assumes __all__ cluster nodes can interconnect using __all__ ports. -__Outbound network:__ Run:ai user interface runs from the cloud. All container nodes must be able to connect to the Run:ai cloud. Inbound connectivity (connecting from the cloud into nodes) is not required. If outbound connectivity is limited, the following exceptions should be applied: +__Outbound network:__ Run:ai user interface runs from the cloud. All container nodes must be able to connect to the Run:ai cloud. Inbound connectivity (connecting from the cloud into nodes) is not required. If outbound connectivity is limited, the following exceptions should be applied: ### During Installation -Run:ai requires an installation over the Kubernetes cluster. The installation access the web to download various images and registries. Some organizations place limitations on what you can pull from the internet. The following list shows the various solution components and their origin: +Run:ai requires an installation over the Kubernetes cluster. The installation access the web to download various images and registries. Some organizations place limitations on what you can pull from the internet. The following list shows the various solution components and their origin: | Name | Description | URLs | Ports | |------|-------------|------|-------| -|Run:ai Repository| Run:ai Helm Package Repository| runai-charts.storage.googleapis.com |443 | -| Docker Images Repository | Run:ai images | gcr.io/run-ai-prod |443 | +|Run:ai Repository| Run:ai Helm Package Repository| runai-charts.storage.googleapis.com |443 | +| Docker Images Repository | Run:ai images | gcr.io/run-ai-prod |443 | | Docker Images Repository | Third party Images |hub.docker.com and quay.io | 443 | | Run:ai | Run:ai Cloud instance | app.run.ai | |443, 53 | @@ -317,10 +319,10 @@ Run:ai requires an installation over the Kubernetes cluster. The installation ac In addition, once running, Run:ai requires an outbound network connection to the following targets: -| Name | Description | URLs | Ports | +| Name | Description | URLs | Ports | |------|-------------|------|-------| | Grafana |Grafana Metrics Server | prometheus-us-central1.grafana.net and runailabs.com |443 | -| Run:ai | Run:ai Cloud instance | app.run.ai |443, 53 | +| Run:ai | Run:ai Cloud instance | app.run.ai |443, 53 | ### Network Proxy @@ -332,7 +334,7 @@ If you are using a Proxy for outbound communication please contact Run:ai custom Once you believe that the Run:ai prerequisites are met, we highly recommend installing and running the Run:ai [pre-install diagnostics script](https://github.com/run-ai/preinstall-diagnostics){target=_blank}. The tool: * Tests the below requirements as well as additional failure points related to Kubernetes, NVIDIA, storage, and networking. -* Looks at additional components installed and analyze their relevance to a successful Run:ai installation. +* Looks at additional components installed and analyze their relevance to a successful Run:ai installation. To use the script [download](https://github.com/run-ai/preinstall-diagnostics/releases){target=_blank} the latest version of the script and run: @@ -341,7 +343,7 @@ chmod +x preinstall-diagnostics- ./preinstall-diagnostics- ``` -If the script shows warnings or errors, locate the file `runai-preinstall-diagnostics.txt` in the current directory and send it to Run:ai technical support. +If the script shows warnings or errors, locate the file `runai-preinstall-diagnostics.txt` in the current directory and send it to Run:ai technical support. For more information on the script including additional command-line flags, see [here](https://github.com/run-ai/preinstall-diagnostics){target=_blank}. From 013934107945bacbdd2f9650faf536723fa4ec1a Mon Sep 17 00:00:00 2001 From: jasonnovichRunAI <124490127+jasonnovichRunAI@users.noreply.github.com> Date: Mon, 14 Aug 2023 14:19:00 +0300 Subject: [PATCH 11/58] remove rke2 incorrect instructions --- .../cluster-setup/cluster-prerequisites.md | 102 +++++++++--------- 1 file changed, 52 insertions(+), 50 deletions(-) diff --git a/docs/admin/runai-setup/cluster-setup/cluster-prerequisites.md b/docs/admin/runai-setup/cluster-setup/cluster-prerequisites.md index 015767ea2d..2c03066b54 100644 --- a/docs/admin/runai-setup/cluster-setup/cluster-prerequisites.md +++ b/docs/admin/runai-setup/cluster-setup/cluster-prerequisites.md @@ -1,4 +1,4 @@ -Below are the prerequisites of a cluster installed with Run:ai. +Below are the prerequisites of a cluster installed with Run:ai. ## Prerequisites in a Nutshell @@ -6,42 +6,42 @@ The following is a checklist of the Run:ai prerequisites: | Prerequisite | Details | |--------------|---------| -| [Kubernetes](#kubernetes) | Verify certified vendor and correct version. | +| [Kubernetes](#kubernetes) | Verify certified vendor and correct version. | | [NVIDIA GPU Operator](#nvidia) | Different Kubernetes flavors have slightly different setup instructions.
Verify correct version. | -| [Ingress Controller](#ingress-controller) | Install and configure NGINX (some Kubernetes flavors have NGINX pre-installed). | -| [Prometheus](#prometheus) | Install Prometheus. | -| [Trusted domain name](#cluster-url) | You must provide a trusted domain name. Accessible only inside the organization | -| (Optional) [Distributed Training](#distributed-training) | Install Kubeflow Training Operator if required. | -| (Optional) [Inference](#inference) | Some third party software needs to be installed to use the Run:ai inference module. | +| [Ingress Controller](#ingress-controller) | Install and configure NGINX (some Kubernetes flavors have NGINX pre-installed). | +| [Prometheus](#prometheus) | Install Prometheus. | +| [Trusted domain name](#cluster-url) | You must provide a trusted domain name. Accessible only inside the organization | +| (Optional) [Distributed Training](#distributed-training) | Install Kubeflow Training Operator if required. | +| (Optional) [Inference](#inference) | Some third party software needs to be installed to use the Run:ai inference module. | -There are also specific [hardware](#hardware-requirements), [operating system](#operating-system) and [network access](#network-access-requirements) requirements. A [pre-install](#pre-install-script) script is available to test if the prerequisites are met before installation. +There are also specific [hardware](#hardware-requirements), [operating system](#operating-system) and [network access](#network-access-requirements) requirements. A [pre-install](#pre-install-script) script is available to test if the prerequisites are met before installation. ## Software Requirements ### Operating System -* Run:ai will work on any __Linux__ operating system that is supported by __both__ Kubernetes and [NVIDIA](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html){target=_blank}. +* Run:ai will work on any __Linux__ operating system that is supported by __both__ Kubernetes and [NVIDIA](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html){target=_blank}. * An important highlight is that GKE (Google Kubernetes Engine) will only work with Ubuntu, as NVIDIA [does not support](https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/latest/google-gke.html#about-using-the-operator-with-google-gke) the default _Container-Optimized OS with Containerd_ image. -* Run:ai performs its internal tests on Ubuntu 20.04 and CoreOS for OpenShift. +* Run:ai performs its internal tests on Ubuntu 20.04 and CoreOS for OpenShift. ### Kubernetes -Run:ai requires Kubernetes. Run:ai is been certified with the following Kubernetes distributions: +Run:ai requires Kubernetes. Run:ai is been certified with the following Kubernetes distributions: -| Kubernetes Distribution | Description | Installation Notes | +| Kubernetes Distribution | Description | Installation Notes | |-----------------------------------|-------------|--------------------| | Vanilla Kubernetes | Using no specific distribution but rather k8s native installation | See instructions for a simple (non-production-ready) [Kubernetes Installation](install-k8s.md) script. | -| OCP | OpenShift Container Platform | The Run:ai operator is [certified](https://catalog.redhat.com/software/operators/detail/60be3acc3308418324b5e9d8){target=_blank} for OpenShift by Red Hat. | +| OCP | OpenShift Container Platform | The Run:ai operator is [certified](https://catalog.redhat.com/software/operators/detail/60be3acc3308418324b5e9d8){target=_blank} for OpenShift by Red Hat. | | EKS | Amazon Elastic Kubernetes Service | | | AKS | Azure Kubernetes Services | | -| GKE | Google Kubernetes Engine | | +| GKE | Google Kubernetes Engine | | | RKE | Rancher Kubernetes Engine | When installing Run:ai, select _On Premise_. RKE2 has a defect which requires a specific installation flow. Please contact Run:ai customer support for additional details. | | Bright | [NVIDIA Bright Cluster Manager](https://www.nvidia.com/en-us/data-center/bright-cluster-manager/){target=_blank} | In addition, NVIDIA DGX comes [bundled](dgx-bundle.md) with Run:ai | -Run:ai has been tested with the following Kubernetes distributions. Please contact Run:ai Customer Support for up to date certification details: +Run:ai has been tested with the following Kubernetes distributions. Please contact Run:ai Customer Support for up to date certification details: -| Kubernetes Distribution | Description | Installation Notes | +| Kubernetes Distribution | Description | Installation Notes | |-----------------------------------|-------------|--------------------| | Ezmeral | HPE Ezmeral Container Platform | See Run:ai at [Ezmeral marketplace](https://www.hpe.com/us/en/software/marketplace/runai.html){target=_blank} | | Tanzu | VMWare Kubernetes | Tanzu supports _containerd_ rather than _docker_. See the NVIDIA prerequisites below as well as [cluster customization](customize-cluster-install.md) for changes required for containerd | @@ -63,15 +63,16 @@ For an up-to-date end-of-life statement of Kubernetes see [Kubernetes Release Hi Run:ai does not support [Pod Security Admission](https://kubernetes.io/docs/concepts/security/pod-security-admission/){target=_blank}. Support for [Pod Security Policy](https://kubernetes.io/docs/concepts/policy/pod-security-policy/){target=_blank} has been removed with Run:ai 2.9. -### NVIDIA +### NVIDIA -Run:ai has been certified on __NVIDIA GPU Operator__ 22.9 to 23.3. Older versions (1.10 and 1.11) have a documented [NVIDIA issue](https://github.com/NVIDIA/gpu-feature-discovery/issues/26){target=_blank}. +Run:ai has been certified on __NVIDIA GPU Operator__ 22.9 to 23.3. Older versions (1.10 and 1.11) have a documented [NVIDIA issue](https://github.com/NVIDIA/gpu-feature-discovery/issues/26){target=_blank}. Follow the [Getting Started guide](https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/getting-started.html#install-nvidia-gpu-operator){target=blank} to install the NVIDIA GPU Operator, or see the distribution-specific instructions below: === "EKS" + * When setting up EKS, do not install the NVIDIA device plug-in (as we want the NVIDIA GPU Operator to install it instead). When using the [eksctl](https://eksctl.io/){target=_blank} tool to create an AWS EKS cluster, use the flag `--install-nvidia-plugin=false` to disable this install. - * Follow the [Getting Started guide](https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/getting-started.html#install-nvidia-gpu-operator){target=blank} to install the NVIDIA GPU Operator. For GPU nodes, EKS uses an AMI which already contains the NVIDIA drivers. As such, you must use the GPU Operator flags: `--set driver.enabled=false`. + * Follow the [Getting Started guide](https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/getting-started.html#install-nvidia-gpu-operator){target=blank} to install the NVIDIA GPU Operator. For GPU nodes, EKS uses an AMI which already contains the NVIDIA drivers. As such, you must use the GPU Operator flags: `--set driver.enabled=false`. === "GKE" @@ -105,24 +106,25 @@ Follow the [Getting Started guide](https://docs.nvidia.com/datacenter/cloud-nati !!! Important * Run:ai on GKE has only been tested with GPU Operator version 22.9 and up. * The above only works for Run:ai 2.7.16 and above. - + !!! Notes * Use the default namespace `gpu-operator`. Otherwise, you must specify the target namespace using the flag `runai-operator.config.nvidiaDcgmExporter.namespace` as described in [customized cluster installation](customize-cluster-install.md). - * NVIDIA drivers may already be installed on the nodes. In such cases, use the NVIDIA GPU Operator flags `--set driver.enabled=false`. [DGX OS](https://docs.nvidia.com/dgx/index.html){target=_blank} is one such example as it comes bundled with NVIDIA Drivers. + * NVIDIA drivers may already be installed on the nodes. In such cases, use the NVIDIA GPU Operator flags `--set driver.enabled=false`. [DGX OS](https://docs.nvidia.com/dgx/index.html){target=_blank} is one such example as it comes bundled with NVIDIA Drivers. * To use [Dynamic MIG](../../../Researcher/scheduling/fractions.md#dynamic-mig), the GPU Operator must be installed with the flag `mig.strategy=mixed`. If the GPU Operator is already installed, edit the clusterPolicy by running ```kubectl patch clusterPolicy cluster-policy -n gpu-operator --type=merge -p '{"spec":{"mig":{"strategy": "mixed"}}}``` ### Ingress Controller -Run:ai requires an ingress controller as a prerequisite. The Run:ai cluster installation configures one or more ingress objects on top of the controller. +Run:ai requires an ingress controller as a prerequisite. The Run:ai cluster installation configures one or more ingress objects on top of the controller. There are many ways to install and configure an ingress controller and configuration is environment-dependent. A simple solution is to install & configure _NGINX_: -=== "On Prem" +=== "On Prem" ``` bash helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx @@ -136,11 +138,11 @@ There are many ways to install and configure an ingress controller and configura 1. External and internal IP of one of the nodes === "RKE" - RKE and RKE2 come pre-installed with NGINX. No further action needs to be taken. + RKE and RKE2 come pre-installed with NGINX. No further action needs to be taken. === "Managed Kubernetes" - For managed Kubernetes such as EKS: + For managed Kubernetes such as EKS: ``` bash helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx @@ -149,7 +151,7 @@ There are many ways to install and configure an ingress controller and configura --namespace nginx-ingress --create-namespace ``` -For support of ingress controllers different than NGINX please contact Run:ai customer support. +For support of ingress controllers different than NGINX please contact Run:ai customer support. !!! Note In a self-hosted installation, the typical scenario is to install the first Run:ai cluster on the same Kubernetes cluster as the control plane. In this case, there is no need to install an ingress controller as it is pre-installed by the control plane. @@ -172,17 +174,17 @@ kubectl create secret tls runai-cluster-domain-tls-secret -n runai \ ``` 1. The domain's cert (public key). -2. The domain's private key. +2. The domain's private key. For more information on how to create a TLS secret see: [https://kubernetes.io/docs/concepts/configuration/secret/#tls-secrets](https://kubernetes.io/docs/concepts/configuration/secret/#tls-secrets){target=_blank}. !!! Note - In a self-hosted installation, the typical scenario is to install the first Run:ai cluster on the same Kubernetes cluster as the control plane. In this case, the cluster URL need not be provided as it will be the same as the control-plane URL. + In a self-hosted installation, the typical scenario is to install the first Run:ai cluster on the same Kubernetes cluster as the control plane. In this case, the cluster URL need not be provided as it will be the same as the control-plane URL. -### Prometheus +### Prometheus -If not already installed on your cluster, install the full `kube-prometheus-stack` through the [Prometheus community Operator](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack){target=_blank}. +If not already installed on your cluster, install the full `kube-prometheus-stack` through the [Prometheus community Operator](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack){target=_blank}. !!! Note * If Prometheus has been installed on the cluster in the past, even if it was uninstalled (such as when upgrading from Run:ai 2.8 or lower), you will need to update Prometheus CRDs as described [here](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack#upgrading-chart){target=_blank}. For more information on the Prometheus bug see [here](https://github.com/prometheus-community/helm-charts/issues/2753){target=_blank}. @@ -197,7 +199,7 @@ helm install prometheus prometheus-community/kube-prometheus-stack \ -n monitoring --create-namespace --set grafana.enabled=false # (1) ``` -1. The Grafana component is not required for Run:ai. +1. The Grafana component is not required for Run:ai. ## Optional Software Requirements @@ -220,7 +222,7 @@ kubectl apply -k "github.com/kubeflow/training-operator/manifests/overlays/stand To use the Run:ai inference module you must pre-install [Knative Serving](https://knative.dev/docs/install/yaml-install/serving/install-serving-with-yaml/){target=_blank}. Follow the instructions [here](https://knative.dev/docs/install/){target=_blank} to install. Run:ai is certified on Knative 1.4 to 1.8 with Kubernetes 1.22 or later. -Post-install, you must configure Knative to use the Run:ai scheduler and allow pod affinity, by running: +Post-install, you must configure Knative to use the Run:ai scheduler and allow pod affinity, by running: ``` kubectl patch configmap/config-features \ @@ -236,7 +238,7 @@ Run:ai allows to autoscale a deployment according to various metrics: 2. CPU Utilization (%) 3. Latency (milliseconds) 4. Throughput (requests/second) -5. Concurrency +5. Concurrency 6. Any custom metric Additional installation may be needed for some of the metrics as follows: @@ -245,12 +247,12 @@ Additional installation may be needed for some of the metrics as follows: * Any other metric will require installing the [HPA Autoscaler](https://knative.dev/docs/install/yaml-install/serving/install-serving-with-yaml/#install-optional-serving-extensions){target=_blank}. * Using _GPU Utilization_, _Latency_ or _Custom metric_ will __also__ require the Prometheus adapter. The Prometheus adapter is part of the Run:ai installer and can be added by setting the `prometheus-adapter.enabled` flag to `true`. See [Customizing the Run:ai installation](./customize-cluster-install.md) for further information. -If you wish to use an _existing_ Prometheus adapter installation, you will need to configure it manually with the Run:ai Prometheus rules, specified in the Run:ai chart values under `prometheus-adapter.rules` field. For further information please contact Run:ai customer support. +If you wish to use an _existing_ Prometheus adapter installation, you will need to configure it manually with the Run:ai Prometheus rules, specified in the Run:ai chart values under `prometheus-adapter.rules` field. For further information please contact Run:ai customer support. #### Accessing Inference from outside the Cluster -Inference workloads will typically be accessed by consumers residing outside the cluster. You will hence want to provide consumers with a URL to access the workload. The URL can be found in the Run:ai user interface under the deployment screen (alternatively, run `kubectl get ksvc -n `). +Inference workloads will typically be accessed by consumers residing outside the cluster. You will hence want to provide consumers with a URL to access the workload. The URL can be found in the Run:ai user interface under the deployment screen (alternatively, run `kubectl get ksvc -n `). However, for the URL to be accessible outside the cluster you must configure your DNS as described [here](https://knative.dev/docs/install/yaml-install/serving/install-serving-with-yaml/#configure-dns){target=_blank}. @@ -270,43 +272,43 @@ However, for the URL to be accessible outside the cluster you must configure you (see picture below) * (Production only) __Run:ai System Nodes__: To reduce downtime and save CPU cycles on expensive GPU Machines, we recommend that production deployments will contain __two or more__ worker machines, designated for Run:ai Software. The nodes do not have to be dedicated to Run:ai, but for Run:ai purposes we would need: - + * 8 CPUs * 16GB of RAM * 50GB of Disk space - + * __Shared data volume:__ Run:ai uses Kubernetes to abstract away the machine on which a container is running: - * Researcher containers: The Researcher's containers need to be able to access data from any machine in a uniform way, to access training data and code as well as save checkpoints, weights, and other machine-learning-related artifacts. + * Researcher containers: The Researcher's containers need to be able to access data from any machine in a uniform way, to access training data and code as well as save checkpoints, weights, and other machine-learning-related artifacts. * The Run:ai system needs to save data on a storage device that is not dependent on a specific node. - Typically, this is achieved via Kubernetes Storage class based on Network File Storage (NFS) or Network-attached storage (NAS). + Typically, this is achieved via Kubernetes Storage class based on Network File Storage (NFS) or Network-attached storage (NAS). * __Docker Registry:__ With Run:ai, Workloads are based on Docker images. For container images to run on any machine, these images must be downloaded from a docker registry rather than reside on the local machine (though this also is [possible](../../../researcher-setup/docker-to-runai/#image-repository)). You can use a public registry such as [docker hub](https://hub.docker.com/){target=_blank} or set up a local registry on-prem (preferably on a dedicated machine). Run:ai can assist with setting up the repository. -* __Kubernetes:__ Production Kubernetes installation requires separate nodes for the Kubernetes master. For more details see your specific Kubernetes distribution documentation. +* __Kubernetes:__ Production Kubernetes installation requires separate nodes for the Kubernetes master. For more details see your specific Kubernetes distribution documentation. ![img/prerequisites.png](img/prerequisites.jpg) ## User requirements -__Usage of containers and images:__ The individual Researcher's work must be based on [container](https://www.docker.com/resources/what-container){target=_blank} images. +__Usage of containers and images:__ The individual Researcher's work must be based on [container](https://www.docker.com/resources/what-container){target=_blank} images. ## Network Access Requirements -__Internal networking:__ Kubernetes networking is an add-on rather than a core part of Kubernetes. Different add-ons have different network requirements. You should consult the documentation of the specific add-on on which ports to open. It is however important to note that unless special provisions are made, Kubernetes assumes __all__ cluster nodes can interconnect using __all__ ports. +__Internal networking:__ Kubernetes networking is an add-on rather than a core part of Kubernetes. Different add-ons have different network requirements. You should consult the documentation of the specific add-on on which ports to open. It is however important to note that unless special provisions are made, Kubernetes assumes __all__ cluster nodes can interconnect using __all__ ports. -__Outbound network:__ Run:ai user interface runs from the cloud. All container nodes must be able to connect to the Run:ai cloud. Inbound connectivity (connecting from the cloud into nodes) is not required. If outbound connectivity is limited, the following exceptions should be applied: +__Outbound network:__ Run:ai user interface runs from the cloud. All container nodes must be able to connect to the Run:ai cloud. Inbound connectivity (connecting from the cloud into nodes) is not required. If outbound connectivity is limited, the following exceptions should be applied: ### During Installation -Run:ai requires an installation over the Kubernetes cluster. The installation access the web to download various images and registries. Some organizations place limitations on what you can pull from the internet. The following list shows the various solution components and their origin: +Run:ai requires an installation over the Kubernetes cluster. The installation access the web to download various images and registries. Some organizations place limitations on what you can pull from the internet. The following list shows the various solution components and their origin: | Name | Description | URLs | Ports | |------|-------------|------|-------| -|Run:ai Repository| Run:ai Helm Package Repository| runai-charts.storage.googleapis.com |443 | -| Docker Images Repository | Run:ai images | gcr.io/run-ai-prod |443 | +|Run:ai Repository| Run:ai Helm Package Repository| runai-charts.storage.googleapis.com |443 | +| Docker Images Repository | Run:ai images | gcr.io/run-ai-prod |443 | | Docker Images Repository | Third party Images |hub.docker.com and quay.io | 443 | | Run:ai | Run:ai Cloud instance | app.run.ai | |443, 53 | @@ -317,10 +319,10 @@ Run:ai requires an installation over the Kubernetes cluster. The installation ac In addition, once running, Run:ai requires an outbound network connection to the following targets: -| Name | Description | URLs | Ports | +| Name | Description | URLs | Ports | |------|-------------|------|-------| | Grafana |Grafana Metrics Server | prometheus-us-central1.grafana.net and runailabs.com |443 | -| Run:ai | Run:ai Cloud instance | app.run.ai |443, 53 | +| Run:ai | Run:ai Cloud instance | app.run.ai |443, 53 | ### Network Proxy @@ -332,7 +334,7 @@ If you are using a Proxy for outbound communication please contact Run:ai custom Once you believe that the Run:ai prerequisites are met, we highly recommend installing and running the Run:ai [pre-install diagnostics script](https://github.com/run-ai/preinstall-diagnostics){target=_blank}. The tool: * Tests the below requirements as well as additional failure points related to Kubernetes, NVIDIA, storage, and networking. -* Looks at additional components installed and analyze their relevance to a successful Run:ai installation. +* Looks at additional components installed and analyze their relevance to a successful Run:ai installation. To use the script [download](https://github.com/run-ai/preinstall-diagnostics/releases){target=_blank} the latest version of the script and run: @@ -341,7 +343,7 @@ chmod +x preinstall-diagnostics- ./preinstall-diagnostics- ``` -If the script shows warnings or errors, locate the file `runai-preinstall-diagnostics.txt` in the current directory and send it to Run:ai technical support. +If the script shows warnings or errors, locate the file `runai-preinstall-diagnostics.txt` in the current directory and send it to Run:ai technical support. For more information on the script including additional command-line flags, see [here](https://github.com/run-ai/preinstall-diagnostics){target=_blank}. From 54ca2ebd3e2b8409a7ef0099056754f4ac47bf1e Mon Sep 17 00:00:00 2001 From: Yaron Date: Mon, 14 Aug 2023 16:31:35 +0300 Subject: [PATCH 12/58] rke2-bug-fix --- .../runai-setup/authentication/researcher-authentication.md | 2 -- docs/admin/runai-setup/cluster-setup/cluster-prerequisites.md | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/admin/runai-setup/authentication/researcher-authentication.md b/docs/admin/runai-setup/authentication/researcher-authentication.md index ee4e7f078d..698dd604f7 100644 --- a/docs/admin/runai-setup/authentication/researcher-authentication.md +++ b/docs/admin/runai-setup/authentication/researcher-authentication.md @@ -77,8 +77,6 @@ Modifying the API Server configuration differs between Kubernetes distributions: If working via Rancher UI, need to add the flag as part of the cluster provisioning. Under `Cluster Management | Create`, turn on RKE2 and select a platform. Under `Cluster Configuration | Advanced | Additional API Server Args`. Add the Run:ai flags as `=` (e.g. `oidc-username-prefix=-`). - - At the time of writing, the flags cannot be changed after the cluster has been provisioned due to a Rancher bug. === "GKE" Install [Anthos identity service](https://cloud.google.com/kubernetes-engine/docs/how-to/oidc#enable-oidc){target=_blank} by running: diff --git a/docs/admin/runai-setup/cluster-setup/cluster-prerequisites.md b/docs/admin/runai-setup/cluster-setup/cluster-prerequisites.md index 2c03066b54..11c881bc85 100644 --- a/docs/admin/runai-setup/cluster-setup/cluster-prerequisites.md +++ b/docs/admin/runai-setup/cluster-setup/cluster-prerequisites.md @@ -36,7 +36,7 @@ Run:ai requires Kubernetes. Run:ai is been certified with the following Kubernet | EKS | Amazon Elastic Kubernetes Service | | | AKS | Azure Kubernetes Services | | | GKE | Google Kubernetes Engine | | -| RKE | Rancher Kubernetes Engine | When installing Run:ai, select _On Premise_. RKE2 has a defect which requires a specific installation flow. Please contact Run:ai customer support for additional details. | +| RKE | Rancher Kubernetes Engine | When installing Run:ai, select _On Premise_ | | Bright | [NVIDIA Bright Cluster Manager](https://www.nvidia.com/en-us/data-center/bright-cluster-manager/){target=_blank} | In addition, NVIDIA DGX comes [bundled](dgx-bundle.md) with Run:ai | Run:ai has been tested with the following Kubernetes distributions. Please contact Run:ai Customer Support for up to date certification details: From 280b08c8d4acb39e2ca49062289024540002f4ab Mon Sep 17 00:00:00 2001 From: Yaron Date: Mon, 14 Aug 2023 16:31:35 +0300 Subject: [PATCH 13/58] rke2-bug-fix --- .../runai-setup/authentication/researcher-authentication.md | 2 -- docs/admin/runai-setup/cluster-setup/cluster-prerequisites.md | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/admin/runai-setup/authentication/researcher-authentication.md b/docs/admin/runai-setup/authentication/researcher-authentication.md index ee4e7f078d..698dd604f7 100644 --- a/docs/admin/runai-setup/authentication/researcher-authentication.md +++ b/docs/admin/runai-setup/authentication/researcher-authentication.md @@ -77,8 +77,6 @@ Modifying the API Server configuration differs between Kubernetes distributions: If working via Rancher UI, need to add the flag as part of the cluster provisioning. Under `Cluster Management | Create`, turn on RKE2 and select a platform. Under `Cluster Configuration | Advanced | Additional API Server Args`. Add the Run:ai flags as `=` (e.g. `oidc-username-prefix=-`). - - At the time of writing, the flags cannot be changed after the cluster has been provisioned due to a Rancher bug. === "GKE" Install [Anthos identity service](https://cloud.google.com/kubernetes-engine/docs/how-to/oidc#enable-oidc){target=_blank} by running: diff --git a/docs/admin/runai-setup/cluster-setup/cluster-prerequisites.md b/docs/admin/runai-setup/cluster-setup/cluster-prerequisites.md index 2c03066b54..11c881bc85 100644 --- a/docs/admin/runai-setup/cluster-setup/cluster-prerequisites.md +++ b/docs/admin/runai-setup/cluster-setup/cluster-prerequisites.md @@ -36,7 +36,7 @@ Run:ai requires Kubernetes. Run:ai is been certified with the following Kubernet | EKS | Amazon Elastic Kubernetes Service | | | AKS | Azure Kubernetes Services | | | GKE | Google Kubernetes Engine | | -| RKE | Rancher Kubernetes Engine | When installing Run:ai, select _On Premise_. RKE2 has a defect which requires a specific installation flow. Please contact Run:ai customer support for additional details. | +| RKE | Rancher Kubernetes Engine | When installing Run:ai, select _On Premise_ | | Bright | [NVIDIA Bright Cluster Manager](https://www.nvidia.com/en-us/data-center/bright-cluster-manager/){target=_blank} | In addition, NVIDIA DGX comes [bundled](dgx-bundle.md) with Run:ai | Run:ai has been tested with the following Kubernetes distributions. Please contact Run:ai Customer Support for up to date certification details: From b8b3045711eb8f05f36bdbf7d2f08dee7c17745c Mon Sep 17 00:00:00 2001 From: jasonnovichRunAI <124490127+jasonnovichRunAI@users.noreply.github.com> Date: Tue, 15 Aug 2023 10:43:40 +0300 Subject: [PATCH 14/58] some more changes --- docs/admin/admin-ui-setup/admin-ui-users.md | 16 ++++++++-------- docs/developer/cluster-api/submit-yaml.md | 10 +++++----- mkdocs.yml | 4 ++++ 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/docs/admin/admin-ui-setup/admin-ui-users.md b/docs/admin/admin-ui-setup/admin-ui-users.md index f743756a62..87e65dbbbb 100644 --- a/docs/admin/admin-ui-setup/admin-ui-users.md +++ b/docs/admin/admin-ui-setup/admin-ui-users.md @@ -2,7 +2,7 @@ ## Introduction -The Run:ai UI allows the creation of Run:ai Users. Users are assigned levels of access to the to all aspects of the UI including submitting jobs on the cluster. +The Run:ai UI allows the creation of Run:ai Users. Users are assigned levels of access to all aspects of the UI including submitting jobs on the cluster. !!! Tip It is possible to connect the Run:ai UI to the organization's directory and use single sign-on (SSO). This allows you to set Run:ai roles for users and groups from the organizational directory. For further information see [single sign-on configuration](../runai-setup/authentication/sso.md). @@ -21,8 +21,8 @@ To create a new user: 1. Login to the Run:ai UI at `company-name.run.ai`. 2. Press the ![Tools and Settings](img/tools-and-settings.svg) icon, then select *Users*. 3. Press *New user* and enter the user's email address, then press *Create*. -4. Review the new user information and note the temporary password that has been assigned. You can opt to send the user an introductory email by selecting the checkbox. -5. When complete, press *Done*. +4. Review the new user information and note the temporary password that has been assigned. To send the user an introductory email, select the checkbox. +5. Press *Done* when complete. ## Assigning access rules to users @@ -31,12 +31,12 @@ Once you have created the users you can assign them *Access rules*. This provide To add an *Access rule* to a user: 1. Select the user, then press *Access rules*, then press *+Access rule*. -2. From the dropdown, select a *Role*. -3. Press on the ![Scope](../../images/scope-icon.svg) and select a scope for the user. +2. Select a *Role* from the dropdown. +3. Press ![Scope](../../images/scope-icon.svg) then select a scope for the user. You can select multiple scopes. 4. After selecting all the required scopes, press *Save rule*. -5. If you want to add another rule, use the *+Access rule*. -6. When all the rules are configured, press *Done*. +5. To add another rule, use the *+Access rule*. +6. Press *Done* when all the rules are configured. ### Roles and permissions -Roles provide a way to group permissions and assign them to either users or user groups. The role identifies the collection of permissions that administrators assign to users or user groups. Permissions define the actions that users can perform on the managed entities. The following table shows the default roles and permissions. For more information on roles, see [Role based access control](../runai-setup/access-control/rbac.md). +Roles provide a way for administrators to group and identify collections of permissions that administrators assign to [subjects](../runai-setup/access-control/rbac.md#subjects). Permissions define the actions that can be performed on managed entities. The [Roles](../runai-setup/access-control/rbac.md#roles) table shows the default roles and permissions that come with the syste. See [Role based access control](../runai-setup/access-control/rbac.md) for more information. diff --git a/docs/developer/cluster-api/submit-yaml.md b/docs/developer/cluster-api/submit-yaml.md index f88735a222..1b9c8664ff 100644 --- a/docs/developer/cluster-api/submit-yaml.md +++ b/docs/developer/cluster-api/submit-yaml.md @@ -106,12 +106,13 @@ spec: container: 8000 ``` -1. Possible metrics can be `cpu-utilization`, `latency`, `throughput`, `concurrency`, `gpu-utilization`, `custom`. Different metrics may require additional [installations](../../admin/runai-setup/cluster-setup/cluster-prerequisites.md#inference) at the cluster level. +1. Possible metrics can be `cpu-utilization`, `latency`, `throughput`, `concurrency`, `gpu-utilization`, `custom`. Different metrics may require additional [installations](../../admin/runai-setup/cluster-setup/cluster-prerequisites.md#inference) at the cluster level. 2. Inference requires a port to receive requests. ## Suspend/Resume Interactive/Training Workload -to suspend trainig +To suspend training: + ```YAML apiVersion: run.ai/v2alpha1 kind: TrainingWorkload # @@ -128,9 +129,8 @@ spec: name: value: job-1 # ``` -In order to suspend workload set `active` value to `false` -To reume it back either set `active` value to `true` or remove it entirly. - +In order to suspend the workload, set `active` to `false`. +To resume the workload, either set `active` to `true` or remove it entirely. ## See Also * To understand how to connect to the inference workload, see [Inference Quickstart](../../Researcher/Walkthroughs/quickstart-inference.md). diff --git a/mkdocs.yml b/mkdocs.yml index 38ecb20509..7be770db30 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -12,11 +12,15 @@ theme: logo: images/RUNAI-LOGO-DIGITAL-2C_WP.svg features: - navigation.tabs + - navigation.tabs.sticky - search.highlight - content.code.annotate - content.tabs.link - search.suggest - content.action.edit + - navigation.top + - toc.follow + # - toc.integrate icon: edit: material/pencil view: material/eye From dddfa265d626b9ad49ddce9c77fc8cb0f0019779 Mon Sep 17 00:00:00 2001 From: jasonnovichRunAI <124490127+jasonnovichRunAI@users.noreply.github.com> Date: Tue, 15 Aug 2023 11:45:31 +0300 Subject: [PATCH 15/58] start of linting implementation --- .github/workflows/old-publish-staging.yml | 32 - .github/workflows/publish-docs.yaml.old | 91 -- .github/workflows/styles/Joblint/Acronyms.yml | 10 + .github/workflows/styles/Joblint/Benefits.yml | 26 + .github/workflows/styles/Joblint/Bro.yml | 13 + .../workflows/styles/Joblint/Competitive.yml | 17 + .../workflows/styles/Joblint/Derogatory.yml | 15 + .github/workflows/styles/Joblint/DevEnv.yml | 17 + .../workflows/styles/Joblint/DumbTitles.yml | 13 + .github/workflows/styles/Joblint/Gendered.yml | 40 + .github/workflows/styles/Joblint/Hair.yml | 8 + .../workflows/styles/Joblint/LegacyTech.yml | 15 + .../workflows/styles/Joblint/Meritocracy.yml | 6 + .../workflows/styles/Joblint/Profanity.yml | 13 + .github/workflows/styles/Joblint/README.md | 25 + .github/workflows/styles/Joblint/Reassure.yml | 8 + .../workflows/styles/Joblint/Sexualised.yml | 10 + .github/workflows/styles/Joblint/Starter.yml | 9 + .../workflows/styles/Joblint/TechTerms.yml | 9 + .../workflows/styles/Joblint/Visionary.yml | 15 + .github/workflows/styles/Joblint/meta.json | 4 + .github/workflows/styles/Microsoft/AMPM.yml | 9 + .../styles/Microsoft/Accessibility.yml | 25 + .../workflows/styles/Microsoft/Acronyms.yml | 64 + .../workflows/styles/Microsoft/Adverbs.yml | 270 ++++ .github/workflows/styles/Microsoft/Auto.yml | 11 + .github/workflows/styles/Microsoft/Avoid.yml | 14 + .../styles/Microsoft/ComplexWords.yml | 120 ++ .../styles/Microsoft/Contractions.yml | 50 + .github/workflows/styles/Microsoft/Dashes.yml | 13 + .../workflows/styles/Microsoft/DateFormat.yml | 8 + .../styles/Microsoft/DateNumbers.yml | 40 + .../workflows/styles/Microsoft/DateOrder.yml | 8 + .../workflows/styles/Microsoft/Ellipses.yml | 9 + .../styles/Microsoft/FirstPerson.yml | 16 + .../workflows/styles/Microsoft/Foreign.yml | 12 + .github/workflows/styles/Microsoft/Gender.yml | 8 + .../workflows/styles/Microsoft/GenderBias.yml | 44 + .../workflows/styles/Microsoft/GeneralURL.yml | 11 + .../styles/Microsoft/HeadingAcronyms.yml | 7 + .../styles/Microsoft/HeadingColons.yml | 8 + .../styles/Microsoft/HeadingPunctuation.yml | 13 + .../workflows/styles/Microsoft/Headings.yml | 28 + .../workflows/styles/Microsoft/Hyphens.yml | 14 + .../workflows/styles/Microsoft/Negative.yml | 13 + .../workflows/styles/Microsoft/Ordinal.yml | 13 + .../styles/Microsoft/OxfordComma.yml | 8 + .../workflows/styles/Microsoft/Passive.yml | 183 +++ .../styles/Microsoft/Percentages.yml | 7 + .github/workflows/styles/Microsoft/Quotes.yml | 7 + .../styles/Microsoft/RangeFormat.yml | 13 + .../workflows/styles/Microsoft/RangeTime.yml | 13 + .github/workflows/styles/Microsoft/Ranges.yml | 7 + .../workflows/styles/Microsoft/Semicolon.yml | 8 + .../styles/Microsoft/SentenceLength.yml | 7 + .../workflows/styles/Microsoft/Spacing.yml | 8 + .../workflows/styles/Microsoft/Suspended.yml | 7 + .github/workflows/styles/Microsoft/Terms.yml | 43 + .../workflows/styles/Microsoft/URLFormat.yml | 10 + .github/workflows/styles/Microsoft/Units.yml | 16 + .github/workflows/styles/Microsoft/Vocab.yml | 25 + .github/workflows/styles/Microsoft/We.yml | 11 + .../workflows/styles/Microsoft/Wordiness.yml | 122 ++ .../styles/Microsoft/dashboard-analysis.md | 197 +++ .github/workflows/styles/Microsoft/meta.json | 4 + .../Readability/AutomatedReadability.yml | 8 + .../styles/Readability/ColemanLiau.yml | 8 + .../styles/Readability/FleschKincaid.yml | 8 + .../styles/Readability/FleschReadingEase.yml | 8 + .../styles/Readability/GunningFog.yml | 8 + .github/workflows/styles/Readability/LIX.yml | 17 + .github/workflows/styles/Readability/SMOG.yml | 8 + .../workflows/styles/Readability/meta.json | 4 + .../workflows/styles/Vocab/run-ai/accept.txt | 17 + .../workflows/styles/Vocab/run-ai/reject.txt | 0 .github/workflows/styles/alex/Ablist.yml | 248 ++++ .../workflows/styles/alex/Condescending.yml | 16 + .github/workflows/styles/alex/Gendered.yml | 108 ++ .github/workflows/styles/alex/LGBTQ.yml | 55 + .github/workflows/styles/alex/Press.yml | 11 + .../workflows/styles/alex/ProfanityLikely.yml | 1289 +++++++++++++++++ .../workflows/styles/alex/ProfanityMaybe.yml | 282 ++++ .../styles/alex/ProfanityUnlikely.yml | 251 ++++ .github/workflows/styles/alex/README.md | 27 + .github/workflows/styles/alex/Race.yml | 87 ++ .github/workflows/styles/alex/Suicide.yml | 24 + .github/workflows/styles/alex/meta.json | 4 + .../workflows/styles/proselint/Airlinese.yml | 8 + .../styles/proselint/AnimalLabels.yml | 48 + .../styles/proselint/Annotations.yml | 9 + .../styles/proselint/Apologizing.yml | 8 + .../workflows/styles/proselint/Archaisms.yml | 52 + .github/workflows/styles/proselint/But.yml | 8 + .../workflows/styles/proselint/Cliches.yml | 782 ++++++++++ .../styles/proselint/CorporateSpeak.yml | 30 + .../workflows/styles/proselint/Currency.yml | 5 + .../workflows/styles/proselint/Cursing.yml | 15 + .../workflows/styles/proselint/DateCase.yml | 7 + .../styles/proselint/DateMidnight.yml | 7 + .../styles/proselint/DateRedundancy.yml | 10 + .../styles/proselint/DateSpacing.yml | 7 + .../styles/proselint/DenizenLabels.yml | 52 + .../styles/proselint/Diacritical.yml | 95 ++ .../workflows/styles/proselint/GenderBias.yml | 45 + .../workflows/styles/proselint/GroupTerms.yml | 39 + .../workflows/styles/proselint/Hedging.yml | 8 + .../workflows/styles/proselint/Hyperbole.yml | 6 + .github/workflows/styles/proselint/Jargon.yml | 11 + .../styles/proselint/LGBTOffensive.yml | 13 + .../workflows/styles/proselint/LGBTTerms.yml | 15 + .../styles/proselint/Malapropisms.yml | 8 + .../workflows/styles/proselint/Needless.yml | 358 +++++ .../workflows/styles/proselint/Nonwords.yml | 38 + .../workflows/styles/proselint/Oxymorons.yml | 22 + .../workflows/styles/proselint/P-Value.yml | 6 + .../styles/proselint/RASSyndrome.yml | 30 + .github/workflows/styles/proselint/README.md | 12 + .../workflows/styles/proselint/Skunked.yml | 13 + .../workflows/styles/proselint/Spelling.yml | 17 + .../workflows/styles/proselint/Typography.yml | 11 + .../styles/proselint/Uncomparables.yml | 50 + .github/workflows/styles/proselint/Very.yml | 6 + .github/workflows/styles/proselint/meta.json | 17 + .../workflows/styles/run-ai/run-ai-terms.yml | 21 + .../workflows/styles/write-good/Cliches.yml | 702 +++++++++ .../workflows/styles/write-good/E-Prime.yml | 32 + .../workflows/styles/write-good/Illusions.yml | 11 + .../workflows/styles/write-good/Passive.yml | 183 +++ .github/workflows/styles/write-good/README.md | 27 + .github/workflows/styles/write-good/So.yml | 5 + .../workflows/styles/write-good/ThereIs.yml | 6 + .../workflows/styles/write-good/TooWordy.yml | 221 +++ .../workflows/styles/write-good/Weasel.yml | 207 +++ .github/workflows/styles/write-good/meta.json | 4 + ...linting.yml.not-ready => vale-linting.yml} | 12 + vale.ini | 12 + 136 files changed, 7596 insertions(+), 123 deletions(-) delete mode 100644 .github/workflows/old-publish-staging.yml delete mode 100644 .github/workflows/publish-docs.yaml.old create mode 100644 .github/workflows/styles/Joblint/Acronyms.yml create mode 100644 .github/workflows/styles/Joblint/Benefits.yml create mode 100644 .github/workflows/styles/Joblint/Bro.yml create mode 100644 .github/workflows/styles/Joblint/Competitive.yml create mode 100644 .github/workflows/styles/Joblint/Derogatory.yml create mode 100644 .github/workflows/styles/Joblint/DevEnv.yml create mode 100644 .github/workflows/styles/Joblint/DumbTitles.yml create mode 100644 .github/workflows/styles/Joblint/Gendered.yml create mode 100644 .github/workflows/styles/Joblint/Hair.yml create mode 100644 .github/workflows/styles/Joblint/LegacyTech.yml create mode 100644 .github/workflows/styles/Joblint/Meritocracy.yml create mode 100644 .github/workflows/styles/Joblint/Profanity.yml create mode 100644 .github/workflows/styles/Joblint/README.md create mode 100644 .github/workflows/styles/Joblint/Reassure.yml create mode 100644 .github/workflows/styles/Joblint/Sexualised.yml create mode 100644 .github/workflows/styles/Joblint/Starter.yml create mode 100644 .github/workflows/styles/Joblint/TechTerms.yml create mode 100644 .github/workflows/styles/Joblint/Visionary.yml create mode 100644 .github/workflows/styles/Joblint/meta.json create mode 100644 .github/workflows/styles/Microsoft/AMPM.yml create mode 100644 .github/workflows/styles/Microsoft/Accessibility.yml create mode 100644 .github/workflows/styles/Microsoft/Acronyms.yml create mode 100644 .github/workflows/styles/Microsoft/Adverbs.yml create mode 100644 .github/workflows/styles/Microsoft/Auto.yml create mode 100644 .github/workflows/styles/Microsoft/Avoid.yml create mode 100644 .github/workflows/styles/Microsoft/ComplexWords.yml create mode 100644 .github/workflows/styles/Microsoft/Contractions.yml create mode 100644 .github/workflows/styles/Microsoft/Dashes.yml create mode 100644 .github/workflows/styles/Microsoft/DateFormat.yml create mode 100644 .github/workflows/styles/Microsoft/DateNumbers.yml create mode 100644 .github/workflows/styles/Microsoft/DateOrder.yml create mode 100644 .github/workflows/styles/Microsoft/Ellipses.yml create mode 100644 .github/workflows/styles/Microsoft/FirstPerson.yml create mode 100644 .github/workflows/styles/Microsoft/Foreign.yml create mode 100644 .github/workflows/styles/Microsoft/Gender.yml create mode 100644 .github/workflows/styles/Microsoft/GenderBias.yml create mode 100644 .github/workflows/styles/Microsoft/GeneralURL.yml create mode 100644 .github/workflows/styles/Microsoft/HeadingAcronyms.yml create mode 100644 .github/workflows/styles/Microsoft/HeadingColons.yml create mode 100644 .github/workflows/styles/Microsoft/HeadingPunctuation.yml create mode 100644 .github/workflows/styles/Microsoft/Headings.yml create mode 100644 .github/workflows/styles/Microsoft/Hyphens.yml create mode 100644 .github/workflows/styles/Microsoft/Negative.yml create mode 100644 .github/workflows/styles/Microsoft/Ordinal.yml create mode 100644 .github/workflows/styles/Microsoft/OxfordComma.yml create mode 100644 .github/workflows/styles/Microsoft/Passive.yml create mode 100644 .github/workflows/styles/Microsoft/Percentages.yml create mode 100644 .github/workflows/styles/Microsoft/Quotes.yml create mode 100644 .github/workflows/styles/Microsoft/RangeFormat.yml create mode 100644 .github/workflows/styles/Microsoft/RangeTime.yml create mode 100644 .github/workflows/styles/Microsoft/Ranges.yml create mode 100644 .github/workflows/styles/Microsoft/Semicolon.yml create mode 100644 .github/workflows/styles/Microsoft/SentenceLength.yml create mode 100644 .github/workflows/styles/Microsoft/Spacing.yml create mode 100644 .github/workflows/styles/Microsoft/Suspended.yml create mode 100644 .github/workflows/styles/Microsoft/Terms.yml create mode 100644 .github/workflows/styles/Microsoft/URLFormat.yml create mode 100644 .github/workflows/styles/Microsoft/Units.yml create mode 100644 .github/workflows/styles/Microsoft/Vocab.yml create mode 100644 .github/workflows/styles/Microsoft/We.yml create mode 100644 .github/workflows/styles/Microsoft/Wordiness.yml create mode 100644 .github/workflows/styles/Microsoft/dashboard-analysis.md create mode 100644 .github/workflows/styles/Microsoft/meta.json create mode 100644 .github/workflows/styles/Readability/AutomatedReadability.yml create mode 100644 .github/workflows/styles/Readability/ColemanLiau.yml create mode 100644 .github/workflows/styles/Readability/FleschKincaid.yml create mode 100644 .github/workflows/styles/Readability/FleschReadingEase.yml create mode 100644 .github/workflows/styles/Readability/GunningFog.yml create mode 100644 .github/workflows/styles/Readability/LIX.yml create mode 100644 .github/workflows/styles/Readability/SMOG.yml create mode 100644 .github/workflows/styles/Readability/meta.json create mode 100644 .github/workflows/styles/Vocab/run-ai/accept.txt create mode 100644 .github/workflows/styles/Vocab/run-ai/reject.txt create mode 100644 .github/workflows/styles/alex/Ablist.yml create mode 100644 .github/workflows/styles/alex/Condescending.yml create mode 100644 .github/workflows/styles/alex/Gendered.yml create mode 100644 .github/workflows/styles/alex/LGBTQ.yml create mode 100644 .github/workflows/styles/alex/Press.yml create mode 100644 .github/workflows/styles/alex/ProfanityLikely.yml create mode 100644 .github/workflows/styles/alex/ProfanityMaybe.yml create mode 100644 .github/workflows/styles/alex/ProfanityUnlikely.yml create mode 100644 .github/workflows/styles/alex/README.md create mode 100644 .github/workflows/styles/alex/Race.yml create mode 100644 .github/workflows/styles/alex/Suicide.yml create mode 100644 .github/workflows/styles/alex/meta.json create mode 100644 .github/workflows/styles/proselint/Airlinese.yml create mode 100644 .github/workflows/styles/proselint/AnimalLabels.yml create mode 100644 .github/workflows/styles/proselint/Annotations.yml create mode 100644 .github/workflows/styles/proselint/Apologizing.yml create mode 100644 .github/workflows/styles/proselint/Archaisms.yml create mode 100644 .github/workflows/styles/proselint/But.yml create mode 100644 .github/workflows/styles/proselint/Cliches.yml create mode 100644 .github/workflows/styles/proselint/CorporateSpeak.yml create mode 100644 .github/workflows/styles/proselint/Currency.yml create mode 100644 .github/workflows/styles/proselint/Cursing.yml create mode 100644 .github/workflows/styles/proselint/DateCase.yml create mode 100644 .github/workflows/styles/proselint/DateMidnight.yml create mode 100644 .github/workflows/styles/proselint/DateRedundancy.yml create mode 100644 .github/workflows/styles/proselint/DateSpacing.yml create mode 100644 .github/workflows/styles/proselint/DenizenLabels.yml create mode 100644 .github/workflows/styles/proselint/Diacritical.yml create mode 100644 .github/workflows/styles/proselint/GenderBias.yml create mode 100644 .github/workflows/styles/proselint/GroupTerms.yml create mode 100644 .github/workflows/styles/proselint/Hedging.yml create mode 100644 .github/workflows/styles/proselint/Hyperbole.yml create mode 100644 .github/workflows/styles/proselint/Jargon.yml create mode 100644 .github/workflows/styles/proselint/LGBTOffensive.yml create mode 100644 .github/workflows/styles/proselint/LGBTTerms.yml create mode 100644 .github/workflows/styles/proselint/Malapropisms.yml create mode 100644 .github/workflows/styles/proselint/Needless.yml create mode 100644 .github/workflows/styles/proselint/Nonwords.yml create mode 100644 .github/workflows/styles/proselint/Oxymorons.yml create mode 100644 .github/workflows/styles/proselint/P-Value.yml create mode 100644 .github/workflows/styles/proselint/RASSyndrome.yml create mode 100644 .github/workflows/styles/proselint/README.md create mode 100644 .github/workflows/styles/proselint/Skunked.yml create mode 100644 .github/workflows/styles/proselint/Spelling.yml create mode 100644 .github/workflows/styles/proselint/Typography.yml create mode 100644 .github/workflows/styles/proselint/Uncomparables.yml create mode 100644 .github/workflows/styles/proselint/Very.yml create mode 100644 .github/workflows/styles/proselint/meta.json create mode 100644 .github/workflows/styles/run-ai/run-ai-terms.yml create mode 100644 .github/workflows/styles/write-good/Cliches.yml create mode 100644 .github/workflows/styles/write-good/E-Prime.yml create mode 100644 .github/workflows/styles/write-good/Illusions.yml create mode 100644 .github/workflows/styles/write-good/Passive.yml create mode 100644 .github/workflows/styles/write-good/README.md create mode 100644 .github/workflows/styles/write-good/So.yml create mode 100644 .github/workflows/styles/write-good/ThereIs.yml create mode 100644 .github/workflows/styles/write-good/TooWordy.yml create mode 100644 .github/workflows/styles/write-good/Weasel.yml create mode 100644 .github/workflows/styles/write-good/meta.json rename .github/workflows/{vale-linting.yml.not-ready => vale-linting.yml} (58%) create mode 100644 vale.ini diff --git a/.github/workflows/old-publish-staging.yml b/.github/workflows/old-publish-staging.yml deleted file mode 100644 index 73ba31417e..0000000000 --- a/.github/workflows/old-publish-staging.yml +++ /dev/null @@ -1,32 +0,0 @@ -name: Not Good Publish to staging -on: - workflow_dispatch: - branches: - - 'v2.10' - inputs: - releaseType: - description: 'Publish to staging site' - required: True - default: 'staging' - -jobs: - staging: - name: Deploy to staging - environment: - name: staging - runs-on: ubuntu-latest - steps: - - name: checkout - uses: actions/checkout@v3 - - name: python setup - uses: actions/setup-python@v4 - with: - python-version: 3.x - - uses: actions/cache@v2 - with: - key: ${{ github.ref }} - path: .cache - - name: build - run: pip3 install -r requirements.txt - - name: deploy - run: mkdocs gh-deploy --force diff --git a/.github/workflows/publish-docs.yaml.old b/.github/workflows/publish-docs.yaml.old deleted file mode 100644 index e4ae8337db..0000000000 --- a/.github/workflows/publish-docs.yaml.old +++ /dev/null @@ -1,91 +0,0 @@ -name: publish docs CI - -on: - workflow_dispatch: - inputs: - version: - required: false - description: 'Version number from branch / "main" for latest' - default: "main" - type: string - alias: - required: false - description: 'Version alias / "latest" for latest' - default: "latest" - type: string - title: - required: false - description: 'Doc site dropdown menu title (version +/- latest)' - default: "latest" - type: string - - # pull_request: - # branches: - # - "master" - -jobs: - install_dependencies_and_deploy: - name: install dependencies and deploy latest changes to prod - runs-on: ubuntu-latest - steps: - - name: checkout latest - uses: actions/checkout@v3 - with: - ref: ${{ inputs.version }} - fetch-depth: 0 - - - name: setup python - uses: actions/setup-python@v4 - with: - python-version: '3.9' - cache: 'pip' # caching pip dependencies - - - name: install dependencies - run: | - pip3 install -r requirements.txt - - - - - name: Configure Git User - run: | - git config user.name "jasonnovichrunai" - git config user.email "jason.novich@run.ai" -# git fetch origin gh-pages - -# - name: deploy mkdocs latest -# # run: mkdocs gh-deploy --force -# # echo "deploy new version with mike..." -# if: ${{ inputs.version == 'master'}} -# run: | -# mike deploy --push ${{ inputs.version }} ${{ inputs.alias }} --title=${{ inputs.title }}-latest -# mike set-default ${{ inputs.alias }} --ignore -# - name: deploy mkdocs version -# if: ${{ inputs.version != 'master' }} -# run: | -# mike deploy --push ${{ inputs.version }} ${{ inputs.alias }} --title=${{ inputs.title }}-latest -# mike set-default ${{ inputs.alias }} --ignore -# if [[ "${{ inputs.delete_latest }}" == 'true' ]]; then -# mike delete --push latest -# fi -# --title=${{ inputs.alias }}${latest} -# run: mike delete --push 2.9a - - - - name: deploy mkdocs - run: | - mike list - echo "deploy new version with mike..." - latest="" - if [[ "${{ inputs.version }}" == 'main' ]]; then - version=latest - latest="-latest" - else - version=${{ inputs.version }} - fi - echo "${version}" - mike deploy --push ${{ inputs.version }} ${{ inputs.alias }} --title=${{ inputs.title }} - if [[ "${{ inputs.version }}" == 'main' ]]; then - echo "setting this version as a latest..." - mike set-default ${{ inputs.alias }} --ignore - fi - diff --git a/.github/workflows/styles/Joblint/Acronyms.yml b/.github/workflows/styles/Joblint/Acronyms.yml new file mode 100644 index 0000000000..5937dcd17d --- /dev/null +++ b/.github/workflows/styles/Joblint/Acronyms.yml @@ -0,0 +1,10 @@ +extends: substitution +message: Use '%s' instead of '%s' +description: "Tech people know their acronyms; you come across as not very tech-savvy if you expand them." +ignorecase: true +level: warning +action: + name: replace +swap: + 'cascading[ -]?style[ -]?sheets': CSS + 'hyper[ -]?text(?:[ -]?mark[ -]?up(?:[ -]?language)?)?': HTML diff --git a/.github/workflows/styles/Joblint/Benefits.yml b/.github/workflows/styles/Joblint/Benefits.yml new file mode 100644 index 0000000000..142aefbbfc --- /dev/null +++ b/.github/workflows/styles/Joblint/Benefits.yml @@ -0,0 +1,26 @@ +extends: existence +message: "Avoid using '%s'" +description: "Benefits such as '%s' are not bad in themselves, but their appearance in a job post often disguises the fact that there are few real benefits to working for a company." +ignorecase: true +level: warning +tokens: + - 'ales?' + - 'beers?' + - 'brewskis?' + - 'coffee' + - '(?:foos|fuss)[ -]*ball' + - 'happy[ -]*hours?' + - 'keg(erator)?s?' + - 'lagers?' + - 'nerf[ -]*guns?' + - 'ping[ -]*pong?' + - 'pints?' + - 'pizzas?' + - 'play\\s*stations?' + - 'pool[ -]*table|pool' + - 'rock[ -]*walls?' + - 'table[ -]*football' + - 'table[ -]*tennis' + - 'wiis?' + - 'xbox(?:es|s)?' + - 'massages?' diff --git a/.github/workflows/styles/Joblint/Bro.yml b/.github/workflows/styles/Joblint/Bro.yml new file mode 100644 index 0000000000..83279ad1d4 --- /dev/null +++ b/.github/workflows/styles/Joblint/Bro.yml @@ -0,0 +1,13 @@ +extends: existence +message: "Avoid using '%s'" +description: "Bro culture terminology can really reduce the number of people likely to show interest." +ignorecase: true +level: error +tokens: + - 'brogramm(?:er|ers|ing)' + - 'crank' + - 'crush' + - 'hard[ -]*core' + - 'hella' + - 'mak(?:e|ing) it rain' + - 'skillz' diff --git a/.github/workflows/styles/Joblint/Competitive.yml b/.github/workflows/styles/Joblint/Competitive.yml new file mode 100644 index 0000000000..e597976407 --- /dev/null +++ b/.github/workflows/styles/Joblint/Competitive.yml @@ -0,0 +1,17 @@ +extends: existence +message: "Avoid using '%s'" +description: "Competition can be healthy, but for a lot of people a heavily competitive environment can be a strain." +ignorecase: true +level: suggestion +tokens: + - 'compete' + - 'competition' + - 'competitive' + - 'cutting[ -]edge' + - 'fail' + - 'fore[ -]*front' + - 'super[ -]*stars?' + - 'the best' + - 'reach the top' + - 'top of .{2,8} (?:game|class)' + - 'win' diff --git a/.github/workflows/styles/Joblint/Derogatory.yml b/.github/workflows/styles/Joblint/Derogatory.yml new file mode 100644 index 0000000000..f64452f737 --- /dev/null +++ b/.github/workflows/styles/Joblint/Derogatory.yml @@ -0,0 +1,15 @@ +extends: existence +message: "Avoid using '%s'" +description: "When you use '%s,' you're being discriminatory." +ignorecase: true +level: error +tokens: + - 'bia?tch(?:es)?' + - 'bimbos?' + - 'hoes?' + - 'hunks?' + - 'milfs?' + - 'slags?' + - 'sluts?' + - 'stallions?' + - 'studs?' diff --git a/.github/workflows/styles/Joblint/DevEnv.yml b/.github/workflows/styles/Joblint/DevEnv.yml new file mode 100644 index 0000000000..6dd2085133 --- /dev/null +++ b/.github/workflows/styles/Joblint/DevEnv.yml @@ -0,0 +1,17 @@ +extends: existence +message: "Don't specify a development environment unless absolutely necessary." +ignorecase: true +level: suggestion +tokens: + - 'atom' + - 'bb[ -]*edit' + - 'dream[ -]*weaver' + - 'eclipse' + - 'emacs' + - 'net[ -]*beans' + - 'note[ -]*pad' + - 'sublime[ -]*text' + - 'text[ -]*wrangler' + - 'text[ -]*mate' + - 'vim?' + - 'visual[ -]*studio' diff --git a/.github/workflows/styles/Joblint/DumbTitles.yml b/.github/workflows/styles/Joblint/DumbTitles.yml new file mode 100644 index 0000000000..f6a99af845 --- /dev/null +++ b/.github/workflows/styles/Joblint/DumbTitles.yml @@ -0,0 +1,13 @@ +extends: existence +message: "Avoid using '%s'" +description: "Referring to tech people as '%s' devalues the work that they do and shows a lack of respect and professionalism." +ignorecase: true +level: warning +tokens: + - 'gurus?' + - 'hero(?:es|ic)?' + - 'ninjas?' + - 'rock[ -]*stars?' + - 'super[ -]*stars?' + - 'badass(?:es)?' + - 'BAMF' diff --git a/.github/workflows/styles/Joblint/Gendered.yml b/.github/workflows/styles/Joblint/Gendered.yml new file mode 100644 index 0000000000..f6c2a8e256 --- /dev/null +++ b/.github/workflows/styles/Joblint/Gendered.yml @@ -0,0 +1,40 @@ +extends: existence +message: "Avoid using '%s'" +description: "Use of '%s' could indicate that you're discriminating in favour of a certain gender." +ignorecase: true +level: error +tokens: + - 'boys?' + - 'bros?' + - 'broth(?:a|er)s?' + - 'chicks?' + - 'dads?' + - 'dudes?' + - 'fathers?' + - 'females?' + - 'gentlem[ae]n' + - 'girls?' + - 'grandfathers?' + - 'grandmas?' + - 'grandmothers?' + - 'grandpas?' + - 'gran' + - 'grann(?:y|ies)' + - 'guys?' + - 'husbands?' + - 'lad(y|ies)?' + - 'm[ae]n' + - 'm[ou]ms?' + - 'males?' + - 'momm(?:y|ies)' + - 'mommas?' + - 'mothers?' + - 'papas?' + - 'sist(?:a|er)s?' + - 'wi(?:fe|ves)' + - 'wom[ae]n' + - he + - her + - him + - his + - she diff --git a/.github/workflows/styles/Joblint/Hair.yml b/.github/workflows/styles/Joblint/Hair.yml new file mode 100644 index 0000000000..44cdad99fe --- /dev/null +++ b/.github/workflows/styles/Joblint/Hair.yml @@ -0,0 +1,8 @@ +extends: existence +message: "Avoid using '%s'" +description: "The use of '%s' indicates that you're only looking for male developers." +ignorecase: true +level: error +tokens: + - 'beard(?:ed|s|y)?' + - 'grizzl(?:ed|y)' diff --git a/.github/workflows/styles/Joblint/LegacyTech.yml b/.github/workflows/styles/Joblint/LegacyTech.yml new file mode 100644 index 0000000000..9e2a368006 --- /dev/null +++ b/.github/workflows/styles/Joblint/LegacyTech.yml @@ -0,0 +1,15 @@ +extends: existence +message: "Avoid using '%s'" +description: "Legacy technologies can reduce the number of people interested in a job." +ignorecase: true +level: suggestion +tokens: + - 'cobol' + - 'cvs' + - 'front[ -]*page' + - 'rcs' + - 'sccs' + - 'source[ -]*safe' + - 'vb\\s*6' + - 'visual[ -]*basic\\s*6' + - 'vbscript' diff --git a/.github/workflows/styles/Joblint/Meritocracy.yml b/.github/workflows/styles/Joblint/Meritocracy.yml new file mode 100644 index 0000000000..ca4ecbd4ae --- /dev/null +++ b/.github/workflows/styles/Joblint/Meritocracy.yml @@ -0,0 +1,6 @@ +extends: existence +message: "Reevaluate the use of '%s'" +ignorecase: true +level: suggestion +tokens: + - 'meritocra(?:cy|cies|tic)' diff --git a/.github/workflows/styles/Joblint/Profanity.yml b/.github/workflows/styles/Joblint/Profanity.yml new file mode 100644 index 0000000000..7db0c1e017 --- /dev/null +++ b/.github/workflows/styles/Joblint/Profanity.yml @@ -0,0 +1,13 @@ +extends: existence +message: "Remove '%s'" +ignorecase: true +level: warning +tokens: + - 'bloody' + - 'bugger' + - 'cunt' + - 'damn' + - 'fuck(?:er|ing)?' + - 'piss(?:ing)?' + - 'shit' + - 'motherfuck(?:ers?|ing)' diff --git a/.github/workflows/styles/Joblint/README.md b/.github/workflows/styles/Joblint/README.md new file mode 100644 index 0000000000..3352ff8623 --- /dev/null +++ b/.github/workflows/styles/Joblint/README.md @@ -0,0 +1,25 @@ +Based on [Joblint](https://github.com/rowanmanning/joblint). + +> Test tech job posts for issues with sexism, culture, expectations, and recruiter fails. + +``` +Copyright (c) 2015, Rowan Manning + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +``` diff --git a/.github/workflows/styles/Joblint/Reassure.yml b/.github/workflows/styles/Joblint/Reassure.yml new file mode 100644 index 0000000000..daa54e341e --- /dev/null +++ b/.github/workflows/styles/Joblint/Reassure.yml @@ -0,0 +1,8 @@ +extends: existence +message: "Avoid using '%s'" +description: "Something feels off when you need to reassure someone of something that should definitely not be an issue in any workplace." +ignorecase: true +level: suggestion +tokens: + - 'drama[ -]*free' + - 'stress[ -]*free' diff --git a/.github/workflows/styles/Joblint/Sexualised.yml b/.github/workflows/styles/Joblint/Sexualised.yml new file mode 100644 index 0000000000..3afec1bb7b --- /dev/null +++ b/.github/workflows/styles/Joblint/Sexualised.yml @@ -0,0 +1,10 @@ +extends: existence +message: "Avoid using '%s'" +description: "Terms like '%s' are often used if the person writing a post doesn't know what they are talking about." +ignorecase: true +level: warning +tokens: + - gay for + - sexy + - hawt + - phat diff --git a/.github/workflows/styles/Joblint/Starter.yml b/.github/workflows/styles/Joblint/Starter.yml new file mode 100644 index 0000000000..3303dec9bc --- /dev/null +++ b/.github/workflows/styles/Joblint/Starter.yml @@ -0,0 +1,9 @@ +extends: existence +message: "Avoid using '%s'" +description: "Terms like '%s' and others can indicate that the person writing a job post is unaware of the time and effort involved in preparing a new starter for work." +ignorecase: true +level: suggestion +tokens: + - 'hit[ -]the[ -]ground[ -]running' + - 'juggle' + - 'tight deadlines?' diff --git a/.github/workflows/styles/Joblint/TechTerms.yml b/.github/workflows/styles/Joblint/TechTerms.yml new file mode 100644 index 0000000000..1b267d8f0b --- /dev/null +++ b/.github/workflows/styles/Joblint/TechTerms.yml @@ -0,0 +1,9 @@ +extends: substitution +message: Use '%s' instead of '%s' +ignorecase: true +level: error +action: + name: replace +swap: + 'java[ -]?scripts?': JavaScript + ruby on rail: Ruby on Rails diff --git a/.github/workflows/styles/Joblint/Visionary.yml b/.github/workflows/styles/Joblint/Visionary.yml new file mode 100644 index 0000000000..1ddbc2a1f7 --- /dev/null +++ b/.github/workflows/styles/Joblint/Visionary.yml @@ -0,0 +1,15 @@ +extends: existence +message: "Avoid using '%s'" +description: "Terms like '%s' often indicate that a non technical person (perhaps a CEO or stakeholder) has been involved in writing the post." +ignorecase: true +level: warning +tokens: + - 'blue[ -]*sk(?:y|ies)' + - 'enlighten(?:ed|ing)?' + - 'green[ -]*fields?' + - 'incentivi[sz]e' + - 'paradigm' + - 'producti[sz]e' + - 'reach(?:ed|ing)? out' + - 'synerg(?:y|ize|ise)' + - 'visionar(?:y|ies)' diff --git a/.github/workflows/styles/Joblint/meta.json b/.github/workflows/styles/Joblint/meta.json new file mode 100644 index 0000000000..6c00cb6104 --- /dev/null +++ b/.github/workflows/styles/Joblint/meta.json @@ -0,0 +1,4 @@ +{ + "feed": "https://github.com/errata-ai/Joblint/releases.atom", + "vale_version": ">=1.0.0" +} diff --git a/.github/workflows/styles/Microsoft/AMPM.yml b/.github/workflows/styles/Microsoft/AMPM.yml new file mode 100644 index 0000000000..8b9fed162a --- /dev/null +++ b/.github/workflows/styles/Microsoft/AMPM.yml @@ -0,0 +1,9 @@ +extends: existence +message: Use 'AM' or 'PM' (preceded by a space). +link: https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/term-collections/date-time-terms +level: error +nonword: true +tokens: + - '\d{1,2}[AP]M' + - '\d{1,2} ?[ap]m' + - '\d{1,2} ?[aApP]\.[mM]\.' diff --git a/.github/workflows/styles/Microsoft/Accessibility.yml b/.github/workflows/styles/Microsoft/Accessibility.yml new file mode 100644 index 0000000000..05bf927390 --- /dev/null +++ b/.github/workflows/styles/Microsoft/Accessibility.yml @@ -0,0 +1,25 @@ +extends: existence +message: "Don't use language (such as '%s') that defines people by their disability." +link: https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/term-collections/accessibility-terms +level: suggestion +ignorecase: true +tokens: + - a victim of + - able-bodied + - affected by + - an epileptic + - crippled + - disabled + - dumb + - handicapped + - handicaps + - healthy + - lame + - maimed + - missing a limb + - mute + - normal + - sight-impaired + - stricken with + - suffers from + - vision-impaired diff --git a/.github/workflows/styles/Microsoft/Acronyms.yml b/.github/workflows/styles/Microsoft/Acronyms.yml new file mode 100644 index 0000000000..308ff7c0ed --- /dev/null +++ b/.github/workflows/styles/Microsoft/Acronyms.yml @@ -0,0 +1,64 @@ +extends: conditional +message: "'%s' has no definition." +link: https://docs.microsoft.com/en-us/style-guide/acronyms +level: suggestion +ignorecase: false +# Ensures that the existence of 'first' implies the existence of 'second'. +first: '\b([A-Z]{3,5})\b' +second: '(?:\b[A-Z][a-z]+ )+\(([A-Z]{3,5})\)' +# ... with the exception of these: +exceptions: + - API + - ASP + - CLI + - CPU + - CSS + - CSV + - DEBUG + - DOM + - DPI + - FAQ + - GCC + - GDB + - GET + - GPU + - GTK + - GUI + - HTML + - HTTP + - HTTPS + - IDE + - JAR + - JSON + - JSX + - LESS + - LLDB + - NET + - NOTE + - NVDA + - OSS + - PATH + - PDF + - PHP + - POST + - RAM + - REPL + - RSA + - SCM + - SCSS + - SDK + - SQL + - SSH + - SSL + - SVG + - TBD + - TCP + - TODO + - URI + - URL + - USB + - UTF + - XML + - XSS + - YAML + - ZIP diff --git a/.github/workflows/styles/Microsoft/Adverbs.yml b/.github/workflows/styles/Microsoft/Adverbs.yml new file mode 100644 index 0000000000..07d98d83e3 --- /dev/null +++ b/.github/workflows/styles/Microsoft/Adverbs.yml @@ -0,0 +1,270 @@ +extends: existence +message: "Consider removing '%s'." +link: https://docs.microsoft.com/en-us/style-guide/word-choice/use-simple-words-concise-sentences +ignorecase: true +level: warning +action: + name: remove +tokens: + - abnormally + - absentmindedly + - accidentally + - adventurously + - anxiously + - arrogantly + - awkwardly + - bashfully + - beautifully + - bitterly + - bleakly + - blindly + - blissfully + - boastfully + - boldly + - bravely + - briefly + - brightly + - briskly + - broadly + - busily + - calmly + - carefully + - carelessly + - cautiously + - cheerfully + - cleverly + - closely + - coaxingly + - colorfully + - continually + - coolly + - courageously + - crossly + - cruelly + - curiously + - daintily + - dearly + - deceivingly + - deeply + - defiantly + - deliberately + - delightfully + - diligently + - dimly + - doubtfully + - dreamily + - easily + - elegantly + - energetically + - enormously + - enthusiastically + - excitedly + - extremely + - fairly + - faithfully + - famously + - ferociously + - fervently + - fiercely + - fondly + - foolishly + - fortunately + - frankly + - frantically + - freely + - frenetically + - frightfully + - furiously + - generally + - generously + - gently + - gladly + - gleefully + - gracefully + - gratefully + - greatly + - greedily + - happily + - hastily + - healthily + - heavily + - helplessly + - honestly + - hopelessly + - hungrily + - innocently + - inquisitively + - intensely + - intently + - interestingly + - inwardly + - irritably + - jaggedly + - jealously + - jovially + - joyfully + - joyously + - jubilantly + - judgmentally + - justly + - keenly + - kiddingly + - kindheartedly + - knavishly + - knowingly + - knowledgeably + - lazily + - lightly + - limply + - lively + - loftily + - longingly + - loosely + - loudly + - lovingly + - loyally + - madly + - majestically + - meaningfully + - mechanically + - merrily + - miserably + - mockingly + - mortally + - mysteriously + - naturally + - nearly + - neatly + - nervously + - nicely + - noisily + - obediently + - obnoxiously + - oddly + - offensively + - optimistically + - overconfidently + - painfully + - partially + - patiently + - perfectly + - playfully + - politely + - poorly + - positively + - potentially + - powerfully + - promptly + - properly + - punctually + - quaintly + - queasily + - queerly + - questionably + - quickly + - quietly + - quirkily + - quizzically + - randomly + - rapidly + - rarely + - readily + - really + - reassuringly + - recklessly + - regularly + - reluctantly + - repeatedly + - reproachfully + - restfully + - righteously + - rightfully + - rigidly + - roughly + - rudely + - safely + - scarcely + - scarily + - searchingly + - sedately + - seemingly + - selfishly + - separately + - seriously + - shakily + - sharply + - sheepishly + - shrilly + - shyly + - silently + - sleepily + - slowly + - smoothly + - softly + - solemnly + - solidly + - speedily + - stealthily + - sternly + - strictly + - suddenly + - supposedly + - surprisingly + - suspiciously + - sweetly + - swiftly + - sympathetically + - tenderly + - tensely + - terribly + - thankfully + - thoroughly + - thoughtfully + - tightly + - tremendously + - triumphantly + - truthfully + - ultimately + - unabashedly + - unaccountably + - unbearably + - unethically + - unexpectedly + - unfortunately + - unimpressively + - unnaturally + - unnecessarily + - urgently + - usefully + - uselessly + - utterly + - vacantly + - vaguely + - vainly + - valiantly + - vastly + - verbally + - very + - viciously + - victoriously + - violently + - vivaciously + - voluntarily + - warmly + - weakly + - wearily + - wetly + - wholly + - wildly + - willfully + - wisely + - woefully + - wonderfully + - worriedly + - yawningly + - yearningly + - yieldingly + - youthfully + - zealously + - zestfully + - zestily diff --git a/.github/workflows/styles/Microsoft/Auto.yml b/.github/workflows/styles/Microsoft/Auto.yml new file mode 100644 index 0000000000..4da4393530 --- /dev/null +++ b/.github/workflows/styles/Microsoft/Auto.yml @@ -0,0 +1,11 @@ +extends: existence +message: "In general, don't hyphenate '%s'." +link: https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/a/auto +ignorecase: true +level: error +action: + name: convert + params: + - simple +tokens: + - 'auto-\w+' diff --git a/.github/workflows/styles/Microsoft/Avoid.yml b/.github/workflows/styles/Microsoft/Avoid.yml new file mode 100644 index 0000000000..dab7822c79 --- /dev/null +++ b/.github/workflows/styles/Microsoft/Avoid.yml @@ -0,0 +1,14 @@ +extends: existence +message: "Don't use '%s'. See the A-Z word list for details." +# See the A-Z word list +link: https://docs.microsoft.com/en-us/style-guide +ignorecase: true +level: error +tokens: + - abortion + - and so on + - app(?:lication)?s? (?:developer|program) + - app(?:lication)? file + - backbone + - backend + - contiguous selection diff --git a/.github/workflows/styles/Microsoft/ComplexWords.yml b/.github/workflows/styles/Microsoft/ComplexWords.yml new file mode 100644 index 0000000000..65b7a34721 --- /dev/null +++ b/.github/workflows/styles/Microsoft/ComplexWords.yml @@ -0,0 +1,120 @@ +extends: substitution +message: "Consider using '%s' instead of '%s'." +link: https://docs.microsoft.com/en-us/style-guide/word-choice/use-simple-words-concise-sentences +ignorecase: true +level: suggestion +action: + name: replace +swap: + "approximate(?:ly)?": about + abundance: plenty + accelerate: speed up + accentuate: stress + accompany: go with + accomplish: carry out|do + accorded: given + accordingly: so + accrue: add + accurate: right|exact + acquiesce: agree + acquire: get|buy + additional: more|extra + address: discuss + addressees: you + adjacent to: next to + adjustment: change + admissible: allowed + advantageous: helpful + advise: tell + aggregate: total + aircraft: plane + alleviate: ease + allocate: assign|divide + alternatively: or + alternatives: choices|options + ameliorate: improve + amend: change + anticipate: expect + apparent: clear|plain + ascertain: discover|find out + assistance: help + attain: meet + attempt: try + authorize: allow + belated: late + bestow: give + cease: stop|end + collaborate: work together + commence: begin + compensate: pay + component: part + comprise: form|include + concept: idea + concerning: about + confer: give|award + consequently: so + consolidate: merge + constitutes: forms + contains: has + convene: meet + demonstrate: show|prove + depart: leave + designate: choose + desire: want|wish + determine: decide|find + detrimental: bad|harmful + disclose: share|tell + discontinue: stop + disseminate: send|give + eliminate: end + elucidate: explain + employ: use + enclosed: inside|included + encounter: meet + endeavor: try + enumerate: count + equitable: fair + equivalent: equal + exclusively: only + expedite: hurry + facilitate: ease + females: women + finalize: complete|finish + frequently: often + identical: same + incorrect: wrong + indication: sign + initiate: start|begin + itemized: listed + jeopardize: risk + liaise: work with|partner with + maintain: keep|support + methodology: method + modify: change + monitor: check|watch + multiple: many + necessitate: cause + notify: tell + numerous: many + objective: aim|goal + obligate: bind|compel + optimum: best|most + permit: let + portion: part + possess: own + previous: earlier + previously: before + prioritize: rank + procure: buy + provide: give|offer + purchase: buy + relocate: move + solicit: request + state-of-the-art: latest + subsequent: later|next + substantial: large + sufficient: enough + terminate: end + transmit: send + utilization: use + utilize: use diff --git a/.github/workflows/styles/Microsoft/Contractions.yml b/.github/workflows/styles/Microsoft/Contractions.yml new file mode 100644 index 0000000000..ded330f797 --- /dev/null +++ b/.github/workflows/styles/Microsoft/Contractions.yml @@ -0,0 +1,50 @@ +extends: substitution +message: "Use '%s' instead of '%s'." +link: https://docs.microsoft.com/en-us/style-guide/word-choice/use-contractions +level: error +ignorecase: true +action: + name: replace +swap: + are not: aren't + cannot: can't + could not: couldn't + did not: didn't + do not: don't + does not: doesn't + has not: hasn't + have not: haven't + how is: how's + is not: isn't + + 'it is(?!\.)': it's + 'it''s(?=\.)': it is + + should not: shouldn't + + 'that is(?!\.)': that's + 'that''s(?=\.)': that is + + 'they are(?!\.)': they're + 'they''re(?=\.)': they are + + was not: wasn't + + 'we are(?!\.)': we're + 'we''re(?=\.)': we are + + 'we have(?!\.)': we've + 'we''ve(?=\.)': we have + + were not: weren't + + 'what is(?!\.)': what's + 'what''s(?=\.)': what is + + 'when is(?!\.)': when's + 'when''s(?=\.)': when is + + 'where is(?!\.)': where's + 'where''s(?=\.)': where is + + will not: won't diff --git a/.github/workflows/styles/Microsoft/Dashes.yml b/.github/workflows/styles/Microsoft/Dashes.yml new file mode 100644 index 0000000000..2894cf7229 --- /dev/null +++ b/.github/workflows/styles/Microsoft/Dashes.yml @@ -0,0 +1,13 @@ +extends: existence +message: "Remove the spaces around '%s'." +link: https://docs.microsoft.com/en-us/style-guide/punctuation/dashes-hyphens/emes +ignorecase: true +nonword: true +level: error +action: + name: edit + params: + - remove + - ' ' +tokens: + - '[—–]\s|\s[—–]' diff --git a/.github/workflows/styles/Microsoft/DateFormat.yml b/.github/workflows/styles/Microsoft/DateFormat.yml new file mode 100644 index 0000000000..196531394a --- /dev/null +++ b/.github/workflows/styles/Microsoft/DateFormat.yml @@ -0,0 +1,8 @@ +extends: existence +message: Use 'July 31, 2016' format, not '%s'. +link: https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/term-collections/date-time-terms +ignorecase: true +level: error +nonword: true +tokens: + - '\d{1,2} (?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)|May|Jun(?:e)|Jul(?:y)|Aug(?:ust)|Sep(?:tember)?|Oct(?:ober)|Nov(?:ember)?|Dec(?:ember)?) \d{4}' diff --git a/.github/workflows/styles/Microsoft/DateNumbers.yml b/.github/workflows/styles/Microsoft/DateNumbers.yml new file mode 100644 index 0000000000..14d46747ca --- /dev/null +++ b/.github/workflows/styles/Microsoft/DateNumbers.yml @@ -0,0 +1,40 @@ +extends: existence +message: "Don't use ordinal numbers for dates." +link: https://docs.microsoft.com/en-us/style-guide/numbers#numbers-in-dates +level: error +nonword: true +ignorecase: true +raw: + - \b(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)|May|Jun(?:e)|Jul(?:y)|Aug(?:ust)|Sep(?:tember)?|Oct(?:ober)|Nov(?:ember)?|Dec(?:ember)?)\b\s* +tokens: + - first + - second + - third + - fourth + - fifth + - sixth + - seventh + - eighth + - ninth + - tenth + - eleventh + - twelfth + - thirteenth + - fourteenth + - fifteenth + - sixteenth + - seventeenth + - eighteenth + - nineteenth + - twentieth + - twenty-first + - twenty-second + - twenty-third + - twenty-fourth + - twenty-fifth + - twenty-sixth + - twenty-seventh + - twenty-eighth + - twenty-ninth + - thirtieth + - thirty-first diff --git a/.github/workflows/styles/Microsoft/DateOrder.yml b/.github/workflows/styles/Microsoft/DateOrder.yml new file mode 100644 index 0000000000..12d69ba51e --- /dev/null +++ b/.github/workflows/styles/Microsoft/DateOrder.yml @@ -0,0 +1,8 @@ +extends: existence +message: "Always spell out the name of the month." +link: https://docs.microsoft.com/en-us/style-guide/numbers#numbers-in-dates +ignorecase: true +level: error +nonword: true +tokens: + - '\b\d{1,2}/\d{1,2}/(?:\d{4}|\d{2})\b' diff --git a/.github/workflows/styles/Microsoft/Ellipses.yml b/.github/workflows/styles/Microsoft/Ellipses.yml new file mode 100644 index 0000000000..320457a8bc --- /dev/null +++ b/.github/workflows/styles/Microsoft/Ellipses.yml @@ -0,0 +1,9 @@ +extends: existence +message: "In general, don't use an ellipsis." +link: https://docs.microsoft.com/en-us/style-guide/punctuation/ellipses +nonword: true +level: warning +action: + name: remove +tokens: + - '\.\.\.' diff --git a/.github/workflows/styles/Microsoft/FirstPerson.yml b/.github/workflows/styles/Microsoft/FirstPerson.yml new file mode 100644 index 0000000000..77761af883 --- /dev/null +++ b/.github/workflows/styles/Microsoft/FirstPerson.yml @@ -0,0 +1,16 @@ +extends: existence +message: "Use first person (such as '%s') sparingly." +link: https://docs.microsoft.com/en-us/style-guide/grammar/person +ignorecase: true +level: warning +nonword: true +tokens: + - (?:^|\s)I\s + - (?:^|\s)I,\s + - \bI'd\b + - \bI'll\b + - \bI'm\b + - \bI've\b + - \bme\b + - \bmy\b + - \bmine\b diff --git a/.github/workflows/styles/Microsoft/Foreign.yml b/.github/workflows/styles/Microsoft/Foreign.yml new file mode 100644 index 0000000000..d37835a5d9 --- /dev/null +++ b/.github/workflows/styles/Microsoft/Foreign.yml @@ -0,0 +1,12 @@ +extends: substitution +message: "Use '%s' instead of '%s'." +link: https://docs.microsoft.com/en-us/style-guide/word-choice/use-us-spelling-avoid-non-english-words +ignorecase: true +level: error +nonword: true +action: + name: replace +swap: + '\b(?:eg|e\.g\.)[\s,]': for example + '\b(?:ie|i\.e\.)[\s,]': that is + diff --git a/.github/workflows/styles/Microsoft/Gender.yml b/.github/workflows/styles/Microsoft/Gender.yml new file mode 100644 index 0000000000..47c0802479 --- /dev/null +++ b/.github/workflows/styles/Microsoft/Gender.yml @@ -0,0 +1,8 @@ +extends: existence +message: "Don't use '%s'." +link: https://github.com/MicrosoftDocs/microsoft-style-guide/blob/master/styleguide/grammar/nouns-pronouns.md#pronouns-and-gender +level: error +ignorecase: true +tokens: + - he/she + - s/he diff --git a/.github/workflows/styles/Microsoft/GenderBias.yml b/.github/workflows/styles/Microsoft/GenderBias.yml new file mode 100644 index 0000000000..3d873aa31d --- /dev/null +++ b/.github/workflows/styles/Microsoft/GenderBias.yml @@ -0,0 +1,44 @@ +extends: substitution +message: "Consider using '%s' instead of '%s'." +ignorecase: true +level: error +swap: + (?:alumna|alumnus): graduate + (?:alumnae|alumni): graduates + air(?:m[ae]n|wom[ae]n): pilot(s) + anchor(?:m[ae]n|wom[ae]n): anchor(s) + authoress: author + camera(?:m[ae]n|wom[ae]n): camera operator(s) + chair(?:m[ae]n|wom[ae]n): chair(s) + congress(?:m[ae]n|wom[ae]n): member(s) of congress + door(?:m[ae]|wom[ae]n): concierge(s) + draft(?:m[ae]n|wom[ae]n): drafter(s) + fire(?:m[ae]n|wom[ae]n): firefighter(s) + fisher(?:m[ae]n|wom[ae]n): fisher(s) + fresh(?:m[ae]n|wom[ae]n): first-year student(s) + garbage(?:m[ae]n|wom[ae]n): waste collector(s) + lady lawyer: lawyer + ladylike: courteous + landlord: building manager + mail(?:m[ae]n|wom[ae]n): mail carriers + man and wife: husband and wife + man enough: strong enough + mankind: human kind + manmade: manufactured + manpower: personnel + men and girls: men and women + middle(?:m[ae]n|wom[ae]n): intermediary + news(?:m[ae]n|wom[ae]n): journalist(s) + ombuds(?:man|woman): ombuds + oneupmanship: upstaging + poetess: poet + police(?:m[ae]n|wom[ae]n): police officer(s) + repair(?:m[ae]n|wom[ae]n): technician(s) + sales(?:m[ae]n|wom[ae]n): salesperson or sales people + service(?:m[ae]n|wom[ae]n): soldier(s) + steward(?:ess)?: flight attendant + tribes(?:m[ae]n|wom[ae]n): tribe member(s) + waitress: waiter + woman doctor: doctor + woman scientist[s]?: scientist(s) + work(?:m[ae]n|wom[ae]n): worker(s) diff --git a/.github/workflows/styles/Microsoft/GeneralURL.yml b/.github/workflows/styles/Microsoft/GeneralURL.yml new file mode 100644 index 0000000000..dcef503d99 --- /dev/null +++ b/.github/workflows/styles/Microsoft/GeneralURL.yml @@ -0,0 +1,11 @@ +extends: existence +message: "For a general audience, use 'address' rather than 'URL'." +link: https://docs.microsoft.com/en-us/style-guide/urls-web-addresses +level: warning +action: + name: replace + params: + - URL + - address +tokens: + - URL diff --git a/.github/workflows/styles/Microsoft/HeadingAcronyms.yml b/.github/workflows/styles/Microsoft/HeadingAcronyms.yml new file mode 100644 index 0000000000..9dc3b6c2de --- /dev/null +++ b/.github/workflows/styles/Microsoft/HeadingAcronyms.yml @@ -0,0 +1,7 @@ +extends: existence +message: "Avoid using acronyms in a title or heading." +link: https://docs.microsoft.com/en-us/style-guide/acronyms#be-careful-with-acronyms-in-titles-and-headings +level: warning +scope: heading +tokens: + - '[A-Z]{2,4}' diff --git a/.github/workflows/styles/Microsoft/HeadingColons.yml b/.github/workflows/styles/Microsoft/HeadingColons.yml new file mode 100644 index 0000000000..7013c39148 --- /dev/null +++ b/.github/workflows/styles/Microsoft/HeadingColons.yml @@ -0,0 +1,8 @@ +extends: existence +message: "Capitalize '%s'." +link: https://docs.microsoft.com/en-us/style-guide/punctuation/colons +nonword: true +level: error +scope: heading +tokens: + - ':\s[a-z]' diff --git a/.github/workflows/styles/Microsoft/HeadingPunctuation.yml b/.github/workflows/styles/Microsoft/HeadingPunctuation.yml new file mode 100644 index 0000000000..af04b02ebf --- /dev/null +++ b/.github/workflows/styles/Microsoft/HeadingPunctuation.yml @@ -0,0 +1,13 @@ +extends: existence +message: "Don't use end punctuation in headings." +link: https://docs.microsoft.com/en-us/style-guide/punctuation/periods +nonword: true +level: warning +scope: heading +action: + name: edit + params: + - remove + - '.?!' +tokens: + - '[a-z][.?!](?:\s|$)' diff --git a/.github/workflows/styles/Microsoft/Headings.yml b/.github/workflows/styles/Microsoft/Headings.yml new file mode 100644 index 0000000000..63624edc1b --- /dev/null +++ b/.github/workflows/styles/Microsoft/Headings.yml @@ -0,0 +1,28 @@ +extends: capitalization +message: "'%s' should use sentence-style capitalization." +link: https://docs.microsoft.com/en-us/style-guide/capitalization +level: suggestion +scope: heading +match: $sentence +indicators: + - ':' +exceptions: + - Azure + - CLI + - Code + - Cosmos + - Docker + - Emmet + - I + - Kubernetes + - Linux + - macOS + - Marketplace + - MongoDB + - REPL + - Studio + - TypeScript + - URLs + - Visual + - VS + - Windows diff --git a/.github/workflows/styles/Microsoft/Hyphens.yml b/.github/workflows/styles/Microsoft/Hyphens.yml new file mode 100644 index 0000000000..90bbb5def9 --- /dev/null +++ b/.github/workflows/styles/Microsoft/Hyphens.yml @@ -0,0 +1,14 @@ +extends: existence +message: "'%s' doesn't need a hyphen." +link: https://docs.microsoft.com/en-us/style-guide/punctuation/dashes-hyphens/hyphens +level: warning +ignorecase: false +nonword: true +action: + name: edit + params: + - replace + - '-' + - ' ' +tokens: + - '\s[^\s-]+ly-' diff --git a/.github/workflows/styles/Microsoft/Negative.yml b/.github/workflows/styles/Microsoft/Negative.yml new file mode 100644 index 0000000000..d6ff2f2243 --- /dev/null +++ b/.github/workflows/styles/Microsoft/Negative.yml @@ -0,0 +1,13 @@ +extends: existence +message: "Form a negative number with an en dash, not a hyphen." +link: https://docs.microsoft.com/en-us/style-guide/numbers +nonword: true +level: error +action: + name: edit + params: + - replace + - '-' + - '–' +tokens: + - '\s-\d+\s' diff --git a/.github/workflows/styles/Microsoft/Ordinal.yml b/.github/workflows/styles/Microsoft/Ordinal.yml new file mode 100644 index 0000000000..e3483e380c --- /dev/null +++ b/.github/workflows/styles/Microsoft/Ordinal.yml @@ -0,0 +1,13 @@ +extends: existence +message: "Don't add -ly to an ordinal number." +link: https://docs.microsoft.com/en-us/style-guide/numbers +level: error +action: + name: edit + params: + - trim + - ly +tokens: + - firstly + - secondly + - thirdly diff --git a/.github/workflows/styles/Microsoft/OxfordComma.yml b/.github/workflows/styles/Microsoft/OxfordComma.yml new file mode 100644 index 0000000000..493b55c3ce --- /dev/null +++ b/.github/workflows/styles/Microsoft/OxfordComma.yml @@ -0,0 +1,8 @@ +extends: existence +message: "Use the Oxford comma in '%s'." +link: https://docs.microsoft.com/en-us/style-guide/punctuation/commas +scope: sentence +level: suggestion +nonword: true +tokens: + - '(?:[^\s,]+,){1,} \w+ (?:and|or) \w+[.?!]' diff --git a/.github/workflows/styles/Microsoft/Passive.yml b/.github/workflows/styles/Microsoft/Passive.yml new file mode 100644 index 0000000000..102d377cac --- /dev/null +++ b/.github/workflows/styles/Microsoft/Passive.yml @@ -0,0 +1,183 @@ +extends: existence +message: "'%s' looks like passive voice." +ignorecase: true +level: suggestion +raw: + - \b(am|are|were|being|is|been|was|be)\b\s* +tokens: + - '[\w]+ed' + - awoken + - beat + - become + - been + - begun + - bent + - beset + - bet + - bid + - bidden + - bitten + - bled + - blown + - born + - bought + - bound + - bred + - broadcast + - broken + - brought + - built + - burnt + - burst + - cast + - caught + - chosen + - clung + - come + - cost + - crept + - cut + - dealt + - dived + - done + - drawn + - dreamt + - driven + - drunk + - dug + - eaten + - fallen + - fed + - felt + - fit + - fled + - flown + - flung + - forbidden + - foregone + - forgiven + - forgotten + - forsaken + - fought + - found + - frozen + - given + - gone + - gotten + - ground + - grown + - heard + - held + - hidden + - hit + - hung + - hurt + - kept + - knelt + - knit + - known + - laid + - lain + - leapt + - learnt + - led + - left + - lent + - let + - lighted + - lost + - made + - meant + - met + - misspelt + - mistaken + - mown + - overcome + - overdone + - overtaken + - overthrown + - paid + - pled + - proven + - put + - quit + - read + - rid + - ridden + - risen + - run + - rung + - said + - sat + - sawn + - seen + - sent + - set + - sewn + - shaken + - shaven + - shed + - shod + - shone + - shorn + - shot + - shown + - shrunk + - shut + - slain + - slept + - slid + - slit + - slung + - smitten + - sold + - sought + - sown + - sped + - spent + - spilt + - spit + - split + - spoken + - spread + - sprung + - spun + - stolen + - stood + - stridden + - striven + - struck + - strung + - stuck + - stung + - stunk + - sung + - sunk + - swept + - swollen + - sworn + - swum + - swung + - taken + - taught + - thought + - thrived + - thrown + - thrust + - told + - torn + - trodden + - understood + - upheld + - upset + - wed + - wept + - withheld + - withstood + - woken + - won + - worn + - wound + - woven + - written + - wrung diff --git a/.github/workflows/styles/Microsoft/Percentages.yml b/.github/workflows/styles/Microsoft/Percentages.yml new file mode 100644 index 0000000000..b68a7363f4 --- /dev/null +++ b/.github/workflows/styles/Microsoft/Percentages.yml @@ -0,0 +1,7 @@ +extends: existence +message: "Use a numeral plus the units." +link: https://docs.microsoft.com/en-us/style-guide/numbers +nonword: true +level: error +tokens: + - '\b[a-zA-z]+\spercent\b' diff --git a/.github/workflows/styles/Microsoft/Quotes.yml b/.github/workflows/styles/Microsoft/Quotes.yml new file mode 100644 index 0000000000..38f4976061 --- /dev/null +++ b/.github/workflows/styles/Microsoft/Quotes.yml @@ -0,0 +1,7 @@ +extends: existence +message: 'Punctuation should be inside the quotes.' +link: https://docs.microsoft.com/en-us/style-guide/punctuation/quotation-marks +level: error +nonword: true +tokens: + - '["“][^"”“]+["”][.,]' diff --git a/.github/workflows/styles/Microsoft/RangeFormat.yml b/.github/workflows/styles/Microsoft/RangeFormat.yml new file mode 100644 index 0000000000..f1d736e9de --- /dev/null +++ b/.github/workflows/styles/Microsoft/RangeFormat.yml @@ -0,0 +1,13 @@ +extends: existence +message: "Use an en dash in a range of numbers." +link: https://docs.microsoft.com/en-us/style-guide/numbers +nonword: true +level: error +action: + name: edit + params: + - replace + - '-' + - '–' +tokens: + - '\b\d+\s?[-]\s?\d+\b' diff --git a/.github/workflows/styles/Microsoft/RangeTime.yml b/.github/workflows/styles/Microsoft/RangeTime.yml new file mode 100644 index 0000000000..cdd4b3346e --- /dev/null +++ b/.github/workflows/styles/Microsoft/RangeTime.yml @@ -0,0 +1,13 @@ +extends: existence +message: "Use 'to' instead of a dash in '%s'." +link: https://docs.microsoft.com/en-us/style-guide/numbers +nonword: true +level: error +action: + name: edit + params: + - replace + - '[-–]' + - 'to' +tokens: + - '\b(?:AM|PM)\s?[-–]\s?.+(?:AM|PM)\b' diff --git a/.github/workflows/styles/Microsoft/Ranges.yml b/.github/workflows/styles/Microsoft/Ranges.yml new file mode 100644 index 0000000000..67d9702b0f --- /dev/null +++ b/.github/workflows/styles/Microsoft/Ranges.yml @@ -0,0 +1,7 @@ +extends: existence +message: "In most cases, use 'from' or 'through' to describe a range of numbers." +link: 'https://docs.microsoft.com/en-us/style-guide/numbers' +nonword: true +level: warning +tokens: + - '\b\d+\s?[-–]\s?\d+\b' diff --git a/.github/workflows/styles/Microsoft/Semicolon.yml b/.github/workflows/styles/Microsoft/Semicolon.yml new file mode 100644 index 0000000000..4d905467dd --- /dev/null +++ b/.github/workflows/styles/Microsoft/Semicolon.yml @@ -0,0 +1,8 @@ +extends: existence +message: "Try to simplify this sentence." +link: https://docs.microsoft.com/en-us/style-guide/punctuation/semicolons +nonword: true +scope: sentence +level: suggestion +tokens: + - ';' diff --git a/.github/workflows/styles/Microsoft/SentenceLength.yml b/.github/workflows/styles/Microsoft/SentenceLength.yml new file mode 100644 index 0000000000..f248cf0513 --- /dev/null +++ b/.github/workflows/styles/Microsoft/SentenceLength.yml @@ -0,0 +1,7 @@ +extends: occurrence +message: "Try to keep sentences short (< 30 words)." +scope: sentence +level: suggestion +max: 30 +token: \b(\w+)\b + diff --git a/.github/workflows/styles/Microsoft/Spacing.yml b/.github/workflows/styles/Microsoft/Spacing.yml new file mode 100644 index 0000000000..bbd10e51df --- /dev/null +++ b/.github/workflows/styles/Microsoft/Spacing.yml @@ -0,0 +1,8 @@ +extends: existence +message: "'%s' should have one space." +link: https://docs.microsoft.com/en-us/style-guide/punctuation/periods +level: error +nonword: true +tokens: + - '[a-z][.?!] {2,}[A-Z]' + - '[a-z][.?!][A-Z]' diff --git a/.github/workflows/styles/Microsoft/Suspended.yml b/.github/workflows/styles/Microsoft/Suspended.yml new file mode 100644 index 0000000000..7282e9c9cf --- /dev/null +++ b/.github/workflows/styles/Microsoft/Suspended.yml @@ -0,0 +1,7 @@ +extends: existence +message: "Don't use '%s' unless space is limited." +link: https://docs.microsoft.com/en-us/style-guide/punctuation/dashes-hyphens/hyphens +ignorecase: true +level: warning +tokens: + - '\w+- and \w+-' diff --git a/.github/workflows/styles/Microsoft/Terms.yml b/.github/workflows/styles/Microsoft/Terms.yml new file mode 100644 index 0000000000..e41ff74b7a --- /dev/null +++ b/.github/workflows/styles/Microsoft/Terms.yml @@ -0,0 +1,43 @@ +extends: substitution +message: "Prefer '%s' over '%s'." +level: warning +ignorecase: true +action: + name: replace +swap: + '(?:agent|virtual assistant|intelligent personal assistant)': personal digital assistant + '(?:drive C:|drive C>|C: drive)': drive C + '(?:internet bot|web robot)s?': bot(s) + '(?:microsoft cloud|the cloud)': cloud + '(?:mobile|smart) ?phone': phone + '24/7': every day + 'audio(?:-| )book': audiobook + 'back(?:-| )light': backlight + 'chat ?bots?': chatbot(s) + adaptor: adapter + administrate: administer + afterwards: afterward + alphabetic: alphabetical + alphanumerical: alphanumeric + anti-aliasing: antialiasing + anti-malware: antimalware + anti-spyware: antispyware + anti-virus: antivirus + appendixes: appendices + artificial intelligence: artificial intelligence + assembler: assembly language + bpp: bpp + bps: bps + caap: CaaP + conversation-as-a-platform: conversation as a platform + eb: EB + gb: GB + gbps: Gbps + kb: KB + keypress: keystroke + mb: MB + pb: PB + tb: TB + zb: ZB + viz: namely + ergo: therefore diff --git a/.github/workflows/styles/Microsoft/URLFormat.yml b/.github/workflows/styles/Microsoft/URLFormat.yml new file mode 100644 index 0000000000..82e702f981 --- /dev/null +++ b/.github/workflows/styles/Microsoft/URLFormat.yml @@ -0,0 +1,10 @@ +extends: substitution +message: "Use '%s' instead of '%s'." +ignorecase: true +level: error +action: + name: replace +swap: + URL for: URL of + an URL: a URL + diff --git a/.github/workflows/styles/Microsoft/Units.yml b/.github/workflows/styles/Microsoft/Units.yml new file mode 100644 index 0000000000..f062418ee0 --- /dev/null +++ b/.github/workflows/styles/Microsoft/Units.yml @@ -0,0 +1,16 @@ +extends: existence +message: "Don't spell out the number in '%s'." +link: https://docs.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/term-collections/units-of-measure-terms +level: error +raw: + - '[a-zA-Z]+\s' +tokens: + - '(?:centi|milli)?meters' + - '(?:kilo)?grams' + - '(?:kilo)?meters' + - '(?:mega)?pixels' + - cm + - inches + - lb + - miles + - pounds diff --git a/.github/workflows/styles/Microsoft/Vocab.yml b/.github/workflows/styles/Microsoft/Vocab.yml new file mode 100644 index 0000000000..eebe97b15e --- /dev/null +++ b/.github/workflows/styles/Microsoft/Vocab.yml @@ -0,0 +1,25 @@ +extends: existence +message: "Verify your use of '%s' with the A-Z word list." +link: 'https://docs.microsoft.com/en-us/style-guide' +level: suggestion +ignorecase: true +tokens: + - above + - accessible + - actionable + - against + - alarm + - alert + - alias + - allows? + - and/or + - as well as + - assure + - author + - avg + - beta + - ensure + - he + - insure + - sample + - she diff --git a/.github/workflows/styles/Microsoft/We.yml b/.github/workflows/styles/Microsoft/We.yml new file mode 100644 index 0000000000..97c901c1ba --- /dev/null +++ b/.github/workflows/styles/Microsoft/We.yml @@ -0,0 +1,11 @@ +extends: existence +message: "Try to avoid using first-person plural like '%s'." +link: https://docs.microsoft.com/en-us/style-guide/grammar/person#avoid-first-person-plural +level: warning +ignorecase: true +tokens: + - we + - we'(?:ve|re) + - ours? + - us + - let's diff --git a/.github/workflows/styles/Microsoft/Wordiness.yml b/.github/workflows/styles/Microsoft/Wordiness.yml new file mode 100644 index 0000000000..22a4c932c8 --- /dev/null +++ b/.github/workflows/styles/Microsoft/Wordiness.yml @@ -0,0 +1,122 @@ +extends: substitution +message: "Consider using '%s' instead of '%s'." +link: https://docs.microsoft.com/en-us/style-guide/word-choice/use-simple-words-concise-sentences +ignorecase: true +level: warning +action: + name: replace +swap: + (?:give|gave) rise to: lead to + (?:previous|prior) to: before + a (?:large)? majority of: most + a (?:large)? number of: many + a myriad of: myriad + adversely impact: hurt + all across: across + all of a sudden: suddenly + all of these: these + all of: all + all-time record: record + almost all: most + almost never: seldom + along the lines of: similar to + an adequate number of: enough + an appreciable number of: many + an estimated: about + any and all: all + are in agreement: agree + as a matter of fact: in fact + as a means of: to + as a result of: because of + as of yet: yet + as per: per + at a later date: later + at all times: always + at the present time: now + at this point in time: at this point + based in large part on: based on + based on the fact that: because + basic necessity: necessity + because of the fact that: because + came to a realization: realized + came to an abrupt end: ended abruptly + carry out an evaluation of: evaluate + close down: close + closed down: closed + complete stranger: stranger + completely separate: separate + concerning the matter of: regarding + conduct a review of: review + conduct an investigation: investigate + conduct experiments: experiment + continue on: continue + despite the fact that: although + disappear from sight: disappear + drag and drop: drag + drag-and-drop: drag + doomed to fail: doomed + due to the fact that: because + during the period of: during + during the time that: while + emergency situation: emergency + except when: unless + excessive number: too many + extend an invitation: invite + fall down: fall + fell down: fell + for the duration of: during + gather together: gather + has the ability to: can + has the capacity to: can + has the opportunity to: could + hold a meeting: meet + if this is not the case: if not + in a careful manner: carefully + in a thoughtful manner: thoughtfully + in a timely manner: timely + in an effort to: to + in between: between + in lieu of: instead of + in many cases: often + in most cases: usually + in order to: to + in some cases: sometimes + in spite of the fact that: although + in spite of: despite + in the (?:very)? near future: soon + in the event that: if + in the neighborhood of: roughly + in the vicinity of: close to + it would appear that: apparently + lift up: lift + made reference to: referred to + make reference to: refer to + mix together: mix + none at all: none + not in a position to: unable + not possible: impossible + of major importance: important + perform an assessment of: assess + pertaining to: about + place an order: order + plays a key role in: is essential to + present time: now + readily apparent: apparent + some of the: some + span across: span + subsequent to: after + successfully complete: complete + sufficient number (?:of)?: enough + take action: act + take into account: consider + the question as to whether: whether + there is no doubt but that: doubtless + this day and age: this age + this is a subject that: this subject + time (?:frame|period): time + under the provisions of: under + until such time as: until + used for fuel purposes: used for fuel + whether or not: whether + with regard to: regarding + with the exception of: except for diff --git a/.github/workflows/styles/Microsoft/dashboard-analysis.md b/.github/workflows/styles/Microsoft/dashboard-analysis.md new file mode 100644 index 0000000000..d11a197517 --- /dev/null +++ b/.github/workflows/styles/Microsoft/dashboard-analysis.md @@ -0,0 +1,197 @@ + + +The Run:ai Administration User Interface provides a set of dashboards that help you monitor Clusters, Cluster Nodes, Projects, and Jobs. This document provides the key metrics to monitor, how to assess them as well as suggested actions. + +There are 3 dashboards: + +* __Overview__ dashboard - Provides information about what is happening right now in the cluster +* __Analytics__ dashboard - Provides long term analysis of cluster behavior +* __Multi-Cluster Overview__ dashboard - Provides a more holistic, multi-cluster view of what is happening right now. The dashboard is intended for organizations that have more than one connected cluster. + + +## Overview Dashboard + +The Overview dashboard provides information about what is happening __right now__ in the cluster. Administrators can view high-level information on the state of the cluster, including: + +* The number of available and allocated resources and their cluster-wide utilization +* The number of running and pending __Jobs__, their utilization, information on Jobs with errors or Jobs with idle GPUs +* Active __Projects__, their assigned and allocated GPUs and number of running and pending Jobs + +Cluster administrators can use the Overview dashboard to find issues and fix them. Below are a few examples: + + +### Jobs with idle GPUs + +Locate Jobs with idle GPUs, defined as GPUs with 0% GPU utilization for more than 5 minutes.  + +__How to__: view the following panel: + +![](img/idle-gpus.png) + +__Analysis and Suggested actions__: + +| Review | Analysis & Actions | +|---------|---------------------| +| Interactive Jobs are too frequently idle | * Consider setting time limits for interactive Jobs through the Projects tab. 
* Consider also reducing GPU quotas for specific Projects to encourage users to run more training Jobs as opposed to interactive Jobs (note that interactive Jobs can not use more than the GPU quota assigned to their Project). | +| Training Jobs are too frequently idle | Identify and notify the right users and work with them to improve the utilization of their training scripts | + + +### Jobs with an Error + +Search for Jobs with an error status. These Jobs may be holding GPUs without actually using them.  + +__How to__: view the following panel: + +![](img/jobs-with-errors.png) + +__Analysis and Suggested actions__: + +Search for Jobs with an Error status on the Jobs view and discuss with the Job owner. Consider deleting these Jobs to free up the resources for other users. + +### Jobs with a Long Duration + +View list of 5 longest Jobs. + +__How to__: view the following panel: + +![](img/long-jobs.png) + +__Analysis and Suggested actions__: + +| Review | Analysis & Actions | +|---------|---------------------| +| Training Jobs run for too long | Ask users to view their Jobs and analyze whether useful work is being done. If needed, stop their Jobs. | +| Interactive Jobs run for too long | Consider setting time limits for interactive Jobs via the Project editor. | + + +### Job Queue + +Identify queueing bottlenecks. + +__How to__: view the following panel: + +![](img/queue.png) + +__Analysis and Suggested actions__: + +| Review | Analysis & Actions | +|---------|---------------------| +| Cluster is fully loaded | Go over the table of active Projects and check that fairness between Projects was enforced, by reviewing the number of allocated GPUs for each Project, ensuring each Project was allocated with its fair-share portion of the cluster. | +| Cluster is not fully loaded | Go to the Jobs view to review the resources requested for that Job (CPU, CPU memory, GPU, GPU memory).
Go to the Nodes view to verify that there is no Node with enough free resources that can host that Job. | + +Also, check the command that the user used to submit the job. The Researcher may have requested a specific Node for that Job. + + +## Analytics Dashboard + +The Analytics dashboard provides means for viewing historical data on cluster information such as: + +* Utilization across the cluster +* GPU usage by different __Projects__, including allocation and utilization, broken down into interactive and training Jobs +* Breakdown of running __Jobs__ into interactive, training, and GPU versus CPU-only Jobs, including information on queueing (number of pending Jobs and requested GPUs), +* Status of Nodes in terms of availability and allocated and utilized resources. + +The information presented in Analytics can be used in different ways for identifying problems and fixing them. Below are a few examples. + + +### Node Downtime + +View the overall available resources per Node and identify cases where a Node is down and there was a reduction in the number of available resources. + +__How to__: view the following panel. + +![](img/node-downtime.png) + +__Analysis and Suggested actions__: + + Filter according to time range to understand for how long the Node is down. + + +### GPU Allocation + +Track GPU allocation across time. + +__How to__: view the following panels. + +![](img/gpu-allocation.png) + +The panel on the right-hand side shows the cluster-wide GPU allocation and utilization versus time, whereas the panels on the left-hand side show the cluster-wide GPU allocation and utilization averaged across the filtered time range. + +__Analysis and Suggested actions__: + +If the allocation is too low for a long period, work with users to run more workloads and to better utilize the Cluster. + + +### Track GPU utilization + +Track whether Researchers efficiently use the GPU resources they have allocated for themselves. + +__How to__: view the following panel: + +![](img/gpu-utilization.png) + +__Analysis and Suggested actions__: + +If utilization is too low for a long period, you will want to identify the source of the problem: + +* Go to “Average GPU Allocation & Utilization” +* Look for Projects with large GPU allocations for interactive Jobs or Projects that poorly utilize their training Jobs. Users tend to poorly utilize their GPUs in interactive sessions because of the dev & debug nature of their work which typically is an iterative process with long idle GPU time. On many occasions users also don’t shut down their interactive Jobs, holding their GPUs idle and preventing others from using them. + +| Review | Analysis & Actions | +|---------|---------------------| +| Low GPU utilization is due to interactive Jobs being used too frequently | Consider setting time limits for interactive Jobs through the Projects tab or reducing GPU quotas to encourage users to run more training Jobs as opposed to interactive Jobs (note that interactive Jobs can not use more than the GPU quota assigned to their Project). | +| Low GPU utilization is due to users poorly utilizing their GPUs in training sessions | Identify Projects with bad GPU utilization in training Jobs, notify the users and work with them to improve their code and the way they utilize their GPUs. | + +### Training vs. Interactive -- Researcher maturity + +Track the number of running Jobs and the breakdown into interactive, training, and CPU-only Jobs. + +__How to__: view the following panel: + +![](img/training-interactive.png) + + +__Analysis and Suggested actions__: + +We would want to encourage users to run more training Jobs than interactive Jobs, as it is the key to achieving high GPU utilization across the Cluster: + +* Training Jobs run to completion and free up their resources automatically when training ends +* Training Jobs can be preempted, queued, and resumed automatically by the Run:ai system according to predefined policies which increases fairness and Cluster utilization. + +### Pending Queue Size + +Track how long is the queue for pending Jobs + +__How to__: view the following panels: + +![](img/pending-jobs.png) + +__Analysis and Suggested actions__: + +Consider buying more GPUs if, + +* Too many Jobs are waiting in queue for too long +* With a large number of requested GPUs +* While the Cluster is fully loaded and well utilized. + + +### CPU & Memory Utilization + +Track CPU and memory Node utilization and identify times where the load on specific Nodes is high. + +__How to__: view the following panel: + +![](img/cpu-utilization.png) + +__Analysis and Suggested actions__: + +If the load on specific Nodes is too high, it may cause problems with the proper operation of the Cluster and the way jobs are running. + +Consider adding more CPUs, or adding additional CPU-only nodes for Jobs that do only CPU processing. + + +## Multi-Cluster Overview Dashboard + +Provides a holistic, aggregated view across Clusters, including information about Cluster and Node utilization, available resources, and allocated resources. With this dashboard, you can identify Clusters that are down or underutilized and go to the Overview of that Cluster to explore further. + +![](img/multi-cluster-overview.png) \ No newline at end of file diff --git a/.github/workflows/styles/Microsoft/meta.json b/.github/workflows/styles/Microsoft/meta.json new file mode 100644 index 0000000000..297719bbbf --- /dev/null +++ b/.github/workflows/styles/Microsoft/meta.json @@ -0,0 +1,4 @@ +{ + "feed": "https://github.com/errata-ai/Microsoft/releases.atom", + "vale_version": ">=1.0.0" +} diff --git a/.github/workflows/styles/Readability/AutomatedReadability.yml b/.github/workflows/styles/Readability/AutomatedReadability.yml new file mode 100644 index 0000000000..dd9fe6697c --- /dev/null +++ b/.github/workflows/styles/Readability/AutomatedReadability.yml @@ -0,0 +1,8 @@ +extends: metric +message: "Try to keep the Automated Readability Index (%s) below 8." +link: https://en.wikipedia.org/wiki/Automated_readability_index + +formula: | + (4.71 * (characters / words)) + (0.5 * (words / sentences)) - 21.43 + +condition: "> 8" diff --git a/.github/workflows/styles/Readability/ColemanLiau.yml b/.github/workflows/styles/Readability/ColemanLiau.yml new file mode 100644 index 0000000000..d478303c2d --- /dev/null +++ b/.github/workflows/styles/Readability/ColemanLiau.yml @@ -0,0 +1,8 @@ +extends: metric +message: "Try to keep the Coleman–Liau Index grade (%s) below 9." +link: https://en.wikipedia.org/wiki/Coleman%E2%80%93Liau_index + +formula: | + (0.0588 * (characters / words) * 100) - (0.296 * (sentences / words) * 100) - 15.8 + +condition: "> 9" diff --git a/.github/workflows/styles/Readability/FleschKincaid.yml b/.github/workflows/styles/Readability/FleschKincaid.yml new file mode 100644 index 0000000000..3f60f205dd --- /dev/null +++ b/.github/workflows/styles/Readability/FleschKincaid.yml @@ -0,0 +1,8 @@ +extends: metric +message: "Try to keep the Flesch–Kincaid grade level (%s) below 8." +link: https://en.wikipedia.org/wiki/Flesch%E2%80%93Kincaid_readability_tests + +formula: | + (0.39 * (words / sentences)) + (11.8 * (syllables / words)) - 15.59 + +condition: "> 8" diff --git a/.github/workflows/styles/Readability/FleschReadingEase.yml b/.github/workflows/styles/Readability/FleschReadingEase.yml new file mode 100644 index 0000000000..6179766715 --- /dev/null +++ b/.github/workflows/styles/Readability/FleschReadingEase.yml @@ -0,0 +1,8 @@ +extends: metric +message: "Try to keep the Flesch reading ease score (%s) above 70." +link: https://en.wikipedia.org/wiki/Flesch%E2%80%93Kincaid_readability_tests + +formula: | + 206.835 - (1.015 * (words / sentences)) - (84.6 * (syllables / words)) + +condition: "< 70" diff --git a/.github/workflows/styles/Readability/GunningFog.yml b/.github/workflows/styles/Readability/GunningFog.yml new file mode 100644 index 0000000000..302c0eeb0e --- /dev/null +++ b/.github/workflows/styles/Readability/GunningFog.yml @@ -0,0 +1,8 @@ +extends: metric +message: "Try to keep the Gunning-Fog index (%s) below 10." +link: https://en.wikipedia.org/wiki/Gunning_fog_index + +formula: | + 0.4 * ((words / sentences) + 100 * (complex_words / words)) + +condition: "> 10" diff --git a/.github/workflows/styles/Readability/LIX.yml b/.github/workflows/styles/Readability/LIX.yml new file mode 100644 index 0000000000..f5b0f4e8b1 --- /dev/null +++ b/.github/workflows/styles/Readability/LIX.yml @@ -0,0 +1,17 @@ +extends: metric +message: "Try to keep the LIX score (%s) below 35." + +link: https://en.wikipedia.org/wiki/Lix_(readability_test) +# Very Easy: 20 - 25 +# +# Easy: 30 - 35 +# +# Medium: 40 - 45 +# +# Difficult: 50 - 55 +# +# Very Difficult: 60+ +formula: | + (words / sentences) + ((long_words * 100) / words) + +condition: "> 35" diff --git a/.github/workflows/styles/Readability/SMOG.yml b/.github/workflows/styles/Readability/SMOG.yml new file mode 100644 index 0000000000..e7f5913bc9 --- /dev/null +++ b/.github/workflows/styles/Readability/SMOG.yml @@ -0,0 +1,8 @@ +extends: metric +message: "Try to keep the SMOG grade (%s) below 10." +link: https://en.wikipedia.org/wiki/SMOG + +formula: | + 1.0430 * math.sqrt((polysyllabic_words * 30.0) / sentences) + 3.1291 + +condition: "> 10" diff --git a/.github/workflows/styles/Readability/meta.json b/.github/workflows/styles/Readability/meta.json new file mode 100644 index 0000000000..0ff71c3024 --- /dev/null +++ b/.github/workflows/styles/Readability/meta.json @@ -0,0 +1,4 @@ +{ + "feed": "https://github.com/errata-ai/Readability/releases.atom", + "vale_version": ">=2.13.0" +} \ No newline at end of file diff --git a/.github/workflows/styles/Vocab/run-ai/accept.txt b/.github/workflows/styles/Vocab/run-ai/accept.txt new file mode 100644 index 0000000000..e4cc1ae0e0 --- /dev/null +++ b/.github/workflows/styles/Vocab/run-ai/accept.txt @@ -0,0 +1,17 @@ +Hyperparameter +OpenShift +GPU +GPUs +OAuth +kubelet +ConfigMaps +Namespace +Knative +MLflow +hardcoded +IPs +JupyterHub +Kubeflow +VMs +KubeVirt +Seldon \ No newline at end of file diff --git a/.github/workflows/styles/Vocab/run-ai/reject.txt b/.github/workflows/styles/Vocab/run-ai/reject.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/.github/workflows/styles/alex/Ablist.yml b/.github/workflows/styles/alex/Ablist.yml new file mode 100644 index 0000000000..cd6ddb5bd3 --- /dev/null +++ b/.github/workflows/styles/alex/Ablist.yml @@ -0,0 +1,248 @@ +--- +extends: substitution +message: When referring to a person, consider using '%s' instead of '%s'. +ignorecase: true +level: warning +action: + name: replace +swap: + ablebodied: non-disabled + addict: person with a drug addiction|person recovering from a drug addiction + addicts: people with a drug addiction|people recovering from a drug addiction + adhd: disorganized|distracted|energetic|hyperactive|impetuous|impulsive|inattentive|restless|unfocused + afflicted with MD: person who has muscular dystrophy + afflicted with a disability: has a disability|person with a disability|people with + disabilities + afflicted with a intellectual disability: person with an intellectual disability + afflicted with a polio: polio|person who had polio + afflicted with aids: person with AIDS + afflicted with an injury: sustain an injury|receive an injury + afflicted with disabilities: has a disability|person with a disability|people with + disabilities + afflicted with injuries: sustain injuries|receive injuries + afflicted with intellectual disabilities: person with an intellectual disability + afflicted with multiple sclerosis: person who has multiple sclerosis + afflicted with muscular dystrophy: person who has muscular dystrophy + afflicted with polio: polio|person who had polio + afflicted with psychosis: person with a psychotic condition|person with psychosis + afflicted with schizophrenia: person with schizophrenia + aids victim: person with AIDS + alcohol abuser: someone with an alcohol problem + alcoholic: someone with an alcohol problem + amputee: person with an amputation + anorexic: thin|slim + asylum: psychiatric hospital|mental health hospital + barren: empty|sterile|infertile + batshit: rude|malicious|mean|disgusting|incredible|vile|person with symptoms of + mental illness|person with mental illness|person with symptoms of a mental disorder|person + with a mental disorder + bedlam: chaos|hectic|pandemonium + binge: enthusiastic|spree + bipolar: fluctuating|person with bipolar disorder + birth defect: has a disability|person with a disability|people with disabilities + blind eye to: careless|heartless|indifferent|insensitive + blind to: careless|heartless|indifferent|insensitive + blinded by: careless|heartless|indifferent|insensitive + bony: thin|slim + bound to a wheelchair: uses a wheelchair + buckteeth: person with prominent teeth|prominent teeth + bucktoothed: person with prominent teeth|prominent teeth + challenged: has a disability|person with a disability|people with disabilities + cleftlipped: person with a cleft-lip and palate + confined to a wheelchair: uses a wheelchair + contard: disagreeable|uneducated|ignorant|naive|inconsiderate + crazy: rude|malicious|mean|disgusting|incredible|vile|person with symptoms of mental + illness|person with mental illness|person with symptoms of a mental disorder|person + with a mental disorder + cretin: creep|fool + cripple: person with a limp + crippled: person with a limp + daft: absurd|foolish + deaf and dumb: deaf + deaf ear to: careless|heartless|indifferent|insensitive + deaf to: careless|heartless|indifferent|insensitive + deafened by: careless|heartless|indifferent|insensitive + deafmute: deaf + delirious: rude|malicious|mean|disgusting|incredible|vile|person with symptoms of + mental illness|person with mental illness|person with symptoms of a mental disorder|person + with a mental disorder + demented: person with dementia + depressed: sad|blue|bummed out|person with seasonal affective disorder|person with + psychotic depression|person with postpartum depression + detox: treatment + detox center: treatment center + diffability: has a disability|person with a disability|people with disabilities + differently abled: has a disability|person with a disability|people with disabilities + disabled: turned off|has a disability|person with a disability|people with disabilities + downs syndrome: Down Syndrome + dumb: foolish|ludicrous|speechless|silent + dummy: test double|placeholder|fake|stub + dummyobject: test double|placeholder|fake|stub + dummyvalue: test double|placeholder|fake|stub + dummyvariable: test double|placeholder|fake|stub + dwarf: person with dwarfism|little person|little people|LP|person of short stature + dyslexic: person with dyslexia + epileptic: person with epilepsy + family burden: with family support needs + feeble minded: foolish|ludicrous|silly + feebleminded: foolish|ludicrous|silly + fucktard: disagreeable|uneducated|ignorant|naive|inconsiderate + gimp: person with a limp + handicapable: has a disability|person with a disability|people with disabilities + handicapped: person with a handicap|accessible + handicapped parking: accessible parking + hare lip: cleft-lip and palate + harelip: cleft-lip and palate + harelipped: person with a cleft-lip and palate + has intellectual issues: person with an intellectual disability + hearing impaired: hard of hearing|partially deaf|partial hearing loss|deaf + hearing impairment: hard of hearing|partially deaf|partial hearing loss|deaf + idiot: foolish|ludicrous|silly + imbecile: foolish|ludicrous|silly + infantile paralysis: polio|person who had polio + insane: rude|malicious|mean|disgusting|incredible|vile|person with symptoms of mental + illness|person with mental illness|person with symptoms of a mental disorder|person + with a mental disorder + insanely: incredibly + insanity: rude|malicious|mean|disgusting|incredible|vile|person with symptoms of + mental illness|person with mental illness|person with symptoms of a mental disorder|person + with a mental disorder + insomnia: restlessness|sleeplessness + insomniac: person who has insomnia + insomniacs: people who have insomnia + intellectually disabled: person with an intellectual disability + intellectually disabled people: people with intellectual disabilities + invalid: turned off|has a disability|person with a disability|people with disabilities + junkie: person with a drug addiction|person recovering from a drug addiction + junkies: people with a drug addiction|people recovering from a drug addiction + lame: boring|dull + learning disabled: person with learning disabilities + libtard: disagreeable|uneducated|ignorant|naive|inconsiderate + loony: rude|malicious|mean|disgusting|incredible|vile|person with symptoms of mental + illness|person with mental illness|person with symptoms of a mental disorder|person + with a mental disorder + loony bin: chaos|hectic|pandemonium + low iq: foolish|ludicrous|unintelligent + lunacy: rude|malicious|mean|disgusting|incredible|vile|person with symptoms of mental + illness|person with mental illness|person with symptoms of a mental disorder|person + with a mental disorder + lunatic: rude|malicious|mean|disgusting|incredible|vile|person with symptoms of + mental illness|person with mental illness|person with symptoms of a mental disorder|person + with a mental disorder + madhouse: chaos|hectic|pandemonium + maniac: fanatic|zealot|enthusiast + manic: person with schizophrenia + mental: rude|malicious|mean|disgusting|incredible|vile|person with symptoms of mental + illness|person with mental illness|person with symptoms of a mental disorder|person + with a mental disorder + mental case: rude|malicious|mean|disgusting|incredible|vile|person with symptoms + of mental illness|person with mental illness|person with symptoms of a mental + disorder|person with a mental disorder + mental defective: rude|malicious|mean|disgusting|incredible|vile|person with symptoms + of mental illness|person with mental illness|person with symptoms of a mental + disorder|person with a mental disorder + mentally ill: rude|malicious|mean|disgusting|incredible|vile|person with symptoms + of mental illness|person with mental illness|person with symptoms of a mental + disorder|person with a mental disorder + midget: person with dwarfism|little person|little people|LP|person of short stature + mongoloid: person with Down Syndrome + moron: rude|malicious|mean|disgusting|incredible|vile|person with symptoms of mental + illness|person with mental illness|person with symptoms of a mental disorder|person + with a mental disorder + moronic: rude|malicious|mean|disgusting|incredible|vile|person with symptoms of + mental illness|person with mental illness|person with symptoms of a mental disorder|person + with a mental disorder + multiple sclerosis victim: person who has multiple sclerosis + neurotic: has an anxiety disorder|obsessive|pedantic|niggly|picky + nuts: rude|malicious|mean|disgusting|incredible|vile|person with symptoms of mental + illness|person with mental illness|person with symptoms of a mental disorder|person + with a mental disorder + o.c.d: has an anxiety disorder|obsessive|pedantic|niggly|picky + o.c.d.: has an anxiety disorder|obsessive|pedantic|niggly|picky + ocd: has an anxiety disorder|obsessive|pedantic|niggly|picky + panic attack: fit of terror|scare + paraplegic: person with paraplegia + psycho: rude|malicious|mean|disgusting|incredible|vile|person with symptoms of mental + illness|person with mental illness|person with symptoms of a mental disorder|person + with a mental disorder + psychopathology: rude|malicious|mean|disgusting|incredible|vile|person with symptoms + of mental illness|person with mental illness|person with symptoms of a mental + disorder|person with a mental disorder + psychotic: person with a psychotic condition|person with psychosis + quadriplegic: person with quadriplegia + rehab: treatment + rehab center: treatment center + restricted to a wheelchair: uses a wheelchair + retard: silly|dullard|person with Down Syndrome|person with developmental disabilities|delay|hold + back + retarded: silly|dullard|person with Down Syndrome|person with developmental disabilities|delay|hold + back + retards: "sillies|dullards|people with developmental disabilities|people with Down\u2019\ + s Syndrome|delays|holds back" + sane: correct|adequate|sufficient|consistent|valid|coherent|sensible|reasonable + sanity check: check|assertion|validation|smoke test + schizo: person with schizophrenia + schizophrenic: person with schizophrenia + senile: person with dementia + short bus: silly|dullard|person with Down Syndrome|person with developmental disabilities|delay|hold + back + simpleton: foolish|ludicrous|unintelligent + small person: person with dwarfism|little person|little people|LP|person of short + stature + sociopath: person with a personality disorder|person with psychopathic personality + sociopaths: people with psychopathic personalities|people with a personality disorder + spastic: person with cerebral palsy|twitch|flinch + spaz: person with cerebral palsy|twitch|flinch|hectic + special: has a disability|person with a disability|people with disabilities + special needs: has a disability|person with a disability|people with disabilities + special olympians: athletes|Special Olympics athletes + special olympic athletes: athletes|Special Olympics athletes + specially abled: has a disability|person with a disability|people with disabilities + stammering: stuttering|disfluency of speech + stroke victim: individual who has had a stroke + stupid: foolish|ludicrous|unintelligent + stutterer: person who stutters + suffer from aids: person with AIDS + suffer from an injury: sustain an injury|receive an injury + suffer from injuries: sustain injuries|receive injuries + suffering from a disability: has a disability|person with a disability|people with + disabilities + suffering from a polio: polio|person who had polio + suffering from a stroke: individual who has had a stroke + suffering from aids: person with AIDS + suffering from an injury: sustain an injury|receive an injury + suffering from an intellectual disability: person with an intellectual disability + suffering from disabilities: has a disability|person with a disability|people with + disabilities + suffering from injuries: sustain injuries|receive injuries + suffering from intellectual disabilities: person with an intellectual disability + suffering from multiple sclerosis: person who has multiple sclerosis + suffering from polio: polio|person who had polio + suffering from psychosis: person with a psychotic condition|person with psychosis + suffering from schizophrenia: person with schizophrenia + suffers from MD: person who has muscular dystrophy + suffers from aids: person with AIDS + suffers from an injury: sustain an injury|receive an injury + suffers from disabilities: has a disability|person with a disability|people with + disabilities + suffers from injuries: sustain injuries|receive injuries + suffers from intellectual disabilities: person with an intellectual disability + suffers from multiple sclerosis: person who has multiple sclerosis + suffers from muscular dystrophy: person who has muscular dystrophy + suffers from polio: polio|person who had polio + suffers from psychosis: person with a psychotic condition|person with psychosis + suffers from schizophrenia: person with schizophrenia + tourettes disorder: Tourette syndrome + tourettes syndrome: Tourette syndrome + vertically challenged: person with dwarfism|little person|little people|LP|person + of short stature + victim of a stroke: individual who has had a stroke + victim of aids: person with AIDS + victim of an injury: sustain an injury|receive an injury + victim of injuries: sustain injuries|receive injuries + victim of multiple sclerosis: person who has multiple sclerosis + victim of polio: polio|person who had polio + victim of psychosis: person with a psychotic condition|person with psychosis + wacko: foolish|ludicrous|unintelligent + whacko: foolish|ludicrous|unintelligent + wheelchair bound: uses a wheelchair diff --git a/.github/workflows/styles/alex/Condescending.yml b/.github/workflows/styles/alex/Condescending.yml new file mode 100644 index 0000000000..4283a33671 --- /dev/null +++ b/.github/workflows/styles/alex/Condescending.yml @@ -0,0 +1,16 @@ +--- +extends: existence +message: Using '%s' may come across as condescending. +link: https://css-tricks.com/words-avoid-educational-writing/ +level: error +ignorecase: true +tokens: + - obvious + - obviously + - simple + - simply + - easy + - easily + - of course + - clearly + - everyone knows diff --git a/.github/workflows/styles/alex/Gendered.yml b/.github/workflows/styles/alex/Gendered.yml new file mode 100644 index 0000000000..c7b1f06b4f --- /dev/null +++ b/.github/workflows/styles/alex/Gendered.yml @@ -0,0 +1,108 @@ +--- +extends: substitution +message: "Consider using '%s' instead of '%s'." +ignorecase: true +level: warning +action: + name: replace +swap: + ancient man: ancient civilization|ancient people + authoress: author|writer + average housewife: average consumer|average household|average homemaker + average man: average person + average working man: average wage earner|average taxpayer + aviatrix: aviator + bitch: whine|complain|cry + bitching: whining|complaining|crying + brotherhood of man: the human family + calendar girl: model + call girl: escort|prostitute|sex worker + churchman: cleric|practicing Christian|pillar of the Church + english master: english coordinator|senior teacher of english + englishmen: the english + executrix: executor + father of *: founder of + fellowship: camaraderie|community|organization + founding father: the founders|founding leaders|forebears + frenchmen: french|the french + freshman: first-year student|fresher + freshwoman: first-year student|fresher + housemaid: house worker|domestic help + housewife: homemaker|homeworker + housewives: homemakers|homeworkers + industrial man: industrial civilization|industrial people + lady doctor: doctor + ladylike: courteous|cultured + leading lady: lead + like a man: resolutely|bravely + mad man: fanatic|zealot|enthusiast + mad men: fanatics|zealots|enthusiasts + madman: fanatic|zealot|enthusiast + madmen: fanatics|zealots|enthusiasts + maiden: virgin + maiden flight: first flight + maiden name: birth name + maiden race: first race + maiden speech: first speech + maiden voyage: first voyage + man a desk: staff a desk + man enough: strong enough + man hour: staff hour|hour of work + man hours: staff hours|hours of work|hours of labor|hours + man in the street: ordinary citizen|typical person|average person + man of action: dynamo + man of letters: scholar|writer|literary figure + man of the land: farmer|rural worker|grazier|landowner|rural community|country people|country + folk + man of the world: sophisticate + man sized task: a demanding task|a big job + man the booth: staff the booth + man the phones: answer the phones + manhour: staff hour|hour of work + manhours: staff hours|hours of work|hours of labor|hours + mankind: humankind + manmade: manufactured|artificial|synthetic|machine-made|constructed + manned: staffed|crewed|piloted + manpower: human resources|workforce|personnel|staff|labor|personnel|labor force|staffing|combat + personnel + mans best friend: a faithful dog + mansized task: a demanding task|a big job + master copy: pass key|original + master key: pass key|original + master of ceremonies: emcee|moderator|convenor + master plan: grand scheme|guiding principles + master the art: become skilled + masterful: skilled|authoritative|commanding + mastermind: genius|creator|instigator|oversee|launch|originate + masterpiece: "work of genius|chef d\u2019oeuvre" + masterplan: vision|comprehensive plan + masterstroke: trump card|stroke of genius + men of science: scientists + midwife: birthing nurse + miss\.: ms. + moan: whine|complain|cry + moaning: whining|complaining|crying + modern man: modern civilization|modern people + motherly: loving|warm|nurturing + mrs\.: ms. + no mans land: unoccupied territory|wasteland|deathtrap + office girls: administrative staff + oneupmanship: upstaging|competitiveness + poetess: poet + railwayman: railway worker + sportsmanlike: fair|sporting + sportsmanship: fairness|good humor|sense of fair play + statesman like: diplomatic + statesmanlike: diplomatic + stockman: cattle worker|farmhand|drover + tax man: tax commissioner|tax office|tax collector + tradesmans entrance: service entrance + unmanned: robotic|automated + usherette: usher + wife beater: tank top|sleeveless undershirt + wifebeater: tank top|sleeveless undershirt + woman lawyer: lawyer + woman painter: painter + working mother: wage or salary earning woman|two-income family + working wife: wage or salary earning woman|two-income family + workmanship: quality construction|expertise diff --git a/.github/workflows/styles/alex/LGBTQ.yml b/.github/workflows/styles/alex/LGBTQ.yml new file mode 100644 index 0000000000..842a9c6f1d --- /dev/null +++ b/.github/workflows/styles/alex/LGBTQ.yml @@ -0,0 +1,55 @@ +--- +extends: substitution +message: Consider using '%s' instead of '%s'. +ignorecase: true +level: warning +action: + name: replace +swap: + bathroom bill: non-discrimination law|non-discrimination ordinance + bi: bisexual + biologically female: assigned female at birth|designated female at birth + biologically male: assigned male at birth|designated male at birth + born a man: assigned male at birth|designated male at birth + born a woman: assigned female at birth|designated female at birth + dyke: gay + fag: gay + faggot: gay + gay agenda: gay issues + gay lifestyle: gay lives|gay/lesbian lives + gay rights: equal rights|civil rights for gay people + gender pronoun: pronoun|pronouns + gender pronouns: pronoun|pronouns + genetically female: assigned female at birth|designated female at birth + genetically male: assigned male at birth|designated male at birth + hermaphrodite: person who is intersex|person|intersex person + hermaphroditic: intersex + heshe: transgender person|person + homo: gay + homosexual: gay|gay man|lesbian|gay person/people + homosexual agenda: gay issues + homosexual couple: couple + homosexual lifestyle: gay lives|gay/lesbian lives + homosexual marriage: gay marriage|same-sex marriage + homosexual relations: relationship + homosexual relationship: relationship + preferred pronoun: pronoun|pronouns + preferred pronouns: pronoun|pronouns + pseudo hermaphrodite: person who is intersex|person|intersex person + pseudo hermaphroditic: intersex + pseudohermaphrodite: person who is intersex|person|intersex person + pseudohermaphroditic: intersex + sex change: transition|gender confirmation surgery + sex change operation: sex reassignment surgery|gender confirmation surgery + sexchange: transition|gender confirmation surgery + sexual preference: sexual orientation|orientation + she male: transgender person|person + shehe: transgender person|person + shemale: transgender person|person + sodomite: gay + special rights: equal rights|civil rights for gay people + tranny: transgender + transgendered: transgender + transgenderism: being transgender|the movement for transgender equality + transgenders: transgender people + transvestite: cross-dresser diff --git a/.github/workflows/styles/alex/Press.yml b/.github/workflows/styles/alex/Press.yml new file mode 100644 index 0000000000..06991dbf18 --- /dev/null +++ b/.github/workflows/styles/alex/Press.yml @@ -0,0 +1,11 @@ +--- +extends: substitution +message: Consider using '%s' instead of '%s'. +ignorecase: true +level: warning +action: + name: replace +swap: + islamist: muslim|person of Islamic faith|fanatic|zealot|follower of islam|follower + of the islamic faith + islamists: muslims|people of Islamic faith|fanatics|zealots diff --git a/.github/workflows/styles/alex/ProfanityLikely.yml b/.github/workflows/styles/alex/ProfanityLikely.yml new file mode 100644 index 0000000000..1c03e19897 --- /dev/null +++ b/.github/workflows/styles/alex/ProfanityLikely.yml @@ -0,0 +1,1289 @@ +extends: existence +message: Don't use '%s', it’s profane. +level: warning +ignorecase: true +tokens: + - abeed + - africoon + - alligator bait + - alligatorbait + - analannie + - arabush + - arabushs + - argie + - armo + - armos + - arse + - arsehole + - ass + - assbagger + - assblaster + - assclown + - asscowboy + - asses + - assfuck + - assfucker + - asshat + - asshole + - assholes + - asshore + - assjockey + - asskiss + - asskisser + - assklown + - asslick + - asslicker + - asslover + - assman + - assmonkey + - assmunch + - assmuncher + - asspacker + - asspirate + - asspuppies + - assranger + - asswhore + - asswipe + - backdoorman + - badfuck + - balllicker + - barelylegal + - barf + - barface + - barfface + - bazongas + - bazooms + - beanbag + - beanbags + - beaner + - beaners + - beaney + - beaneys + - beatoff + - beatyourmeat + - biatch + - bigass + - bigbastard + - bigbutt + - bitcher + - bitches + - bitchez + - bitchin + - bitching + - bitchslap + - bitchy + - biteme + - blowjob + - bluegum + - bluegums + - boang + - boche + - boches + - bogan + - bohunk + - bollick + - bollock + - bollocks + - bong + - boob + - boobies + - boobs + - booby + - boody + - boong + - boonga + - boongas + - boongs + - boonie + - boonies + - bootlip + - bootlips + - booty + - bootycall + - bosch + - bosche + - bosches + - boschs + - brea5t + - breastjob + - breastlover + - breastman + - buddhahead + - buddhaheads + - buffies + - bugger + - buggered + - buggery + - bule + - bules + - bullcrap + - bulldike + - bulldyke + - bullshit + - bumblefuck + - bumfuck + - bung + - bunga + - bungas + - bunghole + - "burr head" + - "burr heads" + - burrhead + - burrheads + - butchbabes + - butchdike + - butchdyke + - buttbang + - buttface + - buttfuck + - buttfucker + - buttfuckers + - butthead + - buttman + - buttmunch + - buttmuncher + - buttpirate + - buttplug + - buttstain + - byatch + - cacker + - "camel jockey" + - "camel jockeys" + - cameljockey + - cameltoe + - carpetmuncher + - carruth + - chav + - "cheese eating surrender monkey" + - "cheese eating surrender monkies" + - "cheeseeating surrender monkey" + - "cheeseeating surrender monkies" + - cheesehead + - cheeseheads + - cherrypopper + - chickslick + - "china swede" + - "china swedes" + - chinaman + - chinamen + - chinaswede + - chinaswedes + - "ching chong" + - "ching chongs" + - chingchong + - chingchongs + - chink + - chinks + - chinky + - choad + - chode + - chonkies + - chonky + - chonkys + - "christ killer" + - "christ killers" + - chug + - chugs + - chunger + - chungers + - chunkies + - chunky + - chunkys + - clamdigger + - clamdiver + - clansman + - clansmen + - clanswoman + - clanswomen + - clit + - clitoris + - clogwog + - cockblock + - cockblocker + - cockcowboy + - cockfight + - cockhead + - cockknob + - cocklicker + - cocklover + - cocknob + - cockqueen + - cockrider + - cocksman + - cocksmith + - cocksmoker + - cocksucer + - cocksuck + - cocksucked + - cocksucker + - cocksucking + - cocktease + - cocky + - cohee + - commie + - coolie + - coolies + - cooly + - coon + - "coon ass" + - "coon asses" + - coonass + - coonasses + - coondog + - coons + - cornhole + - cracka + - crackwhore + - crap + - crapola + - crapper + - crappy + - crotchjockey + - crotchmonkey + - crotchrot + - cum + - cumbubble + - cumfest + - cumjockey + - cumm + - cummer + - cumming + - cummings + - cumquat + - cumqueen + - cumshot + - cunn + - cunntt + - cunt + - cunteyed + - cuntfuck + - cuntfucker + - cuntlick + - cuntlicker + - cuntlicking + - cuntsucker + - "curry muncher" + - "curry munchers" + - currymuncher + - currymunchers + - cushi + - cushis + - cyberslimer + - dago + - dagos + - dahmer + - dammit + - damnit + - darkey + - darkeys + - darkie + - darkies + - darky + - datnigga + - deapthroat + - deepthroat + - dego + - degos + - "diaper head" + - "diaper heads" + - diaperhead + - diaperheads + - dickbrain + - dickforbrains + - dickhead + - dickless + - dicklick + - dicklicker + - dickman + - dickwad + - dickweed + - diddle + - dingleberry + - dink + - dinks + - dipshit + - dipstick + - dix + - dixiedike + - dixiedyke + - doggiestyle + - doggystyle + - dong + - doodoo + - dope + - "dot head" + - "dot heads" + - dothead + - dotheads + - dragqueen + - dragqween + - dripdick + - dumb + - dumbass + - dumbbitch + - dumbfuck + - "dune coon" + - "dune coons" + - dyefly + - easyslut + - eatballs + - eatme + - eatpussy + - "eight ball" + - "eight balls" + - ero + - esqua + - evl + - exkwew + - facefucker + - faeces + - fagging + - faggot + - fagot + - fannyfucker + - farty + - fastfuck + - fatah + - fatass + - fatfuck + - fatfucker + - fatso + - fckcum + - felch + - felcher + - felching + - fellatio + - feltch + - feltcher + - feltching + - fingerfuck + - fingerfucked + - fingerfucker + - fingerfuckers + - fingerfucking + - fister + - fistfuck + - fistfucked + - fistfucker + - fistfucking + - fisting + - flange + - floo + - flydie + - flydye + - fok + - footfuck + - footfucker + - footlicker + - footstar + - forni + - fornicate + - foursome + - fourtwenty + - fraud + - freakfuck + - freakyfucker + - freefuck + - fu + - fubar + - fuc + - fucck + - fuck + - fucka + - fuckable + - fuckbag + - fuckbook + - fuckbuddy + - fucked + - fuckedup + - fucker + - fuckers + - fuckface + - fuckfest + - fuckfreak + - fuckfriend + - fuckhead + - fuckher + - fuckin + - fuckina + - fucking + - fuckingbitch + - fuckinnuts + - fuckinright + - fuckit + - fuckknob + - fuckme + - fuckmehard + - fuckmonkey + - fuckoff + - fuckpig + - fucks + - fucktard + - fuckwhore + - fuckyou + - fudgepacker + - fugly + - fuk + - fuks + - funeral + - funfuck + - fungus + - fuuck + - gables + - gangbang + - gangbanged + - gangbanger + - gangsta + - "gator bait" + - gatorbait + - gaymuthafuckinwhore + - gaysex + - geez + - geezer + - geni + - getiton + - ginzo + - ginzos + - gipp + - gippo + - gippos + - gipps + - givehead + - glazeddonut + - godammit + - goddamit + - goddammit + - goddamn + - goddamned + - goddamnes + - goddamnit + - goddamnmuthafucker + - goldenshower + - golliwog + - golliwogs + - gonorrehea + - gonzagas + - gook + - "gook eye" + - "gook eyes" + - gookeye + - gookeyes + - gookies + - gooks + - gooky + - gora + - goras + - gotohell + - greaseball + - greaseballs + - greaser + - greasers + - gringo + - gringos + - groe + - groid + - groids + - gubba + - gubbas + - gubs + - gummer + - gwailo + - gwailos + - gweilo + - gweilos + - gyopo + - gyopos + - gyp + - gyped + - gypo + - gypos + - gypp + - gypped + - gyppie + - gyppies + - gyppo + - gyppos + - gyppy + - gyppys + - gypsies + - gypsy + - gypsys + - hadji + - hadjis + - hairyback + - hairybacks + - haji + - hajis + - hajji + - hajjis + - "half breed" + - "half caste" + - halfbreed + - halfcaste + - hamas + - handjob + - haole + - haoles + - hapa + - hardon + - headfuck + - headlights + - hebe + - hebephila + - hebephile + - hebephiles + - hebephilia + - hebephilic + - hebes + - heeb + - heebs + - hillbillies + - hillbilly + - hindoo + - hiscock + - hitler + - hitlerism + - hitlerist + - ho + - hobo + - hodgie + - hoes + - holestuffer + - homo + - homobangers + - honger + - honk + - honkers + - honkey + - honkeys + - honkie + - honkies + - honky + - hooker + - hookers + - hooters + - hore + - hori + - horis + - hork + - horney + - horniest + - horseshit + - hosejob + - hoser + - hotdamn + - hotpussy + - hottotrot + - hussy + - hymie + - hymies + - iblowu + - idiot + - ikeymo + - ikeymos + - ikwe + - indons + - injun + - injuns + - insest + - intheass + - inthebuff + - jackass + - jackoff + - jackshit + - jacktheripper + - jap + - japcrap + - japie + - japies + - japs + - jebus + - jeez + - jerkoff + - jewboy + - jewed + - jewess + - jig + - jiga + - jigaboo + - jigaboos + - jigarooni + - jigaroonis + - jigg + - jigga + - jiggabo + - jiggabos + - jiggas + - jigger + - jiggers + - jiggs + - jiggy + - jigs + - jijjiboo + - jijjiboos + - jimfish + - jism + - jiz + - jizim + - jizjuice + - jizm + - jizz + - jizzim + - jizzum + - juggalo + - "jungle bunnies" + - "jungle bunny" + - junglebunny + - kacap + - kacapas + - kacaps + - kaffer + - kaffir + - kaffre + - kafir + - kanake + - katsap + - katsaps + - khokhol + - khokhols + - kigger + - kike + - kikes + - kimchis + - kissass + - kkk + - klansman + - klansmen + - klanswoman + - klanswomen + - kondum + - koon + - krap + - krappy + - krauts + - kuffar + - kum + - kumbubble + - kumbullbe + - kummer + - kumming + - kumquat + - kums + - kunilingus + - kunnilingus + - kunt + - kushi + - kushis + - kwa + - "kwai lo" + - "kwai los" + - ky + - kyke + - kykes + - kyopo + - kyopos + - lebo + - lebos + - lesbain + - lesbayn + - lesbian + - lesbin + - lesbo + - lez + - lezbe + - lezbefriends + - lezbo + - lezz + - lezzo + - lickme + - limey + - limpdick + - limy + - livesex + - loadedgun + - looser + - loser + - lovebone + - lovegoo + - lovegun + - lovejuice + - lovemuscle + - lovepistol + - loverocket + - lowlife + - lsd + - lubejob + - lubra + - luckycammeltoe + - lugan + - lugans + - mabuno + - mabunos + - macaca + - macacas + - magicwand + - mahbuno + - mahbunos + - mams + - manhater + - manpaste + - mastabate + - mastabater + - masterbate + - masterblaster + - mastrabator + - masturbate + - masturbating + - mattressprincess + - "mau mau" + - "mau maus" + - maumau + - maumaus + - meatbeatter + - meatrack + - mgger + - mggor + - mickeyfinn + - milf + - mockey + - mockie + - mocky + - mofo + - moky + - moneyshot + - "moon cricket" + - "moon crickets" + - mooncricket + - mooncrickets + - moron + - moskal + - moskals + - moslem + - mosshead + - mothafuck + - mothafucka + - mothafuckaz + - mothafucked + - mothafucker + - mothafuckin + - mothafucking + - mothafuckings + - motherfuck + - motherfucked + - motherfucker + - motherfuckin + - motherfucking + - motherfuckings + - motherlovebone + - muff + - muffdive + - muffdiver + - muffindiver + - mufflikcer + - mulatto + - muncher + - munt + - mzungu + - mzungus + - nastybitch + - nastyho + - nastyslut + - nastywhore + - negres + - negress + - negro + - negroes + - negroid + - negros + - nig + - nigar + - nigars + - niger + - nigerian + - nigerians + - nigers + - nigette + - nigettes + - nigg + - nigga + - niggah + - niggahs + - niggar + - niggaracci + - niggard + - niggarded + - niggarding + - niggardliness + - niggardlinesss + - niggardly + - niggards + - niggars + - niggas + - niggaz + - nigger + - niggerhead + - niggerhole + - niggers + - niggle + - niggled + - niggles + - niggling + - nigglings + - niggor + - niggress + - niggresses + - nigguh + - nigguhs + - niggur + - niggurs + - niglet + - nignog + - nigor + - nigors + - nigr + - nigra + - nigras + - nigre + - nigres + - nigress + - nigs + - nip + - nittit + - nlgger + - nlggor + - nofuckingway + - nookey + - nookie + - noonan + - nudger + - nutfucker + - ontherag + - orga + - orgasim + - paki + - pakis + - palesimian + - "pancake face" + - "pancake faces" + - pansies + - pansy + - panti + - payo + - peckerwood + - pedo + - peehole + - peepshpw + - peni5 + - perv + - phuk + - phuked + - phuking + - phukked + - phukking + - phungky + - phuq + - pi55 + - picaninny + - piccaninny + - pickaninnies + - pickaninny + - piefke + - piefkes + - piker + - pikey + - piky + - pimp + - pimped + - pimper + - pimpjuic + - pimpjuice + - pimpsimp + - pindick + - piss + - pissed + - pisser + - pisses + - pisshead + - pissin + - pissing + - pissoff + - pocha + - pochas + - pocho + - pochos + - pocketpool + - pohm + - pohms + - polack + - polacks + - pollock + - pollocks + - pom + - pommie + - "pommie grant" + - "pommie grants" + - pommies + - pommy + - poms + - poo + - poon + - poontang + - poop + - pooper + - pooperscooper + - pooping + - poorwhitetrash + - popimp + - "porch monkey" + - "porch monkies" + - porchmonkey + - pornking + - porno + - pornography + - pornprincess + - "prairie nigger" + - "prairie niggers" + - premature + - pric + - prick + - prickhead + - pu55i + - pu55y + - pubiclice + - pud + - pudboy + - pudd + - puddboy + - puke + - puntang + - purinapricness + - puss + - pussie + - pussies + - pussyeater + - pussyfucker + - pussylicker + - pussylips + - pussylover + - pussypounder + - pusy + - quashie + - queef + - quickie + - quim + - ra8s + - raghead + - ragheads + - raper + - rearend + - rearentry + - redleg + - redlegs + - redneck + - rednecks + - redskin + - redskins + - reefer + - reestie + - rere + - retard + - retarded + - ribbed + - rigger + - rimjob + - rimming + - "round eyes" + - roundeye + - russki + - russkie + - sadis + - sadom + - sambo + - sambos + - samckdaddy + - "sand nigger" + - "sand niggers" + - sandm + - sandnigger + - satan + - scag + - scallywag + - schlong + - schvartse + - schvartsen + - schwartze + - schwartzen + - screwyou + - seppo + - seppos + - sexed + - sexfarm + - sexhound + - sexhouse + - sexing + - sexkitten + - sexpot + - sexslave + - sextogo + - sexwhore + - sexymoma + - sexyslim + - shaggin + - shagging + - shat + - shav + - shawtypimp + - sheeney + - shhit + - shiksa + - shinola + - shit + - shitcan + - shitdick + - shite + - shiteater + - shited + - shitface + - shitfaced + - shitfit + - shitforbrains + - shitfuck + - shitfucker + - shitfull + - shithapens + - shithappens + - shithead + - shithouse + - shiting + - shitlist + - shitola + - shitoutofluck + - shits + - shitstain + - shitted + - shitter + - shitting + - shitty + - shortfuck + - shylock + - shylocks + - sissy + - sixsixsix + - sixtynine + - sixtyniner + - skank + - skankbitch + - skankfuck + - skankwhore + - skanky + - skankybitch + - skankywhore + - skinflute + - skum + - skumbag + - skwa + - skwe + - slant + - slanteye + - slanty + - slapper + - slave + - slavedriver + - sleezebag + - sleezeball + - slideitin + - slimeball + - slimebucket + - slopehead + - slopeheads + - sloper + - slopers + - slopes + - slopey + - slopeys + - slopies + - slopy + - slut + - sluts + - slutt + - slutting + - slutty + - slutwear + - slutwhore + - smackthemonkey + - smut + - snatchpatch + - snowback + - snownigger + - sodomise + - sodomize + - sodomy + - sonofabitch + - sonofbitch + - sooties + - sooty + - spaghettibender + - spaghettinigger + - spankthemonkey + - spearchucker + - spearchuckers + - spermacide + - spermbag + - spermhearder + - spermherder + - spic + - spick + - spicks + - spics + - spig + - spigotty + - spik + - spit + - spitter + - splittail + - spooge + - spreadeagle + - spunk + - spunky + - sqeh + - squa + - squarehead + - squareheads + - squaw + - squinty + - stringer + - stripclub + - stuinties + - stupid + - stupidfuck + - stupidfucker + - suckdick + - sucker + - suckme + - suckmyass + - suckmydick + - suckmytit + - suckoff + - swallower + - swalow + - "swamp guinea" + - "swamp guineas" + - tacohead + - tacoheads + - taff + - tang + - "tar babies" + - "tar baby" + - tarbaby + - tard + - teste + - thicklip + - thicklips + - thirdeye + - thirdleg + - threeway + - "timber nigger" + - "timber niggers" + - timbernigger + - tinker + - tinkers + - titbitnipply + - titfuck + - titfucker + - titfuckin + - titjob + - titlicker + - titlover + - tits + - tittie + - titties + - titty + - tongethruster + - tongue + - tonguethrust + - tonguetramp + - tortur + - tosser + - "towel head" + - "towel heads" + - towelhead + - trailertrash + - trannie + - tranny + - transvestite + - triplex + - tuckahoe + - tunneloflove + - turd + - turnon + - twat + - twink + - twinkie + - twobitwhore + - uck + - ukrop + - "uncle tom" + - unfuckable + - upskirt + - uptheass + - upthebutt + - usama + - vibr + - vibrater + - vomit + - wab + - wank + - wanker + - wanking + - waysted + - weenie + - weewee + - welcher + - welfare + - wetb + - wetback + - wetbacks + - wetspot + - whacker + - whash + - whigger + - whiggers + - whiskeydick + - whiskydick + - "white trash" + - whitenigger + - whitetrash + - whitey + - whiteys + - whities + - whiz + - whop + - whore + - whorefucker + - whorehouse + - wigga + - wiggas + - wigger + - wiggers + - willie + - williewanker + - wn + - wog + - wogs + - womens + - wop + - wtf + - wuss + - wuzzie + - xkwe + - yank + - yanks + - yarpie + - yarpies + - yellowman + - yid + - yids + - zigabo + - zigabos + - zipperhead + - zipperheads diff --git a/.github/workflows/styles/alex/ProfanityMaybe.yml b/.github/workflows/styles/alex/ProfanityMaybe.yml new file mode 100644 index 0000000000..e889b3a3b1 --- /dev/null +++ b/.github/workflows/styles/alex/ProfanityMaybe.yml @@ -0,0 +1,282 @@ +extends: existence +message: Reconsider using '%s', it may be profane. +level: warning +ignorecase: true +tokens: + - abbo + - abid + - abo + - abortion + - abuse + - addict + - addicts + - alla + - anal + - analsex + - anus + - areola + - athletesfoot + - attack + - australian + - babe + - banging + - bastard + - beastality + - beastial + - beastiality + - bicurious + - bitch + - bitches + - blackman + - blacks + - bondage + - boob + - boobs + - "bounty bar" + - "bounty bars" + - bountybar + - brothel + - buttplug + - clit + - clitoris + - cocaine + - cock + - coitus + - condom + - copulate + - cra5h + - crack + - cracker + - crackpipe + - crotch + - cunilingus + - cunillingus + - cybersex + - damn + - damnation + - defecate + - demon + - devil + - devilworshipper + - dick + - dike + - dildo + - drug + - drunk + - drunken + - dyke + - ejaculate + - ejaculated + - ejaculating + - ejaculation + - enema + - erection + - excrement + - fag + - fart + - farted + - farting + - feces + - felatio + - fetish + - fingerfood + - flasher + - flatulence + - fondle + - footaction + - foreskin + - foursome + - fourtwenty + - fruitcake + - gable + - genital + - gob + - god + - gonzagas + - goy + - goyim + - groe + - gross + - grostulation + - gub + - guinea + - guineas + - guizi + - hamas + - hebephila + - hebephile + - hebephiles + - hebephilia + - hebephilic + - heroin + - herpes + - hiv + - homicide + - horney + - ike + - ikes + - ikey + - illegals + - incest + - intercourse + - interracial + - italiano + - jerries + - jerry + - jesus + - jesuschrist + - jihad + - kink + - kinky + - knockers + - kock + - kotex + - kraut + - ky + - lactate + - lapdance + - libido + - licker + - liquor + - lolita + - lsd + - lynch + - mafia + - marijuana + - meth + - mick + - molest + - molestation + - molester + - molestor + - murder + - narcotic + - nazi + - necro + - nigerian + - nigerians + - nipple + - nipplering + - nook + - nooner + - nude + - nuke + - nymph + - oral + - orgasm + - orgies + - orgy + - paddy + - paederastic + - paederasts + - paederasty + - pearlnecklace + - peck + - pecker + - pederastic + - pederasts + - pederasty + - pedophile + - pedophiles + - pedophilia + - pedophilic + - pee + - peepshow + - pendy + - penetration + - penile + - penis + - penises + - penthouse + - phonesex + - pistol + - pixie + - pixy + - playboy + - playgirl + - porn + - pornflick + - porno + - pornography + - prostitute + - protestant + - pube + - pubic + - pussy + - pussycat + - queer + - racist + - radical + - radicals + - randy + - rape + - raped + - raper + - rapist + - rectum + - ribbed + - satan + - scag + - scat + - screw + - scrotum + - scum + - semen + - septic + - septics + - sex + - sexhouse + - sextoy + - sextoys + - sexual + - sexually + - sexy + - shag + - shinola + - shit + - slaughter + - smack + - snatch + - sniggers + - sodom + - sodomite + - spade + - spank + - sperm + - stagg + - stiffy + - strapon + - stroking + - suck + - suicide + - swallow + - swastika + - syphilis + - tantra + - teat + - terrorist + - testicle + - testicles + - threesome + - tinkle + - tit + - tits + - tnt + - torture + - tramp + - trap + - trisexual + - trots + - turd + - uterus + - vagina + - vaginal + - vibrator + - vulva + - whit + - whites + - willy + - xtc + - xxx + - yankee + - yankees \ No newline at end of file diff --git a/.github/workflows/styles/alex/ProfanityUnlikely.yml b/.github/workflows/styles/alex/ProfanityUnlikely.yml new file mode 100644 index 0000000000..8e13052d38 --- /dev/null +++ b/.github/workflows/styles/alex/ProfanityUnlikely.yml @@ -0,0 +1,251 @@ +extends: existence +message: Be careful with '%s', it’s profane in some cases. +level: warning +ignorecase: true +tokens: + - adult + - africa + - african + - allah + - amateur + - american + - angie + - angry + - arab + - arabs + - aroused + - asian + - assassin + - assassinate + - assassination + - assault + - attack + - australian + - babies + - backdoor + - backseat + - banana + - bananas + - baptist + - bast + - beast + - beaver + - bi + - bigger + - bisexual + - blackout + - blind + - blow + - bomb + - bombers + - bombing + - bombs + - bomd + - boom + - bosch + - bra + - breast + - brownie + - brownies + - buffy + - burn + - butt + - canadian + - cancer + - catholic + - catholics + - cemetery + - childrens + - chin + - chinese + - christ + - christian + - church + - cigarette + - cigs + - cocktail + - coconut + - coconuts + - color + - colored + - coloured + - communist + - conservative + - conspiracy + - corruption + - crabs + - crash + - creamy + - criminal + - criminals + - dead + - death + - deposit + - desire + - destroy + - deth + - die + - died + - dies + - dirty + - disease + - diseases + - disturbed + - dive + - doom + - ecstacy + - enemy + - erect + - escort + - ethiopian + - ethnic + - european + - execute + - executed + - execution + - executioner + - explosion + - failed + - failure + - fairies + - fairy + - faith + - fat + - fear + - fight + - filipina + - filipino + - fire + - firing + - fore + - fraud + - funeral + - fungus + - gay + - german + - gin + - girls + - gun + - harder + - harem + - headlights + - hell + - henhouse + - heterosexual + - hijack + - hijacker + - hijacking + - hole + - honk + - hook + - horn + - hostage + - hummer + - hun + - huns + - husky + - hustler + - illegal + - israel + - israeli + - israels + - itch + - jade + - japanese + - jerry + - jew + - jewish + - joint + - jugs + - kid + - kill + - killed + - killer + - killing + - kills + - kimchi + - knife + - laid + - latin + - lesbian + - liberal + - lies + - lingerie + - lotion + - lucifer + - mad + - mexican + - mideast + - minority + - moles + - mormon + - muslim + - naked + - nasty + - niger + - niggardly + - oreo + - oreos + - osama + - palestinian + - panties + - penthouse + - period + - pot + - poverty + - premature + - primetime + - propaganda + - pros + - que + - rabbi + - racial + - redlight + - refugee + - reject + - remains + - republican + - roach + - robber + - rump + - servant + - shoot + - shooting + - showtime + - sick + - slant + - slav + - slime + - slope + - slopes + - snigger + - sniggered + - sniggering + - sniggers + - sniper + - snot + - sob + - sos + - soviet + - spa + - stroke + - sweetness + - taboo + - tampon + - terror + - toilet + - tongue + - transexual + - transsexual + - trojan + - uk + - urinary + - urinate + - urine + - vatican + - vietcong + - violence + - virgin + - weapon + - whiskey + - womens \ No newline at end of file diff --git a/.github/workflows/styles/alex/README.md b/.github/workflows/styles/alex/README.md new file mode 100644 index 0000000000..0185d0e35e --- /dev/null +++ b/.github/workflows/styles/alex/README.md @@ -0,0 +1,27 @@ +Based on [alex](https://github.com/get-alex/alex). + +> Catch insensitive, inconsiderate writing + +``` +(The MIT License) + +Copyright (c) 2015 Titus Wormer + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +``` diff --git a/.github/workflows/styles/alex/Race.yml b/.github/workflows/styles/alex/Race.yml new file mode 100644 index 0000000000..9979c0b205 --- /dev/null +++ b/.github/workflows/styles/alex/Race.yml @@ -0,0 +1,87 @@ +--- +extends: substitution +message: Consider using '%s' instead of '%s'. +ignorecase: true +level: warning +action: + name: replace +swap: + Gipsy: Nomad|Traveler|Roma|Romani + Indian country: enemy territory + animal spirit: favorite|inspiration|personal interest|personality type + black list: blocklist|wronglist|banlist|deny list + blacklist: blocklist|wronglist|banlist|deny list + blacklisted: blocklisted|wronglisted|banlisted|deny-listed + blacklisting: blocklisting|wronglisting|banlisting|deny-listing + bugreport: bug report|snapshot + circle the wagons: defend + dream catcher: favorite|inspiration|personal interest|personality type + eskimo: Inuit + eskimos: Inuits + ghetto: projects|urban + goy: a person who is not Jewish|not Jewish + goyim: a person who is not Jewish|not Jewish + goyum: a person who is not Jewish|not Jewish + grandfather clause: legacy policy|legacy clause|deprecation policy + grandfather policy: legacy policy|legacy clause|deprecation policy + grandfathered: deprecated + grandfathering: deprecate + gyp: Nomad|Traveler|Roma|Romani + gyppo: Nomad|Traveler|Roma|Romani + gypsy: Nomad|Traveler|Roma|Romani + hymie: Jewish person + indian give: "go back on one\u2019s offer" + indian giver: "go back on one\u2019s offer" + japs: Japanese person|Japanese people + jump the reservation: disobey|endure|object to|oppose|resist + latina: Latinx + latino: Latinx + long time no hear: "I haven\u2019t seen you in a long time|it\u2019s been a long\ + \ time" + long time no see: "I haven\u2019t seen you in a long time|it\u2019s been a long\ + \ time" + master: primary|hub|reference + masters: primaries|hubs|references + mexican: Latinx + natives are becoming restless: dissatisfied|frustrated + natives are getting restless: dissatisfied|frustrated + natives are growing restless: dissatisfied|frustrated + natives are restless: dissatisfied|frustrated + non white: person of color|people of color + nonwhite: person of color|people of color + off reserve: disobey|endure|object to|oppose|resist + off the reservation: disobey|endure|object to|oppose|resist + on the warpath: defend + oriental: Asian person + orientals: Asian people + pinays: Filipinos|Filipino people + pinoys: Filipinos|Filipino people + pocahontas: Native American + pow wow: conference|gathering|meeting + powwow: conference|gathering|meeting + primitive: simple|indigenous|hunter-gatherer + red indian: Native American + red indians: Native American People + redskin: Native American + redskins: Native American People + sand niggers: Arabs|Middle Eastern People + savage: simple|indigenous|hunter-gatherer + shlomo: Jewish person + shyster: Jewish person + sophisticated culture: complex culture + sophisticated technology: complex technology + spade: a Black person + spirit animal: favorite|inspiration|personal interest|personality type + stone age: simple|indigenous|hunter-gatherer + too many chiefs: too many chefs in the kitchen|too many cooks spoil the broth + totem: favorite|inspiration|personal interest|personality type + towel heads: Arabs|Middle Eastern People + tribe: society|community + white list: passlist|alrightlist|safelist|allow list + white space: space|blank + white spaces: space|blank + whitelist: passlist|alrightlist|safelist|allow list + whitelisted: passlisted|alrightlisted|safelisted|allow-listed + whitelisting: passlisting|alrightlisting|safelisting|allow-listing + whitespace: space|blank + whitespaces: space|blank diff --git a/.github/workflows/styles/alex/Suicide.yml b/.github/workflows/styles/alex/Suicide.yml new file mode 100644 index 0000000000..3dfd3e33d2 --- /dev/null +++ b/.github/workflows/styles/alex/Suicide.yml @@ -0,0 +1,24 @@ +--- +extends: substitution +message: When referring to a person, consider using '%s' instead of '%s'. +ignorecase: true +level: warning +action: + name: replace +swap: + commit suicide: die by suicide + committed suicide: died by suicide + complete suicide: die by suicide + completed suicide: died by suicide + epidemic of suicides: rise in suicides + failed attempt: suicide attempt|attempted suicide + failed suicide: suicide attempt|attempted suicide + hang: the app froze|the app stopped responding|the app stopped responding to events|the + app became unresponsive + hanged: the app froze|the app stopped responding|the app stopped responding to events|the + app became unresponsive + successful suicide: die by suicide + suicide epidemic: rise in suicides + suicide failure: suicide attempt|attempted suicide + suicide note: a note from the deceased + suicide pact: rise in suicides diff --git a/.github/workflows/styles/alex/meta.json b/.github/workflows/styles/alex/meta.json new file mode 100644 index 0000000000..3db4c282ed --- /dev/null +++ b/.github/workflows/styles/alex/meta.json @@ -0,0 +1,4 @@ +{ + "feed": "https://github.com/errata-ai/alex/releases.atom", + "vale_version": ">=1.0.0" +} \ No newline at end of file diff --git a/.github/workflows/styles/proselint/Airlinese.yml b/.github/workflows/styles/proselint/Airlinese.yml new file mode 100644 index 0000000000..a6ae9c193c --- /dev/null +++ b/.github/workflows/styles/proselint/Airlinese.yml @@ -0,0 +1,8 @@ +extends: existence +message: "'%s' is airlinese." +ignorecase: true +level: error +tokens: + - enplan(?:e|ed|ing|ement) + - deplan(?:e|ed|ing|ement) + - taking off momentarily diff --git a/.github/workflows/styles/proselint/AnimalLabels.yml b/.github/workflows/styles/proselint/AnimalLabels.yml new file mode 100644 index 0000000000..b92e06fcb4 --- /dev/null +++ b/.github/workflows/styles/proselint/AnimalLabels.yml @@ -0,0 +1,48 @@ +extends: substitution +message: "Consider using '%s' instead of '%s'." +level: error +action: + name: replace +swap: + (?:bull|ox)-like: taurine + (?:calf|veal)-like: vituline + (?:crow|raven)-like: corvine + (?:leopard|panther)-like: pardine + bird-like: avine + centipede-like: scolopendrine + crab-like: cancrine + crocodile-like: crocodiline + deer-like: damine + eagle-like: aquiline + earthworm-like: lumbricine + falcon-like: falconine + ferine: wild animal-like + fish-like: piscine + fox-like: vulpine + frog-like: ranine + goat-like: hircine + goose-like: anserine + gull-like: laridine + hare-like: leporine + hawk-like: accipitrine + hippopotamus-like: hippopotamine + lizard-like: lacertine + mongoose-like: viverrine + mouse-like: murine + ostrich-like: struthionine + peacock-like: pavonine + porcupine-like: hystricine + rattlesnake-like: crotaline + sable-like: zibeline + sheep-like: ovine + shrew-like: soricine + sparrow-like: passerine + swallow-like: hirundine + swine-like: suilline + tiger-like: tigrine + viper-like: viperine + vulture-like: vulturine + wasp-like: vespine + wolf-like: lupine + woodpecker-like: picine + zebra-like: zebrine diff --git a/.github/workflows/styles/proselint/Annotations.yml b/.github/workflows/styles/proselint/Annotations.yml new file mode 100644 index 0000000000..dcb24f41bc --- /dev/null +++ b/.github/workflows/styles/proselint/Annotations.yml @@ -0,0 +1,9 @@ +extends: existence +message: "'%s' left in text." +ignorecase: false +level: error +tokens: + - XXX + - FIXME + - TODO + - NOTE diff --git a/.github/workflows/styles/proselint/Apologizing.yml b/.github/workflows/styles/proselint/Apologizing.yml new file mode 100644 index 0000000000..11088aaa84 --- /dev/null +++ b/.github/workflows/styles/proselint/Apologizing.yml @@ -0,0 +1,8 @@ +extends: existence +message: "Excessive apologizing: '%s'" +ignorecase: true +level: error +action: + name: remove +tokens: + - More research is needed diff --git a/.github/workflows/styles/proselint/Archaisms.yml b/.github/workflows/styles/proselint/Archaisms.yml new file mode 100644 index 0000000000..c8df9abc93 --- /dev/null +++ b/.github/workflows/styles/proselint/Archaisms.yml @@ -0,0 +1,52 @@ +extends: existence +message: "'%s' is archaic." +ignorecase: true +level: error +tokens: + - alack + - anent + - begat + - belike + - betimes + - boughten + - brocage + - brokage + - camarade + - chiefer + - chiefest + - Christiana + - completely obsolescent + - cozen + - divers + - deflexion + - fain + - forsooth + - foreclose from + - haply + - howbeit + - illumine + - in sooth + - maugre + - meseems + - methinks + - nigh + - peradventure + - perchance + - saith + - shew + - sistren + - spake + - to wit + - verily + - whilom + - withal + - wot + - enclosed please find + - please find enclosed + - enclosed herewith + - enclosed herein + - inforce + - ex postfacto + - foreclose from + - forewent + - for ever diff --git a/.github/workflows/styles/proselint/But.yml b/.github/workflows/styles/proselint/But.yml new file mode 100644 index 0000000000..0e2c32b933 --- /dev/null +++ b/.github/workflows/styles/proselint/But.yml @@ -0,0 +1,8 @@ +extends: existence +message: "Do not start a paragraph with a 'but'." +level: error +scope: paragraph +action: + name: remove +tokens: + - ^But diff --git a/.github/workflows/styles/proselint/Cliches.yml b/.github/workflows/styles/proselint/Cliches.yml new file mode 100644 index 0000000000..c56183c51a --- /dev/null +++ b/.github/workflows/styles/proselint/Cliches.yml @@ -0,0 +1,782 @@ +extends: existence +message: "'%s' is a cliche." +level: error +ignorecase: true +tokens: + - a chip off the old block + - a clean slate + - a dark and stormy night + - a far cry + - a fate worse than death + - a fine kettle of fish + - a loose cannon + - a penny saved is a penny earned + - a tough row to hoe + - a word to the wise + - ace in the hole + - acid test + - add insult to injury + - against all odds + - air your dirty laundry + - alas and alack + - all fun and games + - all hell broke loose + - all in a day's work + - all talk, no action + - all thumbs + - all your eggs in one basket + - all's fair in love and war + - all's well that ends well + - almighty dollar + - American as apple pie + - an axe to grind + - another day, another dollar + - armed to the teeth + - as luck would have it + - as old as time + - as the crow flies + - at loose ends + - at my wits end + - at the end of the day + - avoid like the plague + - babe in the woods + - back against the wall + - back in the saddle + - back to square one + - back to the drawing board + - bad to the bone + - badge of honor + - bald faced liar + - bald-faced lie + - ballpark figure + - banging your head against a brick wall + - baptism by fire + - barking up the wrong tree + - bat out of hell + - be all and end all + - beat a dead horse + - beat around the bush + - been there, done that + - beggars can't be choosers + - behind the eight ball + - bend over backwards + - benefit of the doubt + - bent out of shape + - best thing since sliced bread + - bet your bottom dollar + - better half + - better late than never + - better mousetrap + - better safe than sorry + - between a rock and a hard place + - between a rock and a hard place + - between Scylla and Charybdis + - between the devil and the deep blue see + - betwixt and between + - beyond the pale + - bide your time + - big as life + - big cheese + - big fish in a small pond + - big man on campus + - bigger they are the harder they fall + - bird in the hand + - bird's eye view + - birds and the bees + - birds of a feather flock together + - bit the hand that feeds you + - bite the bullet + - bite the dust + - bitten off more than he can chew + - black as coal + - black as pitch + - black as the ace of spades + - blast from the past + - bleeding heart + - blessing in disguise + - blind ambition + - blind as a bat + - blind leading the blind + - blissful ignorance + - blood is thicker than water + - blood sweat and tears + - blow a fuse + - blow off steam + - blow your own horn + - blushing bride + - boils down to + - bolt from the blue + - bone to pick + - bored stiff + - bored to tears + - bottomless pit + - boys will be boys + - bright and early + - brings home the bacon + - broad across the beam + - broken record + - brought back to reality + - bulk large + - bull by the horns + - bull in a china shop + - burn the midnight oil + - burning question + - burning the candle at both ends + - burst your bubble + - bury the hatchet + - busy as a bee + - but that's another story + - by hook or by crook + - call a spade a spade + - called onto the carpet + - calm before the storm + - can of worms + - can't cut the mustard + - can't hold a candle to + - case of mistaken identity + - cast aspersions + - cat got your tongue + - cat's meow + - caught in the crossfire + - caught red-handed + - chase a red herring + - checkered past + - chomping at the bit + - cleanliness is next to godliness + - clear as a bell + - clear as mud + - close to the vest + - cock and bull story + - cold shoulder + - come hell or high water + - comparing apples and oranges + - compleat + - conspicuous by its absence + - cool as a cucumber + - cool, calm, and collected + - cost a king's ransom + - count your blessings + - crack of dawn + - crash course + - creature comforts + - cross that bridge when you come to it + - crushing blow + - cry like a baby + - cry me a river + - cry over spilt milk + - crystal clear + - crystal clear + - curiosity killed the cat + - cut and dried + - cut through the red tape + - cut to the chase + - cute as a bugs ear + - cute as a button + - cute as a puppy + - cuts to the quick + - cutting edge + - dark before the dawn + - day in, day out + - dead as a doornail + - decision-making process + - devil is in the details + - dime a dozen + - divide and conquer + - dog and pony show + - dog days + - dog eat dog + - dog tired + - don't burn your bridges + - don't count your chickens + - don't look a gift horse in the mouth + - don't rock the boat + - don't step on anyone's toes + - don't take any wooden nickels + - down and out + - down at the heels + - down in the dumps + - down the hatch + - down to earth + - draw the line + - dressed to kill + - dressed to the nines + - drives me up the wall + - dubious distinction + - dull as dishwater + - duly authorized + - dyed in the wool + - eagle eye + - ear to the ground + - early bird catches the worm + - easier said than done + - easy as pie + - eat your heart out + - eat your words + - eleventh hour + - even the playing field + - every dog has its day + - every fiber of my being + - everything but the kitchen sink + - eye for an eye + - eyes peeled + - face the music + - facts of life + - fair weather friend + - fall by the wayside + - fan the flames + - far be it from me + - fast and loose + - feast or famine + - feather your nest + - feathered friends + - few and far between + - fifteen minutes of fame + - fills the bill + - filthy vermin + - fine kettle of fish + - first and foremost + - fish out of water + - fishing for a compliment + - fit as a fiddle + - fit the bill + - fit to be tied + - flash in the pan + - flat as a pancake + - flip your lid + - flog a dead horse + - fly by night + - fly the coop + - follow your heart + - for all intents and purposes + - for free + - for the birds + - for what it's worth + - force of nature + - force to be reckoned with + - forgive and forget + - fox in the henhouse + - free and easy + - free as a bird + - fresh as a daisy + - full steam ahead + - fun in the sun + - garbage in, garbage out + - gentle as a lamb + - get a kick out of + - get a leg up + - get down and dirty + - get the lead out + - get to the bottom of + - get with the program + - get your feet wet + - gets my goat + - gilding the lily + - gilding the lily + - give and take + - go against the grain + - go at it tooth and nail + - go for broke + - go him one better + - go the extra mile + - go with the flow + - goes without saying + - good as gold + - good deed for the day + - good things come to those who wait + - good time was had by all + - good times were had by all + - greased lightning + - greek to me + - green thumb + - green-eyed monster + - grist for the mill + - growing like a weed + - hair of the dog + - hand to mouth + - happy as a clam + - happy as a lark + - hasn't a clue + - have a nice day + - have a short fuse + - have high hopes + - have the last laugh + - haven't got a row to hoe + - he's got his hands full + - head honcho + - head over heels + - hear a pin drop + - heard it through the grapevine + - heart's content + - heavy as lead + - hem and haw + - high and dry + - high and mighty + - high as a kite + - his own worst enemy + - his work cut out for him + - hit paydirt + - hither and yon + - Hobson's choice + - hold your head up high + - hold your horses + - hold your own + - hold your tongue + - honest as the day is long + - horns of a dilemma + - horns of a dilemma + - horse of a different color + - hot under the collar + - hour of need + - I beg to differ + - icing on the cake + - if the shoe fits + - if the shoe were on the other foot + - if you catch my drift + - in a jam + - in a jiffy + - in a nutshell + - in a pig's eye + - in a pinch + - in a word + - in hot water + - in light of + - in the final analysis + - in the gutter + - in the last analysis + - in the nick of time + - in the thick of it + - in your dreams + - innocent bystander + - it ain't over till the fat lady sings + - it goes without saying + - it takes all kinds + - it takes one to know one + - it's a small world + - it's not what you know, it's who you know + - it's only a matter of time + - ivory tower + - Jack of all trades + - jockey for position + - jog your memory + - joined at the hip + - judge a book by its cover + - jump down your throat + - jump in with both feet + - jump on the bandwagon + - jump the gun + - jump to conclusions + - just a hop, skip, and a jump + - just the ticket + - justice is blind + - keep a stiff upper lip + - keep an eye on + - keep it simple, stupid + - keep the home fires burning + - keep up with the Joneses + - keep your chin up + - keep your fingers crossed + - kick the bucket + - kick up your heels + - kick your feet up + - kid in a candy store + - kill two birds with one stone + - kiss of death + - knock it out of the park + - knock on wood + - knock your socks off + - know him from Adam + - know the ropes + - know the score + - knuckle down + - knuckle sandwich + - knuckle under + - labor of love + - ladder of success + - land on your feet + - lap of luxury + - last but not least + - last but not least + - last hurrah + - last-ditch effort + - law of the jungle + - law of the land + - lay down the law + - leaps and bounds + - let sleeping dogs lie + - let the cat out of the bag + - let the good times roll + - let your hair down + - let's talk turkey + - letter perfect + - lick your wounds + - lies like a rug + - life's a bitch + - life's a grind + - light at the end of the tunnel + - lighter than a feather + - lighter than air + - like clockwork + - like father like son + - like taking candy from a baby + - like there's no tomorrow + - lion's share + - live and learn + - live and let live + - long and short of it + - long lost love + - look before you leap + - look down your nose + - look what the cat dragged in + - looking a gift horse in the mouth + - looks like death warmed over + - loose cannon + - lose your head + - lose your temper + - loud as a horn + - lounge lizard + - loved and lost + - low man on the totem pole + - luck of the draw + - luck of the Irish + - make a mockery of + - make hay while the sun shines + - make money hand over fist + - make my day + - make the best of a bad situation + - make the best of it + - make your blood boil + - male chauvinism + - man of few words + - man's best friend + - mark my words + - meaningful dialogue + - missed the boat on that one + - moment in the sun + - moment of glory + - moment of truth + - moment of truth + - money to burn + - more in sorrow than in anger + - more power to you + - more sinned against than sinning + - more than one way to skin a cat + - movers and shakers + - moving experience + - my better half + - naked as a jaybird + - naked truth + - neat as a pin + - needle in a haystack + - needless to say + - neither here nor there + - never look back + - never say never + - nip and tuck + - nip in the bud + - nip it in the bud + - no guts, no glory + - no love lost + - no pain, no gain + - no skin off my back + - no stone unturned + - no time like the present + - no use crying over spilled milk + - nose to the grindstone + - not a hope in hell + - not a minute's peace + - not in my backyard + - not playing with a full deck + - not the end of the world + - not written in stone + - nothing to sneeze at + - nothing ventured nothing gained + - now we're cooking + - off the top of my head + - off the wagon + - off the wall + - old hat + - olden days + - older and wiser + - older than dirt + - older than Methuselah + - on a roll + - on cloud nine + - on pins and needles + - on the bandwagon + - on the money + - on the nose + - on the rocks + - on the same page + - on the spot + - on the tip of my tongue + - on the wagon + - on thin ice + - once bitten, twice shy + - one bad apple doesn't spoil the bushel + - one born every minute + - one brick short + - one foot in the grave + - one in a million + - one red cent + - only game in town + - open a can of worms + - open and shut case + - open the flood gates + - opportunity doesn't knock twice + - out of pocket + - out of sight, out of mind + - out of the frying pan into the fire + - out of the woods + - out on a limb + - over a barrel + - over the hump + - pain and suffering + - pain in the + - panic button + - par for the course + - part and parcel + - party pooper + - pass the buck + - patience is a virtue + - pay through the nose + - penny pincher + - perfect storm + - pig in a poke + - pile it on + - pillar of the community + - pin your hopes on + - pitter patter of little feet + - plain as day + - plain as the nose on your face + - play by the rules + - play your cards right + - playing the field + - playing with fire + - pleased as punch + - plenty of fish in the sea + - point with pride + - poor as a church mouse + - pot calling the kettle black + - presidential timber + - pretty as a picture + - pull a fast one + - pull your punches + - pulled no punches + - pulling your leg + - pure as the driven snow + - put it in a nutshell + - put one over on you + - put the cart before the horse + - put the pedal to the metal + - put your best foot forward + - put your foot down + - quantum jump + - quantum leap + - quick as a bunny + - quick as a lick + - quick as a wink + - quick as lightning + - quiet as a dormouse + - rags to riches + - raining buckets + - raining cats and dogs + - rank and file + - rat race + - reap what you sow + - red as a beet + - red herring + - redound to one's credit + - redound to the benefit of + - reinvent the wheel + - rich and famous + - rings a bell + - ripe old age + - ripped me off + - rise and shine + - road to hell is paved with good intentions + - rob Peter to pay Paul + - roll over in the grave + - rub the wrong way + - ruled the roost + - running in circles + - sad but true + - sadder but wiser + - salt of the earth + - scared stiff + - scared to death + - sea change + - sealed with a kiss + - second to none + - see eye to eye + - seen the light + - seize the day + - set the record straight + - set the world on fire + - set your teeth on edge + - sharp as a tack + - shirked his duties + - shoot for the moon + - shoot the breeze + - shot in the dark + - shoulder to the wheel + - sick as a dog + - sigh of relief + - signed, sealed, and delivered + - sink or swim + - six of one, half a dozen of another + - six of one, half a dozen of the other + - skating on thin ice + - slept like a log + - slinging mud + - slippery as an eel + - slow as molasses + - smart as a whip + - smooth as a baby's bottom + - sneaking suspicion + - snug as a bug in a rug + - sow wild oats + - spare the rod, spoil the child + - speak of the devil + - spilled the beans + - spinning your wheels + - spitting image of + - spoke with relish + - spread like wildfire + - spring to life + - squeaky wheel gets the grease + - stands out like a sore thumb + - start from scratch + - stick in the mud + - still waters run deep + - stitch in time + - stop and smell the roses + - straight as an arrow + - straw that broke the camel's back + - stretched to the breaking point + - strong as an ox + - stubborn as a mule + - stuff that dreams are made of + - stuffed shirt + - sweating blood + - sweating bullets + - take a load off + - take one for the team + - take the bait + - take the bull by the horns + - take the plunge + - takes one to know one + - takes two to tango + - than you can shake a stick at + - the cream of the crop + - the cream rises to the top + - the more the merrier + - the real deal + - the real McCoy + - the red carpet treatment + - the same old story + - the straw that broke the camel's back + - there is no accounting for taste + - thick as a brick + - thick as thieves + - thick as thieves + - thin as a rail + - think outside of the box + - thinking outside the box + - third time's the charm + - this day and age + - this hurts me worse than it hurts you + - this point in time + - thought leaders? + - three sheets to the wind + - through thick and thin + - throw in the towel + - throw the baby out with the bathwater + - tie one on + - tighter than a drum + - time and time again + - time is of the essence + - tip of the iceberg + - tired but happy + - to coin a phrase + - to each his own + - to make a long story short + - to the best of my knowledge + - toe the line + - tongue in cheek + - too good to be true + - too hot to handle + - too numerous to mention + - touch with a ten foot pole + - tough as nails + - trial and error + - trials and tribulations + - tried and true + - trip down memory lane + - twist of fate + - two cents worth + - two peas in a pod + - ugly as sin + - under the counter + - under the gun + - under the same roof + - under the weather + - until the cows come home + - unvarnished truth + - up the creek + - uphill battle + - upper crust + - upset the applecart + - vain attempt + - vain effort + - vanquish the enemy + - various and sundry + - vested interest + - viable alternative + - waiting for the other shoe to drop + - wakeup call + - warm welcome + - watch your p's and q's + - watch your tongue + - watching the clock + - water under the bridge + - wax eloquent + - wax poetic + - we've got a situation here + - weather the storm + - weed them out + - week of Sundays + - went belly up + - wet behind the ears + - what goes around comes around + - what you see is what you get + - when it rains, it pours + - when push comes to shove + - when the cat's away + - when the going gets tough, the tough get going + - whet (?:the|your) appetite + - white as a sheet + - whole ball of wax + - whole hog + - whole nine yards + - wild goose chase + - will wonders never cease? + - wisdom of the ages + - wise as an owl + - wolf at the door + - wool pulled over our eyes + - words fail me + - work like a dog + - world weary + - worst nightmare + - worth its weight in gold + - writ large + - wrong side of the bed + - yanking your chain + - yappy as a dog + - years young + - you are what you eat + - you can run but you can't hide + - you only live once + - you're the boss + - young and foolish + - young and vibrant diff --git a/.github/workflows/styles/proselint/CorporateSpeak.yml b/.github/workflows/styles/proselint/CorporateSpeak.yml new file mode 100644 index 0000000000..4de8ee3f8e --- /dev/null +++ b/.github/workflows/styles/proselint/CorporateSpeak.yml @@ -0,0 +1,30 @@ +extends: existence +message: "'%s' is corporate speak." +ignorecase: true +level: error +tokens: + - at the end of the day + - back to the drawing board + - hit the ground running + - get the ball rolling + - low-hanging fruit + - thrown under the bus + - think outside the box + - let's touch base + - get my manager's blessing + - it's on my radar + - ping me + - i don't have the bandwidth + - no brainer + - par for the course + - bang for your buck + - synergy + - move the goal post + - apples to apples + - win-win + - circle back around + - all hands on deck + - take this offline + - drill-down + - elephant in the room + - on my plate diff --git a/.github/workflows/styles/proselint/Currency.yml b/.github/workflows/styles/proselint/Currency.yml new file mode 100644 index 0000000000..ebd4b7d3e6 --- /dev/null +++ b/.github/workflows/styles/proselint/Currency.yml @@ -0,0 +1,5 @@ +extends: existence +message: "Incorrect use of symbols in '%s'." +ignorecase: true +raw: + - \$[\d]* ?(?:dollars|usd|us dollars) diff --git a/.github/workflows/styles/proselint/Cursing.yml b/.github/workflows/styles/proselint/Cursing.yml new file mode 100644 index 0000000000..e65070a91b --- /dev/null +++ b/.github/workflows/styles/proselint/Cursing.yml @@ -0,0 +1,15 @@ +extends: existence +message: "Consider replacing '%s'." +level: error +ignorecase: true +tokens: + - shit + - piss + - fuck + - cunt + - cocksucker + - motherfucker + - tits + - fart + - turd + - twat diff --git a/.github/workflows/styles/proselint/DateCase.yml b/.github/workflows/styles/proselint/DateCase.yml new file mode 100644 index 0000000000..9aa1bd991b --- /dev/null +++ b/.github/workflows/styles/proselint/DateCase.yml @@ -0,0 +1,7 @@ +extends: existence +message: With lowercase letters, the periods are standard. +ignorecase: false +level: error +nonword: true +tokens: + - '\d{1,2} ?[ap]m\b' diff --git a/.github/workflows/styles/proselint/DateMidnight.yml b/.github/workflows/styles/proselint/DateMidnight.yml new file mode 100644 index 0000000000..0130e1aefd --- /dev/null +++ b/.github/workflows/styles/proselint/DateMidnight.yml @@ -0,0 +1,7 @@ +extends: existence +message: "Use 'midnight' or 'noon'." +ignorecase: true +level: error +nonword: true +tokens: + - '12 ?[ap]\.?m\.?' diff --git a/.github/workflows/styles/proselint/DateRedundancy.yml b/.github/workflows/styles/proselint/DateRedundancy.yml new file mode 100644 index 0000000000..b1f653ea5f --- /dev/null +++ b/.github/workflows/styles/proselint/DateRedundancy.yml @@ -0,0 +1,10 @@ +extends: existence +message: "'a.m.' is always morning; 'p.m.' is always night." +ignorecase: true +level: error +nonword: true +tokens: + - '\d{1,2} ?a\.?m\.? in the morning' + - '\d{1,2} ?p\.?m\.? in the evening' + - '\d{1,2} ?p\.?m\.? at night' + - '\d{1,2} ?p\.?m\.? in the afternoon' diff --git a/.github/workflows/styles/proselint/DateSpacing.yml b/.github/workflows/styles/proselint/DateSpacing.yml new file mode 100644 index 0000000000..b7a2fd33b6 --- /dev/null +++ b/.github/workflows/styles/proselint/DateSpacing.yml @@ -0,0 +1,7 @@ +extends: existence +message: "It's standard to put a space before '%s'" +ignorecase: true +level: error +nonword: true +tokens: + - '\d{1,2}[ap]\.?m\.?' diff --git a/.github/workflows/styles/proselint/DenizenLabels.yml b/.github/workflows/styles/proselint/DenizenLabels.yml new file mode 100644 index 0000000000..bc3dd8abba --- /dev/null +++ b/.github/workflows/styles/proselint/DenizenLabels.yml @@ -0,0 +1,52 @@ +extends: substitution +message: Did you mean '%s'? +ignorecase: false +action: + name: replace +swap: + (?:Afrikaaner|Afrikander): Afrikaner + (?:Hong Kongite|Hong Kongian): Hong Konger + (?:Indianan|Indianian): Hoosier + (?:Michiganite|Michiganian): Michigander + (?:New Hampshireite|New Hampshireman): New Hampshirite + (?:Newcastlite|Newcastleite): Novocastrian + (?:Providencian|Providencer): Providentian + (?:Trentian|Trentonian): Tridentine + (?:Warsawer|Warsawian): Varsovian + (?:Wolverhamptonite|Wolverhamptonian): Wulfrunian + Alabaman: Alabamian + Albuquerquian: Albuquerquean + Anchoragite: Anchorageite + Arizonian: Arizonan + Arkansawyer: Arkansan + Belarusan: Belarusian + Cayman Islander: Caymanian + Coloradoan: Coloradan + Connecticuter: Nutmegger + Fairbanksian: Fairbanksan + Fort Worther: Fort Worthian + Grenadian: Grenadan + Halifaxer: Haligonian + Hartlepoolian: Hartlepudlian + Illinoisian: Illinoisan + Iowegian: Iowan + Leedsian: Leodenisian + Liverpoolian: Liverpudlian + Los Angelean: Angeleno + Manchesterian: Mancunian + Minneapolisian: Minneapolitan + Missouran: Missourian + Monacan: Monegasque + Neopolitan: Neapolitan + New Jerseyite: New Jerseyan + New Orleansian: New Orleanian + Oklahoma Citian: Oklahoma Cityan + Oklahomian: Oklahoman + Saudi Arabian: Saudi + Seattlite: Seattleite + Surinamer: Surinamese + Tallahassean: Tallahasseean + Tennesseean: Tennessean + Trois-Rivièrester: Trifluvian + Utahan: Utahn + Valladolidian: Vallisoletano diff --git a/.github/workflows/styles/proselint/Diacritical.yml b/.github/workflows/styles/proselint/Diacritical.yml new file mode 100644 index 0000000000..2416cf28bc --- /dev/null +++ b/.github/workflows/styles/proselint/Diacritical.yml @@ -0,0 +1,95 @@ +extends: substitution +message: Consider using '%s' instead of '%s'. +ignorecase: true +level: error +action: + name: replace +swap: + beau ideal: beau idéal + boutonniere: boutonnière + bric-a-brac: bric-à-brac + cafe: café + cause celebre: cause célèbre + chevre: chèvre + cliche: cliché + consomme: consommé + coup de grace: coup de grâce + crudites: crudités + creme brulee: crème brûlée + creme de menthe: crème de menthe + creme fraice: crème fraîche + creme fresh: crème fraîche + crepe: crêpe + debutante: débutante + decor: décor + deja vu: déjà vu + denouement: dénouement + facade: façade + fiance: fiancé + fiancee: fiancée + flambe: flambé + garcon: garçon + lycee: lycée + maitre d: maître d + menage a trois: ménage à trois + negligee: négligée + protege: protégé + protegee: protégée + puree: purée + my resume: my résumé + your resume: your résumé + his resume: his résumé + her resume: her résumé + a resume: a résumé + the resume: the résumé + risque: risqué + roue: roué + soiree: soirée + souffle: soufflé + soupcon: soupçon + touche: touché + tete-a-tete: tête-à-tête + voila: voilà + a la carte: à la carte + a la mode: à la mode + emigre: émigré + + # Spanish loanwords + El Nino: El Niño + jalapeno: jalapeño + La Nina: La Niña + pina colada: piña colada + senor: señor + senora: señora + senorita: señorita + + # Portuguese loanwords + acai: açaí + + # German loanwords + doppelganger: doppelgänger + Fuhrer: Führer + Gewurztraminer: Gewürztraminer + vis-a-vis: vis-à-vis + Ubermensch: Übermensch + + # Swedish loanwords + filmjolk: filmjölk + smorgasbord: smörgåsbord + + # Names, places, and companies + Beyonce: Beyoncé + Bronte: Brontë + Champs-Elysees: Champs-Élysées + Citroen: Citroën + Curacao: Curaçao + Lowenbrau: Löwenbräu + Monegasque: Monégasque + Motley Crue: Mötley Crüe + Nescafe: Nescafé + Queensryche: Queensrÿche + Quebec: Québec + Quebecois: Québécois + Angstrom: Ångström + angstrom: ångström + Skoda: Škoda diff --git a/.github/workflows/styles/proselint/GenderBias.yml b/.github/workflows/styles/proselint/GenderBias.yml new file mode 100644 index 0000000000..d98d3cf45f --- /dev/null +++ b/.github/workflows/styles/proselint/GenderBias.yml @@ -0,0 +1,45 @@ +extends: substitution +message: Consider using '%s' instead of '%s'. +ignorecase: true +level: error +action: + name: replace +swap: + (?:alumnae|alumni): graduates + (?:alumna|alumnus): graduate + air(?:m[ae]n|wom[ae]n): pilot(s) + anchor(?:m[ae]n|wom[ae]n): anchor(s) + authoress: author + camera(?:m[ae]n|wom[ae]n): camera operator(s) + chair(?:m[ae]n|wom[ae]n): chair(s) + congress(?:m[ae]n|wom[ae]n): member(s) of congress + door(?:m[ae]|wom[ae]n): concierge(s) + draft(?:m[ae]n|wom[ae]n): drafter(s) + fire(?:m[ae]n|wom[ae]n): firefighter(s) + fisher(?:m[ae]n|wom[ae]n): fisher(s) + fresh(?:m[ae]n|wom[ae]n): first-year student(s) + garbage(?:m[ae]n|wom[ae]n): waste collector(s) + lady lawyer: lawyer + ladylike: courteous + landlord: building manager + mail(?:m[ae]n|wom[ae]n): mail carriers + man and wife: husband and wife + man enough: strong enough + mankind: human kind + manmade: manufactured + men and girls: men and women + middle(?:m[ae]n|wom[ae]n): intermediary + news(?:m[ae]n|wom[ae]n): journalist(s) + ombuds(?:man|woman): ombuds + oneupmanship: upstaging + poetess: poet + police(?:m[ae]n|wom[ae]n): police officer(s) + repair(?:m[ae]n|wom[ae]n): technician(s) + sales(?:m[ae]n|wom[ae]n): salesperson or sales people + service(?:m[ae]n|wom[ae]n): soldier(s) + steward(?:ess)?: flight attendant + tribes(?:m[ae]n|wom[ae]n): tribe member(s) + waitress: waiter + woman doctor: doctor + woman scientist[s]?: scientist(s) + work(?:m[ae]n|wom[ae]n): worker(s) diff --git a/.github/workflows/styles/proselint/GroupTerms.yml b/.github/workflows/styles/proselint/GroupTerms.yml new file mode 100644 index 0000000000..7a59fa48a7 --- /dev/null +++ b/.github/workflows/styles/proselint/GroupTerms.yml @@ -0,0 +1,39 @@ +extends: substitution +message: Consider using '%s' instead of '%s'. +ignorecase: true +action: + name: replace +swap: + (?:bunch|group|pack|flock) of chickens: brood of chickens + (?:bunch|group|pack|flock) of crows: murder of crows + (?:bunch|group|pack|flock) of hawks: cast of hawks + (?:bunch|group|pack|flock) of parrots: pandemonium of parrots + (?:bunch|group|pack|flock) of peacocks: muster of peacocks + (?:bunch|group|pack|flock) of penguins: muster of penguins + (?:bunch|group|pack|flock) of sparrows: host of sparrows + (?:bunch|group|pack|flock) of turkeys: rafter of turkeys + (?:bunch|group|pack|flock) of woodpeckers: descent of woodpeckers + (?:bunch|group|pack|herd) of apes: shrewdness of apes + (?:bunch|group|pack|herd) of baboons: troop of baboons + (?:bunch|group|pack|herd) of badgers: cete of badgers + (?:bunch|group|pack|herd) of bears: sloth of bears + (?:bunch|group|pack|herd) of bullfinches: bellowing of bullfinches + (?:bunch|group|pack|herd) of bullocks: drove of bullocks + (?:bunch|group|pack|herd) of caterpillars: army of caterpillars + (?:bunch|group|pack|herd) of cats: clowder of cats + (?:bunch|group|pack|herd) of colts: rag of colts + (?:bunch|group|pack|herd) of crocodiles: bask of crocodiles + (?:bunch|group|pack|herd) of dolphins: school of dolphins + (?:bunch|group|pack|herd) of foxes: skulk of foxes + (?:bunch|group|pack|herd) of gorillas: band of gorillas + (?:bunch|group|pack|herd) of hippopotami: bloat of hippopotami + (?:bunch|group|pack|herd) of horses: drove of horses + (?:bunch|group|pack|herd) of jellyfish: fluther of jellyfish + (?:bunch|group|pack|herd) of kangeroos: mob of kangeroos + (?:bunch|group|pack|herd) of monkeys: troop of monkeys + (?:bunch|group|pack|herd) of oxen: yoke of oxen + (?:bunch|group|pack|herd) of rhinoceros: crash of rhinoceros + (?:bunch|group|pack|herd) of wild boar: sounder of wild boar + (?:bunch|group|pack|herd) of wild pigs: drift of wild pigs + (?:bunch|group|pack|herd) of zebras: zeal of wild pigs + (?:bunch|group|pack|school) of trout: hover of trout diff --git a/.github/workflows/styles/proselint/Hedging.yml b/.github/workflows/styles/proselint/Hedging.yml new file mode 100644 index 0000000000..a8615f8bb2 --- /dev/null +++ b/.github/workflows/styles/proselint/Hedging.yml @@ -0,0 +1,8 @@ +extends: existence +message: "'%s' is hedging." +ignorecase: true +level: error +tokens: + - I would argue that + - ', so to speak' + - to a certain degree diff --git a/.github/workflows/styles/proselint/Hyperbole.yml b/.github/workflows/styles/proselint/Hyperbole.yml new file mode 100644 index 0000000000..0361772ce7 --- /dev/null +++ b/.github/workflows/styles/proselint/Hyperbole.yml @@ -0,0 +1,6 @@ +extends: existence +message: "'%s' is hyperbolic." +level: error +nonword: true +tokens: + - '[a-z]+[!?]{2,}' diff --git a/.github/workflows/styles/proselint/Jargon.yml b/.github/workflows/styles/proselint/Jargon.yml new file mode 100644 index 0000000000..2454a9c34e --- /dev/null +++ b/.github/workflows/styles/proselint/Jargon.yml @@ -0,0 +1,11 @@ +extends: existence +message: "'%s' is jargon." +ignorecase: true +level: error +tokens: + - in the affirmative + - in the negative + - agendize + - per your order + - per your request + - disincentivize diff --git a/.github/workflows/styles/proselint/LGBTOffensive.yml b/.github/workflows/styles/proselint/LGBTOffensive.yml new file mode 100644 index 0000000000..eaf5a84a1b --- /dev/null +++ b/.github/workflows/styles/proselint/LGBTOffensive.yml @@ -0,0 +1,13 @@ +extends: existence +message: "'%s' is offensive. Remove it or consider the context." +ignorecase: true +tokens: + - fag + - faggot + - dyke + - sodomite + - homosexual agenda + - gay agenda + - transvestite + - homosexual lifestyle + - gay lifestyle diff --git a/.github/workflows/styles/proselint/LGBTTerms.yml b/.github/workflows/styles/proselint/LGBTTerms.yml new file mode 100644 index 0000000000..efdf268866 --- /dev/null +++ b/.github/workflows/styles/proselint/LGBTTerms.yml @@ -0,0 +1,15 @@ +extends: substitution +message: "Consider using '%s' instead of '%s'." +ignorecase: true +action: + name: replace +swap: + homosexual man: gay man + homosexual men: gay men + homosexual woman: lesbian + homosexual women: lesbians + homosexual people: gay people + homosexual couple: gay couple + sexual preference: sexual orientation + (?:admitted homosexual|avowed homosexual): openly gay + special rights: equal rights diff --git a/.github/workflows/styles/proselint/Malapropisms.yml b/.github/workflows/styles/proselint/Malapropisms.yml new file mode 100644 index 0000000000..96997787a8 --- /dev/null +++ b/.github/workflows/styles/proselint/Malapropisms.yml @@ -0,0 +1,8 @@ +extends: existence +message: "'%s' is a malapropism." +ignorecase: true +level: error +tokens: + - the infinitesimal universe + - a serial experience + - attack my voracity diff --git a/.github/workflows/styles/proselint/Needless.yml b/.github/workflows/styles/proselint/Needless.yml new file mode 100644 index 0000000000..1f2732e173 --- /dev/null +++ b/.github/workflows/styles/proselint/Needless.yml @@ -0,0 +1,358 @@ +extends: substitution +message: Prefer '%s' over '%s' +ignorecase: true +action: + name: replace +swap: + '(?:cell phone|cell-phone)': cellphone + '(?:cliquey|cliquy)': cliquish + '(?:pygmean|pygmaen)': pygmy + '(?:retributional|retributionary)': retributive + '(?:revokable|revokeable)': revocable + abolishment: abolition + accessary: accessory + accreditate: accredit + accruement: accrual + accusee: accused + acquaintanceship: acquaintance + acquitment: acquittal + administrate: administer + administrated: administered + administrating: administering + adulterate: adulterous + advisatory: advisory + advocator: advocate + aggrievance: grievance + allegator: alleger + allusory: allusive + amative: amorous + amortizement: amortization + amphiboly: amphibology + anecdotalist: anecdotist + anilinctus: anilingus + anticipative: anticipatory + antithetic: antithetical + applicative: applicable + applicatory: applicable + applier: applicator + approbative: approbatory + arbitrager: arbitrageur + arsenous: arsenious + ascendance: ascendancy + ascendence: ascendancy + ascendency: ascendancy + auctorial: authorial + averral: averment + barbwire: barbed wire + benefic: beneficent + benignant: benign + bestowment: bestowal + betrothment: betrothal + blamableness: blameworthiness + butt naked: buck naked + camarade: comrade + carta blanca: carte blanche + casualities: casualties + casuality: casualty + catch on fire: catch fire + catholicly: catholically + cease fire: ceasefire + channelize: channel + chaplainship: chaplaincy + chrysalid: chrysalis + chrysalids: chrysalises + cigaret: cigarette + coemployee: coworker + cognitional: cognitive + cohabitate: cohabit + cohabitor: cohabitant + collodium: collodion + collusory: collusive + commemoratory: commemorative + commonty: commonage + communicatory: communicative + compensative: compensatory + complacence: complacency + complicitous: complicit + computate: compute + conciliative: conciliatory + concomitancy: concomitance + condonance: condonation + confirmative: confirmatory + congruency: congruence + connotate: connote + consanguineal: consanguine + conspicuity: conspicuousness + conspiratorialist: conspirator + constitutionist: constitutionalist + contingence: contigency + contributary: contributory + contumacity: contumacy + conversible: convertible + conveyal: conveyance + copartner: partner + copartnership: partnership + corroboratory: corroborative + cotemporaneous: contemporaneous + cotemporary: contemporary + criminate: incriminate + culpatory: inculpatory + cumbrance: encumbrance + cumulate: accumulate + curatory: curative + daredeviltry: daredevilry + deceptious: deceptive + defamative: defamatory + defraudulent: fraudulent + degeneratory: degenerative + delimitate: delimit + delusory: delusive + denouncement: denunciation + depositee: depositary + depreciative: depreciatory + deprival: deprivation + derogative: derogatory + destroyable: destructible + detoxicate: detoxify + detractory: detractive + deviancy: deviance + deviationist: deviant + digamy: deuterogamy + digitalize: digitize + diminishment: diminution + diplomatist: diplomat + disassociate: dissociate + disciplinatory: disciplinary + discriminant: discriminating + disenthrone: dethrone + disintegratory: disintegrative + dismission: dismissal + disorientate: disorient + disorientated: disoriented + disquieten: disquiet + distraite: distrait + divergency: divergence + dividable: divisible + doctrinary: doctrinaire + documental: documentary + domesticize: domesticate + duplicatory: duplicative + duteous: dutiful + educationalist: educationist + educatory: educative + enigmatas: enigmas + enlargen: enlarge + enswathe: swathe + epical: epic + erotism: eroticism + ethician: ethicist + ex officiis: ex officio + exculpative: exculpatory + exigeant: exigent + exigence: exigency + exotism: exoticism + expedience: expediency + expediential: expedient + extensible: extendable + eying: eyeing + fiefdom: fief + flagrance: flagrancy + flatulency: flatulence + fraudful: fraudulent + funebrial: funereal + geographical: geographic + geometrical: geometric + gerry-rigged: jury-rigged + goatherder: goatherd + gustatorial: gustatory + habitude: habit + henceforward: henceforth + hesitance: hesitancy + heterogenous: heterogeneous + hierarchic: hierarchical + hindermost: hindmost + honorand: honoree + hypostasize: hypostatize + hysteric: hysterical + idolatrize: idolize + impanel: empanel + imperviable: impervious + importunacy: importunity + impotency: impotence + imprimatura: imprimatur + improprietous: improper + inalterable: unalterable + incitation: incitement + incommunicative: uncommunicative + inconsistence: inconsistency + incontrollable: uncontrollable + incurment: incurrence + indow: endow + indue: endue + inhibitive: inhibitory + innavigable: unnavigable + innovational: innovative + inquisitional: inquisitorial + insistment: insistence + insolvable: unsolvable + instillment: instillation + instinctual: instinctive + insuror: insurer + insurrectional: insurrectionary + interpretate: interpret + intervenience: intervention + ironical: ironic + jerry-rigged: jury-rigged + judgmatic: judgmental + labyrinthian: labyrinthine + laudative: laudatory + legitimatization: legitimation + legitimatize: legitimize + legitimization: legitimation + lengthways: lengthwise + life-sized: life-size + liquorice: licorice + lithesome: lithe + lollipop: lollypop + loth: loath + lubricous: lubricious + maihem: mayhem + medicinal marijuana: medical marijuana + meliorate: ameliorate + minimalize: minimize + mirk: murk + mirky: murky + misdoubt: doubt + monetarize: monetize + moveable: movable + narcism: narcissism + neglective: neglectful + negligency: negligence + neologizer: neologist + neurologic: neurological + nicknack: knickknack + nictate: nictitate + nonenforceable: unenforceable + normalcy: normality + numbedness: numbness + omittable: omissible + onomatopoetic: onomatopoeic + opinioned: opined + optimum advantage: optimal advantage + orientate: orient + outsized: outsize + oversized: oversize + overthrowal: overthrow + pacificist: pacifist + paederast: pederast + parachronism: anachronism + parti-color: parti-colored + participative: participatory + party-colored: parti-colored + pediatrist: pediatrician + penumbrous: penumbral + perjorative: pejorative + permissory: permissive + permutate: permute + personation: impersonation + pharmaceutic: pharmaceutical + pleuritis: pleurisy + policy holder: policyholder + policyowner: policyholder + politicalize: politicize + precedency: precedence + preceptoral: preceptorial + precipitance: precipitancy + precipitant: precipitate + preclusory: preclusive + precolumbian: pre-Columbian + prefectoral: prefectorial + preponderately: preponderantly + preserval: preservation + preventative: preventive + proconsulship: proconsulate + procreational: procreative + procurance: procurement + propelment: propulsion + propulsory: propulsive + prosecutive: prosecutory + protectory: protective + provocatory: provocative + pruriency: prurience + psychal: psychical + punitory: punitive + quantitate: quantify + questionary: questionnaire + quiescency: quiescence + rabbin: rabbi + reasonability: reasonableness + recidivistic: recidivous + recriminative: recriminatory + recruital: recruitment + recurrency: recurrence + recusance: recusancy + recusation: recusal + recusement: recusal + redemptory: redemptive + referrable: referable + referrible: referable + refutatory: refutative + remitment: remittance + remittal: remission + renouncement: renunciation + renunciable: renounceable + reparatory: reparative + repudiative: repudiatory + requitement: requital + rescindment: rescission + restoral: restoration + reticency: reticence + reviewal: review + revisal: revision + revisional: revisionary + revolute: revolt + saliency: salience + salutiferous: salutary + sensatory: sensory + sessionary: sessional + shareowner: shareholder + sicklily: sickly + signator: signatory + slanderize: slander + societary: societal + sodomist: sodomite + solicitate: solicit + speculatory: speculative + spiritous: spirituous + statutorial: statutory + submergeable: submersible + submittal: submission + subtile: subtle + succuba: succubus + sufficience: sufficiency + suppliant: supplicant + surmisal: surmise + suspendible: suspendable + synthetize: synthesize + systemize: systematize + tactual: tactile + tangental: tangential + tautologous: tautological + tee-shirt: T-shirt + thenceforward: thenceforth + transiency: transience + transposal: transposition + unfrequent: infrequent + unreasonability: unreasonableness + unrevokable: irrevocable + unsubstantial: insubstantial + usurpature: usurpation + variative: variational + vegetive: vegetative + vindicative: vindictive + vituperous: vituperative + vociferant: vociferous + volitive: volitional + wolverene: wolverine + wolvish: wolfish + Zoroastrism: Zoroastrianism diff --git a/.github/workflows/styles/proselint/Nonwords.yml b/.github/workflows/styles/proselint/Nonwords.yml new file mode 100644 index 0000000000..57e7b9e42f --- /dev/null +++ b/.github/workflows/styles/proselint/Nonwords.yml @@ -0,0 +1,38 @@ +extends: substitution +message: "Consider using '%s' instead of '%s'." +ignorecase: true +level: error +action: + name: replace +swap: + affrontery: effrontery + analyzation: analysis + annoyment: annoyance + confirmant: confirmand + confirmants: confirmands + conversate: converse + crained: cranded + discomforture: discomfort|discomfiture + dispersement: disbursement|dispersal + doubtlessly: doubtless|undoubtedly + forebearance: forbearance + improprietous: improper + inclimate: inclement + inimicable: inimical + irregardless: regardless + minimalize: minimize + minimalized: minimized + minimalizes: minimizes + minimalizing: minimizing + optimalize: optimize + paralyzation: paralysis + pettifogger: pettifog + proprietous: proper + relative inexpense: relatively low price|affordability + seldomly: seldom + thusly: thus + uncategorically: categorically + undoubtably: undoubtedly|indubitably + unequivocable: unequivocal + unmercilessly: mercilessly + unrelentlessly: unrelentingly|relentlessly diff --git a/.github/workflows/styles/proselint/Oxymorons.yml b/.github/workflows/styles/proselint/Oxymorons.yml new file mode 100644 index 0000000000..25fd2aa5d6 --- /dev/null +++ b/.github/workflows/styles/proselint/Oxymorons.yml @@ -0,0 +1,22 @@ +extends: existence +message: "'%s' is an oxymoron." +ignorecase: true +level: error +tokens: + - amateur expert + - increasingly less + - advancing backwards + - alludes explicitly to + - explicitly alludes to + - totally obsolescent + - completely obsolescent + - generally always + - usually always + - increasingly less + - build down + - conspicuous absence + - exact estimate + - found missing + - intense apathy + - mandatory choice + - organized mess diff --git a/.github/workflows/styles/proselint/P-Value.yml b/.github/workflows/styles/proselint/P-Value.yml new file mode 100644 index 0000000000..82309386f6 --- /dev/null +++ b/.github/workflows/styles/proselint/P-Value.yml @@ -0,0 +1,6 @@ +extends: existence +message: "You should use more decimal places, unless '%s' is really true." +ignorecase: true +level: suggestion +tokens: + - 'p = 0\.0{2,4}' diff --git a/.github/workflows/styles/proselint/RASSyndrome.yml b/.github/workflows/styles/proselint/RASSyndrome.yml new file mode 100644 index 0000000000..deae9c7d32 --- /dev/null +++ b/.github/workflows/styles/proselint/RASSyndrome.yml @@ -0,0 +1,30 @@ +extends: existence +message: "'%s' is redundant." +level: error +action: + name: edit + params: + - split + - ' ' + - '0' +tokens: + - ABM missile + - ACT test + - ABM missiles + - ABS braking system + - ATM machine + - CD disc + - CPI Index + - GPS system + - GUI interface + - HIV virus + - ISBN number + - LCD display + - PDF format + - PIN number + - RAS syndrome + - RIP in peace + - please RSVP + - SALT talks + - SAT test + - UPC codes diff --git a/.github/workflows/styles/proselint/README.md b/.github/workflows/styles/proselint/README.md new file mode 100644 index 0000000000..402076869f --- /dev/null +++ b/.github/workflows/styles/proselint/README.md @@ -0,0 +1,12 @@ +Copyright © 2014–2015, Jordan Suchow, Michael Pacer, and Lara A. Ross +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/.github/workflows/styles/proselint/Skunked.yml b/.github/workflows/styles/proselint/Skunked.yml new file mode 100644 index 0000000000..96a1f690ea --- /dev/null +++ b/.github/workflows/styles/proselint/Skunked.yml @@ -0,0 +1,13 @@ +extends: existence +message: "'%s' is a bit of a skunked term — impossible to use without issue." +ignorecase: true +level: error +tokens: + - bona fides + - deceptively + - decimate + - effete + - fulsome + - hopefully + - impassionate + - Thankfully diff --git a/.github/workflows/styles/proselint/Spelling.yml b/.github/workflows/styles/proselint/Spelling.yml new file mode 100644 index 0000000000..d3c9be7b7e --- /dev/null +++ b/.github/workflows/styles/proselint/Spelling.yml @@ -0,0 +1,17 @@ +extends: consistency +message: "Inconsistent spelling of '%s'." +level: error +ignorecase: true +either: + advisor: adviser + centre: center + colour: color + emphasise: emphasize + finalise: finalize + focussed: focused + labour: labor + learnt: learned + organise: organize + organised: organized + organising: organizing + recognise: recognize diff --git a/.github/workflows/styles/proselint/Typography.yml b/.github/workflows/styles/proselint/Typography.yml new file mode 100644 index 0000000000..60283ebf01 --- /dev/null +++ b/.github/workflows/styles/proselint/Typography.yml @@ -0,0 +1,11 @@ +extends: substitution +message: Consider using the '%s' symbol instead of '%s'. +level: error +nonword: true +swap: + '\.\.\.': … + '\([cC]\)': © + '\(TM\)': ™ + '\(tm\)': ™ + '\([rR]\)': ® + '[0-9]+ ?x ?[0-9]+': × diff --git a/.github/workflows/styles/proselint/Uncomparables.yml b/.github/workflows/styles/proselint/Uncomparables.yml new file mode 100644 index 0000000000..9b96f42b02 --- /dev/null +++ b/.github/workflows/styles/proselint/Uncomparables.yml @@ -0,0 +1,50 @@ +extends: existence +message: "'%s' is not comparable" +ignorecase: true +level: error +action: + name: edit + params: + - split + - ' ' + - '1' +raw: + - \b(?:absolutely|most|more|less|least|very|quite|largely|extremely|increasingly|kind of|mildy|hardly|greatly|sort of)\b\s* +tokens: + - absolute + - adequate + - complete + - correct + - certain + - devoid + - entire + - 'false' + - fatal + - favorite + - final + - ideal + - impossible + - inevitable + - infinite + - irrevocable + - main + - manifest + - only + - paramount + - perfect + - perpetual + - possible + - preferable + - principal + - singular + - stationary + - sufficient + - 'true' + - unanimous + - unavoidable + - unbroken + - uniform + - unique + - universal + - void + - whole diff --git a/.github/workflows/styles/proselint/Very.yml b/.github/workflows/styles/proselint/Very.yml new file mode 100644 index 0000000000..e4077f7922 --- /dev/null +++ b/.github/workflows/styles/proselint/Very.yml @@ -0,0 +1,6 @@ +extends: existence +message: "Remove '%s'." +ignorecase: true +level: error +tokens: + - very diff --git a/.github/workflows/styles/proselint/meta.json b/.github/workflows/styles/proselint/meta.json new file mode 100644 index 0000000000..e3c65800b8 --- /dev/null +++ b/.github/workflows/styles/proselint/meta.json @@ -0,0 +1,17 @@ +{ + "author": "jdkato", + "description": "A Vale-compatible implementation of the proselint linter.", + "email": "support@errata.ai", + "lang": "en", + "url": "https://github.com/errata-ai/proselint/releases/latest/download/proselint.zip", + "feed": "https://github.com/errata-ai/proselint/releases.atom", + "issues": "https://github.com/errata-ai/proselint/issues/new", + "license": "BSD-3-Clause", + "name": "proselint", + "sources": [ + "https://github.com/amperser/proselint" + ], + "vale_version": ">=1.0.0", + "coverage": 0.0, + "version": "0.1.0" +} diff --git a/.github/workflows/styles/run-ai/run-ai-terms.yml b/.github/workflows/styles/run-ai/run-ai-terms.yml new file mode 100644 index 0000000000..3c376d4b37 --- /dev/null +++ b/.github/workflows/styles/run-ai/run-ai-terms.yml @@ -0,0 +1,21 @@ +extends: substitution +message: "Use '%s' instead of '%s'." +level: warning +ignorecase: false +action: + name: replace +swap: + (?i)Run:ai: Run:ai + (?i)run.ai: Run:ai + (?i)runai: Run:ai + (?i)openshift: OpenShift + (?i)Hyperparameter: Hyperparameter + (?i)OAuth: OAuth + (?i)ConfigMaps: ConfigMaps + (?i)Namespace: Namespace + (?i)Knative: Knative + (?i)MLflow: MLflow + (?i)JupyterHub: JupyterHub + (?i)Kubeflow: Kubeflow + (?i)KubeVirt: KubeVirt + (?i)Seldon: Seldon diff --git a/.github/workflows/styles/write-good/Cliches.yml b/.github/workflows/styles/write-good/Cliches.yml new file mode 100644 index 0000000000..c95314387b --- /dev/null +++ b/.github/workflows/styles/write-good/Cliches.yml @@ -0,0 +1,702 @@ +extends: existence +message: "Try to avoid using clichés like '%s'." +ignorecase: true +level: warning +tokens: + - a chip off the old block + - a clean slate + - a dark and stormy night + - a far cry + - a fine kettle of fish + - a loose cannon + - a penny saved is a penny earned + - a tough row to hoe + - a word to the wise + - ace in the hole + - acid test + - add insult to injury + - against all odds + - air your dirty laundry + - all fun and games + - all in a day's work + - all talk, no action + - all thumbs + - all your eggs in one basket + - all's fair in love and war + - all's well that ends well + - almighty dollar + - American as apple pie + - an axe to grind + - another day, another dollar + - armed to the teeth + - as luck would have it + - as old as time + - as the crow flies + - at loose ends + - at my wits end + - avoid like the plague + - babe in the woods + - back against the wall + - back in the saddle + - back to square one + - back to the drawing board + - bad to the bone + - badge of honor + - bald faced liar + - ballpark figure + - banging your head against a brick wall + - baptism by fire + - barking up the wrong tree + - bat out of hell + - be all and end all + - beat a dead horse + - beat around the bush + - been there, done that + - beggars can't be choosers + - behind the eight ball + - bend over backwards + - benefit of the doubt + - bent out of shape + - best thing since sliced bread + - bet your bottom dollar + - better half + - better late than never + - better mousetrap + - better safe than sorry + - between a rock and a hard place + - beyond the pale + - bide your time + - big as life + - big cheese + - big fish in a small pond + - big man on campus + - bigger they are the harder they fall + - bird in the hand + - bird's eye view + - birds and the bees + - birds of a feather flock together + - bit the hand that feeds you + - bite the bullet + - bite the dust + - bitten off more than he can chew + - black as coal + - black as pitch + - black as the ace of spades + - blast from the past + - bleeding heart + - blessing in disguise + - blind ambition + - blind as a bat + - blind leading the blind + - blood is thicker than water + - blood sweat and tears + - blow off steam + - blow your own horn + - blushing bride + - boils down to + - bolt from the blue + - bone to pick + - bored stiff + - bored to tears + - bottomless pit + - boys will be boys + - bright and early + - brings home the bacon + - broad across the beam + - broken record + - brought back to reality + - bull by the horns + - bull in a china shop + - burn the midnight oil + - burning question + - burning the candle at both ends + - burst your bubble + - bury the hatchet + - busy as a bee + - by hook or by crook + - call a spade a spade + - called onto the carpet + - calm before the storm + - can of worms + - can't cut the mustard + - can't hold a candle to + - case of mistaken identity + - cat got your tongue + - cat's meow + - caught in the crossfire + - caught red-handed + - checkered past + - chomping at the bit + - cleanliness is next to godliness + - clear as a bell + - clear as mud + - close to the vest + - cock and bull story + - cold shoulder + - come hell or high water + - cool as a cucumber + - cool, calm, and collected + - cost a king's ransom + - count your blessings + - crack of dawn + - crash course + - creature comforts + - cross that bridge when you come to it + - crushing blow + - cry like a baby + - cry me a river + - cry over spilt milk + - crystal clear + - curiosity killed the cat + - cut and dried + - cut through the red tape + - cut to the chase + - cute as a bugs ear + - cute as a button + - cute as a puppy + - cuts to the quick + - dark before the dawn + - day in, day out + - dead as a doornail + - devil is in the details + - dime a dozen + - divide and conquer + - dog and pony show + - dog days + - dog eat dog + - dog tired + - don't burn your bridges + - don't count your chickens + - don't look a gift horse in the mouth + - don't rock the boat + - don't step on anyone's toes + - don't take any wooden nickels + - down and out + - down at the heels + - down in the dumps + - down the hatch + - down to earth + - draw the line + - dressed to kill + - dressed to the nines + - drives me up the wall + - dull as dishwater + - dyed in the wool + - eagle eye + - ear to the ground + - early bird catches the worm + - easier said than done + - easy as pie + - eat your heart out + - eat your words + - eleventh hour + - even the playing field + - every dog has its day + - every fiber of my being + - everything but the kitchen sink + - eye for an eye + - face the music + - facts of life + - fair weather friend + - fall by the wayside + - fan the flames + - feast or famine + - feather your nest + - feathered friends + - few and far between + - fifteen minutes of fame + - filthy vermin + - fine kettle of fish + - fish out of water + - fishing for a compliment + - fit as a fiddle + - fit the bill + - fit to be tied + - flash in the pan + - flat as a pancake + - flip your lid + - flog a dead horse + - fly by night + - fly the coop + - follow your heart + - for all intents and purposes + - for the birds + - for what it's worth + - force of nature + - force to be reckoned with + - forgive and forget + - fox in the henhouse + - free and easy + - free as a bird + - fresh as a daisy + - full steam ahead + - fun in the sun + - garbage in, garbage out + - gentle as a lamb + - get a kick out of + - get a leg up + - get down and dirty + - get the lead out + - get to the bottom of + - get your feet wet + - gets my goat + - gilding the lily + - give and take + - go against the grain + - go at it tooth and nail + - go for broke + - go him one better + - go the extra mile + - go with the flow + - goes without saying + - good as gold + - good deed for the day + - good things come to those who wait + - good time was had by all + - good times were had by all + - greased lightning + - greek to me + - green thumb + - green-eyed monster + - grist for the mill + - growing like a weed + - hair of the dog + - hand to mouth + - happy as a clam + - happy as a lark + - hasn't a clue + - have a nice day + - have high hopes + - have the last laugh + - haven't got a row to hoe + - head honcho + - head over heels + - hear a pin drop + - heard it through the grapevine + - heart's content + - heavy as lead + - hem and haw + - high and dry + - high and mighty + - high as a kite + - hit paydirt + - hold your head up high + - hold your horses + - hold your own + - hold your tongue + - honest as the day is long + - horns of a dilemma + - horse of a different color + - hot under the collar + - hour of need + - I beg to differ + - icing on the cake + - if the shoe fits + - if the shoe were on the other foot + - in a jam + - in a jiffy + - in a nutshell + - in a pig's eye + - in a pinch + - in a word + - in hot water + - in the gutter + - in the nick of time + - in the thick of it + - in your dreams + - it ain't over till the fat lady sings + - it goes without saying + - it takes all kinds + - it takes one to know one + - it's a small world + - it's only a matter of time + - ivory tower + - Jack of all trades + - jockey for position + - jog your memory + - joined at the hip + - judge a book by its cover + - jump down your throat + - jump in with both feet + - jump on the bandwagon + - jump the gun + - jump to conclusions + - just a hop, skip, and a jump + - just the ticket + - justice is blind + - keep a stiff upper lip + - keep an eye on + - keep it simple, stupid + - keep the home fires burning + - keep up with the Joneses + - keep your chin up + - keep your fingers crossed + - kick the bucket + - kick up your heels + - kick your feet up + - kid in a candy store + - kill two birds with one stone + - kiss of death + - knock it out of the park + - knock on wood + - knock your socks off + - know him from Adam + - know the ropes + - know the score + - knuckle down + - knuckle sandwich + - knuckle under + - labor of love + - ladder of success + - land on your feet + - lap of luxury + - last but not least + - last hurrah + - last-ditch effort + - law of the jungle + - law of the land + - lay down the law + - leaps and bounds + - let sleeping dogs lie + - let the cat out of the bag + - let the good times roll + - let your hair down + - let's talk turkey + - letter perfect + - lick your wounds + - lies like a rug + - life's a bitch + - life's a grind + - light at the end of the tunnel + - lighter than a feather + - lighter than air + - like clockwork + - like father like son + - like taking candy from a baby + - like there's no tomorrow + - lion's share + - live and learn + - live and let live + - long and short of it + - long lost love + - look before you leap + - look down your nose + - look what the cat dragged in + - looking a gift horse in the mouth + - looks like death warmed over + - loose cannon + - lose your head + - lose your temper + - loud as a horn + - lounge lizard + - loved and lost + - low man on the totem pole + - luck of the draw + - luck of the Irish + - make hay while the sun shines + - make money hand over fist + - make my day + - make the best of a bad situation + - make the best of it + - make your blood boil + - man of few words + - man's best friend + - mark my words + - meaningful dialogue + - missed the boat on that one + - moment in the sun + - moment of glory + - moment of truth + - money to burn + - more power to you + - more than one way to skin a cat + - movers and shakers + - moving experience + - naked as a jaybird + - naked truth + - neat as a pin + - needle in a haystack + - needless to say + - neither here nor there + - never look back + - never say never + - nip and tuck + - nip it in the bud + - no guts, no glory + - no love lost + - no pain, no gain + - no skin off my back + - no stone unturned + - no time like the present + - no use crying over spilled milk + - nose to the grindstone + - not a hope in hell + - not a minute's peace + - not in my backyard + - not playing with a full deck + - not the end of the world + - not written in stone + - nothing to sneeze at + - nothing ventured nothing gained + - now we're cooking + - off the top of my head + - off the wagon + - off the wall + - old hat + - older and wiser + - older than dirt + - older than Methuselah + - on a roll + - on cloud nine + - on pins and needles + - on the bandwagon + - on the money + - on the nose + - on the rocks + - on the spot + - on the tip of my tongue + - on the wagon + - on thin ice + - once bitten, twice shy + - one bad apple doesn't spoil the bushel + - one born every minute + - one brick short + - one foot in the grave + - one in a million + - one red cent + - only game in town + - open a can of worms + - open and shut case + - open the flood gates + - opportunity doesn't knock twice + - out of pocket + - out of sight, out of mind + - out of the frying pan into the fire + - out of the woods + - out on a limb + - over a barrel + - over the hump + - pain and suffering + - pain in the + - panic button + - par for the course + - part and parcel + - party pooper + - pass the buck + - patience is a virtue + - pay through the nose + - penny pincher + - perfect storm + - pig in a poke + - pile it on + - pillar of the community + - pin your hopes on + - pitter patter of little feet + - plain as day + - plain as the nose on your face + - play by the rules + - play your cards right + - playing the field + - playing with fire + - pleased as punch + - plenty of fish in the sea + - point with pride + - poor as a church mouse + - pot calling the kettle black + - pretty as a picture + - pull a fast one + - pull your punches + - pulling your leg + - pure as the driven snow + - put it in a nutshell + - put one over on you + - put the cart before the horse + - put the pedal to the metal + - put your best foot forward + - put your foot down + - quick as a bunny + - quick as a lick + - quick as a wink + - quick as lightning + - quiet as a dormouse + - rags to riches + - raining buckets + - raining cats and dogs + - rank and file + - rat race + - reap what you sow + - red as a beet + - red herring + - reinvent the wheel + - rich and famous + - rings a bell + - ripe old age + - ripped me off + - rise and shine + - road to hell is paved with good intentions + - rob Peter to pay Paul + - roll over in the grave + - rub the wrong way + - ruled the roost + - running in circles + - sad but true + - sadder but wiser + - salt of the earth + - scared stiff + - scared to death + - sealed with a kiss + - second to none + - see eye to eye + - seen the light + - seize the day + - set the record straight + - set the world on fire + - set your teeth on edge + - sharp as a tack + - shoot for the moon + - shoot the breeze + - shot in the dark + - shoulder to the wheel + - sick as a dog + - sigh of relief + - signed, sealed, and delivered + - sink or swim + - six of one, half a dozen of another + - skating on thin ice + - slept like a log + - slinging mud + - slippery as an eel + - slow as molasses + - smart as a whip + - smooth as a baby's bottom + - sneaking suspicion + - snug as a bug in a rug + - sow wild oats + - spare the rod, spoil the child + - speak of the devil + - spilled the beans + - spinning your wheels + - spitting image of + - spoke with relish + - spread like wildfire + - spring to life + - squeaky wheel gets the grease + - stands out like a sore thumb + - start from scratch + - stick in the mud + - still waters run deep + - stitch in time + - stop and smell the roses + - straight as an arrow + - straw that broke the camel's back + - strong as an ox + - stubborn as a mule + - stuff that dreams are made of + - stuffed shirt + - sweating blood + - sweating bullets + - take a load off + - take one for the team + - take the bait + - take the bull by the horns + - take the plunge + - takes one to know one + - takes two to tango + - the more the merrier + - the real deal + - the real McCoy + - the red carpet treatment + - the same old story + - there is no accounting for taste + - thick as a brick + - thick as thieves + - thin as a rail + - think outside of the box + - third time's the charm + - this day and age + - this hurts me worse than it hurts you + - this point in time + - three sheets to the wind + - through thick and thin + - throw in the towel + - tie one on + - tighter than a drum + - time and time again + - time is of the essence + - tip of the iceberg + - tired but happy + - to coin a phrase + - to each his own + - to make a long story short + - to the best of my knowledge + - toe the line + - tongue in cheek + - too good to be true + - too hot to handle + - too numerous to mention + - touch with a ten foot pole + - tough as nails + - trial and error + - trials and tribulations + - tried and true + - trip down memory lane + - twist of fate + - two cents worth + - two peas in a pod + - ugly as sin + - under the counter + - under the gun + - under the same roof + - under the weather + - until the cows come home + - unvarnished truth + - up the creek + - uphill battle + - upper crust + - upset the applecart + - vain attempt + - vain effort + - vanquish the enemy + - vested interest + - waiting for the other shoe to drop + - wakeup call + - warm welcome + - watch your p's and q's + - watch your tongue + - watching the clock + - water under the bridge + - weather the storm + - weed them out + - week of Sundays + - went belly up + - wet behind the ears + - what goes around comes around + - what you see is what you get + - when it rains, it pours + - when push comes to shove + - when the cat's away + - when the going gets tough, the tough get going + - white as a sheet + - whole ball of wax + - whole hog + - whole nine yards + - wild goose chase + - will wonders never cease? + - wisdom of the ages + - wise as an owl + - wolf at the door + - words fail me + - work like a dog + - world weary + - worst nightmare + - worth its weight in gold + - wrong side of the bed + - yanking your chain + - yappy as a dog + - years young + - you are what you eat + - you can run but you can't hide + - you only live once + - you're the boss + - young and foolish + - young and vibrant diff --git a/.github/workflows/styles/write-good/E-Prime.yml b/.github/workflows/styles/write-good/E-Prime.yml new file mode 100644 index 0000000000..074a102b25 --- /dev/null +++ b/.github/workflows/styles/write-good/E-Prime.yml @@ -0,0 +1,32 @@ +extends: existence +message: "Try to avoid using '%s'." +ignorecase: true +level: suggestion +tokens: + - am + - are + - aren't + - be + - been + - being + - he's + - here's + - here's + - how's + - i'm + - is + - isn't + - it's + - she's + - that's + - there's + - they're + - was + - wasn't + - we're + - were + - weren't + - what's + - where's + - who's + - you're diff --git a/.github/workflows/styles/write-good/Illusions.yml b/.github/workflows/styles/write-good/Illusions.yml new file mode 100644 index 0000000000..b4f1321859 --- /dev/null +++ b/.github/workflows/styles/write-good/Illusions.yml @@ -0,0 +1,11 @@ +extends: repetition +message: "'%s' is repeated!" +level: warning +alpha: true +action: + name: edit + params: + - truncate + - " " +tokens: + - '[^\s]+' diff --git a/.github/workflows/styles/write-good/Passive.yml b/.github/workflows/styles/write-good/Passive.yml new file mode 100644 index 0000000000..f472cb9049 --- /dev/null +++ b/.github/workflows/styles/write-good/Passive.yml @@ -0,0 +1,183 @@ +extends: existence +message: "'%s' may be passive voice. Use active voice if you can." +ignorecase: true +level: warning +raw: + - \b(am|are|were|being|is|been|was|be)\b\s* +tokens: + - '[\w]+ed' + - awoken + - beat + - become + - been + - begun + - bent + - beset + - bet + - bid + - bidden + - bitten + - bled + - blown + - born + - bought + - bound + - bred + - broadcast + - broken + - brought + - built + - burnt + - burst + - cast + - caught + - chosen + - clung + - come + - cost + - crept + - cut + - dealt + - dived + - done + - drawn + - dreamt + - driven + - drunk + - dug + - eaten + - fallen + - fed + - felt + - fit + - fled + - flown + - flung + - forbidden + - foregone + - forgiven + - forgotten + - forsaken + - fought + - found + - frozen + - given + - gone + - gotten + - ground + - grown + - heard + - held + - hidden + - hit + - hung + - hurt + - kept + - knelt + - knit + - known + - laid + - lain + - leapt + - learnt + - led + - left + - lent + - let + - lighted + - lost + - made + - meant + - met + - misspelt + - mistaken + - mown + - overcome + - overdone + - overtaken + - overthrown + - paid + - pled + - proven + - put + - quit + - read + - rid + - ridden + - risen + - run + - rung + - said + - sat + - sawn + - seen + - sent + - set + - sewn + - shaken + - shaven + - shed + - shod + - shone + - shorn + - shot + - shown + - shrunk + - shut + - slain + - slept + - slid + - slit + - slung + - smitten + - sold + - sought + - sown + - sped + - spent + - spilt + - spit + - split + - spoken + - spread + - sprung + - spun + - stolen + - stood + - stridden + - striven + - struck + - strung + - stuck + - stung + - stunk + - sung + - sunk + - swept + - swollen + - sworn + - swum + - swung + - taken + - taught + - thought + - thrived + - thrown + - thrust + - told + - torn + - trodden + - understood + - upheld + - upset + - wed + - wept + - withheld + - withstood + - woken + - won + - worn + - wound + - woven + - written + - wrung diff --git a/.github/workflows/styles/write-good/README.md b/.github/workflows/styles/write-good/README.md new file mode 100644 index 0000000000..3edcc9b376 --- /dev/null +++ b/.github/workflows/styles/write-good/README.md @@ -0,0 +1,27 @@ +Based on [write-good](https://github.com/btford/write-good). + +> Naive linter for English prose for developers who can't write good and wanna learn to do other stuff good too. + +``` +The MIT License (MIT) + +Copyright (c) 2014 Brian Ford + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +``` diff --git a/.github/workflows/styles/write-good/So.yml b/.github/workflows/styles/write-good/So.yml new file mode 100644 index 0000000000..e57f099dc0 --- /dev/null +++ b/.github/workflows/styles/write-good/So.yml @@ -0,0 +1,5 @@ +extends: existence +message: "Don't start a sentence with '%s'." +level: error +raw: + - '(?:[;-]\s)so[\s,]|\bSo[\s,]' diff --git a/.github/workflows/styles/write-good/ThereIs.yml b/.github/workflows/styles/write-good/ThereIs.yml new file mode 100644 index 0000000000..8b82e8f6cc --- /dev/null +++ b/.github/workflows/styles/write-good/ThereIs.yml @@ -0,0 +1,6 @@ +extends: existence +message: "Don't start a sentence with '%s'." +ignorecase: false +level: error +raw: + - '(?:[;-]\s)There\s(is|are)|\bThere\s(is|are)\b' diff --git a/.github/workflows/styles/write-good/TooWordy.yml b/.github/workflows/styles/write-good/TooWordy.yml new file mode 100644 index 0000000000..275701b196 --- /dev/null +++ b/.github/workflows/styles/write-good/TooWordy.yml @@ -0,0 +1,221 @@ +extends: existence +message: "'%s' is too wordy." +ignorecase: true +level: warning +tokens: + - a number of + - abundance + - accede to + - accelerate + - accentuate + - accompany + - accomplish + - accorded + - accrue + - acquiesce + - acquire + - additional + - adjacent to + - adjustment + - admissible + - advantageous + - adversely impact + - advise + - aforementioned + - aggregate + - aircraft + - all of + - all things considered + - alleviate + - allocate + - along the lines of + - already existing + - alternatively + - amazing + - ameliorate + - anticipate + - apparent + - appreciable + - as a matter of fact + - as a means of + - as far as I'm concerned + - as of yet + - as to + - as yet + - ascertain + - assistance + - at the present time + - at this time + - attain + - attributable to + - authorize + - because of the fact that + - belated + - benefit from + - bestow + - by means of + - by virtue of + - by virtue of the fact that + - cease + - close proximity + - commence + - comply with + - concerning + - consequently + - consolidate + - constitutes + - demonstrate + - depart + - designate + - discontinue + - due to the fact that + - each and every + - economical + - eliminate + - elucidate + - employ + - endeavor + - enumerate + - equitable + - equivalent + - evaluate + - evidenced + - exclusively + - expedite + - expend + - expiration + - facilitate + - factual evidence + - feasible + - finalize + - first and foremost + - for all intents and purposes + - for the most part + - for the purpose of + - forfeit + - formulate + - have a tendency to + - honest truth + - however + - if and when + - impacted + - implement + - in a manner of speaking + - in a timely manner + - in a very real sense + - in accordance with + - in addition + - in all likelihood + - in an effort to + - in between + - in excess of + - in lieu of + - in light of the fact that + - in many cases + - in my opinion + - in order to + - in regard to + - in some instances + - in terms of + - in the case of + - in the event that + - in the final analysis + - in the nature of + - in the near future + - in the process of + - inception + - incumbent upon + - indicate + - indication + - initiate + - irregardless + - is applicable to + - is authorized to + - is responsible for + - it is + - it is essential + - it seems that + - it was + - magnitude + - maximum + - methodology + - minimize + - minimum + - modify + - monitor + - multiple + - necessitate + - nevertheless + - not certain + - not many + - not often + - not unless + - not unlike + - notwithstanding + - null and void + - numerous + - objective + - obligate + - obtain + - on the contrary + - on the other hand + - one particular + - optimum + - overall + - owing to the fact that + - participate + - particulars + - pass away + - pertaining to + - point in time + - portion + - possess + - preclude + - previously + - prior to + - prioritize + - procure + - proficiency + - provided that + - purchase + - put simply + - readily apparent + - refer back + - regarding + - relocate + - remainder + - remuneration + - requirement + - reside + - residence + - retain + - satisfy + - shall + - should you wish + - similar to + - solicit + - span across + - strategize + - subsequent + - substantial + - successfully complete + - sufficient + - terminate + - the month of + - the point I am trying to make + - therefore + - time period + - took advantage of + - transmit + - transpire + - type of + - until such time as + - utilization + - utilize + - validate + - various different + - what I mean to say is + - whether or not + - with respect to + - with the exception of + - witnessed diff --git a/.github/workflows/styles/write-good/Weasel.yml b/.github/workflows/styles/write-good/Weasel.yml new file mode 100644 index 0000000000..e29391444b --- /dev/null +++ b/.github/workflows/styles/write-good/Weasel.yml @@ -0,0 +1,207 @@ +extends: existence +message: "'%s' is a weasel word!" +ignorecase: true +level: warning +tokens: + - absolutely + - accidentally + - additionally + - allegedly + - alternatively + - angrily + - anxiously + - approximately + - awkwardly + - badly + - barely + - beautifully + - blindly + - boldly + - bravely + - brightly + - briskly + - bristly + - bubbly + - busily + - calmly + - carefully + - carelessly + - cautiously + - cheerfully + - clearly + - closely + - coldly + - completely + - consequently + - correctly + - courageously + - crinkly + - cruelly + - crumbly + - cuddly + - currently + - daily + - daringly + - deadly + - definitely + - deliberately + - doubtfully + - dumbly + - eagerly + - early + - easily + - elegantly + - enormously + - enthusiastically + - equally + - especially + - eventually + - exactly + - exceedingly + - exclusively + - extremely + - fairly + - faithfully + - fatally + - fiercely + - finally + - fondly + - few + - foolishly + - fortunately + - frankly + - frantically + - generously + - gently + - giggly + - gladly + - gracefully + - greedily + - happily + - hardly + - hastily + - healthily + - heartily + - helpfully + - honestly + - hourly + - hungrily + - hurriedly + - immediately + - impatiently + - inadequately + - ingeniously + - innocently + - inquisitively + - interestingly + - irritably + - jiggly + - joyously + - justly + - kindly + - largely + - lately + - lazily + - likely + - literally + - lonely + - loosely + - loudly + - loudly + - luckily + - madly + - many + - mentally + - mildly + - monthly + - mortally + - mostly + - mysteriously + - neatly + - nervously + - nightly + - noisily + - normally + - obediently + - occasionally + - only + - openly + - painfully + - particularly + - patiently + - perfectly + - politely + - poorly + - powerfully + - presumably + - previously + - promptly + - punctually + - quarterly + - quickly + - quietly + - rapidly + - rarely + - really + - recently + - recklessly + - regularly + - remarkably + - relatively + - reluctantly + - repeatedly + - rightfully + - roughly + - rudely + - sadly + - safely + - selfishly + - sensibly + - seriously + - sharply + - shortly + - shyly + - significantly + - silently + - simply + - sleepily + - slowly + - smartly + - smelly + - smoothly + - softly + - solemnly + - sparkly + - speedily + - stealthily + - sternly + - stupidly + - substantially + - successfully + - suddenly + - surprisingly + - suspiciously + - swiftly + - tenderly + - tensely + - thoughtfully + - tightly + - timely + - truthfully + - unexpectedly + - unfortunately + - usually + - very + - victoriously + - violently + - vivaciously + - warmly + - waverly + - weakly + - wearily + - weekly + - wildly + - wisely + - worldly + - wrinkly + - yearly diff --git a/.github/workflows/styles/write-good/meta.json b/.github/workflows/styles/write-good/meta.json new file mode 100644 index 0000000000..a115d2886a --- /dev/null +++ b/.github/workflows/styles/write-good/meta.json @@ -0,0 +1,4 @@ +{ + "feed": "https://github.com/errata-ai/write-good/releases.atom", + "vale_version": ">=1.0.0" +} diff --git a/.github/workflows/vale-linting.yml.not-ready b/.github/workflows/vale-linting.yml similarity index 58% rename from .github/workflows/vale-linting.yml.not-ready rename to .github/workflows/vale-linting.yml index 18a83638f4..a70417db7d 100644 --- a/.github/workflows/vale-linting.yml.not-ready +++ b/.github/workflows/vale-linting.yml @@ -2,6 +2,7 @@ name: reviewdog on: pull_request: types: [opened, synchronize, reopened] + branches: [ main, 'v[0-9].[0-9]' ] jobs: vale: @@ -14,3 +15,14 @@ jobs: # Required, set by GitHub actions automatically: # https://docs.github.com/en/actions/security-guides/automatic-token-authentication#about-the-github_token-secret GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} + + markdownlint: + name: runner / markdownlint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - name: markdownlint + uses: reviewdog/action-markdownlint@v0 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + reporter: github-pr-review \ No newline at end of file diff --git a/vale.ini b/vale.ini new file mode 100644 index 0000000000..592abb902e --- /dev/null +++ b/vale.ini @@ -0,0 +1,12 @@ +StylesPath = ".github/styles" + +MinAlertLevel = suggestion + +Vocab = run-ai + +Packages = Microsoft, proselint, alex + +[*] +BasedOnStyles = Vale, Microsoft, proselint, alex, run-ai + +Vale.Terms = NO From 92c213a5a8d710a082bb6113d9a2714feae609d2 Mon Sep 17 00:00:00 2001 From: jasonnovichRunAI <124490127+jasonnovichRunAI@users.noreply.github.com> Date: Tue, 15 Aug 2023 13:24:45 +0300 Subject: [PATCH 16/58] whats new restructure as an example with lint test --- docs/home/hot-fixes/hot-fixes-2-13.md | 37 +++++++++ docs/home/{ => whats-new}/whats-new-2-10.md | 0 docs/home/{ => whats-new}/whats-new-2-12.md | 0 docs/home/{ => whats-new}/whats-new-2-13.md | 86 +++++---------------- docs/home/{ => whats-new}/whats-new-2-14.md | 0 docs/home/{ => whats-new}/whats-new-2-8.md | 29 +++---- docs/home/{ => whats-new}/whats-new-2-9.md | 0 docs/home/{ => whats-new}/whats-new-2020.md | 0 docs/home/{ => whats-new}/whats-new-2021.md | 0 docs/home/{ => whats-new}/whats-new-2022.md | 0 mkdocs.yml | 21 +++-- 11 files changed, 85 insertions(+), 88 deletions(-) create mode 100644 docs/home/hot-fixes/hot-fixes-2-13.md rename docs/home/{ => whats-new}/whats-new-2-10.md (100%) rename docs/home/{ => whats-new}/whats-new-2-12.md (100%) rename docs/home/{ => whats-new}/whats-new-2-13.md (86%) rename docs/home/{ => whats-new}/whats-new-2-14.md (100%) rename docs/home/{ => whats-new}/whats-new-2-8.md (93%) rename docs/home/{ => whats-new}/whats-new-2-9.md (100%) rename docs/home/{ => whats-new}/whats-new-2020.md (100%) rename docs/home/{ => whats-new}/whats-new-2021.md (100%) rename docs/home/{ => whats-new}/whats-new-2022.md (100%) diff --git a/docs/home/hot-fixes/hot-fixes-2-13.md b/docs/home/hot-fixes/hot-fixes-2-13.md new file mode 100644 index 0000000000..d9a9d923cd --- /dev/null +++ b/docs/home/hot-fixes/hot-fixes-2-13.md @@ -0,0 +1,37 @@ +# **Run:ai version 2.13** + +## **Version 2.13.7 - July 2023** + +### **New features** + + +* Added filters to the historic quota ratio widget on the *Quota management* dashboard. + +### **Fixed issues** + +| Internal ID | Description | +| ---------------------------- | ---- | +| RUN-11080 | Fixed an issue in OpenShift environments where log in via SSO with the `kubeadmin` user, gets blank pages for every page. | +| RUN-11119 | Fixed an issue where values that should be the *Order of priority* column are in the wrong column. | +| RUN-11120 | Fixed an issue where the *Projects* table does not show correct metrics when Run:ai version 2.13 is paired with a Run:ai 2.8 cluster. | +| RUN-11121 | Fixed an issue where the wrong over quota memory alert is shown in the *Quota management* pane in project edit form. | +| RUN-11272 | Fixed an issue in OpenShift environments where the selection in the cluster drop down in the main UI does not match the cluster selected on the login page. | + +## **Version 2.13.4 - July 20203** + +### **Fixed issues** + +| Internal ID | Description | +|-----------|--------------| +| RUN-11089 | Fixed an issue when creating an environment, commands in the *Runtime settings* pane and are not persistent and cannot be found in other assets (for example in a new *Training*). | + +## **Version 2.13.1 - July 2023** + +### **Release content** + + +* Made an improvement so that occurrences of labels that are not in use anymore are deleted. + +### **Fixed issues** + +N/A diff --git a/docs/home/whats-new-2-10.md b/docs/home/whats-new/whats-new-2-10.md similarity index 100% rename from docs/home/whats-new-2-10.md rename to docs/home/whats-new/whats-new-2-10.md diff --git a/docs/home/whats-new-2-12.md b/docs/home/whats-new/whats-new-2-12.md similarity index 100% rename from docs/home/whats-new-2-12.md rename to docs/home/whats-new/whats-new-2-12.md diff --git a/docs/home/whats-new-2-13.md b/docs/home/whats-new/whats-new-2-13.md similarity index 86% rename from docs/home/whats-new-2-13.md rename to docs/home/whats-new/whats-new-2-13.md index 5b5731deb1..c26e4c0e0d 100644 --- a/docs/home/whats-new-2-13.md +++ b/docs/home/whats-new/whats-new-2-13.md @@ -1,56 +1,4 @@ -# Run:ai version 2.13 - -## Version 2.13.7 - -### Release date - -July 2023 - -#### Release content - - -* Added filters to the historic quota ratio widget on the *Quota management* dashboard. - -#### Fixed issues - -| Internal ID | Description | -| ---------------------------- | ---- | -| RUN-11080 | Fixed an issue in OpenShift environments where log in via SSO with the `kubeadmin` user, gets blank pages for every page. | -| RUN-11119 | Fixed an issue where values that should be the *Order of priority* column are in the wrong column. | -| RUN-11120 | Fixed an issue where the *Projects* table does not show correct metrics when Run:ai version 2.13 is paired with a Run:ai 2.8 cluster. | -| RUN-11121 | Fixed an issue where the wrong over quota memory alert is shown in the *Quota management* pane in project edit form. | -| RUN-11272 | Fixed an issue in OpenShift environments where the selection in the cluster drop down in the main UI does not match the cluster selected on the login page. | - -## Version 2.13.4 - -### Release date - -July 2023 - -#### Fixed issues - -| Internal ID | Description | -|-----------|--------------| -| RUN-11089 | Fixed an issue when creating an environment, commands in the *Runtime settings* pane and are not persistent and cannot be found in other assets (for example in a new *Training*). | - -## Version 2.13.1 - -### Release date - -July 2023 - -#### Release content - - -* Made an improvement so that occurrences of labels that are not in use anymore are deleted. - -#### Fixed issues - -N/A - -## Version 2.13.0 - -### Release content +# **Version 2.13.0 - June 2023** This version contains features and fixes from previous versions starting with 2.9. Refer to the prior versions for specific features and fixes. For information about features, functionality, and fixed issues in previous versions see: @@ -58,18 +6,22 @@ This version contains features and fixes from previous versions starting with 2. * [What's new 2.10](whats-new-2-10.md) * [What's new 2.9](whats-new-2-9.md) -**Projects** +## **New features** + +The following new features and updates (enhancements, fixes, etc.) have been introduced in this release. + +### Projects * Improved the **Projects** UI for ease of use. **Projects** follows UI upgrades and changes that are designed to make setting up of components and assets easier for administrators and researchers. To configure a project, see [Projects](../admin/admin-ui-setup/project-setup.md). -**Dashboards** +### Dashboards * Added a new dashboard for **Quota management**, which provides an efficient means to monitor and manage resource utilization within the AI cluster. The dashboard filters the display of resource quotas based on *Departments*, *Projects*, and *Node pools*. For more information, see [Quota management dashboard](../admin/admin-ui-setup/dashboard-analysis.md#quota-management-dashboard). * Added to the **Overview dashboard**, the ability to filter the cluster by one or more node pools. For more information, see [Node pools](../Researcher/scheduling/using-node-pools.md). -**Nodes and Node pools** +### Nodes and Node pools * Run:ai scheduler supports 2 scheduling strategies: Bin Packing (default) and Spread. For more information, see [Scheduling strategies](../Researcher/scheduling/strategies.md). You can configure the scheduling strategy in the node pool level to improve the support of clusters with mixed types of resources and workloads. For configuration information, see [Creating new node pools](../Researcher/scheduling/using-node-pools.md#creating-new-node-pools). @@ -86,7 +38,7 @@ The association between workspaces and node pools is done using *Compute resourc * Added Node pool selection as part of the workload submission form. This allows researchers to quickly determine the list of node pools available and their priority. Priority is set by dragging and dropping them in the desired order of priority. In addition, when the node pool priority list is locked by a policy, the list isn't editable by the Researcher even if the workspace is created from a template or copied from another workspace. -**Time limit duration** +### Time limit duration * Improved the behavior of any workload time limit (for example, *Idle time limit*) so that the time limit will affect existing workloads that were created before the time limit was configured. This is an optional feature which provides help in handling situations where researchers leave sessions open even when they do not need to access the resources. For more information, see [Limit duration of interactive training jobs](../admin/admin-ui-setup/project-setup.md#limit-duration-of-interactive-and-training-jobs). @@ -94,7 +46,7 @@ The association between workspaces and node pools is done using *Compute resourc * Added time limits for training jobs per project. Administrators (Department Admin, Editor) can limit the duration of Run:ai Training jobs per Project using a specified time limit value. This capability can assist administrators to limit the duration and resources consumed over time by training jobs in specific projects. Each training job that reaches this duration will be terminated. -**Workload assets** +### Workload assets @@ -103,30 +55,30 @@ The association between workspaces and node pools is done using *Compute resourc * Added a search box for card galleries in any asset based workload creation form to provide an easy way to search for assets and resources. To filter use the asset name or one of the field values of the card. -**PVC data sources** +### PVC data sources * Added support for PVC block storage in the *New data source* form. In the *New data source* form for a new PVC data source, in the *Volume mode* field, select from *Filesystem* or *Block*. For more information, see [Create a PVC data source](../Researcher/user-interface/workspaces/create/create-ds.md#create-a-pvc-data-source). -**Credentials** +### Credentials * Added *Docker registry* to the *Credentials* menu. Users can create docker credentials for use in specific projects for image pulling. To configure credentials, see [Configuring credentials](../admin/admin-ui-setup/credentials-setup.md#configuring-credentials). -**Policies** +### Policies * Improved policy support by adding `DEFAULTS` in the `items` section in the policy. The `DEFAULTS` section sets the default behavior for items declared in this section. For example, this can be use to limit the submission of workloads only to existing PVCs. For more information and an example, see Policies, [Complex values](../admin/workloads/policies.md#complex-values). * Added support for making a PVC data source available to all projects. In the *New data source* form, when creating a new PVC data source, select *All* from the *Project* pane. -**Researcher API** +### Researcher API * Extended researcher's API to allow stopping and starting of workloads using the API. For more information, see [Submitting Workloads via HTTP/REST](../developer/cluster-api/submit-rest.md). -**Integrations** +### Integrations * Added support for Spark and Elastic jobs. For more information, see [Running Spark jobs with Run:ai](../admin/integration/spark.md#). @@ -138,24 +90,24 @@ The association between workspaces and node pools is done using *Compute resourc * Added support for XGBoost. XGBoost, which stands for Extreme Gradient Boosting, is a scalable, distributed gradient-boosted decision tree (GBDT) machine learning library. It provides parallel tree boosting and is the leading machine learning library for regression, classification, and ranking problems. For more information, see [runai submit-dist xgboost](../Researcher/cli-reference/runai-submit-dist-xgboost.md) -**Compatability** +### Compatibility * Added support for multiple OpenShift clusters. For configuration information, see [Installing additional Clusters](../admin/runai-setup/self-hosted/ocp/additional-clusters.md). -## Installation +### Installation * The manual process of upgrading Kubernetes CRDs is no longer needed when upgrading to the most recent version (2.13) of Run:ai. * From Run:ai 2.12 and above, the control-plane installation has been simplified and no longer requires the creation of a *backend values* file. Instead, install directly using `helm` as described in [Install the Run:ai Control Plane](../admin/runai-setup/self-hosted/k8s/backend.md#install-the-control-plane). * From Run:ai 2.12 and above, the air-gapped, control-plane installation now generates a `custom-env.yaml` values file during the [preparation](../admin/runai-setup/self-hosted/k8s/preparations.md#prepare-installation-artifacts) stage. This is used when installing the [control-plane](../admin/runai-setup/self-hosted/k8s/backend.md#install-the-control-plane). -### Known issues +## **Known issues** | Internal ID | Description | | :---------- | :---------------------------------- | | RUN-11005 | Incorrect error messages when trying to run `runai` CLI commands in an OpenShift environment. | | RUN-11009 | Incorrect error message when a user without permissions to tries to delete another user. | -### Fixed issues +## **Fixed issues** | Internal ID | Description | | :---------- | :----------------------------------------------------------------------------------------------------------------------------------------- | diff --git a/docs/home/whats-new-2-14.md b/docs/home/whats-new/whats-new-2-14.md similarity index 100% rename from docs/home/whats-new-2-14.md rename to docs/home/whats-new/whats-new-2-14.md diff --git a/docs/home/whats-new-2-8.md b/docs/home/whats-new/whats-new-2-8.md similarity index 93% rename from docs/home/whats-new-2-8.md rename to docs/home/whats-new/whats-new-2-8.md index ca2edfcf5a..77884ef2f4 100644 --- a/docs/home/whats-new-2-8.md +++ b/docs/home/whats-new/whats-new-2-8.md @@ -1,7 +1,8 @@ # Run:ai Version 2.8 ## Release Date - November 2022 + + November 2022 ## Release Content -* Added filters to the historic quota ratio widget on the *Quota management* dashboard. - -### **Fixed issues** - -| Internal ID | Description | -| ---------------------------- | ---- | -| RUN-11080 | Fixed an issue in OpenShift environments where log in via SSO with the `kubeadmin` user, gets blank pages for every page. | -| RUN-11119 | Fixed an issue where values that should be the *Order of priority* column are in the wrong column. | -| RUN-11120 | Fixed an issue where the *Projects* table does not show correct metrics when Run:ai version 2.13 is paired with a Run:ai 2.8 cluster. | -| RUN-11121 | Fixed an issue where the wrong over quota memory alert is shown in the *Quota management* pane in project edit form. | -| RUN-11272 | Fixed an issue in OpenShift environments where the selection in the cluster drop down in the main UI does not match the cluster selected on the login page. | - -## **Version 2.13.4 - July 20203** - -### **Fixed issues** - -| Internal ID | Description | -|-----------|--------------| -| RUN-11089 | Fixed an issue when creating an environment, commands in the *Runtime settings* pane and are not persistent and cannot be found in other assets (for example in a new *Training*). | - -## **Version 2.13.1 - July 2023** - -### **Release content** - - -* Made an improvement so that occurrences of labels that are not in use anymore are deleted. - -### **Fixed issues** - -N/A diff --git a/docs/home/whats-new/whats-new-2-10.md b/docs/home/whats-new-2-10.md similarity index 100% rename from docs/home/whats-new/whats-new-2-10.md rename to docs/home/whats-new-2-10.md diff --git a/docs/home/whats-new/whats-new-2-12.md b/docs/home/whats-new-2-12.md similarity index 100% rename from docs/home/whats-new/whats-new-2-12.md rename to docs/home/whats-new-2-12.md diff --git a/docs/home/whats-new/whats-new-2-13.md b/docs/home/whats-new-2-13.md similarity index 86% rename from docs/home/whats-new/whats-new-2-13.md rename to docs/home/whats-new-2-13.md index c26e4c0e0d..5b5731deb1 100644 --- a/docs/home/whats-new/whats-new-2-13.md +++ b/docs/home/whats-new-2-13.md @@ -1,4 +1,56 @@ -# **Version 2.13.0 - June 2023** +# Run:ai version 2.13 + +## Version 2.13.7 + +### Release date + +July 2023 + +#### Release content + + +* Added filters to the historic quota ratio widget on the *Quota management* dashboard. + +#### Fixed issues + +| Internal ID | Description | +| ---------------------------- | ---- | +| RUN-11080 | Fixed an issue in OpenShift environments where log in via SSO with the `kubeadmin` user, gets blank pages for every page. | +| RUN-11119 | Fixed an issue where values that should be the *Order of priority* column are in the wrong column. | +| RUN-11120 | Fixed an issue where the *Projects* table does not show correct metrics when Run:ai version 2.13 is paired with a Run:ai 2.8 cluster. | +| RUN-11121 | Fixed an issue where the wrong over quota memory alert is shown in the *Quota management* pane in project edit form. | +| RUN-11272 | Fixed an issue in OpenShift environments where the selection in the cluster drop down in the main UI does not match the cluster selected on the login page. | + +## Version 2.13.4 + +### Release date + +July 2023 + +#### Fixed issues + +| Internal ID | Description | +|-----------|--------------| +| RUN-11089 | Fixed an issue when creating an environment, commands in the *Runtime settings* pane and are not persistent and cannot be found in other assets (for example in a new *Training*). | + +## Version 2.13.1 + +### Release date + +July 2023 + +#### Release content + + +* Made an improvement so that occurrences of labels that are not in use anymore are deleted. + +#### Fixed issues + +N/A + +## Version 2.13.0 + +### Release content This version contains features and fixes from previous versions starting with 2.9. Refer to the prior versions for specific features and fixes. For information about features, functionality, and fixed issues in previous versions see: @@ -6,22 +58,18 @@ This version contains features and fixes from previous versions starting with 2. * [What's new 2.10](whats-new-2-10.md) * [What's new 2.9](whats-new-2-9.md) -## **New features** - -The following new features and updates (enhancements, fixes, etc.) have been introduced in this release. - -### Projects +**Projects** * Improved the **Projects** UI for ease of use. **Projects** follows UI upgrades and changes that are designed to make setting up of components and assets easier for administrators and researchers. To configure a project, see [Projects](../admin/admin-ui-setup/project-setup.md). -### Dashboards +**Dashboards** * Added a new dashboard for **Quota management**, which provides an efficient means to monitor and manage resource utilization within the AI cluster. The dashboard filters the display of resource quotas based on *Departments*, *Projects*, and *Node pools*. For more information, see [Quota management dashboard](../admin/admin-ui-setup/dashboard-analysis.md#quota-management-dashboard). * Added to the **Overview dashboard**, the ability to filter the cluster by one or more node pools. For more information, see [Node pools](../Researcher/scheduling/using-node-pools.md). -### Nodes and Node pools +**Nodes and Node pools** * Run:ai scheduler supports 2 scheduling strategies: Bin Packing (default) and Spread. For more information, see [Scheduling strategies](../Researcher/scheduling/strategies.md). You can configure the scheduling strategy in the node pool level to improve the support of clusters with mixed types of resources and workloads. For configuration information, see [Creating new node pools](../Researcher/scheduling/using-node-pools.md#creating-new-node-pools). @@ -38,7 +86,7 @@ The association between workspaces and node pools is done using *Compute resourc * Added Node pool selection as part of the workload submission form. This allows researchers to quickly determine the list of node pools available and their priority. Priority is set by dragging and dropping them in the desired order of priority. In addition, when the node pool priority list is locked by a policy, the list isn't editable by the Researcher even if the workspace is created from a template or copied from another workspace. -### Time limit duration +**Time limit duration** * Improved the behavior of any workload time limit (for example, *Idle time limit*) so that the time limit will affect existing workloads that were created before the time limit was configured. This is an optional feature which provides help in handling situations where researchers leave sessions open even when they do not need to access the resources. For more information, see [Limit duration of interactive training jobs](../admin/admin-ui-setup/project-setup.md#limit-duration-of-interactive-and-training-jobs). @@ -46,7 +94,7 @@ The association between workspaces and node pools is done using *Compute resourc * Added time limits for training jobs per project. Administrators (Department Admin, Editor) can limit the duration of Run:ai Training jobs per Project using a specified time limit value. This capability can assist administrators to limit the duration and resources consumed over time by training jobs in specific projects. Each training job that reaches this duration will be terminated. -### Workload assets +**Workload assets** @@ -55,30 +103,30 @@ The association between workspaces and node pools is done using *Compute resourc * Added a search box for card galleries in any asset based workload creation form to provide an easy way to search for assets and resources. To filter use the asset name or one of the field values of the card. -### PVC data sources +**PVC data sources** * Added support for PVC block storage in the *New data source* form. In the *New data source* form for a new PVC data source, in the *Volume mode* field, select from *Filesystem* or *Block*. For more information, see [Create a PVC data source](../Researcher/user-interface/workspaces/create/create-ds.md#create-a-pvc-data-source). -### Credentials +**Credentials** * Added *Docker registry* to the *Credentials* menu. Users can create docker credentials for use in specific projects for image pulling. To configure credentials, see [Configuring credentials](../admin/admin-ui-setup/credentials-setup.md#configuring-credentials). -### Policies +**Policies** * Improved policy support by adding `DEFAULTS` in the `items` section in the policy. The `DEFAULTS` section sets the default behavior for items declared in this section. For example, this can be use to limit the submission of workloads only to existing PVCs. For more information and an example, see Policies, [Complex values](../admin/workloads/policies.md#complex-values). * Added support for making a PVC data source available to all projects. In the *New data source* form, when creating a new PVC data source, select *All* from the *Project* pane. -### Researcher API +**Researcher API** * Extended researcher's API to allow stopping and starting of workloads using the API. For more information, see [Submitting Workloads via HTTP/REST](../developer/cluster-api/submit-rest.md). -### Integrations +**Integrations** * Added support for Spark and Elastic jobs. For more information, see [Running Spark jobs with Run:ai](../admin/integration/spark.md#). @@ -90,24 +138,24 @@ The association between workspaces and node pools is done using *Compute resourc * Added support for XGBoost. XGBoost, which stands for Extreme Gradient Boosting, is a scalable, distributed gradient-boosted decision tree (GBDT) machine learning library. It provides parallel tree boosting and is the leading machine learning library for regression, classification, and ranking problems. For more information, see [runai submit-dist xgboost](../Researcher/cli-reference/runai-submit-dist-xgboost.md) -### Compatibility +**Compatability** * Added support for multiple OpenShift clusters. For configuration information, see [Installing additional Clusters](../admin/runai-setup/self-hosted/ocp/additional-clusters.md). -### Installation +## Installation * The manual process of upgrading Kubernetes CRDs is no longer needed when upgrading to the most recent version (2.13) of Run:ai. * From Run:ai 2.12 and above, the control-plane installation has been simplified and no longer requires the creation of a *backend values* file. Instead, install directly using `helm` as described in [Install the Run:ai Control Plane](../admin/runai-setup/self-hosted/k8s/backend.md#install-the-control-plane). * From Run:ai 2.12 and above, the air-gapped, control-plane installation now generates a `custom-env.yaml` values file during the [preparation](../admin/runai-setup/self-hosted/k8s/preparations.md#prepare-installation-artifacts) stage. This is used when installing the [control-plane](../admin/runai-setup/self-hosted/k8s/backend.md#install-the-control-plane). -## **Known issues** +### Known issues | Internal ID | Description | | :---------- | :---------------------------------- | | RUN-11005 | Incorrect error messages when trying to run `runai` CLI commands in an OpenShift environment. | | RUN-11009 | Incorrect error message when a user without permissions to tries to delete another user. | -## **Fixed issues** +### Fixed issues | Internal ID | Description | | :---------- | :----------------------------------------------------------------------------------------------------------------------------------------- | diff --git a/docs/home/whats-new/whats-new-2-14.md b/docs/home/whats-new-2-14.md similarity index 100% rename from docs/home/whats-new/whats-new-2-14.md rename to docs/home/whats-new-2-14.md diff --git a/docs/home/whats-new/whats-new-2-8.md b/docs/home/whats-new-2-8.md similarity index 93% rename from docs/home/whats-new/whats-new-2-8.md rename to docs/home/whats-new-2-8.md index 77884ef2f4..ca2edfcf5a 100644 --- a/docs/home/whats-new/whats-new-2-8.md +++ b/docs/home/whats-new-2-8.md @@ -1,8 +1,7 @@ # Run:ai Version 2.8 ## Release Date - - November 2022 + November 2022 ## Release Content ### Job Lifecycle @@ -344,9 +346,11 @@ runai submit --job-name-prefix -i gcr.io/run-ai-demo/quickstart -g 1 ### Network + #### --host-ipc @@ -371,17 +375,17 @@ runai submit --job-name-prefix -i gcr.io/run-ai-demo/quickstart -g 1 > * `nodeport` > * `external-url` > -> This flag can be used both in the old format and the new format. You cannot mix the formats. See the following examples: +> This flag can be used both in the standard format which uses command flag for all the options. > ->OLD FORMAT: (still works) +> For example: > ->`runai submit test-jup -p team-a -i gcr.io/run-ai-demo/jupyter-tensorboard --service-type external-url --port 8888` +> `runai submit test-jup -p team-a -i gcr.io/run-ai-demo/jupyter-tensorboard --service-type external-url --port 8888` > ->`runai submit test-np -p team-a -i ubuntu --service-type nodeport --port 30000:7070` +> `runai submit test-np -p team-a -i ubuntu --service-type nodeport --port 30000:7070` > ->--- +> However, you can also use the newer format, where the options are listed in CSV style using multiple instances of the same option and commas to seperate the values for them. > ->NEW FORMAT: +> For example: > >`runai submit test-np -p team-a -i ubuntu --service-type nodeport,port=30000:7070 --service-type external-url,port=88880` > From 0c835a99185e497dabea40f7abe5930c9c990c66 Mon Sep 17 00:00:00 2001 From: jasonnovichRunAI <124490127+jasonnovichRunAI@users.noreply.github.com> Date: Thu, 17 Aug 2023 15:31:34 +0300 Subject: [PATCH 29/58] [RUN-10485] reply to comments --- docs/Researcher/cli-reference/runai-submit.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/Researcher/cli-reference/runai-submit.md b/docs/Researcher/cli-reference/runai-submit.md index 2ec00ef37d..c0975f72eb 100644 --- a/docs/Researcher/cli-reference/runai-submit.md +++ b/docs/Researcher/cli-reference/runai-submit.md @@ -375,22 +375,22 @@ runai submit --job-name-prefix -i gcr.io/run-ai-demo/quickstart -g 1 > * `nodeport` > * `external-url` > -> This flag can be used both in the standard format which uses command flag for all the options. +> This flag now supports more than one `service-type`. Multiple service types are supported in CSV style using multiple instances of the same option and commas to separate the values for them. > > For example: > -> `runai submit test-jup -p team-a -i gcr.io/run-ai-demo/jupyter-tensorboard --service-type external-url --port 8888` +>`runai submit test-np -p team-a -i ubuntu --service-type nodeport,port=30000:7070 --service-type external-url,port=88880` > -> `runai submit test-np -p team-a -i ubuntu --service-type nodeport --port 30000:7070` +>`runai submit test-np -p team-a -i ubuntu --service-type nodeport,port=30000:7070,port=9090 --service-type external-url,port=8888`> > -> However, you can also use the newer format, where the options are listed in CSV style using multiple instances of the same option and commas to seperate the values for them. +> This flag can also be used in the standard format, which uses a command flag for all the options and can only support one service type. > > For example: > ->`runai submit test-np -p team-a -i ubuntu --service-type nodeport,port=30000:7070 --service-type external-url,port=88880` +> `runai submit test-jup -p team-a -i gcr.io/run-ai-demo/jupyter-tensorboard --service-type external-url --port 8888` +> +> `runai submit test-np -p team-a -i ubuntu --service-type nodeport --port 30000:7070` > ->`runai submit test-np -p team-a -i ubuntu --service-type nodeport,port=30000:7070,port=9090 --service-type external-url,port=8888` ->``` #### --custom-url `` From 65024e071e07f81659b379c839d4338a3a511c6a Mon Sep 17 00:00:00 2001 From: jasonnovichRunAI <124490127+jasonnovichRunAI@users.noreply.github.com> Date: Sun, 27 Aug 2023 10:04:28 +0300 Subject: [PATCH 30/58] Implemented corrections --- docs/Researcher/cli-reference/runai-submit.md | 121 +++++++++--------- 1 file changed, 59 insertions(+), 62 deletions(-) diff --git a/docs/Researcher/cli-reference/runai-submit.md b/docs/Researcher/cli-reference/runai-submit.md index c0975f72eb..ca1282de84 100644 --- a/docs/Researcher/cli-reference/runai-submit.md +++ b/docs/Researcher/cli-reference/runai-submit.md @@ -1,4 +1,4 @@ -## Description +# Description Submit a Run:ai Job for execution. @@ -39,7 +39,7 @@ Start a Training Job ```console runai submit --name train1 -i gcr.io/run-ai-demo/quickstart -g 1 ``` - + (see: [training Quickstart](../Walkthroughs/walkthrough-train.md)). Use GPU Fractions @@ -83,7 +83,6 @@ Submit a Job without a name with a pre-defined prefix and an incremental index s runai submit --job-name-prefix -i gcr.io/run-ai-demo/quickstart -g 1 ``` - ## Options ### Job Type @@ -92,34 +91,33 @@ runai submit --job-name-prefix -i gcr.io/run-ai-demo/quickstart -g 1 > Mark this Job as interactive. - - ### Job Lifecycle #### --completions < int > > Number of successful pods required for this job to be completed. Used with HPO. - + #### --parallelism < int > +> > Number of pods to run in parallel at any given time. Used with HPO. - + #### --preemptible +> > Interactive preemptible jobs can be scheduled above guaranteed quota but may be reclaimed at any time. ### Naming and Shortcuts #### --job-name-prefix `` +> > The prefix to use to automatically generate a Job name with an incremental index. When a Job name is omitted Run:ai will generate a Job name. The optional `--job-name-prefix flag` creates Job names with the provided prefix. #### --name `` +> > The name of the Job. #### --template `` +> > Load default values from a workload. ### Container Definition @@ -134,13 +132,13 @@ runai submit --job-name-prefix -i gcr.io/run-ai-demo/quickstart -g 1 #### --attach -> Default is false. If set to true, wait for the Pod to start running. When the pod starts running, attach to the Pod. The flag is equivalent to the command [runai attach](runai-attach.md). +> Default is false. If set to true, wait for the Pod to start running. When the pod starts running, attach to the Pod. The flag is equivalent to the command [runai attach](runai-attach.md). > > The --attach flag also sets `--tty` and `--stdin` to true. #### --command -> Overrides the image's entry point with the command supplied after '--'. When **not** using the `--command` flag, the entry point will **not** be overrided and the string after `--` will be appended as arguments to the entry point command. +> Overrides the image's entry point with the command supplied after '--'. When **not** using the `--command` flag, the entry point will **not** be overrided and the string after `--` will be appended as arguments to the entry point command. > > Example: > @@ -152,26 +150,26 @@ runai submit --job-name-prefix -i gcr.io/run-ai-demo/quickstart -g 1 > Create a temporary home directory for the user in the container. Data saved in this directory will not be saved when the container exits. For more information see [non root containers](../../admin/runai-setup/config/non-root-containers.md). -#### -e ` | --environment `` +#### -e `` | --environment `` -> Define environment variables to be set in the container. To set multiple values add the flag multiple times (`-e BATCH_SIZE=50 -e LEARNING_RATE=0.2`). +> Define environment variables to be set in the container. To set multiple values add the flag multiple times (`-e BATCH_SIZE=50 -e LEARNING_RATE=0.2`). #### --image `` | -i `` -> Image to use when creating the container for this Job +> Image to use when creating the container for this Job #### --image-pull-policy `` -> Pulling policy of the image when starting a container. Options are: +> Pulling policy of the image when starting a container. Options are: > -> - `Always` (default): force image pulling to check whether local image already exists. If the image already exists locally and has the same digest, then the image will not be downloaded. -> - `IfNotPresent`: the image is pulled only if it is not already present locally. -> - `Never`: the image is assumed to exist locally. No attempt is made to pull the image. +> * `Always` (default): force image pulling to check whether local image already exists. If the image already exists locally and has the same digest, then the image will not be downloaded. +> * `IfNotPresent`: the image is pulled only if it is not already present locally. +> * `Never`: the image is assumed to exist locally. No attempt is made to pull the image. > > For more information see Kubernetes [documentation](https://kubernetes.io/docs/concepts/configuration/overview/#container-images){target=_blank}. -#### -l | --label `` +#### -l | --label `` > Set labels variables in the container. @@ -185,15 +183,15 @@ runai submit --job-name-prefix -i gcr.io/run-ai-demo/quickstart -g 1 #### --stdin -> Keep stdin open for the container(s) in the pod, even if nothing is attached.is attached. - +> Keep stdin open for the container(s) in the pod, even if nothing is attached.is attached. + #### -t | --tty -> Allocate a pseudo-TTY. +> Allocate a pseudo-TTY. #### --working-dir `` -> Starts the container with the specified directory as the current directory. +> Starts the container with the specified directory as the current directory. ### Resource Allocation @@ -205,7 +203,7 @@ runai submit --job-name-prefix -i gcr.io/run-ai-demo/quickstart -g 1 > Limitations on the number of CPUs consumed by the Job (for example 0.5, 1). The system guarantees that this Job will not be able to consume more than this amount of CPUs. -#### --extended-resource ` +#### --extended-resource `` > Request access to extended resource, syntax ` = < resource_quantity >` @@ -219,11 +217,11 @@ runai submit --job-name-prefix -i gcr.io/run-ai-demo/quickstart -g 1 #### --memory `` -> CPU memory to allocate for this Job (1G, 20M, .etc). The Job will receive **at least** this amount of memory. Note that the Job will **not** be scheduled unless the system can guarantee this amount of memory to the Job. +> CPU memory to allocate for this Job (1G, 20M, .etc). The Job will receive **at least** this amount of memory. Note that the Job will **not** be scheduled unless the system can guarantee this amount of memory to the Job. -#### --memory-limit ` +#### --memory-limit `` -> CPU memory to allocate for this Job (1G, 20M, .etc). The system guarantees that this Job will not be able to consume more than this amount of memory. The Job will receive an error when trying to allocate more memory than this limit. +> CPU memory to allocate for this Job (1G, 20M, .etc). The system guarantees that this Job will not be able to consume more than this amount of memory. The Job will receive an error when trying to allocate more memory than this limit. #### --mig-profile `` @@ -234,7 +232,7 @@ runai submit --job-name-prefix -i gcr.io/run-ai-demo/quickstart -g 1 #### --backoff-limit `` > The number of times the Job will be retried before failing. The default is 6. This flag will only work with training workloads (when the `--interactive` flag is not specified). - + ### Storage #### --git-sync `` @@ -266,23 +264,23 @@ runai submit --job-name-prefix -i gcr.io/run-ai-demo/quickstart -g 1 > > The 2 syntax types of this command are mutually exclusive. You can either use the first or second form, but not a mixture of both. > -> **Storage_Class_Name** is a storage class name that can be obtained by running `kubectl get storageclasses.storage.k8s.io`. This parameter may be omitted if there is a single storage class in the system, or you are using the default storage class. +> **Storage_Class_Name** is a storage class name that can be obtained by running `kubectl get storageclasses.storage.k8s.io`. This parameter may be omitted if there is a single storage class in the system, or you are using the default storage class. > > **Size** is the volume size you want to allocate. See [Kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/){target=_blank} for how to specify volume sizes > > **Container_Mount_Path**. A path internal to the container where the storage will be mounted > > **Pvc_Name**. The name of a pre-existing [Persistent Volume Claim](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#dynamic){target=_blank} to mount into the container -> +> > Examples: > -> > `--pvc :3Gi:/tmp/john:ro` - Allocate `3GB` from the default Storage class. Mount it to `/tmp/john` as read-only +> > `--pvc :3Gi:/tmp/john:ro` - Allocate `3GB` from the default Storage class. Mount it to `/tmp/john` as read-only > -> > `--pvc my-storage:3Gi:/tmp/john:ro` - Allocate `3GB` from the `my-storage` storage class. Mount it to /tmp/john as read-only +> > `--pvc my-storage:3Gi:/tmp/john:ro` - Allocate `3GB` from the `my-storage` storage class. Mount it to /tmp/john as read-only > -> > `--pvc :3Gi:/tmp/john` - Allocate `3GB` from the default storage class. Mount it to `/tmp/john` as read-write +> > `--pvc :3Gi:/tmp/john` - Allocate `3GB` from the default storage class. Mount it to `/tmp/john` as read-write > -> > `--pvc my-pvc:/tmp/john` - Use a Persistent Volume Claim named `my-pvc`. Mount it to `/tmp/john` as read-write +> > `--pvc my-pvc:/tmp/john` - Use a Persistent Volume Claim named `my-pvc`. Mount it to `/tmp/john` as read-write > > > `--pvc my-pvc-2:/tmp/john:ro` - Use a Persistent Volume Claim named `my-pvc-2`. Mount it to `/tmp/john` as read-only @@ -290,11 +288,11 @@ runai submit --job-name-prefix -i gcr.io/run-ai-demo/quickstart -g 1 > Mount a persistent volume. You must include a `claimname` and `path`. > -> - **claim name**—The name of the persistent colume claim. Can be obtained by running +> * **claim name**—The name of the persistent colume claim. Can be obtained by running > > `kubectl get storageclasses.storage.k8s.io` > -> - **path**—the path internal to the container where the storage will be mounted +> * **path**—the path internal to the container where the storage will be mounted > > Use the format: > @@ -304,17 +302,17 @@ runai submit --job-name-prefix -i gcr.io/run-ai-demo/quickstart -g 1 > Mount a persistent volume claim (PVC). If the PVC does not exist, it will be created based on the parameters entered. If a PVC exists, it will be used with its defined attributes and the parameters in the command will be ignored. > -> - **claim name**—The name of the persistent colume claim. -> - **storage class**—A storage class name that can be obtained by running +> * **claim name**—The name of the persistent colume claim. +> * **storage class**—A storage class name that can be obtained by running > > > `kubectl get storageclasses.storage.k8s.io.` > > > `storageclass` may be omitted if there is a single storage class in the system, or you are using the default storage class. > -> - **size**—The volume size you want to allocate for the PVC when creating it. See [Kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/){target=_blank} to specify volume sizes. -> - **accessmode**—The description of thr desired volume capabilities for the PVC. -> - **ro**—Mount the PVC with read-only access. -> - **ephemeral**—The PVC will be created as volatile temporary storage which is only present during the running lifetime of the job. +> * **size**—The volume size you want to allocate for the PVC when creating it. See [Kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/){target=_blank} to specify volume sizes. +> * **accessmode**—The description of thr desired volume capabilities for the PVC. +> * **ro**—Mount the PVC with read-only access. +> * **ephemeral**—The PVC will be created as volatile temporary storage which is only present during the running lifetime of the job. > > Use the format: > @@ -323,11 +321,11 @@ runai submit --job-name-prefix -i gcr.io/run-ai-demo/quickstart -g 1 #### --s3 `` > Mount an S3 compatible storage into the container running the job. The parameter should follow the syntax: -> +> > `bucket=BUCKET,key=KEY,secret=SECRET,url=URL,target=TARGET_PATH` > > All the fields, except url=URL, are mandatory. Default for url is -> +> > `url=https://s3.amazon.com` #### -v | --volume 'Source:Container_Mount_Path:[ro]:[nfs-host]' @@ -336,12 +334,12 @@ runai submit --job-name-prefix -i gcr.io/run-ai-demo/quickstart -g 1 > > Examples: > -> `-v /raid/public/john/data:/root/data:ro` -> +> `-v /raid/public/john/data:/root/data:ro` +> > Mount /root/data to local path /raid/public/john/data for read-only access. > -> `-v /public/data:/root/data::nfs.example.com` -> +> `-v /public/data:/root/data::nfs.example.com` +> > Mount /root/data to NFS path /public/data on NFS server nfs.example.com for read-write access. ### Network @@ -354,9 +352,9 @@ runai submit --job-name-prefix -i gcr.io/run-ai-demo/quickstart -g 1 #### --host-ipc -> Use the host's _ipc_ namespace. Controls whether the pod containers can share the host IPC namespace. IPC (POSIX/SysV IPC) namespace provides separation of named shared memory segments, semaphores, and message queues. +> Use the host's *ipc* namespace. Controls whether the pod containers can share the host IPC namespace. IPC (POSIX/SysV IPC) namespace provides separation of named shared memory segments, semaphores, and message queues. > Shared memory segments are used to accelerate inter-process communication at memory speed, rather than through pipes or the network stack. -> +> > For further information see [docker run reference](https://docs.docker.com/engine/reference/run/) documentation. #### --host-network @@ -372,16 +370,16 @@ runai submit --job-name-prefix -i gcr.io/run-ai-demo/quickstart -g 1 > External access type to interactive jobs. Options are: > -> * `nodeport` -> * `external-url` +> * `nodeport` +> * `external-url` > > This flag now supports more than one `service-type`. Multiple service types are supported in CSV style using multiple instances of the same option and commas to separate the values for them. > > For example: > ->`runai submit test-np -p team-a -i ubuntu --service-type nodeport,port=30000:7070 --service-type external-url,port=88880` +>`runai submit test-np -p team-a -i ubuntu --service-type nodeport,port=30000:7070 --service-type external-url,port=30001` > ->`runai submit test-np -p team-a -i ubuntu --service-type nodeport,port=30000:7070,port=9090 --service-type external-url,port=8888`> +>`runai submit test-np -p team-a -i ubuntu --service-type nodeport,port=30000:7070,port=9090 --service-type external-url,port=8888` > > This flag can also be used in the standard format, which uses a command flag for all the options and can only support one service type. > @@ -404,7 +402,7 @@ runai submit --job-name-prefix -i gcr.io/run-ai-demo/quickstart -g 1 #### --run-as-user -> Run in the context of the current user running the Run:ai command rather than the root user. While the default container user is *root* (same as in Docker), this command allows you to submit a Job running under your Linux user. This would manifest itself in access to operating system resources, in the owner of new folders created under shared directories, etc. Alternatively, if your cluster is connected to Run:ai via SAML, you can map the container to use the Linux UID/GID which is stored in the organization's directory. For more information see [non root containers](../../admin/runai-setup/config/non-root-containers.md). +> Run in the context of the current user running the Run:ai command rather than the root user. While the default container user is *root* (same as in Docker), this command allows you to submit a Job running under your Linux user. This would manifest itself in access to operating system resources, in the owner of new folders created under shared directories, etc. Alternatively, if your cluster is connected to Run:ai via SAML, you can map the container to use the Linux UID/GID which is stored in the organization's directory. For more information see [non root containers](../../admin/runai-setup/config/non-root-containers.md). ### Scheduling @@ -415,11 +413,11 @@ runai submit --job-name-prefix -i gcr.io/run-ai-demo/quickstart -g 1 #### --node-type `` -> Allows defining specific Nodes (machines) or a group of Nodes on which the workload will run. To use this feature your Administrator will need to label nodes as explained here: [Limit a Workload to a Specific Node Group](../../admin/researcher-setup/limit-to-node-group.md). +> Allows defining specific Nodes (machines) or a group of Nodes on which the workload will run. To use this feature your Administrator will need to label nodes as explained here: [Limit a Workload to a Specific Node Group](../../admin/researcher-setup/limit-to-node-group.md). #### --toleration `` -> Specify one or more toleration criteria, to ensure that the workload is not scheduled onto an inappropriate node. +> Specify one or more toleration criteria, to ensure that the workload is not scheduled onto an inappropriate node. > This is done by matching the workload tolerations to the taints defined for each node. For further details see Kubernetes > [Taints and Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/){target=_blank} Guide. > @@ -452,6 +450,5 @@ Note that the submit call may use a *policy* to provide defaults to any of the a ## See Also -* See any of the Quickstart documents [here:](../Walkthroughs/quickstart-overview.md). -* See [policy configuration](../../admin/workloads/policies.md) for a description on how policies work. - +* See any of the Quickstart documents [here:](../Walkthroughs/quickstart-overview.md). +* See [policy configuration](../../admin/workloads/policies.md) for a description on how policies work. From 5061e9c8c97370014b448ead3e9ebc91711eead5 Mon Sep 17 00:00:00 2001 From: jasonnovichRunAI <124490127+jasonnovichRunAI@users.noreply.github.com> Date: Sun, 27 Aug 2023 13:24:11 +0300 Subject: [PATCH 31/58] add optional param and corrected param term --- docs/Researcher/cli-reference/runai-submit.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/Researcher/cli-reference/runai-submit.md b/docs/Researcher/cli-reference/runai-submit.md index ca1282de84..988cfc532f 100644 --- a/docs/Researcher/cli-reference/runai-submit.md +++ b/docs/Researcher/cli-reference/runai-submit.md @@ -373,15 +373,15 @@ runai submit --job-name-prefix -i gcr.io/run-ai-demo/quickstart -g 1 > * `nodeport` > * `external-url` > -> This flag now supports more than one `service-type`. Multiple service types are supported in CSV style using multiple instances of the same option and commas to separate the values for them. +> This flag now supports more than one `service-type`. Multiple service types are supported in CSV style using multiple instances of the same option and commas to separate the values for them. You can also add the optional parameter `custom-url` to the command. > > For example: > >`runai submit test-np -p team-a -i ubuntu --service-type nodeport,port=30000:7070 --service-type external-url,port=30001` > ->`runai submit test-np -p team-a -i ubuntu --service-type nodeport,port=30000:7070,port=9090 --service-type external-url,port=8888` +>`runai submit test-np -p team-a -i ubuntu --service-type nodeport,port=30000:7070,port=9090 --service-type external-url, --service-type external-url,port=8080,custom-url=https://my.domain.com/url` > -> This flag can also be used in the standard format, which uses a command flag for all the options and can only support one service type. +> This flag can also be used in the standard format, which uses a command flag for all the options and can only support one service type. Each time `--service-type` is used, you need to use a service name (for example `external url`). > > For example: > From f6535cccf8cf1b2f524d1db49f14eb7455f39186 Mon Sep 17 00:00:00 2001 From: jasonnovichRunAI <124490127+jasonnovichRunAI@users.noreply.github.com> Date: Mon, 28 Aug 2023 11:14:05 +0300 Subject: [PATCH 32/58] corrected commands --- docs/Researcher/cli-reference/runai-submit.md | 28 +++++++++---------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/docs/Researcher/cli-reference/runai-submit.md b/docs/Researcher/cli-reference/runai-submit.md index 988cfc532f..a770179632 100644 --- a/docs/Researcher/cli-reference/runai-submit.md +++ b/docs/Researcher/cli-reference/runai-submit.md @@ -362,37 +362,35 @@ runai submit --job-name-prefix -i gcr.io/run-ai-demo/quickstart -g 1 > Use the host's network stack inside the container. > For further information see [docker run reference](https://docs.docker.com/engine/reference/run/)documentation. -#### --port `` - -> Expose ports from the Job container. - #### -s | --service-type `` -> External access type to interactive jobs. Options are: -> -> * `nodeport` -> * `external-url` +> External access type to jobs. Options are: > -> This flag now supports more than one `service-type`. Multiple service types are supported in CSV style using multiple instances of the same option and commas to separate the values for them. You can also add the optional parameter `custom-url` to the command. +> * `nodeport` - add one or more ports using `--port`. +> * `external-url` - add one port and an optional custom URL using `--custom-url`. > > For example: > ->`runai submit test-np -p team-a -i ubuntu --service-type nodeport,port=30000:7070 --service-type external-url,port=30001` +> `runai submit test-jup -p team-a -i gcr.io/run-ai-demo/jupyter-tensorboard --service-type external-url --port 8888` > ->`runai submit test-np -p team-a -i ubuntu --service-type nodeport,port=30000:7070,port=9090 --service-type external-url, --service-type external-url,port=8080,custom-url=https://my.domain.com/url` +> `runai submit test-np -p team-a -i ubuntu --service-type nodeport --port 30000:7070` > -> This flag can also be used in the standard format, which uses a command flag for all the options and can only support one service type. Each time `--service-type` is used, you need to use a service name (for example `external url`). +> This flag supports more than one `service-type`. Multiple service types are supported in CSV style using multiple instances of the same option and commas to separate the values for them. > > For example: > -> `runai submit test-jup -p team-a -i gcr.io/run-ai-demo/jupyter-tensorboard --service-type external-url --port 8888` +>`runai submit test-np -p team-a -i ubuntu --service-type nodeport,port=30000:7070 --service-type external-url,port=30001` > -> `runai submit test-np -p team-a -i ubuntu --service-type nodeport --port 30000:7070` +>`runai submit test-np -p team-a -i ubuntu --service-type nodeport,port=30000:7070,port=9090 --service-type external-url,port=8080,custom-url=https://my.domain.com/url` > +#### --port `` + +> Expose ports from the Job container. You can use a port number (for example 9090) or use the numbers of `hostport:containerport` (for example, 30000:7070). + #### --custom-url `` -> An optional argument that specifies a custom URL when using the `external URL` service type. If not provided, the system will generate a URL automatically. +> An optional argument that specifies a custom URL when using the `external-url` service type. If not provided, the system will generate a URL automatically. ### Access Control From fe108d1c0701da927c8c998b5d5328e0981618fa Mon Sep 17 00:00:00 2001 From: jasonnovichRunAI <124490127+jasonnovichRunAI@users.noreply.github.com> Date: Mon, 28 Aug 2023 11:20:16 +0300 Subject: [PATCH 33/58] new table include L2 researcher --- docs/admin/runai-setup/access-control/rbac.md | 56 +++++++++---------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/docs/admin/runai-setup/access-control/rbac.md b/docs/admin/runai-setup/access-control/rbac.md index 889db164c8..bddfdb73d2 100644 --- a/docs/admin/runai-setup/access-control/rbac.md +++ b/docs/admin/runai-setup/access-control/rbac.md @@ -16,33 +16,33 @@ A *Subject* is an entity that receives the rule. *Subjects* are: ### Roles -A role is a combination of entities and actions. Run:ai supports the following roles and actions: - -| Managed Entity | System Admin (1) | Department Admin (4) | Editor (5) | Research Manager | Researcher | ML Eng. | Viewer | Researcher L1 | Environments Admin | Data Sources Admin | Compute Resources Admin | Templates Admin | Department Viewer | -|:-|:-|:-|:-|:-|:-|:-|:-|:-|:-|:-|:-|:-|:-| -| Create local users and applications | CRUD | CRUD | | | | | | | | | | | | -| Assign Users/Groups/Apps to Roles with scopes (Departments, Projects) | CRUD | CRUD | CRUD | | | | | | | | | | | -| Roles | CRUD | R | R | | | | | | | | | | | -| Departments | CRUD | R (6) | CRUD | | | R | R | | R | R | R | R | R | -| Projects | CRUD | CRUD | CRUD | R (2) (3) | R | R | R | R | R | R | R | R | R | -| Jobs | CRUD | CRUD | CRUD | R | CRUD | | R | CRUD | R | R | R | R | R | -| Deployments | CRUD | CRUD | R | | | CRUD | R | | | | | | R | -| Workspaces | CRUD | CRUD | CRUD | R | CRUD | | R | CRUD | R | R | R | R | R | -| Trainings | CRUD | CRUD | CRUD | R | CRUD | | R | CRUD | R | R | R | R | R | -| Environments | CRUD | CRUD | CRUD | CRUD | CRUD | | R | R | CRUD | R | R | R | R | -| Data Sources | CRUD | CRUD | CRUD | CRUD | CRUD | | R | R | R | CRUD | R | R | R | -| Compute Resources | CRUD | CRUD | CRUD | CRUD | CRUD | | R | R | R | R | CRUD | R | R | -| Templates | CRUD | CRUD | CRUD | CRUD | CRUD | | R | R | R | R | R | CRUD | R | -| Policies (7) | CRUD | CRUD | R | R | R | R | R | R | R | R | R | R | R | -| Clusters | CRUD | R | R | R | R | R | R | R | R | R | R | R | R | -| Node Pools | CRUD | R | R | | | R | R | | | | | | | -| Nodes | R | R | R | | | R | R | | | | | | | -| Settings.General | CRUD | | | | | | | | | | | | | -| Credentials (Settings.Cre...) | CRUD | R | R | R | R | R | R | R | | R | | | | -| Events History | R | | | | | | | | | | | | | -| Dashboard.Overview | R | R | R | R | R | R | R | R | R | R | R | R | R | -| Dashboards.Analytics | R | R | R | R | R | R | R | R | R | R | R | R | R | -| Dashboards.Consumption | R | R | | | | | | | | | | | | +A role is a combination of entities and actions. Run:ai supports the following roles and actions within the user's granted scope: + +| Managed Entity | System Admin (1) | Department Admin (4) | Editor (5) | Research Manager | Researcher | ML Eng. | Viewer | Researcher L1 | Researcher L2 | Environments Admin | Data Sources Admin | Compute Resources Admin | Templates Admin | Department Viewer | +|-----------------------------------------------------------------------|------------------|----------------------|------------|------------------|------------|---------|--------|---------------|---------------|--------------------|--------------------|-------------------------|-----------------|-------------------| +| Create local users and applications | CRUD | CRUD | | | | | | | | | | | | | +| Assign Users/Groups/Apps to Roles with scopes (Departments, Projects) | CRUD | CRUD | CRUD | | | | | | | | | | | | +| Roles | CRUD | R | R | | | | | | | | | | | | +| Departments | CRUD | R (6) | CRUD | | | R | R | | | R | R | R | R | R | +| Projects | CRUD | CRUD | CRUD | R (2) (3) | R | R | R | R | CRUD | R | R | R | R | R | +| Jobs | CRUD | CRUD | CRUD | R | CRUD | | R | CRUD | CRUD | R | R | R | R | R | +| Deployments | CRUD | CRUD | R | | | CRUD | R | | | | | | | R | +| Workspaces | CRUD | CRUD | CRUD | R | CRUD | | R | CRUD | CRUD | R | R | R | R | R | +| Trainings | CRUD | CRUD | CRUD | R | CRUD | | R | CRUD | | R | R | R | R | R | +| Environments | CRUD | CRUD | CRUD | CRUD | CRUD | | R | R | R | CRUD | R | R | R | R | +| Data Sources | CRUD | CRUD | CRUD | CRUD | CRUD | | R | R | R | R | CRUD | R | R | R | +| Compute Resources | CRUD | CRUD | CRUD | CRUD | CRUD | | R | R | R | R | R | CRUD | R | R | +| Templates | CRUD | CRUD | CRUD | CRUD | CRUD | | R | R | R | R | R | R | CRUD | R | +| Policies (7) | CRUD | CRUD | R | R | R | R | R | R | | R | R | R | R | R | +| Clusters | CRUD | R | R | R | R | R | R | R | | R | R | R | R | R | +| Node Pools | CRUD | R | R | | | R | R | | | | | | | | +| Nodes | R | R | R | | | R | R | | | | | | | | +| Settings.General | CRUD | | | | | | | | | | | | | | +| Credentials (Settings.Cre...) | CRUD | R | R | R | R | R | R | R | | | R | | | | +| Events History | R | | | | | | | | | | | | | | +| Dashboard.Overview | R | R | R | R | R | R | R | R | R | R | R | R | R | R | +| Dashboards.Analytics | R | R | R | R | R | R | R | R | R | R | R | R | R | R | +| Dashboards.Consumption | R | R | | | | | | R | R | | | | | | Permissions: **C** = Create, **R** = Read, **U** = Update, **D** = Delete @@ -87,7 +87,7 @@ An *Access rule* is the assignment of a *Role* to a *Subject* in a *Scope*. *Acc ` is a in a `. -**For example:** +**For example**: User **user@domain.com** is a **department admin** in **Department A**. ### Create or delete rules From ca77c4ccf1a4fff24b46a1e7ff2aa768c676c702 Mon Sep 17 00:00:00 2001 From: jasonnovichRunAI <124490127+jasonnovichRunAI@users.noreply.github.com> Date: Wed, 30 Aug 2023 21:58:34 +0300 Subject: [PATCH 34/58] V2.14-email-notifications (#459) * get-jobs-example * default-storage-class-sample * default-storage-class-sample * sso-changes * researcher-auth-for-sso * [RUN-11536] update whats new with version content * [RUN-11536] add RUN-10575 description. * add email messaging * [RUN-10087] add email notifications --------- Co-authored-by: Yaron --- .../admin/researcher-setup/email-messaging.md | 159 ++++++++++++++++++ .../researcher-authentication.md | 22 ++- docs/admin/runai-setup/authentication/sso.md | 43 ++--- .../self-hosted/k8s/prerequisites.md | 12 +- docs/developer/rest-auth.md | 24 +-- docs/home/whats-new-2-14.md | 22 +++ examples/get-jobs.py | 67 ++++++++ mkdocs.yml | 1 + 8 files changed, 307 insertions(+), 43 deletions(-) create mode 100644 docs/admin/researcher-setup/email-messaging.md create mode 100644 examples/get-jobs.py diff --git a/docs/admin/researcher-setup/email-messaging.md b/docs/admin/researcher-setup/email-messaging.md new file mode 100644 index 0000000000..12989617ac --- /dev/null +++ b/docs/admin/researcher-setup/email-messaging.md @@ -0,0 +1,159 @@ +# Email notifications + +The notifications service listens to events on the Kubernetes cluster and passes notifications of those events via email. The service can be configured to send the notifications to one or more pre configured email addresses, or to the email address of the user that submitted the workload. + +Note: In order to send notifications dynamically to the user who submitted the workload, the user should be logged in to the Run:ai UI or CLI. + +The service can also be configured using a regular expression to send notifications only for specific namespaces on the cluster. This enables notification only for specific Run:ai projects. The default configuration sends notifications for all the namespaces starting with `runai-`. + +## Prerequisites + +1. The service should be installed on each cluster used with Run:ai. The installation will be done separately from the Run:ai cluster installation using a new helm chart. +2. As a part of the installation, the customer should provide their SMTP server address as well as credentials for it. + +## Available notifications + +Configure the notifications service to send events using the relevant `kind` and event `reason`. +The following Run:ai notifications are available: + +|Event|Kind|Reason|Description|Additional info| +|:----|:----|:----|:----|:----| +|Pod scheduled|`Pod`|`Scheduled`|a pod was scheduled on a node|Pod, Job, Project, Namespace, User| +|Pod evicted|`PodGroup`|`Evict`|a pod was evicted to make room for another pod with higher priority, or to reclaim resources that belong to other project or department|Pod, Job, Project, Namespace, User| +|Pod unschedulable|`Pod`|`Unschedulable`|a pod was determined as unschedulable and couldn't be scheduled on any node in the cluster| Pod, Job, Project, Namespace, User| +|Failed scheduling pod|`Pod`|`FailedScheduling`|binding a pod to a node failed| Pod, Job, Project, Namespace, User| + +!!! Tip + You can configure the notifications service to send event messages about additional Kubernetes events using the relevant `kind` and event `reason`. + + +## Installation + +Install the notification service using the following commands: + +1. Set the helm repo to point to the notification service package using the following command: + +``` +helm repo add runai-notifications-service https://storage.googleapis.com/runai-notifications-service/ + +helm repo update +``` + +2. Check for the latest version using the following command + +``` +helm repo search runai-notifications-service + +``` + +3. Install the latest version using the following command: + +``` +helm install runai-notifications-service/notifications-service --version 0.0.0 +``` + +## Configuration + +The notification service is configured using a `configmap` file. The following is an example of a `configmap` file. Each of the tables below references a section in the `configmap` file. + + + +### `service` configuration + +This section defines the number of events that will be sent by the service. Use the following table to configure options in the `service` section of the `configmap` file. + +|Component|Field|Description|Default| +|:----|:----|:----|:----| +|`service`|`service.concurrent_limit`|maximum number of events the service will handle in parallel|50| +|`service`|`service.cached_events`|queue size for events before blocking the listener|1000| + +### `listener` configuration + +This section defines the objects and events that the service will listen to and send as notifications. Use the following table to configure options in the `listener` section of the `configmap` file. + +| Component | Field | Description | Default | +| --- | --- | --- | --- | +| `kubelistener` | `listener.relevant_objects` | white list of Kubernetes components for notifications | relevant_objects:
`kind:`
`Podreasons:UnschedulableScheduled`

`kind:`
`PodGroupreasons: - Evict` | +| `kubelistener` | `listener.relevant_namespaces` | white list of namespaces that the service should listen to for events (regex) | `runai-.*` | + +### `enrich` configuration + +!!! Note + This section of the `configmap` is for internal use only. Keep the default values. + +| Component | Field | Default | +| --- | --- | --- | +|`KubeMetadata`|`enricher.kubeMetadata.lables`| `release: workloadDisplayName`

`training.kubeflow.org/job-name: workloadDisplayName`

`serving.knative.dev/service: workloadDisplayName`

`project: project`| +|`KubeMetadata`|`enricher.kubeMetadata.annotations`|`"user": "user"`| + +### `notify` configuration + +This section defines the notification configuration of the service and contains the details for the SMTP server and the recipients list. +Use the following table to configure options in the `notify` section of the `configmap` file. + +|Component|Field|Description|Default| +|--- |--- |--- |--- | +|`Email`|`notify.email.smtp_host` (M)|SMTP server host address|Empty| +|`Email`|`notify.email.smtp_port` (M)|SMTP server port|587| +|`Email`|`notify.email.from_display_name` (M)|email's "From" display name|Run:ai| +|`Email`|`notify.email.from` (M)|a valid domain source email address|| +|`Email`|`notify.email.user` (M)|SMTP server user login|user| +|`Email`|`notify.email.password` (M)|SMTP server user's password |password| +|`Email`|`notify.email.direct_notifications` (together with Recipients)|when set to true, email notifications will be sent dynamically to the user who submitted the workload|false| +|`Email`|`notify.email.recipients` (together with Direct Notifications)|additional email address recipients list for all the events - broadcast|Empty list| + +**(M)** = mandatory to include in the `configmap` file. + +### Example `configmap` file + +The following file is an example of a configmap file for the notification service. + +``` + service: + concurrent_limit: 50 + cached_events: 1000 + listener: + relevant_namespaces: + - runai.* + relevant_objects: + - kind: Pod + reasons: + - Unschedulable + - Scheduled + - kind: PodGroup + reasons: + - Evict + enrich: + kubeMetadata: + labels: + "release": "workloadDisplayName" + "training.kubeflow.org/job-name": "workloadDisplayName" + "serving.knative.dev/service": "workloadDisplayName" + "project": "project" + annotations: + "user": "user" + notify: + email: + template_path: path/email.html # Internal use only. + from: my@mail.com + user: smtp_user + password: smtp_password + smtp_host: smtp.mail.com + smtp_port: 587 + from_display_name: Company Name + direct_notifications: true + recipients: + - some@mail.com +``` diff --git a/docs/admin/runai-setup/authentication/researcher-authentication.md b/docs/admin/runai-setup/authentication/researcher-authentication.md index 698dd604f7..b897f1a120 100644 --- a/docs/admin/runai-setup/authentication/researcher-authentication.md +++ b/docs/admin/runai-setup/authentication/researcher-authentication.md @@ -55,8 +55,7 @@ Modifying the API Server configuration differs between Kubernetes distributions: always_pull_images: false extra_args: oidc-client-id: runai # (1) - oidc-issuer-url: https://example.com/auth - oidc-username-prefix: "-" + ... ``` @@ -69,10 +68,11 @@ Modifying the API Server configuration differs between Kubernetes distributions: ``` YAML title="/etc/rancher/rke2/config.yaml" kube-apiserver-arg: - - "oidc-client-id=" - - "oidc-issuer-url=" - - "oidc-username-prefix=-" + - "oidc-client-id=runai" # (1) + ... ``` + + 1. These are example parameters. Copy the actual parameters from `Settings | General | Researcher Authentication` as described above. If working via Rancher UI, need to add the flag as part of the cluster provisioning. @@ -88,9 +88,19 @@ Modifying the API Server configuration differs between Kubernetes distributions: Install the [yq](https://github.com/mikefarah/yq){target=_blank} utility and run: + For username-password authentication, run: + + ``` + kubectl get clientconfig default -n kube-public -o yaml > login-config.yaml + yq -i e ".spec +={\"authentication\":[{\"name\":\"oidc\",\"oidc\":{\"clientID\":\"runai\",\"issuerURI\":\"$OIDC_ISSUER_URL\",\"kubectlRedirectURI\":\"http://localhost:8000/callback\",\"userClaim\":\"sub\",\"userPrefix\":\"-\"}}]}" login-config.yaml + kubectl apply -f login-config.yaml + ``` + + For single-sign-on, run: + ``` kubectl get clientconfig default -n kube-public -o yaml > login-config.yaml - yq -i e ".spec +={\"authentication\":[{\"name\":\"oidc\",\"oidc\":{\"clientID\":\"$OIDC_CLIENT_ID\",\"issuerURI\":\"$OIDC_ISSUER_URL\",\"kubectlRedirectURI\":\"http://localhost:8000/callback\",\"userClaim\":\"sub\",\"userPrefix\":\"$OIDC_USERNAME_PREFIX\"}}]}" login-config.yaml + yq -i e ".spec +={\"authentication\":[{\"name\":\"oidc\",\"oidc\":{\"clientID\":\"runai\",\"issuerURI\":\"$OIDC_ISSUER_URL\",\"groupClaim\":\"groups\",\"kubectlRedirectURI\":\"http://localhost:8000/callback\",\"userClaim\":\"email\",\"userPrefix\":\"-\"}}]}" login-config.yaml kubectl apply -f login-config.yaml ``` diff --git a/docs/admin/runai-setup/authentication/sso.md b/docs/admin/runai-setup/authentication/sso.md index fdc4823e64..38b3d54008 100644 --- a/docs/admin/runai-setup/authentication/sso.md +++ b/docs/admin/runai-setup/authentication/sso.md @@ -2,7 +2,7 @@ Single Sign-On (SSO) is an authentication scheme that allows a user to log in with a single ID to other, independent, software systems. SSO solves security issues involving multiple user/password data entries, multiple compliance schemes, etc. -Run:ai supports SSO using the [SAML 2.0](https://en.wikipedia.org/wiki/Security_Assertion_Markup_Language){target=_blank} protocol and Open ID Connect (OIDC). +Run:ai supports SSO using the [SAML 2.0](https://en.wikipedia.org/wiki/Security_Assertion_Markup_Language){target=_blank} protocol and Open ID Connect or [OIDC](https://openid.net/developers/how-connect-works/){target=_blank}. !!! Caution Single sign-on is only available with SaaS installations where the tenant has been created post-January 2022 or any Self-hosted installation of release 2.0.58 or later. If you are using single sign-on with older versions of Run:ai, please contact Run:ai customer support @@ -13,8 +13,7 @@ Run:ai supports SSO using the [SAML 2.0](https://en.wikipedia.org/wiki/Security_ ## SAML Prerequisites -* **XML Metadata**—you must have an *XML Metadata file* retrieved from your IdP. Upload the file to a web server such that you will have a URL to the file. The URL must have the *XML* file extension. For example, to connect using Google, you must create a custom SAML App [here](https://admin.google.com/ac/apps/unified){target=_blank}, download the Metadata file, and upload it to a web server. -* **Organization Name**—you must have a Run:ai *Organization Name*. This is the name that appears on the top right of the Run:ai user interface. +**XML Metadata**—you must have an *XML Metadata file* retrieved from your IdP. Upload the file to a web server such that you will have a URL to the file. The URL must have the *XML* file extension. For example, to connect using Google, you must create a custom SAML App [here](https://admin.google.com/ac/apps/unified){target=_blank}, download the Metadata file, and upload it to a web server. ## OIDC Prerequisites @@ -26,15 +25,15 @@ Run:ai supports SSO using the [SAML 2.0](https://en.wikipedia.org/wiki/Security_ You can configure your IdP to map several IdP attributes: -| IdP attribute | Run:ai required name | Description | +| IdP attribute | Default Run:ai name | Description | |--|--|--| -| User email | email | **(Mandatory)** `e-mail` is the user identifier with Run:ai. | -| User role groups | GROUPS | (Optional) If exists, allows assigning Run:ai role groups via the IdP. The IdP attribute must be of a type of list of strings. See more below | -| Linux User ID | UID (configurable) | (Optional) If exists in IdP, allows Researcher containers to start with the Linux User `UID`. Used to map access to network resources such as file systems to users. The IdP attribute must be of integer type. | -| Linux Group ID | GID (configurable) | (Optional) If exists in IdP, allows Researcher containers to start with the Linux Group `GID`. The IdP attribute must be of integer type. | -| Linux Supplementary Groups | SUPPLEMENTARYGROUPS (configurable) | (Optional) If exists in IdP, allows Researcher containers to start with the relevant Linux supplementary groups. The IdP attribute must be of a type of list of integers. | -| User first name | firstName (configurable)| (Optional) Used as the first name showing in the Run:ai user interface. | -| User last name | lastName (configurable)| (Optional) Used as the last name showing in the Run:ai user interface | +| User email | email (cannot be changed) | **(Mandatory)** `e-mail` is the user identifier with Run:ai. | +| User role groups | GROUPS | (Optional) If exists, allows assigning Run:ai role groups via the IdP. The IdP attribute must be of a type of list of strings. See more below | +| Linux User ID | UID | (Optional) If exists in IdP, allows Researcher containers to start with the Linux User `UID`. Used to map access to network resources such as file systems to users. The IdP attribute must be of integer type. | +| Linux Group ID | GID | (Optional) If exists in IdP, allows Researcher containers to start with the Linux Group `GID`. The IdP attribute must be of integer type. | +| Linux Supplementary Groups | SUPPLEMENTARYGROUPS | (Optional) If exists in IdP, allows Researcher containers to start with the relevant Linux supplementary groups. The IdP attribute must be of a type of list of integers. | +| User first name | firstName | (Optional) Used as the first name showing in the Run:ai user interface. | +| User last name | lastName | (Optional) Used as the last name showing in the Run:ai user interface | ### Example attribute mapping for Google Suite @@ -54,12 +53,9 @@ You can configure your IdP to map several IdP attributes: For `Saml 2`: 1. In the `Metadata XML Url` field, enter the URL to the XML Metadata file. - 2. In the `GID` field, enter the GID. - 3. In the `GROUPS` field, enter the groups. - 4. In the `SUPPLEMENTARYGROUPS` field, enter the supplementary groups. - 5. In the `UID` field, enter the UID. - 6. In the `Logout uri` field, enter the desired URL logout page. If left empty, you will be redirected to the Run:ai portal. - 7. Press `Save`. + 2. Find your identity provider's attribute names for `GID`, `GROUPS`, `SUPPLEMENTARYGROUPS` and `UID`. If they are not in line with the Run:ai defaults described in the table above, you can change them here. + 3. In the `Logout uri` field, enter the desired URL logout page. If left empty, you will be redirected to the Run:ai portal. + 4. Press `Save`. For `Open ID Connect`: @@ -68,12 +64,9 @@ For `Open ID Connect`: 1. In the `Discovery Document URL` field, enter the URL to the discovery document. 2. In the `Client ID` field, enter the client ID. 3. In the `Client Secret` field, enter the client secret. - 4. In the `GID` field, enter the GID. - 5. In the `GROUPS` field, enter the groups. - 6. In the `SUPPLEMENTARYGROUPS` field, enter the supplementary groups. - 7. In the `UID` field, enter the UID. - 8. In the `Logout uri` field, enter the desired URL logout page. If left empty, you will be redirected to the Run:ai portal. - 9. Press `Save`. + 4. Find your identity provider's attribute names for `GID`, `GROUPS`, `SUPPLEMENTARYGROUPS` and `UID`. If they are not in line with the Run:ai defaults described in the table above, you can change them here. + 5. In the `Logout uri` field, enter the desired URL logout page. If left empty, you will be redirected to the Run:ai portal. + 6. Press `Save`. Once you press `Save` you will receive a `Redirect URI` and an `Entity ID`. Both values must be set on the IdP side. @@ -86,12 +79,10 @@ Test Connectivity to Administration User Interface: * Using an incognito browser tab and open the Run:ai user interface. * Select the `Login with SSO` button. -* Provide the `Organization name` obtained above. * You will be redirected to the IdP login page. Use the previously entered *Administrator* email* to log in. ### Troubleshooting - -The SSO log in can be separated into two parts: +The SSO login can be separated into two parts: 1. Run:ai redirects to the IdP (for example, Google) for login using a *SAML Request*. 2. Upon successful login, IdP redirects back to Run:ai with a *SAML Response*. diff --git a/docs/admin/runai-setup/self-hosted/k8s/prerequisites.md b/docs/admin/runai-setup/self-hosted/k8s/prerequisites.md index 5db295e3d2..450f98f131 100644 --- a/docs/admin/runai-setup/self-hosted/k8s/prerequisites.md +++ b/docs/admin/runai-setup/self-hosted/k8s/prerequisites.md @@ -41,7 +41,17 @@ See Run:ai Cluster prerequisites [Kubernetes](../../cluster-setup/cluster-prereq The Run:ai control plane operating system prerequisites are identical. -The Run:ai control-plane requires a default storage class to create persistent volume claims for Run:ai storage. The storage class, as per Kubernetes standards, controls the reclaim behavior: whether the Run:ai persistent data is saved or deleted when the Run:ai control plane is deleted. +The Run:ai control-plane requires a __default storage class__ to create persistent volume claims for Run:ai storage. The storage class, as per Kubernetes standards, controls the reclaim behavior: whether the Run:ai persistent data is saved or deleted when the Run:ai control plane is deleted. + + +!!! Note + For a simple (nonproduction) storage class example see [Kubernetes Local Storage Class](https://kubernetes.io/docs/concepts/storage/storage-classes/#local){target=_blank}. The storage class will set the directory `/opt/local-path-provisioner` to be used across all nodes as the path for provisioning persistent volumes. + + Then set the new storage class as default: + + ``` + kubectl patch storageclass local-path -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}' + ``` ### NVIDIA Prerequisites diff --git a/docs/developer/rest-auth.md b/docs/developer/rest-auth.md index e59e0a0b72..2066b36391 100644 --- a/docs/developer/rest-auth.md +++ b/docs/developer/rest-auth.md @@ -46,16 +46,20 @@ Replace `` below with `app.run.ai` for SaaS installations (not `/auth/realms//protocol/openid-connect/token", payload, headers) - - res = conn.getresponse() - data = res.read() - print(data.decode("utf-8")) + url = + "/auth/realms/" + + "/protocol/openid-connect/token" + + payload = 'grant_type=client_credentials&scope=openid&response_type=id_token&client_id=' + + '&client_secret=' + + headers = { + 'Content-Type': 'application/x-www-form-urlencoded' + } + + response = requests.request("POST", url, headers=headers, data=payload) + if response.status_code //100 == 2: + j = json.loads(response.text) + return j["access_token"] + else: + print(json.dumps(json.loads(response.text), sort_keys=True, indent=4, separators=(",", ": "))) + return ``` ### Response diff --git a/docs/home/whats-new-2-14.md b/docs/home/whats-new-2-14.md index f08edd6ea3..f6784d9e69 100644 --- a/docs/home/whats-new-2-14.md +++ b/docs/home/whats-new-2-14.md @@ -29,6 +29,28 @@ When upgrading the system, previous access and authorizations that were configur + +* We are pleased to announce new functionality in our CLI that allows the submitting a workload with multiple service types at the same time in a CSV style format. Both the CLI and the UI now provide the same functionality. + + +* We are pleased to announce an enhancement to the Projects table where users now have the ability to view policies from within a project. For more information, see [Projects](). + + + + +* We are pleased to announce new functionality where users can now receive notifications from scheduling events. Researchers using Run:ai can now receive notifications via email and is configured so that each user will only get the events relevant to their workloads. For more information, see [email notifications](). + + + + +* We are pleased to announce that we have increased the flexibility when creating policies. The improved flexibility includes the abililty to allocate a `min` and a `max` value for CPU and GPU memory. + + +* We are pleased to announce that we have added an additional table to the Consumption dashboard. This table contains the consumption per department and the cost per department. For more information, see [Consumption dashboard]() + + + + #### Fixed issues | Internal ID | Description | diff --git a/examples/get-jobs.py b/examples/get-jobs.py new file mode 100644 index 0000000000..f0b2c807f0 --- /dev/null +++ b/examples/get-jobs.py @@ -0,0 +1,67 @@ +import requests +import json + +# see https://docs.run.ai/v2.13/developer/rest-auth/ +CONTROL_PLANE = "https://url" +REALM = "runai" +CLIENT_ID = "obtained by creating an application" +CLIENT_SECRET = "obtained by creating an application" +CLUSTER_UUID = "obtained by viewing the cluster list in the UI and adding a UUID column" + +def main(): + return + +def login(): + url = CONTROL_PLANE + "/auth/realms/" + REALM + "/protocol/openid-connect/token" + + payload = 'grant_type=client_credentials&scope=openid&response_type=id_token&client_id=' + CLIENT_ID + '&client_secret=' + CLIENT_SECRET + headers = { + 'Content-Type': 'application/x-www-form-urlencoded' + } + + + response = requests.request("POST", url, headers=headers, data=payload) + if response.status_code //100 == 2: + j = json.loads(response.text) + return j["access_token"] + else: + print(json.dumps(json.loads(response.text), sort_keys=True, indent=4, separators=(",", ": "))) + return + + + +def get_jobs(bearer, project): + + # all filters are optional. E.g. + # can remove "project:" to get all projects + # can add one or more job types + # Other options: sortBy=status&sortDirection=asc&from=0&limit=20 + # or any other option filtered or sorted in the Jobs UI + + url = CONTROL_PLANE + "/v1/k8s/clusters/" + CLUSTER_UUID + "/jobs?filter=project:"+ project + "&jobType:Train|Interactive" + + + print (url) + + headers = { + 'Authorization': "Bearer " + bearer, + 'Content-Type': 'application/json', + } + + response = requests.request("GET", url, headers=headers) #, data=payload) + + if response.status_code //100 == 2: + print(json.dumps(json.loads(response.text), sort_keys=True, indent=4, separators=(",", ": "))) + else: + print(response.text) + + + + + +if __name__ == "__main__": + + bearer = login() + project="team-a" + get_jobs(bearer, project) + main() \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 7be770db30..ebb774ff7b 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -221,6 +221,7 @@ nav: - 'Use a Docker Registry with Credentials' : 'admin/researcher-setup/docker-registry-config.md' - 'Setup cluster wide PVC' : 'admin/researcher-setup/cluster-wide-pvc.md' - 'Group Nodes' : 'admin/researcher-setup/limit-to-node-group.md' + - 'Email notifications' : 'admin/researcher-setup/email-messaging.md' - 'Workloads' : - 'Overview' : 'admin/workloads/workload-overview-admin.md' - 'Policies' : 'admin/workloads/policies.md' From e2b7555ece7561a2af01f373b2e5d722e0f2f4a7 Mon Sep 17 00:00:00 2001 From: jasonnovichRunAI <124490127+jasonnovichRunAI@users.noreply.github.com> Date: Thu, 31 Aug 2023 13:57:28 +0300 Subject: [PATCH 35/58] V2.14-RUN-10061-Ephemeral-volumes (#456) * get-jobs-example * default-storage-class-sample * default-storage-class-sample * sso-changes * researcher-auth-for-sso * [RUN-11536] update whats new with version content * [RUN-11536] add RUN-10575 description. * [RUN-10061] ephemeral to workspace and training * [RUN-11777] is also included here. * Apply suggestions from code review Co-authored-by: gal-revach <127027411+gal-revach@users.noreply.github.com> * [RUN-10476] add CLI delete time after fail complete * Update docs/Researcher/cli-reference/runai-submit.md Co-authored-by: gal-revach <127027411+gal-revach@users.noreply.github.com> * Update docs/Researcher/user-interface/workspaces/create/workspace-v2.md Co-authored-by: gal-revach <127027411+gal-revach@users.noreply.github.com> * Update docs/Researcher/user-interface/trainings.md Co-authored-by: gal-revach <127027411+gal-revach@users.noreply.github.com> --------- Co-authored-by: Yaron Co-authored-by: gal-revach <127027411+gal-revach@users.noreply.github.com> --- docs/Researcher/cli-reference/runai-submit.md | 4 +++ docs/Researcher/user-interface/trainings.md | 20 ++++++++--- .../workspaces/create/workspace-v2.md | 34 +++++++++++++++++++ mkdocs.yml | 8 ++--- 4 files changed, 58 insertions(+), 8 deletions(-) create mode 100644 docs/Researcher/user-interface/workspaces/create/workspace-v2.md diff --git a/docs/Researcher/cli-reference/runai-submit.md b/docs/Researcher/cli-reference/runai-submit.md index a770179632..a6179cb58f 100644 --- a/docs/Researcher/cli-reference/runai-submit.md +++ b/docs/Researcher/cli-reference/runai-submit.md @@ -105,6 +105,10 @@ runai submit --job-name-prefix -i gcr.io/run-ai-demo/quickstart -g 1 > > Interactive preemptible jobs can be scheduled above guaranteed quota but may be reclaimed at any time. +#### --auto-deletion-time-after-completion +> +> The timeframe after which a completed or failed job is automatically deleted. Configured in seconds, minutes, or hours (for example 5s, 2m, or 3h). If set to 0, the job will be deleted immediately after completing or failing. + ### Naming and Shortcuts diff --git a/docs/Researcher/user-interface/trainings.md b/docs/Researcher/user-interface/trainings.md index eebeb2c97e..277da7a677 100644 --- a/docs/Researcher/user-interface/trainings.md +++ b/docs/Researcher/user-interface/trainings.md @@ -16,8 +16,9 @@ You must have: * ***Workspaces*** enabled. * At least one ***Project*** configured. -!!! note +!!! Note See your system administrator to ensure the prerequisites are enabled and configured. + ## Adding Trainings !!! Note @@ -31,8 +32,19 @@ To add a training: 4. In the *Training name* pane, enter a name for the *Traninng*, then press continue. 5. In the *Environment* pane select or [create a new environment](workspaces/create/create-env.md). Use the search box to find environments that are not listed. 6. In the *Compute resource* pane, select resources for your tranings or [create a new compute resource](workspaces/create/create-compute.md). Use the search box to find resources that are not listed. Press *More settings* to use **Node Affinity** to limit the resources to a specific node. -7. In the *Data sources* pane, press *add a new data source*. For more information, see [Creating a new data source](workspaces/create/create-ds.md) When complete press, *Create Data Source*. -8. When complete, press *Create training*. +7. Open the *Volume* pane, and press *Volume* to add a volume to your training. + 1. Select the *Storage class* from the dropdown. + 2. Select the *Access mode* from the dropdown. + 3. Enter a claim size, and select the units. + 4. Select a *Volume system*, mode from the dropdown. + 5. Enter the *Container path* for volume target location. + 6. Select a *Volume persistency. +8. In the *Data sources* pane, press *add a new data source*. For more information, see [Creating a new data source](workspaces/create/create-ds.md) When complete press, *Create Data Source*. +9. In the *General* pane, add special settings for your training (optional): + 1. Press *Auto-deletion* to delete the training automatically when it either completes or fails. You can configure the timeframe in days, hours, minuets, and seconds. If the timeframe is set to 0, the training will be deleted immediately after it completes or fails. + 2. Press *Annotation* to a name and value to annotate the training. Repeat this step to add multiple annotations. + 3. Press *Label* to a name and value to label the training. Repeat this step to add multiple labels. +10. When complete, press *Create training*. ## Managing Trainings @@ -64,4 +76,4 @@ Training details are displayed using the *Show details* action. The details avai * **Logs**—a log file of the current status. Use the download button to save the logs. -To hide the training details, press *Hide details*. \ No newline at end of file +To hide the training details, press *Hide details*. diff --git a/docs/Researcher/user-interface/workspaces/create/workspace-v2.md b/docs/Researcher/user-interface/workspaces/create/workspace-v2.md new file mode 100644 index 0000000000..62ca23a2be --- /dev/null +++ b/docs/Researcher/user-interface/workspaces/create/workspace-v2.md @@ -0,0 +1,34 @@ +# Create a new workspace +A Workspace is assigned to a project and is affected by the project’s quota just like any other workload. A workspace is shared with all project members for collaboration. + +To create a new workspace: + +1. Press **Workspaces** on left menu, then press *New workspace*. +2. Select a project from the project tiles. If your project is not listed, use the *Search projects* box to find a project. + + !!! Note + * You must have at least one project configured in the system. To configure a project, see [Creating a project](../../../../admin/admin-ui-setup/project-setup.md#create-a-project). + * You must have at least 1 researcher assigned to the project. + +3. Select a template from the template tiles. If your template is not listed, use the *Search templates* box to find a template. Choose *Start from scratch* if you do not have, or want to use a template. + + A template contains a set of predefined building blocks as well as additional configurations which allow the user to immediately create a templated-based workspace. + +4. Enter a name for your workspace and press *Continue*. +5. Select an environment from the tiles. If your environment is not listed, use the *Search environments* box to find it. Press *New environment* to create an environment if needed. + 1. Press *Commands and Arguments* to add special commands and arguments to your environment selection. + 2. Press *Environment variable* to add an environment variable. Press again if you need more environments variables. +6. Select a compute resource from the tiles. If your compute resource is not listed, use the *Search compute resources* box to find it. Press *New compute resource* to create a compute resource if needed. +7. Open the *Volume* pane, and press *Volume* to add a volume to your workspace. + 1. Select the *Storage class* from the dropdown. + 2. Select the *Access mode* from the dropdown. + 3. Enter a claim size, and select the units. + 4. Select a *Volume system*, mode from the dropdown. + 5. Enter the *Container path* for volume target location. + 6. Select a *Volume persistency. +8. Select a data source from the tiles. If your data source is not listed, use the *Search compute resources* box to find it. Press *New data source* to create a new data source if needed. +9. In the *General* pane, add special settings for your workspace: + 1. Press *Auto-deletion* to delete the workspace automatically when it either completes or fails. You can configure the timeframe in days, hours, minuets, and seconds. If the timeframe is set to 0, the workspace will be deleted immediately after it completes or fails. + 2. Press *Annotation* to a name and value to annotate the workspace. Repeat this step to add multiple annotations. + 3. Press *Label* to a name and value to label the workspace. Repeat this step to add multiple labels. +10. Press *Create workspace* diff --git a/mkdocs.yml b/mkdocs.yml index ebb774ff7b..b83e888880 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -280,10 +280,10 @@ nav: - 'Compute Resources': 'Researcher/user-interface/workspaces/blocks/compute.md' - 'Data Sources' : 'Researcher/user-interface/workspaces/blocks/datasources.md' - 'Creation' : - - 'Environments' : 'Researcher/user-interface/workspaces/create/create-env.md' - - 'Compute Resources' : 'Researcher/user-interface/workspaces/create/create-compute.md' - - 'Data Sources' : 'Researcher/user-interface/workspaces/create/create-ds.md' - - 'Workspaces' : 'Researcher/user-interface/workspaces/create/workspace.md' + - 'Create an Environments' : 'Researcher/user-interface/workspaces/create/create-env.md' + - 'Create a Compute Resources' : 'Researcher/user-interface/workspaces/create/create-compute.md' + - 'Create a Data Sources' : 'Researcher/user-interface/workspaces/create/create-ds.md' + - 'Create a Workspace' : 'Researcher/user-interface/workspaces/create/workspace-v2.md' - 'Statuses' : 'Researcher/user-interface/workspaces/statuses.md' - 'Trainings' : 'Researcher/user-interface/trainings.md' - 'CLI Reference' : From 78e7f06b3e4ee6b0d107e80918f705d4ca27054b Mon Sep 17 00:00:00 2001 From: jasonnovichRunAI <124490127+jasonnovichRunAI@users.noreply.github.com> Date: Sun, 3 Sep 2023 09:43:13 +0300 Subject: [PATCH 36/58] [RUN-10579] add new policy for GPU and CPU memory (#453) * [RUN-10579] add new policy for GPU and CPU memory * Update docs/admin/workloads/policies.md * Apply suggestions from code review --- docs/admin/workloads/policies.md | 42 +++++++++++++++++++++++++------- 1 file changed, 33 insertions(+), 9 deletions(-) diff --git a/docs/admin/workloads/policies.md b/docs/admin/workloads/policies.md index 7e49724f94..1ad5929bf1 100644 --- a/docs/admin/workloads/policies.md +++ b/docs/admin/workloads/policies.md @@ -6,7 +6,7 @@ Policies allow administrators to _impose restrictions_ and set _default values_ 1. Restrict researchers from requesting more than 2 GPUs, or less than 1GB of memory for an interactive workload. 2. Set the default memory of each training job to 1GB, or mount a default volume to be used by any submitted Workload. - + Policies are stored as Kubernetes [custom resources](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources){default=_blank}. Policies are specific to Workload type as such there are several kinds of Policies: @@ -15,7 +15,7 @@ Policies are specific to Workload type as such there are several kinds of Polici |----------------|-----------------|-------------| | Interactive | `InteractiveWorkload` | `InteractivePolicy` | | Training | `TrainingWorkload`| `TrainingPolicy` | -| Distributed Training | `DistributedWorkload` | `DistributedPolicy` | +| Distributed Training | `DistributedWorkload` | `DistributedPolicy` | | Inference | `InferenceWorkload` | `InferencePolicy` | A Policy can be created per Run:ai Project (Kubernetes namespace). Additionally, a Policy resource can be created in the `runai` namespace. This special Policy will take effect when there is no project-specific Policy for the relevant workload kind. @@ -51,19 +51,43 @@ The policy places a default and limit on the available values for GPU allocation ``` bash kubectl apply -f gpupolicy.yaml ``` + Now, try the following command: + ``` bash runai submit --gpu 5 --interactive -p team-a ``` + The following message will appear: + ``` gpu: must be no greater than 4 ``` -A similar message will appear in the _New Job_ form of the Run:ai user interface, when attempting to enter the number of GPUs, which is out of range for an Interactive tab. + +A similar message will appear in the _New Job_ form of the Run:ai user interface, when attempting to enter the number of GPUs, which is out of range for a training job. + +The following policy places a default and limit on the available values for CPU and GPU memory allocation. + +```YAML title="gpumemorypolicy.yaml" +apiVersion: run.ai/v2alpha1 +kind: TrainingPolicy +metadata: + name: training-policy + namespace: runai +spec: + gpuMemory: + rules: + min: 100M + max: 2G +memory: + rules: + min: 100M + max: 2G +``` ## Read-only values -When you do not want the user to be able to change a value, you can force the corresponding user interface control to become read-only by using the `canEdit` key. For example, +When you do not want the user to be able to change a value, you can force the corresponding user interface control to become read-only by using the `canEdit` key. For example, ``` YAML title="runasuserpolicy.yaml" apiVersion: run.ai/v2alpha1 @@ -82,15 +106,15 @@ spec: ``` 1. Set the Project namespace here. -2. The field is required. -3. The field will be shown as read-only in the user interface. +2. The field is required. +3. The field will be shown as read-only in the user interface. 4. The field value is true. ### Complex Values -The example above illustrated rules for parameters of "primitive" types, such as _GPU allocation_, _CPU memory_, _working directory_, etc. These parameters contain a single value. +The example above illustrated rules for parameters of "primitive" types, such as _GPU allocation_, _CPU memory_, _working directory_, etc. These parameters contain a single value. -Other workload parameters, such as _ports_ or _volumes_, are "complex", in the sense that they may contain multiple values: a workload may contain multiple ports and multiple volumes. +Other workload parameters, such as _ports_ or _volumes_, are "complex", in the sense that they may contain multiple values: a workload may contain multiple ports and multiple volumes. The following is an example of a policy containing the value `ports`, which is complex: The `ports` flag typically contains two values: The `external` port that is mapped to an internal `container` port. One can have multiple port tuples defined for a single Workload: @@ -235,7 +259,7 @@ FIELDS: if the map as a whole is required ``` -Note that each kind of policy has a slightly different set of parameters. For example, an `InteractivePolicy` has a `jupyter` parameter that is not available under `TrainingPolicy`. +Note that each kind of policy has a slightly different set of parameters. For example, an `InteractivePolicy` has a `jupyter` parameter that is not available under `TrainingPolicy`. ### Using Secrets for Environment Variables From 6f40e8a3486c6755cdd33752831bb659f436df4c Mon Sep 17 00:00:00 2001 From: jasonnovichRunAI <124490127+jasonnovichRunAI@users.noreply.github.com> Date: Sun, 3 Sep 2023 09:44:06 +0300 Subject: [PATCH 37/58] [RUN-11536] what's new updates (#454) * get-jobs-example * default-storage-class-sample * default-storage-class-sample * sso-changes * researcher-auth-for-sso * [RUN-11536] update whats new with version content * [RUN-11536] add RUN-10575 description. * moved try azure to graveyard * update TOC remove azure --------- Co-authored-by: Yaron --- {docs/admin/runai-setup => graveyard}/try-azure.md | 0 mkdocs.yml | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename {docs/admin/runai-setup => graveyard}/try-azure.md (100%) diff --git a/docs/admin/runai-setup/try-azure.md b/graveyard/try-azure.md similarity index 100% rename from docs/admin/runai-setup/try-azure.md rename to graveyard/try-azure.md diff --git a/mkdocs.yml b/mkdocs.yml index b83e888880..8fd5ee1311 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -163,7 +163,7 @@ nav: - 'Overview' : 'admin/overview-administrator.md' - 'Run:ai Setup' : - 'Installation Types' : 'admin/runai-setup/installation-types.md' - - 'Try on the Cloud' : 'admin/runai-setup/try-azure.md' + # - 'Try on the Cloud' : 'admin/runai-setup/try-azure.md' - 'Classic (SaaS)' : - 'Introduction' : 'admin/runai-setup/cluster-setup/cluster-setup-intro.md' - 'Prerequisites' : 'admin/runai-setup/cluster-setup/cluster-prerequisites.md' From 4279ec5a79daf56df0337d9bfd8fe7217d927b4e Mon Sep 17 00:00:00 2001 From: jasonnovichRunAI <124490127+jasonnovichRunAI@users.noreply.github.com> Date: Sun, 3 Sep 2023 09:44:24 +0300 Subject: [PATCH 38/58] V2.14-RUN-11508-costing-to-consumption-dashboard (#461) * get-jobs-example * default-storage-class-sample * default-storage-class-sample * sso-changes * researcher-auth-for-sso * [RUN-11536] update whats new with version content * [RUN-11536] add RUN-10575 description. * [RUN-11508] add cost to consumption dashboard * changed main dashboard image --------- Co-authored-by: Yaron --- .../admin-ui-setup/dashboard-analysis.md | 29 +++++++++++++++--- ...on-dashboard-project-over-quota-graph.png} | Bin .../img/consumption-dashboard.png | Bin 533813 -> 258572 bytes 3 files changed, 25 insertions(+), 4 deletions(-) rename docs/admin/admin-ui-setup/img/{consumtion-dashboard-project-over-quota-graph.png => consumption-dashboard-project-over-quota-graph.png} (100%) diff --git a/docs/admin/admin-ui-setup/dashboard-analysis.md b/docs/admin/admin-ui-setup/dashboard-analysis.md index c5bfaa103b..ca655eeaf3 100644 --- a/docs/admin/admin-ui-setup/dashboard-analysis.md +++ b/docs/admin/admin-ui-setup/dashboard-analysis.md @@ -273,6 +273,13 @@ Use the drop down menus at the top of the dashboard to apply filters for: * Project or department * Per project (single, multiple, or all) * Per department (single, multiple or all) +* Per cluster (single, multiple, all) + +Use cost fields at the top of the dashboard to provides calculated costs for: + +* GPU +* CPU +* CPU memory (in GB) Use the time picker dropdown to select relative time range options and set custom absolute time ranges. You can change the Timezone and fiscal year settings from the time range controls by clicking the Change time settings button. @@ -284,20 +291,34 @@ You can change the Timezone and fiscal year settings from the time range control You can change the refresh interval using the refresh interval drop down. -The dashboard has a Total consumption table that displays the total consumption of resources based on: +The dashboard has a 2 consumption tables that display the total consumption of resources. +Hover over an entry in the table to filter it in or out of the table. + +The *Total consumption* table includes consumption details based on the filters selected. Fields include: * Project * Department * GPU hours * CPU hours * Memory hours +* GPU cost (only when configured) +* CPU cost (only when configured) +* CPU memory (only when configured) -Hover over an entry in the table to filter it in or out of the table. +The *Total department consumption* table includes consumption details for each department, or details for departments selected in the filters. Fields include: + +* Department +* GPU hours +* CPU hours +* Memory hours +* GPU cost (only when configured) +* CPU cost (only when configured) +* CPU memory (only when configured) The dashboard has a graph of the GPU allocation over time. !![](img/consumption-dashboard-gpu-over-time.png) -The dashboard has a graph of the Project over-quota GPU consumtion. +The dashboard has a graph of the Project over-quota GPU consumption. -!![](img/consumtion-dashboard-project-over-quota-graph.png) +!![](img/consumption-dashboard-project-over-quota-graph.png) diff --git a/docs/admin/admin-ui-setup/img/consumtion-dashboard-project-over-quota-graph.png b/docs/admin/admin-ui-setup/img/consumption-dashboard-project-over-quota-graph.png similarity index 100% rename from docs/admin/admin-ui-setup/img/consumtion-dashboard-project-over-quota-graph.png rename to docs/admin/admin-ui-setup/img/consumption-dashboard-project-over-quota-graph.png diff --git a/docs/admin/admin-ui-setup/img/consumption-dashboard.png b/docs/admin/admin-ui-setup/img/consumption-dashboard.png index 5a13d760fb76d48bda036c2af9bbd8caf6bb665a..1f16e49903dab1100206ae4fbb24c78cc2a5a2be 100644 GIT binary patch literal 258572 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

5CC{l(FsFg$c@zMMe9xBpnK0 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

cl}0@jOF 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

YbIE$twXbP?2)ib<6UeTKAH0s6*jJoLewi1# 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 Date: Sun, 3 Sep 2023 11:10:22 +0300 Subject: [PATCH 39/58] V2.14 (#463) * get-jobs-example * default-storage-class-sample * default-storage-class-sample * sso-changes * researcher-auth-for-sso * [RUN-11536] update whats new with version content * [RUN-11536] add RUN-10575 description. * moved try azure to graveyard * update TOC remove azure * [RUN-11536] whats new update up to staging --------- Co-authored-by: Yaron --- .../workspaces/create/workspace-v2.md | 28 +++++++++------ .../admin-ui-setup/dashboard-analysis.md | 2 +- docs/admin/workloads/policies.md | 2 ++ docs/home/whats-new-2-14.md | 35 ++++++++++--------- 4 files changed, 39 insertions(+), 28 deletions(-) diff --git a/docs/Researcher/user-interface/workspaces/create/workspace-v2.md b/docs/Researcher/user-interface/workspaces/create/workspace-v2.md index 62ca23a2be..be69636741 100644 --- a/docs/Researcher/user-interface/workspaces/create/workspace-v2.md +++ b/docs/Researcher/user-interface/workspaces/create/workspace-v2.md @@ -16,19 +16,25 @@ To create a new workspace: 4. Enter a name for your workspace and press *Continue*. 5. Select an environment from the tiles. If your environment is not listed, use the *Search environments* box to find it. Press *New environment* to create an environment if needed. - 1. Press *Commands and Arguments* to add special commands and arguments to your environment selection. - 2. Press *Environment variable* to add an environment variable. Press again if you need more environments variables. + + 1. Press *Commands and Arguments* to add special commands and arguments to your environment selection. + 2. Press *Environment variable* to add an environment variable. Press again if you need more environments variables. + 6. Select a compute resource from the tiles. If your compute resource is not listed, use the *Search compute resources* box to find it. Press *New compute resource* to create a compute resource if needed. 7. Open the *Volume* pane, and press *Volume* to add a volume to your workspace. - 1. Select the *Storage class* from the dropdown. - 2. Select the *Access mode* from the dropdown. - 3. Enter a claim size, and select the units. - 4. Select a *Volume system*, mode from the dropdown. - 5. Enter the *Container path* for volume target location. - 6. Select a *Volume persistency. + + 1. Select the *Storage class* from the dropdown. + 2. Select the *Access mode* from the dropdown. + 3. Enter a claim size, and select the units. + 4. Select a *Volume system*, mode from the dropdown. + 5. Enter the *Container path* for volume target location. + 6. Select a *Volume persistency*. Choose from *Persistent* or *Ephemeral*. + 8. Select a data source from the tiles. If your data source is not listed, use the *Search compute resources* box to find it. Press *New data source* to create a new data source if needed. 9. In the *General* pane, add special settings for your workspace: - 1. Press *Auto-deletion* to delete the workspace automatically when it either completes or fails. You can configure the timeframe in days, hours, minuets, and seconds. If the timeframe is set to 0, the workspace will be deleted immediately after it completes or fails. - 2. Press *Annotation* to a name and value to annotate the workspace. Repeat this step to add multiple annotations. - 3. Press *Label* to a name and value to label the workspace. Repeat this step to add multiple labels. + + 1. Press *Auto-deletion* to delete the workspace automatically when it either completes or fails. You can configure the timeframe in days, hours, minuets, and seconds. If the timeframe is set to 0, the workspace will be deleted immediately after it completes or fails. + 2. Press *Annotation* to a name and value to annotate the workspace. Repeat this step to add multiple annotations. + 3. Press *Label* to a name and value to label the workspace. Repeat this step to add multiple labels. + 10. Press *Create workspace* diff --git a/docs/admin/admin-ui-setup/dashboard-analysis.md b/docs/admin/admin-ui-setup/dashboard-analysis.md index ca655eeaf3..b90bcbed43 100644 --- a/docs/admin/admin-ui-setup/dashboard-analysis.md +++ b/docs/admin/admin-ui-setup/dashboard-analysis.md @@ -257,7 +257,7 @@ Provides a holistic, aggregated view across Clusters, including information abou ## Consumption dashboard -This dashboard enables users and admins to view consumption usage using run:AI services. The dashboard provides views based on configurable filters and timelines. +This dashboard enables users and admins to view consumption usage using run:AI services. The dashboard provides views based on configurable filters and timelines. The dashboard also provides costing analysis for GPU, CPU, and memory costs for the system. ![!copnsumption dasboard](img/consumption-dashboard.png) diff --git a/docs/admin/workloads/policies.md b/docs/admin/workloads/policies.md index 1ad5929bf1..518c6882fa 100644 --- a/docs/admin/workloads/policies.md +++ b/docs/admin/workloads/policies.md @@ -66,6 +66,8 @@ gpu: must be no greater than 4 A similar message will appear in the _New Job_ form of the Run:ai user interface, when attempting to enter the number of GPUs, which is out of range for a training job. +#### GPU and CPU memory limits + The following policy places a default and limit on the available values for CPU and GPU memory allocation. ```YAML title="gpumemorypolicy.yaml" diff --git a/docs/home/whats-new-2-14.md b/docs/home/whats-new-2-14.md index f6784d9e69..d407a7d98e 100644 --- a/docs/home/whats-new-2-14.md +++ b/docs/home/whats-new-2-14.md @@ -13,43 +13,46 @@ This version contains features and fixes from previous versions starting with 2. * [What's new 2.13](whats-new-2-13.md) * [What's new 2.12](whats-new-2-12.md) * [What's new 2.10](whats-new-2-10.md) - + ##### Role based access control Stating in this version, Run:ai had updated the authorization system to Role Based Access Control (RBAC). RBAC is a policy-neutral access control mechanism defined around roles and privileges. For more information, see [Role based access control](../admin/runai-setup/access-control/rbac.md#role-based-access-control). -When upgrading the system, previous access and authorizations that were configured will be migrated to the new RBAC roles. See the table below for role conversions: + +##### Auto delete jobs - +* We are pleased to announce new functionality in our UI and CLI that provides configuration options which automatically delete jobs after a specified amount of time. Auto-deletion provides more efficient use of resources and makes it easier for researchers to manage their jobs. For more configuration options in the UI, see Auto deletion (Step 9) in [Create a new workspace](../Researcher/user-interface/workspaces/create/.workspace-v2.md#create-a-new-workspace). For more information on the CLI flag, see [--auto-deletion-time-after-completion](../Researcher/cli-reference/runai-submit.md#auto-deletion-time-after-completion). +##### Multiple service types -* We are pleased to announce new functionality in our CLI that allows the submitting a workload with multiple service types at the same time in a CSV style format. Both the CLI and the UI now provide the same functionality. +* We are pleased to announce new functionality in our CLI that allows submitting a workload with multiple service types at the same time in a CSV style format. Both the CLI and the UI now provide the same functionality. For more information see [runai submit ](../Researcher/cli-reference/runai-submit.md#s----service-type-string). - -* We are pleased to announce an enhancement to the Projects table where users now have the ability to view policies from within a project. For more information, see [Projects](). + +##### Ephemeral volumes +* We are pleased to announce support for Ephemeral volumes in *Workspaces*. Ephemeral storage is tied to the lifecycle of the *Workspace*. It’s temporary storage that gets wiped out and lost when the workspace is deleted. Ephemeral storage is added to the *Workspace* configuration form in the *Volume* pane. For configuration information, see step 7 in [Create a new workspace](../Researcher/user-interface/workspaces/create/.workspace-v2.md#create-a-new-workspace). +##### Email notifications -* We are pleased to announce new functionality where users can now receive notifications from scheduling events. Researchers using Run:ai can now receive notifications via email and is configured so that each user will only get the events relevant to their workloads. For more information, see [email notifications](). +* We are pleased to announce new functionality where users can now receive notifications from scheduling events. Researchers using Run:ai can now receive notifications via email and is configured so that each user will only get the events relevant to their workloads. For more information, see [email notifications](../admin/researcher-setup/email-messaging.md#email-notifications). +##### CLI improvements +* We are pleased to announce improved functionality in the `runai submit` command which now clarifies the port for the container using the `nodeport` flag. For more information, see `runai submit`, [--service-type](../Researcher/cli-reference/runai-submit.md#s----service-type-string) `nodeport`. +##### Policy improvements -* We are pleased to announce that we have increased the flexibility when creating policies. The improved flexibility includes the abililty to allocate a `min` and a `max` value for CPU and GPU memory. +* We are pleased to announce increased flexibility when creating policies. The improved flexibility includes the abililty to allocate a `min` and a `max` value for CPU and GPU memory. For configuration information, see [GPU and CPU memory limits](../admin/workloads/policies.md#gpu-and-cpu-memory-limits) in *Configuring policies*. +##### Resource costing -* We are pleased to announce that we have added an additional table to the Consumption dashboard. This table contains the consumption per department and the cost per department. For more information, see [Consumption dashboard]() - - - +* We are pleased to announce that we have added an additional table to the Consumption dashboard. This table contains the consumption per department and the cost per department. For more information, see [Consumption dashboard](../admin/admin-ui-setup/dashboard-analysis.md#consumption-dashboard). #### Fixed issues From 23a8b20654645dfde7378e106c2f57310f966827 Mon Sep 17 00:00:00 2001 From: jasonnovichRunAI <124490127+jasonnovichRunAI@users.noreply.github.com> Date: Sun, 3 Sep 2023 11:12:25 +0300 Subject: [PATCH 40/58] V2.14 (#464) * get-jobs-example * default-storage-class-sample * default-storage-class-sample * sso-changes * researcher-auth-for-sso * [RUN-11536] update whats new with version content * [RUN-11536] add RUN-10575 description. * moved try azure to graveyard * update TOC remove azure * [RUN-11536] whats new update up to staging --------- Co-authored-by: Yaron From 1ad4a96d88ea6e22c7d15856d95456a720f2e4ac Mon Sep 17 00:00:00 2001 From: jasonnovichRunAI <124490127+jasonnovichRunAI@users.noreply.github.com> Date: Sun, 3 Sep 2023 11:31:48 +0300 Subject: [PATCH 41/58] bug checks in whats new page --- docs/home/whats-new-2-14.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/home/whats-new-2-14.md b/docs/home/whats-new-2-14.md index d407a7d98e..41e9f9c9af 100644 --- a/docs/home/whats-new-2-14.md +++ b/docs/home/whats-new-2-14.md @@ -25,11 +25,11 @@ TODO Add RBAC old--new conversion table here. --> ##### Auto delete jobs -* We are pleased to announce new functionality in our UI and CLI that provides configuration options which automatically delete jobs after a specified amount of time. Auto-deletion provides more efficient use of resources and makes it easier for researchers to manage their jobs. For more configuration options in the UI, see Auto deletion (Step 9) in [Create a new workspace](../Researcher/user-interface/workspaces/create/.workspace-v2.md#create-a-new-workspace). For more information on the CLI flag, see [--auto-deletion-time-after-completion](../Researcher/cli-reference/runai-submit.md#auto-deletion-time-after-completion). +* We are pleased to announce new functionality in our UI and CLI that provides configuration options which automatically delete jobs after a specified amount of time. Auto-deletion provides more efficient use of resources and makes it easier for researchers to manage their jobs. For more configuration options in the UI, see Auto deletion (Step 9) in [Create a new workspace](../Researcher/user-interface/workspaces/create/workspace-v2.md#create-a-new-workspace). For more information on the CLI flag, see [--auto-deletion-time-after-completion](../Researcher/cli-reference/runai-submit.md). ##### Multiple service types -* We are pleased to announce new functionality in our CLI that allows submitting a workload with multiple service types at the same time in a CSV style format. Both the CLI and the UI now provide the same functionality. For more information see [runai submit ](../Researcher/cli-reference/runai-submit.md#s----service-type-string). +* We are pleased to announce new functionality in our CLI that allows submitting a workload with multiple service types at the same time in a CSV style format. Both the CLI and the UI now provide the same functionality. For more information see [runai submit ](../Researcher/cli-reference/runai-submit.md). From a3486097363fd7e0cdcacf01545102cf68c8dc34 Mon Sep 17 00:00:00 2001 From: jasonnovichRunAI <124490127+jasonnovichRunAI@users.noreply.github.com> Date: Sun, 3 Sep 2023 11:33:08 +0300 Subject: [PATCH 42/58] more fixes --- docs/home/whats-new-2-14.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/home/whats-new-2-14.md b/docs/home/whats-new-2-14.md index 41e9f9c9af..326b60ab90 100644 --- a/docs/home/whats-new-2-14.md +++ b/docs/home/whats-new-2-14.md @@ -29,7 +29,7 @@ TODO Add RBAC old--new conversion table here. --> ##### Multiple service types -* We are pleased to announce new functionality in our CLI that allows submitting a workload with multiple service types at the same time in a CSV style format. Both the CLI and the UI now provide the same functionality. For more information see [runai submit ](../Researcher/cli-reference/runai-submit.md). +* We are pleased to announce new functionality in our CLI that allows submitting a workload with multiple service types at the same time in a CSV style format. Both the CLI and the UI now provide the same functionality. For more information see [runai submit](../Researcher/cli-reference/runai-submit.md). From 5828a85ea7f2257fe5bd1aed8893e69c3e75e03c Mon Sep 17 00:00:00 2001 From: jasonnovichRunAI <124490127+jasonnovichRunAI@users.noreply.github.com> Date: Sun, 3 Sep 2023 11:33:57 +0300 Subject: [PATCH 43/58] correction to previous versions list --- docs/home/whats-new-2-14.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/home/whats-new-2-14.md b/docs/home/whats-new-2-14.md index 326b60ab90..1f81118b33 100644 --- a/docs/home/whats-new-2-14.md +++ b/docs/home/whats-new-2-14.md @@ -8,7 +8,7 @@ August 2023 #### Release content -This version contains features and fixes from previous versions starting with 2.9. Refer to the prior versions for specific features and fixes. For information about features, functionality, and fixed issues in previous versions see: +This version contains features and fixes from previous versions. Refer to the prior versions for specific features and fixes. For information about features, functionality, and fixed issues in previous versions see: * [What's new 2.13](whats-new-2-13.md) * [What's new 2.12](whats-new-2-12.md) From 317dfae7584f1237be16a8d2d4950acf93c094e9 Mon Sep 17 00:00:00 2001 From: jasonnovichRunAI <124490127+jasonnovichRunAI@users.noreply.github.com> Date: Sun, 3 Sep 2023 11:34:33 +0300 Subject: [PATCH 44/58] fixed comment location --- docs/home/whats-new-2-14.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/home/whats-new-2-14.md b/docs/home/whats-new-2-14.md index 1f81118b33..4b3a6f4d63 100644 --- a/docs/home/whats-new-2-14.md +++ b/docs/home/whats-new-2-14.md @@ -13,10 +13,9 @@ This version contains features and fixes from previous versions. Refer to the pr * [What's new 2.13](whats-new-2-13.md) * [What's new 2.12](whats-new-2-12.md) * [What's new 2.10](whats-new-2-10.md) - ##### Role based access control - + Stating in this version, Run:ai had updated the authorization system to Role Based Access Control (RBAC). RBAC is a policy-neutral access control mechanism defined around roles and privileges. For more information, see [Role based access control](../admin/runai-setup/access-control/rbac.md#role-based-access-control). * We are pleased to announce that we have added an additional table to the Consumption dashboard. This table contains the consumption per department and the cost per department. For more information, see [Consumption dashboard](../admin/admin-ui-setup/dashboard-analysis.md#consumption-dashboard). +##### Deployment improvements + +* We are pleased to announce improvements to the deployment form which now include support for tolerations and Multi-Process Service (MPS). +* *Tolerations* are . +* Multi-Process Service (MPS) is + + To configure *Tolerations* and *MPS*: + 1. In the left pane menu, press *Deployments*, then press *New deployment*. + 2. Complete the required fields in the form, then press *Container definition*. + 3. To enable *MPS* support, move the selector switch. + 4. To configure *Tolerations*: + 1. In the *Tolerations* pane, press *Add*. + 2. Enter the *Key* and *Operator*. + 3. Select an *Effect* from the drop down menu. + 4. Enter a *Value* and *Toleration seconds* (optional). + 5. When your form is complete press *Deploy*. + #### Fixed issues | Internal ID | Description | From 6516d16346cc9478f88c354763cdb3e25b13a4a6 Mon Sep 17 00:00:00 2001 From: Guy Shaibi Date: Mon, 4 Sep 2023 15:20:48 +0300 Subject: [PATCH 46/58] . --- .../runai-setup/authentication/researcher-authentication.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/admin/runai-setup/authentication/researcher-authentication.md b/docs/admin/runai-setup/authentication/researcher-authentication.md index b897f1a120..f06e3c0fc2 100644 --- a/docs/admin/runai-setup/authentication/researcher-authentication.md +++ b/docs/admin/runai-setup/authentication/researcher-authentication.md @@ -100,7 +100,7 @@ Modifying the API Server configuration differs between Kubernetes distributions: ``` kubectl get clientconfig default -n kube-public -o yaml > login-config.yaml - yq -i e ".spec +={\"authentication\":[{\"name\":\"oidc\",\"oidc\":{\"clientID\":\"runai\",\"issuerURI\":\"$OIDC_ISSUER_URL\",\"groupClaim\":\"groups\",\"kubectlRedirectURI\":\"http://localhost:8000/callback\",\"userClaim\":\"email\",\"userPrefix\":\"-\"}}]}" login-config.yaml + yq -i e ".spec +={\"authentication\":[{\"name\":\"oidc\",\"oidc\":{\"clientID\":\"runai\",\"issuerURI\":\"$OIDC_ISSUER_URL\",\"groupsClaim\":\"groups\",\"kubectlRedirectURI\":\"http://localhost:8000/callback\",\"userClaim\":\"email\",\"userPrefix\":\"-\"}}]}" login-config.yaml kubectl apply -f login-config.yaml ``` From c913ed7eb783697186483b11716c586c49aff307 Mon Sep 17 00:00:00 2001 From: jasonnovichRunAI <124490127+jasonnovichRunAI@users.noreply.github.com> Date: Tue, 5 Sep 2023 10:40:56 +0300 Subject: [PATCH 47/58] Added to whats new tolerations meaning --- docs/home/whats-new-2-14.md | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/docs/home/whats-new-2-14.md b/docs/home/whats-new-2-14.md index 17e121e45c..04eeb46558 100644 --- a/docs/home/whats-new-2-14.md +++ b/docs/home/whats-new-2-14.md @@ -55,20 +55,24 @@ TODO Add RBAC old--new conversion table here. --> ##### Deployment improvements -* We are pleased to announce improvements to the deployment form which now include support for tolerations and Multi-Process Service (MPS). -* *Tolerations* are . -* Multi-Process Service (MPS) is +* We are pleased to announce improvements to the deployment form which now include support for and *Multi-Process Service (MPS)*. *MPS* is a service which allows the running of parallel processes on the same GPU, which are all run by the same userid. To enable *MPS* support, move the selector switch on the *Deployments* form. + +!!! Note + If you do not use the same userid, the processes will run in serial and could possibly degrade performance. + +* We are pleased to announce improvements to the deployment form which now include support for *Tolerations*. *Tolerations* guide the system to which node each pod can be + scheduled to or evicted by matching between rules and taints defined for each Kubernetes node. + - To configure *Tolerations* and *MPS*: - 1. In the left pane menu, press *Deployments*, then press *New deployment*. - 2. Complete the required fields in the form, then press *Container definition*. - 3. To enable *MPS* support, move the selector switch. - 4. To configure *Tolerations*: - 1. In the *Tolerations* pane, press *Add*. - 2. Enter the *Key* and *Operator*. - 3. Select an *Effect* from the drop down menu. - 4. Enter a *Value* and *Toleration seconds* (optional). - 5. When your form is complete press *Deploy*. +To configure *Tolerations*: + 1. In the left pane menu, press *Deployments*, then press *New deployment*. + 2. Complete the required fields in the form, then press *Container definition*. + 3. To configure *Tolerations*: + 1. In the *Tolerations* pane, press *Add*. + 2. Enter the *Key* and select and option from the *Operator* drop down. + 3. Select an *Effect* from the drop down. + 4. Enter a *Value* and *Toleration seconds* (optional). + 4. When your form is complete press *Deploy*. #### Fixed issues From 34a528b309bb4dbd3fb75088cddb30ac594fe7f3 Mon Sep 17 00:00:00 2001 From: jasonnovichRunAI <124490127+jasonnovichRunAI@users.noreply.github.com> Date: Thu, 7 Sep 2023 11:27:17 +0300 Subject: [PATCH 48/58] Gammar corrections --- docs/home/whats-new-2-14.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/home/whats-new-2-14.md b/docs/home/whats-new-2-14.md index 04eeb46558..67ac13ce93 100644 --- a/docs/home/whats-new-2-14.md +++ b/docs/home/whats-new-2-14.md @@ -8,7 +8,7 @@ August 2023 #### Release content -This version contains features and fixes from previous versions. Refer to the prior versions for specific features and fixes. For information about features, functionality, and fixed issues in previous versions see: +This version contains new features and fixes in addition to the features and fixes from previous versions. For information about features, functionality, and fixed issues in previous versions see: * [What's new 2.13](whats-new-2-13.md) * [What's new 2.12](whats-new-2-12.md) @@ -24,7 +24,7 @@ TODO Add RBAC old--new conversion table here. --> ##### Auto delete jobs -* We are pleased to announce new functionality in our UI and CLI that provides configuration options which automatically delete jobs after a specified amount of time. Auto-deletion provides more efficient use of resources and makes it easier for researchers to manage their jobs. For more configuration options in the UI, see Auto deletion (Step 9) in [Create a new workspace](../Researcher/user-interface/workspaces/create/workspace-v2.md#create-a-new-workspace). For more information on the CLI flag, see [--auto-deletion-time-after-completion](../Researcher/cli-reference/runai-submit.md). +* We are pleased to announce new functionality in our UI and CLI that provides configuration options which automatically delete jobs after a specified amount of time. Auto-deletion provides more efficient use of resources and makes it easier for researchers to manage their jobs. For more configuration options in the UI, see *Auto deletion* (Step 9) in [Create a new workspace](../Researcher/user-interface/workspaces/create/workspace-v2.md#create-a-new-workspace). For more information on the CLI flag, see [--auto-deletion-time-after-completion](../Researcher/cli-reference/runai-submit.md). ##### Multiple service types @@ -47,7 +47,7 @@ TODO Add RBAC old--new conversion table here. --> ##### Policy improvements -* We are pleased to announce increased flexibility when creating policies. The improved flexibility includes the abililty to allocate a `min` and a `max` value for CPU and GPU memory. For configuration information, see [GPU and CPU memory limits](../admin/workloads/policies.md#gpu-and-cpu-memory-limits) in *Configuring policies*. +* We are pleased to announce increased flexibility when creating policies. The improved flexibility includes the ability to allocate a `min` and a `max` value for CPU and GPU memory. For configuration information, see [GPU and CPU memory limits](../admin/workloads/policies.md#gpu-and-cpu-memory-limits) in *Configuring policies*. ##### Resource costing From d906d046a3b1abf0813a4c513e8a2c3f30116e96 Mon Sep 17 00:00:00 2001 From: morangux Date: Fri, 8 Sep 2023 09:30:09 +0300 Subject: [PATCH 49/58] updated --- install/kube-install.sh | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/install/kube-install.sh b/install/kube-install.sh index 87384f3524..761bcec5c2 100644 --- a/install/kube-install.sh +++ b/install/kube-install.sh @@ -62,11 +62,12 @@ function install-containerd { function k8s-install { sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl - sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg - echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list - sudo apt-get update + curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg + echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v${package_version}/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list + echo "package version set to ${package_version}" + sudo apt-get update echo -e "${GREEN} installing kubectl kubeadm kubelet...${NC}" - sudo apt-get install -y kubelet="${k8s_version}-00" kubeadm="${k8s_version}-00" kubectl="${k8s_version}-00" + sudo apt-get install -y kubelet="${k8s_version}-1.1" kubeadm="${k8s_version}-1.1" kubectl="${k8s_version}-1.1" } # *** init K8s @@ -134,6 +135,7 @@ then sleep 5 read -p "$(echo -e "${YELLOW}Please enter kubernetes version, or press enter for default (1.24.7) :${NC}")" k8s_version k8s_version=${k8s_version:-"1.24.7"} + package_version=${k8s_version%.*} read -p "$(echo -e "${YELLOW}Please select CNI plugin or press enter for default ([1] Flannel(default) , [2] Calico) :${NC}")" cni_plugin cni_plugin=${cni_plugin:-"1"} disable-swap From 553f12b98e598d257c689eaf7fd565025b9ae76f Mon Sep 17 00:00:00 2001 From: jasonnovichRunAI <124490127+jasonnovichRunAI@users.noreply.github.com> Date: Mon, 11 Sep 2023 09:26:41 +0300 Subject: [PATCH 50/58] Fixed grammar and MD --- docs/admin/researcher-setup/cli-install.md | 23 +++++++++++----------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/docs/admin/researcher-setup/cli-install.md b/docs/admin/researcher-setup/cli-install.md index aa932ba534..37822bcea6 100644 --- a/docs/admin/researcher-setup/cli-install.md +++ b/docs/admin/researcher-setup/cli-install.md @@ -1,6 +1,6 @@ # Install the Run:ai Command-line Interface -The Run:ai Command-line Interface (CLI) is __one__ of the ways for a Researcher to send deep learning workloads, acquire GPU-based containers, list jobs, etc. +The Run:ai Command-line Interface (CLI) is **one** of the ways for a Researcher to send deep learning workloads, acquire GPU-based containers, list jobs, etc. The instructions below will guide you through the process of installing the CLI. The Run:ai CLI runs on Mac and Linux. You can run the CLI on Windows by using Docker for Windows. See the end of this document. @@ -11,33 +11,32 @@ When enabled, Researcher authentication requires additional setup when installin ## Prerequisites -* When installing the command-line interface, it is worth considering future upgrades: - * Install the CLI on a dedicated _Jumpbox_ machine. Researchers will connect to the Jumpbox from which they can submit Run:ai commands +* When installing the command-line interface, it is worth considering future upgrades: + * Install the CLI on a dedicated *Jumpbox* machine. Researchers will connect to the Jumpbox from which they can submit Run:ai commands * Install the CLI on a shared directory that is mounted on Researchers' machines. -* A __Kubernetes configuration file__. - +* A **Kubernetes configuration file**. ## Setup ### Kubernetes Configuration -* On the Researcher's root folder, create a directory _.kube_. Copy the Kubernetes configuration file into the directory. Each Researcher should have a __separate copy__ of the configuration file. The Researcher should have _write_ access to the configuration file as it stores user defaults. -* If you choose to locate the file at a different location than `~/.kube/config`, you must create a shell variable to point to the configuration file as follows: +* In the Researcher's root folder, create a directory *.kube*. Copy the Kubernetes configuration file into the directory. Each Researcher should have a **separate copy** of the configuration file. The Researcher should have *write* access to the configuration file as it stores user defaults. +* If you choose to locate the file at a different location than `~/.kube/config`, you must create a shell variable to point to the configuration file as follows: ``` export KUBECONFIG= ``` -* Test the connection by running: +* Test the connection by running: ``` kubectl get nodes ``` -### Install Run:ai CLI +### Install Run:ai CLI * Go to the Run:ai user interface. On the top right select `Researcher Command Line Interface`. -* Select `Mac`, `Linux` or `Windows`. +* Select `Mac`, `Linux` or `Windows`. * Download directly using the button or copy the file to run it on a remote machine === "Mac or Linux" @@ -48,7 +47,7 @@ kubectl get nodes sudo mv runai /usr/local/bin/runai ``` -=== "Windows" +=== "Windows" Rename the downloaded file to have a `.exe` extension and move the file to a folder that is a part of the `PATH`. !!! Note @@ -63,7 +62,7 @@ To verify the installation run: runai list jobs ``` -## Install Command Auto-Completion +## Install Command Auto-Completion It is possible to configure your Linux/Mac shell to complete Run:ai CLI commands. This feature works on _bash_ and _zsh_ shells only. From 6539198af79f8699c1654663645c302d5e1a9b41 Mon Sep 17 00:00:00 2001 From: jasonnovichRunAI <124490127+jasonnovichRunAI@users.noreply.github.com> Date: Wed, 13 Sep 2023 15:32:38 +0300 Subject: [PATCH 51/58] updated whats new --- docs/home/whats-new-2-14.md | 32 +++++++++++--------------------- 1 file changed, 11 insertions(+), 21 deletions(-) diff --git a/docs/home/whats-new-2-14.md b/docs/home/whats-new-2-14.md index 67ac13ce93..56662f704c 100644 --- a/docs/home/whats-new-2-14.md +++ b/docs/home/whats-new-2-14.md @@ -1,20 +1,10 @@ # Run:ai version 2.14 -## Version 2.14.0 +## Version 2.14.0 September, 18, 2023 -### Release date +### Release content -August 2023 - -#### Release content - -This version contains new features and fixes in addition to the features and fixes from previous versions. For information about features, functionality, and fixed issues in previous versions see: - -* [What's new 2.13](whats-new-2-13.md) -* [What's new 2.12](whats-new-2-12.md) -* [What's new 2.10](whats-new-2-10.md) - -##### Role based access control +#### Role based access control Stating in this version, Run:ai had updated the authorization system to Role Based Access Control (RBAC). RBAC is a policy-neutral access control mechanism defined around roles and privileges. For more information, see [Role based access control](../admin/runai-setup/access-control/rbac.md#role-based-access-control). @@ -22,38 +12,38 @@ Stating in this version, Run:ai had updated the authorization system to Role Bas TODO Add RBAC old--new conversion table here. --> -##### Auto delete jobs +#### Auto delete jobs * We are pleased to announce new functionality in our UI and CLI that provides configuration options which automatically delete jobs after a specified amount of time. Auto-deletion provides more efficient use of resources and makes it easier for researchers to manage their jobs. For more configuration options in the UI, see *Auto deletion* (Step 9) in [Create a new workspace](../Researcher/user-interface/workspaces/create/workspace-v2.md#create-a-new-workspace). For more information on the CLI flag, see [--auto-deletion-time-after-completion](../Researcher/cli-reference/runai-submit.md). -##### Multiple service types +#### Multiple service types * We are pleased to announce new functionality in our CLI that allows submitting a workload with multiple service types at the same time in a CSV style format. Both the CLI and the UI now provide the same functionality. For more information see [runai submit](../Researcher/cli-reference/runai-submit.md). -##### Ephemeral volumes +#### Ephemeral volumes * We are pleased to announce support for Ephemeral volumes in *Workspaces*. Ephemeral storage is tied to the lifecycle of the *Workspace*. It’s temporary storage that gets wiped out and lost when the workspace is deleted. Ephemeral storage is added to the *Workspace* configuration form in the *Volume* pane. For configuration information, see step 7 in [Create a new workspace](../Researcher/user-interface/workspaces/create/.workspace-v2.md#create-a-new-workspace). -##### Email notifications +#### Email notifications * We are pleased to announce new functionality where users can now receive notifications from scheduling events. Researchers using Run:ai can now receive notifications via email and is configured so that each user will only get the events relevant to their workloads. For more information, see [email notifications](../admin/researcher-setup/email-messaging.md#email-notifications). -##### CLI improvements +#### CLI improvements * We are pleased to announce improved functionality in the `runai submit` command which now clarifies the port for the container using the `nodeport` flag. For more information, see `runai submit`, [--service-type](../Researcher/cli-reference/runai-submit.md#s----service-type-string) `nodeport`. -##### Policy improvements +#### Policy improvements * We are pleased to announce increased flexibility when creating policies. The improved flexibility includes the ability to allocate a `min` and a `max` value for CPU and GPU memory. For configuration information, see [GPU and CPU memory limits](../admin/workloads/policies.md#gpu-and-cpu-memory-limits) in *Configuring policies*. -##### Resource costing +#### Resource costing * We are pleased to announce that we have added an additional table to the Consumption dashboard. This table contains the consumption per department and the cost per department. For more information, see [Consumption dashboard](../admin/admin-ui-setup/dashboard-analysis.md#consumption-dashboard). -##### Deployment improvements +#### Deployment improvements * We are pleased to announce improvements to the deployment form which now include support for and *Multi-Process Service (MPS)*. *MPS* is a service which allows the running of parallel processes on the same GPU, which are all run by the same userid. To enable *MPS* support, move the selector switch on the *Deployments* form. From 0619b69156df6b052bf6aa0fb1ce626b4e8b4895 Mon Sep 17 00:00:00 2001 From: jasonnovichRunAI <124490127+jasonnovichRunAI@users.noreply.github.com> Date: Wed, 13 Sep 2023 15:39:04 +0300 Subject: [PATCH 52/58] remove old whats new files --- {docs/home => graveyard}/whats-new-2020.md | 0 {docs/home => graveyard}/whats-new-2021.md | 0 {docs/home => graveyard}/whats-new-2022.md | 0 mkdocs.yml | 3 --- 4 files changed, 3 deletions(-) rename {docs/home => graveyard}/whats-new-2020.md (100%) rename {docs/home => graveyard}/whats-new-2021.md (100%) rename {docs/home => graveyard}/whats-new-2022.md (100%) diff --git a/docs/home/whats-new-2020.md b/graveyard/whats-new-2020.md similarity index 100% rename from docs/home/whats-new-2020.md rename to graveyard/whats-new-2020.md diff --git a/docs/home/whats-new-2021.md b/graveyard/whats-new-2021.md similarity index 100% rename from docs/home/whats-new-2021.md rename to graveyard/whats-new-2021.md diff --git a/docs/home/whats-new-2022.md b/graveyard/whats-new-2022.md similarity index 100% rename from docs/home/whats-new-2022.md rename to graveyard/whats-new-2022.md diff --git a/mkdocs.yml b/mkdocs.yml index 8fd5ee1311..9ebd18d0e2 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -155,9 +155,6 @@ nav: - 'Version 2.10' : 'home/whats-new-2-10.md' - 'Version 2.9' : 'home/whats-new-2-9.md' - 'Version 2.8' : 'home/whats-new-2-8.md' - - 'Whats New 2022' : 'home/whats-new-2022.md' - - 'Whats New 2021' : 'home/whats-new-2021.md' - - 'Whats New 2020' : 'home/whats-new-2020.md' - 'Data Privacy' : 'home/data-privacy-details.md' - 'Administrator' : - 'Overview' : 'admin/overview-administrator.md' From 9cbd0fe1bb79ece110075d214f973defdc1b50a3 Mon Sep 17 00:00:00 2001 From: jasonnovichRunAI <124490127+jasonnovichRunAI@users.noreply.github.com> Date: Wed, 13 Sep 2023 15:40:58 +0300 Subject: [PATCH 53/58] update title of whats new --- docs/home/whats-new-2-14.md | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/docs/home/whats-new-2-14.md b/docs/home/whats-new-2-14.md index 56662f704c..384b04806e 100644 --- a/docs/home/whats-new-2-14.md +++ b/docs/home/whats-new-2-14.md @@ -1,10 +1,8 @@ -# Run:ai version 2.14 +# Run:ai version 2.14 - September, 18, 2023 -## Version 2.14.0 September, 18, 2023 +## Release content -### Release content - -#### Role based access control +### Role based access control Stating in this version, Run:ai had updated the authorization system to Role Based Access Control (RBAC). RBAC is a policy-neutral access control mechanism defined around roles and privileges. For more information, see [Role based access control](../admin/runai-setup/access-control/rbac.md#role-based-access-control). @@ -12,38 +10,38 @@ Stating in this version, Run:ai had updated the authorization system to Role Bas TODO Add RBAC old--new conversion table here. --> -#### Auto delete jobs +### Auto delete jobs * We are pleased to announce new functionality in our UI and CLI that provides configuration options which automatically delete jobs after a specified amount of time. Auto-deletion provides more efficient use of resources and makes it easier for researchers to manage their jobs. For more configuration options in the UI, see *Auto deletion* (Step 9) in [Create a new workspace](../Researcher/user-interface/workspaces/create/workspace-v2.md#create-a-new-workspace). For more information on the CLI flag, see [--auto-deletion-time-after-completion](../Researcher/cli-reference/runai-submit.md). -#### Multiple service types +### Multiple service types * We are pleased to announce new functionality in our CLI that allows submitting a workload with multiple service types at the same time in a CSV style format. Both the CLI and the UI now provide the same functionality. For more information see [runai submit](../Researcher/cli-reference/runai-submit.md). -#### Ephemeral volumes +### Ephemeral volumes * We are pleased to announce support for Ephemeral volumes in *Workspaces*. Ephemeral storage is tied to the lifecycle of the *Workspace*. It’s temporary storage that gets wiped out and lost when the workspace is deleted. Ephemeral storage is added to the *Workspace* configuration form in the *Volume* pane. For configuration information, see step 7 in [Create a new workspace](../Researcher/user-interface/workspaces/create/.workspace-v2.md#create-a-new-workspace). -#### Email notifications +### Email notifications * We are pleased to announce new functionality where users can now receive notifications from scheduling events. Researchers using Run:ai can now receive notifications via email and is configured so that each user will only get the events relevant to their workloads. For more information, see [email notifications](../admin/researcher-setup/email-messaging.md#email-notifications). -#### CLI improvements +### CLI improvements * We are pleased to announce improved functionality in the `runai submit` command which now clarifies the port for the container using the `nodeport` flag. For more information, see `runai submit`, [--service-type](../Researcher/cli-reference/runai-submit.md#s----service-type-string) `nodeport`. -#### Policy improvements +### Policy improvements * We are pleased to announce increased flexibility when creating policies. The improved flexibility includes the ability to allocate a `min` and a `max` value for CPU and GPU memory. For configuration information, see [GPU and CPU memory limits](../admin/workloads/policies.md#gpu-and-cpu-memory-limits) in *Configuring policies*. -#### Resource costing +### Resource costing * We are pleased to announce that we have added an additional table to the Consumption dashboard. This table contains the consumption per department and the cost per department. For more information, see [Consumption dashboard](../admin/admin-ui-setup/dashboard-analysis.md#consumption-dashboard). -#### Deployment improvements +### Deployment improvements * We are pleased to announce improvements to the deployment form which now include support for and *Multi-Process Service (MPS)*. *MPS* is a service which allows the running of parallel processes on the same GPU, which are all run by the same userid. To enable *MPS* support, move the selector switch on the *Deployments* form. @@ -64,7 +62,7 @@ To configure *Tolerations*: 4. Enter a *Value* and *Toleration seconds* (optional). 4. When your form is complete press *Deploy*. -#### Fixed issues +### Fixed issues | Internal ID | Description | | ---------------------------- | ---- | From 4f7b6d1faa4cc9a52c27c3382e62e3cdcb5fd66d Mon Sep 17 00:00:00 2001 From: jasonnovichRunAI <124490127+jasonnovichRunAI@users.noreply.github.com> Date: Wed, 13 Sep 2023 15:45:44 +0300 Subject: [PATCH 54/58] fix procedure OL --- docs/home/whats-new-2-14.md | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/docs/home/whats-new-2-14.md b/docs/home/whats-new-2-14.md index 384b04806e..e4b3d9f967 100644 --- a/docs/home/whats-new-2-14.md +++ b/docs/home/whats-new-2-14.md @@ -53,14 +53,17 @@ TODO Add RBAC old--new conversion table here. --> To configure *Tolerations*: - 1. In the left pane menu, press *Deployments*, then press *New deployment*. - 2. Complete the required fields in the form, then press *Container definition*. - 3. To configure *Tolerations*: - 1. In the *Tolerations* pane, press *Add*. - 2. Enter the *Key* and select and option from the *Operator* drop down. - 3. Select an *Effect* from the drop down. - 4. Enter a *Value* and *Toleration seconds* (optional). - 4. When your form is complete press *Deploy*. + +1. In the left pane menu, press *Deployments*, then press *New deployment*. +2. Complete the required fields in the form, then press *Container definition*. +3. To configure *Tolerations*: + + 1. In the *Tolerations* pane, press *Add*. + 2. Enter the *Key* and select and option from the *Operator* drop down. + 3. Select an *Effect* from the drop down. + 4. Enter a *Value* and *Toleration seconds* (optional). + +4. When your form is complete press *Deploy*. ### Fixed issues From dbbb89d3444a49543a98b2f6613ecb776fb2b019 Mon Sep 17 00:00:00 2001 From: jasonnovichRunAI <124490127+jasonnovichRunAI@users.noreply.github.com> Date: Mon, 18 Sep 2023 10:22:45 +0300 Subject: [PATCH 55/58] updated what's new and emails --- .../admin/researcher-setup/email-messaging.md | 5 ++-- docs/home/whats-new-2-14.md | 30 +++++++++---------- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/docs/admin/researcher-setup/email-messaging.md b/docs/admin/researcher-setup/email-messaging.md index 12989617ac..b8bd1fa3c2 100644 --- a/docs/admin/researcher-setup/email-messaging.md +++ b/docs/admin/researcher-setup/email-messaging.md @@ -2,9 +2,10 @@ The notifications service listens to events on the Kubernetes cluster and passes notifications of those events via email. The service can be configured to send the notifications to one or more pre configured email addresses, or to the email address of the user that submitted the workload. -Note: In order to send notifications dynamically to the user who submitted the workload, the user should be logged in to the Run:ai UI or CLI. +???+ Note + In order to send notifications dynamically to the user who submitted the workload, the user should be logged in to the Run:ai UI or CLI. -The service can also be configured using a regular expression to send notifications only for specific namespaces on the cluster. This enables notification only for specific Run:ai projects. The default configuration sends notifications for all the namespaces starting with `runai-`. +The service can also be configured using a regular expression to send notifications only for specific namespaces on the cluster. This enables notifications only for specific Run:ai projects. The default configuration sends notifications for all the namespaces starting with `runai-`. ## Prerequisites diff --git a/docs/home/whats-new-2-14.md b/docs/home/whats-new-2-14.md index e4b3d9f967..8a3eac7e20 100644 --- a/docs/home/whats-new-2-14.md +++ b/docs/home/whats-new-2-14.md @@ -12,46 +12,46 @@ TODO Add RBAC old--new conversion table here. --> ### Auto delete jobs -* We are pleased to announce new functionality in our UI and CLI that provides configuration options which automatically delete jobs after a specified amount of time. Auto-deletion provides more efficient use of resources and makes it easier for researchers to manage their jobs. For more configuration options in the UI, see *Auto deletion* (Step 9) in [Create a new workspace](../Researcher/user-interface/workspaces/create/workspace-v2.md#create-a-new-workspace). For more information on the CLI flag, see [--auto-deletion-time-after-completion](../Researcher/cli-reference/runai-submit.md). +* Added new functionality to the UI and CLI that provides configuration options which automatically delete jobs after a specified amount of time. Auto-deletion provides more efficient use of resources and makes it easier for researchers to manage their jobs. For more configuration options in the UI, see *Auto deletion* (Step 9) in [Create a new workspace](../Researcher/user-interface/workspaces/create/workspace-v2.md#create-a-new-workspace). For more information on the CLI flag, see [--auto-deletion-time-after-completion](../Researcher/cli-reference/runai-submit.md). ### Multiple service types -* We are pleased to announce new functionality in our CLI that allows submitting a workload with multiple service types at the same time in a CSV style format. Both the CLI and the UI now provide the same functionality. For more information see [runai submit](../Researcher/cli-reference/runai-submit.md). +* Added new functionality to our CLI that allows submitting a workload with multiple service types at the same time in a CSV style format. Both the CLI and the UI now provide the same functionality. For more information see [runai submit](../Researcher/cli-reference/runai-submit.md). ### Ephemeral volumes -* We are pleased to announce support for Ephemeral volumes in *Workspaces*. Ephemeral storage is tied to the lifecycle of the *Workspace*. It’s temporary storage that gets wiped out and lost when the workspace is deleted. Ephemeral storage is added to the *Workspace* configuration form in the *Volume* pane. For configuration information, see step 7 in [Create a new workspace](../Researcher/user-interface/workspaces/create/.workspace-v2.md#create-a-new-workspace). +* Added support for Ephemeral volumes in *Workspaces*. Ephemeral storage is tied to the lifecycle of the *Workspace*, which is temporary storage that gets wiped out and lost when the workspace is deleted. Ephemeral storage is added to the *Workspace* configuration form in the *Volume* pane. For configuration information, see [Create a new workspace](../Researcher/user-interface/workspaces/create/.workspace-v2.md#create-a-new-workspace). ### Email notifications -* We are pleased to announce new functionality where users can now receive notifications from scheduling events. Researchers using Run:ai can now receive notifications via email and is configured so that each user will only get the events relevant to their workloads. For more information, see [email notifications](../admin/researcher-setup/email-messaging.md#email-notifications). +* Added new functionality that provides notifications from scheduling events. Run:ai can now send notifications via email and can be configured so that each user will only get the events relevant to their workloads. For more information, see [email notifications](../admin/researcher-setup/email-messaging.md#email-notifications). ### CLI improvements -* We are pleased to announce improved functionality in the `runai submit` command which now clarifies the port for the container using the `nodeport` flag. For more information, see `runai submit`, [--service-type](../Researcher/cli-reference/runai-submit.md#s----service-type-string) `nodeport`. +* Improved functionality in the `runai submit` command so that the port for the container is specified using the `nodeport` flag. For more information, see `runai submit`, [--service-type](../Researcher/cli-reference/runai-submit.md#s----service-type-string) `nodeport`. ### Policy improvements -* We are pleased to announce increased flexibility when creating policies. The improved flexibility includes the ability to allocate a `min` and a `max` value for CPU and GPU memory. For configuration information, see [GPU and CPU memory limits](../admin/workloads/policies.md#gpu-and-cpu-memory-limits) in *Configuring policies*. +* Improved flexibility when creating policies which provides the ability to allocate a `min` and a `max` value for CPU and GPU memory. For configuration information, see [GPU and CPU memory limits](../admin/workloads/policies.md#gpu-and-cpu-memory-limits) in *Configuring policies*. ### Resource costing -* We are pleased to announce that we have added an additional table to the Consumption dashboard. This table contains the consumption per department and the cost per department. For more information, see [Consumption dashboard](../admin/admin-ui-setup/dashboard-analysis.md#consumption-dashboard). +* Added an additional table to the Consumption dashboard that contains the consumption per department and the cost per department. For more information, see [Consumption dashboard](../admin/admin-ui-setup/dashboard-analysis.md#consumption-dashboard). ### Deployment improvements -* We are pleased to announce improvements to the deployment form which now include support for and *Multi-Process Service (MPS)*. *MPS* is a service which allows the running of parallel processes on the same GPU, which are all run by the same userid. To enable *MPS* support, move the selector switch on the *Deployments* form. +* Improvements in the *Deployment* form include: + + * Support for *Tolerations*. *Tolerations* guide the system to which node each pod can be scheduled to or evicted by matching between rules and taints defined for each Kubernetes node. + * Support for *Multi-Process Service (MPS)*. *MPS* is a service which allows the running of parallel processes on the same GPU, which are all run by the same userid. To enable *MPS* support, move the selector switch on the *Deployments* form. -!!! Note - If you do not use the same userid, the processes will run in serial and could possibly degrade performance. + !!! Note + If you do not use the same userid, the processes will run in serial and could possibly degrade performance. -* We are pleased to announce improvements to the deployment form which now include support for *Tolerations*. *Tolerations* guide the system to which node each pod can be - scheduled to or evicted by matching between rules and taints defined for each Kubernetes node. - - + ### Fixed issues | Internal ID | Description | From bc641414028c181fbcfd30461faa88e717844e1f Mon Sep 17 00:00:00 2001 From: jasonnovichRunAI <124490127+jasonnovichRunAI@users.noreply.github.com> Date: Mon, 18 Sep 2023 11:13:26 +0300 Subject: [PATCH 56/58] Update whats-new-2-14.md --- docs/home/whats-new-2-14.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/home/whats-new-2-14.md b/docs/home/whats-new-2-14.md index 8a3eac7e20..155df89844 100644 --- a/docs/home/whats-new-2-14.md +++ b/docs/home/whats-new-2-14.md @@ -4,7 +4,7 @@ ### Role based access control -Stating in this version, Run:ai had updated the authorization system to Role Based Access Control (RBAC). RBAC is a policy-neutral access control mechanism defined around roles and privileges. For more information, see [Role based access control](../admin/runai-setup/access-control/rbac.md#role-based-access-control). +* Run:ai has updated the authorization system to Role Based Access Control (RBAC). RBAC is a policy-neutral access control mechanism defined around roles and privileges. For more information, see [Role based access control](../admin/runai-setup/access-control/rbac.md#role-based-access-control). ### Deployment improvements -* Improvements in the *Deployment* form include: - - * Support for *Tolerations*. *Tolerations* guide the system to which node each pod can be scheduled to or evicted by matching between rules and taints defined for each Kubernetes node. - * Support for *Multi-Process Service (MPS)*. *MPS* is a service which allows the running of parallel processes on the same GPU, which are all run by the same userid. To enable *MPS* support, move the selector switch on the *Deployments* form. +* Improvements in the *Deployment* form include: + * Support for *Tolerations*. *Tolerations* guide the system to which node each pod can be scheduled to or evicted by matching between rules and taints defined for each Kubernetes node. + * Support for *Multi-Process Service (MPS)*. *MPS* is a service which allows the running of parallel processes on the same GPU, which are all run by the same userid. To enable *MPS* support, move the selector switch on the *Deployments* form. - !!! Note - If you do not use the same userid, the processes will run in serial and could possibly degrade performance. + !!! Note + If you do not use the same userid, the processes will run in serial and could possibly degrade performance.