/* * Copyright (c) 2015 Huawei, Inc and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.nic.nemo.rpc; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutionException; import org.opendaylight.nic.nemo.renderer.NEMORenderer; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ConnectionId; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.OperationId; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.CommonRpcResult; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.NemoIntentService; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.StructureStyleNemoDeleteInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.StructureStyleNemoDeleteInputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.structure.style.nemo.delete.input.ObjectsBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.structure.style.nemo.delete.input.OperationsBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User; import org.opendaylight.yangtools.yang.common.RpcResult; /** * @author gwu * */ public class NemoDelete implements NemoRpc { public NemoDelete() { } /** * This will prepare the input builder to delete all NEMO connections and operations with a "nic-" prefix in their * names * * @param user * @return */ public static StructureStyleNemoDeleteInput buildInput(final User user) { final StructureStyleNemoDeleteInputBuilder builder = new StructureStyleNemoDeleteInputBuilder(); // delete connections with a "nic-" prefix in the name if (user.getObjects() != null && user.getObjects().getConnection() != null) { List<ConnectionId> connections = new ArrayList<>(); for (Connection connection : user.getObjects().getConnection()) { if (connection.getConnectionName().getValue().startsWith(NEMORenderer.NIC_PREFIX)) { connections.add(connection.getConnectionId()); } } builder.setObjects(new ObjectsBuilder().setConnection(connections).build()); } // delete operations with a "nic-" prefix in the name if (user.getOperations() != null && user.getOperations().getOperation() != null) { List<OperationId> operations = new ArrayList<>(); for (Operation operation : user.getOperations().getOperation()) { if (operation.getOperationName().getValue().startsWith(NEMORenderer.NIC_PREFIX)) { operations.add(operation.getOperationId()); } } builder.setOperations(new OperationsBuilder().setOperation(operations).build()); } return builder.setUserId(user.getUserId()).build(); } @Override public RpcResult<? extends CommonRpcResult> apply(NemoIntentService nemoEngine, User user) throws InterruptedException, ExecutionException { StructureStyleNemoDeleteInput deleteInput = buildInput(user); return nemoEngine.structureStyleNemoDelete(deleteInput).get(); } @Override public boolean isInputValid() { return true; } }