|
59 | 59 | <button class="btn border" @click="cancel()">Cancel</button> |
60 | 60 |
|
61 | 61 | <button type="button" class="btn floatRight" @click="createBackup(true)">View Summary</button> |
| 62 | + <button |
| 63 | + type="button" |
| 64 | + class="btn border floatRight" |
| 65 | + title="Dry run mode helps to evaluate a request through the typical request stages without any storage persistance or resource allocation." |
| 66 | + @click=" |
| 67 | + dryRun = true; |
| 68 | + createBackup(); |
| 69 | + " |
| 70 | + > |
| 71 | + Dry Run |
| 72 | + </button> |
62 | 73 | </form> |
63 | | - |
64 | | - <CRDSummary :crd="previewCRD" kind="SGBackup" v-if="showSummary" @closeSummary="showSummary = false"></CRDSummary> |
| 74 | + |
| 75 | + <CRDSummary |
| 76 | + v-if="showSummary" |
| 77 | + :crd="previewCRD" |
| 78 | + :dryRun="dryRun" |
| 79 | + kind="SGBackup" |
| 80 | + @closeSummary=" |
| 81 | + showSummary = false; |
| 82 | + dryRun = false; |
| 83 | + previewCRD = {}; |
| 84 | + " |
| 85 | + ></CRDSummary> |
65 | 86 | </div> |
66 | 87 | </template> |
67 | 88 |
|
|
88 | 109 | return { |
89 | 110 | editMode: vm.$route.name.includes('Edit'), |
90 | 111 | editReady: false, |
| 112 | + dryRun: false, |
91 | 113 | advancedMode: false, |
92 | 114 | previewCRD: {}, |
93 | 115 | showSummary: false, |
|
146 | 168 | createBackup(preview = false) { |
147 | 169 | const vc = this; |
148 | 170 |
|
149 | | - if(vc.checkRequired()) { |
| 171 | + if(!vc.checkRequired()) { |
| 172 | + vc.dryRun = false; |
| 173 | + vc.showSummary = false; |
| 174 | + return; |
| 175 | + } |
150 | 176 |
|
151 | | - let backup = { |
152 | | - "metadata": { |
153 | | - "name": this.backupName, |
154 | | - "namespace": this.backupNamespace |
155 | | - }, |
156 | | - "spec": { |
157 | | - "sgCluster": this.backupCluster, |
158 | | - "managedLifecycle": this.managedLifecycle |
159 | | - }, |
160 | | - "status": {} |
161 | | - }; |
| 177 | + store.commit('loading', true); |
162 | 178 |
|
163 | | - if(preview) { |
| 179 | + let backup = { |
| 180 | + "metadata": { |
| 181 | + "name": this.backupName, |
| 182 | + "namespace": this.backupNamespace |
| 183 | + }, |
| 184 | + "spec": { |
| 185 | + "sgCluster": this.backupCluster, |
| 186 | + "managedLifecycle": this.managedLifecycle |
| 187 | + }, |
| 188 | + "status": {} |
| 189 | + }; |
164 | 190 |
|
165 | | - vc.previewCRD = {}; |
166 | | - vc.previewCRD['data'] = backup; |
167 | | - vc.showSummary = true; |
| 191 | + if(preview) { |
168 | 192 |
|
169 | | - } else { |
| 193 | + vc.previewCRD = {}; |
| 194 | + vc.previewCRD['data'] = backup; |
| 195 | + vc.showSummary = true; |
| 196 | + store.commit('loading', false); |
| 197 | +
|
| 198 | + } else { |
170 | 199 |
|
171 | | - if(this.editMode) { |
172 | | - sgApi |
173 | | - .update('sgbackups', backup) |
174 | | - .then(function (response) { |
| 200 | + if(this.editMode) { |
| 201 | + sgApi |
| 202 | + .update('sgbackups', backup, vc.dryRun) |
| 203 | + .then(function (response) { |
| 204 | +
|
| 205 | + if(vc.dryRun) { |
| 206 | + vc.showSummary = true; |
| 207 | + vc.validateDryRun(response.data); |
| 208 | + } else { |
175 | 209 | vc.notify('Backup <strong>"'+backup.metadata.name+'"</strong> updated successfully', 'message', 'sgbackups'); |
176 | 210 |
|
177 | 211 | vc.fetchAPI('sgbackup'); |
|
192 | 226 | router.push('/' + backup.metadata.namespace + '/sgbackup/'); |
193 | 227 | } |
194 | 228 | } |
195 | | - }) |
196 | | - .catch(function (error) { |
197 | | - console.log(error.response); |
198 | | - vc.notify(error.response.data,'error', 'sgbackups'); |
199 | | - }); |
| 229 | + } |
200 | 230 |
|
201 | | - } else { |
202 | | - sgApi |
203 | | - .create('sgbackups', backup) |
204 | | - .then(function (response) { |
| 231 | + store.commit('loading', false); |
| 232 | + }) |
| 233 | + .catch(function (error) { |
| 234 | + console.log(error.response); |
| 235 | + vc.notify(error.response.data,'error', 'sgbackups'); |
| 236 | + store.commit('loading', false); |
| 237 | + }); |
205 | 238 |
|
| 239 | + } else { |
| 240 | + sgApi |
| 241 | + .create('sgbackups', backup, vc.dryRun) |
| 242 | + .then(function (response) { |
| 243 | +
|
| 244 | + if(vc.dryRun) { |
| 245 | + vc.showSummary = true; |
| 246 | + vc.validateDryRun(response.data); |
| 247 | + } else { |
206 | 248 | var urlParams = new URLSearchParams(window.location.search); |
207 | 249 | if(urlParams.has('newtab')) { |
208 | 250 | opener.fetchParentAPI('sgbackups'); |
|
213 | 255 |
|
214 | 256 | vc.fetchAPI('sgbackup'); |
215 | 257 | router.push('/' + backup.metadata.namespace + '/sgbackups'); |
216 | | - }) |
217 | | - .catch(function (error) { |
218 | | - console.log(error.response); |
219 | | - vc.notify(error.response.data,'error', 'sgbackups'); |
220 | | - }); |
221 | | - } |
| 258 | + } |
| 259 | + |
| 260 | + store.commit('loading', false); |
| 261 | + }) |
| 262 | + .catch(function (error) { |
| 263 | + console.log(error.response); |
| 264 | + vc.notify(error.response.data,'error', 'sgbackups'); |
| 265 | + store.commit('loading', false); |
| 266 | + }); |
222 | 267 | } |
223 | | -
|
224 | 268 | } |
225 | 269 |
|
226 | 270 | } |
|
0 commit comments