@@ -7,6 +7,7 @@ package bubble.server.listener; | |||||
import bubble.ApiConstants; | import bubble.ApiConstants; | ||||
import bubble.dao.account.AccountDAO; | import bubble.dao.account.AccountDAO; | ||||
import bubble.dao.account.AccountPolicyDAO; | import bubble.dao.account.AccountPolicyDAO; | ||||
import bubble.dao.cloud.BubbleNetworkDAO; | |||||
import bubble.model.account.Account; | import bubble.model.account.Account; | ||||
import bubble.model.account.AccountPolicy; | import bubble.model.account.AccountPolicy; | ||||
import bubble.model.account.message.AccountAction; | import bubble.model.account.message.AccountAction; | ||||
@@ -14,6 +15,7 @@ import bubble.model.account.message.AccountMessage; | |||||
import bubble.model.account.message.AccountMessageType; | import bubble.model.account.message.AccountMessageType; | ||||
import bubble.model.account.message.ActionTarget; | import bubble.model.account.message.ActionTarget; | ||||
import bubble.model.cloud.BubbleNetwork; | import bubble.model.cloud.BubbleNetwork; | ||||
import bubble.model.cloud.BubbleNetworkState; | |||||
import bubble.server.BubbleConfiguration; | import bubble.server.BubbleConfiguration; | ||||
import bubble.service.boot.SageHelloService; | import bubble.service.boot.SageHelloService; | ||||
import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
@@ -78,6 +80,11 @@ public class BubbleFirstTimeListener extends RestServerLifecycleListenerBase<Bub | |||||
.setAction(AccountAction.verify) | .setAction(AccountAction.verify) | ||||
.setTarget(ActionTarget.network) | .setTarget(ActionTarget.network) | ||||
.setData(unlockKey)); | .setData(unlockKey)); | ||||
if (network.getState().equals(BubbleNetworkState.starting)) { | |||||
network.setState(BubbleNetworkState.running); | |||||
configuration.getBean(BubbleNetworkDAO.class).update(network); | |||||
} | |||||
} finally { | } finally { | ||||
if (!FIRST_TIME_FILE.delete()) { | if (!FIRST_TIME_FILE.delete()) { | ||||
log.error("onStart: error deleting: "+abs(FIRST_TIME_FILE)); | log.error("onStart: error deleting: "+abs(FIRST_TIME_FILE)); | ||||
@@ -219,5 +219,11 @@ | |||||
{"condition": "json.admin() == true"} | {"condition": "json.admin() == true"} | ||||
] | ] | ||||
} | } | ||||
}, | |||||
{ | |||||
"comment": "network should be in running state by now", | |||||
"request": { "uri": "me/networks/<<network>>" }, | |||||
"response": { "check": [{ "condition": "json.getState().name() == 'running'" }] } | |||||
} | } | ||||
] | ] |
@@ -150,18 +150,25 @@ | |||||
"response": { | "response": { | ||||
"store": "restoreNN", | "store": "restoreNN", | ||||
"check": [ | "check": [ | ||||
{"condition": "restoreNN.getNetwork() == bubbleNetwork.getNetwork()"} | |||||
{ "condition": "restoreNN.getNetwork() == bubbleNetwork.getNetwork()" }, | |||||
{ "condition": "restoreNN.getState().name() == 'starting'" } | |||||
] | ] | ||||
} | } | ||||
}, | }, | ||||
{ | { | ||||
"comment": "restore node using restoreKey", | |||||
"before": "await_url .bubble 16m:20m 20s", | |||||
"comment": "wait for network and then check its status - should be running", | |||||
"connection": { | "connection": { | ||||
"name": "restoredBubbleConnection", | "name": "restoredBubbleConnection", | ||||
"baseUri": "https://{{restoreNN.fqdn}}:{{serverConfig.nginxPort}}/api" | "baseUri": "https://{{restoreNN.fqdn}}:{{serverConfig.nginxPort}}/api" | ||||
}, | }, | ||||
"before": "await_url .bubble 16m:20m 20s", | |||||
"request": { "uri": "me/networks/{{ restoreNN.getNetwork() }}" }, | |||||
"response": { "check": [{ "condition": "json.getState().name() == 'restoring'" }] } | |||||
}, | |||||
{ | |||||
"comment": "restore node using restoreKey", | |||||
"request": { | "request": { | ||||
"uri": "auth/restore/{{restoreNN.restoreKey}}", | "uri": "auth/restore/{{restoreNN.restoreKey}}", | ||||
"entity": { | "entity": { | ||||
@@ -190,6 +197,12 @@ | |||||
} | } | ||||
}, | }, | ||||
{ | |||||
"comment": "check again for bubble's status - should be running", | |||||
"request": { "uri": "me/networks/{{ restoreNN.getNetwork() }}" }, | |||||
"response": { "check": [{ "condition": "json.getState().name() == 'running'" }] } | |||||
}, | |||||
{ | { | ||||
"comment": "verify account we added has been restored", | "comment": "verify account we added has been restored", | ||||
"request": { | "request": { | ||||