Skip to content

Commit 563ebcf

Browse files
committed
Merge branch 'main' into release-v0.0.7
2 parents f443dc0 + d9a6bfe commit 563ebcf

12 files changed

Lines changed: 137 additions & 75 deletions

File tree

.github/workflows/publish-main.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ jobs:
1515
uses: actions/checkout@v3
1616
with:
1717
fetch-depth: 0
18+
submodules: 'true'
1819

1920
- name: Set up Python
2021
uses: actions/setup-python@v3

.github/workflows/release.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ jobs:
1515
uses: actions/checkout@v3
1616
with:
1717
fetch-depth: 0
18+
submodules: 'true'
1819

1920
- name: Set up Python
2021
uses: actions/setup-python@v3

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "external/nnf-dm"]
2+
path = external/nnf-dm
3+
url = git@github.com:NearNodeFlash/nnf-dm.git

README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
# NearNodeFlash Pages
22

3+
## Retrieve the submodules
4+
5+
There are references to files in other repos, so update the submodules for them.
6+
7+
```bash
8+
git submodule update external/nnf-dm
9+
```
10+
311
## Create mkdocs Environment
412

513
```bash

docs/guides/compute-daemons/readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ NNF software defines a Kubernetes Service Account for granting communication pri
3030

3131
| Compute Daemon | Service Account | Namespace |
3232
| -------------- | --------------- | --------- |
33-
| Client Mount | dws-operator-controller-manager | dws-operator-system |
33+
| Client Mount | dws-controller-manager | dws-system |
3434
| Data Movement | nnf-dm-controller-manager | nnf-dm-system |
3535

3636
```bash
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../../external/nnf-dm/daemons/compute/copy-offload-api.html

docs/guides/data-movement/readme.md

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -62,23 +62,26 @@ mpirun --allow-run-as-root --hostfile $HOSTFILE dcp --progress 1 --uid $UID --gi
6262

6363
### Profiles
6464

65-
**Note:** This feature is not fully implemented, but is present in the `nnf-dm-config` config map.
66-
Only the `default` profile is used, and it must be present in the configuration. Once the feature is
67-
implemented, a user will be able to select a profile using #DW directives and/or the Copy Offload
68-
API. Right now, users can add additional profiles into the config map, but the only way to use them
69-
would be to rename one of them to be `default`.
65+
Profiles can be specified in the in the `nnf-dm-config` config map. Users are able to select a
66+
profile using #DW directives (e.g .`copy_in profile=my-dm-profile`) and the Copy Offload API. If no
67+
profile is specified, the `default` profile is used. This default profile must exist in the config
68+
map.
7069

7170
`slots`, `maxSlots`, and `command` can be stored in Data Movement profiles. These profiles are
72-
available for a quick way to switch between different settings for a particular workflow.
71+
available to quickly switch between different settings for a particular workflow.
7372

74-
Example profile:
73+
Example profiles:
7574

7675
```yaml
7776
profiles:
7877
default:
7978
slots: 8
8079
maxSlots: 0
8180
command: mpirun --allow-run-as-root --hostfile $HOSTFILE dcp --progress 1 --uid $UID --gid $GID $SRC $DEST
81+
no-xattrs:
82+
slots: 8
83+
maxSlots: 0
84+
command: mpirun --allow-run-as-root --hostfile $HOSTFILE dcp --progress 1 --xattrs none --uid $UID --gid $GID $SRC $DEST
8285
```
8386
8487
## Copy Offload API Daemon
@@ -87,5 +90,20 @@ The `CreateRequest` API call that is used to create Data Movement with the Copy
8790
options to allow a user to specify some options for that particular Data Movement. These settings
8891
are on a per-request basis.
8992

90-
See the [CreateRequest API](https://github.com/NearNodeFlash/nnf-dm/blob/master/daemons/compute/Readme.md#create-request)
93+
See the [DataMovementCreateRequest API](copy-offload-api.html#datamovement.DataMovementCreateRequest)
9194
definition for what can be configured.
95+
96+
## SELinux and Data Movement
97+
98+
Careful consideration must be taken when enabling SELinux on compute nodes. Doing so will result in
99+
SELinux Extended File Attributes (xattrs) being placed on files created by applications running on
100+
the compute node, which may not be supported by the destination file system (e.g. Lustre).
101+
102+
Depending on the configuration of `dcp`, there may be an attempt to copy these xattrs. You may need
103+
to disable this by using `dcp --xattrs none` to avoid errors. For example, the `command` in the
104+
`nnf-dm-config` config map or `dcpOptions` in the [DataMovementCreateRequest
105+
API](copy-offload-api.html#datamovement.DataMovementCreateRequest) could be used to set this
106+
option.
107+
108+
See the [`dcp` documentation](https://mpifileutils.readthedocs.io/en/latest/dcp.1.html) for more
109+
information.

docs/guides/index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
* [Storage Profiles](storage-profiles/readme.md)
1414
* [Data Movement Configuration](data-movement/readme.md)
15+
* [Copy Offload API](data-movement/copy-offload-api.html)
1516
* [Lustre External MGT](external-mgs/readme.md)
1617

1718
## NNF User Containers

docs/guides/initial-setup/readme.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ Installation of Kubernetes (k8s) nodes proceeds by installing k8s components ont
5252
Webhooks require the Jetstack `cert-manager`. Installation is shown below.
5353

5454
```bash
55-
export certver="v1.7.0"
55+
export certver="v1.13.1"
5656
# Required for webhooks
5757
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/"$certver"/cert-manager.yaml
5858
```
@@ -63,15 +63,14 @@ kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/"$ce
6363
| :------------------------------| :-------------------- |
6464
| Generic Kubernetes Worker Node | cray.nnf.manager=true |
6565
| Rabbit Node | cray.nnf.node=true |
66-
| | cray.nnf.x-name=$NODE |
6766

6867
### Kubernetes Node Taints
6968

7069
| Node Type | Node Label |
7170
| :------------------------------| :---------------------------- |
7271
| Rabbit Node | cray.nnf.node=true:NoSchedule |
7372

74-
See [Taints and Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/). The [NearNodeFlash/nnf-deploy/init.sh script](https://github.com/NearNodeFlash/nnf-deploy/blob/master/init.sh) provides examples of labeling and tainting k8s nodes for use with Rabbit.
73+
See [Taints and Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/). The [`nnf-deploy init`](https://github.com/NearNodeFlash/nnf-deploy) command provides examples of labeling and tainting k8s nodes for use with Rabbit.
7574

7675
## Rabbit System Configuration
7776

@@ -95,7 +94,7 @@ Here is an example `SystemConfiguration`:
9594
| storageNodes[].computeAccess | List of {slot, compute name} elements that indicate physical slot index that the named compute node is attached to |
9695

9796
```yaml
98-
apiVersion: dws.cray.hpe.com/v1alpha1
97+
apiVersion: dataworkflowservices.github.io/v1alpha2
9998
kind: SystemConfiguration
10099
metadata:
101100
name: default
@@ -106,6 +105,9 @@ spec:
106105
- name: compute-02
107106
- name: compute-03
108107
- name: compute-04
108+
ports:
109+
- 5000-5999
110+
portsCooldownInSeconds: 0
109111
storageNodes:
110112
- computesAccess:
111113
- index: 0

docs/repo-guides/release-nnf-sw/readme.md

Lines changed: 68 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,15 @@ part of `nnf-deploy`, but it should match the version number of `nnf-deploy`. Re
1818
other components.
1919

2020
- [NearNodeFlash/nnf-deploy](https://github.com/NearNodeFlash/nnf-deploy)
21+
2122
- [DataWorkflowServices/dws](https://github.com/DataWorkflowServices/dws)
22-
- [NearNodeFlash/lustre-fs-operator](https://github.com/NearNodeFlash/lustre-fs-operator)
2323
- [HewlettPackard/lustre-csi-driver](https://github.com/HewlettPackard/lustre-csi-driver)
24+
- [NearNodeFlash/lustre-fs-operator](https://github.com/NearNodeFlash/lustre-fs-operator)
2425
- [NearNodeFlash/nnf-mfu](https://github.com/NearNodeFlash/nnf-mfu)
2526
- [NearNodeFlash/nnf-sos](https://github.com/NearNodeFlash/nnf-sos)
2627
- [NearNodeFlash/nnf-dm](https://github.com/NearNodeFlash/nnf-dm)
2728
- [NearNodeFlash/nnf-integration-test](https://github.com/NearNodeFlash/nnf-integration-test)
29+
2830
- [NearNodeFlash/NearNodeFlash.github.io](https://github.com/NearNodeFlash/NearNodeFlash.github.io)
2931

3032
[nnf-ec](https://github.com/NearNodeFlash/nnf-ec) is vendored in as part of `nnf-sos` and does not
@@ -33,7 +35,7 @@ need to be released separately.
3335
## Primer
3436

3537
This document is based on the process set forth by the [DataWorkflowServices Release
36-
Process](https://dataworkflowservices.github.io/v0.0.1/repo-guides/create-a-release/readme/).
38+
Process](https://dataworkflowservices.github.io/v0.0.2/repo-guides/create-a-release/readme/).
3739
Please read that as a background for this document before going any further.
3840

3941
## Requirements
@@ -86,97 +88,120 @@ just an example.
8688
8789
5. Perform repo-specific updates:
8890
89-
1. For `lustre-csi-driver` and `lustre-fs-operator`, there are additional files that need to
91+
1. For `lustre-csi-driver`, `lustre-fs-operator`, `dws`, `nnf-sos`, and `nnf-dm` there are additional files that need to
9092
track the version number as well, which allow them to be installed with `kubectl apply -k`.
9193
92-
1. For `lustre-fs-operator`, update `config/manager/kustomization.yaml` with the correct
93-
version.
94-
95-
2. For `lustre-csi-driver`, update `deploy/kubernetes/base/kustomization.yaml` and
96-
`charts/lustre-csi-driver/values.yaml` with the correct version.
97-
98-
2. If `nnf-mfu` was updated, multiple references in `nnf-dm` will need to be updated with the
99-
new version number for the `nnf-mfu` image:
100-
101-
1. In `Dockerfile` and `Makefile`, replace `NNFMU_VERSION` with the new version
102-
103-
2. In `config/manager/kustomization.yaml`, replace `nnf-mfu`'s `newTag: <X.Y.Z>`
94+
|Repo |Update|
95+
|---------------------|------|
96+
|`nnf-mfu` |The new version of `nnf-mfu` is referenced by the `NNFMFU` variable in several places:<br><br>`nnf-sos`<br>1. `Makefile` replace `NNFMFU` with `nnf-mfu's` tag.<br><br>`nnf-dm`<br>1. In `Dockerfile` and `Makefile`, replace `NNFMU_VERSION` with the new version.<br>2. In `config/manager/kustomization.yaml`, replace `nnf-mfu`'s `newTag: <X.Y.Z>.`|
97+
|`lustre-fs-operator` |update `config/manager/kustomization.yaml` with the correct version.|
98+
|`dws` |update `config/manager/kustomization.yaml` with the correct version.|
99+
|`nnf-sos` |update `config/manager/kustomization.yaml` with the correct version.|
100+
|`nnf-dm` |update `config/manager/kustomization.yaml` with the correct version.|
101+
|`lustre-csi-driver` |update `deploy/kubernetes/base/kustomization.yaml` and `charts/lustre-csi-driver/values.yaml` with the correct version.|
104102
105-
6. Create a Pull Request from your branch and **target the release branch**. When merging the Pull
103+
6. **Target the `releases/v0` branch** with a Pull Request from your branch. When merging the Pull
106104
Request, **you must use a Merge Commit.**
107105
108106
!!! note
109-
110-
**Do not** Rebase or Squash! Those actions will remove the records that Git uses to
107+
**Do not** Rebase or Squash! Those actions remove the records that Git uses to
111108
determine which commits have been merged, and then when the next release is created Git will
112109
treat everything like a conflict. Additionally, this will cause auto-generated release notes
113110
to include the previous release.
114111
115-
7. Once merged, update the release branch locally and then create an annotated tag:
112+
7. Once merged, update the release branch locally and create an annotated tag:
116113
117114
```shell
118115
git checkout releases/v0
116+
git pull
119117
git tag -a v0.0.3 -m "Release v0.0.3"
120118
git push origin --tags
121119
```
122120
123-
8. Now that there is a tag, a release can be created via the [GitHub CLI](https://cli.github.com/).
121+
8. Now that a tag exists, a release can be created via the [GitHub CLI](https://cli.github.com/).
124122
Alternatively, use the [Web UI](https://github.com/NearNodeFlash/nnf-dm/releases/new).
125123
126124
```bash
127125
gh release create --generate-notes --verify-tag -p v0.0.3 -t "Release v0.0.3"
128126
```
129127
130-
9. Repeat this process for each remaining component.
128+
9. GOTO Step 1 and repeat this process for each remaining component.
131129
132130
## Release `nnf-deploy`
133131
134-
Once the individual components are released, we need to update the submodules and
135-
`config/repositories.yaml` in the **master** branch before we start on the release branch. This
136-
makes sure that everything is now current on master.
132+
Once the individual components are released, we need to update the submodules
133+
in `nnf-deploy's` `master` branch before we create the release branch. This ensures
134+
that everything is current on `master` for `nnf-deploy`.
137135

138-
1. Update the submodules on master:
136+
1. Update the submodules for `nnf-deploy` on master:
139137

140138
```shell
139+
cd nnf-deploy
141140
git checkout master
142141
git pull
143-
./update.sh
142+
git submodule foreach git checkout master
143+
git submodule foreach git pull
144144
```
145145

146-
2. Update `config/repositories.yaml` and update the referenced versions for:
147-
148-
1. `lustre-csi-driver`
146+
2. Create a branch to capture the submodule changes for the PR to `master`
149147

150-
2. `lustre-fs-operator`
151-
152-
3. `nnf-mfu`
148+
```shell
149+
git checkout -b update-submodules
150+
```
153151

154152
3. Commit the changes and open a Pull Request against the `master` branch.
155153

156-
4. Once merged, follow steps 1-3 from the previous section to update the release branch with master.
154+
4. Once merged, follow steps 1-3 from the previous section to create a release branch off of `releases/v0` and
155+
update it with changes from `master`.
157156

158-
5. There will be conflicts on the submodules after step 3. This is expected. We will update the
157+
5. There will be conflicts for the submodules after step 3. **This is expected.** Update the
159158
submodules to the new tags and then commit the changes. If each tag was committed properly, the
160159
following command can do this for you:
161160

162161
```shell
163162
git submodule foreach 'git checkout `git describe --match="v*" HEAD`'
164163
```
165164

166-
Verify that each submodule is now at the proper tagged version.
165+
6. Verify that each submodule is now at the proper tagged version.
166+
167+
```shell
168+
git submodule
169+
```
170+
171+
7. Do a `git add` for each of the submodules.
172+
173+
8. Update `config/repositories.yaml` with the referenced versions for:
174+
175+
1. `lustre-csi-driver`
176+
2. `lustre-fs-operator`
177+
3. `nnf-mfu` (Search for NNFMFU_VERSION)
178+
179+
9. Tidy and make `nnf-deploy` to avoid embarrassment.
167180

168181
```shell
169-
git submodule status
182+
go mod tidy
183+
make
170184
```
171185

172-
6. Do a `git add` for each of the submodules.
186+
10. Do another `git add` for any changes, particularly `go.mod` and/or `go.sum`.
187+
188+
11. Verify that `git status` is happy with `nnf-deploy` and then finalize the merge
189+
from master by with a `git commit`.
190+
191+
12. Follow steps 6-8 from the previous section to finalize the release of `nnf-deploy`.
192+
193+
**The software is now released!**
194+
195+
## Clone a release
173196

174-
7. Run `go mod tidy` and then `make`. Do another `git add` for any changes, particularly`go.mod`
175-
and/or `go.sum`.
197+
The follow commands clone release `v0.0.7` into `nnf-deploy-v0.0.7`
176198

177-
8. Verify that `git status` is happy with `nnf-deploy` and then finalize the merge from master by
178-
doing a `git commit`.
199+
```shell
200+
export NNF_VERSION=v0.0.7
179201
180-
9. Follow steps 6-8 from the previous section to finalize the release of `nnf-deploy`.
202+
git clone --recurse-submodules git@github.com:NearNodeFlash/nnf-deploy nnf-deploy-$NNF_VERSION
203+
cd nnf-deploy-$NNF_VERSION
204+
git -c advice.detachedHead=false checkout $NNF_VERSION --recurse-submodules
181205
182-
The software is now released!
206+
git submodule status
207+
```

0 commit comments

Comments
 (0)