@@ -114,6 +114,7 @@ data AppState = AppState
114114 , deploymentOverrideKeysCommand :: Command
115115 , applicationOverridesCommand :: Command
116116 , applicationOverrideKeysCommand :: Command
117+ , unarchiveCommand :: Command
117118 , -- | Deployments currently being processed which has not yet been
118119 -- recorded in the database.
119120 lockedDeployments :: LockedDeployments
@@ -171,6 +172,7 @@ runOctopodServer = do
171172 dKeysCmd <- Command . pack <$> getEnvOrDie "DEPLOYMENT_KEYS_COMMAND"
172173 aOverridesCmd <- Command . pack <$> getEnvOrDie "APPLICATION_OVERRIDES_COMMAND"
173174 aKeysCmd <- Command . pack <$> getEnvOrDie "APPLICATION_KEYS_COMMAND"
175+ unarchiveCmd <- Command . pack <$> getEnvOrDie "UNARCHIVE_COMMAND"
174176 powerAuthorizationHeader <- AuthHeader . BSC.pack <$> getEnvOrDie "POWER_AUTHORIZATION_HEADER"
175177 notificationCmd <-
176178 (fmap . fmap) (Command . pack) $
@@ -212,6 +214,7 @@ runOctopodServer = do
212214 dKeysCmd
213215 aOverridesCmd
214216 aKeysCmd
217+ unarchiveCmd
215218 lockedDs
216219 app' = app appSt
217220 wsApp' = wsApp channel
@@ -573,7 +576,7 @@ transitionStatus :: DeploymentStatusTransition -> DeploymentStatus
573576transitionStatus TransitionArchived {} = Archived
574577transitionStatus TransitionCreate {} = Running
575578transitionStatus TransitionUpdate {} = Running
576−transitionStatus TransitionRestore {} = Running
579+transitionStatus TransitionRestore {} = CreatePending
577580transitionStatus TransitionArchivePending {} = ArchivePending
578581transitionStatus TransitionUpdatePending {} = UpdatePending
579582transitionStatus TransitionCreatePending {} = CreatePending
@@ -984,11 +987,12 @@ restoreH dName = do
984987 runDeploymentBgWorker (Just CreatePending) dName (pure ()) $ \() -> do
985988 dep' <- getDeploymentS dName
986989 updateDeploymentInfo dName
987− (ec, out, err) <- createDeployment $ dep' ^. #deployment
990+ dCfg <- getDefaultConfig dName
991+ (ec, out, err) <- runCommandArgs unarchiveCommand =<< unarchiveCommandArgs dCfg (dep' ^. #deployment)
988992 t2 <- liftBase getCurrentTime
989993 let elTime = elapsedTime t2 t1
990994 transitionToStatusS dName $
991− TransitionCreatePending
995+ TransitionRestore
992996 StatusTransitionProcessOutput
993997 { exitCode = ec
994998 , duration = elTime