diff --git a/.bumpversion.cfg b/.bumpversion.cfg
index 545b0297332..2ee6e147b50 100644
--- a/.bumpversion.cfg
+++ b/.bumpversion.cfg
@@ -1,5 +1,5 @@
[bumpversion]
-current_version = 0.8.2-beta.33
+current_version = 0.8.2-beta.35
tag = False
tag_name = {new_version}
commit = True
diff --git a/.github/workflows/cd-syft-dev.yml b/.github/workflows/cd-syft-dev.yml
index 65fc02e9093..9d13185d616 100644
--- a/.github/workflows/cd-syft-dev.yml
+++ b/.github/workflows/cd-syft-dev.yml
@@ -1,19 +1,48 @@
-name: CD - Syft - Deploy `dev` to K8s
+name: CD - Kubernetes - Dev
on:
- # TODO: Re-enable once merged & tested
- # schedule:
- # - cron: "0 */3 * * *"
+ schedule:
+ - cron: "0 */3 * * *"
workflow_dispatch:
inputs:
- none:
- description: "Run Tests Manually"
- required: false
+ check-cache:
+ type: boolean
+ description: "Check workflow cache"
+ default: false
+ deploy-helm:
+ type: boolean
+ description: "Deploy Helm Charts"
+ default: false
jobs:
+ check-last-run:
+ runs-on: om-ci-16vcpu-ubuntu2204
+
+ outputs:
+ same-commit: ${{ steps.cache.outputs.cache-hit }}
+
+ steps:
+ - name: Check for new changes
+ if: github.event_name == 'schedule' || github.event.inputs.check-cache == 'true'
+ id: cache
+ uses: actions/cache@v3
+ with:
+ path: scripts/k8s_dev_hash # we don't care about the file, just the key
+ key: k8s-dev-${{ github.sha }}
+ lookup-only: true
+
+ - name: Save Commit SHA
+ if: github.event_name == 'schedule' || github.event.inputs.check-cache == 'true'
+ # only for making the cache action happy
+ run: echo "${{ github.sha }}" > scripts/k8s_dev_hash
+
deploy-syft-dev:
+ needs: check-last-run
+ if: needs.check-last-run.outputs.same-commit != 'true'
+
runs-on: om-ci-16vcpu-ubuntu2204
+
steps:
- name: Permission to home directory
run: |
@@ -39,7 +68,17 @@ jobs:
id: buildx
uses: docker/setup-buildx-action@v3
- - name: Login to Azure container registry
+ - name: Install Azure CLI
+ run: |
+ curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
+ az version
+
+ - name: Login to Azure CLI
+ uses: azure/login@v1
+ with:
+ creds: ${{ secrets.AZURE_CREDENTIALS_GITHUB_CI }}
+
+ - name: Login to Azure Container Registry
uses: azure/docker-login@v1
with:
login-server: ${{ secrets.ACR_SERVER }}
@@ -51,8 +90,8 @@ jobs:
shell: bash
run: echo "GRID_VERSION=$(python packages/grid/VERSION)" >> $GITHUB_OUTPUT
- - name: Build and push `grid-backend` image to DockerHub
- uses: docker/build-push-action@v4
+ - name: Build and push `grid-backend` image to registry
+ uses: docker/build-push-action@v5
with:
context: ./packages
file: ./packages/grid/backend/backend.dockerfile
@@ -61,9 +100,10 @@ jobs:
tags: |
${{ secrets.ACR_SERVER }}/openmined/grid-backend:dev
${{ secrets.ACR_SERVER }}/openmined/grid-backend:dev-${{ github.sha }}
+ ${{ secrets.ACR_SERVER }}/openmined/grid-backend:${{ steps.grid.outputs.GRID_VERSION }}
- - name: Build and push `grid-frontend` image to DockerHub
- uses: docker/build-push-action@v4
+ - name: Build and push `grid-frontend` image to registry
+ uses: docker/build-push-action@v5
with:
context: ./packages/grid/frontend
file: ./packages/grid/frontend/frontend.dockerfile
@@ -71,11 +111,12 @@ jobs:
tags: |
${{ secrets.ACR_SERVER }}/openmined/grid-frontend:dev
${{ secrets.ACR_SERVER }}/openmined/grid-frontend:dev-${{ github.sha }}
+ ${{ secrets.ACR_SERVER }}/openmined/grid-frontend:${{ steps.grid.outputs.GRID_VERSION }}
target: grid-ui-development
# TODO: Re-enable once we have Enclave up and running
- # - name: Build and push `grid-enclave` image to DockerHub
- # uses: docker/build-push-action@v4
+ # - name: Build and push `grid-enclave` image to registry
+ # uses: docker/build-push-action@v5
# with:
# context: ./packages
# file: ./packages/grid/worker/worker.dockerfile
@@ -84,9 +125,10 @@ jobs:
# tags: |
# ${{ secrets.ACR_SERVER }}/openmined/grid-enclave:dev
# ${{ secrets.ACR_SERVER }}/openmined/grid-enclave:dev-${{ github.sha }}
+ # ${{ secrets.ACR_SERVER }}/openmined/grid-enclave:${{ steps.grid.outputs.GRID_VERSION }}
- - name: Build and push `grid-headscale` image to DockerHub
- uses: docker/build-push-action@v4
+ - name: Build and push `grid-headscale` image to registry
+ uses: docker/build-push-action@v5
with:
context: ./packages/grid/vpn
file: ./packages/grid/vpn/headscale.dockerfile
@@ -94,9 +136,10 @@ jobs:
tags: |
${{ secrets.ACR_SERVER }}/openmined/grid-headscale:dev
${{ secrets.ACR_SERVER }}/openmined/grid-headscale:dev-${{ github.sha }}
+ ${{ secrets.ACR_SERVER }}/openmined/grid-headscale:${{ steps.grid.outputs.GRID_VERSION }}
- - name: Build and push `grid-tailscale` image to DockerHub
- uses: docker/build-push-action@v4
+ - name: Build and push `grid-tailscale` image to registry
+ uses: docker/build-push-action@v5
with:
context: ./packages/grid/vpn
file: ./packages/grid/vpn/tailscale.dockerfile
@@ -104,9 +147,10 @@ jobs:
tags: |
${{ secrets.ACR_SERVER }}/openmined/grid-tailscale:dev
${{ secrets.ACR_SERVER }}/openmined/grid-tailscale:dev-${{ github.sha }}
+ ${{ secrets.ACR_SERVER }}/openmined/grid-tailscale:${{ steps.grid.outputs.GRID_VERSION }}
- - name: Build and push `grid-vpn-iptables` image to DockerHub
- uses: docker/build-push-action@v2
+ - name: Build and push `grid-vpn-iptables` image to registry
+ uses: docker/build-push-action@v5
with:
context: ./packages/grid/vpn
file: ./packages/grid/vpn/iptables.dockerfile
@@ -114,8 +158,10 @@ jobs:
tags: |
${{ secrets.ACR_SERVER }}/openmined/grid-vpn-iptables:dev
${{ secrets.ACR_SERVER }}/openmined/grid-vpn-iptables:dev-${{ github.sha }}
+ ${{ secrets.ACR_SERVER }}/openmined/grid-vpn-iptables:${{ steps.grid.outputs.GRID_VERSION }}
- name: Build Helm Chart & Copy to infra
+ if: github.ref == 'refs/heads/dev' || github.event.inputs.deploy-helm == 'true'
shell: bash
run: |
K3D_VERSION=v5.6.0
@@ -142,6 +188,7 @@ jobs:
cp -R packages/grid/helm/syft/. packages/grid/helm/manifests.yaml infrastructure/gitops/environments/dev/
- name: Commit & push changes to Infra Repo
+ if: github.ref == 'refs/heads/dev' || github.event.inputs.deploy-helm == 'true'
uses: EndBug/add-and-commit@v9
with:
author_name: ${{ secrets.OM_BOT_NAME }}
@@ -150,3 +197,29 @@ jobs:
add: "."
push: "origin main"
cwd: "./infrastructure/"
+
+ - name: Cleanup Azure Container Registry
+ run: |
+ ACR_REGISTRY_NAME=${{ secrets.ACR_REGISTRY_NAME }}
+
+ echo ">> Fetching repo list.."
+ REPO_LIST=$(az acr repository list -n $ACR_REGISTRY_NAME -o tsv)
+
+ KEEP_PREV_VERSIONS=5
+ TAIL_FROM_LINE=$(($KEEP_PREV_VERSIONS + 1))
+
+ for repo in $REPO_LIST
+ do
+ echo "Cleaning up '$repo'"
+ az acr repository show-tags --name $ACR_REGISTRY_NAME --repository $repo --orderby time_desc --output tsv \
+ | grep dev- \
+ | tail -n +$TAIL_FROM_LINE \
+ | xargs -r -I% az acr repository untag --name $ACR_REGISTRY_NAME --image $repo:%
+ done
+
+ - name: Logout and cleanup Azure account
+ if: always()
+ run: |
+ az logout
+ az cache purge
+ az account clear
diff --git a/.github/workflows/cd-syft.yml b/.github/workflows/cd-syft.yml
index 506c7a9d351..f57a95a5f44 100644
--- a/.github/workflows/cd-syft.yml
+++ b/.github/workflows/cd-syft.yml
@@ -73,7 +73,8 @@ jobs:
shell: bash
run: |
# install k3d
- wget https://github.com/k3d-io/k3d/releases/download/v5.5.1/k3d-linux-amd64
+ K3D_VERSION=v5.6.0
+ wget https://github.com/k3d-io/k3d/releases/download/${K3D_VERSION}/k3d-linux-amd64
mv k3d-linux-amd64 k3d
chmod +x k3d
export PATH=`pwd`:$PATH
@@ -175,6 +176,7 @@ jobs:
files: |
./packages/syftcli/manifest.yml
./build/syftcli-config/*
+ ./packages/hagrid/hagrid/manifest_template.yml
tag_name: v${{ steps.release_checks.outputs.github_release_version }}
- name: Set up QEMU
diff --git a/.github/workflows/pr-tests-stack.yml b/.github/workflows/pr-tests-stack.yml
index a42a2cec76a..4bd93e90232 100644
--- a/.github/workflows/pr-tests-stack.yml
+++ b/.github/workflows/pr-tests-stack.yml
@@ -538,7 +538,7 @@ jobs:
chmod 700 get_helm.sh
./get_helm.sh
- - name: Run integration tests
+ - name: Run K8s & Helm integration tests
if: steps.changes.outputs.stack == 'true'
timeout-minutes: 60
env:
@@ -547,7 +547,8 @@ jobs:
shell: bash
run: |
# install k3d
- wget https://github.com/k3d-io/k3d/releases/download/v5.5.1/k3d-linux-amd64
+ K3D_VERSION=v5.6.0
+ wget https://github.com/k3d-io/k3d/releases/download/${K3D_VERSION}/k3d-linux-amd64
mv k3d-linux-amd64 k3d
chmod +x k3d
export PATH=`pwd`:$PATH
@@ -556,7 +557,7 @@ jobs:
curl -sSL https://github.com/loft-sh/devspace/releases/download/${DEVSPACE_VERSION}/devspace-linux-amd64 -o ./devspace
chmod +x devspace
devspace version
- # tox -e stack.test.integration.k8s
+ tox -e stack.test.integration.k8s
tox -e syft.build.helm
tox -e syft.package.helm
# tox -e syft.test.helm
diff --git a/.gitignore b/.gitignore
index 85f294b4f27..33dc85c251c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -73,3 +73,5 @@ nohup.out
# notebook data
notebooks/helm/scenario_data.jsonl
+# tox syft.build.helm generated file
+out.txt
diff --git a/VERSION b/VERSION
index eb0c9fba798..c45494e2144 100644
--- a/VERSION
+++ b/VERSION
@@ -1,5 +1,5 @@
# Mono Repo Global Version
-__version__ = "0.8.2-beta.33"
+__version__ = "0.8.2-beta.35"
# elsewhere we can call this file: `python VERSION` and simply take the stdout
# stdlib
diff --git a/notebooks/api/0.8/06-multiple-code-requests.ipynb b/notebooks/api/0.8/06-multiple-code-requests.ipynb
index c6a83ba21a5..70520280908 100644
--- a/notebooks/api/0.8/06-multiple-code-requests.ipynb
+++ b/notebooks/api/0.8/06-multiple-code-requests.ipynb
@@ -103,12 +103,14 @@
},
"outputs": [],
"source": [
- "root_client.register(name=\"Sheldon Cooper\",\n",
- " email=\"sheldon@caltech.edu\",\n",
- " password=\"abc123\",\n",
- " password_verify=\"abc123\",\n",
- " institution=\"Caltech\",\n",
- " website=\"https://www.caltech.edu/\")"
+ "root_client.register(\n",
+ " name=\"Sheldon Cooper\",\n",
+ " email=\"sheldon@caltech.edu\",\n",
+ " password=\"abc123\",\n",
+ " password_verify=\"abc123\",\n",
+ " institution=\"Caltech\",\n",
+ " website=\"https://www.caltech.edu/\"\n",
+ ")"
]
},
{
@@ -167,13 +169,15 @@
"outputs": [],
"source": [
"# The Data Scientist does some basic statistics function on the object\n",
- "@sy.syft_function(input_policy=sy.ExactMatch(data=dataset_ptr.assets[0]),\n",
- " output_policy=sy.SingleExecutionExactOutput())\n",
+ "@sy.syft_function(\n",
+ " input_policy=sy.ExactMatch(data=dataset_ptr.assets[0]),\n",
+ " output_policy=sy.SingleExecutionExactOutput()\n",
+ ")\n",
"def calculate_sum(data):\n",
" import opendp.prelude as dp\n",
" dp.enable_features(\"contrib\")\n",
" from opendp.measurements import make_laplace\n",
- " \n",
+ "\n",
" #compute sum\n",
" res = data.sum()\n",
" base_lap = dp.m.make_base_laplace(\n",
@@ -225,7 +229,7 @@
"source": [
"project = new_project.start()\n",
"\n",
- "project "
+ "project"
]
},
{
@@ -249,7 +253,7 @@
},
"outputs": [],
"source": [
- "assert len(project.events) ==1\n",
+ "assert len(project.events) == 1\n",
"assert isinstance(project.events[0], sy.service.project.project.ProjectRequest)"
]
},
@@ -263,13 +267,15 @@
"outputs": [],
"source": [
"# The Data Scientist would like to submit another code request after the start of the project\n",
- "@sy.syft_function(input_policy=sy.ExactMatch(data=dataset_ptr.assets[0]),\n",
- " output_policy=sy.SingleExecutionExactOutput())\n",
+ "@sy.syft_function(\n",
+ " input_policy=sy.ExactMatch(data=dataset_ptr.assets[0]),\n",
+ " output_policy=sy.SingleExecutionExactOutput()\n",
+ ")\n",
"def calculate_mean(data):\n",
" import opendp.prelude as dp\n",
" dp.enable_features(\"contrib\")\n",
" from opendp.measurements import make_laplace\n",
- " \n",
+ "\n",
" #compute mean\n",
" mean = data.mean()\n",
" base_lap = dp.m.make_base_laplace(\n",
@@ -290,7 +296,7 @@
},
"outputs": [],
"source": [
- "res = project.create_code_request(calculate_mean ,ds_client)\n",
+ "res = project.create_code_request(calculate_mean, ds_client)\n",
"res"
]
},
@@ -482,7 +488,7 @@
},
"outputs": [],
"source": [
- "assert isinstance(mean_result,float)"
+ "assert isinstance(mean_result, float)"
]
},
{
@@ -515,7 +521,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.11.4"
+ "version": "3.11.5"
},
"toc": {
"base_numbering": 1,
diff --git a/notebooks/helm/docker helm syft.ipynb b/notebooks/helm/docker helm syft.ipynb
index 4c0bb142da9..5e40756d2a2 100644
--- a/notebooks/helm/docker helm syft.ipynb
+++ b/notebooks/helm/docker helm syft.ipynb
@@ -23,7 +23,7 @@
},
{
"cell_type": "markdown",
- "id": "7408a9e7",
+ "id": "732a9097",
"metadata": {},
"source": [
"Start this using"
@@ -31,7 +31,7 @@
},
{
"cell_type": "markdown",
- "id": "96297734",
+ "id": "e0d0a11e",
"metadata": {},
"source": [
"`docker compose --profile blob-storage --file docker-compose.multinode.yml --file docker-compose.dev.yml up`"
@@ -70,7 +70,31 @@
{
"cell_type": "code",
"execution_count": 3,
- "id": "a717309a",
+ "id": "d84a897e",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
SyftSuccess: 3 workers added
"
+ ],
+ "text/plain": [
+ "SyftSuccess: 3 workers added"
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "client.worker.start_workers(n=3)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "4cea5229",
"metadata": {},
"outputs": [
{
@@ -78,18 +102,20 @@
"text/html": [
"\n",
"\n",
+ "\n",
+ "\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "\n",
+ "
\n",
+ "
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "\n",
+ "
0
\n",
+ "
\n",
+ "
\n",
+ " \n",
+ "
\n",
+ " \n",
+ "
\n",
+ " \n",
+ " \n"
],
"text/plain": [
- "Pointer:\n",
- "syft.types.blob_storage.BlobFile"
+ ""
]
},
- "execution_count": 4,
+ "execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
- "sy.ActionObject.from_path(path=\"scenario_data.jsonl\").send(client)"
+ "client.users"
]
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": 14,
"id": "d9841e62",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "SyftWarning: You're performing an operation on high side domain which could host datasets with private information.
"
- ],
- "text/plain": [
- "SyftWarning: You're performing an operation on high side domain which could host datasets with private information."
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- "\n"
- ],
- "text/plain": []
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Would you like to proceed? [y/n]: y\n"
- ]
- },
- {
- "data": {
- "text/html": [
- "SyftWarning: You're performing an operation on high side domain which could host datasets with private information.
"
- ],
- "text/plain": [
- "SyftWarning: You're performing an operation on high side domain which could host datasets with private information."
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- "\n"
- ],
- "text/plain": []
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Would you like to proceed? [y/n]: y\n"
- ]
- },
- {
- "data": {
- "text/html": [
- "SyftWarning: You're performing an operation on high side domain which could host datasets with private information.
"
- ],
- "text/plain": [
- "SyftWarning: You're performing an operation on high side domain which could host datasets with private information."
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- "\n"
- ],
- "text/plain": []
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Would you like to proceed? [y/n]: y\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"scenario_obj = ActionObject.from_obj([\n",
" sy.ActionObject.from_path(path=\"scenario_data.jsonl\").send(client).syft_action_data for i in range(2)])\n",
@@ -864,98 +1363,10 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 15,
"id": "3fa3a20a",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "SyftWarning: You're performing an operation on high side domain which could host datasets with private information.
"
- ],
- "text/plain": [
- "SyftWarning: You're performing an operation on high side domain which could host datasets with private information."
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- "\n"
- ],
- "text/plain": []
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Would you like to proceed? [y/n]: y\n"
- ]
- },
- {
- "data": {
- "text/html": [
- "SyftWarning: You're performing an operation on high side domain which could host datasets with private information.
"
- ],
- "text/plain": [
- "SyftWarning: You're performing an operation on high side domain which could host datasets with private information."
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- "\n"
- ],
- "text/plain": []
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Would you like to proceed? [y/n]: y\n"
- ]
- },
- {
- "data": {
- "text/html": [
- "SyftWarning: You're performing an operation on high side domain which could host datasets with private information.
"
- ],
- "text/plain": [
- "SyftWarning: You're performing an operation on high side domain which could host datasets with private information."
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- "\n"
- ],
- "text/plain": []
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Would you like to proceed? [y/n]: y\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# TODO: fix way we send list of files\n",
"input_obj = ActionObject.from_obj([\n",
@@ -963,17 +1374,6 @@
"input_files_ptr = input_obj.send(client)"
]
},
- {
- "cell_type": "code",
- "execution_count": 7,
- "id": "93f9acd9",
- "metadata": {},
- "outputs": [],
- "source": [
- "# for line in input_files_ptr.syft_action_data[0].iter_lines():\n",
- "# print(line)"
- ]
- },
{
"cell_type": "markdown",
"id": "bd60b056",
@@ -984,7 +1384,7 @@
},
{
"cell_type": "code",
- "execution_count": 8,
+ "execution_count": 16,
"id": "aa3a5c31",
"metadata": {},
"outputs": [
@@ -1086,7 +1486,7 @@
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": 17,
"id": "2f23c7ae",
"metadata": {},
"outputs": [
@@ -1099,7 +1499,7 @@
"SyftSuccess: User Code Submitted"
]
},
- "execution_count": 9,
+ "execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
@@ -1110,7 +1510,7 @@
},
{
"cell_type": "code",
- "execution_count": 10,
+ "execution_count": 18,
"id": "27be4dc4",
"metadata": {},
"outputs": [
@@ -1147,28 +1547,59 @@
},
{
"cell_type": "code",
- "execution_count": 11,
- "id": "bcb9ad4c",
+ "execution_count": 19,
+ "id": "82d92df1",
"metadata": {},
"outputs": [
{
"data": {
+ "text/html": [
+ "\n",
+ " \n",
+ " \n",
+ "
Request
\n",
+ "
Id: bdcc739fa1d64c8483da9ae710b40001
\n",
+ "
Request time: 2023-10-16 11:10:24
\n",
+ " \n",
+ " \n",
+ "
Changes: Request to change main_function to permission RequestStatus.APPROVED.
\n",
+ "
Status: RequestStatus.PENDING
\n",
+ "
Requested on: High-side of type Domain owned by info@openmined.org
\n",
+ "
Requested by: Jane Doe (info@openmined.org)
\n",
+ "
\n",
+ "\n",
+ " "
+ ],
+ "text/markdown": [
+ "```python\n",
+ "class Request:\n",
+ " id: str = bdcc739fa1d64c8483da9ae710b40001\n",
+ " request_time: str = 2023-10-16 11:10:24\n",
+ " updated_at: str = None\n",
+ " status: str = RequestStatus.PENDING\n",
+ " changes: str = ['Request to change main_function to permission RequestStatus.APPROVED']\n",
+ " requesting_user_verify_key: str = ca15b7c90cb70bb3ea532407ebba4011e6a4139fa79ce072647c99d84145b609\n",
+ "\n",
+ "```"
+ ],
"text/plain": [
- ""
+ "syft.service.request.request.Request"
]
},
- "execution_count": 11,
+ "execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
- "input_files_ptr.id"
+ "client.code.request_code_execution(main_function)"
]
},
{
"cell_type": "code",
- "execution_count": 12,
+ "execution_count": 20,
"id": "29ee2790",
"metadata": {},
"outputs": [
@@ -1205,25 +1636,24 @@
{
"data": {
"text/html": [
- "SyftSuccess: Request 6d7314ffb67c41f58795ec56c6997b89 changes applied
"
+ "SyftSuccess: Request bdcc739fa1d64c8483da9ae710b40001 changes applied
"
],
"text/plain": [
- "SyftSuccess: Request 6d7314ffb67c41f58795ec56c6997b89 changes applied"
+ "SyftSuccess: Request bdcc739fa1d64c8483da9ae710b40001 changes applied"
]
},
- "execution_count": 12,
+ "execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
- "client.code.request_code_execution(main_function)\n",
"client.requests[-1].approve()"
]
},
{
"cell_type": "code",
- "execution_count": 13,
+ "execution_count": 21,
"id": "78b084c0",
"metadata": {},
"outputs": [],
@@ -1241,7 +1671,7 @@
},
{
"cell_type": "code",
- "execution_count": 14,
+ "execution_count": 25,
"id": "55c3bee6",
"metadata": {},
"outputs": [
@@ -1250,13 +1680,14 @@
"text/markdown": [
"```python\n",
"class Job:\n",
- " id: UID = 179a31fe609b4dc2b0d7b69df7b7c644\n",
- " status: created\n",
+ " id: UID = d8a2c1f48d814f81b623e85a70eacb17\n",
+ " status: completed\n",
" has_parent: False\n",
- " result: None\n",
+ " result: ActionDataEmpty UID: dd13e556f95543b19c121b6e45b1d92f \n",
" logs:\n",
"\n",
"0 \n",
+ "JOB COMPLETED\n",
" \n",
"```"
],
@@ -1264,7 +1695,7 @@
"syft.service.job.job_stash.Job"
]
},
- "execution_count": 14,
+ "execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
@@ -1275,7 +1706,7 @@
},
{
"cell_type": "code",
- "execution_count": 15,
+ "execution_count": 27,
"id": "cf89cf33",
"metadata": {},
"outputs": [
@@ -1284,18 +1715,20 @@
"text/html": [
"\n",
"\n",
+ "\n",
+ "\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "\n",
+ "
\n",
+ "
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "\n",
+ "
0
\n",
+ "
\n",
+ "
\n",
+ " \n",
+ "
\n",
+ " \n",
+ "
\n",
+ " \n",
+ " \n"
+ ],
+ "text/plain": [
+ "[syft.service.worker.worker_service.DockerWorker,\n",
+ " syft.service.worker.worker_service.DockerWorker,\n",
+ " syft.service.worker.worker_service.DockerWorker]"
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "workers"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "id": "28c5e351",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "SyftSuccess: 2 workers stopped
"
+ ],
+ "text/plain": [
+ "SyftSuccess: 2 workers stopped"
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "client.worker.stop(workers)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "542ec911",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "2ac0c822",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "3f1ce246",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "210a3bbd",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "4e95077d",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "87ca6d8a",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "markdown",
+ "id": "659434fe",
+ "metadata": {},
+ "source": [
+ "## DEV"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "38d0fa4a",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "0d2cc165",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "id": "09c2d6ac",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import docker"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "id": "6934ec8f",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "image = \"openmined/grid-backend\"\n",
+ "client = docker.from_env()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "id": "c7bb1389",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "PYSYFT_DIR = f\"/Users/koen/workspace/pysyft\""
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "id": "a742f934",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "volumes = {\n",
+ " f'{PYSYFT_DIR}/packages/syft': {'bind': '/app/syft', 'mode': 'rw'},\n",
+ " f'{PYSYFT_DIR}/packages/grid/backend/grid': {'bind': '/app/grid', 'mode': 'rw'},\n",
+ " \"/var/run/docker.sock\": {\"bind\": \"/var/run/docker.sock\"}\n",
+ "\n",
+ "}"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "id": "09b15930",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def get_default_env_vars():\n",
+ " env_path = f\"{PYSYFT_DIR}/packages/grid/.env\"\n",
+ "\n",
+ " with open(env_path, \"r\") as f:\n",
+ " lines = f.read().splitlines()\n",
+ "\n",
+ " default_env_vars = dict()\n",
+ " for l in lines:\n",
+ " if \"=\" in l:\n",
+ " try:\n",
+ " var_name, value = l.split(\"=\", 1)\n",
+ " \n",
+ " def remove_redundant_quotes(value):\n",
+ " for s in ['\"', \"'\"]:\n",
+ " if len(value) !=0:\n",
+ " if value[0] == s:\n",
+ " value = value[1:]\n",
+ " if value[-1] == s:\n",
+ " value = value[:-1]\n",
+ " \n",
+ " value = remove_redundant_quotes(value)\n",
+ " default_env_vars[var_name] = value\n",
+ " except Exception as e:\n",
+ " print(\"error parsing env file\", e)\n",
+ " return default_env_vars"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "id": "85a5ed92",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def get_env_vars():\n",
+ " default_env_vars = get_default_env_vars()\n",
+ " import secrets\n",
+ " worker_tag = \"\".join([str(secrets.choice(list(range(10)))) for i in range(10)])\n",
+ "\n",
+ " extra_env_vars = {\n",
+ " \"SERVICE_NAME\": \"backend\",\n",
+ " \"CREATE_PRODUCER\": \"false\",\n",
+ " \"N_CONSUMERS\": \"1\",\n",
+ " \"DEV_MODE\": \"True\",\n",
+ " \"DEFAULT_ROOT_USERNAME\": f\"worker-{worker_tag}\",\n",
+ " \"PORT\": \"8003\",\n",
+ " \"HTTP_PORT\": \"88\",\n",
+ " \"HTTPS_PORT\": \"446\",\n",
+ " \"DEFAULT_ROOT_EMAIL\": f\"{worker_tag}@openmined.org\"\n",
+ " \n",
+ " }\n",
+ "\n",
+ " return {**default_env_vars, **extra_env_vars}\n",
+ " "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "id": "4a92d374",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import random"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "id": "1aa550f7",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "220"
+ ]
+ },
+ "execution_count": 18,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "random.randint(0, 1000)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "id": "a0450b60",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "env_vars = get_env_vars()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "id": "17f547d4",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from pprint import pprint"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "id": "bc445c39",
+ "metadata": {},
+ "outputs": [
+ {
+ "ename": "ModuleNotFoundError",
+ "evalue": "No module named 'grid'",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)",
+ "Cell \u001b[0;32mIn[21], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mgrid\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mbackend\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcore\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mconfig\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m settings\n",
+ "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'grid'"
+ ]
+ }
+ ],
+ "source": [
+ "from grid.backend.core.config import settings"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "id": "1835d02b",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'/Users/koen/workspace/pysyft'"
+ ]
+ },
+ "execution_count": 22,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "from pathlib import Path\n",
+ "str(Path(\"/Users/koen/workspace/pysyft/packages/grid\").parent.parent)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "id": "13cc6c67",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# pprint(env_vars)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "id": "f58bd1eb",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# env_vars"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "id": "4ce97360",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# client.containers"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "id": "d7b0f47b",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# client.containers.run('alpine', 'echo hello world', )"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "id": "8eb7cb8b",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "res = client.containers.run(image=image, volumes=volumes, environment=env_vars,\n",
+ " detach=True, network_mode=\"container:grid-proxy-1\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "id": "d1608704",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'b7a8e3c2a0b8295d22bebdcd004d7a2f14b05c187c4b3cc20a37e914938aee63'"
+ ]
+ },
+ "execution_count": 32,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "res.id"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 118,
+ "id": "b5d9e7b7",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "for x in client.containers.list(filters={\"id\": res.id}):\n",
+ " x.stop()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 123,
+ "id": "92d85752",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "x = res.stop()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 121,
+ "id": "9dd4e6ca",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "x"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 50,
+ "id": "72f128d9",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# print(res.logs().decode())"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 62,
+ "id": "a918bd10",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# env_vars[\"BACKEND_CORS_ORIGINS\"].replace(\"\\'\", \"'\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 56,
+ "id": "197c1277",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "['http://localhost',\n",
+ " 'http://localhost:4200',\n",
+ " 'http://localhost:3000',\n",
+ " 'http://localhost:8080',\n",
+ " 'https://localhost',\n",
+ " 'https://localhost:4200',\n",
+ " 'https://localhost:3000',\n",
+ " 'https://localhost:8080',\n",
+ " 'http://dev.grid.openmined.org',\n",
+ " 'https://stag.grid.openmined.org',\n",
+ " 'https://grid.openmined.org']"
+ ]
+ },
+ "execution_count": 56,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "[\"http://localhost\",\"http://localhost:4200\",\"http://localhost:3000\",\"http://localhost:8080\",\"https://localhost\",\"https://localhost:4200\",\"https://localhost:3000\",\"https://localhost:8080\",\"http://dev.grid.openmined.org\",\"https://stag.grid.openmined.org\",\"https://grid.openmined.org\"]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 57,
+ "id": "ec5208ac",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# for k, v in env_vars.items():\n",
+ "# print(f\"{k}={v}\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "e40cd44b",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "2a4d5566",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "af7db453",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "164513fd",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "markdown",
+ "id": "2adb65af",
+ "metadata": {},
+ "source": [
+ "\n",
+ " \"Mounts\": [\n",
+ " {\n",
+ " \"Type\": \"bind\",\n",
+ " \"Source\": \"/Users/koen/workspace/pysyft/packages/grid/data/package-cache\",\n",
+ " \"Destination\": \"/root/.cache\",\n",
+ " \"Mode\": \"rw\",\n",
+ " \"RW\": true,\n",
+ " \"Propagation\": \"rprivate\"\n",
+ " },\n",
+ " {\n",
+ " \"Type\": \"bind\",\n",
+ " \"Source\": \"/Users/koen/workspace/pysyft/packages/grid/backend/grid\",\n",
+ " \"Destination\": \"/app/grid\",\n",
+ " \"Mode\": \"rw\",\n",
+ " \"RW\": true,\n",
+ " \"Propagation\": \"rprivate\"\n",
+ " },\n",
+ " {\n",
+ " \"Type\": \"bind\",\n",
+ " \"Source\": \"/Users/koen/workspace/pysyft/packages/syft\",\n",
+ " \"Destination\": \"/app/syft\",\n",
+ " \"Mode\": \"rw\",\n",
+ " \"RW\": true,\n",
+ " \"Propagation\": \"rprivate\"\n",
+ " },\n",
+ " {\n",
+ " \"Type\": \"volume\",\n",
+ " \"Name\": \"grid_credentials-data-worker\",\n",
+ " \"Source\": \"/var/lib/docker/volumes/grid_credentials-data-worker/_data\",\n",
+ " \"Destination\": \"/storage\",\n",
+ " \"Driver\": \"local\",\n",
+ " \"Mode\": \"z\",\n",
+ " \"RW\": true,\n",
+ " \"Propagation\": \"\"\n",
+ " }\n",
+ " ],\n",
+ " \"Config\": {\n",
+ " \"Hostname\": \"high-side\",\n",
+ " \"Domainname\": \"\",\n",
+ " \"User\": \"\",\n",
+ " \"AttachStdin\": false,\n",
+ " \"AttachStdout\": true,\n",
+ " \"AttachStderr\": true,\n",
+ " \"Tty\": true,\n",
+ " \"OpenStdin\": true,\n",
+ " \"StdinOnce\": false,\n",
+ " \"Env\": [\n",
+ " \"TRAEFIK_TLS_CERTS=./traefik/certs\",\n",
+ " \"S3_ROOT_PWD=admin\",\n",
+ " \"REDIS_STORE_DB_ID=0\",\n",
+ " \"ASSOCIATION_TIMEOUT=10\",\n",
+ " \"REDIS_HOST=redis\",\n",
+ " \"DOCKER_IMAGE_WORKER=openmined/grid-enclave\",\n",
+ " \"QUEUE_PORT=5556\",\n",
+ " \"FRONTEND_TARGET=grid-ui-production\",\n",
+ " \"DOCKER_IMAGE_HEADSCALE=openmined/grid-vpn-headscale\",\n",
+ " \"DOCKER_IMAGE_TRAEFIK=traefik\",\n",
+ " \"TRAEFIK_TAG=2b0a5be942b68dde2b00b8bca4514e4dde7f312d0d5cd397a9733bb1520f5b47\",\n",
+ " \"SMTP_TLS=True\",\n",
+ " \"S3_ENDPOINT=seaweedfs\",\n",
+ " \"HTTPS_PORT=445\",\n",
+ " \"OBLV_KEY_PATH=~/.oblv\",\n",
+ " \"ENABLE_WARNINGS=True\",\n",
+ " \"USE_BLOB_STORAGE=True\",\n",
+ " \"TRAEFIK_TLS_CONF=./traefik/dynamic-configurations\",\n",
+ " \"ENABLE_OBLV=false\",\n",
+ " \"JAEGER_HOST=localhost\",\n",
+ " \"DOCKER_BUILDKIT=1\",\n",
+ " \"S3_PRESIGNED_TIMEOUT_SECS=1800\",\n",
+ " \"RELEASE=production\",\n",
+ " \"STACK_NAME=grid-openmined-org\",\n",
+ " \"USERS_OPEN_REGISTRATION=False\",\n",
+ " \"EMAILS_FROM_EMAIL=info@openmined.org\",\n",
+ " \"PROJECT_NAME=grid\",\n",
+ " \"SERVER_HOST=https://localhost\",\n",
+ " \"HTTP_PORT=87\",\n",
+ " \"ENABLE_SIGNUP=False\",\n",
+ " \"TRAEFIK_PUBLIC_NETWORK_IS_EXTERNAL=False\",\n",
+ " \"VERSION=0.8.2-beta.6\",\n",
+ " \"TRAEFIK_VERSION=v2.8.1\",\n",
+ " \"S3_ROOT_USER=admin\",\n",
+ " \"VERSION_HASH=dockerhub\",\n",
+ " \"MONGO_HOST=mongo\",\n",
+ " \"DOCKER_IMAGE_BACKEND=openmined/grid-backend\",\n",
+ " \"IGNORE_TLS_ERRORS=False\",\n",
+ " \"HEADSCALE_PORT=8080\",\n",
+ " \"CONTAINER_HOST=docker\",\n",
+ " \"SMTP_USER=\",\n",
+ " \"VITE_PUBLIC_API_BASE_URL=/api/v2\",\n",
+ " \"DEV_MODE=True\",\n",
+ " \"CREATE_PRODUCER=false\",\n",
+ " \"SECRET_KEY=changethis\",\n",
+ " \"STACK_API_KEY=zXuYOLdamjg70sB5IoVQCM5gdxGK9R79Otu9L9ZnaDZCqyeV\",\n",
+ " \"TRACE=False\",\n",
+ " \"SERVICE_NAME=backend\",\n",
+ " \"MONGO_IMAGE=mongo\",\n",
+ " \"USE_NEW_SERVICE=False\",\n",
+ " \"JAX_ENABLE_X64=True\",\n",
+ " \"REDIS_PORT=6379\",\n",
+ " \"MONGO_VERSION=7.0.0\",\n",
+ " \"TRAEFIK_PUBLIC_NETWORK=traefik-public\",\n",
+ " \"DEFAULT_ROOT_PASSWORD=changethis\",\n",
+ " \"NETWORK_NAME=omnet\",\n",
+ " \"SEAWEEDFS_VERSION=3.55\",\n",
+ " \"COMPOSE_DOCKER_CLI_BUILD=1\",\n",
+ " \"TRAEFIK_PUBLIC_TAG=traefik-public\",\n",
+ " \"SMTP_PASSWORD=\",\n",
+ " \"RABBITMQ_VERSION=3\",\n",
+ " \"REDIS_VERSION=6.2\",\n",
+ " \"NETWORK_CHECK_INTERVAL=60\",\n",
+ " \"DOMAIN_CHECK_INTERVAL=60\",\n",
+ " \"DOCKER_IMAGE_SEAWEEDFS=chrislusf/seaweedfs\",\n",
+ " \"DEFAULT_ROOT_EMAIL=info2@openmined.org\",\n",
+ " \"NODE_SIDE_TYPE=high\",\n",
+ " \"S3_VOLUME_SIZE_MB=1024\",\n",
+ " \"DOCKER_IMAGE_TAILSCALE=openmined/grid-vpn-tailscale\",\n",
+ " \"S3_PORT=8333\",\n",
+ " \"NODE_TYPE=domain\",\n",
+ " \"DOCKER_IMAGE_FRONTEND=openmined/grid-frontend\",\n",
+ " \"SMTP_HOST=\",\n",
+ " \"SMTP_PORT=587\",\n",
+ " \"MONGO_USERNAME=root\",\n",
+ " \"SYFT_TUTORIAL_MODE=False\",\n",
+ " \"RELATIVE_PATH=\",\n",
+ " \"JAEGER_PORT=14268\",\n",
+ " \"BACKEND_STORAGE_PATH=credentials-data\",\n",
+ " \"DOMAIN_CONNECTION_PORT=3030\",\n",
+ " \"REDIS_LEDGER_DB_ID=1\",\n",
+ " \"N_CONSUMERS=1\",\n",
+ " \"BACKEND_CORS_ORIGINS=[\\\"http://localhost\\\",\\\"http://localhost:4200\\\",\\\"http://localhost:3000\\\",\\\"http://localhost:8080\\\",\\\"https://localhost\\\",\\\"https://localhost:4200\\\",\\\"https://localhost:3000\\\",\\\"https://localhost:8080\\\",\\\"http://dev.grid.openmined.org\\\",\\\"https://stag.grid.openmined.org\\\",\\\"https://grid.openmined.org\\\"]\",\n",
+ " \"DEFAULT_ROOT_USERNAME=worker1\",\n",
+ " \"NODE_NAME=high-side\",\n",
+ " \"S3_REGION=us-east-1\",\n",
+ " \"MONGO_PASSWORD=example\",\n",
+ " \"PORT=8002\",\n",
+ " \"DOCKER_IMAGE_VPN_IPTABLES=openmined/grid-vpn-iptables\",\n",
+ " \"DOMAIN=localhost\",\n",
+ " \"MONGO_PORT=27017\",\n",
+ " \"DOCKER_IMAGE_SVELTE=openmined/grid-svelte\",\n",
+ " \"PATH=/root/.local/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\",\n",
+ " \"LANG=C.UTF-8\",\n",
+ " \"GPG_KEY=A035C8C19219BA821ECEA86B64E628F8D684696D\",\n",
+ " \"PYTHON_VERSION=3.11.4\",\n",
+ " \"PYTHON_PIP_VERSION=23.1.2\",\n",
+ " \"PYTHON_SETUPTOOLS_VERSION=65.5.1\",\n",
+ " \"PYTHON_GET_PIP_URL=https://github.com/pypa/get-pip/raw/0d8570dc44796f4369b652222cf176b3db6ac70e/public/get-pip.py\",\n",
+ " \"PYTHON_GET_PIP_SHA256=96461deced5c2a487ddc65207ec5a9cffeca0d34e7af7ea1afc470ff0d746207\",\n",
+ " \"PYTHONPATH=/app\"\n",
+ " ],\n",
+ " \"Cmd\": [\n",
+ " \"/app/grid/start.sh\"\n",
+ " ],\n",
+ " \"Image\": \"openmined/grid-backend:0.8.2-beta.6\",\n",
+ " \"Volumes\": null,\n",
+ " \"WorkingDir\": \"/app\",\n",
+ " \"Entrypoint\": null,\n",
+ " \"OnBuild\": null,\n",
+ " \"Labels\": {\n",
+ " \"com.docker.compose.config-hash\": \"c14a5d85da73c7c973ad7274199b22309e5a5e2d4ac1e6ac18e52b10457af660\",\n",
+ " \"com.docker.compose.container-number\": \"1\",\n",
+ " \"com.docker.compose.depends_on\": \"proxy:service_started:false,backend:service_started:false\",\n",
+ " \"com.docker.compose.image\": \"sha256:95c41545ecfa8667a2353d825420be76da65eb85c0dc1e85da65d1b1961a019c\",\n",
+ " \"com.docker.compose.oneoff\": \"False\",\n",
+ " \"com.docker.compose.project\": \"grid\",\n",
+ " \"com.docker.compose.project.config_files\": \"/Users/koen/workspace/pysyft/packages/grid/docker-compose.multinode.yml,/Users/koen/workspace/pysyft/packages/grid/docker-compose.dev.yml\",\n",
+ " \"com.docker.compose.project.working_dir\": \"/Users/koen/workspace/pysyft/packages/grid\",\n",
+ " \"com.docker.compose.service\": \"backendworker\",\n",
+ " \"com.docker.compose.version\": \"2.19.1\",\n",
+ " \"orgs.openmined.syft\": \"this is a syft backend container\"\n",
+ " }\n",
+ " },\n",
+ " \"NetworkSettings\": {\n",
+ " \"Bridge\": \"\",\n",
+ " \"SandboxID\": \"\",\n",
+ " \"HairpinMode\": false,\n",
+ " \"LinkLocalIPv6Address\": \"\",\n",
+ " \"LinkLocalIPv6PrefixLen\": 0,\n",
+ " \"Ports\": {},\n",
+ " \"SandboxKey\": \"\",\n",
+ " \"SecondaryIPAddresses\": null,\n",
+ " \"SecondaryIPv6Addresses\": null,\n",
+ " \"EndpointID\": \"\",\n",
+ " \"Gateway\": \"\",\n",
+ " \"GlobalIPv6Address\": \"\",\n",
+ " \"GlobalIPv6PrefixLen\": 0,\n",
+ " \"IPAddress\": \"\",\n",
+ " \"IPPrefixLen\": 0,\n",
+ " \"IPv6Gateway\": \"\",\n",
+ " \"MacAddress\": \"\",\n",
+ " \"Networks\": {}\n",
+ " }\n",
+ " }\n",
+ "]"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3 (ipykernel)",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.9.16"
+ },
+ "toc": {
+ "base_numbering": 1,
+ "nav_menu": {},
+ "number_sections": true,
+ "sideBar": true,
+ "skip_h1_title": false,
+ "title_cell": "Table of Contents",
+ "title_sidebar": "Contents",
+ "toc_cell": false,
+ "toc_position": {},
+ "toc_section_display": true,
+ "toc_window_display": true
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/notebooks/tutorials/enclaves/Enclave-single-notebook-DO-DS.ipynb b/notebooks/tutorials/enclaves/Enclave-single-notebook-DO-DS.ipynb
index 5b80e61856c..1346d11086d 100644
--- a/notebooks/tutorials/enclaves/Enclave-single-notebook-DO-DS.ipynb
+++ b/notebooks/tutorials/enclaves/Enclave-single-notebook-DO-DS.ipynb
@@ -544,7 +544,7 @@
"metadata": {},
"outputs": [],
"source": [
- "for st in status.status_dict.values():\n",
+ "for st, _ in status.status_dict.values():\n",
" assert st == sy.service.request.request.UserCodeStatus.APPROVED"
]
},
diff --git a/packages/.dockerignore b/packages/.dockerignore
index 48a0a5653c1..559e945a401 100644
--- a/packages/.dockerignore
+++ b/packages/.dockerignore
@@ -1,3 +1,4 @@
grid/data
grid/packer
grid/.devspace
+syftcli
\ No newline at end of file
diff --git a/packages/grid/VERSION b/packages/grid/VERSION
index eb0c9fba798..c45494e2144 100644
--- a/packages/grid/VERSION
+++ b/packages/grid/VERSION
@@ -1,5 +1,5 @@
# Mono Repo Global Version
-__version__ = "0.8.2-beta.33"
+__version__ = "0.8.2-beta.35"
# elsewhere we can call this file: `python VERSION` and simply take the stdout
# stdlib
diff --git a/packages/grid/backend/JAX.MD b/packages/grid/backend/JAX.MD
deleted file mode 100644
index c727621c10e..00000000000
--- a/packages/grid/backend/JAX.MD
+++ /dev/null
@@ -1,84 +0,0 @@
-# Building jaxlib for linux Arm64 to run in Docker on Apple Silicon
-
-Create a high CPU linux x86 machine. I used 32 CPUs on Azure and compilation took 4.5 hours.
-
-Once the latest docker is setup run the following steps.
-
-It is recommended to build on an ARM machine to conserve on time.
-
-## Create a buildx builder for arm64
-
-Perform this step if you are building on an `x86` machine or else skip it
-
-```
-$ docker buildx create --platform linux/arm64 --name arm64builder
-$ docker buildx use arm64builder
-```
-
-## Install the QEMU arm64 emulator layers so you can run the container
-
-Perform this step if you are building on an `x86` machine or else skip it
-
-```
-$ docker run --privileged --rm tonistiigi/binfmt --install arm64
-$ docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
-```
-
-## Build the dockerfile using arm64
-
-```
-$ docker buildx build --platform linux/arm64 -f build_jax.dockerfile . --output "type=docker,name=build_jax_arm64:latest"
-```
-
-## Run the container to start the build
-
-```
-$ mkdir bazel_cache
-$ docker run -it --platform linux/arm64 -v `pwd`/bazel_cache:/root/.cache build_jax_arm64 bash
-```
-
-## Verify you are running arm64
-
-```
-$ uname -a
-Linux a875c1c357a3 5.13.0-1017-azure #19~20.04.1-Ubuntu SMP Mon Mar 7 11:34:26 UTC 2022 aarch64 GNU/Linux
-```
-
-## Confirm your GLIBC version
-
-If this doesn't match the environment you will be running the jaxlib wheel it might fail.
-In this case we are using the same `FROM python:3.11.4-slim as build` to build as jaxlib we do in our production container to run it.
-
-```
-$ ldd --version
-ldd (Debian GLIBC 2.31-13+deb11u3) 2.31
-```
-
-## Checkout the version you want to build
-
-```
-$ cd jax
-$ git fetch --all --tags
-$ git checkout tags/jaxlib-v0.4.10 -b jaxlib-v0.4.10
-```
-
-## Start the build
-
-```
-$ export JAXLIB_RELEASE=True # needed to prevent dev tagging in version
-$ python3 /jax/build/build.py --target_cpu_features native
-```
-
-## Check it worked
-
-```
-$ pip install dist/*.whl
-```
-
-## Copy out the wheel
-
-```
-$ pip install --user magic-wormhole
-$ /root/.local/bin/wormhole send /jax/build/dist/jaxlib-0.4.10-cp311-none-manylinux2014_aarch64.whl
-# run wormhole recieve on the other end
-```
diff --git a/packages/grid/backend/backend.dockerfile b/packages/grid/backend/backend.dockerfile
index 3c7cc34ed15..6a2208655b8 100644
--- a/packages/grid/backend/backend.dockerfile
+++ b/packages/grid/backend/backend.dockerfile
@@ -22,13 +22,6 @@ RUN --mount=type=cache,target=/root/.cache \
RUN --mount=type=cache,target=/root/.cache \
pip install --user jupyterlab
-# copy precompiled arm64 packages
-COPY grid/backend/wheels /wheels
-RUN --mount=type=cache,target=/root/.cache if [ $(uname -m) != "x86_64" ]; then \
- pip install --user /wheels/jaxlib-0.4.16-cp311-cp311-manylinux2014_aarch64.whl; \
- pip install --user jax==0.4.16; \
- fi
-
WORKDIR /app
# Backend
diff --git a/packages/grid/backend/build_jax.dockerfile b/packages/grid/backend/build_jax.dockerfile
deleted file mode 100644
index 411ef338183..00000000000
--- a/packages/grid/backend/build_jax.dockerfile
+++ /dev/null
@@ -1,20 +0,0 @@
-FROM python:3.11.3-slim as build
-RUN apt-get -y update && apt-get -y upgrade && apt-get -y dist-upgrade
-RUN apt-get -y install \
- g++ \
- gcc \
- git \
- libffi-dev \
- libssl-dev \
- musl-dev \
- openssl \
- python3 \
- python3-dev \
- python3-pip
-RUN pip3 install --upgrade pip setuptools numpy wheel build
-RUN git clone https://github.com/google/jax.git
-
-CMD ["bash"]
-
-# RUN python3 jax/build/build.py --target_cpu_features default
-# RUN pip3 install dist/*.whl
diff --git a/packages/grid/backend/grid/core/config.py b/packages/grid/backend/grid/core/config.py
index 5e17d78f463..f8daaac0f33 100644
--- a/packages/grid/backend/grid/core/config.py
+++ b/packages/grid/backend/grid/core/config.py
@@ -106,6 +106,7 @@ def get_emails_enabled(cls, v: bool, values: Dict[str, Any]) -> bool:
MONGO_PORT: int = int(os.getenv("MONGO_PORT", 0))
MONGO_USERNAME: str = str(os.getenv("MONGO_USERNAME", ""))
MONGO_PASSWORD: str = str(os.getenv("MONGO_PASSWORD", ""))
+ DEV_MODE: bool = True if os.getenv("DEV_MODE", "false").lower() == "true" else False
# ZMQ stuff
QUEUE_PORT: int = int(os.getenv("QUEUE_PORT", 0))
diff --git a/packages/grid/backend/grid/core/node.py b/packages/grid/backend/grid/core/node.py
index 1d9958544f9..8b99f6c44d9 100644
--- a/packages/grid/backend/grid/core/node.py
+++ b/packages/grid/backend/grid/core/node.py
@@ -75,4 +75,5 @@
document_store_config=mongo_store_config,
enable_warnings=enable_warnings,
blob_storage_config=blob_storage_config,
+ dev_mode=settings.DEV_MODE,
)
diff --git a/packages/grid/backend/wheels/jaxlib-0.4.16-cp311-cp311-manylinux2014_aarch64.whl b/packages/grid/backend/wheels/jaxlib-0.4.16-cp311-cp311-manylinux2014_aarch64.whl
deleted file mode 100644
index 4a8b549e28d..00000000000
Binary files a/packages/grid/backend/wheels/jaxlib-0.4.16-cp311-cp311-manylinux2014_aarch64.whl and /dev/null differ
diff --git a/packages/grid/devspace.yaml b/packages/grid/devspace.yaml
index da387a42c77..366e826d05f 100644
--- a/packages/grid/devspace.yaml
+++ b/packages/grid/devspace.yaml
@@ -15,13 +15,13 @@ pipelines:
run: |-
run_dependencies --all
ensure_pull_secrets --all
- build_images --all -t $(git rev-parse --short=6 HEAD) -t 0.8.2-beta.33 -t dev-latest
+ build_images --all -t $(git rev-parse --short=6 HEAD) -t 0.8.2-beta.35 -t dev-latest
create_deployments --all
vars:
DEVSPACE_ENV_FILE: "default.env"
CONTAINER_REGISTRY: "docker.io"
- VERSION: "0.8.2-beta.33"
+ VERSION: "0.8.2-beta.35"
# This is a list of `images` that DevSpace can build for this project
# We recommend to skip image building during development (devspace dev) as much as possible
@@ -34,14 +34,14 @@ images:
tags:
- dev-latest
- "${VERSION}"
- tailscale:
- image: "${CONTAINER_REGISTRY}/${DOCKER_IMAGE_TAILSCALE}"
- buildKit: {}
- dockerfile: ./vpn/tailscale.dockerfile
- context: ./vpn
- tags:
- - dev-latest
- - "${VERSION}"
+ # tailscale:
+ # image: "${CONTAINER_REGISTRY}/${DOCKER_IMAGE_TAILSCALE}"
+ # buildKit: {}
+ # dockerfile: ./vpn/tailscale.dockerfile
+ # context: ./vpn
+ # tags:
+ # - dev-latest
+ # - "${VERSION}"
frontend:
image: "${CONTAINER_REGISTRY}/${DOCKER_IMAGE_FRONTEND}"
buildKit:
@@ -65,6 +65,11 @@ deployments:
manifests:
- "k8s/manifests/traefik-domain.yaml"
+ seaweedfs-config:
+ kubectl:
+ manifests:
+ - "k8s/manifests/seaweedfs.yaml"
+
proxy:
helm:
upgradeArgs:
@@ -72,7 +77,6 @@ deployments:
chart:
name: component-chart
repo: https://charts.devspace.sh
- version: "0.9.0"
values:
containers:
- image: "${DOCKER_IMAGE_TRAEFIK}:${TRAEFIK_VERSION}"
@@ -120,7 +124,6 @@ deployments:
chart:
name: component-chart
repo: https://charts.devspace.sh
- version: "0.9.0"
values:
containers:
- image: "${CONTAINER_REGISTRY}/${DOCKER_IMAGE_BACKEND}:${VERSION}"
@@ -188,6 +191,7 @@ deployments:
name: "backend"
ports:
- port: "${HTTP_PORT}"
+
mongo:
helm:
upgradeArgs:
@@ -195,7 +199,6 @@ deployments:
chart:
name: component-chart
repo: https://charts.devspace.sh
- version: "0.9.0"
values:
containers:
- image: "${MONGO_IMAGE}:${MONGO_VERSION}"
@@ -218,6 +221,56 @@ deployments:
ports:
- port: "27017"
+ seaweedfs:
+ helm:
+ upgradeArgs:
+ - --dependency-update
+ chart:
+ name: component-chart
+ repo: https://charts.devspace.sh
+ values:
+ containers:
+ - image: "${DOCKER_IMAGE_SEAWEEDFS}:${SEAWEEDFS_VERSION}"
+ command:
+ - sh
+ - /etc/seaweedfs/start.sh
+ env:
+ - name: S3_VOLUME_SIZE_MB
+ value: "${S3_VOLUME_SIZE_MB}"
+ - name: S3_ROOT_USER
+ value: "${S3_ROOT_USER}"
+ - name: S3_ROOT_PWD
+ value: "${S3_ROOT_PWD}"
+ - name: S3_PORT
+ value: "${S3_PORT}"
+ volumeMounts:
+ - containerPath: /etc/seaweedfs/filer.toml
+ volume:
+ name: seaweedfs-config
+ subPath: /filer.toml
+ readOnly: false
+ - containerPath: /etc/seaweedfs/start.sh
+ volume:
+ name: seaweedfs-config
+ subPath: /start.sh
+ readOnly: false
+ - containerPath: /data/blob
+ volume:
+ name: seaweedfs-data
+ subPath: /
+ readOnly: false
+ volumes:
+ - name: seaweedfs-data
+ size: "5Gi"
+ - name: seaweedfs-config
+ configMap:
+ name: seaweedfs-config
+ service:
+ name: seaweedfs
+ ports:
+ - port: "8888" # filer
+ - port: "8333" # S3
+
frontend:
helm:
upgradeArgs:
@@ -225,7 +278,6 @@ deployments:
chart:
name: component-chart
repo: https://charts.devspace.sh
- version: "0.9.0"
values:
containers:
- image: "${CONTAINER_REGISTRY}/${DOCKER_IMAGE_FRONTEND}:${VERSION}"
@@ -248,6 +300,10 @@ dev:
imageSelector: "${MONGO_IMAGE}:${MONGO_VERSION}"
ports:
- port: "27017"
+ seaweedfs:
+ imageSelector: "${DOCKER_IMAGE_SEAWEEDFS}:${SEAWEEDFS_VERSION}"
+ ports:
+ - port: "9333" # admin
backend:
imageSelector: "${CONTAINER_REGISTRY}/${DOCKER_IMAGE_BACKEND}"
env:
diff --git a/packages/grid/docker-compose.dev.yml b/packages/grid/docker-compose.dev.yml
index 3faef69b269..7576b9a7427 100644
--- a/packages/grid/docker-compose.dev.yml
+++ b/packages/grid/docker-compose.dev.yml
@@ -46,6 +46,7 @@ services:
- ${RELATIVE_PATH}./data/package-cache:/root/.cache
environment:
- DEV_MODE=True
+ - WATCHFILES_FORCE_POLLING=true
stdin_open: true
tty: true
diff --git a/packages/grid/docker-compose.multinode.yml b/packages/grid/docker-compose.multinode.yml
index 89afa75e075..8d1eeb27e8b 100644
--- a/packages/grid/docker-compose.multinode.yml
+++ b/packages/grid/docker-compose.multinode.yml
@@ -138,6 +138,7 @@ services:
network_mode: service:proxy
volumes:
- ${BACKEND_STORAGE_PATH}:/storage
+ - /var/run/docker.sock:/var/run/docker.sock
stdin_open: true
tty: true
labels:
diff --git a/packages/grid/docker-compose.yml b/packages/grid/docker-compose.yml
index 833c0fd45ff..b30843a2728 100644
--- a/packages/grid/docker-compose.yml
+++ b/packages/grid/docker-compose.yml
@@ -105,6 +105,7 @@ services:
image: "${DOCKER_IMAGE_BACKEND?Variable not set}:${VERSION-latest}"
depends_on:
- proxy
+ - mongo
env_file:
- .env
environment:
@@ -134,10 +135,12 @@ services:
- QUEUE_PORT=${QUEUE_PORT}
- CREATE_PRODUCER=true
- N_CONSUMERS=0
+ - HOST_GRID_PATH=${PWD}
command: "/app/grid/start.sh"
network_mode: service:proxy
volumes:
- ${BACKEND_STORAGE_PATH}:/storage
+ - /var/run/docker.sock:/var/run/docker.sock
stdin_open: true
tty: true
labels:
diff --git a/packages/grid/frontend/package.json b/packages/grid/frontend/package.json
index 4fb6d42f4ee..51acba9a3ce 100644
--- a/packages/grid/frontend/package.json
+++ b/packages/grid/frontend/package.json
@@ -1,6 +1,6 @@
{
"name": "pygrid-ui",
- "version": "0.8.2-beta.33",
+ "version": "0.8.2-beta.35",
"private": true,
"scripts": {
"dev": "pnpm i && vite dev --host --port 80",
@@ -25,7 +25,7 @@
"eslint": "^8.44.0",
"eslint-config-prettier": "^8.8.0",
"eslint-plugin-svelte3": "^4.0.0",
- "postcss": "^8.4.26",
+ "postcss": "^8.4.31",
"prettier": "^2.8.8",
"prettier-plugin-svelte": "^2.10.1",
"svelte": "^3.59.2",
diff --git a/packages/grid/frontend/pnpm-lock.yaml b/packages/grid/frontend/pnpm-lock.yaml
index 915af263ebb..4d8360635d7 100644
--- a/packages/grid/frontend/pnpm-lock.yaml
+++ b/packages/grid/frontend/pnpm-lock.yaml
@@ -1,9 +1,5 @@
lockfileVersion: '6.0'
-settings:
- autoInstallPeers: true
- excludeLinksFromLockfile: false
-
dependencies:
capnp-ts:
specifier: ^0.7.0
@@ -51,7 +47,7 @@ devDependencies:
version: 5.62.0(eslint@8.44.0)(typescript@4.9.5)
autoprefixer:
specifier: ^10.4.14
- version: 10.4.14(postcss@8.4.26)
+ version: 10.4.14(postcss@8.4.31)
dotenv:
specifier: ^16.3.1
version: 16.3.1
@@ -68,8 +64,8 @@ devDependencies:
specifier: ^4.0.0
version: 4.0.0(eslint@8.44.0)(svelte@3.59.2)
postcss:
- specifier: ^8.4.26
- version: 8.4.26
+ specifier: ^8.4.31
+ version: 8.4.31
prettier:
specifier: ^2.8.8
version: 2.8.8
@@ -81,19 +77,19 @@ devDependencies:
version: 3.59.2
svelte-preprocess:
specifier: ^4.10.7
- version: 4.10.7(postcss@8.4.26)(svelte@3.59.2)(typescript@4.9.5)
+ version: 4.10.7(postcss@8.4.31)(svelte@3.59.2)(typescript@4.9.5)
svelte-search:
specifier: ^2.0.1
version: 2.0.1
tailwindcss:
specifier: 3.3.1
- version: 3.3.1(postcss@8.4.26)
+ version: 3.3.1(postcss@8.4.31)
typescript:
specifier: ^4.9.5
version: 4.9.5
vite:
specifier: ^4.4.4
- version: 4.4.4(@types/node@20.2.5)
+ version: 4.4.4(@types/node@20.8.2)
vitest:
specifier: ^0.33.0
version: 0.33.0
@@ -381,28 +377,28 @@ packages:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
dependencies:
eslint: 8.44.0
- eslint-visitor-keys: 3.4.1
+ eslint-visitor-keys: 3.4.3
dev: true
- /@eslint-community/regexpp@4.5.1:
+ /@eslint-community/regexpp@4.9.1:
resolution:
{
- integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==
+ integrity: sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==
}
engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 }
dev: true
- /@eslint/eslintrc@2.1.0:
+ /@eslint/eslintrc@2.1.2:
resolution:
{
- integrity: sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==
+ integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==
}
engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
dependencies:
ajv: 6.12.6
debug: 4.3.4
espree: 9.6.1
- globals: 13.20.0
+ globals: 13.23.0
ignore: 5.2.4
import-fresh: 3.3.0
js-yaml: 4.1.0
@@ -420,10 +416,10 @@ packages:
engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
dev: true
- /@humanwhocodes/config-array@0.11.10:
+ /@humanwhocodes/config-array@0.11.11:
resolution:
{
- integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==
+ integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==
}
engines: { node: '>=10.10.0' }
dependencies:
@@ -449,10 +445,10 @@ packages:
}
dev: true
- /@jest/schemas@29.6.0:
+ /@jest/schemas@29.6.3:
resolution:
{
- integrity: sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==
+ integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==
}
engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
dependencies:
@@ -468,13 +464,13 @@ packages:
dependencies:
'@jridgewell/set-array': 1.1.2
'@jridgewell/sourcemap-codec': 1.4.15
- '@jridgewell/trace-mapping': 0.3.18
+ '@jridgewell/trace-mapping': 0.3.19
dev: true
- /@jridgewell/resolve-uri@3.1.0:
+ /@jridgewell/resolve-uri@3.1.1:
resolution:
{
- integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==
+ integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==
}
engines: { node: '>=6.0.0' }
dev: true
@@ -487,13 +483,6 @@ packages:
engines: { node: '>=6.0.0' }
dev: true
- /@jridgewell/sourcemap-codec@1.4.14:
- resolution:
- {
- integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
- }
- dev: true
-
/@jridgewell/sourcemap-codec@1.4.15:
resolution:
{
@@ -501,14 +490,14 @@ packages:
}
dev: true
- /@jridgewell/trace-mapping@0.3.18:
+ /@jridgewell/trace-mapping@0.3.19:
resolution:
{
- integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==
+ integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==
}
dependencies:
- '@jridgewell/resolve-uri': 3.1.0
- '@jridgewell/sourcemap-codec': 1.4.14
+ '@jridgewell/resolve-uri': 3.1.1
+ '@jridgewell/sourcemap-codec': 1.4.15
dev: true
/@nodelib/fs.scandir@2.1.5:
@@ -549,93 +538,93 @@ packages:
engines: { node: '>=16' }
hasBin: true
dependencies:
- '@types/node': 20.2.5
+ '@types/node': 20.8.2
playwright-core: 1.36.1
optionalDependencies:
fsevents: 2.3.2
dev: true
- /@polka/url@1.0.0-next.21:
+ /@polka/url@1.0.0-next.23:
resolution:
{
- integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==
+ integrity: sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==
}
dev: true
- /@rollup/plugin-commonjs@25.0.3(rollup@3.23.0):
+ /@rollup/plugin-commonjs@25.0.5(rollup@3.29.4):
resolution:
{
- integrity: sha512-uBdtWr/H3BVcgm97MUdq2oJmqBR23ny1hOrWe2PKo9FTbjsGqg32jfasJUKYAI5ouqacjRnj65mBB/S79F+GQA==
+ integrity: sha512-xY8r/A9oisSeSuLCTfhssyDjo9Vp/eDiRLXkg1MXCcEEgEjPmLU+ZyDB20OOD0NlyDa/8SGbK5uIggF5XTx77w==
}
engines: { node: '>=14.0.0' }
peerDependencies:
- rollup: ^2.68.0||^3.0.0
+ rollup: ^2.68.0||^3.0.0||^4.0.0
peerDependenciesMeta:
rollup:
optional: true
dependencies:
- '@rollup/pluginutils': 5.0.2(rollup@3.23.0)
+ '@rollup/pluginutils': 5.0.5(rollup@3.29.4)
commondir: 1.0.1
estree-walker: 2.0.2
glob: 8.1.0
is-reference: 1.2.1
magic-string: 0.27.0
- rollup: 3.23.0
+ rollup: 3.29.4
dev: true
- /@rollup/plugin-json@6.0.0(rollup@3.23.0):
+ /@rollup/plugin-json@6.0.1(rollup@3.29.4):
resolution:
{
- integrity: sha512-i/4C5Jrdr1XUarRhVu27EEwjt4GObltD7c+MkCIpO2QIbojw8MUs+CCTqOphQi3Qtg1FLmYt+l+6YeoIf51J7w==
+ integrity: sha512-RgVfl5hWMkxN1h/uZj8FVESvPuBJ/uf6ly6GTj0GONnkfoBN5KC0MSz+PN2OLDgYXMhtG0mWpTrkiOjoxAIevw==
}
engines: { node: '>=14.0.0' }
peerDependencies:
- rollup: ^1.20.0||^2.0.0||^3.0.0
+ rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
peerDependenciesMeta:
rollup:
optional: true
dependencies:
- '@rollup/pluginutils': 5.0.2(rollup@3.23.0)
- rollup: 3.23.0
+ '@rollup/pluginutils': 5.0.5(rollup@3.29.4)
+ rollup: 3.29.4
dev: true
- /@rollup/plugin-node-resolve@15.1.0(rollup@3.23.0):
+ /@rollup/plugin-node-resolve@15.2.2(rollup@3.29.4):
resolution:
{
- integrity: sha512-xeZHCgsiZ9pzYVgAo9580eCGqwh/XCEUM9q6iQfGNocjgkufHAqC3exA+45URvhiYV8sBF9RlBai650eNs7AsA==
+ integrity: sha512-f64bU4OKqV0yihtxFemmuf0oj37pToCFMISCA+sJbbIAl5wcpbRO9XgWNWb1tDiWQJUcPxo6V0l59hcuZOQ3kw==
}
engines: { node: '>=14.0.0' }
peerDependencies:
- rollup: ^2.78.0||^3.0.0
+ rollup: ^2.78.0||^3.0.0||^4.0.0
peerDependenciesMeta:
rollup:
optional: true
dependencies:
- '@rollup/pluginutils': 5.0.2(rollup@3.23.0)
+ '@rollup/pluginutils': 5.0.5(rollup@3.29.4)
'@types/resolve': 1.20.2
deepmerge: 4.3.1
is-builtin-module: 3.2.1
is-module: 1.0.0
- resolve: 1.22.2
- rollup: 3.23.0
+ resolve: 1.22.6
+ rollup: 3.29.4
dev: true
- /@rollup/pluginutils@5.0.2(rollup@3.23.0):
+ /@rollup/pluginutils@5.0.5(rollup@3.29.4):
resolution:
{
- integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==
+ integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==
}
engines: { node: '>=14.0.0' }
peerDependencies:
- rollup: ^1.20.0||^2.0.0||^3.0.0
+ rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
peerDependenciesMeta:
rollup:
optional: true
dependencies:
- '@types/estree': 1.0.1
+ '@types/estree': 1.0.2
estree-walker: 2.0.2
picomatch: 2.3.1
- rollup: 3.23.0
+ rollup: 3.29.4
dev: true
/@sinclair/typebox@0.27.8:
@@ -653,11 +642,11 @@ packages:
peerDependencies:
'@sveltejs/kit': ^1.0.0
dependencies:
- '@rollup/plugin-commonjs': 25.0.3(rollup@3.23.0)
- '@rollup/plugin-json': 6.0.0(rollup@3.23.0)
- '@rollup/plugin-node-resolve': 15.1.0(rollup@3.23.0)
+ '@rollup/plugin-commonjs': 25.0.5(rollup@3.29.4)
+ '@rollup/plugin-json': 6.0.1(rollup@3.29.4)
+ '@rollup/plugin-node-resolve': 15.2.2(rollup@3.29.4)
'@sveltejs/kit': 1.22.3(svelte@3.59.2)(vite@4.4.4)
- rollup: 3.23.0
+ rollup: 3.29.4
dev: true
/@sveltejs/kit@1.22.3(svelte@3.59.2)(vite@4.4.4):
@@ -672,61 +661,61 @@ packages:
svelte: ^3.54.0 || ^4.0.0-next.0
vite: ^4.0.0
dependencies:
- '@sveltejs/vite-plugin-svelte': 2.4.1(svelte@3.59.2)(vite@4.4.4)
- '@types/cookie': 0.5.1
+ '@sveltejs/vite-plugin-svelte': 2.4.6(svelte@3.59.2)(vite@4.4.4)
+ '@types/cookie': 0.5.2
cookie: 0.5.0
devalue: 4.3.2
esm-env: 1.0.0
kleur: 4.1.5
- magic-string: 0.30.0
+ magic-string: 0.30.4
mime: 3.0.0
sade: 1.8.1
set-cookie-parser: 2.6.0
sirv: 2.0.3
svelte: 3.59.2
undici: 5.22.1
- vite: 4.4.4(@types/node@20.2.5)
+ vite: 4.4.4(@types/node@20.8.2)
transitivePeerDependencies:
- supports-color
dev: true
- /@sveltejs/vite-plugin-svelte-inspector@1.0.2(@sveltejs/vite-plugin-svelte@2.4.1)(svelte@3.59.2)(vite@4.4.4):
+ /@sveltejs/vite-plugin-svelte-inspector@1.0.4(@sveltejs/vite-plugin-svelte@2.4.6)(svelte@3.59.2)(vite@4.4.4):
resolution:
{
- integrity: sha512-Cy1dUMcYCnDVV/hPLXa43YZJ2jGKVW5rA0xuNL9dlmYhT0yoS1g7+FOFSRlgk0BXKk/Oc7grs+8BVA5Iz2fr8A==
+ integrity: sha512-zjiuZ3yydBtwpF3bj0kQNV0YXe+iKE545QGZVTaylW3eAzFr+pJ/cwK8lZEaRp4JtaJXhD5DyWAV4AxLh6DgaQ==
}
engines: { node: ^14.18.0 || >= 16 }
peerDependencies:
'@sveltejs/vite-plugin-svelte': ^2.2.0
- svelte: ^3.54.0 || ^4.0.0-next.0
+ svelte: ^3.54.0 || ^4.0.0
vite: ^4.0.0
dependencies:
- '@sveltejs/vite-plugin-svelte': 2.4.1(svelte@3.59.2)(vite@4.4.4)
+ '@sveltejs/vite-plugin-svelte': 2.4.6(svelte@3.59.2)(vite@4.4.4)
debug: 4.3.4
svelte: 3.59.2
- vite: 4.4.4(@types/node@20.2.5)
+ vite: 4.4.4(@types/node@20.8.2)
transitivePeerDependencies:
- supports-color
dev: true
- /@sveltejs/vite-plugin-svelte@2.4.1(svelte@3.59.2)(vite@4.4.4):
+ /@sveltejs/vite-plugin-svelte@2.4.6(svelte@3.59.2)(vite@4.4.4):
resolution:
{
- integrity: sha512-bNNKvoRY89ptY7udeBSCmTdCVwkjmMcZ0j/z9J5MuedT8jPjq0zrknAo/jF1sToAza4NVaAgR9AkZoD9oJJmnA==
+ integrity: sha512-zO79p0+DZnXPnF0ltIigWDx/ux7Ni+HRaFOw720Qeivc1azFUrJxTl0OryXVibYNx1hCboGia1NRV3x8RNv4cA==
}
engines: { node: ^14.18.0 || >= 16 }
peerDependencies:
- svelte: ^3.54.0 || ^4.0.0-next.0
+ svelte: ^3.54.0 || ^4.0.0
vite: ^4.0.0
dependencies:
- '@sveltejs/vite-plugin-svelte-inspector': 1.0.2(@sveltejs/vite-plugin-svelte@2.4.1)(svelte@3.59.2)(vite@4.4.4)
+ '@sveltejs/vite-plugin-svelte-inspector': 1.0.4(@sveltejs/vite-plugin-svelte@2.4.6)(svelte@3.59.2)(vite@4.4.4)
debug: 4.3.4
deepmerge: 4.3.1
kleur: 4.1.5
- magic-string: 0.30.0
+ magic-string: 0.30.4
svelte: 3.59.2
- svelte-hmr: 0.15.2(svelte@3.59.2)
- vite: 4.4.4(@types/node@20.2.5)
+ svelte-hmr: 0.15.3(svelte@3.59.2)
+ vite: 4.4.4(@types/node@20.8.2)
vitefu: 0.2.4(vite@4.4.4)
transitivePeerDependencies:
- supports-color
@@ -738,41 +727,41 @@ packages:
integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==
}
dependencies:
- '@types/chai': 4.3.5
+ '@types/chai': 4.3.6
dev: true
- /@types/chai@4.3.5:
+ /@types/chai@4.3.6:
resolution:
{
- integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==
+ integrity: sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==
}
dev: true
- /@types/cookie@0.5.1:
+ /@types/cookie@0.5.2:
resolution:
{
- integrity: sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==
+ integrity: sha512-DBpRoJGKJZn7RY92dPrgoMew8xCWc2P71beqsjyhEI/Ds9mOyVmBwtekyfhpwFIVt1WrxTonFifiOZ62V8CnNA==
}
dev: true
- /@types/estree@1.0.1:
+ /@types/estree@1.0.2:
resolution:
{
- integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==
+ integrity: sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==
}
dev: true
- /@types/json-schema@7.0.12:
+ /@types/json-schema@7.0.13:
resolution:
{
- integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==
+ integrity: sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==
}
dev: true
- /@types/node@20.2.5:
+ /@types/node@20.8.2:
resolution:
{
- integrity: sha512-JJulVEQXmiY9Px5axXHeYGLSjhkZEnD+MDPDGbCbIAbMslkKwmygtZFy1X6s/075Yo94sf8GuSlFfPzysQrWZQ==
+ integrity: sha512-Vvycsc9FQdwhxE3y3DzeIxuEJbWGDsnrxvMADzTDF/lcdR9/K+AQIeAghTQsHtotg/q0j3WEOYS/jQgSdWue3w==
}
dev: true
@@ -783,10 +772,10 @@ packages:
}
dev: true
- /@types/pug@2.0.6:
+ /@types/pug@2.0.7:
resolution:
{
- integrity: sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==
+ integrity: sha512-I469DU0UXNC1aHepwirWhu9YKg5fkxohZD95Ey/5A7lovC+Siu+MCLffva87lnfThaOrw9Vb1DUN5t55oULAAw==
}
dev: true
@@ -804,13 +793,13 @@ packages:
}
deprecated: This is a stub types definition. sass provides its own type definitions, so you do not need this installed.
dependencies:
- sass: 1.62.1
+ sass: 1.68.0
dev: true
- /@types/semver@7.5.0:
+ /@types/semver@7.5.3:
resolution:
{
- integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==
+ integrity: sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==
}
dev: true
@@ -828,7 +817,7 @@ packages:
typescript:
optional: true
dependencies:
- '@eslint-community/regexpp': 4.5.1
+ '@eslint-community/regexpp': 4.9.1
'@typescript-eslint/parser': 5.62.0(eslint@8.44.0)(typescript@4.9.5)
'@typescript-eslint/scope-manager': 5.62.0
'@typescript-eslint/type-utils': 5.62.0(eslint@8.44.0)(typescript@4.9.5)
@@ -944,8 +933,8 @@ packages:
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.44.0)
- '@types/json-schema': 7.0.12
- '@types/semver': 7.5.0
+ '@types/json-schema': 7.0.13
+ '@types/semver': 7.5.3
'@typescript-eslint/scope-manager': 5.62.0
'@typescript-eslint/types': 5.62.0
'@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5)
@@ -965,7 +954,7 @@ packages:
engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
dependencies:
'@typescript-eslint/types': 5.62.0
- eslint-visitor-keys: 3.4.1
+ eslint-visitor-keys: 3.4.3
dev: true
/@vitest/expect@0.33.0:
@@ -976,7 +965,7 @@ packages:
dependencies:
'@vitest/spy': 0.33.0
'@vitest/utils': 0.33.0
- chai: 4.3.7
+ chai: 4.3.10
dev: true
/@vitest/runner@0.33.0:
@@ -996,9 +985,9 @@ packages:
integrity: sha512-tJjrl//qAHbyHajpFvr8Wsk8DIOODEebTu7pgBrP07iOepR5jYkLFiqLq2Ltxv+r0uptUb4izv1J8XBOwKkVYA==
}
dependencies:
- magic-string: 0.30.1
+ magic-string: 0.30.4
pathe: 1.1.1
- pretty-format: 29.6.1
+ pretty-format: 29.7.0
dev: true
/@vitest/spy@0.33.0:
@@ -1007,7 +996,7 @@ packages:
integrity: sha512-Kv+yZ4hnH1WdiAkPUQTpRxW8kGtH8VRTnus7ZTGovFYM1ZezJpvGtb9nPIjPnptHbsyIAxYZsEpVPYgtpjGnrg==
}
dependencies:
- tinyspy: 2.1.1
+ tinyspy: 2.2.0
dev: true
/@vitest/utils@0.33.0:
@@ -1016,9 +1005,9 @@ packages:
integrity: sha512-pF1w22ic965sv+EN6uoePkAOTkAPWM03Ri/jXNyMIKBb/XHLDPfhLvf/Fa9g0YECevAIz56oVYXhodLvLQ/awA==
}
dependencies:
- diff-sequences: 29.4.3
+ diff-sequences: 29.6.3
loupe: 2.3.6
- pretty-format: 29.6.1
+ pretty-format: 29.7.0
dev: true
/acorn-jsx@5.3.2(acorn@8.10.0):
@@ -1134,7 +1123,7 @@ packages:
}
dev: true
- /autoprefixer@10.4.14(postcss@8.4.26):
+ /autoprefixer@10.4.14(postcss@8.4.31):
resolution:
{
integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==
@@ -1144,12 +1133,12 @@ packages:
peerDependencies:
postcss: ^8.1.0
dependencies:
- browserslist: 4.21.7
- caniuse-lite: 1.0.30001492
- fraction.js: 4.2.0
+ browserslist: 4.22.1
+ caniuse-lite: 1.0.30001546
+ fraction.js: 4.3.6
normalize-range: 0.1.2
picocolors: 1.0.0
- postcss: 8.4.26
+ postcss: 8.4.31
postcss-value-parser: 4.2.0
dev: true
@@ -1197,18 +1186,18 @@ packages:
fill-range: 7.0.1
dev: true
- /browserslist@4.21.7:
+ /browserslist@4.22.1:
resolution:
{
- integrity: sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA==
+ integrity: sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==
}
engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 }
hasBin: true
dependencies:
- caniuse-lite: 1.0.30001492
- electron-to-chromium: 1.4.414
- node-releases: 2.0.12
- update-browserslist-db: 1.0.11(browserslist@4.21.7)
+ caniuse-lite: 1.0.30001546
+ electron-to-chromium: 1.4.543
+ node-releases: 2.0.13
+ update-browserslist-db: 1.0.13(browserslist@4.22.1)
dev: true
/buffer-crc32@0.2.13:
@@ -1260,10 +1249,10 @@ packages:
engines: { node: '>= 6' }
dev: true
- /caniuse-lite@1.0.30001492:
+ /caniuse-lite@1.0.30001546:
resolution:
{
- integrity: sha512-2efF8SAZwgAX1FJr87KWhvuJxnGJKOnctQa8xLOskAXNXq8oiuqgl6u1kk3fFpsp3GgvzlRjiK1sl63hNtFADw==
+ integrity: sha512-zvtSJwuQFpewSyRrI3AsftF6rM0X80mZkChIt1spBGEvRglCrjTniXvinc8JKRoqTwXAgvqTImaN9igfSMtUBw==
}
dev: true
@@ -1274,22 +1263,22 @@ packages:
}
dependencies:
debug: 4.3.4
- tslib: 2.5.2
+ tslib: 2.6.2
transitivePeerDependencies:
- supports-color
dev: false
- /chai@4.3.7:
+ /chai@4.3.10:
resolution:
{
- integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==
+ integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==
}
engines: { node: '>=4' }
dependencies:
assertion-error: 1.1.0
- check-error: 1.0.2
+ check-error: 1.0.3
deep-eql: 4.1.3
- get-func-name: 2.0.0
+ get-func-name: 2.0.2
loupe: 2.3.6
pathval: 1.1.1
type-detect: 4.0.8
@@ -1306,11 +1295,13 @@ packages:
supports-color: 7.2.0
dev: true
- /check-error@1.0.2:
+ /check-error@1.0.3:
resolution:
{
- integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==
+ integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==
}
+ dependencies:
+ get-func-name: 2.0.2
dev: true
/chokidar@3.5.3:
@@ -1328,7 +1319,7 @@ packages:
normalize-path: 3.0.0
readdirp: 3.6.0
optionalDependencies:
- fsevents: 2.3.2
+ fsevents: 2.3.3
dev: true
/color-convert@2.0.1:
@@ -1460,10 +1451,10 @@ packages:
}
dev: true
- /diff-sequences@29.4.3:
+ /diff-sequences@29.6.3:
resolution:
{
- integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==
+ integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==
}
engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
dev: true
@@ -1503,10 +1494,10 @@ packages:
engines: { node: '>=12' }
dev: true
- /electron-to-chromium@1.4.414:
+ /electron-to-chromium@1.4.543:
resolution:
{
- integrity: sha512-RRuCvP6ekngVh2SAJaOKT/hxqc9JAsK+Pe0hP5tGQIfonU2Zy9gMGdJ+mBdyl/vNucMG6gkXYtuM4H/1giws5w==
+ integrity: sha512-t2ZP4AcGE0iKCCQCBx/K2426crYdxD3YU6l0uK2EO3FZH0pbC4pFz/sZm2ruZsND6hQBTcDWWlo/MLpiOdif5g==
}
dev: true
@@ -1602,10 +1593,10 @@ packages:
estraverse: 4.3.0
dev: true
- /eslint-scope@7.2.0:
+ /eslint-scope@7.2.2:
resolution:
{
- integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==
+ integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==
}
engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
dependencies:
@@ -1613,10 +1604,10 @@ packages:
estraverse: 5.3.0
dev: true
- /eslint-visitor-keys@3.4.1:
+ /eslint-visitor-keys@3.4.3:
resolution:
{
- integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==
+ integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
}
engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
dev: true
@@ -1630,10 +1621,10 @@ packages:
hasBin: true
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.44.0)
- '@eslint-community/regexpp': 4.5.1
- '@eslint/eslintrc': 2.1.0
+ '@eslint-community/regexpp': 4.9.1
+ '@eslint/eslintrc': 2.1.2
'@eslint/js': 8.44.0
- '@humanwhocodes/config-array': 0.11.10
+ '@humanwhocodes/config-array': 0.11.11
'@humanwhocodes/module-importer': 1.0.1
'@nodelib/fs.walk': 1.2.8
ajv: 6.12.6
@@ -1642,8 +1633,8 @@ packages:
debug: 4.3.4
doctrine: 3.0.0
escape-string-regexp: 4.0.0
- eslint-scope: 7.2.0
- eslint-visitor-keys: 3.4.1
+ eslint-scope: 7.2.2
+ eslint-visitor-keys: 3.4.3
espree: 9.6.1
esquery: 1.5.0
esutils: 2.0.3
@@ -1651,7 +1642,7 @@ packages:
file-entry-cache: 6.0.1
find-up: 5.0.0
glob-parent: 6.0.2
- globals: 13.20.0
+ globals: 13.23.0
graphemer: 1.4.0
ignore: 5.2.4
import-fresh: 3.3.0
@@ -1688,7 +1679,7 @@ packages:
dependencies:
acorn: 8.10.0
acorn-jsx: 5.3.2(acorn@8.10.0)
- eslint-visitor-keys: 3.4.1
+ eslint-visitor-keys: 3.4.3
dev: true
/esquery@1.5.0:
@@ -1749,10 +1740,10 @@ packages:
}
dev: true
- /fast-glob@3.2.12:
+ /fast-glob@3.3.1:
resolution:
{
- integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==
+ integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==
}
engines: { node: '>=8.6.0' }
dependencies:
@@ -1793,7 +1784,7 @@ packages:
}
engines: { node: ^10.12.0 || >=12.0.0 }
dependencies:
- flat-cache: 3.0.4
+ flat-cache: 3.1.0
dev: true
/fill-range@7.0.1:
@@ -1817,28 +1808,29 @@ packages:
path-exists: 4.0.0
dev: true
- /flat-cache@3.0.4:
+ /flat-cache@3.1.0:
resolution:
{
- integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==
+ integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==
}
- engines: { node: ^10.12.0 || >=12.0.0 }
+ engines: { node: '>=12.0.0' }
dependencies:
- flatted: 3.2.7
+ flatted: 3.2.9
+ keyv: 4.5.3
rimraf: 3.0.2
dev: true
- /flatted@3.2.7:
+ /flatted@3.2.9:
resolution:
{
- integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==
+ integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==
}
dev: true
- /fraction.js@4.2.0:
+ /fraction.js@4.3.6:
resolution:
{
- integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==
+ integrity: sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==
}
dev: true
@@ -1860,17 +1852,21 @@ packages:
dev: true
optional: true
- /function-bind@1.1.1:
+ /fsevents@2.3.3:
resolution:
{
- integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
+ integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
}
+ engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 }
+ os: [darwin]
+ requiresBuild: true
dev: true
+ optional: true
- /get-func-name@2.0.0:
+ /get-func-name@2.0.2:
resolution:
{
- integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==
+ integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==
}
dev: true
@@ -1936,10 +1932,10 @@ packages:
once: 1.4.0
dev: true
- /globals@13.20.0:
+ /globals@13.23.0:
resolution:
{
- integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==
+ integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==
}
engines: { node: '>=8' }
dependencies:
@@ -1955,7 +1951,7 @@ packages:
dependencies:
array-union: 2.1.0
dir-glob: 3.0.1
- fast-glob: 3.2.12
+ fast-glob: 3.3.1
ignore: 5.2.4
merge2: 1.4.1
slash: 3.0.0
@@ -1983,14 +1979,12 @@ packages:
engines: { node: '>=8' }
dev: true
- /has@1.0.3:
+ /has@1.0.4:
resolution:
{
- integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
+ integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==
}
engines: { node: '>= 0.4.0' }
- dependencies:
- function-bind: 1.1.1
dev: true
/ignore@5.2.4:
@@ -2001,10 +1995,10 @@ packages:
engines: { node: '>= 4' }
dev: true
- /immutable@4.3.0:
+ /immutable@4.3.4:
resolution:
{
- integrity: sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==
+ integrity: sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==
}
dev: true
@@ -2064,13 +2058,13 @@ packages:
builtin-modules: 3.3.0
dev: true
- /is-core-module@2.12.1:
+ /is-core-module@2.13.0:
resolution:
{
- integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==
+ integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==
}
dependencies:
- has: 1.0.3
+ has: 1.0.4
dev: true
/is-extglob@2.1.1:
@@ -2120,7 +2114,7 @@ packages:
integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==
}
dependencies:
- '@types/estree': 1.0.1
+ '@types/estree': 1.0.2
dev: true
/isexe@2.0.0:
@@ -2130,10 +2124,10 @@ packages:
}
dev: true
- /jiti@1.18.2:
+ /jiti@1.20.0:
resolution:
{
- integrity: sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==
+ integrity: sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==
}
hasBin: true
dev: true
@@ -2148,6 +2142,13 @@ packages:
argparse: 2.0.1
dev: true
+ /json-buffer@3.0.1:
+ resolution:
+ {
+ integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
+ }
+ dev: true
+
/json-schema-traverse@0.4.1:
resolution:
{
@@ -2176,6 +2177,15 @@ packages:
}
dev: false
+ /keyv@4.5.3:
+ resolution:
+ {
+ integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==
+ }
+ dependencies:
+ json-buffer: 3.0.1
+ dev: true
+
/kleur@4.1.5:
resolution:
{
@@ -2265,7 +2275,7 @@ packages:
integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==
}
dependencies:
- get-func-name: 2.0.0
+ get-func-name: 2.0.2
dev: true
/lru-cache@6.0.0:
@@ -2296,20 +2306,10 @@ packages:
'@jridgewell/sourcemap-codec': 1.4.15
dev: true
- /magic-string@0.30.0:
- resolution:
- {
- integrity: sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==
- }
- engines: { node: '>=12' }
- dependencies:
- '@jridgewell/sourcemap-codec': 1.4.15
- dev: true
-
- /magic-string@0.30.1:
+ /magic-string@0.30.4:
resolution:
{
- integrity: sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==
+ integrity: sha512-Q/TKtsC5BPm0kGqgBIF9oXAs/xEf2vRKiIB4wCRQTJOQIByZ1d+NnUOotvJOvNpi5RNIgVOMC3pOuaP1ZTDlVg==
}
engines: { node: '>=12' }
dependencies:
@@ -2388,16 +2388,16 @@ packages:
minimist: 1.2.8
dev: true
- /mlly@1.4.0:
+ /mlly@1.4.2:
resolution:
{
- integrity: sha512-ua8PAThnTwpprIaU47EPeZ/bPUVp2QYBbWMphUQpVdBI3Lgqzm5KZQ45Agm3YJedHXaIHl6pBGabaLSUPPSptg==
+ integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==
}
dependencies:
acorn: 8.10.0
pathe: 1.1.1
pkg-types: 1.0.3
- ufo: 1.1.2
+ ufo: 1.3.1
dev: true
/mri@1.2.0:
@@ -2456,10 +2456,10 @@ packages:
}
dev: true
- /node-releases@2.0.12:
+ /node-releases@2.0.13:
resolution:
{
- integrity: sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==
+ integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==
}
dev: true
@@ -2635,10 +2635,10 @@ packages:
engines: { node: '>=0.10.0' }
dev: true
- /pirates@4.0.5:
+ /pirates@4.0.6:
resolution:
{
- integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==
+ integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==
}
engines: { node: '>= 6' }
dev: true
@@ -2650,7 +2650,7 @@ packages:
}
dependencies:
jsonc-parser: 3.2.0
- mlly: 1.4.0
+ mlly: 1.4.2
pathe: 1.1.1
dev: true
@@ -2663,7 +2663,7 @@ packages:
hasBin: true
dev: true
- /postcss-import@14.1.0(postcss@8.4.26):
+ /postcss-import@14.1.0(postcss@8.4.31):
resolution:
{
integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==
@@ -2672,13 +2672,13 @@ packages:
peerDependencies:
postcss: ^8.0.0
dependencies:
- postcss: 8.4.26
+ postcss: 8.4.31
postcss-value-parser: 4.2.0
read-cache: 1.0.0
- resolve: 1.22.2
+ resolve: 1.22.6
dev: true
- /postcss-js@4.0.1(postcss@8.4.26):
+ /postcss-js@4.0.1(postcss@8.4.31):
resolution:
{
integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==
@@ -2688,10 +2688,10 @@ packages:
postcss: ^8.4.21
dependencies:
camelcase-css: 2.0.1
- postcss: 8.4.26
+ postcss: 8.4.31
dev: true
- /postcss-load-config@3.1.4(postcss@8.4.26):
+ /postcss-load-config@3.1.4(postcss@8.4.31):
resolution:
{
integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==
@@ -2707,11 +2707,11 @@ packages:
optional: true
dependencies:
lilconfig: 2.1.0
- postcss: 8.4.26
+ postcss: 8.4.31
yaml: 1.10.2
dev: true
- /postcss-nested@6.0.0(postcss@8.4.26):
+ /postcss-nested@6.0.0(postcss@8.4.31):
resolution:
{
integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==
@@ -2720,7 +2720,7 @@ packages:
peerDependencies:
postcss: ^8.2.14
dependencies:
- postcss: 8.4.26
+ postcss: 8.4.31
postcss-selector-parser: 6.0.13
dev: true
@@ -2742,10 +2742,10 @@ packages:
}
dev: true
- /postcss@8.4.26:
+ /postcss@8.4.31:
resolution:
{
- integrity: sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw==
+ integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==
}
engines: { node: ^10 || ^12 || >=14 }
dependencies:
@@ -2784,14 +2784,14 @@ packages:
hasBin: true
dev: true
- /pretty-format@29.6.1:
+ /pretty-format@29.7.0:
resolution:
{
- integrity: sha512-7jRj+yXO0W7e4/tSJKoR7HRIHLPPjtNaUGG2xxKQnGvPNRkgWcQ0AZX6P4KBRJN4FcTBWb3sa7DVUJmocYuoog==
+ integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==
}
engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 }
dependencies:
- '@jest/schemas': 29.6.0
+ '@jest/schemas': 29.6.3
ansi-styles: 5.2.0
react-is: 18.2.0
dev: true
@@ -2861,14 +2861,14 @@ packages:
engines: { node: '>=4' }
dev: true
- /resolve@1.22.2:
+ /resolve@1.22.6:
resolution:
{
- integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==
+ integrity: sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==
}
hasBin: true
dependencies:
- is-core-module: 2.12.1
+ is-core-module: 2.13.0
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
dev: true
@@ -2901,26 +2901,15 @@ packages:
glob: 7.2.3
dev: true
- /rollup@3.23.0:
+ /rollup@3.29.4:
resolution:
{
- integrity: sha512-h31UlwEi7FHihLe1zbk+3Q7z1k/84rb9BSwmBSr/XjOCEaBJ2YyedQDuM0t/kfOS0IxM+vk1/zI9XxYj9V+NJQ==
+ integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==
}
engines: { node: '>=14.18.0', npm: '>=8.0.0' }
hasBin: true
optionalDependencies:
- fsevents: 2.3.2
- dev: true
-
- /rollup@3.26.2:
- resolution:
- {
- integrity: sha512-6umBIGVz93er97pMgQO08LuH3m6PUb3jlDUUGFsNJB6VgTCUaDFpupf5JfU30529m/UKOgmiX+uY6Sx8cOYpLA==
- }
- engines: { node: '>=14.18.0', npm: '>=8.0.0' }
- hasBin: true
- optionalDependencies:
- fsevents: 2.3.2
+ fsevents: 2.3.3
dev: true
/run-parallel@1.2.0:
@@ -2954,16 +2943,16 @@ packages:
rimraf: 2.7.1
dev: true
- /sass@1.62.1:
+ /sass@1.68.0:
resolution:
{
- integrity: sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A==
+ integrity: sha512-Lmj9lM/fef0nQswm1J2HJcEsBUba4wgNx2fea6yJHODREoMFnwRpZydBnX/RjyXw2REIwdkbqE4hrTo4qfDBUA==
}
engines: { node: '>=14.0.0' }
hasBin: true
dependencies:
chokidar: 3.5.3
- immutable: 4.3.0
+ immutable: 4.3.4
source-map-js: 1.0.2
dev: true
@@ -3016,7 +3005,7 @@ packages:
}
engines: { node: '>= 10' }
dependencies:
- '@polka/url': 1.0.0-next.21
+ '@polka/url': 1.0.0-next.23
mrmime: 1.0.1
totalist: 3.0.1
dev: true
@@ -3065,10 +3054,10 @@ packages:
}
dev: true
- /std-env@3.3.3:
+ /std-env@3.4.3:
resolution:
{
- integrity: sha512-Rz6yejtVyWnVjC1RFvNmYL10kgjC49EOghxWn0RFqlCHGFpQx+Xe7yW3I4ceK1SGrWIGMjD5Kbue8W/udkbMJg==
+ integrity: sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==
}
dev: true
@@ -3108,19 +3097,19 @@ packages:
engines: { node: '>=8' }
dev: true
- /strip-literal@1.0.1:
+ /strip-literal@1.3.0:
resolution:
{
- integrity: sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==
+ integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==
}
dependencies:
acorn: 8.10.0
dev: true
- /sucrase@3.32.0:
+ /sucrase@3.34.0:
resolution:
{
- integrity: sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==
+ integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==
}
engines: { node: '>=8' }
hasBin: true
@@ -3130,7 +3119,7 @@ packages:
glob: 7.1.6
lines-and-columns: 1.2.4
mz: 2.7.0
- pirates: 4.0.5
+ pirates: 4.0.6
ts-interface-checker: 0.1.13
dev: true
@@ -3152,19 +3141,19 @@ packages:
engines: { node: '>= 0.4' }
dev: true
- /svelte-hmr@0.15.2(svelte@3.59.2):
+ /svelte-hmr@0.15.3(svelte@3.59.2):
resolution:
{
- integrity: sha512-q/bAruCvFLwvNbeE1x3n37TYFb3mTBJ6TrCq6p2CoFbSTNhDE9oAtEfpy+wmc9So8AG0Tja+X0/mJzX9tSfvIg==
+ integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==
}
engines: { node: ^12.20 || ^14.13.1 || >= 16 }
peerDependencies:
- svelte: ^3.19.0 || ^4.0.0-next.0
+ svelte: ^3.19.0 || ^4.0.0
dependencies:
svelte: 3.59.2
dev: true
- /svelte-preprocess@4.10.7(postcss@8.4.26)(svelte@3.59.2)(typescript@4.9.5):
+ /svelte-preprocess@4.10.7(postcss@8.4.31)(svelte@3.59.2)(typescript@4.9.5):
resolution:
{
integrity: sha512-sNPBnqYD6FnmdBrUmBCaqS00RyCsCpj2BG58A1JBswNF7b0OKviwxqVrOL/CKyJrLSClrSeqQv5BXNg2RUbPOw==
@@ -3208,11 +3197,11 @@ packages:
typescript:
optional: true
dependencies:
- '@types/pug': 2.0.6
+ '@types/pug': 2.0.7
'@types/sass': 1.45.0
detect-indent: 6.1.0
magic-string: 0.25.9
- postcss: 8.4.26
+ postcss: 8.4.31
sorcery: 0.10.0
strip-indent: 3.0.0
svelte: 3.59.2
@@ -3234,7 +3223,7 @@ packages:
engines: { node: '>= 8' }
dev: true
- /tailwindcss@3.3.1(postcss@8.4.26):
+ /tailwindcss@3.3.1(postcss@8.4.31):
resolution:
{
integrity: sha512-Vkiouc41d4CEq0ujXl6oiGFQ7bA3WEhUZdTgXAhtKxSy49OmKs8rEfQmupsfF0IGW8fv2iQkp1EVUuapCFrZ9g==
@@ -3249,25 +3238,25 @@ packages:
color-name: 1.1.4
didyoumean: 1.2.2
dlv: 1.1.3
- fast-glob: 3.2.12
+ fast-glob: 3.3.1
glob-parent: 6.0.2
is-glob: 4.0.3
- jiti: 1.18.2
+ jiti: 1.20.0
lilconfig: 2.1.0
micromatch: 4.0.5
normalize-path: 3.0.0
object-hash: 3.0.0
picocolors: 1.0.0
- postcss: 8.4.26
- postcss-import: 14.1.0(postcss@8.4.26)
- postcss-js: 4.0.1(postcss@8.4.26)
- postcss-load-config: 3.1.4(postcss@8.4.26)
- postcss-nested: 6.0.0(postcss@8.4.26)
+ postcss: 8.4.31
+ postcss-import: 14.1.0(postcss@8.4.31)
+ postcss-js: 4.0.1(postcss@8.4.31)
+ postcss-load-config: 3.1.4(postcss@8.4.31)
+ postcss-nested: 6.0.0(postcss@8.4.31)
postcss-selector-parser: 6.0.13
postcss-value-parser: 4.2.0
quick-lru: 5.1.1
- resolve: 1.22.2
- sucrase: 3.32.0
+ resolve: 1.22.6
+ sucrase: 3.34.0
transitivePeerDependencies:
- ts-node
dev: true
@@ -3298,10 +3287,10 @@ packages:
any-promise: 1.3.0
dev: true
- /tinybench@2.5.0:
+ /tinybench@2.5.1:
resolution:
{
- integrity: sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==
+ integrity: sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==
}
dev: true
@@ -3313,10 +3302,10 @@ packages:
engines: { node: '>=14.0.0' }
dev: true
- /tinyspy@2.1.1:
+ /tinyspy@2.2.0:
resolution:
{
- integrity: sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==
+ integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==
}
engines: { node: '>=14.0.0' }
dev: true
@@ -3353,10 +3342,10 @@ packages:
}
dev: true
- /tslib@2.5.2:
+ /tslib@2.6.2:
resolution:
{
- integrity: sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==
+ integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
}
dev: false
@@ -3408,10 +3397,10 @@ packages:
hasBin: true
dev: true
- /ufo@1.1.2:
+ /ufo@1.3.1:
resolution:
{
- integrity: sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ==
+ integrity: sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==
}
dev: true
@@ -3425,16 +3414,16 @@ packages:
busboy: 1.6.0
dev: true
- /update-browserslist-db@1.0.11(browserslist@4.21.7):
+ /update-browserslist-db@1.0.13(browserslist@4.22.1):
resolution:
{
- integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==
+ integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==
}
hasBin: true
peerDependencies:
browserslist: '>= 4.21.0'
dependencies:
- browserslist: 4.21.7
+ browserslist: 4.22.1
escalade: 3.1.1
picocolors: 1.0.0
dev: true
@@ -3463,7 +3452,7 @@ packages:
hasBin: true
dev: false
- /vite-node@0.33.0(@types/node@20.2.5):
+ /vite-node@0.33.0(@types/node@20.8.2):
resolution:
{
integrity: sha512-19FpHYbwWWxDr73ruNahC+vtEdza52kA90Qb3La98yZ0xULqV8A5JLNPUff0f5zID4984tW7l3DH2przTJUZSw==
@@ -3473,10 +3462,10 @@ packages:
dependencies:
cac: 6.7.14
debug: 4.3.4
- mlly: 1.4.0
+ mlly: 1.4.2
pathe: 1.1.1
picocolors: 1.0.0
- vite: 4.4.4(@types/node@20.2.5)
+ vite: 4.4.4(@types/node@20.8.2)
transitivePeerDependencies:
- '@types/node'
- less
@@ -3488,7 +3477,7 @@ packages:
- terser
dev: true
- /vite@4.4.4(@types/node@20.2.5):
+ /vite@4.4.4(@types/node@20.8.2):
resolution:
{
integrity: sha512-4mvsTxjkveWrKDJI70QmelfVqTm+ihFAb6+xf4sjEU2TmUCTlVX87tmg/QooPEMQb/lM9qGHT99ebqPziEd3wg==
@@ -3519,12 +3508,12 @@ packages:
terser:
optional: true
dependencies:
- '@types/node': 20.2.5
+ '@types/node': 20.8.2
esbuild: 0.18.13
- postcss: 8.4.26
- rollup: 3.26.2
+ postcss: 8.4.31
+ rollup: 3.29.4
optionalDependencies:
- fsevents: 2.3.2
+ fsevents: 2.3.3
dev: true
/vitefu@0.2.4(vite@4.4.4):
@@ -3538,7 +3527,7 @@ packages:
vite:
optional: true
dependencies:
- vite: 4.4.4(@types/node@20.2.5)
+ vite: 4.4.4(@types/node@20.8.2)
dev: true
/vitest@0.33.0:
@@ -3575,9 +3564,9 @@ packages:
webdriverio:
optional: true
dependencies:
- '@types/chai': 4.3.5
+ '@types/chai': 4.3.6
'@types/chai-subset': 1.3.3
- '@types/node': 20.2.5
+ '@types/node': 20.8.2
'@vitest/expect': 0.33.0
'@vitest/runner': 0.33.0
'@vitest/snapshot': 0.33.0
@@ -3586,18 +3575,18 @@ packages:
acorn: 8.10.0
acorn-walk: 8.2.0
cac: 6.7.14
- chai: 4.3.7
+ chai: 4.3.10
debug: 4.3.4
local-pkg: 0.4.3
- magic-string: 0.30.1
+ magic-string: 0.30.4
pathe: 1.1.1
picocolors: 1.0.0
- std-env: 3.3.3
- strip-literal: 1.0.1
- tinybench: 2.5.0
+ std-env: 3.4.3
+ strip-literal: 1.3.0
+ tinybench: 2.5.1
tinypool: 0.6.0
- vite: 4.4.4(@types/node@20.2.5)
- vite-node: 0.33.0(@types/node@20.2.5)
+ vite: 4.4.4(@types/node@20.8.2)
+ vite-node: 0.33.0(@types/node@20.8.2)
why-is-node-running: 2.2.2
transitivePeerDependencies:
- less
diff --git a/packages/grid/helm/helm.py b/packages/grid/helm/helm.py
index 301db1f984f..fec1a2104c1 100644
--- a/packages/grid/helm/helm.py
+++ b/packages/grid/helm/helm.py
@@ -1,12 +1,25 @@
# stdlib
import argparse
import os
+import shutil
import sys
from typing import Any
# third party
import yaml
+
+# Preserve those beautiful multi-line strings with |
+# https://stackoverflow.com/a/33300001
+def str_presenter(dumper: Any, data: Any) -> Any:
+ if len(data.splitlines()) > 1: # check for multiline string
+ return dumper.represent_scalar("tag:yaml.org,2002:str", data, style="|")
+ return dumper.represent_scalar("tag:yaml.org,2002:str", data)
+
+
+yaml.add_representer(str, str_presenter)
+yaml.representer.SafeRepresenter.add_representer(str, str_presenter)
+
template_variables = {
"STACK_API_KEY": "secrets.syft",
"DEFAULT_ROOT_EMAIL": "secrets.syft",
@@ -52,11 +65,9 @@ def replace_variables(d: Any) -> None:
if "kubernetes.io/ingress.class" in d:
d["kubernetes.io/ingress.class"] = "{{ .Values.ingress.ingressClass }}"
- if "host" in d:
- d["host"] = "{{ .Values.node.settings.hostname }}"
-
- if "hosts" in d:
- d["hosts"] = ["{{ .Values.node.settings.hostname }}"]
+ if "kind" in d and d["kind"] == "Ingress" and "spec" in d:
+ d["spec"]["tls"] = [{"hosts": ["{{ .Values.node.settings.hostname }}"]}]
+ d["spec"]["rules"][0]["host"] = "{{ .Values.node.settings.hostname }}"
# parse whole tree
@@ -73,9 +84,9 @@ def fix_devspace_yaml(d: Any) -> None:
fix_devspace_yaml(item)
-def get_yaml_name(doc: Any) -> Any:
+def get_yaml_name(doc: dict) -> Any:
try:
- return yaml.safe_load(doc).get("metadata", {}).get("name", "")
+ return doc.get("metadata", {}).get("name", "")
except Exception: # nosec
return ""
@@ -87,13 +98,12 @@ def main() -> None:
"file", nargs="?", type=argparse.FileType("r"), default=sys.stdin
)
args = parser.parse_args()
- helm_dir = "helm"
-
text = args.file.read()
- # input_file = f"{helm_dir}/raw_manifests.yaml"
- # with open(input_file, "w") as f:
- # f.write(text)
+ file_count = 0
+ helm_dir = "helm"
+ manifest_file = f"{helm_dir}/manifests.yaml"
+ helm_chart_template_dir = f"{helm_dir}/syft/templates"
# Read input from file or stdin
lines = text.splitlines()
@@ -103,50 +113,42 @@ def main() -> None:
first_index = next(
i for i, line in enumerate(lines) if line.strip().startswith("apiVersion")
)
- input_data = "---\n" + "\n".join(lines[first_index - 1 :])
+ input_data = "\n".join(lines[first_index:])
except StopIteration:
- print("No line starting with 'apiVersion' found in the input.")
- return
+ print("❌ Error: No line starting with 'apiVersion' found in the input.")
+ exit(1)
- helm_chart_template_dir = f"{helm_dir}/syft/templates"
+ # Load the multi-doc yaml file
+ try:
+ yaml_docs = list(yaml.safe_load_all(input_data))
+ except Exception as e:
+ print(f"❌ Error while parsing yaml file: {e}")
+ exit(1)
+
+ # clear templates dir
+ shutil.rmtree(helm_chart_template_dir, ignore_errors=True)
+
+ # Create directories if they don't exist
+ os.makedirs(helm_chart_template_dir, exist_ok=True)
- # Split input_data into separate documents
- yaml_docs = input_data.split("---")
+ # Cleanup YAML docs
+ yaml_docs = [doc for doc in yaml_docs if doc]
# Sort YAML docs based on metadata name
yaml_docs.sort(key=get_yaml_name)
- # Join sorted YAML docs
- sorted_input_data = "---".join(yaml_docs)
-
# Save sorted YAML docs to file
- input_file = f"{helm_dir}/manifests.yaml"
- with open(input_file, "w") as f:
- f.write(sorted_input_data)
+ with open(manifest_file, "w") as f:
+ yaml.dump_all(yaml_docs, f)
for doc in yaml_docs:
- lines = doc.strip().split("\n")
- if len(lines) <= 2:
- continue # skip empty sections
-
- output_dir = os.path.join(helm_chart_template_dir)
-
- # Create directories if they don't exist
- os.makedirs(output_dir, exist_ok=True)
-
- # Parse yaml to find metadata.name
- yaml_content = yaml.safe_load("\n".join(lines[1:])) # exclude source_line
- fix_devspace_yaml(yaml_content)
- name = yaml_content.get("metadata", {}).get("name")
+ fix_devspace_yaml(doc)
+ name = doc.get("metadata", {}).get("name")
+ kind = doc.get("kind", "").lower()
if name:
# Create new file with name or append if it already exists
- new_file = os.path.join(output_dir, f"{name}.yaml")
- if os.path.exists(new_file):
- mode = "a" # append if file exists
- else:
- mode = "w" # write if new file
-
- yaml_dump = yaml.dump(yaml_content)
+ new_file = os.path.join(helm_chart_template_dir, f"{name}-{kind}.yaml")
+ yaml_dump = yaml.dump(doc)
yaml_dump = (
yaml_dump.replace("'{{", "{{")
.replace("}}'", "}}")
@@ -154,8 +156,15 @@ def main() -> None:
.replace("}}''", "}}")
)
- with open(new_file, mode) as f:
- f.write("---\n" + yaml_dump) # add document separator
+ with open(new_file, "w") as f:
+ f.write(yaml_dump) # add document separator
+ file_count += 1
+
+ if file_count > 0:
+ print(f"✅ Done: Generated {file_count} template files")
+ else:
+ print("❌ Failed: No files were generated. Check input for errors.")
+ exit(1)
if __name__ == "__main__":
diff --git a/packages/grid/helm/manifests.yaml b/packages/grid/helm/manifests.yaml
index 933a8df8509..e65ae44e901 100644
--- a/packages/grid/helm/manifests.yaml
+++ b/packages/grid/helm/manifests.yaml
@@ -1,3 +1,8 @@
+---
+# Source: component-chart/templates/deployment.yaml
+# Create headless service for StatefulSet
+---
+
---
# Source: component-chart/templates/ingress.yaml
#
@@ -6,17 +11,17 @@
---
# Source: component-chart/templates/deployment.yaml
# Create headless service for StatefulSet
----
-
---
# Source: component-chart/templates/ingress.yaml
#
---
-# Source: component-chart/templates/deployment.yaml
-# Create headless service for StatefulSet
-------
+
+---
+# Source: component-chart/templates/ingress.yaml
+#
+---
# Source: component-chart/templates/service.yaml
apiVersion: v1
kind: Service
@@ -26,7 +31,7 @@ metadata:
"app.kubernetes.io/name": "backend"
"app.kubernetes.io/managed-by": "Helm"
annotations:
- "helm.sh/chart": "component-chart-0.8.6"
+ "helm.sh/chart": "component-chart-0.9.1"
spec:
externalIPs:
ports:
@@ -49,7 +54,7 @@ metadata:
"app.kubernetes.io/component": "backend"
"app.kubernetes.io/managed-by": "Helm"
annotations:
- "helm.sh/chart": "component-chart-0.8.6"
+ "helm.sh/chart": "component-chart-0.9.1"
spec:
replicas: 1
podManagementPolicy: "OrderedReady"
@@ -66,7 +71,7 @@ spec:
"app.kubernetes.io/component": "backend"
"app.kubernetes.io/managed-by": "Helm"
annotations:
- "helm.sh/chart": "component-chart-0.8.6"
+ "helm.sh/chart": "component-chart-0.9.1"
spec:
imagePullSecrets:
nodeSelector:
@@ -93,7 +98,7 @@ spec:
ephemeralContainers:
null
containers:
- - image: "docker.io/openmined/grid-backend:0.8.2-beta.1"
+ - image: "docker.io/openmined/grid-backend:0.8.2-beta.33"
name: "container-0"
command:
args:
@@ -111,7 +116,7 @@ spec:
- name: RELEASE
value: production
- name: VERSION
- value: 0.8.2-beta.1
+ value: 0.8.2-beta.33
- name: VERSION_HASH
value: unknown
- name: NODE_TYPE
@@ -177,7 +182,7 @@ spec:
"app.kubernetes.io/component": "backend"
"app.kubernetes.io/managed-by": "Helm"
annotations:
- "helm.sh/chart": "component-chart-0.8.6"
+ "helm.sh/chart": "component-chart-0.9.1"
spec:
accessModes:
- ReadWriteOnce
@@ -185,6 +190,7 @@ spec:
requests:
storage: "100Mi"
---
+# Source: component-chart/templates/deployment.yaml
# Create headless service for StatefulSet
apiVersion: v1
kind: Service
@@ -194,7 +200,7 @@ metadata:
"app.kubernetes.io/name": "backend"
"app.kubernetes.io/managed-by": "Helm"
annotations:
- "helm.sh/chart": "component-chart-0.8.6"
+ "helm.sh/chart": "component-chart-0.9.1"
spec:
ports:
# At least one port is required to have Kubernetes define an endpoint which is required for DNS to work
@@ -215,7 +221,7 @@ metadata:
"app.kubernetes.io/name": "frontend"
"app.kubernetes.io/managed-by": "Helm"
annotations:
- "helm.sh/chart": "component-chart-0.8.6"
+ "helm.sh/chart": "component-chart-0.9.1"
spec:
externalIPs:
ports:
@@ -238,7 +244,7 @@ metadata:
"app.kubernetes.io/component": "frontend"
"app.kubernetes.io/managed-by": "Helm"
annotations:
- "helm.sh/chart": "component-chart-0.8.6"
+ "helm.sh/chart": "component-chart-0.9.1"
spec:
replicas: 1
strategy:
@@ -255,7 +261,7 @@ spec:
"app.kubernetes.io/component": "frontend"
"app.kubernetes.io/managed-by": "Helm"
annotations:
- "helm.sh/chart": "component-chart-0.8.6"
+ "helm.sh/chart": "component-chart-0.9.1"
spec:
imagePullSecrets:
nodeSelector:
@@ -282,13 +288,13 @@ spec:
ephemeralContainers:
null
containers:
- - image: "docker.io/openmined/grid-frontend:0.8.2-beta.1"
+ - image: "docker.io/openmined/grid-frontend:0.8.2-beta.33"
name: "container-0"
command:
args:
env:
- name: VERSION
- value: 0.8.2-beta.1
+ value: 0.8.2-beta.33
- name: VERSION_HASH
value: unknown
- name: NODE_TYPE
@@ -351,7 +357,7 @@ metadata:
"app.kubernetes.io/name": "mongo"
"app.kubernetes.io/managed-by": "Helm"
annotations:
- "helm.sh/chart": "component-chart-0.8.6"
+ "helm.sh/chart": "component-chart-0.9.1"
spec:
externalIPs:
ports:
@@ -374,7 +380,7 @@ metadata:
"app.kubernetes.io/component": "mongo"
"app.kubernetes.io/managed-by": "Helm"
annotations:
- "helm.sh/chart": "component-chart-0.8.6"
+ "helm.sh/chart": "component-chart-0.9.1"
spec:
replicas: 1
podManagementPolicy: "OrderedReady"
@@ -391,7 +397,7 @@ spec:
"app.kubernetes.io/component": "mongo"
"app.kubernetes.io/managed-by": "Helm"
annotations:
- "helm.sh/chart": "component-chart-0.8.6"
+ "helm.sh/chart": "component-chart-0.9.1"
spec:
imagePullSecrets:
nodeSelector:
@@ -418,7 +424,7 @@ spec:
ephemeralContainers:
null
containers:
- - image: "mongo:latest"
+ - image: "mongo:7.0.0"
name: "container-0"
command:
args:
@@ -456,7 +462,7 @@ spec:
"app.kubernetes.io/component": "mongo"
"app.kubernetes.io/managed-by": "Helm"
annotations:
- "helm.sh/chart": "component-chart-0.8.6"
+ "helm.sh/chart": "component-chart-0.9.1"
spec:
accessModes:
- ReadWriteOnce
@@ -474,7 +480,7 @@ metadata:
"app.kubernetes.io/name": "mongo"
"app.kubernetes.io/managed-by": "Helm"
annotations:
- "helm.sh/chart": "component-chart-0.8.6"
+ "helm.sh/chart": "component-chart-0.9.1"
spec:
ports:
# At least one port is required to have Kubernetes define an endpoint which is required for DNS to work
@@ -495,7 +501,7 @@ metadata:
"app.kubernetes.io/name": "proxy"
"app.kubernetes.io/managed-by": "Helm"
annotations:
- "helm.sh/chart": "component-chart-0.8.6"
+ "helm.sh/chart": "component-chart-0.9.1"
spec:
externalIPs:
ports:
@@ -518,7 +524,7 @@ metadata:
"app.kubernetes.io/component": "proxy"
"app.kubernetes.io/managed-by": "Helm"
annotations:
- "helm.sh/chart": "component-chart-0.8.6"
+ "helm.sh/chart": "component-chart-0.9.1"
spec:
replicas: 1
strategy:
@@ -535,7 +541,7 @@ spec:
"app.kubernetes.io/component": "proxy"
"app.kubernetes.io/managed-by": "Helm"
annotations:
- "helm.sh/chart": "component-chart-0.8.6"
+ "helm.sh/chart": "component-chart-0.9.1"
spec:
imagePullSecrets:
nodeSelector:
@@ -562,7 +568,7 @@ spec:
ephemeralContainers:
null
containers:
- - image: "traefik:v2.8.1"
+ - image: "traefik:v2.10"
name: "container-0"
command:
args:
@@ -594,9 +600,193 @@ spec:
name: traefik-main-config
volumeClaimTemplates:
---
+# Source: component-chart/templates/service.yaml
+apiVersion: v1
+kind: Service
+metadata:
+ name: "seaweedfs"
+ labels:
+ "app.kubernetes.io/name": "seaweedfs"
+ "app.kubernetes.io/managed-by": "Helm"
+ annotations:
+ "helm.sh/chart": "component-chart-0.9.1"
+spec:
+ externalIPs:
+ ports:
+ - name: "port-0"
+ port: 8888
+ targetPort: 8888
+ protocol: "TCP"
+ - name: "port-1"
+ port: 8333
+ targetPort: 8333
+ protocol: "TCP"
+ selector:
+ "app.kubernetes.io/name": "devspace-app"
+ "app.kubernetes.io/component": "seaweedfs"
+ type: "ClusterIP"
+---
+# Source: component-chart/templates/deployment.yaml
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+ name: "seaweedfs"
+ labels:
+ "app.kubernetes.io/name": "devspace-app"
+ "app.kubernetes.io/component": "seaweedfs"
+ "app.kubernetes.io/managed-by": "Helm"
+ annotations:
+ "helm.sh/chart": "component-chart-0.9.1"
+spec:
+ replicas: 1
+ podManagementPolicy: "OrderedReady"
+ serviceName: "seaweedfs-headless"
+ selector:
+ matchLabels:
+ "app.kubernetes.io/name": "devspace-app"
+ "app.kubernetes.io/component": "seaweedfs"
+ "app.kubernetes.io/managed-by": "Helm"
+ template:
+ metadata:
+ labels:
+ "app.kubernetes.io/name": "devspace-app"
+ "app.kubernetes.io/component": "seaweedfs"
+ "app.kubernetes.io/managed-by": "Helm"
+ annotations:
+ "helm.sh/chart": "component-chart-0.9.1"
+ spec:
+ imagePullSecrets:
+ nodeSelector:
+ null
+ nodeName:
+ null
+ affinity:
+ null
+ tolerations:
+ null
+ dnsConfig:
+ null
+ hostAliases:
+ null
+ overhead:
+ null
+ readinessGates:
+ null
+ securityContext:
+ null
+ topologySpreadConstraints:
+ null
+ terminationGracePeriodSeconds: 5
+ ephemeralContainers:
+ null
+ containers:
+ - image: "chrislusf/seaweedfs:3.55"
+ name: "container-0"
+ command:
+ - "sh"
+ - "/etc/seaweedfs/start.sh"
+ args:
+ env:
+ - name: S3_VOLUME_SIZE_MB
+ value: "1024"
+ - name: S3_ROOT_USER
+ value: admin
+ - name: S3_ROOT_PWD
+ value: admin
+ - name: S3_PORT
+ value: "8333"
+ envFrom:
+ null
+ securityContext:
+ null
+ lifecycle:
+ null
+ livenessProbe:
+ null
+ readinessProbe:
+ null
+ startupProbe:
+ null
+ volumeDevices:
+ null
+ volumeMounts:
+ - mountPath: "/etc/seaweedfs/filer.toml"
+ name: "seaweedfs-config"
+ subPath: "filer.toml"
+ readOnly: false
+ - mountPath: "/etc/seaweedfs/start.sh"
+ name: "seaweedfs-config"
+ subPath: "start.sh"
+ readOnly: false
+ - mountPath: "/data/blob"
+ name: "seaweedfs-data"
+ subPath: ""
+ readOnly: false
+ initContainers:
+ volumes:
+ - name: "seaweedfs-config"
+ configMap:
+ name: seaweedfs-config
+ volumeClaimTemplates:
+ - metadata:
+ name: "seaweedfs-data"
+ labels:
+ "app.kubernetes.io/name": "devspace-app"
+ "app.kubernetes.io/component": "seaweedfs"
+ "app.kubernetes.io/managed-by": "Helm"
+ annotations:
+ "helm.sh/chart": "component-chart-0.9.1"
+ spec:
+ accessModes:
+ - ReadWriteOnce
+ resources:
+ requests:
+ storage: "5Gi"
+---
# Source: component-chart/templates/ingress.yaml
#
+apiVersion: v1
+data:
+ filer.toml: |
+ [leveldb2]
+ enabled = true
+ dir = "./filerldb2"
+ start.sh: |
+ #! /usr/bin/env bash
+
+ sleep 30 &&
+ echo "s3.configure -access_key ${S3_ROOT_USER} -secret_key ${S3_ROOT_PWD} -user iam -actions Read,Write,List,Tagging,Admin -apply" \
+ | weed shell > /dev/null 2>&1 \
+ & weed server -s3 -s3.port=${S3_PORT} -master.volumeSizeLimitMB=${S3_VOLUME_SIZE_MB}
+kind: ConfigMap
+metadata:
+ name: seaweedfs-config
+ namespace: default
+
+---
+# Source: component-chart/templates/deployment.yaml
+# Create headless service for StatefulSet
+apiVersion: v1
+kind: Service
+metadata:
+ name: "seaweedfs-headless"
+ labels:
+ "app.kubernetes.io/name": "seaweedfs"
+ "app.kubernetes.io/managed-by": "Helm"
+ annotations:
+ "helm.sh/chart": "component-chart-0.9.1"
+spec:
+ ports:
+ # At least one port is required to have Kubernetes define an endpoint which is required for DNS to work
+ - port: 80
+ name: web
+ clusterIP: None
+ selector:
+ "app.kubernetes.io/name": "devspace-app"
+ "app.kubernetes.io/component": "seaweedfs"
+ "app.kubernetes.io/managed-by": "Helm"
+---
apiVersion: v1
data:
dynamic.yml: |
diff --git a/packages/grid/helm/repo/index.yaml b/packages/grid/helm/repo/index.yaml
index 0af7646e729..38d620783c5 100644
--- a/packages/grid/helm/repo/index.yaml
+++ b/packages/grid/helm/repo/index.yaml
@@ -1,9 +1,41 @@
apiVersion: v1
entries:
syft:
+ - apiVersion: v2
+ appVersion: 0.8.2-beta.35
+ created: "2023-10-09T14:12:21.587674715Z"
+ dependencies:
+ - name: component-chart
+ repository: https://charts.devspace.sh
+ version: 0.9.1
+ description: Perform numpy-like analysis on data that remains in someone elses
+ server
+ digest: 29d7ed3c7e2c9bf375cfa107555fd13847b4a26a0957b34814df35c21505aae7
+ icon: https://raw.githubusercontent.com/OpenMined/PySyft/dev/docs/img/title_syft_light.png
+ name: syft
+ type: application
+ urls:
+ - https://openmined.github.io/PySyft/helm/syft-0.8.2-beta.35.tgz
+ version: 0.8.2-beta.35
+ - apiVersion: v2
+ appVersion: 0.8.2-beta.34
+ created: "2023-10-09T14:12:21.587144627Z"
+ dependencies:
+ - name: component-chart
+ repository: https://charts.devspace.sh
+ version: 0.9.1
+ description: Perform numpy-like analysis on data that remains in someone elses
+ server
+ digest: d9fd70258e5f60a89e87a1635d6e0410fd179c9850def738ab7b3216d81561ce
+ icon: https://raw.githubusercontent.com/OpenMined/PySyft/dev/docs/img/title_syft_light.png
+ name: syft
+ type: application
+ urls:
+ - https://openmined.github.io/PySyft/helm/syft-0.8.2-beta.34.tgz
+ version: 0.8.2-beta.34
- apiVersion: v2
appVersion: 0.8.2-beta.33
- created: "2023-10-02T10:55:27.318668102Z"
+ created: "2023-10-09T14:12:21.586621111Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -19,14 +51,14 @@ entries:
version: 0.8.2-beta.33
- apiVersion: v2
appVersion: 0.8.2-beta.32
- created: "2023-10-02T10:55:27.318183148Z"
+ created: "2023-10-09T14:12:21.586140476Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
- version: 0.8.6
+ version: 0.9.1
description: Perform numpy-like analysis on data that remains in someone elses
server
- digest: a2a5e157e5d9fe60f85388c955829e4b890bdbce7d89885318e3622db997b39e
+ digest: 2daca9dbf41826d7d2366df64fe51660155eded693620a778743be20f7f2705a
icon: https://raw.githubusercontent.com/OpenMined/PySyft/dev/docs/img/title_syft_light.png
name: syft
type: application
@@ -35,7 +67,7 @@ entries:
version: 0.8.2-beta.32
- apiVersion: v2
appVersion: 0.8.2-beta.31
- created: "2023-10-02T10:55:27.317703574Z"
+ created: "2023-10-09T14:12:21.585609787Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -51,7 +83,7 @@ entries:
version: 0.8.2-beta.31
- apiVersion: v2
appVersion: 0.8.2-beta.30
- created: "2023-10-02T10:55:27.317219803Z"
+ created: "2023-10-09T14:12:21.585124231Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -67,7 +99,7 @@ entries:
version: 0.8.2-beta.30
- apiVersion: v2
appVersion: 0.8.2-beta.29
- created: "2023-10-02T10:55:27.31622029Z"
+ created: "2023-10-09T14:12:21.58413049Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -83,7 +115,7 @@ entries:
version: 0.8.2-beta.29
- apiVersion: v2
appVersion: 0.8.2-beta.28
- created: "2023-10-02T10:55:27.315697375Z"
+ created: "2023-10-09T14:12:21.583586746Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -99,7 +131,7 @@ entries:
version: 0.8.2-beta.28
- apiVersion: v2
appVersion: 0.8.2-beta.27
- created: "2023-10-02T10:55:27.315169221Z"
+ created: "2023-10-09T14:12:21.582569185Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -115,7 +147,7 @@ entries:
version: 0.8.2-beta.27
- apiVersion: v2
appVersion: 0.8.2-beta.26
- created: "2023-10-02T10:55:27.314622382Z"
+ created: "2023-10-09T14:12:21.582073511Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -131,7 +163,7 @@ entries:
version: 0.8.2-beta.26
- apiVersion: v2
appVersion: 0.8.2-beta.25
- created: "2023-10-02T10:55:27.313561468Z"
+ created: "2023-10-09T14:12:21.581591944Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -147,7 +179,7 @@ entries:
version: 0.8.2-beta.25
- apiVersion: v2
appVersion: 0.8.2-beta.24
- created: "2023-10-02T10:55:27.313081434Z"
+ created: "2023-10-09T14:12:21.58110129Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -163,7 +195,7 @@ entries:
version: 0.8.2-beta.24
- apiVersion: v2
appVersion: 0.8.2-beta.23
- created: "2023-10-02T10:55:27.312603443Z"
+ created: "2023-10-09T14:12:21.58062384Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -179,7 +211,7 @@ entries:
version: 0.8.2-beta.23
- apiVersion: v2
appVersion: 0.8.2-beta.22
- created: "2023-10-02T10:55:27.312120413Z"
+ created: "2023-10-09T14:12:21.580141321Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -195,7 +227,7 @@ entries:
version: 0.8.2-beta.22
- apiVersion: v2
appVersion: 0.8.2-beta.21
- created: "2023-10-02T10:55:27.311616183Z"
+ created: "2023-10-09T14:12:21.57962611Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -211,7 +243,7 @@ entries:
version: 0.8.2-beta.21
- apiVersion: v2
appVersion: 0.8.2-beta.20
- created: "2023-10-02T10:55:27.311133874Z"
+ created: "2023-10-09T14:12:21.579127531Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -227,7 +259,7 @@ entries:
version: 0.8.2-beta.20
- apiVersion: v2
appVersion: 0.8.2-beta.19
- created: "2023-10-02T10:55:27.31014443Z"
+ created: "2023-10-09T14:12:21.578136605Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -243,7 +275,7 @@ entries:
version: 0.8.2-beta.19
- apiVersion: v2
appVersion: 0.8.2-beta.18
- created: "2023-10-02T10:55:27.309655108Z"
+ created: "2023-10-09T14:12:21.577631824Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -259,7 +291,7 @@ entries:
version: 0.8.2-beta.18
- apiVersion: v2
appVersion: 0.8.2-beta.17
- created: "2023-10-02T10:55:27.309144587Z"
+ created: "2023-10-09T14:12:21.577095484Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -275,7 +307,7 @@ entries:
version: 0.8.2-beta.17
- apiVersion: v2
appVersion: 0.8.2-beta.16
- created: "2023-10-02T10:55:27.308596465Z"
+ created: "2023-10-09T14:12:21.576012801Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -291,7 +323,7 @@ entries:
version: 0.8.2-beta.16
- apiVersion: v2
appVersion: 0.8.2-beta.15
- created: "2023-10-02T10:55:27.307361499Z"
+ created: "2023-10-09T14:12:21.57548626Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -307,7 +339,7 @@ entries:
version: 0.8.2-beta.15
- apiVersion: v2
appVersion: 0.8.2-beta.14
- created: "2023-10-02T10:55:27.306875964Z"
+ created: "2023-10-09T14:12:21.574991167Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -323,7 +355,7 @@ entries:
version: 0.8.2-beta.14
- apiVersion: v2
appVersion: 0.8.2-beta.13
- created: "2023-10-02T10:55:27.306378898Z"
+ created: "2023-10-09T14:12:21.574478041Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -339,7 +371,7 @@ entries:
version: 0.8.2-beta.13
- apiVersion: v2
appVersion: 0.8.2-beta.12
- created: "2023-10-02T10:55:27.30587585Z"
+ created: "2023-10-09T14:12:21.573991444Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -355,7 +387,7 @@ entries:
version: 0.8.2-beta.12
- apiVersion: v2
appVersion: 0.8.2-beta.11
- created: "2023-10-02T10:55:27.305359778Z"
+ created: "2023-10-09T14:12:21.57350061Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -371,7 +403,7 @@ entries:
version: 0.8.2-beta.11
- apiVersion: v2
appVersion: 0.8.2-beta.10
- created: "2023-10-02T10:55:27.304855729Z"
+ created: "2023-10-09T14:12:21.572993545Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -387,7 +419,7 @@ entries:
version: 0.8.2-beta.10
- apiVersion: v2
appVersion: 0.8.2-beta.9
- created: "2023-10-02T10:55:27.322211846Z"
+ created: "2023-10-09T14:12:21.591300833Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -403,7 +435,7 @@ entries:
version: 0.8.2-beta.9
- apiVersion: v2
appVersion: 0.8.2-beta.8
- created: "2023-10-02T10:55:27.321712957Z"
+ created: "2023-10-09T14:12:21.590793267Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -419,7 +451,7 @@ entries:
version: 0.8.2-beta.8
- apiVersion: v2
appVersion: 0.8.2-beta.7
- created: "2023-10-02T10:55:27.321175004Z"
+ created: "2023-10-09T14:12:21.590245075Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -435,7 +467,7 @@ entries:
version: 0.8.2-beta.7
- apiVersion: v2
appVersion: 0.8.2-beta.6
- created: "2023-10-02T10:55:27.320142179Z"
+ created: "2023-10-09T14:12:21.589491711Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -451,7 +483,7 @@ entries:
version: 0.8.2-beta.6
- apiVersion: v2
appVersion: 0.8.2-beta.5
- created: "2023-10-02T10:55:27.319626879Z"
+ created: "2023-10-09T14:12:21.588657917Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -467,7 +499,7 @@ entries:
version: 0.8.2-beta.5
- apiVersion: v2
appVersion: 0.8.2-beta.4
- created: "2023-10-02T10:55:27.319146133Z"
+ created: "2023-10-09T14:12:21.588173695Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -483,7 +515,7 @@ entries:
version: 0.8.2-beta.4
- apiVersion: v2
appVersion: 0.8.2-beta.3
- created: "2023-10-02T10:55:27.316720913Z"
+ created: "2023-10-09T14:12:21.584638065Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -499,7 +531,7 @@ entries:
version: 0.8.2-beta.3
- apiVersion: v2
appVersion: 0.8.2-beta.2
- created: "2023-10-02T10:55:27.310643119Z"
+ created: "2023-10-09T14:12:21.578634843Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -515,7 +547,7 @@ entries:
version: 0.8.2-beta.2
- apiVersion: v2
appVersion: 0.8.2-beta.1
- created: "2023-10-02T10:55:27.304368411Z"
+ created: "2023-10-09T14:12:21.572487712Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -531,7 +563,7 @@ entries:
version: 0.8.2-beta.1
- apiVersion: v2
appVersion: 0.8.1
- created: "2023-10-02T10:55:27.303839295Z"
+ created: "2023-10-09T14:12:21.571986608Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -547,7 +579,7 @@ entries:
version: 0.8.1
- apiVersion: v2
appVersion: 0.8.1-beta.21
- created: "2023-10-02T10:55:27.303342469Z"
+ created: "2023-10-09T14:12:21.571434689Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -563,7 +595,7 @@ entries:
version: 0.8.1-beta.21
- apiVersion: v2
appVersion: 0.8.1-beta.20
- created: "2023-10-02T10:55:27.302852817Z"
+ created: "2023-10-09T14:12:21.570884664Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -579,7 +611,7 @@ entries:
version: 0.8.1-beta.20
- apiVersion: v2
appVersion: 0.8.1-beta.19
- created: "2023-10-02T10:55:27.302321576Z"
+ created: "2023-10-09T14:12:21.569753015Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -595,7 +627,7 @@ entries:
version: 0.8.1-beta.19
- apiVersion: v2
appVersion: 0.8.1-beta.15
- created: "2023-10-02T10:55:27.301817477Z"
+ created: "2023-10-09T14:12:21.569233587Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -611,7 +643,7 @@ entries:
version: 0.8.1-beta.15
- apiVersion: v2
appVersion: 0.8.1-beta.12
- created: "2023-10-02T10:55:27.30127198Z"
+ created: "2023-10-09T14:12:21.568708268Z"
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
@@ -625,4 +657,4 @@ entries:
urls:
- https://openmined.github.io/PySyft/helm/syft-0.8.1-beta.12.tgz
version: 0.8.1-beta.12
-generated: "2023-10-02T10:55:27.300535147Z"
+generated: "2023-10-09T14:12:21.568023612Z"
diff --git a/packages/grid/helm/repo/syft-0.8.2-beta.32.tgz b/packages/grid/helm/repo/syft-0.8.2-beta.32.tgz
index c3d1bba0964..842d7581593 100644
Binary files a/packages/grid/helm/repo/syft-0.8.2-beta.32.tgz and b/packages/grid/helm/repo/syft-0.8.2-beta.32.tgz differ
diff --git a/packages/grid/helm/repo/syft-0.8.2-beta.34.tgz b/packages/grid/helm/repo/syft-0.8.2-beta.34.tgz
new file mode 100644
index 00000000000..b550ce79a59
Binary files /dev/null and b/packages/grid/helm/repo/syft-0.8.2-beta.34.tgz differ
diff --git a/packages/grid/helm/repo/syft-0.8.2-beta.35.tgz b/packages/grid/helm/repo/syft-0.8.2-beta.35.tgz
new file mode 100644
index 00000000000..8ee7ad2eac8
Binary files /dev/null and b/packages/grid/helm/repo/syft-0.8.2-beta.35.tgz differ
diff --git a/packages/grid/helm/syft/Chart.lock b/packages/grid/helm/syft/Chart.lock
index ca5dba38a8e..e171adaed3c 100644
--- a/packages/grid/helm/syft/Chart.lock
+++ b/packages/grid/helm/syft/Chart.lock
@@ -1,6 +1,6 @@
dependencies:
- name: component-chart
repository: https://charts.devspace.sh
- version: 0.8.6
-digest: sha256:dbc0467d06d4890514b116edbeb834771de9a5d61b54c2b221bb0f9147c48113
-generated: "2023-06-20T12:26:38.550418+10:00"
+ version: 0.9.1
+digest: sha256:fbc2b8447b97f168c9199a0bbdc3a95501a19a3213a5ddbd7a78bc4ef2ab999f
+generated: "2023-09-28T21:45:16.869504405+05:30"
diff --git a/packages/grid/helm/syft/Chart.yaml b/packages/grid/helm/syft/Chart.yaml
index e74a528303d..ab1065b0068 100644
--- a/packages/grid/helm/syft/Chart.yaml
+++ b/packages/grid/helm/syft/Chart.yaml
@@ -2,11 +2,11 @@ apiVersion: v2
name: syft
description: Perform numpy-like analysis on data that remains in someone elses server
type: application
-version: "0.8.2-beta.33"
-appVersion: "0.8.2-beta.33"
+version: "0.8.2-beta.35"
+appVersion: "0.8.2-beta.35"
icon: https://raw.githubusercontent.com/OpenMined/PySyft/dev/docs/img/title_syft_light.png
dependencies:
- name: component-chart
- version: "0.8.6"
+ version: "0.9.1"
repository: "https://charts.devspace.sh"
diff --git a/packages/grid/helm/syft/charts/component-chart-0.8.6.tgz b/packages/grid/helm/syft/charts/component-chart-0.8.6.tgz
deleted file mode 100644
index 6681f8c86d8..00000000000
Binary files a/packages/grid/helm/syft/charts/component-chart-0.8.6.tgz and /dev/null differ
diff --git a/packages/grid/helm/syft/charts/component-chart-0.9.1.tgz b/packages/grid/helm/syft/charts/component-chart-0.9.1.tgz
new file mode 100644
index 00000000000..fa9d380b7e1
Binary files /dev/null and b/packages/grid/helm/syft/charts/component-chart-0.9.1.tgz differ
diff --git a/packages/grid/helm/syft/templates/backend-headless.yaml b/packages/grid/helm/syft/templates/backend-headless-service.yaml
similarity index 88%
rename from packages/grid/helm/syft/templates/backend-headless.yaml
rename to packages/grid/helm/syft/templates/backend-headless-service.yaml
index 3b90239e026..5cd1e6668ac 100644
--- a/packages/grid/helm/syft/templates/backend-headless.yaml
+++ b/packages/grid/helm/syft/templates/backend-headless-service.yaml
@@ -1,9 +1,8 @@
----
apiVersion: v1
kind: Service
metadata:
annotations:
- helm.sh/chart: component-chart-0.8.6
+ helm.sh/chart: component-chart-0.9.1
labels:
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: backend
diff --git a/packages/grid/helm/syft/templates/backend-service.yaml b/packages/grid/helm/syft/templates/backend-service.yaml
new file mode 100644
index 00000000000..f1e676707bb
--- /dev/null
+++ b/packages/grid/helm/syft/templates/backend-service.yaml
@@ -0,0 +1,20 @@
+apiVersion: v1
+kind: Service
+metadata:
+ annotations:
+ helm.sh/chart: component-chart-0.9.1
+ labels:
+ app.kubernetes.io/managed-by: Helm
+ app.kubernetes.io/name: backend
+ name: backend
+spec:
+ externalIPs: null
+ ports:
+ - name: port-0
+ port: 80
+ protocol: TCP
+ targetPort: 80
+ selector:
+ app.kubernetes.io/component: backend
+ app.kubernetes.io/name: devspace-app
+ type: ClusterIP
diff --git a/packages/grid/helm/syft/templates/backend.yaml b/packages/grid/helm/syft/templates/backend-statefulset.yaml
similarity index 84%
rename from packages/grid/helm/syft/templates/backend.yaml
rename to packages/grid/helm/syft/templates/backend-statefulset.yaml
index aef07935c67..4635147d65f 100644
--- a/packages/grid/helm/syft/templates/backend.yaml
+++ b/packages/grid/helm/syft/templates/backend-statefulset.yaml
@@ -1,30 +1,8 @@
----
-apiVersion: v1
-kind: Service
-metadata:
- annotations:
- helm.sh/chart: component-chart-0.8.6
- labels:
- app.kubernetes.io/managed-by: Helm
- app.kubernetes.io/name: backend
- name: backend
-spec:
- externalIPs: null
- ports:
- - name: port-0
- port: 80
- protocol: TCP
- targetPort: 80
- selector:
- app.kubernetes.io/component: backend
- app.kubernetes.io/name: devspace-app
- type: ClusterIP
----
apiVersion: apps/v1
kind: StatefulSet
metadata:
annotations:
- helm.sh/chart: component-chart-0.8.6
+ helm.sh/chart: component-chart-0.9.1
labels:
app.kubernetes.io/component: backend
app.kubernetes.io/managed-by: Helm
@@ -42,7 +20,7 @@ spec:
template:
metadata:
annotations:
- helm.sh/chart: component-chart-0.8.6
+ helm.sh/chart: component-chart-0.9.1
labels:
app.kubernetes.io/component: backend
app.kubernetes.io/managed-by: Helm
@@ -66,7 +44,7 @@ spec:
- name: RELEASE
value: production
- name: VERSION
- value: 0.8.2-beta.1
+ value: 0.8.2-beta.33
- name: VERSION_HASH
value: {{ .Values.node.settings.versionHash }}
- name: NODE_TYPE
@@ -104,7 +82,7 @@ spec:
- name: BACKEND_STORAGE_PATH
value: /storage
envFrom: null
- image: docker.io/openmined/grid-backend:0.8.2-beta.1
+ image: docker.io/openmined/grid-backend:0.8.2-beta.33
lifecycle: null
livenessProbe: null
name: container-0
@@ -134,7 +112,7 @@ spec:
volumeClaimTemplates:
- metadata:
annotations:
- helm.sh/chart: component-chart-0.8.6
+ helm.sh/chart: component-chart-0.9.1
labels:
app.kubernetes.io/component: backend
app.kubernetes.io/managed-by: Helm
diff --git a/packages/grid/helm/syft/templates/frontend.yaml b/packages/grid/helm/syft/templates/frontend-deployment.yaml
similarity index 72%
rename from packages/grid/helm/syft/templates/frontend.yaml
rename to packages/grid/helm/syft/templates/frontend-deployment.yaml
index 5259dedd3d6..e0b2ddb8346 100644
--- a/packages/grid/helm/syft/templates/frontend.yaml
+++ b/packages/grid/helm/syft/templates/frontend-deployment.yaml
@@ -1,30 +1,8 @@
----
-apiVersion: v1
-kind: Service
-metadata:
- annotations:
- helm.sh/chart: component-chart-0.8.6
- labels:
- app.kubernetes.io/managed-by: Helm
- app.kubernetes.io/name: frontend
- name: frontend
-spec:
- externalIPs: null
- ports:
- - name: port-0
- port: 80
- protocol: TCP
- targetPort: 80
- selector:
- app.kubernetes.io/component: frontend
- app.kubernetes.io/name: devspace-app
- type: ClusterIP
----
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
- helm.sh/chart: component-chart-0.8.6
+ helm.sh/chart: component-chart-0.9.1
labels:
app.kubernetes.io/component: frontend
app.kubernetes.io/managed-by: Helm
@@ -42,7 +20,7 @@ spec:
template:
metadata:
annotations:
- helm.sh/chart: component-chart-0.8.6
+ helm.sh/chart: component-chart-0.9.1
labels:
app.kubernetes.io/component: frontend
app.kubernetes.io/managed-by: Helm
@@ -54,7 +32,7 @@ spec:
command: null
env:
- name: VERSION
- value: 0.8.2-beta.1
+ value: 0.8.2-beta.33
- name: VERSION_HASH
value: {{ .Values.node.settings.versionHash }}
- name: NODE_TYPE
@@ -62,7 +40,7 @@ spec:
- name: NEXT_PUBLIC_API_URL
value: ${NEXT_PUBLIC_API_URL}
envFrom: null
- image: docker.io/openmined/grid-frontend:0.8.2-beta.1
+ image: docker.io/openmined/grid-frontend:0.8.2-beta.33
lifecycle: null
livenessProbe: null
name: container-0
diff --git a/packages/grid/helm/syft/templates/frontend-service.yaml b/packages/grid/helm/syft/templates/frontend-service.yaml
new file mode 100644
index 00000000000..5b9916d409c
--- /dev/null
+++ b/packages/grid/helm/syft/templates/frontend-service.yaml
@@ -0,0 +1,20 @@
+apiVersion: v1
+kind: Service
+metadata:
+ annotations:
+ helm.sh/chart: component-chart-0.9.1
+ labels:
+ app.kubernetes.io/managed-by: Helm
+ app.kubernetes.io/name: frontend
+ name: frontend
+spec:
+ externalIPs: null
+ ports:
+ - name: port-0
+ port: 80
+ protocol: TCP
+ targetPort: 80
+ selector:
+ app.kubernetes.io/component: frontend
+ app.kubernetes.io/name: devspace-app
+ type: ClusterIP
diff --git a/packages/grid/helm/syft/templates/grid-stack-ingress.yaml b/packages/grid/helm/syft/templates/grid-stack-ingress-ingress.yaml
similarity index 83%
rename from packages/grid/helm/syft/templates/grid-stack-ingress.yaml
rename to packages/grid/helm/syft/templates/grid-stack-ingress-ingress.yaml
index 134a05a92f9..4047ef28ee6 100644
--- a/packages/grid/helm/syft/templates/grid-stack-ingress.yaml
+++ b/packages/grid/helm/syft/templates/grid-stack-ingress-ingress.yaml
@@ -1,4 +1,3 @@
----
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
@@ -11,10 +10,6 @@ spec:
name: proxy
port:
number: 80
- tls:
- - hosts:
- - {{ .Values.node.settings.hostname }}
- # secretName: Add custom TLS secret here or default certificate is used
rules:
- host: {{ .Values.node.settings.hostname }}
http:
@@ -25,4 +20,7 @@ spec:
port:
number: 80
path: /
- pathType: Prefix
\ No newline at end of file
+ pathType: Prefix
+ tls:
+ - hosts:
+ - {{ .Values.node.settings.hostname }}
diff --git a/packages/grid/helm/syft/templates/mongo-headless.yaml b/packages/grid/helm/syft/templates/mongo-headless-service.yaml
similarity index 88%
rename from packages/grid/helm/syft/templates/mongo-headless.yaml
rename to packages/grid/helm/syft/templates/mongo-headless-service.yaml
index c6cd2b22bc8..685f3c81f96 100644
--- a/packages/grid/helm/syft/templates/mongo-headless.yaml
+++ b/packages/grid/helm/syft/templates/mongo-headless-service.yaml
@@ -1,9 +1,8 @@
----
apiVersion: v1
kind: Service
metadata:
annotations:
- helm.sh/chart: component-chart-0.8.6
+ helm.sh/chart: component-chart-0.9.1
labels:
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: mongo
diff --git a/packages/grid/helm/syft/templates/mongo-service.yaml b/packages/grid/helm/syft/templates/mongo-service.yaml
new file mode 100644
index 00000000000..23699f74f21
--- /dev/null
+++ b/packages/grid/helm/syft/templates/mongo-service.yaml
@@ -0,0 +1,20 @@
+apiVersion: v1
+kind: Service
+metadata:
+ annotations:
+ helm.sh/chart: component-chart-0.9.1
+ labels:
+ app.kubernetes.io/managed-by: Helm
+ app.kubernetes.io/name: mongo
+ name: mongo
+spec:
+ externalIPs: null
+ ports:
+ - name: port-0
+ port: 27017
+ protocol: TCP
+ targetPort: 27017
+ selector:
+ app.kubernetes.io/component: mongo
+ app.kubernetes.io/name: devspace-app
+ type: ClusterIP
diff --git a/packages/grid/helm/syft/templates/mongo.yaml b/packages/grid/helm/syft/templates/mongo-statefulset.yaml
similarity index 77%
rename from packages/grid/helm/syft/templates/mongo.yaml
rename to packages/grid/helm/syft/templates/mongo-statefulset.yaml
index eba25bf46cd..9da6335d889 100644
--- a/packages/grid/helm/syft/templates/mongo.yaml
+++ b/packages/grid/helm/syft/templates/mongo-statefulset.yaml
@@ -1,30 +1,8 @@
----
-apiVersion: v1
-kind: Service
-metadata:
- annotations:
- helm.sh/chart: component-chart-0.8.6
- labels:
- app.kubernetes.io/managed-by: Helm
- app.kubernetes.io/name: mongo
- name: mongo
-spec:
- externalIPs: null
- ports:
- - name: port-0
- port: 27017
- protocol: TCP
- targetPort: 27017
- selector:
- app.kubernetes.io/component: mongo
- app.kubernetes.io/name: devspace-app
- type: ClusterIP
----
apiVersion: apps/v1
kind: StatefulSet
metadata:
annotations:
- helm.sh/chart: component-chart-0.8.6
+ helm.sh/chart: component-chart-0.9.1
labels:
app.kubernetes.io/component: mongo
app.kubernetes.io/managed-by: Helm
@@ -42,7 +20,7 @@ spec:
template:
metadata:
annotations:
- helm.sh/chart: component-chart-0.8.6
+ helm.sh/chart: component-chart-0.9.1
labels:
app.kubernetes.io/component: mongo
app.kubernetes.io/managed-by: Helm
@@ -58,7 +36,7 @@ spec:
- name: MONGO_INITDB_ROOT_PASSWORD
value: {{ .Values.secrets.db.mongo.mongoInitdbRootPassword }}
envFrom: null
- image: mongo:latest
+ image: mongo:7.0.0
lifecycle: null
livenessProbe: null
name: container-0
@@ -88,7 +66,7 @@ spec:
volumeClaimTemplates:
- metadata:
annotations:
- helm.sh/chart: component-chart-0.8.6
+ helm.sh/chart: component-chart-0.9.1
labels:
app.kubernetes.io/component: mongo
app.kubernetes.io/managed-by: Helm
diff --git a/packages/grid/helm/syft/templates/proxy.yaml b/packages/grid/helm/syft/templates/proxy-deployment.yaml
similarity index 74%
rename from packages/grid/helm/syft/templates/proxy.yaml
rename to packages/grid/helm/syft/templates/proxy-deployment.yaml
index 700f6b52e75..4197618d8ef 100644
--- a/packages/grid/helm/syft/templates/proxy.yaml
+++ b/packages/grid/helm/syft/templates/proxy-deployment.yaml
@@ -1,30 +1,8 @@
----
-apiVersion: v1
-kind: Service
-metadata:
- annotations:
- helm.sh/chart: component-chart-0.8.6
- labels:
- app.kubernetes.io/managed-by: Helm
- app.kubernetes.io/name: proxy
- name: proxy
-spec:
- externalIPs: null
- ports:
- - name: proxy
- port: 80
- protocol: TCP
- targetPort: 80
- selector:
- app.kubernetes.io/component: proxy
- app.kubernetes.io/name: devspace-app
- type: ClusterIP
----
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
- helm.sh/chart: component-chart-0.8.6
+ helm.sh/chart: component-chart-0.9.1
labels:
app.kubernetes.io/component: proxy
app.kubernetes.io/managed-by: Helm
@@ -42,7 +20,7 @@ spec:
template:
metadata:
annotations:
- helm.sh/chart: component-chart-0.8.6
+ helm.sh/chart: component-chart-0.9.1
labels:
app.kubernetes.io/component: proxy
app.kubernetes.io/managed-by: Helm
@@ -56,7 +34,7 @@ spec:
- name: SERVICE_NAME
value: proxy
envFrom: null
- image: traefik:v2.8.1
+ image: traefik:v2.10
lifecycle: null
livenessProbe: null
name: container-0
diff --git a/packages/grid/helm/syft/templates/proxy-service.yaml b/packages/grid/helm/syft/templates/proxy-service.yaml
new file mode 100644
index 00000000000..987607391df
--- /dev/null
+++ b/packages/grid/helm/syft/templates/proxy-service.yaml
@@ -0,0 +1,20 @@
+apiVersion: v1
+kind: Service
+metadata:
+ annotations:
+ helm.sh/chart: component-chart-0.9.1
+ labels:
+ app.kubernetes.io/managed-by: Helm
+ app.kubernetes.io/name: proxy
+ name: proxy
+spec:
+ externalIPs: null
+ ports:
+ - name: proxy
+ port: 80
+ protocol: TCP
+ targetPort: 80
+ selector:
+ app.kubernetes.io/component: proxy
+ app.kubernetes.io/name: devspace-app
+ type: ClusterIP
diff --git a/packages/grid/helm/syft/templates/seaweedfs-config-configmap.yaml b/packages/grid/helm/syft/templates/seaweedfs-config-configmap.yaml
new file mode 100644
index 00000000000..f12bd2e697b
--- /dev/null
+++ b/packages/grid/helm/syft/templates/seaweedfs-config-configmap.yaml
@@ -0,0 +1,16 @@
+apiVersion: v1
+data:
+ filer.toml: |
+ [leveldb2]
+ enabled = true
+ dir = "./filerldb2"
+ start.sh: |
+ #! /usr/bin/env bash
+
+ sleep 30 &&
+ echo "s3.configure -access_key ${S3_ROOT_USER} -secret_key ${S3_ROOT_PWD} -user iam -actions Read,Write,List,Tagging,Admin -apply" \
+ | weed shell > /dev/null 2>&1 \
+ & weed server -s3 -s3.port=${S3_PORT} -master.volumeSizeLimitMB=${S3_VOLUME_SIZE_MB}
+kind: ConfigMap
+metadata:
+ name: seaweedfs-config
diff --git a/packages/grid/helm/syft/templates/seaweedfs-headless-service.yaml b/packages/grid/helm/syft/templates/seaweedfs-headless-service.yaml
new file mode 100644
index 00000000000..850425304a2
--- /dev/null
+++ b/packages/grid/helm/syft/templates/seaweedfs-headless-service.yaml
@@ -0,0 +1,18 @@
+apiVersion: v1
+kind: Service
+metadata:
+ annotations:
+ helm.sh/chart: component-chart-0.9.1
+ labels:
+ app.kubernetes.io/managed-by: Helm
+ app.kubernetes.io/name: seaweedfs
+ name: seaweedfs-headless
+spec:
+ clusterIP: None
+ ports:
+ - name: web
+ port: 80
+ selector:
+ app.kubernetes.io/component: seaweedfs
+ app.kubernetes.io/managed-by: Helm
+ app.kubernetes.io/name: devspace-app
diff --git a/packages/grid/helm/syft/templates/seaweedfs-service.yaml b/packages/grid/helm/syft/templates/seaweedfs-service.yaml
new file mode 100644
index 00000000000..5bfa2fbaec4
--- /dev/null
+++ b/packages/grid/helm/syft/templates/seaweedfs-service.yaml
@@ -0,0 +1,24 @@
+apiVersion: v1
+kind: Service
+metadata:
+ annotations:
+ helm.sh/chart: component-chart-0.9.1
+ labels:
+ app.kubernetes.io/managed-by: Helm
+ app.kubernetes.io/name: seaweedfs
+ name: seaweedfs
+spec:
+ externalIPs: null
+ ports:
+ - name: port-0
+ port: 8888
+ protocol: TCP
+ targetPort: 8888
+ - name: port-1
+ port: 8333
+ protocol: TCP
+ targetPort: 8333
+ selector:
+ app.kubernetes.io/component: seaweedfs
+ app.kubernetes.io/name: devspace-app
+ type: ClusterIP
diff --git a/packages/grid/helm/syft/templates/seaweedfs-statefulset.yaml b/packages/grid/helm/syft/templates/seaweedfs-statefulset.yaml
new file mode 100644
index 00000000000..fbd97f33530
--- /dev/null
+++ b/packages/grid/helm/syft/templates/seaweedfs-statefulset.yaml
@@ -0,0 +1,97 @@
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+ annotations:
+ helm.sh/chart: component-chart-0.9.1
+ labels:
+ app.kubernetes.io/component: seaweedfs
+ app.kubernetes.io/managed-by: Helm
+ app.kubernetes.io/name: devspace-app
+ name: seaweedfs
+spec:
+ podManagementPolicy: OrderedReady
+ replicas: 1
+ selector:
+ matchLabels:
+ app.kubernetes.io/component: seaweedfs
+ app.kubernetes.io/managed-by: Helm
+ app.kubernetes.io/name: devspace-app
+ serviceName: seaweedfs-headless
+ template:
+ metadata:
+ annotations:
+ helm.sh/chart: component-chart-0.9.1
+ labels:
+ app.kubernetes.io/component: seaweedfs
+ app.kubernetes.io/managed-by: Helm
+ app.kubernetes.io/name: devspace-app
+ spec:
+ affinity: null
+ containers:
+ - args: null
+ command:
+ - sh
+ - /etc/seaweedfs/start.sh
+ env:
+ - name: S3_VOLUME_SIZE_MB
+ value: '1024'
+ - name: S3_ROOT_USER
+ value: admin
+ - name: S3_ROOT_PWD
+ value: admin
+ - name: S3_PORT
+ value: '8333'
+ envFrom: null
+ image: chrislusf/seaweedfs:3.55
+ lifecycle: null
+ livenessProbe: null
+ name: container-0
+ readinessProbe: null
+ securityContext: null
+ startupProbe: null
+ volumeDevices: null
+ volumeMounts:
+ - mountPath: /etc/seaweedfs/filer.toml
+ name: seaweedfs-config
+ readOnly: false
+ subPath: filer.toml
+ - mountPath: /etc/seaweedfs/start.sh
+ name: seaweedfs-config
+ readOnly: false
+ subPath: start.sh
+ - mountPath: /data/blob
+ name: seaweedfs-data
+ readOnly: false
+ subPath: ''
+ dnsConfig: null
+ ephemeralContainers: null
+ hostAliases: null
+ imagePullSecrets: null
+ initContainers: null
+ nodeName: null
+ nodeSelector: null
+ overhead: null
+ readinessGates: null
+ securityContext: null
+ terminationGracePeriodSeconds: 5
+ tolerations: null
+ topologySpreadConstraints: null
+ volumes:
+ - configMap:
+ name: seaweedfs-config
+ name: seaweedfs-config
+ volumeClaimTemplates:
+ - metadata:
+ annotations:
+ helm.sh/chart: component-chart-0.9.1
+ labels:
+ app.kubernetes.io/component: seaweedfs
+ app.kubernetes.io/managed-by: Helm
+ app.kubernetes.io/name: devspace-app
+ name: seaweedfs-data
+ spec:
+ accessModes:
+ - ReadWriteOnce
+ resources:
+ requests:
+ storage: 5Gi
diff --git a/packages/grid/helm/syft/templates/traefik-main-config-configmap.yaml b/packages/grid/helm/syft/templates/traefik-main-config-configmap.yaml
new file mode 100644
index 00000000000..829e7220b55
--- /dev/null
+++ b/packages/grid/helm/syft/templates/traefik-main-config-configmap.yaml
@@ -0,0 +1,68 @@
+apiVersion: v1
+data:
+ dynamic.yml: |
+ http:
+ services:
+ frontend:
+ loadBalancer:
+ servers:
+ - url: "http://frontend"
+ backend:
+ loadBalancer:
+ servers:
+ - url: "http://backend"
+ seaweedfs:
+ loadBalancer:
+ servers:
+ - url: "http://seaweedfs:8333"
+ routers:
+ frontend:
+ rule: "PathPrefix(`/`)"
+ entryPoints:
+ - "web"
+ service: "frontend"
+ backend:
+ rule: "PathPrefix(`/api`) || PathPrefix(`/docs`) || PathPrefix(`/redoc`)"
+ entryPoints:
+ - "web"
+ service: "backend"
+ blob-storage:
+ rule: "PathPrefix(`/blob`)"
+ entryPoints:
+ - "web"
+ service: "seaweedfs"
+ middlewares:
+ - "blob-storage-url"
+ - "blob-storage-host"
+ middlewares:
+ blob-storage-host:
+ headers:
+ customrequestheaders:
+ Host: seaweedfs:8333
+ blob-storage-url:
+ stripprefix:
+ prefixes: /blob
+ forceslash: true
+ traefik.yml: |
+ global:
+ checkNewVersion: false
+ sendAnonymousUsage: false
+
+ log:
+ level: INFO
+
+ entryPoints:
+ web:
+ address: :80
+ ping:
+ address: :8082
+
+ ping:
+ entryPoint: "ping"
+
+ providers:
+ file:
+ filename: /etc/traefik/dynamic.yml
+kind: ConfigMap
+metadata:
+ name: traefik-main-config
diff --git a/packages/grid/helm/syft/templates/traefik-main-config.yaml b/packages/grid/helm/syft/templates/traefik-main-config.yaml
deleted file mode 100644
index e3b28b6d9ea..00000000000
--- a/packages/grid/helm/syft/templates/traefik-main-config.yaml
+++ /dev/null
@@ -1,23 +0,0 @@
----
-apiVersion: v1
-data:
- dynamic.yml: "http:\n services:\n frontend:\n loadBalancer:\n servers:\n\
- \ - url: \"http://frontend\"\n backend:\n loadBalancer:\n \
- \ servers:\n - url: \"http://backend\"\n seaweedfs:\n loadBalancer:\n\
- \ servers:\n - url: \"http://seaweedfs:8333\"\n routers:\n \
- \ frontend:\n rule: \"PathPrefix(`/`)\"\n entryPoints:\n - \"\
- web\"\n service: \"frontend\"\n backend:\n rule: \"PathPrefix(`/api`)\
- \ || PathPrefix(`/docs`) || PathPrefix(`/redoc`)\"\n entryPoints:\n \
- \ - \"web\"\n service: \"backend\"\n blob-storage:\n rule: \"PathPrefix(`/blob`)\"\
- \n entryPoints:\n - \"web\"\n service: \"seaweedfs\"\n middlewares:\n\
- \ - \"blob-storage-url\"\n - \"blob-storage-host\"\n middlewares:\n\
- \ blob-storage-host:\n headers:\n customrequestheaders:\n \
- \ Host: seaweedfs:8333\n blob-storage-url:\n stripprefix:\n \
- \ prefixes: /blob\n forceslash: true\n"
- traefik.yml: "global:\n checkNewVersion: false\n sendAnonymousUsage: false\n\n\
- log:\n level: INFO\n\nentryPoints:\n web:\n address: :80\n ping:\n address:\
- \ :8082\n\nping:\n entryPoint: \"ping\"\n\nproviders:\n file:\n filename:\
- \ /etc/traefik/dynamic.yml\n"
-kind: ConfigMap
-metadata:
- name: traefik-main-config
diff --git a/packages/grid/k8s/manifests/ingress.yaml b/packages/grid/k8s/manifests/ingress.yaml
index 6dfc106550f..072e54dedb0 100644
--- a/packages/grid/k8s/manifests/ingress.yaml
+++ b/packages/grid/k8s/manifests/ingress.yaml
@@ -10,13 +10,8 @@ spec:
name: proxy
port:
number: 80
- tls:
- - hosts:
- - ""
- # secretName: Add custom TLS secret here or default certificate is used
rules:
- - host: ""
- http:
+ - http:
paths:
- backend:
service:
diff --git a/packages/grid/k8s/manifests/seaweed-filer.yaml b/packages/grid/k8s/manifests/seaweed-filer.yaml
deleted file mode 100644
index 7487645c94a..00000000000
--- a/packages/grid/k8s/manifests/seaweed-filer.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-apiVersion: v1
-kind: ConfigMap
-data:
- filer.toml: |
- [redis]
- enabled = true
- address = "redis:6379"
- password = ""
- database = 15
-metadata:
- name: seaweed-config-filer
diff --git a/packages/grid/k8s/manifests/seaweed-s3.yaml b/packages/grid/k8s/manifests/seaweed-s3.yaml
deleted file mode 100644
index ecf48f0e037..00000000000
--- a/packages/grid/k8s/manifests/seaweed-s3.yaml
+++ /dev/null
@@ -1,20 +0,0 @@
-apiVersion: v1
-kind: ConfigMap
-data:
- s3config.json: |
- {
- "identities": [
- {
- "name": "admin",
- "credentials": [
- {
- "accessKey": "admin",
- "secretKey": "admin"
- }
- ],
- "actions": ["Admin", "Read", "List", "Tagging", "Write"]
- }
- ]
- }
-metadata:
- name: seaweed-config-s3
diff --git a/packages/grid/k8s/manifests/seaweedfs.yaml b/packages/grid/k8s/manifests/seaweedfs.yaml
new file mode 100644
index 00000000000..994da439b83
--- /dev/null
+++ b/packages/grid/k8s/manifests/seaweedfs.yaml
@@ -0,0 +1,17 @@
+apiVersion: v1
+kind: ConfigMap
+data:
+ filer.toml: |
+ [leveldb2]
+ enabled = true
+ dir = "./filerldb2"
+
+ start.sh: |
+ #! /usr/bin/env bash
+
+ sleep 30 &&
+ echo "s3.configure -access_key ${S3_ROOT_USER} -secret_key ${S3_ROOT_PWD} -user iam -actions Read,Write,List,Tagging,Admin -apply" \
+ | weed shell > /dev/null 2>&1 \
+ & weed server -s3 -s3.port=${S3_PORT} -master.volumeSizeLimitMB=${S3_VOLUME_SIZE_MB}
+metadata:
+ name: seaweedfs-config
diff --git a/packages/grid/podman/podman-kube/podman-syft-kube.yaml b/packages/grid/podman/podman-kube/podman-syft-kube.yaml
index b3ffc45e120..3bd7727f113 100644
--- a/packages/grid/podman/podman-kube/podman-syft-kube.yaml
+++ b/packages/grid/podman/podman-kube/podman-syft-kube.yaml
@@ -41,7 +41,7 @@ spec:
- configMapRef:
name: podman-syft-config
- image: docker.io/openmined/grid-backend:0.8.2-beta.33
+ image: docker.io/openmined/grid-backend:0.8.2-beta.35
imagePullPolicy: IfNotPresent
resources: {}
tty: true
@@ -57,7 +57,7 @@ spec:
envFrom:
- configMapRef:
name: podman-syft-config
- image: docker.io/openmined/grid-frontend:0.8.2-beta.33
+ image: docker.io/openmined/grid-frontend:0.8.2-beta.35
imagePullPolicy: IfNotPresent
resources: {}
tty: true
diff --git a/packages/grid/seaweedfs/s3config.json b/packages/grid/seaweedfs/s3config.json
deleted file mode 100644
index 49416a081fe..00000000000
--- a/packages/grid/seaweedfs/s3config.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "identities": [
- {
- "name": "admin",
- "credentials": [
- {
- "accessKey": "admin",
- "secretKey": "admin"
- }
- ],
- "actions": ["Admin", "Read", "List", "Tagging", "Write"]
- }
- ]
-}
diff --git a/packages/grid/vagrant/almalinux_9/arm_64/Vagrantfile b/packages/grid/vagrant/almalinux_9/arm_64/Vagrantfile
new file mode 100644
index 00000000000..617003eb4f2
--- /dev/null
+++ b/packages/grid/vagrant/almalinux_9/arm_64/Vagrantfile
@@ -0,0 +1,38 @@
+Vagrant.configure("2") do |config|
+ config.vm.box = "almalinux/9.aarch64"
+ config.vm.hostname = "almalinux-9"
+
+ config.vm.provider "virtualbox" do |vb|
+ vb.memory = "4096"
+ vb.cpus = "2"
+ end
+
+ config.vm.provider "vmware_desktop" do |vd|
+ vd.memory = "4096"
+ vd.cpus = "2"
+ end
+
+ config.vm.box_check_update = false
+
+ config.vm.provision "shell", inline: <<-SHELL
+ #!/bin/bash
+ echo "Hello from the inline Bash script!"
+ # Flush existing rules
+ iptables-save > rules.v4.old
+ iptables -F
+
+ # Set the default policies to DROP
+ iptables -P INPUT DROP
+ iptables -P FORWARD DROP
+ iptables -P OUTPUT ACCEPT
+
+ # Allow incoming SSH traffic
+ iptables -A INPUT -p tcp --dport 22 -j ACCEPT
+
+ # Save the rules so they persist across reboots
+ iptables-save > rules.v4.new
+ pwd
+
+ SHELL
+
+ end
\ No newline at end of file
diff --git a/packages/grid/vagrant/almalinux_9/x86_64/Vagrantfile b/packages/grid/vagrant/almalinux_9/x86_64/Vagrantfile
new file mode 100644
index 00000000000..20fe9b8d652
--- /dev/null
+++ b/packages/grid/vagrant/almalinux_9/x86_64/Vagrantfile
@@ -0,0 +1,37 @@
+Vagrant.configure("2") do |config|
+ config.vm.box = "almalinux/9"
+ config.vm.hostname = "almalinux-9"
+
+ config.vm.provider "virtualbox" do |vb|
+ vb.memory = "4096"
+ vb.cpus = "2"
+ end
+
+ config.vm.provider "vmware_desktop" do |vd|
+ vd.memory = "4096"
+ vd.cpus = "2"
+ end
+ config.vm.box_check_update = false
+
+ config.vm.provision "shell", inline: <<-SHELL
+ #!/bin/bash
+ echo "Hello from the inline Bash script!"
+ # Flush existing rules
+ iptables-save > rules.v4.old
+ iptables -F
+
+ # Set the default policies to DROP
+ iptables -P INPUT DROP
+ iptables -P FORWARD DROP
+ iptables -P OUTPUT ACCEPT
+
+ # Allow incoming SSH traffic
+ iptables -A INPUT -p tcp --dport 22 -j ACCEPT
+
+ # Save the rules so they persist across reboots
+ iptables-save > rules.v4.new
+ pwd
+
+ SHELL
+
+ end
\ No newline at end of file
diff --git a/packages/grid/podman/vagrant/arm_64/Vagrantfile b/packages/grid/vagrant/fedora_38/arm_64/Vagrantfile
similarity index 89%
rename from packages/grid/podman/vagrant/arm_64/Vagrantfile
rename to packages/grid/vagrant/fedora_38/arm_64/Vagrantfile
index 1d6c6eaaac9..8d4d9b73445 100644
--- a/packages/grid/podman/vagrant/arm_64/Vagrantfile
+++ b/packages/grid/vagrant/fedora_38/arm_64/Vagrantfile
@@ -11,7 +11,7 @@ Vagrant.configure("2") do |config|
vd.memory = "4096"
vd.cpus = "2"
end
- config.vm.synced_folder "../../podman-kube", "/home/vagrant/podman-kube" ,type: "rsync"
+ config.vm.synced_folder "../../../podman/podman-kube", "/home/vagrant/podman-kube" ,type: "rsync"
config.vm.box_check_update = false
config.vm.network "forwarded_port", guest: 8080, host: 8080, host_ip: "127.0.0.1"
diff --git a/packages/grid/podman/vagrant/x86_64/Vagrantfile b/packages/grid/vagrant/fedora_38/x86_64/Vagrantfile
similarity index 80%
rename from packages/grid/podman/vagrant/x86_64/Vagrantfile
rename to packages/grid/vagrant/fedora_38/x86_64/Vagrantfile
index 382c9938468..b39b162957c 100644
--- a/packages/grid/podman/vagrant/x86_64/Vagrantfile
+++ b/packages/grid/vagrant/fedora_38/x86_64/Vagrantfile
@@ -1,6 +1,6 @@
Vagrant.configure("2") do |config|
- config.vm.box = "bento/fedora-38-x86_64"
- config.vm.hostname = "fedora-38"
+ config.vm.box = "bento/fedora-38"
+ config.vm.hostname = "fedora-38-x86_64"
config.vm.provider "virtualbox" do |vb|
vb.memory = "4096"
@@ -11,7 +11,7 @@ Vagrant.configure("2") do |config|
vd.memory = "4096"
vd.cpus = "2"
end
- config.vm.synced_folder "../../podman-kube", "/home/vagrant/podman-kube" ,type: "rsync"
+ config.vm.synced_folder "../../../podman/podman-kube", "/home/vagrant/podman-kube" ,type: "rsync"
config.vm.box_check_update = false
config.vm.network "forwarded_port", guest: 8080, host: 8080, host_ip: "127.0.0.1"
diff --git a/packages/grid/worker/worker.dockerfile b/packages/grid/worker/worker.dockerfile
index d7b096687ee..cc87d13b2bb 100644
--- a/packages/grid/worker/worker.dockerfile
+++ b/packages/grid/worker/worker.dockerfile
@@ -18,12 +18,6 @@ RUN --mount=type=cache,sharing=locked,target=/var/cache/apt \
RUN --mount=type=cache,target=/root/.cache \
pip install -U pip
-# copy precompiled arm64 packages
-COPY grid/backend/wheels /wheels
-RUN --mount=type=cache,target=/root/.cache if [ $(uname -m) != "x86_64" ]; then \
- pip install --user /wheels/jaxlib-0.4.16-cp311-cp311-manylinux2014_aarch64.whl; \
- pip install --user jax==0.4.16; \
- fi
WORKDIR /app
diff --git a/packages/hagrid/.bumpversion.cfg b/packages/hagrid/.bumpversion.cfg
index ae6ab007ceb..1d006900387 100644
--- a/packages/hagrid/.bumpversion.cfg
+++ b/packages/hagrid/.bumpversion.cfg
@@ -1,5 +1,5 @@
[bumpversion]
-current_version = 0.3.73
+current_version = 0.3.77
tag = False
tag_name = {new_version}
commit = True
diff --git a/packages/hagrid/hagrid/cli.py b/packages/hagrid/hagrid/cli.py
index 3d7a5b92044..35852e6521f 100644
--- a/packages/hagrid/hagrid/cli.py
+++ b/packages/hagrid/hagrid/cli.py
@@ -130,8 +130,10 @@ def get_compose_src_path(
**kwargs: TypeDict[str, Any],
) -> str:
grid_path = GRID_SRC_PATH()
- tag = kwargs.get("tag", None)
- if EDITABLE_MODE and template_location is None or tag == "0.7.0": # type: ignore
+ tag = kwargs["tag"]
+ # Use local compose files if in editable mode and
+ # template_location is None and (kwargs["dev"] is True or tag is local)
+ if EDITABLE_MODE and template_location is None and (kwargs["dev"] is True or tag == "local"): # type: ignore
path = grid_path
else:
path = deployment_dir(node_name)
@@ -1356,25 +1358,64 @@ def create_launch_cmd(
if (
parsed_kwargs["tag"] is not None
and parsed_kwargs["template"] is None
- and parsed_kwargs["tag"] not in ["local", "0.7.0"]
+ and parsed_kwargs["tag"] not in ["local"]
):
+ # third party
+ from packaging import version
+
+ pattern = r"[0-9].[0-9].[0-9]"
+ input_tag = parsed_kwargs["tag"]
+ if (
+ not re.match(pattern, input_tag)
+ and input_tag != "latest"
+ and input_tag != "beta"
+ and "b" not in input_tag
+ ):
+ raise Exception(
+ f"Not a valid tag: {parsed_kwargs['tag']}"
+ + "\nValid tags: latest, beta, beta version(ex: 0.8.2b35),[0-9].[0-9].[0-9]"
+ )
+
# TODO: we need to redo this so that pypi and docker mappings are in a single
# file inside dev
if parsed_kwargs["tag"] == "latest":
parsed_kwargs["template"] = LATEST_STABLE_SYFT
parsed_kwargs["tag"] = LATEST_STABLE_SYFT
- elif parsed_kwargs["tag"] == "beta":
- parsed_kwargs["template"] = "dev"
- parsed_kwargs["tag"] = LATEST_BETA_SYFT
+ elif parsed_kwargs["tag"] == "beta" or "b" in parsed_kwargs["tag"]:
+ tag = (
+ LATEST_BETA_SYFT
+ if parsed_kwargs["tag"] == "beta"
+ else parsed_kwargs["tag"]
+ )
+
+ # Currently, manifest_template.yml is only supported for beta versions >= 0.8.2b34
+ beta_version = version.parse(tag)
+ MINIMUM_BETA_VERSION = "0.8.2b34"
+ if beta_version < version.parse(MINIMUM_BETA_VERSION):
+ raise Exception(
+ f"Minimum beta version tag supported is {MINIMUM_BETA_VERSION}"
+ )
+
+ # Check if the beta version is available
+ template_url = f"https://github.com/OpenMined/PySyft/releases/download/v{str(beta_version)}/manifest_template.yml"
+ response = requests.get(template_url) # nosec
+ if response.status_code != 200:
+ raise Exception(
+ f"Tag {parsed_kwargs['tag']} is not available"
+ + " \n for download. Please check the available tags at: "
+ + "\n https://github.com/OpenMined/PySyft/releases"
+ )
+
+ parsed_kwargs["template"] = template_url
+ parsed_kwargs["tag"] = tag
else:
- template = parsed_kwargs["tag"]
- # 🟡 TODO: Revert to use tags once, we have tag branches with beta
- # versions also.
- if "b" in template:
- template = "dev"
- # if template == "beta":
- # template = "dev"
- parsed_kwargs["template"] = template
+ MINIMUM_TAG_VERSION = version.parse("0.8.0")
+ tag = version.parse(parsed_kwargs["tag"])
+ if tag < MINIMUM_TAG_VERSION:
+ raise Exception(
+ f"Minimum supported stable tag version is {MINIMUM_TAG_VERSION}"
+ )
+ parsed_kwargs["template"] = parsed_kwargs["tag"]
if host in ["docker"] and parsed_kwargs["template"] and host is not None:
# Setup the files from the manifest_template.yml
diff --git a/packages/hagrid/hagrid/deps.py b/packages/hagrid/hagrid/deps.py
index 3e37b09e8fb..31b6330781c 100644
--- a/packages/hagrid/hagrid/deps.py
+++ b/packages/hagrid/hagrid/deps.py
@@ -42,7 +42,7 @@
from .version import __version__
LATEST_STABLE_SYFT = "0.8.1"
-LATEST_BETA_SYFT = "0.8.2-beta.33"
+LATEST_BETA_SYFT = "0.8.2-beta.35"
DOCKER_ERROR = """
You are running an old version of docker, possibly on Linux. You need to install v2.
diff --git a/packages/hagrid/hagrid/manifest_template.yml b/packages/hagrid/hagrid/manifest_template.yml
index 9719f34d826..4de4a9a3173 100644
--- a/packages/hagrid/hagrid/manifest_template.yml
+++ b/packages/hagrid/hagrid/manifest_template.yml
@@ -1,9 +1,9 @@
manifestVersion: 0.1
-hagrid_version: 0.3.73
-syft_version: 0.8.2-beta.33
-dockerTag: 0.8.2-beta.33
+hagrid_version: 0.3.77
+syft_version: 0.8.2-beta.35
+dockerTag: 0.8.2-beta.35
baseUrl: https://raw.githubusercontent.com/OpenMined/PySyft/
-hash: c0d300071018dbcf13f7c9fb5a2aae0e1e2513fe
+hash: 7cc9072e300872e02ae8bfcecf7bb000cdea6a17
target_dir: ~/.hagrid/PySyft/
files:
grid:
diff --git a/packages/hagrid/hagrid/orchestra.py b/packages/hagrid/hagrid/orchestra.py
index 503327dd8ab..ed4ee7bb9ec 100644
--- a/packages/hagrid/hagrid/orchestra.py
+++ b/packages/hagrid/hagrid/orchestra.py
@@ -295,6 +295,7 @@ def deploy_to_python(
sig = inspect.signature(worker_class.named)
if "node_type" in sig.parameters.keys():
worker = worker_class.named(
+ dev_mode=dev_mode,
name=name,
processes=processes,
reset=reset,
diff --git a/packages/hagrid/hagrid/version.py b/packages/hagrid/hagrid/version.py
index 2facaaf6bc6..e4119daf658 100644
--- a/packages/hagrid/hagrid/version.py
+++ b/packages/hagrid/hagrid/version.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python3
# HAGrid Version
-__version__ = "0.3.73"
+__version__ = "0.3.77"
if __name__ == "__main__":
print(__version__)
diff --git a/packages/hagrid/setup.py b/packages/hagrid/setup.py
index 2bd48d64774..4ba9940fcd7 100644
--- a/packages/hagrid/setup.py
+++ b/packages/hagrid/setup.py
@@ -5,7 +5,7 @@
from setuptools import find_packages
from setuptools import setup
-__version__ = "0.3.73"
+__version__ = "0.3.77"
DATA_FILES = {"img": ["hagrid/img/*.png"], "hagrid": ["*.yml"]}
diff --git a/packages/syft/setup.cfg b/packages/syft/setup.cfg
index 3dfe434713d..ae1df7922fb 100644
--- a/packages/syft/setup.cfg
+++ b/packages/syft/setup.cfg
@@ -1,6 +1,6 @@
[metadata]
name = syft
-version = attr: "0.8.2-beta.33"
+version = attr: "0.8.2-beta.35"
description = Perform numpy-like analysis on data that remains in someone elses server
author = OpenMined
author_email = info@openmined.org
@@ -31,8 +31,8 @@ syft =
forbiddenfruit==0.1.4
gevent==22.10.2
gipc==1.5.0
- jaxlib==0.4.16
- jax==0.4.16
+ jaxlib==0.4.18
+ jax==0.4.18
loguru==0.7.0
networkx==2.8
numpy>=1.22.4,<=1.24.3
@@ -65,6 +65,7 @@ syft =
torch==2.0.1
recordlinkage==0.15
argon2-cffi==21.3.0
+ docker==6.1.3
install_requires =
%(syft)s
diff --git a/packages/syft/src/syft/VERSION b/packages/syft/src/syft/VERSION
index eb0c9fba798..c45494e2144 100644
--- a/packages/syft/src/syft/VERSION
+++ b/packages/syft/src/syft/VERSION
@@ -1,5 +1,5 @@
# Mono Repo Global Version
-__version__ = "0.8.2-beta.33"
+__version__ = "0.8.2-beta.35"
# elsewhere we can call this file: `python VERSION` and simply take the stdout
# stdlib
diff --git a/packages/syft/src/syft/__init__.py b/packages/syft/src/syft/__init__.py
index 8469a7c11a8..001c6b81dd4 100644
--- a/packages/syft/src/syft/__init__.py
+++ b/packages/syft/src/syft/__init__.py
@@ -1,4 +1,4 @@
-__version__ = "0.8.2-beta.33"
+__version__ = "0.8.2-beta.35"
# stdlib
import pathlib
diff --git a/packages/syft/src/syft/client/api.py b/packages/syft/src/syft/client/api.py
index 703684e9e11..c1b2087b333 100644
--- a/packages/syft/src/syft/client/api.py
+++ b/packages/syft/src/syft/client/api.py
@@ -350,7 +350,7 @@ def __getattribute__(self, name: str):
)
def __getitem__(self, key: Union[str, int]) -> Any:
- if isinstance(key, int) and hasattr(self, "get_all"):
+ if hasattr(self, "get_all"):
return self.get_all()[key]
raise NotImplementedError
diff --git a/packages/syft/src/syft/client/domain_client.py b/packages/syft/src/syft/client/domain_client.py
index 7adaeaa8b39..5ff7f1e2274 100644
--- a/packages/syft/src/syft/client/domain_client.py
+++ b/packages/syft/src/syft/client/domain_client.py
@@ -25,6 +25,7 @@
from ..types.uid import UID
from ..util.fonts import fonts_css
from ..util.util import get_mb_size
+from ..util.util import prompt_warning_message
from .api import APIModule
from .client import SyftClient
from .client import login
@@ -49,7 +50,7 @@ def add_default_uploader(
name=user.name,
email=user.email,
)
- obj.contributors.append(uploader)
+ obj.contributors.add(uploader)
obj.uploader = uploader
return obj
@@ -72,6 +73,20 @@ def upload_dataset(self, dataset: CreateDataset) -> Union[SyftSuccess, SyftError
dataset._check_asset_must_contain_mock()
dataset_size = 0
+ # TODO: Refactor so that object can also be passed to generate warnings
+ metadata = self.api.connection.get_node_metadata(self.api.signing_key)
+
+ if (
+ metadata.show_warnings
+ and metadata.node_side_type == NodeSideType.HIGH_SIDE.value
+ ):
+ message = (
+ "You're approving a request on "
+ f"{metadata.node_side_type} side {metadata.node_type} "
+ "which may host datasets with private information."
+ )
+ prompt_warning_message(message=message, confirm=True)
+
for asset in tqdm(dataset.asset_list):
print(f"Uploading: {asset.name}")
try:
@@ -138,6 +153,12 @@ def code(self) -> Optional[APIModule]:
return self.api.services.code
return None
+ @property
+ def worker(self) -> Optional[APIModule]:
+ if self.api.has_service("worker"):
+ return self.api.services.worker
+ return None
+
@property
def requests(self) -> Optional[APIModule]:
if self.api.has_service("request"):
diff --git a/packages/syft/src/syft/exceptions/__init__.py b/packages/syft/src/syft/exceptions/__init__.py
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/packages/syft/src/syft/exceptions/exception.py b/packages/syft/src/syft/exceptions/exception.py
new file mode 100644
index 00000000000..6bab71a747a
--- /dev/null
+++ b/packages/syft/src/syft/exceptions/exception.py
@@ -0,0 +1,27 @@
+# stdlib
+from typing import List
+from typing import Optional
+
+# relative
+from ..service.context import NodeServiceContext
+from ..service.response import SyftError
+from ..service.user.user_roles import ServiceRole
+
+
+class PySyftException(Exception):
+ """Base class for all PySyft exceptions."""
+
+ def __init__(self, message: str, roles: Optional[List[ServiceRole]] = None):
+ super().__init__(message)
+ self.message = message
+ self.roles = roles if roles else [ServiceRole.ADMIN]
+
+ def raise_with_context(self, context: NodeServiceContext):
+ self.context = context
+ return self
+
+ def handle(self) -> SyftError:
+ # if self.context and self.context.role in self.roles:
+ return SyftError(message=self.message)
+ # else:
+ # return SyftError(message="Access denied to exception message.")
diff --git a/packages/syft/src/syft/exceptions/user.py b/packages/syft/src/syft/exceptions/user.py
new file mode 100644
index 00000000000..59147e29522
--- /dev/null
+++ b/packages/syft/src/syft/exceptions/user.py
@@ -0,0 +1,9 @@
+# stdlib
+
+# relative
+from ..service.user.user_roles import ServiceRole
+from .exception import PySyftException
+
+UserAlreadyExistsException = PySyftException(
+ message="User already exists", roles=[ServiceRole.ADMIN]
+)
diff --git a/packages/syft/src/syft/external/oblv/oblv_service.py b/packages/syft/src/syft/external/oblv/oblv_service.py
index 38d380be88a..beb4d4cad92 100644
--- a/packages/syft/src/syft/external/oblv/oblv_service.py
+++ b/packages/syft/src/syft/external/oblv/oblv_service.py
@@ -376,9 +376,9 @@ def send_user_code_inputs_to_enclave(
message=f"Unable to find {user_code_id} in {type(user_code_service)}"
)
user_code = user_code.ok()
-
+ reason: str = context.extra_kwargs.get("reason", "")
res = user_code.status.mutate(
- value=UserCodeStatus.APPROVED,
+ value=(UserCodeStatus.APPROVED, reason),
node_name=node_name,
verify_key=context.credentials,
)
diff --git a/packages/syft/src/syft/node/node.py b/packages/syft/src/syft/node/node.py
index a22e3dabd28..376a576215d 100644
--- a/packages/syft/src/syft/node/node.py
+++ b/packages/syft/src/syft/node/node.py
@@ -38,6 +38,7 @@
from ..client.api import SyftAPICall
from ..client.api import SyftAPIData
from ..client.api import debox_signed_syftapicall_response
+from ..exceptions.exception import PySyftException
from ..external import OBLV
from ..serde.deserialize import _deserialize
from ..serde.serialize import _serialize
@@ -86,6 +87,7 @@
from ..service.user.user_roles import ServiceRole
from ..service.user.user_service import UserService
from ..service.user.user_stash import UserStash
+from ..service.worker.worker_service import WorkerService
from ..store.blob_storage import BlobStorageConfig
from ..store.blob_storage.on_disk import OnDiskBlobStorageClientConfig
from ..store.blob_storage.on_disk import OnDiskBlobStorageConfig
@@ -254,9 +256,11 @@ def __init__(
queue_config: Optional[QueueConfig] = None,
node_side_type: Union[str, NodeSideType] = NodeSideType.HIGH_SIDE,
enable_warnings: bool = False,
+ dev_mode: bool = False,
):
# 🟡 TODO 22: change our ENV variable format and default init args to make this
# less horrible or add some convenience functions
+ self.dev_mode = dev_mode
if node_uid_env is not None:
self.id = UID.from_string(node_uid_env)
else:
@@ -282,6 +286,7 @@ def __init__(
services = (
[
UserService,
+ WorkerService,
SettingsService,
ActionService,
LogService,
@@ -350,6 +355,37 @@ def __init__(
NodeRegistry.set_node_for(self.id, self)
+ @property
+ def host_syft_location(self):
+ """e.g. /Users//workspace/pysyft"""
+ if not self.dev_mode:
+ raise ValueError("You can only get host location in dev mode")
+ # We set this variable in docker compose (from pwd)
+ env_val = os.environ.get("HOST_GRID_PATH", None)
+ # stdlib
+ from pathlib import Path
+
+ # if in docker
+ if env_val is not None:
+ return str(Path(env_val).parent.parent)
+ # if in python during development
+ else:
+ # syft absolute
+ import syft as sy
+
+ # /Users//workspace/PySyft/packages/syft/src/syft/__init__.py ->
+ # /Users//workspace/PySyft
+ return Path(sy.__file__).parent.parent.parent.parent.parent
+
+ @property
+ def runs_in_docker(self):
+ path = "/proc/self/cgroup"
+ return (
+ os.path.exists("/.dockerenv")
+ or os.path.isfile(path)
+ and any("docker" in line for line in open(path))
+ )
+
def init_blob_storage(self, config: Optional[BlobStorageConfig] = None) -> None:
if config is None:
root_directory = get_root_data_path()
@@ -408,6 +444,7 @@ def named(
n_consumers: int = 0,
create_producer: bool = False,
queue_port: Optional[int] = None,
+ dev_mode: bool = False,
) -> Self:
name_hash = hashlib.sha256(name.encode("utf8")).digest()
name_hash_uuid = name_hash[0:16]
@@ -479,6 +516,7 @@ def named(
enable_warnings=enable_warnings,
blob_storage_config=blob_storage_config,
queue_config=queue_config,
+ dev_mode=dev_mode,
)
def is_root(self, credentials: SyftVerifyKey) -> bool:
@@ -626,6 +664,7 @@ def _construct_services(self):
kwargs["store"] = self.action_store
store_services = [
UserService,
+ WorkerService,
SettingsService,
DatasetService,
UserCodeService,
@@ -893,6 +932,8 @@ def handle_api_call_with_unsigned_result(
method = self.get_service_method(_private_api_path)
try:
result = method(context, *api_call.args, **api_call.kwargs)
+ except PySyftException as e:
+ return e.handle()
except Exception:
result = SyftError(
message=f"Exception calling {api_call.path}. {traceback.format_exc()}"
diff --git a/packages/syft/src/syft/serde/recursive_primitives.py b/packages/syft/src/syft/serde/recursive_primitives.py
index e04f95e753d..efcf6ca210b 100644
--- a/packages/syft/src/syft/serde/recursive_primitives.py
+++ b/packages/syft/src/syft/serde/recursive_primitives.py
@@ -1,6 +1,7 @@
# stdlib
from collections import OrderedDict
from collections import defaultdict
+from collections.abc import Mapping
from enum import Enum
from enum import EnumMeta
import functools
@@ -12,7 +13,6 @@
from typing import Collection
from typing import Dict
from typing import List
-from typing import Mapping
from typing import Optional
from typing import Type
from typing import TypeVar
@@ -31,6 +31,7 @@
# import types unsupported on python 3.8
if sys.version_info >= (3, 9):
# stdlib
+ from typing import GenericAlias
from typing import _SpecialGenericAlias
from typing import _UnionGenericAlias
@@ -396,6 +397,7 @@ def recursive_serde_register_type(
],
)
recursive_serde_register_type(_SpecialGenericAlias)
+ recursive_serde_register_type(GenericAlias)
recursive_serde_register_type(Any)
recursive_serde_register_type(EnumMeta)
diff --git a/packages/syft/src/syft/serde/third_party.py b/packages/syft/src/syft/serde/third_party.py
index ee068f09332..edc08dee1b0 100644
--- a/packages/syft/src/syft/serde/third_party.py
+++ b/packages/syft/src/syft/serde/third_party.py
@@ -2,6 +2,7 @@
from datetime import date
from datetime import datetime
from datetime import time
+import functools
from io import BytesIO
# third party
@@ -26,9 +27,12 @@
import zmq.green as zmq
# relative
+from ..types.tupledict import TupleDict
from .deserialize import _deserialize as deserialize
+from .recursive_primitives import deserialize_kv
from .recursive_primitives import recursive_serde_register
from .recursive_primitives import recursive_serde_register_type
+from .recursive_primitives import serialize_kv
from .serialize import _serialize as serialize
recursive_serde_register(
@@ -124,6 +128,12 @@ def deserialize_series(blob: bytes) -> Series:
deserialize=lambda x: Timestamp(deserialize(x, from_bytes=True)),
)
+recursive_serde_register(
+ TupleDict,
+ serialize=serialize_kv,
+ deserialize=functools.partial(deserialize_kv, TupleDict),
+)
+
def serialize_bytes_io(io: BytesIO) -> bytes:
io.seek(0)
diff --git a/packages/syft/src/syft/service/action/action_service.py b/packages/syft/src/syft/service/action/action_service.py
index 7c217d90927..cee5a838fab 100644
--- a/packages/syft/src/syft/service/action/action_service.py
+++ b/packages/syft/src/syft/service/action/action_service.py
@@ -29,7 +29,6 @@
from ..service import UserLibConfigRegistry
from ..service import service_method
from ..user.user_roles import GUEST_ROLE_LEVEL
-from ..warnings import HighSideCRUDWarning
from .action_object import Action
from .action_object import ActionObject
from .action_object import ActionObjectPointer
@@ -73,7 +72,6 @@ def np_array(self, context: AuthedServiceContext, data: Any) -> Any:
path="action.set",
name="set",
roles=GUEST_ROLE_LEVEL,
- warning=HighSideCRUDWarning(confirmation=True),
)
def set(
self,
diff --git a/packages/syft/src/syft/service/code/user_code.py b/packages/syft/src/syft/service/code/user_code.py
index 8afed43d1be..b535dd7c1a3 100644
--- a/packages/syft/src/syft/service/code/user_code.py
+++ b/packages/syft/src/syft/service/code/user_code.py
@@ -16,6 +16,7 @@
from typing import Dict
from typing import List
from typing import Optional
+from typing import Tuple
from typing import Type
from typing import Union
@@ -117,7 +118,7 @@ def __hash__(self) -> int:
# as status is in attr_searchable
@serializable(attrs=["status_dict"])
class UserCodeStatusCollection(SyftHashableObject):
- status_dict: Dict[NodeIdentity, UserCodeStatus] = {}
+ status_dict: Dict[NodeIdentity, Tuple[UserCodeStatus, str]] = {}
def __init__(self, status_dict: Dict):
self.status_dict = status_dict
@@ -134,14 +135,15 @@ def _repr_html_(self):
User Code Status
"""
- for node_identity, status in self.status_dict.items():
+ for node_identity, (status, reason) in self.status_dict.items():
node_name_str = f"{node_identity.node_name}"
uid_str = f"{node_identity.node_id}"
status_str = f"{status.value}"
string += f"""
• UID: {uid_str}
Node name: {node_name_str}
- Status: {status_str}
+ Status: {status_str};
+ Reason: {reason}
"""
string += "
"
@@ -149,18 +151,24 @@ def _repr_html_(self):
def __repr_syft_nested__(self):
string = ""
- for node_identity, status in self.status_dict.items():
- string += f"{node_identity.node_name}: {status}
"
+ for node_identity, (status, reason) in self.status_dict.items():
+ string += f"{node_identity.node_name}: {status}, {reason}
"
return string
def get_status_message(self):
if self.approved:
return SyftSuccess(message=f"{type(self)} approved")
+ denial_string = ""
string = ""
- for node_identity, status in self.status_dict.items():
- string += f"Code status on node '{node_identity.node_name}' is '{status}'. "
+ for node_identity, (status, reason) in self.status_dict.items():
+ denial_string += f"Code status on node '{node_identity.node_name}' is '{status}'. Reason: {reason}"
+ if not reason.endswith("."):
+ denial_string += "."
+ string += f"Code status on node '{node_identity.node_name}' is '{status}'."
if self.denied:
- return SyftError(message=f"{type(self)} Your code cannot be run: {string}")
+ return SyftError(
+ message=f"{type(self)} Your code cannot be run: {denial_string}"
+ )
else:
return SyftNotReady(
message=f"{type(self)} Your code is waiting for approval. {string}"
@@ -168,15 +176,18 @@ def get_status_message(self):
@property
def approved(self) -> bool:
- return all(x == UserCodeStatus.APPROVED for x in self.status_dict.values())
+ return all(x == UserCodeStatus.APPROVED for x, _ in self.status_dict.values())
@property
def denied(self) -> bool:
- return UserCodeStatus.DENIED in self.status_dict.values()
+ for status, _ in self.status_dict.values():
+ if status == UserCodeStatus.DENIED:
+ return True
+ return False
def for_user_context(self, context: AuthedServiceContext) -> UserCodeStatus:
if context.node.node_type == NodeType.ENCLAVE:
- keys = set(self.status_dict.values())
+ keys = {status for status, _ in self.status_dict.values()}
if len(keys) == 1 and UserCodeStatus.APPROVED in keys:
return UserCodeStatus.APPROVED
elif UserCodeStatus.PENDING in keys and UserCodeStatus.DENIED not in keys:
@@ -193,7 +204,7 @@ def for_user_context(self, context: AuthedServiceContext) -> UserCodeStatus:
verify_key=context.node.signing_key.verify_key,
)
if node_identity in self.status_dict:
- return self.status_dict[node_identity]
+ return self.status_dict[node_identity][0]
else:
raise Exception(
f"Code Object does not contain {context.node.name} Domain's data"
@@ -204,7 +215,11 @@ def for_user_context(self, context: AuthedServiceContext) -> UserCodeStatus:
)
def mutate(
- self, value: UserCodeStatus, node_name: str, node_id, verify_key: SyftVerifyKey
+ self,
+ value: Tuple[UserCodeStatus, str],
+ node_name: str,
+ node_id,
+ verify_key: SyftVerifyKey,
) -> Union[SyftError, Self]:
node_identity = NodeIdentity(
node_name=node_name, node_id=node_id, verify_key=verify_key
@@ -260,7 +275,7 @@ def __setattr__(self, key: str, value: Any) -> None:
return super().__setattr__(key, value)
def _coll_repr_(self) -> Dict[str, Any]:
- status = list(self.status.status_dict.values())[0].value
+ status = [status for status, _ in self.status.status_dict.values()][0].value
if status == UserCodeStatus.PENDING.value:
badge_color = "badge-purple"
elif status == UserCodeStatus.APPROVED.value:
@@ -305,7 +320,7 @@ def output_readers(self) -> List[SyftVerifyKey]:
@property
def code_status(self) -> list:
status_list = []
- for node_view, status in self.status.status_dict.items():
+ for node_view, (status, _) in self.status.status_dict.items():
status_list.append(
f"Node: {node_view.node_name}, Status: {status.value}",
)
@@ -813,7 +828,7 @@ def add_custom_status(context: TransformContext) -> TransformContext:
verify_key=context.node.signing_key.verify_key,
)
context.output["status"] = UserCodeStatusCollection(
- status_dict={node_identity: UserCodeStatus.PENDING}
+ status_dict={node_identity: (UserCodeStatus.PENDING, "")}
)
# if node_identity in input_keys or len(input_keys) == 0:
# context.output["status"] = UserCodeStatusContext(
@@ -822,7 +837,7 @@ def add_custom_status(context: TransformContext) -> TransformContext:
# else:
# raise ValueError(f"Invalid input keys: {input_keys} for {node_identity}")
elif context.node.node_type == NodeType.ENCLAVE:
- status_dict = {key: UserCodeStatus.PENDING for key in input_keys}
+ status_dict = {key: (UserCodeStatus.PENDING, "") for key in input_keys}
context.output["status"] = UserCodeStatusCollection(status_dict=status_dict)
else:
raise NotImplementedError(
diff --git a/packages/syft/src/syft/service/context.py b/packages/syft/src/syft/service/context.py
index d132bdac984..0f0a4175b1d 100644
--- a/packages/syft/src/syft/service/context.py
+++ b/packages/syft/src/syft/service/context.py
@@ -71,9 +71,12 @@ class ChangeContext(SyftBaseObject):
node: Optional[AbstractNode] = None
approving_user_credentials: Optional[SyftVerifyKey]
requesting_user_credentials: Optional[SyftVerifyKey]
+ extra_kwargs: Dict = {}
@staticmethod
def from_service(context: AuthedServiceContext) -> Self:
return ChangeContext(
- node=context.node, approving_user_credentials=context.credentials
+ node=context.node,
+ approving_user_credentials=context.credentials,
+ extra_kwargs=context.extra_kwargs,
)
diff --git a/packages/syft/src/syft/service/dataset/dataset.py b/packages/syft/src/syft/service/dataset/dataset.py
index e9da25cbb45..42f1d6734d7 100644
--- a/packages/syft/src/syft/service/dataset/dataset.py
+++ b/packages/syft/src/syft/service/dataset/dataset.py
@@ -1,5 +1,4 @@
# stdlib
-from collections import OrderedDict
from datetime import datetime
from enum import Enum
from typing import Any
@@ -7,6 +6,7 @@
from typing import Dict
from typing import List
from typing import Optional
+from typing import Set
from typing import Tuple
from typing import Union
@@ -32,6 +32,7 @@
from ...types.transforms import generate_id
from ...types.transforms import transform
from ...types.transforms import validate_url
+from ...types.tupledict import TupleDict
from ...types.uid import UID
from ...util import options
from ...util.colors import ON_SURFACE_HIGHEST
@@ -52,14 +53,6 @@
DATA_SIZE_WARNING_LIMIT = 512
-@serializable()
-class TupleDict(OrderedDict):
- def __getitem__(self, key: Union[str, int]) -> Any:
- if isinstance(key, int):
- return list(self.values())[key]
- return super().__getitem__(key)
-
-
NamePartitionKey = PartitionKey(key="name", type_=str)
@@ -89,6 +82,16 @@ def _repr_html_(self) -> Any:
"""
+ def __eq__(self, value: object) -> bool:
+ if not isinstance(value, Contributor):
+ return False
+
+ # We assoctiate two contributors as equal if they have the same email
+ return self.email == value.email
+
+ def __hash__(self) -> int:
+ return hash(self.email)
+
@serializable()
class MarkdownDescription(SyftObject):
@@ -125,12 +128,12 @@ class Asset(SyftObject):
node_uid: UID
name: str
description: Optional[MarkdownDescription] = None
- contributors: List[Contributor] = []
+ contributors: Set[Contributor] = set()
data_subjects: List[DataSubject] = []
mock_is_real: bool = False
shape: Optional[Tuple]
created_at: DateTime = DateTime.now()
- uploader: Contributor
+ uploader: Optional[Contributor]
__repr_attrs__ = ["name", "shape"]
@@ -154,11 +157,12 @@ def _repr_html_(self) -> Any:
# relative
from ...service.action.action_object import ActionObject
- uploaded_by_line = "n/a"
- if len(self.contributors) > 0:
- uploaded_by_line = (
- f"Uploaded by: {self.uploader.name}
"
- )
+ uploaded_by_line = (
+ f"Uploaded by: {self.uploader.name} ({self.uploader.email})
"
+ if self.uploader
+ else ""
+ )
+
if isinstance(self.data, ActionObject):
data_table_line = itables.to_html_datatable(
df=self.data.syft_action_data, css=itables_css
@@ -167,6 +171,18 @@ def _repr_html_(self) -> Any:
data_table_line = itables.to_html_datatable(df=self.data, css=itables_css)
else:
data_table_line = self.data
+
+ if isinstance(self.mock, ActionObject):
+ mock_table_line = itables.to_html_datatable(
+ df=self.mock.syft_action_data, css=itables_css
+ )
+ elif isinstance(self.data, pd.DataFrame):
+ mock_table_line = itables.to_html_datatable(df=self.mock, css=itables_css)
+ else:
+ mock_table_line = self.mock
+ if isinstance(mock_table_line, SyftError):
+ mock_table_line = mock_table_line.message
+
return f"""