Commit a019f0bd authored by Kostis Trantzas's avatar Kostis Trantzas
Browse files

Merge branch 'issue_59' into 'develop'

MR to fix #59

See merge request !51
parents a198269e 08be501f
Loading
Loading
Loading
Loading
Loading
+59 −83
Original line number Diff line number Diff line
@@ -286,6 +286,7 @@ public class ServiceRepoService {
	}
	

    @Transactional
	public Service addService(@Valid ServiceCreate service) {
		logger.info("Will add service: " + service.getName() );
		Service s = new Service();
@@ -335,10 +336,11 @@ public class ServiceRepoService {
		
		Note noteItem = new Note();
		noteItem.setText("Service " + s.getState() );
		noteItem.setAuthor("API");
		noteItem.setAuthor("SIM-638");
		noteItem.setDate(OffsetDateTime.now(ZoneOffset.UTC) );
		s.addNoteItem(noteItem);		
		
        
        s = this.serviceRepo.save( s );

		raiseServiceCreateNotification(s);
@@ -353,22 +355,7 @@ public class ServiceRepoService {
				.orElse(null);
	}

	/**
	 * @param id
	 * @param servUpd
	 * @param triggerServiceActionQueue
	 * @param updatedFromParentService
	 * @param updatedFromChildService
	 * @return
	 */
	/**
	 * @param id
	 * @param servUpd
	 * @param triggerServiceActionQueue
	 * @param updatedFromParentService
	 * @param updatedFromChildService
	 * @return
	 */

	/**
	 * @param id
	 * @param servUpd
@@ -379,6 +366,9 @@ public class ServiceRepoService {
	 */
	@Transactional
	public Service updateService(String id, @Valid ServiceUpdate servUpd, boolean triggerServiceActionQueue, Service updatedFromParentService, Service updatedFromChildService ) {
	  

      logger.debug("================> Will updateService = " + id );        
		//Service service = this.findByUuid(id);
		Service service = this.getServiceEager(id);

@@ -388,6 +378,9 @@ public class ServiceRepoService {
			return null;
		}
		

	      
	      
		logger.info("Will update service: " + service.getName() );
		//logger.info("Will update service details: " + s.toString() );
		
@@ -401,6 +394,7 @@ public class ServiceRepoService {
		}
		
		
       		
		if (servUpd.getType()!=null) {
			service.setType(servUpd.getType());			
		}
@@ -541,6 +535,8 @@ public class ServiceRepoService {

					} else {
						service.addServiceCharacteristicItem(n);

			              
						if ( !n.getName().contains("::") ) { //it is not a child characteristic
	                        serviceCharacteristicChanged = true;    
	                        charChangedForNotes += n.getName() + ", "; 						  
@@ -585,9 +581,10 @@ public class ServiceRepoService {
		if (stateChanged) {
			Note noteItem = new Note();
			noteItem.setText("Service is " + service.getState() );
			noteItem.setAuthor("API");
			noteItem.setAuthor("SIM-638");
			noteItem.setDate(OffsetDateTime.now(ZoneOffset.UTC) );
			service.addNoteItem(noteItem);		
	        logger.debug("=============SERVICE STATE ================================>  " + service.getState() );
		}
		
		
@@ -635,9 +632,9 @@ public class ServiceRepoService {
		}

		
		
		service = this.serviceRepo.save( service );
		
 		
	    String requestedServiceAsJson = null;
	    try {
	      requestedServiceAsJson = mapper.writeValueAsString( service );
@@ -650,40 +647,28 @@ public class ServiceRepoService {
		 * Save in ServiceActionQueueItem
		 */
		
		if (triggerServiceActionQueue && stateChanged) {
	    Boolean childServiceCharacteristicChanged = false;
	    
	    if  ( stateChanged  ) {
          ServiceActionQueueItem saqi = new ServiceActionQueueItem();
          saqi.setServiceRefId( id );
          saqi.setOriginalServiceInJSON( originaServiceAsJson );
		  if (stateChanged) {
              		  
          if ( service.getState().equals(  ServiceStateType.INACTIVE) ) {
            saqi.setAction( ServiceActionQueueAction.DEACTIVATE );		
          }else if ( service.getState().equals(  ServiceStateType.TERMINATED) ) {
    		saqi.setAction( ServiceActionQueueAction.TERMINATE );		
		    }

		  }

		  if ( saqi.getAction() != ServiceActionQueueAction.NONE  ) {
		    this.addServiceActionQueueItem(service, saqi);					
		  }
		}		

		
//		//here on any state change of a Service we must send an ActionQueueItem that reflects the state changed with the Action  
		if  ( stateChanged  ) {
			ServiceActionQueueItem saqi = new ServiceActionQueueItem();
			saqi.setServiceRefId( id );
			saqi.setOriginalServiceInJSON( originaServiceAsJson );		
			if ( service.getState().equals(  ServiceStateType.ACTIVE) ) {
          }else if ( service.getState().equals(  ServiceStateType.ACTIVE) ) {
			saqi.setAction( ServiceActionQueueAction.EVALUATE_STATE_CHANGE_TOACTIVE  );	
				this.addServiceActionQueueItem(service, saqi);			
          }else if ( previousState!=null && previousState.equals( ServiceStateType.ACTIVE) ) {
			saqi.setAction( ServiceActionQueueAction.EVALUATE_STATE_CHANGE_TOINACTIVE  );
				this.addServiceActionQueueItem(service, saqi);
			}
          }
			
		if ( serviceCharacteristicChanged &&  service.getState().equals(  ServiceStateType.ACTIVE) &&  previousState!=null && previousState.equals( ServiceStateType.ACTIVE) && triggerServiceActionQueue ) {
          if ( saqi.getAction() != ServiceActionQueueAction.NONE  ) {
            logger.debug("==========addServiceActionQueueItem==============> saqi.getAction() = " + saqi.getAction() );
            this.addServiceActionQueueItem(service, saqi);                    
          }
		} else if ( serviceCharacteristicChanged &&  service.getState().equals(  ServiceStateType.ACTIVE) &&  previousState!=null && previousState.equals( ServiceStateType.ACTIVE) && triggerServiceActionQueue ) {
			ServiceActionQueueItem saqi = new ServiceActionQueueItem();
			saqi.setServiceRefId( id );
			saqi.setOriginalServiceInJSON( originaServiceAsJson );		
@@ -691,7 +676,9 @@ public class ServiceRepoService {
			if ( serviceCharacteristicChangedContainsPrimitive ) {
				saqi.setAction( ServiceActionQueueAction.EVALUATE_CHARACTERISTIC_CHANGED_MANODAY2  );					
			}
            logger.debug("==========addServiceActionQueueItem==============>  serviceCharacteristicChanged &&  service.getState().eq charChangedForNotes= "  + charChangedForNotes);
			this.addServiceActionQueueItem(service, saqi);
			childServiceCharacteristicChanged = true;
		}
		
		
@@ -706,8 +693,7 @@ public class ServiceRepoService {
          if (serviceRelationship.getRelationshipType().equals("ChildService") ) {
            if (serviceRelationship.getService() != null) {
              

              if (serviceCharacteristicChanged) {
              if (stateChanged || childServiceCharacteristicChanged) {
                if (updatedFromParentService == null || (updatedFromParentService != null && !updatedFromParentService.getId().equals(serviceRelationship.getService().getId()))) { // avoid circular
                  ServiceActionQueueItem saqi = new ServiceActionQueueItem(); // this will trigger lcm rule to parent
                  saqi.setServiceRefId(serviceRelationship.getService().getId());
@@ -716,28 +702,16 @@ public class ServiceRepoService {
                  } catch (JsonProcessingException e) {
                    e.printStackTrace();
                  }
                  saqi.setAction(ServiceActionQueueAction.EVALUATE_CHILD_CHARACTERISTIC_CHANGED);
                  this.addServiceActionQueueItem(service, saqi);
                }

              }
              
                  if (stateChanged) {
                if (updatedFromParentService == null || (updatedFromParentService != null && !updatedFromParentService.getId().equals(serviceRelationship.getService().getId()))) { // avoid circular
                  ServiceActionQueueItem saqi = new ServiceActionQueueItem(); // this will trigger lcm rule to parent
                  saqi.setServiceRefId(serviceRelationship.getService().getId());
                  try {
                    saqi.setOriginalServiceInJSON( mapper.writeValueAsString( service ) ); //pass the child service as is
                  } catch (JsonProcessingException e) {
                    e.printStackTrace();
                  }
                    saqi.setAction(ServiceActionQueueAction.EVALUATE_CHILD_STATE_CHANGE );
                    logger.debug("==========addServiceActionQueueItem==============>  EVALUATE_CHILD_STATE_CHANGE "  + charChangedForNotes);
                  } else if ( childServiceCharacteristicChanged)  {
                    saqi.setAction(ServiceActionQueueAction.EVALUATE_CHILD_CHARACTERISTIC_CHANGED);
                    logger.debug("==========addServiceActionQueueItem==============>  EVALUATE_CHILD_CHARACTERISTIC_CHANGED "  + charChangedForNotes);
                  }
                  this.addServiceActionQueueItem(service, saqi);
                }
              }



            }
          }
        }	
@@ -805,7 +779,6 @@ public class ServiceRepoService {
//				// TODO Auto-generated catch block
//				e.printStackTrace();
//			}		
			logger.info("======================================================================================================");			
		}
		
		return service;
@@ -921,10 +894,10 @@ public class ServiceRepoService {

		if ( schart!= null ) {
			String teest = schart.getValue().getValue();
			logger.info("schart size = " + teest.length() );
			logger.debug("schart size = " + teest.length() );
			
			logger.info("schart " + teest );
			logger.info("======================================================================================================");			
			logger.debug("schart " + teest );
			logger.debug("======================================================================================================");			
		}
		
		return res;
@@ -1011,6 +984,9 @@ public class ServiceRepoService {
		    //find any similar action inqueue and delete them, so to keep this one as the most recent
	        List<ServiceActionQueueItem> result = this.serviceActionQueueRepo.findByServiceRefIdAndAction(item.getServiceRefId(), item.getAction());
	        logger.debug("Will add ServiceActionQueueItem ServiceRefId result: " +result.size() );
	        if (result.size()>0) { //essentially it will not delete any requests, but just return with not adding the new action since it is already exists
	          return item;
	        }
	        this.serviceActionQueueRepo.deleteByServiceRefIdAndAction(item.getServiceRefId(), item.getAction());
	          
		}
+1 −1
Original line number Diff line number Diff line
@@ -327,7 +327,7 @@ public class ServiceInventoryIntegrationTest {
		assertThat( responseSOUpd.getServiceCharacteristicByName( "DeploymentRequestID" ).getValue().getValue()  ).isEqualTo( "1007" )  ;
		
		 
		assertThat( serviceRepoService.findAllServiceActionQueueItems().size() ).isEqualTo( 3 );		
		assertThat( serviceRepoService.findAllServiceActionQueueItems().size() ).isEqualTo( 2 );		
		assertThat( serviceRepoService.findAllServiceActionQueueItems().get(0).getAction() ).isEqualTo(ServiceActionQueueAction.EVALUATE_STATE_CHANGE_TOACTIVE   );
		
	}
+1 −0
Original line number Diff line number Diff line
@@ -310,6 +310,7 @@ public class ServiceOrderIntegrationTest {
		serviceOrderref.setId(responseSO.getId());
		serviceOrderref.setServiceOrderItemId((new ArrayList<>(responseSO.getOrderItem())).get(0).getId());
		s.addServiceOrderItem(serviceOrderref);
		s.setServiceCharacteristic( new ArrayList<>());

		Service createdServ = serviceRepoService.addService(s);

+47 −0
Original line number Diff line number Diff line
@@ -297,10 +297,19 @@ public class ServiceRepoServiceTest {
        assertThat( updatedService.getServiceCharacteristic().size()  ).isEqualTo( 7 );
        assertThat( updatedService.getSupportingResource().size()  ).isEqualTo( 1);
        

        assertThat( updatedService.getServiceCharacteristicByName("NSLCM").getValue().getValue()   ).isEqualTo( "nslcm_test" );

        ResourceUpdate resourceUpdate = new ResourceUpdate();


        
        org.etsi.osl.tmf.ri639.model.Characteristic resCharacteristicItem = new org.etsi.osl.tmf.ri639.model.Characteristic();

        resCharacteristicItem.setName( "NSLCM" );
        resCharacteristicItem.setValue( new Any("nslcm_test2"));
        resourceUpdate.addResourceCharacteristicItem(resCharacteristicItem);
        
        resCharacteristicItem.setName( "newChar" );
        resCharacteristicItem.setValue( new Any("myval0"));
        resourceUpdate.addResourceCharacteristicItem(resCharacteristicItem);
@@ -458,6 +467,44 @@ public class ServiceRepoServiceTest {
        return response;
    }

    @Test
    public void testFindNextStateBasedOnSupportingResources() throws Exception {
      Service s = new Service();
      s.setState(ServiceStateType.RESERVED);      
      List<Resource> rlist = new ArrayList<Resource>();
      Resource r1 = new Resource();
      Resource r2 = new Resource();
      r1.setResourceStatus(ResourceStatusType.RESERVED);
      r2.setResourceStatus(ResourceStatusType.RESERVED);
      rlist.add(r1);
      rlist.add(r2);
      ServiceStateType nstate = s.findNextStateBasedOnResourceList(rlist);
      assertThat(nstate).isEqualTo( ServiceStateType.RESERVED );

      r1.setResourceStatus(ResourceStatusType.AVAILABLE);
      nstate = s.findNextStateBasedOnResourceList(rlist);
      assertThat(nstate).isEqualTo( ServiceStateType.RESERVED );      

      r2.setResourceStatus(ResourceStatusType.AVAILABLE);
      nstate = s.findNextStateBasedOnResourceList(rlist);
      assertThat(nstate).isEqualTo( ServiceStateType.ACTIVE );

      s.setState( ServiceStateType.ACTIVE ); 
      r1.setResourceStatus(ResourceStatusType.UNKNOWN);
      nstate = s.findNextStateBasedOnResourceList(rlist);
      assertThat(nstate).isEqualTo( ServiceStateType.ACTIVE );  

      r1.setResourceStatus(ResourceStatusType.SUSPENDED);
      nstate = s.findNextStateBasedOnResourceList(rlist);
      assertThat(nstate).isEqualTo( ServiceStateType.TERMINATED );    

      s.setState( ServiceStateType.TERMINATED ); 
      r1.setResourceStatus(ResourceStatusType.AVAILABLE);
      nstate = s.findNextStateBasedOnResourceList(rlist);
      assertThat(nstate).isEqualTo( ServiceStateType.TERMINATED );
      
      
    }

    private ServiceSpecification createServiceSpec(String sspectext, ServiceSpecificationCreate sspeccr1) throws Exception{
        String response = mvc.perform(MockMvcRequestBuilders.post("/serviceCatalogManagement/v4/serviceSpecification")