Skip to content
Snippets Groups Projects
Commit 0f36ed91 authored by tranoris's avatar tranoris
Browse files

Merge branch...

Merge branch '14-modify-the-way-the-status-of-a-service-in-inventory-is-determined-when-a-supporting-resource' into 'develop'

Resolve "Modify the way the status of a Service in inventory is determined when a supporting resource changes status"

See merge request !9
parents d303f614 de756fbd
No related branches found
No related tags found
2 merge requests!36Merging 2024Q2_RC into main, creating 2024Q2 Release,!9Resolve "Modify the way the status of a Service in inventory is determined when a supporting resource changes status"
Pipeline #4123 failed
...@@ -92,7 +92,7 @@ public class ResourceApiRouteBuilder extends RouteBuilder { ...@@ -92,7 +92,7 @@ public class ResourceApiRouteBuilder extends RouteBuilder {
.log(LoggingLevel.INFO, log, CATALOG_UPD_RESOURCE + " message received!") .log(LoggingLevel.INFO, log, CATALOG_UPD_RESOURCE + " message received!")
.to("log:DEBUG?showBody=true&showHeaders=true") .to("log:DEBUG?showBody=true&showHeaders=true")
.unmarshal().json( JsonLibrary.Jackson, ResourceUpdate.class, true) .unmarshal().json( JsonLibrary.Jackson, ResourceUpdate.class, true)
.bean( resourceRepoService, "updateResource(${header.resourceId}, ${body}, ${header.propagateToSO} )") .bean( resourceRepoService, "updateResource(${header.resourceId}, ${body}, ${header.triggerServiceActionQueue} )")
.marshal().json( JsonLibrary.Jackson) .marshal().json( JsonLibrary.Jackson)
.convertBodyTo( String.class ); .convertBodyTo( String.class );
......
...@@ -23,6 +23,7 @@ import java.io.UnsupportedEncodingException; ...@@ -23,6 +23,7 @@ import java.io.UnsupportedEncodingException;
import java.time.OffsetDateTime; import java.time.OffsetDateTime;
import java.time.ZoneOffset; import java.time.ZoneOffset;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -46,6 +47,7 @@ import org.etsi.osl.tmf.ri639.model.Resource; ...@@ -46,6 +47,7 @@ import org.etsi.osl.tmf.ri639.model.Resource;
import org.etsi.osl.tmf.ri639.model.ResourceAttributeValueChangeNotification; import org.etsi.osl.tmf.ri639.model.ResourceAttributeValueChangeNotification;
import org.etsi.osl.tmf.ri639.model.ResourceCreateNotification; import org.etsi.osl.tmf.ri639.model.ResourceCreateNotification;
import org.etsi.osl.tmf.ri639.model.ResourceStateChangeNotification; import org.etsi.osl.tmf.ri639.model.ResourceStateChangeNotification;
import org.etsi.osl.tmf.ri639.repo.ResourceRepository;
import org.etsi.osl.tmf.scm633.reposervices.ServiceSpecificationRepoService; import org.etsi.osl.tmf.scm633.reposervices.ServiceSpecificationRepoService;
import org.etsi.osl.tmf.sim638.api.ServiceApiRouteBuilderEvents; import org.etsi.osl.tmf.sim638.api.ServiceApiRouteBuilderEvents;
import org.etsi.osl.tmf.sim638.model.Service; import org.etsi.osl.tmf.sim638.model.Service;
...@@ -88,6 +90,10 @@ public class ServiceRepoService { ...@@ -88,6 +90,10 @@ public class ServiceRepoService {
@Autowired @Autowired
ServiceRepository serviceRepo; ServiceRepository serviceRepo;
@Autowired
ResourceRepository resourceRepo;
@Autowired @Autowired
ServiceActionQueueRepository serviceActionQueueRepo; ServiceActionQueueRepository serviceActionQueueRepo;
...@@ -1005,126 +1011,59 @@ public class ServiceRepoService { ...@@ -1005,126 +1011,59 @@ public class ServiceRepoService {
@Transactional @Transactional
public void resourceCreatedEvent(@Valid ResourceCreateNotification resNotif) { public void resourceCreatedEvent(@Valid ResourceCreateNotification resNotif) {
logger.debug("resourceCreatedEvent"); logger.debug("resourceCreatedEvent");
Resource res = resNotif.getEvent().getEvent().getResource(); Resource res = resNotif.getEvent().getEvent().getResource();
logger.info("Will update services related to this resource with id = " + res.getId() ); updateServiceFromresourceChange(res);
var aservices = findServicesHavingThisSupportingResourceID( res.getId() );
for (Service as : aservices) {
ServiceUpdate supd = new ServiceUpdate();
Service aService = findByUuid(as.getId());
//if ( aService.getState().equals( ServiceStateType.ACTIVE ) ) {
if ( res.getResourceStatus() != null ) {
switch (res.getResourceStatus()) {
case STANDBY: {
supd.setState( ServiceStateType.RESERVED);
break;
}
case SUSPENDED: {
supd.setState( ServiceStateType.INACTIVE);
break;
}
case RESERVED: {
supd.setState( ServiceStateType.RESERVED);
break;
}
case UNKNOWN: {
if (aService.getState().equals( ServiceStateType.ACTIVE )) {
supd.setState( ServiceStateType.TERMINATED);
}
break;
}
case ALARM: {
supd.setState( ServiceStateType.INACTIVE);
break;
}
default:
break;
}
}
Note n = new Note();
n.setText("Supporting Resource "+ res.getId() + " State Changed with status: " + res.getResourceStatus());
n.setAuthor( "SIM638-API" );
n.setDate( OffsetDateTime.now(ZoneOffset.UTC).toString() );
supd.addNoteItem( n );
this.updateService( aService.getId(), supd , true, null, null); //update the service
//} //if ( aService.getState().equals( ServiceStateType.ACTIVE ) ) {
}
updateResourceFromKubernetesLabel( res );
} }
@Transactional @Transactional
public void resourceStateChangedEvent(@Valid ResourceStateChangeNotification resNotif) { public void resourceStateChangedEvent(@Valid ResourceStateChangeNotification resNotif) {
logger.debug("resourceStateChangedEvent"); logger.debug("resourceStateChangedEvent");
Resource res = resNotif.getEvent().getEvent().getResource(); Resource res = resNotif.getEvent().getEvent().getResource();
logger.info("Will update services related to this resource with id = " + res.getId() ); updateServiceFromresourceChange(res);
}
var aservices = findServicesHavingThisSupportingResourceID( res.getId() );
private void updateServiceFromresourceChange(Resource res) {
logger.info("Will update services related to this resource with id = " + res.getId() );
var aservices = findServicesHavingThisSupportingResourceID(res.getId());
for (Service as : aservices) { for (Service as : aservices) {
Service aService = findByUuid(as.getId());
List<Resource> rlist = new ArrayList<Resource>();
for (ResourceRef rref : aService.getSupportingResource()) {
Optional<Resource> result = resourceRepo.findByUuid(rref.getId());
if (result.isPresent()) {
rlist.add( result.get() );
}
}
rlist.add(res); //add also this one
ServiceStateType nextState = aService.findNextStateBasedOnSupportingResources(rlist);
ServiceUpdate supd = new ServiceUpdate(); ServiceUpdate supd = new ServiceUpdate();
supd.setState(nextState);
Service aService = findByUuid(as.getId()); Note n = new Note();
n.setText("Supporting Resource " + res.getId() + " State Changed with status: "
//if ( aService.getState().equals( ServiceStateType.ACTIVE ) ) { + res.getResourceStatus() + ".Next state is " + nextState);
if ( res.getResourceStatus() != null ) { n.setAuthor("SIM638-API");
switch (res.getResourceStatus()) { n.setDate(OffsetDateTime.now(ZoneOffset.UTC).toString());
case STANDBY: { supd.addNoteItem(n);
supd.setState( ServiceStateType.RESERVED);
break; this.updateService(aService.getId(), supd, true, null, null); // update the service
}
case SUSPENDED: {
supd.setState( ServiceStateType.INACTIVE);
break;
}
case RESERVED: {
supd.setState( ServiceStateType.RESERVED);
break;
}
case UNKNOWN: {
if (aService.getState().equals( ServiceStateType.ACTIVE )) {
supd.setState( ServiceStateType.TERMINATED);
}
break;
}
case ALARM: {
supd.setState( ServiceStateType.INACTIVE);
break;
}
default:
break;
}
}
Note n = new Note();
n.setText("Supporting Resource "+ res.getId() + " State Changed with status: " + res.getResourceStatus());
n.setAuthor( "SIM638-API" );
n.setDate( OffsetDateTime.now(ZoneOffset.UTC).toString() );
supd.addNoteItem( n );
this.updateService( aService.getId(), supd , true, null, null); //update the service
//} //if ( aService.getState().equals( ServiceStateType.ACTIVE ) ) {
} }
updateResourceFromKubernetesLabel( res ); updateResourceFromKubernetesLabel(res);
} }
private void updateResourceFromKubernetesLabel(Resource res) { private void updateResourceFromKubernetesLabel(Resource res) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment