package org.zstack.header.network.service; import org.springframework.http.HttpMethod; import org.zstack.header.identity.Action; import org.zstack.header.message.APIEvent; import org.zstack.header.message.APIMessage; import org.zstack.header.message.APIParam; import org.zstack.header.network.l3.L3NetworkConstant; import org.zstack.header.network.l3.L3NetworkMessage; import org.zstack.header.network.l3.L3NetworkVO; import org.zstack.header.notification.ApiNotification; import org.zstack.header.rest.RestRequest; import java.util.*; /** * @api attach network service to l3Network * @category network service * @cli * @httpMsg { * "org.zstack.header.network.service.APIAttachNetworkServiceToL3NetworkMsg": { * "l3NetworkUuid": "fba7bf08a590444c9e21eee394b61135", * "networkServices": { * "1d1d5ff248b24906a39f96aa3c6411dd": [ * "PortForwarding" * ] * }, * "session": { * "uuid": "d93f354c4339450e8c2a4c31de89da15" * } * } * } * @msg { * "org.zstack.header.network.service.APIAttachNetworkServiceToL3NetworkMsg": { * "l3NetworkUuid": "fba7bf08a590444c9e21eee394b61135", * "networkServices": { * "1d1d5ff248b24906a39f96aa3c6411dd": [ * "PortForwarding" * ] * }, * "session": { * "uuid": "d93f354c4339450e8c2a4c31de89da15" * }, * "timeout": 1800000, * "id": "ba6534c0256c4166b9742c40b201e956", * "serviceId": "api.portal" * } * } * @result see :ref:`APIAttachNetworkServiceToL3NetworkEvent` * @since 0.1.0 */ @Action(category = L3NetworkConstant.ACTION_CATEGORY) @RestRequest( path = "/l3-networks/{l3NetworkUuid}/network-services", method = HttpMethod.POST, responseClass = APIAttachNetworkServiceToL3NetworkEvent.class, parameterName = "params" ) public class APIAttachNetworkServiceToL3NetworkMsg extends APIMessage implements L3NetworkMessage { /** * @desc l3Network uuid */ @APIParam(resourceType = L3NetworkVO.class, checkAccount = true, operationTarget = true) private String l3NetworkUuid; /** * @desc a map where key is network service provider uuid and value is list of network service types */ @APIParam private Map<String, List<String>> networkServices; @Override public String getL3NetworkUuid() { return l3NetworkUuid; } public Map<String, List<String>> getNetworkServices() { return networkServices; } public void setNetworkServices(Map<String, List<String>> networkServices) { this.networkServices = networkServices; } public void setL3NetworkUuid(String l3NetworkUuid) { this.l3NetworkUuid = l3NetworkUuid; } public static APIAttachNetworkServiceToL3NetworkMsg __example__() { APIAttachNetworkServiceToL3NetworkMsg msg = new APIAttachNetworkServiceToL3NetworkMsg(); Map<String, List<String>> m = new HashMap<>(); m.put(uuid(), Arrays.asList("PortForwarding")); msg.setL3NetworkUuid(uuid()); msg.setNetworkServices(m); return msg; } public ApiNotification __notification__() { APIMessage that = this; return new ApiNotification() { @Override public void after(APIEvent evt) { List<String> services = new ArrayList<>(); for (List<String> lst : networkServices.values()) { services.addAll(lst); } ntfy("Attached network services[%s]", services) .resource(l3NetworkUuid, L3NetworkVO.class.getSimpleName()) .messageAndEvent(that, evt).done(); } }; } }