Skip to content
This repository has been archived by the owner on Jul 17, 2024. It is now read-only.

Commit

Permalink
Merge branch 'development' for 0.1.0
Browse files Browse the repository at this point in the history
  • Loading branch information
TheWall89 committed Sep 18, 2020
2 parents 67a67bd + 19523e0 commit 418282b
Show file tree
Hide file tree
Showing 11 changed files with 183 additions and 75 deletions.
1 change: 0 additions & 1 deletion docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,5 @@ services:
exp-nsd-composer:
build:
context: .
container_name: exp-nsd-composer
ports:
- 8086:8086
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
</parent>
<groupId>it.cnit.blueprint</groupId>
<artifactId>composer</artifactId>
<version>0.0.4</version>
<version>0.1.0</version>
<description>A REST API module to compose experiment NSDs. It can also validate blueprints and
generate NSDs from them.
</description>
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,11 @@
import it.cnit.blueprint.composer.exceptions.NsdCompositionException;
import it.cnit.blueprint.composer.exceptions.NsdGenerationException;
import it.cnit.blueprint.composer.exceptions.NsdInvalidException;
import it.cnit.blueprint.composer.exceptions.TransRuleCompositionException;
import it.cnit.blueprint.composer.exceptions.TransRuleInvalidException;
import it.cnit.blueprint.composer.exceptions.VsbInvalidException;
import it.cnit.blueprint.composer.nsd.compose.NsdComposer;
import it.cnit.blueprint.composer.nsd.generate.NsdGenerator;
import it.cnit.blueprint.composer.nsd.graph.NsdGraphService;
import it.cnit.blueprint.composer.nsd.graph.ProfileVertex;
import it.cnit.blueprint.composer.rules.TranslationRulesComposer;
import it.cnit.blueprint.composer.vsb.VsbService;
import it.cnit.blueprint.composer.vsb.rest.CtxController;
import it.cnit.blueprint.composer.vsb.rest.VsbController;
Expand All @@ -27,7 +24,6 @@
import it.nextworks.nfvmano.catalogue.blueprint.elements.VsBlueprint;
import it.nextworks.nfvmano.catalogue.blueprint.elements.VsbEndpoint;
import it.nextworks.nfvmano.catalogue.blueprint.elements.VsbLink;
import it.nextworks.nfvmano.catalogue.blueprint.elements.VsdNsdTranslationRule;
import it.nextworks.nfvmano.libs.ifa.common.exceptions.MalformattedElementException;
import it.nextworks.nfvmano.libs.ifa.descriptors.nsd.NsDf;
import it.nextworks.nfvmano.libs.ifa.descriptors.nsd.NsLevel;
Expand Down Expand Up @@ -67,7 +63,6 @@ public class NsdController {
private final VsbService vsbService;
private final VsbController vsbController;
private final CtxController ctxController;
private final TranslationRulesComposer translationRulesComposer;

@PostMapping("/nsd/generate")
public Nsd generate(@RequestBody VsBlueprint vsb) {
Expand All @@ -80,13 +75,11 @@ public Nsd generate(@RequestBody VsBlueprint vsb) {
}

@PostMapping("/nsd/compose")
public ComposeResponse compose(@RequestBody ComposeRequest composeRequest) {
public Nsd compose(@RequestBody ComposeRequest composeRequest) {
VsBlueprint vsb = composeRequest.getVsbRequest().getVsBlueprint();
vsbController.validate(vsb);
Nsd expNsd = composeRequest.getVsbRequest().getNsds().get(0);
validate(expNsd);
List<VsdNsdTranslationRule> vsbTransRules = composeRequest.getVsbRequest()
.getTranslationRules();
expNsd.setNsdIdentifier(UUID.randomUUID().toString());
expNsd.setNsdInvariantId(UUID.randomUUID().toString());
expNsd.setDesigner(expNsd.getDesigner() + " + NSD Composer");
Expand Down Expand Up @@ -137,14 +130,7 @@ public ComposeResponse compose(@RequestBody ComposeRequest composeRequest) {
throw new ResponseStatusException(HttpStatus.INTERNAL_SERVER_ERROR, e.getMessage(), e);
}

List<VsdNsdTranslationRule> expTransRules;
try {
expTransRules = translationRulesComposer.compose(expNsd, vsbTransRules);
} catch (TransRuleInvalidException | TransRuleCompositionException e) {
log.warn("{}. Return empty translation rules.", e.getMessage());
expTransRules = new ArrayList<>();
}
return new ComposeResponse(expNsd, expTransRules);
return expNsd;
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,18 @@
import static org.junit.Assert.assertEquals;

import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
import com.fasterxml.jackson.module.jsonSchema.types.ObjectSchema;
import it.nextworks.nfvmano.catalogue.blueprint.elements.CtxBlueprint;
import it.nextworks.nfvmano.catalogue.blueprint.elements.VsBlueprint;
import it.nextworks.nfvmano.catalogue.blueprint.elements.VsdNsdTranslationRule;
import it.nextworks.nfvmano.catalogue.blueprint.messages.OnBoardVsBlueprintRequest;
import it.nextworks.nfvmano.catalogue.blueprint.messages.OnboardCtxBlueprintRequest;
import it.nextworks.nfvmano.libs.ifa.descriptors.nsd.Nsd;
import java.io.InputStream;
import java.net.URL;
import java.util.Collections;
import java.util.List;
import java.util.Properties;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
Expand Down Expand Up @@ -135,23 +132,15 @@ private ComposeRequest getAres2TRequest() {
.readValue(new URL(urlProp.getProperty("vsb_ares2t_tracker")), VsBlueprint.class);
Nsd vsbNsd = YAML_OM
.readValue(new URL(urlProp.getProperty("vsb_ares2t_tracker_nsds")), Nsd.class);
List<VsdNsdTranslationRule> vsbTr = YAML_OM
.readValue(new URL(urlProp.getProperty("vsb_ares2t_tracker_tr")),
new TypeReference<List<VsdNsdTranslationRule>>() {
});
OnBoardVsBlueprintRequest vsbRequest = new OnBoardVsBlueprintRequest(vsb,
Collections.singletonList(vsbNsd), vsbTr);
Collections.singletonList(vsbNsd), null);

CtxBlueprint ctxb = YAML_OM
.readValue(new URL(urlProp.getProperty("ctx_delay")), CtxBlueprint.class);
Nsd ctxbNsd = YAML_OM
.readValue(new URL(urlProp.getProperty("ctx_delay_nsds")), Nsd.class);
List<VsdNsdTranslationRule> ctxbTr = YAML_OM
.readValue(new URL(urlProp.getProperty("ctx_delay_tr")),
new TypeReference<List<VsdNsdTranslationRule>>() {
});
OnboardCtxBlueprintRequest ctxbRequest = new OnboardCtxBlueprintRequest(ctxb,
Collections.singletonList(ctxbNsd), ctxbTr);
Collections.singletonList(ctxbNsd), null);
Context c = new Context(ctxbRequest, null);

ComposeRequest request = new ComposeRequest(vsbRequest, new Context[]{c});
Expand All @@ -177,12 +166,8 @@ private ComposeRequest getPolitoRequest() {
.readValue(new URL(urlProp.getProperty("ctx_delay")), CtxBlueprint.class);
Nsd delayNsd = YAML_OM
.readValue(new URL(urlProp.getProperty("ctx_delay_nsds")), Nsd.class);
List<VsdNsdTranslationRule> delayTr = YAML_OM
.readValue(new URL(urlProp.getProperty("ctx_delay_tr")),
new TypeReference<List<VsdNsdTranslationRule>>() {
});
OnboardCtxBlueprintRequest delayRequest = new OnboardCtxBlueprintRequest(delayCtxB,
Collections.singletonList(delayNsd), delayTr);
Collections.singletonList(delayNsd), null);
Context delay = new Context(delayRequest, null);

CtxBlueprint trafficCtxB = YAML_OM
Expand Down Expand Up @@ -214,17 +199,13 @@ public void composeAres2T200() {

// Then
assertEquals(200, result.getResponse().getStatus());
ComposeResponse response = JSON_OM
.readValue(result.getResponse().getContentAsString(), ComposeResponse.class);
log.info("Response body:\n{}", JSON_OM.writeValueAsString(response));
Nsd actualNsd = response.getExpNsd();
Nsd actualNsd = JSON_OM .readValue(result.getResponse().getContentAsString(),Nsd.class);
actualNsd.setNsdIdentifier("58886b95-cd29-4b7b-aca0-e884caaa5c68");
actualNsd.setNsdInvariantId("ae66294b-8dae-406c-af70-f8516e310965");
InputStream in = getClass().getResourceAsStream(
"/expb_ares2t_tracker_delay_nsds_passthrough.yaml");
Nsd expectedNsd = YAML_OM.readValue(in, Nsd[].class)[0];
assertEquals(YAML_OM.writeValueAsString(expectedNsd),
YAML_OM.writeValueAsString(response.getExpNsd()));
assertEquals(YAML_OM.writeValueAsString(expectedNsd), YAML_OM.writeValueAsString(actualNsd));
}

@Test
Expand All @@ -242,16 +223,12 @@ public void composePolito200() {

// Then
assertEquals(200, result.getResponse().getStatus());
ComposeResponse response = JSON_OM
.readValue(result.getResponse().getContentAsString(), ComposeResponse.class);
log.info("Response body:\n{}", JSON_OM.writeValueAsString(response));
Nsd actualNsd = response.getExpNsd();
Nsd actualNsd = JSON_OM.readValue(result.getResponse().getContentAsString(), Nsd.class);
actualNsd.setNsdIdentifier("0176eb11-f613-4b40-bd71-c7a4ea4f0896");
actualNsd.setNsdInvariantId("71544f81-653a-4dc1-a49c-a34bc1e17976");
InputStream in = getClass().getResourceAsStream("/expb_polito_smartcity_nsd.yaml");
Nsd expectedNsd = YAML_OM.readValue(in, Nsd.class);
assertEquals(YAML_OM.writeValueAsString(expectedNsd),
YAML_OM.writeValueAsString(response.getExpNsd()));
assertEquals(YAML_OM.writeValueAsString(expectedNsd), YAML_OM.writeValueAsString(actualNsd));
}

@Test
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package it.cnit.blueprint.composer.rules;

import static org.junit.Assert.assertEquals;

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
import it.nextworks.nfvmano.catalogue.blueprint.elements.VsdNsdTranslationRule;
import it.nextworks.nfvmano.libs.ifa.descriptors.nsd.Nsd;
import java.io.InputStream;
import java.net.URL;
import java.util.List;
import java.util.Properties;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.junit.BeforeClass;
import org.junit.Test;

@Slf4j
public class TranslationRulesComposerTest {

static Properties urlProp;
static ObjectMapper oM;
static TranslationRulesComposer translationRulesComposer;

@BeforeClass
@SneakyThrows
public static void setUp() {
// Test Setup
urlProp = new Properties();
InputStream input = ClassLoader.getSystemResourceAsStream("url.properties");
urlProp.load(input);
oM = new ObjectMapper(new YAMLFactory());
translationRulesComposer = new TranslationRulesComposer();
}

@Test
@SneakyThrows
public void compose() {
// Given
InputStream in = getClass()
.getResourceAsStream("/expb_ares2t_tracker_delay_nsds_passthrough.yaml");
Nsd expNsd = oM.readValue(in, Nsd[].class)[0];
List<VsdNsdTranslationRule> vsbTr = oM
.readValue(new URL(urlProp.getProperty("vsb_ares2t_tracker_tr")),
new TypeReference<List<VsdNsdTranslationRule>>() {
});
log.info("old rules\n{}", oM.writeValueAsString(vsbTr));

// When
List<VsdNsdTranslationRule> newRules = translationRulesComposer.compose(expNsd, vsbTr);
log.info("new rules\n{}", oM.writeValueAsString(newRules));

// Then
in = getClass()
.getResourceAsStream("/expb_ares2t_tracker_delay_tr.yaml");
List<VsdNsdTranslationRule> expectedRules = oM
.readValue(in, new TypeReference<List<VsdNsdTranslationRule>>() {
});
assertEquals(oM.writeValueAsString(expectedRules), oM.writeValueAsString(newRules));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import com.fasterxml.jackson.module.jsonSchema.types.ObjectSchema;
import it.nextworks.nfvmano.catalogue.blueprint.elements.ExpBlueprint;
import java.io.InputStream;
import java.net.URL;
import java.util.Properties;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
Expand Down Expand Up @@ -57,8 +56,8 @@ public void setUp() {
@SneakyThrows
public void validate() {
// Given
ExpBlueprint exp = YAML_OM
.readValue(new URL(urlProp.getProperty("expb_polito_smartcity")), ExpBlueprint.class);
InputStream in = getClass().getResourceAsStream("/expb_polito_smartcity.yaml");
ExpBlueprint exp = YAML_OM.readValue(in, ExpBlueprint.class);

// When
MvcResult result = mvc.perform(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import com.fasterxml.jackson.module.jsonSchema.types.ObjectSchema;
import it.nextworks.nfvmano.catalogue.blueprint.elements.TestCaseBlueprint;
import java.io.InputStream;
import java.net.URL;
import java.util.Properties;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
Expand Down Expand Up @@ -57,8 +56,8 @@ public void setUp() {
@SneakyThrows
public void validate() {
// Given
TestCaseBlueprint tcb = YAML_OM
.readValue(new URL(urlProp.getProperty("tcb_polito_smartcity_1")), TestCaseBlueprint.class);
InputStream in = getClass().getResourceAsStream("/TCB_Ares2T_Service_v5-RC-v2.yaml");
TestCaseBlueprint tcb = YAML_OM.readValue(in, TestCaseBlueprint.class);

// When
MvcResult result = mvc.perform(
Expand Down
35 changes: 35 additions & 0 deletions src/test/resources/TCB_Ares2T_Service_v5-RC-v2.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
version: '1.5'
name: TCB Ares2T Service
description: Test case to run the Ares2T
configurationScript: 'EXECUTE_COMMAND vnf.396d1b6b-331b-4dd7-b48e-376517d3654a.extcp.cp_dg_mgmt.ipaddress
$$user:$$password sudo /home/ubuntu/scripts/nginx_configuration.sh vnf.419b1884-aea1-4cad-8647-c2cec55287b9.extcp.cp_tracker_ext_in.ipaddress;
EXECUTE_COMMAND vnf.396d1b6b-331b-4dd7-b48e-376517d3654a.extcp.cp_dg_mgmt.ipaddress
$$user:$$password sudo tc qdisc add dev ens5 root netem delay $$DELAYms 20ms 25%;
EXECUTE_COMMAND vnf.419b1884-aea1-4cad-8647-c2cec55287b9.extcp.cp_tracker_mgmt.ipaddress
$$user:$$password sudo /home/ubuntu/scripts/filebeat_configuration.sh vnf.51c420e3-c83d-4ce9-a5bf-0dbe339b351d.extcp.cp_vis_data.ipaddress;
EXECUTE_COMMAND vnf.51c420e3-c83d-4ce9-a5bf-0dbe339b351d.extcp.cp_vis_mgmt.ipaddress
$$user:$$password sudo /home/ubuntu/scripts/metricbeat_configuration.sh 10.50.7.25:9092
$$metric.topic.tracking_response_time $$metric.topic.tracking_memory_usage; EXECUTE_COMMAND
vnf.ef28e213-2f89-4b55-9e33-089df1ffd528.extcp.cp_recognition_mgmt.ipaddress $$user:$$password
sudo /home/ubuntu/scripts/filebeat_configuration.sh 10.50.7.25:9092 $$metric.topic.recognition_network_time
$$metric.topic.recognition_accuracy; EXECUTE_COMMAND vnf.ef28e213-2f89-4b55-9e33-089df1ffd528.extcp.cp_recognition_mgmt.ipaddress
$$user:$$password sudo /home/ubuntu/scripts/metricbeat_configuration.sh 10.50.7.25:9092
$$metric.topic.recognition_response_time $$metric.topic.recognition_memory_usage '
executionScript: SLEEP $$sleep$$time
userParameters:
sleeping_time: $$sleep$$time
delay: $$DELAY
username: $$user
password: $$password
infrastructureParameters:
vnf.51c420e3-c83d-4ce9-a5bf-0dbe339b351d.extcp.cp_vis_data.ipaddress: ''
vnf.51c420e3-c83d-4ce9-a5bf-0dbe339b351d.extcp.cp_vis_mgmt.ipaddress: ''
vnf.419b1884-aea1-4cad-8647-c2cec55287b9.extcp.cp_tracker_mgmt.ipaddress: ''
vnf.419b1884-aea1-4cad-8647-c2cec55287b9.extcp.cp_tracker_ext_in.ipaddress: ''
vnf.396d1b6b-331b-4dd7-b48e-376517d3654a.extcp.cp_dg_mgmt.ipaddress: ''
$$metric.topic.tracking_memory_usage: ''
$$metric.topic.tracking_response_time: ''
$$metric.topic.recognition_network_time: ''
$$metric.topic.recognition_accuracy: ''
$$metric.topic.recognition_response_time: ''
$$metric.topic.recognition_memory_usage: ''
21 changes: 21 additions & 0 deletions src/test/resources/expb_ares2t_tracker_delay_tr.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
- input:
- parameterId: "number_of_tracked_devices"
minValue: 1
maxValue: 100
nstId: null
nsdId: "58886b95-cd29-4b7b-aca0-e884caaa5c68"
nsdVersion: "1.0"
nsFlavourId: "ns_Ares2T_Tracking_df"
nsInstantiationLevelId: "ns_ares2t_tracker_il_small"
# default: false
- input:
- parameterId: "number_of_tracked_devices"
minValue: 101
maxValue: 1000
nstId: null
nsdId: "58886b95-cd29-4b7b-aca0-e884caaa5c68"
nsdVersion: "1.0"
nsFlavourId: "ns_Ares2T_Tracking_df"
nsInstantiationLevelId: "ns_ares2t_tracker_il_big"
# default: false
Loading

0 comments on commit 418282b

Please sign in to comment.