Sfoglia il codice sorgente

change fork to a PUT with object instead of using url params

tags/v1.4.17
Jonathan Cobb 4 anni fa
parent
commit
e26fc4cb48
4 ha cambiato i file con 37 aggiunte e 17 eliminazioni
  1. +14
    -0
      bubble-server/src/main/java/bubble/model/cloud/ForkRequest.java
  2. +14
    -14
      bubble-server/src/main/java/bubble/resources/cloud/NetworkActionsResource.java
  3. +8
    -2
      bubble-server/src/test/resources/models/include/fork.json
  4. +1
    -1
      bubble-web

+ 14
- 0
bubble-server/src/main/java/bubble/model/cloud/ForkRequest.java Vedi File

@@ -0,0 +1,14 @@
package bubble.model.cloud;

import lombok.Getter;
import lombok.Setter;

public class ForkRequest {

@Getter @Setter private String fqdn;
@Getter @Setter private String adminEmail;
@Getter @Setter private String cloud;
@Getter @Setter private String region;
@Getter @Setter private Boolean exactRegion;

}

+ 14
- 14
bubble-server/src/main/java/bubble/resources/cloud/NetworkActionsResource.java Vedi File

@@ -13,10 +13,7 @@ import bubble.model.account.Account;
import bubble.model.account.AccountPolicy;
import bubble.model.account.message.ActionTarget;
import bubble.model.bill.AccountPlan;
import bubble.model.cloud.BubbleDomain;
import bubble.model.cloud.BubbleNetwork;
import bubble.model.cloud.BubbleNode;
import bubble.model.cloud.NetLocation;
import bubble.model.cloud.*;
import bubble.server.BubbleConfiguration;
import bubble.service.account.StandardAuthenticatorService;
import bubble.service.cloud.NodeLaunchMonitor;
@@ -152,18 +149,16 @@ public class NetworkActionsResource {
return ok(networkService.restoreNetwork(network, cloud, region, exactRegion, req));
}

@PUT @Path(EP_FORK +"/{fqdn}")
@PUT @Path(EP_FORK)
public Response fork(@Context Request req,
@Context ContainerRequest ctx,
@PathParam("fqdn") String fqdn,
@QueryParam("cloud") String cloud,
@QueryParam("region") String region,
@QueryParam("exactRegion") Boolean exactRegion) {
ForkRequest forkRequest) {
final Account caller = userPrincipal(ctx);
if (!caller.admin()) return forbidden();

authenticatorService.ensureAuthenticated(ctx, ActionTarget.network);

final String fqdn = forkRequest.getFqdn();
final BubbleDomain domain = domainDAO.findByFqdn(fqdn);
if (domain == null) return invalid("err.fqdn.domain.invalid", "domain not found for "+fqdn, fqdn);

@@ -179,20 +174,25 @@ public class NetworkActionsResource {
network.setTag(TAG_ALLOW_REGISTRATION, configuration.getThisNetwork().getBooleanTag(TAG_ALLOW_REGISTRATION, false));
networkDAO.update(network);

if (cloud == null) {
cloud = configuration.getThisNode().getCloud();
if (forkRequest.getCloud() == null) {
forkRequest.setCloud(configuration.getThisNode().getCloud());
}
if (region == null) {
if (forkRequest.getRegion() == null) {
// todo: choose region that is closest to the caller's IP, but is not the same region
region = configuration.getThisNode().getRegion();
forkRequest.setRegion(configuration.getThisNode().getRegion());
}

final AccountPlan accountPlan = accountPlanDAO.findByAccountAndId(caller.getUuid(), network.getName());
if (accountPlan == null) return invalid("err.fqdn.plan.invalid", "no plan found for network "+network.getName(), network.getName());

network.setForkHost(network.hostFromFqdn(fqdn));
network.setAdminEmail(forkRequest.getAdminEmail());

return _startNetwork(network, cloud, region, exactRegion, req);
return _startNetwork(network,
forkRequest.getCloud(),
forkRequest.getRegion(),
forkRequest.getExactRegion(),
req);
}

public Response _startNetwork(BubbleNetwork network,


+ 8
- 2
bubble-server/src/test/resources/models/include/fork.json Vedi File

@@ -83,8 +83,14 @@
{
"comment": "fork the system; sets up the first node, which does the rest",
"request": {
"uri": "me/networks/<<network>>/actions/fork/<<forkHost>>.<<network>>.<<domain>>?cloud=<<urlEncode compute>>&region=<<urlEncode region>>",
"method": "put"
"uri": "me/networks/<<network>>/actions/fork",
"method": "put",
"entity": {
"fqdn": "<<forkHost>>.<<network>>.<<domain>>",
"adminEmail": "<<email>>",
"cloud": "<<compute>>",
"region": "<<region>>"
}
},
"response": {
"store": "<<networkVar>>"


+ 1
- 1
bubble-web

@@ -1 +1 @@
Subproject commit 290017992084da8d799aba24409099d54c1a9305
Subproject commit 7ea124f8b4594e950d09edf3cc08410276ce2a31

Caricamento…
Annulla
Salva