Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package org.zstack.header.network.sdncontroller;

import org.zstack.header.identity.OwnedByAccount;
import org.zstack.header.log.NoLogging;
import org.zstack.header.vo.BaseResource;
import org.zstack.header.vo.NoView;
import org.zstack.header.vo.ResourceVO;
Expand Down Expand Up @@ -40,6 +41,7 @@ public class SdnControllerVO extends ResourceVO implements OwnedByAccount, ToInv
private String username;

@Column
@NoLogging
private String password;

@OneToMany(fetch=FetchType.EAGER)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ public interface SdnController {
对sdn控制器的控制: event
有关sdn控制器的后置处理: post-event
*/
void preInitSdnController(APIAddSdnControllerMsg msg, Completion completion);
void createSdnControllerDb(APIAddSdnControllerMsg msg, SdnControllerVO vo, Completion completion);
void preInitSdnController(AddSdnControllerMsg msg, Completion completion);
void createSdnControllerDb(AddSdnControllerMsg msg, SdnControllerVO vo, Completion completion);
void deleteSdnControllerDb(SdnControllerVO vo);
void initSdnController(APIAddSdnControllerMsg msg, Completion completion);
void initSdnController(AddSdnControllerMsg msg, Completion completion);
void postInitSdnController(SdnControllerVO vo, Completion completion);

void deleteSdnController(SdnControllerDeletionMsg msg, SdnControllerInventory sdn, Completion completion);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import org.zstack.core.Platform;
import org.zstack.core.asyncbatch.While;
import org.zstack.core.cloudbus.CloudBus;
import org.zstack.core.cloudbus.CloudBusCallBack;
import org.zstack.core.componentloader.PluginRegistry;
import org.zstack.core.db.DatabaseFacade;
import org.zstack.core.workflow.FlowChainBuilder;
Expand All @@ -19,6 +20,7 @@
import org.zstack.header.errorcode.ErrorCodeList;
import org.zstack.header.exception.CloudRuntimeException;
import org.zstack.header.message.Message;
import org.zstack.header.message.MessageReply;
import org.zstack.header.network.NetworkException;
import org.zstack.header.network.l2.*;
import org.zstack.header.network.l3.*;
Expand Down Expand Up @@ -80,13 +82,31 @@ public List<String> getAliasIds() {
public void handleMessage(Message msg) {
if (msg instanceof APIAddSdnControllerMsg) {
handle((APIAddSdnControllerMsg) msg);
} else if (msg instanceof AddSdnControllerMsg) {
handle((AddSdnControllerMsg) msg);
} else if (msg instanceof SdnControllerMessage) {
handleSdnControllerMessage((SdnControllerMessage) msg);
} else {
bus.dealWithUnknownMessage(msg);
}
}

private void handle(AddSdnControllerMsg msg) {
AddSdnControllerReply reply = new AddSdnControllerReply();
doCreateSdnController(msg, new Completion(msg) {
@Override
public void success() {
bus.reply(msg, reply);
}

@Override
public void fail(ErrorCode errorCode) {
reply.setError(errorCode);
bus.reply(msg, reply);
}
});
}

private void handleSdnControllerMessage(SdnControllerMessage msg) {
SdnControllerVO vo = dbf.findByUuid(msg.getSdnControllerUuid(), SdnControllerVO.class);
if (vo == null) {
Expand All @@ -99,23 +119,23 @@ private void handleSdnControllerMessage(SdnControllerMessage msg) {
sdnController.handleMessage(msg);
}

private void doCreateSdnController(SdnControllerVO vo, APIAddSdnControllerMsg msg, Completion completion) {
SdnControllerFactory factory = getSdnControllerFactory(msg.getVendorType());
private void doCreateSdnController(AddSdnControllerMsg msg, Completion completion) {
SdnControllerVO vo = msg.getSdnControllerVO();
SdnControllerFactory factory = getSdnControllerFactory(vo.getVendorType());
SdnController controller = factory.getSdnController(vo);

Map data = new HashMap();
FlowChain chain = FlowChainBuilder.newShareFlowChain();
chain.setData(data);
chain.setName(String.format("create-sdn-controller-%s", msg.getName()));
chain.setName(String.format("create-sdn-controller-%s", vo.getName()));
chain.then(new ShareFlow() {
@Override
public void setup() {
flow(new NoRollbackFlow() {
String __name__ = String.format("pre-process-for-create-sdn-controller-%s", msg.getName());
String __name__ = String.format("pre-process-for-create-sdn-controller-%s", vo.getName());

@Override
public void run(FlowTrigger trigger, Map data) {
msg.setResourceUuid(vo.getUuid());
controller.preInitSdnController(msg, new Completion(trigger) {
@Override
public void success() {
Expand All @@ -130,7 +150,7 @@ public void fail(ErrorCode errorCode) {
}
});
flow(new Flow() {
String __name__ = String.format("create-sdn-controller-%s-on-db", msg.getName());
String __name__ = String.format("create-sdn-controller-%s-on-db", vo.getName());

@Override
public void run(FlowTrigger trigger, Map data) {
Expand All @@ -155,7 +175,7 @@ public void rollback(FlowRollback trigger, Map data) {
}
});
flow(new Flow() {
String __name__ = String.format("init-sdn-controller-%s", msg.getName());
String __name__ = String.format("init-sdn-controller-%s", vo.getName());

@Override
public void run(FlowTrigger trigger, Map data) {
Expand All @@ -179,7 +199,7 @@ public void rollback(FlowRollback trigger, Map data) {
}
});
flow(new NoRollbackFlow() {
String __name__ = String.format("post-process-for-create-sdn-controller--%s", msg.getName());
String __name__ = String.format("post-process-for-create-sdn-controller-%s", vo.getName());

@Override
public void run(FlowTrigger trigger, Map data) {
Expand Down Expand Up @@ -238,17 +258,22 @@ private void handle(APIAddSdnControllerMsg msg) {
}
vo.setStatus(SdnControllerStatus.Connected);

doCreateSdnController(vo, msg, new Completion(msg) {
@Override
public void success() {
tagMgr.createTagsFromAPICreateMessage(msg, vo.getUuid(), SdnControllerVO.class.getSimpleName());
event.setInventory(SdnControllerInventory.valueOf(dbf.findByUuid(vo.getUuid(), SdnControllerVO.class)));
bus.publish(event);
}

AddSdnControllerMsg amsg = new AddSdnControllerMsg();
amsg.setSdnControllerVO(vo);
amsg.setAccountUuid(msg.getSession().getAccountUuid());
if (msg.getSystemTags() != null) {
amsg.setSystemTags(msg.getSystemTags());
}
bus.makeTargetServiceIdByResourceUuid(amsg, SdnControllerConstant.SERVICE_ID, vo.getUuid());
bus.send(amsg, new CloudBusCallBack(amsg) {
@Override
public void fail(ErrorCode errorCode) {
event.setError(errorCode);
public void run(MessageReply reply) {
if (reply.isSuccess()) {
tagMgr.createTagsFromAPICreateMessage(msg, vo.getUuid(), SdnControllerVO.class.getSimpleName());
event.setInventory(SdnControllerInventory.valueOf(dbf.findByUuid(vo.getUuid(), SdnControllerVO.class)));
} else {
event.setError(reply.getError());
}
bus.publish(event);
}
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ private void getH3cDefaultTenant(Completion completion) {
}
}

private void getH3cParameters(APIAddSdnControllerMsg msg, Completion completion) {
private void getH3cParameters(AddSdnControllerMsg msg, Completion completion) {
FlowChain chain = FlowChainBuilder.newSimpleFlowChain();
chain.setName(String.format("get-h3c-parameters-%s", self.getIp()));
chain.then(new NoRollbackFlow() {
Expand Down Expand Up @@ -228,12 +228,12 @@ public void handleMessage(SdnControllerMessage msg) {

@Override
@SdnControllerLog
public void preInitSdnController(APIAddSdnControllerMsg msg, Completion completion) {
public void preInitSdnController(AddSdnControllerMsg msg, Completion completion) {
completion.success();
}

@Override
public void createSdnControllerDb(APIAddSdnControllerMsg msg, SdnControllerVO vo, Completion completion) {
public void createSdnControllerDb(AddSdnControllerMsg msg, SdnControllerVO vo, Completion completion) {
dbf.persist(vo);
completion.success();
}
Expand All @@ -245,7 +245,7 @@ public void deleteSdnControllerDb(SdnControllerVO vo) {

@Override
@SdnControllerLog
public void initSdnController(APIAddSdnControllerMsg msg, Completion completion) {
public void initSdnController(AddSdnControllerMsg msg, Completion completion) {
getH3cControllerToken(new Completion(completion) {
@Override
public void success() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ public void fail(ErrorCode errorCode) {

@Override
@SdnControllerLog
public void initSdnController(APIAddSdnControllerMsg msg, Completion completion) {
public void initSdnController(AddSdnControllerMsg msg, Completion completion) {
getH3cControllerToken(new Completion(completion) {
@Override
public void success() {
Expand Down Expand Up @@ -335,7 +335,7 @@ public void getH3cVniRanges(Completion completion) {
}
}

private void getH3cParameters(APIAddSdnControllerMsg msg, Completion completion) {
private void getH3cParameters(AddSdnControllerMsg msg, Completion completion) {
FlowChain chain = FlowChainBuilder.newSimpleFlowChain();
chain.setName(String.format("get-h3c-parameters-%s", self.getIp()));
chain.then(new NoRollbackFlow() {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package org.zstack.sdnController.header;

import org.zstack.header.message.NeedReplyMessage;
import org.zstack.header.network.sdncontroller.SdnControllerMessage;
import org.zstack.header.network.sdncontroller.SdnControllerVO;

public class AddSdnControllerMsg extends NeedReplyMessage implements SdnControllerMessage {
SdnControllerVO sdnControllerVO;
String accountUuid;

@Override
public String getSdnControllerUuid() {
return sdnControllerVO.getUuid();
}

public SdnControllerVO getSdnControllerVO() {
return sdnControllerVO;
}

public void setSdnControllerVO(SdnControllerVO sdnControllerVO) {
this.sdnControllerVO = sdnControllerVO;
}

public String getAccountUuid() {
return accountUuid;
}

public void setAccountUuid(String accountUuid) {
this.accountUuid = accountUuid;
}
}
Comment thread
coderabbitai[bot] marked this conversation as resolved.
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package org.zstack.sdnController.header;

import org.zstack.header.message.MessageReply;
import org.zstack.header.network.sdncontroller.SdnControllerInventory;

public class AddSdnControllerReply extends MessageReply {
private SdnControllerInventory inventory;

public SdnControllerInventory getInventory() {
return inventory;
}

public void setInventory(SdnControllerInventory inventory) {
this.inventory = inventory;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ void handMessage(SdnControllerPingMsg msg) {
}

@Override
public void preInitSdnController(APIAddSdnControllerMsg msg, Completion completion) {
public void preInitSdnController(AddSdnControllerMsg msg, Completion completion) {
try {
long count = Q.New(SdnControllerVO.class).eq(SdnControllerVO_.vendorType, SugonSdnControllerConstant.TF_CONTROLLER).count();
if(count > 0) {
Expand All @@ -101,7 +101,7 @@ public void preInitSdnController(APIAddSdnControllerMsg msg, Completion completi
return;
}
String accountUuid = StringDSL.transToTfUuid(accountVO.getUuid());
client = new TfHttpClient(msg.getIp());
client = new TfHttpClient(msg.getSdnControllerVO().getIp());
Domain domain = (Domain) client.getDomain();
if(domain == null){
completion.fail(operr("get default domain on tf controller failed"));
Expand Down Expand Up @@ -133,7 +133,7 @@ public void preInitSdnController(APIAddSdnControllerMsg msg, Completion completi
}

@Override
public void createSdnControllerDb(APIAddSdnControllerMsg msg, SdnControllerVO vo, Completion completion) {
public void createSdnControllerDb(AddSdnControllerMsg msg, SdnControllerVO vo, Completion completion) {
dbf.persist(vo);
completion.success();
}
Expand All @@ -144,7 +144,7 @@ public void deleteSdnControllerDb(SdnControllerVO vo) {
}

@Override
public void initSdnController(APIAddSdnControllerMsg msg, Completion completion) {
public void initSdnController(AddSdnControllerMsg msg, Completion completion) {
completion.success();
}

Expand Down