package org.zstack.header.network.service; import org.springframework.http.HttpMethod; import org.zstack.header.MapField; 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.*; /** * Created by frank on 1/4/2016. */ @Action(category = L3NetworkConstant.ACTION_CATEGORY) @RestRequest( path = "/l3-networks/{l3NetworkUuid}/network-services", method = HttpMethod.DELETE, parameterName = "params", responseClass = APIDetachNetworkServiceFromL3NetworkEvent.class ) public class APIDetachNetworkServiceFromL3NetworkMsg 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 @MapField(keyType = String.class, valueType = List.class) private Map<String, List<String>> networkServices; @Override public String getL3NetworkUuid() { return l3NetworkUuid; } public void setL3NetworkUuid(String l3NetworkUuid) { this.l3NetworkUuid = l3NetworkUuid; } public Map<String, List<String>> getNetworkServices() { return networkServices; } public void setNetworkServices(Map<String, List<String>> networkServices) { this.networkServices = networkServices; } public static APIDetachNetworkServiceFromL3NetworkMsg __example__() { APIDetachNetworkServiceFromL3NetworkMsg msg = new APIDetachNetworkServiceFromL3NetworkMsg(); Map<String, List<String>> m = new HashMap<>(); m.put(uuid(), Arrays.asList("PortForwarding","EIP")); 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("Detached network services[%s]", services) .resource(l3NetworkUuid, L3NetworkVO.class.getSimpleName()) .messageAndEvent(that, evt).done(); } }; } }