|
1 | 1 | # yamllint disable rule:line-length
|
2 |
| -{{- $urls := "" -}} |
3 | 2 | {{- $rootPersistence := .Values.persistence }}
|
4 |
| -{{- range $idx, $model := .Values.models.list }} |
5 |
| -{{- $urls = printf "%s%s %s," $urls $model.url ($model.basicAuth | default "") }} |
6 |
| -{{- end }} |
7 | 3 |
|
8 | 4 | apiVersion: apps/v1
|
9 | 5 | kind: Deployment
|
@@ -121,89 +117,6 @@ spec:
|
121 | 117 | {{- end }}
|
122 | 118 | {{- end }}
|
123 | 119 | {{- end }}
|
124 |
| - - name: download-model |
125 |
| - image: {{ .Values.deployment.download_model.image }} |
126 |
| - imagePullPolicy: {{ .Values.deployment.pullPolicy }} |
127 |
| - command: ["/bin/sh", "-c"] |
128 |
| - args: |
129 |
| - - | |
130 |
| - MODEL_DIR={{ .Values.deployment.modelsPath }} |
131 |
| - FORCE_DOWNLOAD={{ .Values.models.forceDownload }} |
132 |
| - URLS="{{ $urls }}" |
133 |
| - LOCK_DIR=/tmp/model-download-locks |
134 |
| -
|
135 |
| - mkdir -p "$MODEL_DIR" |
136 |
| - mkdir -p "$LOCK_DIR" |
137 |
| - mkdir -p "/tmp/generated/images" |
138 |
| - mkdir -p "/tmp/generated/audio" |
139 |
| - rm -rf "/models/lost+found" |
140 |
| -
|
141 |
| - validate_url() { |
142 |
| - local url=$1 |
143 |
| - local regex='^(https?|ftp)://[a-zA-Z0-9.-]+(:[a-zA-Z0-9.-]+)?(/[a-zA-Z0-9.-]*)*$' |
144 |
| - if [[ $url =~ $regex ]]; then |
145 |
| - return 0 # URL is valid |
146 |
| - else |
147 |
| - return 1 # URL is invalid |
148 |
| - fi |
149 |
| - } |
150 |
| -
|
151 |
| - echo "List of URLs:" |
152 |
| - echo "$URLS" |
153 |
| -
|
154 |
| - echo "$URLS" | awk -F, '{for (i=1; i<=NF; i++) print $i}' | while read -r line; do |
155 |
| - url=$(echo "$line" | awk '{print $1}') |
156 |
| - auth=$(echo "$line" | awk '{print $2}') |
157 |
| - full_filename=$(basename "$url" .bin) |
158 |
| - short_filename=$(echo "$full_filename" | cut -c1-20) |
159 |
| - hash=$(echo "$full_filename" | sha256sum | cut -c1-12) |
160 |
| - filename="${short_filename}_${hash}" |
161 |
| - lockfile="$LOCK_DIR/$filename.lock" |
162 |
| -
|
163 |
| - # Validate URL |
164 |
| - if ! validate_url "$url"; then |
165 |
| - echo "Invalid URL: $url. Skipping download." |
166 |
| - continue |
167 |
| - fi |
168 |
| -
|
169 |
| - if [ -e "$MODEL_DIR/$filename" ]; then |
170 |
| - echo "File $filename already exists. Skipping download." |
171 |
| - continue |
172 |
| - fi |
173 |
| -
|
174 |
| - if [ -e "$lockfile" ]; then |
175 |
| - echo "Another pod is downloading $filename. Waiting for download to complete." |
176 |
| - while [ -e "$lockfile" ]; do sleep 1; done |
177 |
| - continue |
178 |
| - fi |
179 |
| -
|
180 |
| - touch "$lockfile" |
181 |
| -
|
182 |
| - echo "Downloading $filename" |
183 |
| - if [ -n "$auth" ]; then |
184 |
| - wget --header "Authorization: Basic $auth" "$url" -O "$MODEL_DIR/$filename" |
185 |
| - else |
186 |
| - wget "$url" -O "$MODEL_DIR/$filename" |
187 |
| - fi |
188 |
| -
|
189 |
| - if [ "$?" -ne 0 ]; then |
190 |
| - echo "Download failed." |
191 |
| - rm -f "$lockfile" |
192 |
| - exit 1 |
193 |
| - else |
194 |
| - echo "Download completed." |
195 |
| - rm -f "$lockfile" |
196 |
| - fi |
197 |
| - done |
198 |
| -
|
199 |
| - volumeMounts: |
200 |
| - {{- range $key, $pvc := $rootPersistence }} |
201 |
| - {{- if $pvc.enabled }} |
202 |
| - - name: {{ $key }} |
203 |
| - mountPath: {{ $pvc.globalMount | default (print "/" $key) }} |
204 |
| - {{- end }} |
205 |
| - {{- end }} |
206 |
| - |
207 | 120 | containers:
|
208 | 121 | # Sidecar containers from values.yaml
|
209 | 122 | {{- range .Values.sidecarContainers }}
|
|
0 commit comments