@@ -1308,6 +1308,121 @@ export const useFunc = (model) => {
13081308 return ( val && expected === 'true' ) || ( ! val && expected === 'false' )
13091309 }
13101310
1311+ function showRecovery ( ) {
1312+ // watchDependency('discriminator#/recovery')
1313+ const isRecoveryOn = getValue ( discriminator , '/recovery' ) || ''
1314+ return isRecoveryOn
1315+ }
1316+
1317+ async function setPointInTimeRecovery ( ) {
1318+ const owner = storeGet ( '/route/params/user' )
1319+ const cluster = storeGet ( '/route/params/cluster' )
1320+ const refNamespace = getValue ( discriminator , '/refNamespace' )
1321+ const refDBName = getValue ( discriminator , '/refDBName' )
1322+
1323+ try {
1324+ const repositoriesUrl = `clusters/${ owner } /${ cluster } /proxy/storage.kubestash.com/v1alpha1/namespaces/${ refNamespace } /repositories/${ refDBName } -full`
1325+ const snapshotsUrl = `clusters/${ owner } /${ cluster } /proxy/storage.kubestash.com/v1alpha1/namespaces/${ refNamespace } /snapshots/${ refDBName } -incremental-snapshot`
1326+ const repositoriesResp = await axios . get ( repositoriesUrl )
1327+ const snapshotsResp = await axios . get ( snapshotsUrl )
1328+
1329+ commit ( 'wizard/model$update' , {
1330+ path : `/spec/init/archiver/encryptionSecret/name` ,
1331+ value : repositoriesResp . data ?. spec . encryptionSecret . name ,
1332+ force : true ,
1333+ } )
1334+ commit ( 'wizard/model$update' , {
1335+ path : `/spec/init/archiver/encryptionSecret/namespace` ,
1336+ value : repositoriesResp . data ?. spec . encryptionSecret . namespace ,
1337+ force : true ,
1338+ } )
1339+ commit ( 'wizard/model$update' , {
1340+ path : `/spec/init/archiver/fullDBRepository/name` ,
1341+ value : `${ refDBName } -full` ,
1342+ force : true ,
1343+ } )
1344+ commit ( 'wizard/model$update' , {
1345+ path : `/spec/init/archiver/fullDBRepository/namespace` ,
1346+ value : `${ refNamespace } ` ,
1347+ force : true ,
1348+ } )
1349+ commit ( 'wizard/model$update' , {
1350+ path : `/spec/init/archiver/manifestRepository/name` ,
1351+ value : `${ refDBName } -manifest` ,
1352+ force : true ,
1353+ } )
1354+ commit ( 'wizard/model$update' , {
1355+ path : `/spec/init/archiver/manifestRepository/namespace` ,
1356+ value : `${ refNamespace } ` ,
1357+ force : true ,
1358+ } )
1359+
1360+ const resp = getComponentLogStats ( snapshotsResp . data )
1361+
1362+ commit ( 'wizard/model$update' , {
1363+ path : `/spec/init/archiver/recoveryTimestamp` ,
1364+ value : convertToUTC ( resp ?. end ) ,
1365+ force : true ,
1366+ } )
1367+ commit ( 'wizard/model$update' , {
1368+ path : `/minDate` ,
1369+ value : convertToUTC ( resp ?. start ) ,
1370+ force : true ,
1371+ } )
1372+ commit ( 'wizard/model$update' , {
1373+ path : `/maxDate` ,
1374+ value : convertToUTC ( resp ?. end ) ,
1375+ force : true ,
1376+ } )
1377+ } catch ( e ) {
1378+ pointIntimeError =
1379+ e . response ?. data ?. message || 'Invalid name / namespace for recovery timestamp'
1380+ commit ( 'wizard/model$update' , {
1381+ path : `/spec/init/archiver/recoveryTimestamp` ,
1382+ value : '' ,
1383+ force : true ,
1384+ } )
1385+ commit ( 'wizard/model$update' , {
1386+ path : `/minDate` ,
1387+ value : '' ,
1388+ force : true ,
1389+ } )
1390+ commit ( 'wizard/model$update' , {
1391+ path : `/maxDate` ,
1392+ value : '' ,
1393+ force : true ,
1394+ } )
1395+ commit ( 'wizard/model$delete' , '/spec/init/archiver/encryptionSecret' )
1396+ commit ( 'wizard/model$delete' , '/spec/init/archiver/fullDBRepository' )
1397+ commit ( 'wizard/model$delete' , '/spec/init/archiver/manifestRepository' )
1398+ console . log ( e )
1399+ }
1400+ }
1401+
1402+ function convertToUTC ( localTime ) {
1403+ const date = new Date ( localTime )
1404+ if ( isNaN ( date . getTime ( ) ) ) return
1405+
1406+ const utcString = date . toISOString ( )
1407+ return utcString
1408+ }
1409+
1410+ function onTimestampChange ( ) {
1411+ const localTime = getValue ( model , '/spec/init/archiver/recoveryTimestamp' )
1412+ if ( ! localTime ) return
1413+
1414+ const utcString = convertToUTC ( localTime )
1415+
1416+ // Only update if the value is valid & not already in UTC format
1417+ if ( utcString && localTime !== utcString ) {
1418+ commit ( 'wizard/model$update' , {
1419+ path : '/spec/init/archiver/recoveryTimestamp' ,
1420+ value : utcString ,
1421+ force : true ,
1422+ } )
1423+ }
1424+ }
1425+
13111426 return {
13121427 isExternallyManaged,
13131428 showReferSecretSwitch,
@@ -1367,5 +1482,8 @@ export const useFunc = (model) => {
13671482 onModeChange,
13681483 setBackup,
13691484 getDefault,
1485+ setPointInTimeRecovery,
1486+ onTimestampChange,
1487+ showRecovery,
13701488 }
13711489}
0 commit comments