/*- * ============LICENSE_START======================================================= * ECOMP Policy Engine * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ============LICENSE_END========================================================= */ package org.openecomp.policy.controlloop.policy.guard.builder; import org.openecomp.policy.controlloop.policy.builder.BuilderException; import org.openecomp.policy.controlloop.policy.builder.Results; import org.openecomp.policy.controlloop.policy.guard.Constraint; import org.openecomp.policy.controlloop.policy.guard.ControlLoopGuard; import org.openecomp.policy.controlloop.policy.guard.Guard; import org.openecomp.policy.controlloop.policy.guard.GuardPolicy; import org.openecomp.policy.controlloop.policy.guard.builder.impl.ControlLoopGuardBuilderImpl; public interface ControlLoopGuardBuilder { /** * Adds one or more guard policies to the Control Loop Guard * * * @param policies * @return * @throws BuilderException */ public ControlLoopGuardBuilder addGuardPolicy(GuardPolicy... policies) throws BuilderException; /** * Removes one or more guard policies from the Control Loop Guard * * * @param policies * @return * @throws BuilderException */ public ControlLoopGuardBuilder removeGuardPolicy(GuardPolicy... policies) throws BuilderException; /** * Removes all guard policies from the Control Loop Guard * * * @param * @return * @throws BuilderException */ public ControlLoopGuardBuilder removeAllGuardPolicies() throws BuilderException; /** * Adds one or more time limit constraints to the guard policy * * * @param id (guard policy id) * @param constraints * @return * @throws BuilderException */ public ControlLoopGuardBuilder addLimitConstraint(String id, Constraint... constraints) throws BuilderException; /** * Removes one or more time limit constraints from the guard policy * * * @param id (guard policy id) * @param constraints * @return * @throws BuilderException */ public ControlLoopGuardBuilder removeLimitConstraint(String id, Constraint... constraints) throws BuilderException; /** * Removes all time limit constraints from the guard policy * * * @param id (guard policy id) * @return * @throws BuilderException */ public ControlLoopGuardBuilder removeAllLimitConstraints(String id) throws BuilderException; /** * Simply return a copy of control loop guard * * @return ControlLoopGuard */ public ControlLoopGuard getControlLoopGuard(); /** * This will compile and build the YAML specification for the Control Loop Guard. Please iterate the Results object for details. * The Results object will contains warnings and errors. If the specification compiled successfully, you will be able to retrieve the * YAML. * * @return Results */ public Results buildSpecification(); /** * The Factory is used to build a ControlLoopGuardBuilder implementation. * */ public static class Factory { /** * @param guard * @return ControlLoopGuardBuilder object * @throws BuilderException */ public static ControlLoopGuardBuilder buildControlLoopGuard (Guard guard) throws BuilderException { ControlLoopGuardBuilder builder = new ControlLoopGuardBuilderImpl(guard); return builder; } } }