Commit includes ControlLoopPolicy API and bugfixes
[policy/engine.git] / ECOMP-ControlloopPolicy / src / main / java / org / openecomp / policy / controlloop / policy / builder / impl / ControlLoopPolicyBuilderImpl.java
index be34a0a..523054d 100644 (file)
@@ -24,6 +24,8 @@ import java.util.LinkedList;
 import java.util.Map;
 import java.util.UUID;
 
+import org.openecomp.policy.asdc.Resource;
+import org.openecomp.policy.asdc.Service;
 import org.openecomp.policy.controlloop.compiler.CompilerException;
 import org.openecomp.policy.controlloop.compiler.ControlLoopCompiler;
 import org.openecomp.policy.controlloop.compiler.ControlLoopCompilerCallback;
@@ -48,9 +50,89 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder {
        
        public ControlLoopPolicyBuilderImpl(String controlLoopName, Integer timeout) throws BuilderException {
                policy = new ControlLoopPolicy();
-               policy.controlLoop = new ControlLoop();
-               policy.controlLoop.controlLoopName = controlLoopName;
-               policy.controlLoop.timeout = timeout;
+               ControlLoop controlLoop = new ControlLoop();
+               controlLoop.setControlLoopName(controlLoopName);
+               controlLoop.setTimeout(timeout);
+               policy.setControlLoop(controlLoop);
+       }
+       
+       public ControlLoopPolicyBuilderImpl(String controlLoopName, Integer timeout, Resource resource, Service... services) throws BuilderException {
+               this(controlLoopName, timeout);
+               this.addResource(resource);
+               this.addService(services);
+       }
+       
+       public ControlLoopPolicyBuilderImpl(String controlLoopName, Integer timeout, Service service, Resource[] resources) throws BuilderException {
+               this(controlLoopName, timeout);
+               this.addService(service);
+               this.addResource(resources);
+       }
+
+       @Override
+       public ControlLoopPolicyBuilder addService(Service... services) throws BuilderException {
+               if (services == null) {
+                       throw new BuilderException("Service must not be null");
+               }
+               for (Service service : services) {
+                       if (service.getServiceUUID() == null) {
+                               if (service.getServiceName() == null || service.getServiceName().length() < 1) {
+                                       throw new BuilderException("Invalid service - need either a serviceUUID or serviceName");
+                               }
+                               if(policy.getControlLoop().getServices()==null){
+                                       policy.getControlLoop().setServices(new LinkedList<>());
+                               }
+                               policy.getControlLoop().getServices().add(service);
+                       }
+               }
+               return this;
+       }
+       
+       @Override
+       public ControlLoopPolicyBuilder removeService(Service... services) throws BuilderException {
+               if (services == null) {
+            throw new BuilderException("Service must not be null");
+        }
+        if (policy.getControlLoop().getServices() == null) {
+            throw new BuilderException("No existing services to remove");
+        }
+        for (Service service : services) {
+            if (service.getServiceUUID() == null) {
+                if (service.getServiceName() == null || service.getServiceName().length() < 1) {
+                    throw new BuilderException("Invalid service - need either a serviceUUID or serviceName");
+                }
+            }
+            boolean removed = policy.getControlLoop().getServices().remove(service);
+            if (!removed) {
+                throw new BuilderException("Unknown service " + service.getServiceName());
+            }
+        }
+        return this;
+       }
+
+       @Override
+       public ControlLoopPolicyBuilder removeAllServices() throws BuilderException {
+               policy.getControlLoop().getServices().clear();
+        return this;
+       }
+
+       
+       @Override
+       public ControlLoopPolicyBuilder addResource(Resource... resources) throws BuilderException {
+               if (resources == null) {
+                       throw new BuilderException("resources must not be null");
+               }
+               for (Resource resource : resources) {
+                       if (resource.getResourceUUID() == null) {
+                               if (resource.getResourceName() == null || resource.getResourceName().length() <= 0) {
+                                       throw new BuilderException("Invalid resource - need either resourceUUID or resourceName");
+                               }
+                       }
+                       if(policy.getControlLoop().getResources()==null){
+                               policy.getControlLoop().setResources(new LinkedList<>());
+                       }
+                       policy.getControlLoop().getResources().add(resource);
+               }
+               return this;
        }
        
        @Override
@@ -58,13 +140,13 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder {
                if (abatement == null) {
                        throw new BuilderException("abatement must not be null");
                }
-               policy.controlLoop.abatement = abatement;
+               policy.getControlLoop().setAbatement(abatement);
                return this;
        }
        
        @Override
        public ControlLoopPolicyBuilder setTimeout(Integer timeout) {
-               policy.controlLoop.timeout = timeout;
+               policy.getControlLoop().setTimeout(timeout);
                return this;
        }
        
@@ -74,7 +156,7 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder {
                
                Policy trigger = new Policy(UUID.randomUUID().toString(), name, description, actor, payload, target, recipe, retries, timeout);
                
-               policy.controlLoop.trigger_policy = trigger.id;
+               policy.getControlLoop().setTrigger_policy(trigger.getId());
                
                this.addNewPolicy(trigger);
                //
@@ -103,22 +185,22 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder {
                for (PolicyResult result : results) {
                        switch (result) {
                        case FAILURE:
-                               existingPolicy.failure = newPolicy.id;
+                               existingPolicy.setFailure(newPolicy.getId());
                                break;
                        case FAILURE_EXCEPTION:
-                               existingPolicy.failure_exception = newPolicy.id;
+                               existingPolicy.setFailure_exception(newPolicy.getId());
                                break;
                        case FAILURE_RETRIES:
-                               existingPolicy.failure_retries = newPolicy.id;
+                               existingPolicy.setFailure_retries(newPolicy.getId());
                                break;
                        case FAILURE_TIMEOUT:
-                               existingPolicy.failure_timeout = newPolicy.id;
+                               existingPolicy.setFailure_timeout(newPolicy.getId());
                                break;
                        case FAILURE_GUARD:
-                               existingPolicy.failure_guard = newPolicy.id;
+                               existingPolicy.setFailure_guard(newPolicy.getId());
                                break;
                        case SUCCESS:
-                               existingPolicy.success = newPolicy.id;
+                               existingPolicy.setSuccess(newPolicy.getId());
                                break;
                        default:
                                throw new BuilderException("Invalid PolicyResult " + result);
@@ -127,7 +209,7 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder {
                //
                // Add it to our list
                //
-               this.policy.policies.add(newPolicy);
+               this.policy.getPolicies().add(newPolicy);
                //
                // Return a policy to them
                //
@@ -136,7 +218,7 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder {
        
        private class BuilderCompilerCallback implements ControlLoopCompilerCallback {
 
-               public ResultsImpl results = new ResultsImpl();
+               private ResultsImpl results = new ResultsImpl();
                
                @Override
                public boolean onWarning(String message) {
@@ -181,26 +263,54 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder {
        }
 
        private void addNewPolicy(Policy policy) {
-               if (this.policy.policies == null) {
-                       this.policy.policies = new LinkedList<Policy>();
+               if (this.policy.getPolicies() == null) {
+                       this.policy.setPolicies(new LinkedList<>());
                }
-               this.policy.policies.add(policy);
+               this.policy.getPolicies().add(policy);
        }
        
        private Policy findPolicy(String id) {
-               for (Policy policy : this.policy.policies) {
-                       if (policy.id.equals(id)) {
+               for (Policy policy : this.policy.getPolicies()) {
+                       if (policy.getId().equals(id)) {
                                return policy;
                        }
                }
                return null;
        }
 
+       @Override
+       public ControlLoopPolicyBuilder removeResource(Resource... resources) throws BuilderException {
+           if (resources == null) {
+            throw new BuilderException("Resource must not be null");
+        }
+        if (policy.getControlLoop().getResources() == null) {
+            throw new BuilderException("No existing resources to remove");
+        }
+        for (Resource resource : resources) {
+            if (resource.getResourceUUID() == null) {
+                if (resource.getResourceName() == null || resource.getResourceName().length() < 1) {
+                    throw new BuilderException("Invalid resource - need either a resourceUUID or resourceName");
+                }
+            }
+            boolean removed = policy.getControlLoop().getResources().remove(resource); 
+            if (!removed) {
+                throw new BuilderException("Unknown resource " + resource.getResourceName());
+            }
+        }
+        return this; 
+    }
+
+       @Override
+       public ControlLoopPolicyBuilder removeAllResources() throws BuilderException {
+           policy.getControlLoop().getResources().clear();
+        return this;
+    }
+
        @Override
        public Integer calculateTimeout() {
                int sum = 0;
-        for (Policy policy : this.policy.policies) {
-            sum += policy.timeout.intValue();
+        for (Policy policy : this.policy.getPolicies()) {
+            sum += policy.getTimeout().intValue();
         }
         return new Integer(sum);
        }
@@ -215,14 +325,14 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder {
             throw new BuilderException("Unknown policy " + id);
         }
         else {
-            this.policy.controlLoop.trigger_policy = id;
+            this.policy.getControlLoop().setTrigger_policy(id);
         }
-        return new ControlLoop(this.policy.controlLoop);
+        return new ControlLoop(this.policy.getControlLoop());
     }
 
        @Override
        public boolean isOpenLoop() {
-        if (this.policy.controlLoop.trigger_policy.equals(FinalResult.FINAL_OPENLOOP.toString())) {
+        if (this.policy.getControlLoop().getTrigger_policy().equals(FinalResult.FINAL_OPENLOOP.toString())) {
             return true;
         }      
         else {
@@ -232,18 +342,18 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder {
 
        @Override
        public Policy getTriggerPolicy() throws BuilderException {
-           if (this.policy.controlLoop.trigger_policy.equals(FinalResult.FINAL_OPENLOOP.toString())) {
+           if (this.policy.getControlLoop().getTrigger_policy().equals(FinalResult.FINAL_OPENLOOP.toString())) {
             return null;
         }
         else {
-            Policy trigger = new Policy(this.findPolicy(this.policy.controlLoop.trigger_policy));
+            Policy trigger = new Policy(this.findPolicy(this.policy.getControlLoop().getTrigger_policy()));
             return trigger;
         }
     }
 
        @Override
        public ControlLoop getControlLoop() {
-               ControlLoop loop = new ControlLoop(this.policy.controlLoop);
+               ControlLoop loop = new ControlLoop(this.policy.getControlLoop());
                return loop;
        }
 
@@ -266,22 +376,22 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder {
         for (PolicyResult result : results) {
             switch (result) {
             case FAILURE:
-                existingPolicy.failure = policyResultID;
+                existingPolicy.setFailure(policyResultID);
                 break;
             case FAILURE_EXCEPTION:
-                existingPolicy.failure_exception = policyResultID;
+                existingPolicy.setFailure_exception(policyResultID);
                 break;
             case FAILURE_RETRIES:
-               existingPolicy.failure_retries = policyResultID;
+               existingPolicy.setFailure_retries(policyResultID);
                break;
             case FAILURE_TIMEOUT:
-               existingPolicy.failure_timeout = policyResultID;
+               existingPolicy.setFailure_timeout(policyResultID);
                break;
             case FAILURE_GUARD:
-               existingPolicy.failure_guard = policyResultID;
+               existingPolicy.setFailure_guard(policyResultID);
                break;
             case SUCCESS:
-               existingPolicy.success = policyResultID;
+               existingPolicy.setSuccess(policyResultID);
                break;
             default:
                throw new BuilderException("Invalid PolicyResult " + result);
@@ -299,40 +409,40 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder {
         //
         // Check if the policy to remove is trigger_policy
         //
-        if (this.policy.controlLoop.trigger_policy.equals(policyID)) {
-            this.policy.controlLoop.trigger_policy = FinalResult.FINAL_OPENLOOP.toString();
+        if (this.policy.getControlLoop().getTrigger_policy().equals(policyID)) {
+            this.policy.getControlLoop().setTrigger_policy(FinalResult.FINAL_OPENLOOP.toString());
         }
         else {
             //
             // Update policies
             //
-            for (Policy policy : this.policy.policies) {
-                int index = this.policy.policies.indexOf(policy);
-                if (policy.success.equals(policyID)) {
-                    policy.success = FinalResult.FINAL_SUCCESS.toString();
+            for (Policy policy : this.policy.getPolicies()) {
+                int index = this.policy.getPolicies().indexOf(policy);
+                if (policy.getSuccess().equals(policyID)) {
+                    policy.setSuccess(FinalResult.FINAL_SUCCESS.toString());
                 }
-                if (policy.failure.equals(policyID)) {
-                    policy.failure = FinalResult.FINAL_FAILURE.toString();
+                if (policy.getFailure().equals(policyID)) {
+                    policy.setFailure(FinalResult.FINAL_FAILURE.toString());
                 }
-                if (policy.failure_retries.equals(policyID)) {
-                    policy.failure_retries = FinalResult.FINAL_FAILURE_RETRIES.toString();
+                if (policy.getFailure_retries().equals(policyID)) {
+                    policy.setFailure_retries(FinalResult.FINAL_FAILURE_RETRIES.toString());
                 }
-                if (policy.failure_timeout.equals(policyID)) {
-                    policy.failure_timeout = FinalResult.FINAL_FAILURE_TIMEOUT.toString();
+                if (policy.getFailure_timeout().equals(policyID)) {
+                    policy.setFailure_timeout(FinalResult.FINAL_FAILURE_TIMEOUT.toString());
                 }
-                if (policy.failure_exception.equals(policyID)) {
-                    policy.failure_exception = FinalResult.FINAL_FAILURE_EXCEPTION.toString();
+                if (policy.getFailure_exception().equals(policyID)) {
+                    policy.setFailure_exception(FinalResult.FINAL_FAILURE_EXCEPTION.toString());
                 }
-                if (policy.failure_guard.equals(policyID)) {
-                    policy.failure_guard = FinalResult.FINAL_FAILURE_GUARD.toString();
+                if (policy.getFailure_guard().equals(policyID)) {
+                    policy.setFailure_guard(FinalResult.FINAL_FAILURE_GUARD.toString());
                 }
-                this.policy.policies.set(index, policy);
+                this.policy.getPolicies().set(index, policy);
             }
         }
         //
         // remove the policy
         //
-        boolean removed = this.policy.policies.remove(existingPolicy);
+        boolean removed = this.policy.getPolicies().remove(existingPolicy);
         return removed;
        }
 
@@ -345,12 +455,12 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder {
         //
         // reset policy results
         //
-        existingPolicy.success = FinalResult.FINAL_SUCCESS.toString();
-        existingPolicy.failure = FinalResult.FINAL_FAILURE.toString();
-        existingPolicy.failure_retries = FinalResult.FINAL_FAILURE_RETRIES.toString();
-        existingPolicy.failure_timeout = FinalResult.FINAL_FAILURE_TIMEOUT.toString();
-        existingPolicy.failure_exception = FinalResult.FINAL_FAILURE_EXCEPTION.toString();
-        existingPolicy.failure_guard = FinalResult.FINAL_FAILURE_GUARD.toString();
+        existingPolicy.setSuccess(FinalResult.FINAL_SUCCESS.toString());
+        existingPolicy.setFailure(FinalResult.FINAL_FAILURE.toString());
+        existingPolicy.setFailure_retries(FinalResult.FINAL_FAILURE_RETRIES.toString());
+        existingPolicy.setFailure_timeout(FinalResult.FINAL_FAILURE_TIMEOUT.toString());
+        existingPolicy.setFailure_exception(FinalResult.FINAL_FAILURE_EXCEPTION.toString());
+        existingPolicy.setFailure_guard(FinalResult.FINAL_FAILURE_GUARD.toString());
         return new Policy(existingPolicy);
        }
 
@@ -359,11 +469,11 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder {
                //
         // Remove all existing operational policies
         //
-        this.policy.policies.clear();
+        this.policy.getPolicies().clear();
         //
         // Revert controlLoop back to an open loop
         //
-        this.policy.controlLoop.trigger_policy = FinalResult.FINAL_OPENLOOP.toString();
+        this.policy.getControlLoop().setTrigger_policy(FinalResult.FINAL_OPENLOOP.toString());
         return this;
        }
        
@@ -376,7 +486,7 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder {
         //
         // Add operationsAccumulateParams to existingPolicy
         //
-        existingPolicy.operationsAccumulateParams = operationsAccumulateParams;
+        existingPolicy.setOperationsAccumulateParams(operationsAccumulateParams);
         return new Policy(existingPolicy);
        }