import org.onap.vid.model.serviceInstantiation.*
import org.onap.vid.mso.model.*
import org.onap.vid.mso.model.BaseResourceInstantiationRequestDetails.*
-import org.onap.vid.mso.model.VfModuleInstantiationRequestDetails.UserParamMap
import org.onap.vid.mso.rest.SubscriberInfo
import org.onap.vid.properties.Features
import org.onap.vid.services.AsyncInstantiationBusinessLogic
return RequestDetailsWrapper(VnfInstantiationRequestDetails(vnfDetails.modelInfo, cloudConfiguration, requestInfo, null, null, null, null))
}
- fun generateVfModuleInstantiationRequest(vfModuleDetails: VfModule, serviceModelInfo: ModelInfo, serviceInstanceId: String, vnfModelInfo: ModelInfo, vnfInstanceId: String, vgInstanceId: String?, userId: String, testApi: String?): RequestDetailsWrapper<VfModuleInstantiationRequestDetails> {
+ protected fun generateVfModuleRequestWithRequestParams(
+ vfModuleDetails: VfModule, serviceModelInfo: ModelInfo,
+ serviceInstanceId: String, vnfModelInfo: ModelInfo, vnfInstanceId: String, vgInstanceId: String?, userId: String,
+ requestParameters: (userParams: List<UserParamTypes>) -> RequestParametersVfModuleOrVolumeGroup
+ ): RequestDetailsWrapper<VfModuleOrVolumeGroupRequestDetails> {
val requestInfo = generateRequestInfo(vfModuleDetails.instanceName, ResourceType.VF_MODULE, vfModuleDetails.isRollbackOnFailure, null, userId)
//cloud configuration
val cloudConfiguration = generateCloudConfiguration(vfModuleDetails.lcpCloudRegionId, vfModuleDetails.tenantId)
- //request parameters
val userParams = aggregateAllInstanceParams(extractActualInstanceParams(vfModuleDetails.instanceParams), vfModuleDetails.supplementaryParams)
- val requestParameters = VfModuleInstantiationRequestDetails.RequestParametersVfModule(userParams, vfModuleDetails.isUsePreload, testApi)
//related instance list
val relatedInstanceList = generateRelatedInstances(mapOf(serviceInstanceId to serviceModelInfo, vnfInstanceId to vnfModelInfo))
volumeGroupModel.modelType = "volumeGroup"
relatedInstanceList.add(RelatedInstance(volumeGroupModel, vgInstanceId, vfModuleDetails.volumeGroupInstanceName))
}
- return RequestDetailsWrapper(VfModuleInstantiationRequestDetails(vfModuleDetails.modelInfo, cloudConfiguration, requestInfo, relatedInstanceList, requestParameters))
+
+ return RequestDetailsWrapper(VfModuleOrVolumeGroupRequestDetails(vfModuleDetails.modelInfo, cloudConfiguration, requestInfo, relatedInstanceList, requestParameters(userParams)))
+ }
+
+ fun generateVfModuleInstantiationRequest(
+ vfModuleDetails: VfModule, serviceModelInfo: ModelInfo,
+ serviceInstanceId: String, vnfModelInfo: ModelInfo, vnfInstanceId: String,
+ vgInstanceId: String?, userId: String, testApi: String?
+ ): RequestDetailsWrapper<VfModuleOrVolumeGroupRequestDetails> {
+ val requestParameters = { userParams: List<UserParamTypes> ->
+ RequestParametersVfModuleOrVolumeGroupInstantiation(userParams, vfModuleDetails.isUsePreload, testApi)
+ }
+
+ return generateVfModuleRequestWithRequestParams(vfModuleDetails, serviceModelInfo, serviceInstanceId,
+ vnfModelInfo, vnfInstanceId, vgInstanceId, userId, requestParameters)
}
+ fun generateVfModuleReplaceRequest(
+ vfModuleDetails: VfModule, serviceModelInfo: ModelInfo,
+ serviceInstanceId: String, vnfModelInfo: ModelInfo, vnfInstanceId: String,
+ vgInstanceId: String?, userId: String, testApi: String?
+ ): RequestDetailsWrapper<VfModuleOrVolumeGroupRequestDetails> {
+ val requestParameters = { userParams: List<UserParamTypes> ->
+ RequestParametersVfModuleUpgrade(userParams, vfModuleDetails.isUsePreload, testApi,
+ vfModuleDetails.isRetainAssignments, nullSafeNegate(vfModuleDetails.isRetainVolumeGroups))
+ }
+
+ return generateVfModuleRequestWithRequestParams(vfModuleDetails, serviceModelInfo, serviceInstanceId,
+ vnfModelInfo, vnfInstanceId, vgInstanceId, userId, requestParameters)
+ }
+
+ private fun nullSafeNegate(booleanValue: Boolean?): Boolean? = booleanValue?.not()
+
fun generateVolumeGroupInstantiationRequest(vfModuleDetails: VfModule, serviceModelInfo: ModelInfo, serviceInstanceId: String, vnfModelInfo: ModelInfo, vnfInstanceId: String, userId: String, testApi: String?): RequestDetailsWrapper<VolumeGroupRequestDetails> {
val requestInfo = generateRequestInfo(vfModuleDetails.volumeGroupInstanceName, ResourceType.VOLUME_GROUP, vfModuleDetails.isRollbackOnFailure, null, userId)
val cloudConfiguration = generateCloudConfiguration(vfModuleDetails.lcpCloudRegionId, vfModuleDetails.tenantId)
val userParams = aggregateAllInstanceParams(extractActualInstanceParams(vfModuleDetails.instanceParams), vfModuleDetails.supplementaryParams)
- val requestParameters = VfModuleInstantiationRequestDetails.RequestParametersVfModule(userParams, vfModuleDetails.isUsePreload, testApi)
+ val requestParameters = RequestParametersVfModuleOrVolumeGroupInstantiation(userParams, vfModuleDetails.isUsePreload, testApi)
val relatedInstances = generateRelatedInstances(mapOf(serviceInstanceId to serviceModelInfo, vnfInstanceId to vnfModelInfo))
vfModuleDetails.modelInfo.modelType = "volumeGroup"
return RequestDetailsWrapper(NetworkInstantiationRequestDetails(networkDetails.modelInfo, cloudConfiguration, requestInfo, null, null, null, null))
}
- fun generateDeleteVfModuleRequest(vfModuleDetails: VfModule, userId: String): RequestDetailsWrapper<VfModuleInstantiationRequestDetails> {
+ fun generateDeleteVfModuleRequest(vfModuleDetails: VfModule, userId: String): RequestDetailsWrapper<VfModuleOrVolumeGroupRequestDetails> {
val requestInfo = generateRequestInfo(null, null, null, null, userId)
val cloudConfiguration = generateCloudConfiguration(vfModuleDetails.lcpCloudRegionId, vfModuleDetails.tenantId)
- return RequestDetailsWrapper(VfModuleInstantiationRequestDetails(vfModuleDetails.modelInfo, cloudConfiguration, requestInfo, null, null))
+ return RequestDetailsWrapper(VfModuleOrVolumeGroupRequestDetails(vfModuleDetails.modelInfo, cloudConfiguration, requestInfo, null, null))
}
private fun generateServiceName(jobId: UUID?, payload: ServiceInstantiation, optimisticUniqueServiceInstanceName: String): String? {
}.collect(Collectors.toList<VfModuleMacro>())
}
- fun aggregateAllInstanceParams(instanceParams: Map<String, String>?, supplementaryParams: Map<String, String>?): List<VfModuleInstantiationRequestDetails.UserParamMap<String, String>> {
+ fun aggregateAllInstanceParams(instanceParams: Map<String, String>?, supplementaryParams: Map<String, String>?): List<UserParamMap<String, String>> {
var instanceParamsFinal: Map<String, String> = instanceParams ?: emptyMap()
val supplementaryParamsFinal: Map<String, String> = supplementaryParams ?: emptyMap()
val originalRequestWithNewestVfmModelInfo = getRequest().cloneWith(vfmModelInfo)
- val requestDetailsWrapper = msoRequestBuilder.generateVfModuleInstantiationRequest(
+ val requestDetailsWrapper = msoRequestBuilder.generateVfModuleReplaceRequest(
originalRequestWithNewestVfmModelInfo, serviceModelInfo, serviceInstanceId,
vnfModelInfo, vnfInstanceId, null, sharedData.userId, sharedData.testApi)
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import javax.annotation.Nullable;
import org.onap.vid.job.JobAdapter;
import org.onap.vid.job.JobType;
import org.onap.vid.mso.model.ModelInfo;
@JsonInclude(NON_NULL) private Boolean usePreload;
private Map<String, String> supplementaryParams;
+ @JsonInclude(NON_NULL)
+ private final Boolean retainVolumeGroups;
+
+ @JsonInclude(NON_NULL)
+ private Boolean retainAssignments;
+
public VfModule(@JsonProperty("modelInfo") ModelInfo modelInfo,
@JsonProperty("instanceName") String instanceName,
@JsonProperty("volumeGroupName") String volumeGroupInstanceName,
@JsonProperty("trackById") String trackById,
@JsonProperty("isFailed") Boolean isFailed,
@JsonProperty("statusMessage") String statusMessage,
+ @Nullable @JsonProperty("retainAssignments") Boolean retainAssignments,
+ @Nullable @JsonProperty("retainVolumeGroups") Boolean retainVolumeGroups,
@JsonProperty("position") Integer position) {
super(modelInfo, instanceName, action, lcpCloudRegionId, legacyRegion, tenantId, instanceParams, rollbackOnFailure, instanceId, trackById, isFailed, statusMessage,
position);
this.volumeGroupInstanceName = volumeGroupInstanceName;
this.usePreload = usePreload;
this.supplementaryParams = supplementaryParams;
+ this.retainAssignments = retainAssignments;
+ this.retainVolumeGroups = retainVolumeGroups;
}
public String getVolumeGroupInstanceName() {
return JobType.VfmoduleInstantiation;
}
+ @Nullable
+ public Boolean isRetainAssignments() {
+ return retainAssignments;
+ }
+
+ @Nullable
+ public Boolean isRetainVolumeGroups() {
+ return retainVolumeGroups;
+ }
+
public VfModule cloneWith(ModelInfo modelInfo) {
return new VfModule(
modelInfo,
this.getTrackById(),
this.getIsFailed(),
this.getStatusMessage(),
+ this.isRetainAssignments(),
+ this.isRetainVolumeGroups(),
this.getPosition());
}
}
\ No newline at end of file
* limitations under the License.
* ============LICENSE_END=========================================================
*/
+package org.onap.vid.mso.model
-package org.onap.vid.mso.model;
-
-import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonInclude
+import com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL
+import java.util.*
/* Based on this model:
*/
-public class VfModuleInstantiationRequestDetails extends BaseResourceInstantiationRequestDetails {
-
- public VfModuleInstantiationRequestDetails(
- @JsonProperty(value = "modelInfo", required = true) ModelInfo modelInfo,
- @JsonProperty(value = "cloudConfiguration", required = true) CloudConfiguration cloudConfiguration,
- @JsonProperty(value = "requestInfo", required = true) RequestInfo requestInfo,
- @JsonProperty(value = "relatedInstanceList", required = true) List<RelatedInstance> relatedInstanceList,
- @JsonProperty(value = "requestParameters", required = true) RequestParametersVfModule requestParameters)
- {
- super(modelInfo, cloudConfiguration, requestInfo, relatedInstanceList, requestParameters);
- }
+data class VfModuleOrVolumeGroupRequestDetails(
+ val modelInfo: ModelInfo,
+ val cloudConfiguration: CloudConfiguration,
+ val requestInfo: RequestInfo,
+ val relatedInstanceList: List<RelatedInstance>?,
+ val requestParameters: RequestParametersVfModuleOrVolumeGroup?)
+ : BaseResourceInstantiationRequestDetails(modelInfo, cloudConfiguration, requestInfo, relatedInstanceList, requestParameters)
- public static class RequestParametersVfModule extends BaseResourceInstantiationRequestDetails.RequestParameters {
- @JsonInclude(NON_NULL) private final Boolean usePreload;
+open class RequestParametersVfModuleOrVolumeGroup internal constructor(
+ userParams: List<UserParamTypes>,
+ @get:JsonInclude(NON_NULL) val isUsePreload: Boolean?,
+ testApi: String?
+) : BaseResourceInstantiationRequestDetails.RequestParameters(userParams, testApi)
- public RequestParametersVfModule(List<? extends UserParamTypes> userParams, Boolean usePreload, String testApi) {
- super(userParams, testApi);
- this.usePreload = usePreload;
- }
+class RequestParametersVfModuleOrVolumeGroupInstantiation(
+ userParams: List<UserParamTypes>,
+ usePreload: Boolean?,
+ testApi: String?
+) : RequestParametersVfModuleOrVolumeGroup(userParams, usePreload, testApi)
- public Boolean isUsePreload() {
- return usePreload;
- }
- }
+class RequestParametersVfModuleUpgrade(
+ userParams: List<UserParamTypes>,
+ usePreload: Boolean?,
+ testApi: String?,
+ @get:JsonInclude(NON_NULL) val retainAssignments: Boolean?,
+ @get:JsonInclude(NON_NULL) val rebuildVolumeGroups: Boolean?
+) : RequestParametersVfModuleOrVolumeGroup(userParams, usePreload, testApi)
- public static class UserParamMap<K,V> extends HashMap<K,V> implements UserParamTypes, Map<K,V> {
-
- public UserParamMap() {
- super();
- }
- }
-}
+class UserParamMap<K, V> : HashMap<K, V>(), UserParamTypes, MutableMap<K, V>
package org.onap.vid.mso.model;
import com.fasterxml.jackson.annotation.JsonProperty;
-
import java.util.List;
public class VolumeGroupRequestDetails extends BaseResourceInstantiationRequestDetails {
@JsonProperty(value = "cloudConfiguration", required = true) CloudConfiguration cloudConfiguration,
@JsonProperty(value = "requestInfo", required = true) RequestInfo requestInfo,
@JsonProperty(value = "relatedInstanceList", required = true) List<RelatedInstance> relatedInstanceList,
- @JsonProperty(value = "requestParameters", required = true) VfModuleInstantiationRequestDetails.RequestParametersVfModule requestParameters)
+ @JsonProperty(value = "requestParameters", required = true) RequestParametersVfModuleOrVolumeGroup requestParameters)
{
super(modelInfo, cloudConfiguration, requestInfo, relatedInstanceList, requestParameters);
}
* Use /docs/feature-flags.md for details
*/
- CREATE_INSTANCE_TEST,
- EMPTY_DRAWING_BOARD_TEST,
FLAG_ADD_MSO_TESTAPI_FIELD,
FLAG_SERVICE_MODEL_CACHE,
FLAG_NETWORK_TO_ASYNC_INSTANTIATION,
FLAG_ENABLE_WEBPACK_MODERN_UI = true
FLAG_ASYNC_JOBS = true
-CREATE_INSTANCE_TEST = false
-EMPTY_DRAWING_BOARD_TEST = false
FLAG_ADD_MSO_TESTAPI_FIELD = true
FLAG_UNASSIGN_SERVICE = true
FLAG_COLLECTION_RESOURCE_SUPPORT = true
FLAG_SHOW_ASSIGNMENTS = true
FLAG_HANDLE_SO_WORKFLOWS = true
FLAG_CREATE_ERROR_REPORTS = true
-
FLAG_SHOW_VERIFY_SERVICE = true
FLAG_DUPLICATE_VNF = true
FLAG_DEFAULT_VNF = true
FLAG_PNP_INSTANTIATION = true
-CREATE_INSTANCE_TEST = false
FLAG_ADD_MSO_TESTAPI_FIELD = true
FLAG_UNASSIGN_SERVICE = true
FLAG_SERVICE_MODEL_CACHE = true
FLAG_COLLECTION_RESOURCE_SUPPORT = false
FLAG_ENABLE_WEBPACK_MODERN_UI = false
FLAG_ASYNC_JOBS = false
-EMPTY_DRAWING_BOARD_TEST = false
FLAG_NETWORK_TO_ASYNC_INSTANTIATION = false
FLAG_DUPLICATE_VNF = false
FLAG_DEFAULT_VNF = false
var isVfc = false;\r
\r
_.map($scope.service.model.vnfs, function (value, key) {\r
- if (value.uuid == vnf.uuid) {\r
- if (!_.isEmpty(value.vfcInstanceGroups)) {\r
+ if (value.uuid == vnf.uuid && !_.isEmpty(value.vfcInstanceGroups)) {\r
isVfc = true;\r
var queryData = {\r
serviceModelId: $scope.service.model.service.uuid,\r
$scope.$broadcast(COMPONENT.IFRAME_DIALOG, queryData);\r
return;\r
}\r
- }\r
});\r
\r
DataService.setSubscriberName($scope.service.instance.subscriberName);\r
if (model && model.vnfs && !_.isEmpty(model.vnfs)) {\r
Object.keys(model.vnfs).forEach(function (key) {\r
var vnf = model.vnfs[key];\r
- if (vnf.vfcInstanceGroups && !_.isEmpty(vnf.vfcInstanceGroups)) {\r
- if (vnf.uuid === genericVnf.modelVersionId) {\r
+ if (vnf.vfcInstanceGroups && !_.isEmpty(vnf.vfcInstanceGroups) && vnf.uuid === genericVnf.modelVersionId) {\r
AaiService.getInstanceGroupsByVNFInstanceId(genericVnf.nodeId,\r
function (response) { //success\r
handleGetRelatedInstanceGroupsResponseForVnf(response, genericVnf);\r
}\r
)\r
}\r
- }\r
});\r
}\r
}\r
};\r
\r
$scope.isShowAssignmentsEnabled = function () {\r
- if (featureFlags.isOn(COMPONENT.FEATURE_FLAGS.FLAG_SHOW_ASSIGNMENTS)) {\r
- if ($scope.serviceOrchestrationStatus) {\r
+ if (featureFlags.isOn(COMPONENT.FEATURE_FLAGS.FLAG_SHOW_ASSIGNMENTS) && $scope.serviceOrchestrationStatus) {\r
return $scope.serviceOrchestrationStatus.toLowerCase() === 'assigned';\r
}\r
- }\r
return false;\r
};\r
\r
}
static VfModule createVfModule(Action action) {
- return new VfModule(mock(ModelInfo.class), null, null, action.toString(), null, null, null, null, null, false, false, null, null, null, null,
- null);
+ return new VfModule(mock(ModelInfo.class), null, null, action.toString(), null, null, null, null, null,
+ false, false, null, null, null, null, null, null, null);
}
static Network createNetwork(Action action) {
vfModuleInfo.setModelVersion("10.0");
return new VfModule(vfModuleInfo, instanceName, volumeGroupInstanceName, Action.Create.name(), "mdt1", null,
"88a6ca3ee0394ade9403f075db23167e", instanceParams, supplementaryParams, false, true, null, UUID.randomUUID().toString(), null, null,
- null);
+ null, null, null);
}
return new VfModule(vfModuleInfo, instanceName, volumeGroupInstanceName, Action.Create.name(), null, null, null,
- instanceParams, supplementaryParams, false, false, null, UUID.randomUUID().toString(), null, null, null);
+ instanceParams, supplementaryParams, false, false, null, UUID.randomUUID().toString(), null,
+ null, null, null, null);
}
protected ModelInfo createVfModuleModelInfo(String modelName, String modelVersion, String modelVersionId, String modelInvariantId, String modelCustomizationId, String modelCustomizationName) {
return createModelInfo("vfModule", modelName, modelVersion, modelVersionId, modelInvariantId, modelCustomizationId, modelCustomizationName);
}
- protected VfModule createVfModuleForReplace(ModelInfo vfModuleModelInfo, String instanceName, String lcpCloudRegionId, String tenantId) {
+ protected VfModule createVfModuleForReplace(ModelInfo vfModuleModelInfo, String instanceName,
+ String lcpCloudRegionId, String tenantId, Boolean retainAssignments, Boolean retainVolumeGroups) {
return new VfModule( vfModuleModelInfo, instanceName, null, Action.Upgrade.name(), lcpCloudRegionId, null, tenantId,
- null, null, true, null, null, UUID.randomUUID().toString(), null, null, null);
+ null, null, true, null, null, UUID.randomUUID().toString(), null, null, retainAssignments, retainVolumeGroups, null);
}
protected ModelInfo createVnfModelInfo(boolean isAlacarte) {
import static com.google.common.collect.Maps.newHashMap;
import static net.javacrumbs.jsonunit.JsonMatchers.jsonEquals;
+import static net.javacrumbs.jsonunit.JsonMatchers.jsonPartEquals;
import static net.javacrumbs.jsonunit.core.Option.IGNORING_ARRAY_ORDER;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.IsEqual.equalTo;
import org.onap.vid.mso.model.NetworkInstantiationRequestDetails;
import org.onap.vid.mso.model.ServiceDeletionRequestDetails;
import org.onap.vid.mso.model.ServiceInstantiationRequestDetails;
-import org.onap.vid.mso.model.VfModuleInstantiationRequestDetails;
+import org.onap.vid.mso.model.UserParamMap;
import org.onap.vid.mso.model.VfModuleMacro;
+import org.onap.vid.mso.model.VfModuleOrVolumeGroupRequestDetails;
import org.onap.vid.mso.model.VnfInstantiationRequestDetails;
import org.onap.vid.mso.model.VolumeGroupRequestDetails;
import org.onap.vid.properties.Features;
when(aaiClient.isNodeTypeExistsByName(eq("vmxnjr001_AVPN_base_vRE_BV_expansion"), eq(ResourceType.VF_MODULE))).thenReturn(false);
String expected = IOUtils.toString(this.getClass().getResource(fileName), "UTF-8");
- final RequestDetailsWrapper<VfModuleInstantiationRequestDetails> result = msoRequestBuilder.generateVfModuleInstantiationRequest(
+ final RequestDetailsWrapper<VfModuleOrVolumeGroupRequestDetails> result = msoRequestBuilder.generateVfModuleInstantiationRequest(
vfModule, siModelInfo, serviceInstanceId,
vnfModelInfo, vnfInstanceId, volumeGroupInstanceId, "pa0916", "VNF_API");
MsoOperationalEnvironmentTest.assertThatExpectationIsLikeObject(expected, result);
}
@Test(dataProvider = "expectedAggregatedParams")
- public void testAggregateInstanceParamsAndSuppFile(Map<String, String> instanceParams, Map<String, String> suppParams, List<VfModuleInstantiationRequestDetails.UserParamMap<String, String>> expected) {
- List<VfModuleInstantiationRequestDetails.UserParamMap<String, String>> aggParams = msoRequestBuilder.aggregateAllInstanceParams(instanceParams, suppParams);
+ public void testAggregateInstanceParamsAndSuppFile(Map<String, String> instanceParams, Map<String, String> suppParams, List<UserParamMap<String, String>> expected) {
+ List<UserParamMap<String, String>> aggParams = msoRequestBuilder.aggregateAllInstanceParams(instanceParams, suppParams);
assertThat("Aggregated params are not as expected", aggParams, equalTo(expected));
}
" }" +
"}";
VfModule vfModuleDetails = createVfModule("201673MowAvpnVpeBvL..AVPN_base_vPE_BV..module-0", VF_MODULE_0_MODEL_VERSION_ID, VF_MODULE_0_MODEL_CUSTOMIZATION_NAME, null, new HashMap<>(), "vmxnjr001_AVPN_base_vPE_BV_base", null, true);
- RequestDetailsWrapper<VfModuleInstantiationRequestDetails> result =
+ RequestDetailsWrapper<VfModuleOrVolumeGroupRequestDetails> result =
msoRequestBuilder.generateDeleteVfModuleRequest(vfModuleDetails, "az2018");
MsoOperationalEnvironmentTest.assertThatExpectationIsLikeObject(expected, result);
}
assertThat(result, jsonEquals(expected).when(IGNORING_ARRAY_ORDER));
}
+ @Test(dataProvider = "trueAndFalse", dataProviderClass = TestUtils.class)
+ public void generateReplaceVfModuleRequest_whenRetainAssignmentsProvidedFromFrontend_retainAssignmentsToMsoIsTheSame(boolean retainAssignments) {
+
+ assertThat(generatedVfModuleReplaceRequest(retainAssignments, null),
+ jsonPartEquals("requestDetails.requestParameters.retainAssignments", retainAssignments));
+ }
+
+ @Test
+ public void generateReplaceVfModuleRequest_whenRetainVolumeGroupIsTrue_rebuildVolumeGroupIsFalse() {
+ boolean retainVolumeGroups = true;
+
+ assertThat(generatedVfModuleReplaceRequest(null, retainVolumeGroups),
+ jsonPartEquals("requestDetails.requestParameters.rebuildVolumeGroups", false));
+ }
+
@Test
public void generateReplaceVfModuleRequest_verifyResultAsExpected() {
+ Boolean retainVolumeGroups = null;
+ Boolean retainAssignments = null;
+
String expected = TestUtils.readFileAsString("/payload_jsons/vfmodule/replace_vfmodule__payload_to_mso.json");
+ assertThat(generatedVfModuleReplaceRequest(retainAssignments, retainVolumeGroups), jsonEquals(expected).when(IGNORING_ARRAY_ORDER));
+ }
+
+ private RequestDetailsWrapper<VfModuleOrVolumeGroupRequestDetails> generatedVfModuleReplaceRequest(
+ Boolean retainAssignments, Boolean retainVolumeGroups) {
when(featureManager.isActive(Features.FLAG_1810_CR_ADD_CLOUD_OWNER_TO_MSO_REQUEST)).thenReturn(true);
when(aaiClient.getCloudOwnerByCloudRegionId("regionOne")).thenReturn("irma-aic");
ModelInfo vfModuleModelInfo = createVfModuleModelInfo("newest-model-name-vfm", "newest-model-version-vfm", "newest-model-uuid-vfm",
"f7a867f2-596b-4f4a-a128-421e825a6190", "newest-model-customization-uuid-vfm","newest-model-customization-name-vfm" );
- VfModule vfModuleDetails = createVfModuleForReplace(vfModuleModelInfo, "replace_module", "regionOne", "0422ffb57ba042c0800a29dc85ca70f8");
+ VfModule vfModuleDetails = createVfModuleForReplace(vfModuleModelInfo, "replace_module", "regionOne", "0422ffb57ba042c0800a29dc85ca70f8",
+ retainAssignments, retainVolumeGroups);
ModelInfo serviceModelInfo = createServiceModelInfo("newest-model-name-service", "newest-model-version-service", "newest-model-uuid-service", "b16a9398-ffa3-4041-b78c-2956b8ad9c7b", null, null );
ModelInfo vnfModelInfo = createVnfModelInfo("newest-model-name-vnf", "newest-model-version-vnf", "newest-model-uuid-vnf", "23122c9b-dd7f-483f-bf0a-e069303db2f7", "newest-model-customization-uuid-vnf", "newest-model-customization-name-vnf" );
- RequestDetailsWrapper<VfModuleInstantiationRequestDetails> result =
- msoRequestBuilder.generateVfModuleInstantiationRequest(vfModuleDetails, serviceModelInfo, "e9993045-cc96-4f3f-bf9a-71b2a400a956", vnfModelInfo, "5c9c2896-1fe6-4055-b7ec-d0a01e5f9bf5", null,"az2016", "GR_API");
-
- assertThat(result, jsonEquals(expected).when(IGNORING_ARRAY_ORDER));
+ return msoRequestBuilder.generateVfModuleReplaceRequest(vfModuleDetails, serviceModelInfo,
+ "e9993045-cc96-4f3f-bf9a-71b2a400a956", vnfModelInfo,
+ "5c9c2896-1fe6-4055-b7ec-d0a01e5f9bf5", null, "az2016", "GR_API"
+ );
}
}
\ No newline at end of file
{
"action": "None_Upgrade",
- "isDirty": true,
+ "isDirty": false,
"vnfs": {
"d520268f-7489-4662-be59-f81495b3a069": {
"action": "None_Upgrade",
"xbitestmodulereplace0..XbiTestModuleReplace..base_ocg..module-0": {
"b0732bed-3ddf-43cc-b193-7f18db84e476": {
"action": "None_Upgrade",
+ "retainAssignments" : false,
"instanceName": "PST-VfMod-Replace-5-Vfmod",
"instanceId": "b0732bed-3ddf-43cc-b193-7f18db84e476",
"orchStatus": "Active",
"viewEditUI": "legacy",
"instantiationType": "ALaCarte"
}
-}
\ No newline at end of file
+}
}
],
"requestParameters": {
+ "retainAssignments": false,
"userParams": [],
"testApi": "VNF_API"
},
public enum Features implements Feature {
- CREATE_INSTANCE_TEST,
- EMPTY_DRAWING_BOARD_TEST,
FLAG_ADD_MSO_TESTAPI_FIELD,
FLAG_SERVICE_MODEL_CACHE,
FLAG_NETWORK_TO_ASYNC_INSTANTIATION,
package vid.automation.test.test;
+import java.io.IOException;
+import java.util.List;
import org.onap.sdc.ci.tests.utilities.GeneralUIUtils;
import org.openqa.selenium.WebElement;
import org.testng.Assert;
import org.testng.annotations.Test;
import vid.automation.test.Constants;
-import vid.automation.test.infra.Features;
import vid.automation.test.infra.Get;
import vid.automation.test.infra.SelectOption;
import vid.automation.test.model.Service;
import vid.automation.test.services.ServicesService;
import vid.automation.test.services.SimulatorApi;
-import java.io.IOException;
-import java.util.List;
-
public class CreateNewInstanceTest extends CreateInstanceDialogBaseTest {
private ServicesService servicesService = new ServicesService();
public CreateNewInstanceTest() throws IOException {
}
- @Test
+ @Test(groups = { "underDevelopment" })
private void testCreateNewServiceInstance() throws Exception {
- if (!Features.CREATE_INSTANCE_TEST.isActive()) {
-
- // time bomb, as it fails on pipeline and I don't know how to fix it
- return;
- }
-
SimulatorApi.clearAll();
BulkRegistration.createNewServiceInstance("SILVIA ROBBINS");
"FLAG_FABRIC_CONFIGURATION_ASSIGNMENTS": true,
"FLAG_ASYNC_ALACARTE_VNF": true,
"FLAG_SERVICE_MODEL_CACHE": true,
- "CREATE_INSTANCE_TEST": false,
"FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD": true,
"FLAG_SUPPLEMENTARY_FILE": true,
- "EMPTY_DRAWING_BOARD_TEST": false,
"FLAG_ADD_MSO_TESTAPI_FIELD": true,
"FLAG_5G_IN_NEW_INSTANTIATION_UI": true,
"FLAG_RESTRICTED_SELECT": false,
},
"type": "[LCP_REGIONS_AND_TENANTS] Update"
}
-}
\ No newline at end of file
+}
-CREATE_INSTANCE_TEST = false
-EMPTY_DRAWING_BOARD_TEST = false
FLAG_ADD_MSO_TESTAPI_FIELD = true
FLAG_NETWORK_TO_ASYNC_INSTANTIATION = false
FLAG_SERVICE_MODEL_CACHE = true
"FLAG_1810_CR_ADD_CLOUD_OWNER_TO_MSO_REQUEST": true,
"FLAG_SHOW_VERIFY_SERVICE": true,
"FLAG_1902_NEW_VIEW_EDIT": true,
- "EMPTY_DRAWING_BOARD_TEST": false,
"FLAG_ADD_MSO_TESTAPI_FIELD": true,
"FLAG_1906_INSTANTIATION_API_USER_VALIDATION": true,
"FLAG_EXP_CREATE_RESOURCES_IN_PARALLEL": false,
"FLAG_SERVICE_MODEL_CACHE": true,
"FLAG_1902_RETRY_JOB": true,
"FLAG_EXP_ANY_ALACARTE_NEW_INSTANTIATION_UI": true,
- "CREATE_INSTANCE_TEST": false,
"FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD": true,
"FLAG_1906_AAI_SUB_DETAILS_REDUCE_DEPTH": true,
"FLAG_VF_MODULE_RESUME_STATUS_CREATE": true,
"flags": {
"FLAG_SHOW_ASSIGNMENTS": true,
"FLAG_SHOW_VERIFY_SERVICE": false,
- "EMPTY_DRAWING_BOARD_TEST": false,
"FLAG_ADD_MSO_TESTAPI_FIELD": true,
"FLAG_NETWORK_TO_ASYNC_INSTANTIATION": false,
"FLAG_FABRIC_CONFIGURATION_ASSIGNMENTS": true,
"FLAG_SERVICE_MODEL_CACHE": true,
- "CREATE_INSTANCE_TEST": false,
"FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD": false,
"FLAG_1906_COMPONENT_INFO" : false
},
"FLAG_FABRIC_CONFIGURATION_ASSIGNMENTS": true,
"FLAG_SHOW_VERIFY_SERVICE": false,
"FLAG_SERVICE_MODEL_CACHE": true,
- "CREATE_INSTANCE_TEST": false,
"FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD": true,
- "EMPTY_DRAWING_BOARD_TEST": false,
"FLAG_ADD_MSO_TESTAPI_FIELD": true
},
"type": "[FLAGS] Update"
"FLAG_FABRIC_CONFIGURATION_ASSIGNMENTS": true,
"FLAG_SHOW_VERIFY_SERVICE": false,
"FLAG_SERVICE_MODEL_CACHE": true,
- "CREATE_INSTANCE_TEST": false,
"FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD": true,
- "EMPTY_DRAWING_BOARD_TEST": false,
"FLAG_ADD_MSO_TESTAPI_FIELD": true
},
"type": "[FLAGS] Update"
"name": null,
"type": "UPDATE_DRAWING_BOARD_STATUS",
"flags": {
- "CREATE_INSTANCE_TEST": false,
"EMPTY_DRAWING_BOARD_TEST": false,
"FLAG_NETWORK_TO_ASYNC_INSTANTIATION": false,
"FLAG_ADD_MSO_TESTAPI_FIELD": true,
"FLAG_FABRIC_CONFIGURATION_ASSIGNMENTS": true,
"FLAG_SHOW_VERIFY_SERVICE": false,
"FLAG_SERVICE_MODEL_CACHE": true,
- "CREATE_INSTANCE_TEST": false,
"FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD": false,
- "EMPTY_DRAWING_BOARD_TEST": false,
"FLAG_ADD_MSO_TESTAPI_FIELD": true,
"FLAG_SUPPLEMENTARY_FILE": true
},
"FLAG_SHOW_VERIFY_SERVICE": false,
"FLAG_SERVICE_MODEL_CACHE": true,
"FLAG_ADVANCED_PORTS_FILTER": true,
- "CREATE_INSTANCE_TEST": false,
"FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD": false,
"FLAG_REGION_ID_FROM_REMOTE": true,
- "EMPTY_DRAWING_BOARD_TEST": false,
"FLAG_ADD_MSO_TESTAPI_FIELD": true
},
"type": "[FLAGS] Update"
"FLAG_1810_CR_ADD_CLOUD_OWNER_TO_MSO_REQUEST": true,
"FLAG_SHOW_VERIFY_SERVICE": true,
"FLAG_1902_NEW_VIEW_EDIT": true,
- "EMPTY_DRAWING_BOARD_TEST": false,
"FLAG_ADD_MSO_TESTAPI_FIELD": true,
"FLAG_1906_INSTANTIATION_API_USER_VALIDATION": true,
"FLAG_EXP_CREATE_RESOURCES_IN_PARALLEL": false,
"FLAG_SERVICE_MODEL_CACHE": true,
"FLAG_1902_RETRY_JOB": true,
"FLAG_EXP_ANY_ALACARTE_NEW_INSTANTIATION_UI": true,
- "CREATE_INSTANCE_TEST": false,
"FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD": true,
"FLAG_1906_AAI_SUB_DETAILS_REDUCE_DEPTH": true,
"FLAG_VF_MODULE_RESUME_STATUS_CREATE": true,
initServicePlanning("EDIT",
'../vid-automation/src/test/resources/viewEdit/ServiceTreeWithMultipleChildren_serviceInstance_withUpdatedLatestVersion.json');
upgradeTheVFM();
+ assertVfModuleActionInRedux("None_Upgrade");
undoUpgradeForVFM();
+ assertVfModuleActionInRedux("None");
upgradeTheVFM();
cy.getDrawingBoardDeployBtn().click();
cy.wait('@expectedPostAsyncInstantiation').then(xhr => {
- expect(Object(xhr.request.body).action).to.equal("None_Upgrade");
- expect(Object(xhr.request.body).vnfs['VNF2_INSTANCE_ID'].action).to.equal("None_Upgrade");
- expect(Object(xhr.request.body).vnfs['VNF2_INSTANCE_ID'].vfModules['vf_vgeraldine0..VfVgeraldine..vflorence_vlc..module-1']['2c1ca484-cbc2-408b-ab86-25a2c15ce280'].action).to.equal("None_Upgrade");
+ const requestBody = Object(xhr.request.body);
+ const vfModuleRequest = requestBody.vnfs['VNF2_INSTANCE_ID'].vfModules['vf_vgeraldine0..VfVgeraldine..vflorence_vlc..module-1']['2c1ca484-cbc2-408b-ab86-25a2c15ce280'];
+ expect(requestBody.action).to.equal("None_Upgrade");
+ expect(requestBody.vnfs['VNF2_INSTANCE_ID'].action).to.equal("None_Upgrade");
+ expect(vfModuleRequest.action).to.equal("None_Upgrade");
});
});
cy.getElementByDataTestsId(`${treeNodeId}-menu-btn`).click()
.drawingBoardTreeClickOnContextMenuOptionByName("Upgrade");
// The following is needed when enabling FLAG_2002_VFM_UPGRADE_ADDITIONAL_OPTIONS
+
+ cy.getElementByDataTestsId('retainAssignments').click();
+ cy.screenshot();
cy.getElementByDataTestsId('form-set').click();
}
serviceModel.service.uuid = "6e59c5de-f052-46fa-aa7e-2fca9d674c44";
return serviceModel;
}
+
+ function assertVfModuleActionInRedux(expectedState:string) {
+ cy.getReduxState().then((state) => {
+ const vfModule = state.service.serviceInstance['6e59c5de-f052-46fa-aa7e-2fca9d674c44']
+ .vnfs["VNF2_INSTANCE_ID"]
+ .vfModules["vf_vgeraldine0..VfVgeraldine..vflorence_vlc..module-1"]["2c1ca484-cbc2-408b-ab86-25a2c15ce280"];
+ expect(vfModule.action).to.equal(expectedState)
+ });
+ }
});
"FLAG_FABRIC_CONFIGURATION_ASSIGNMENTS": true,
"FLAG_SHOW_VERIFY_SERVICE": false,
"FLAG_SERVICE_MODEL_CACHE": true,
- "CREATE_INSTANCE_TEST": false,
"FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD": false,
- "EMPTY_DRAWING_BOARD_TEST": false,
"FLAG_ADD_MSO_TESTAPI_FIELD": true
},
"type": "[FLAGS] Update"
{
- "CREATE_INSTANCE_TEST": false,
"EMPTY_DRAWING_BOARD_TEST": false,
"FLAG_NETWORK_TO_ASYNC_INSTANTIATION": false,
"FLAG_ADD_MSO_TESTAPI_FIELD": true,
import {AvailableNodeIcons} from "../../../available-models-tree/available-models-tree.service";
import {IframeService} from "../../../../../shared/utils/iframe.service";
import {
- deleteActionVfModuleInstance,
+ deleteActionVfModuleInstance, deleteVFModuleField,
removeVfModuleInstance,
undoDeleteVfModuleInstance,
- undoUgradeVFModule,
+ undoUgradeVFModule, updateVFModuleField,
updateVFModulePosition,
upgradeVFModule
} from "../../../../../shared/storeUtil/utils/vfModule/vfModule.actions";
},
undoDelete: {
method: (node, serviceModelId) => {
- this._store.dispatch(undoDeleteVfModuleInstance(node.data.dynamicModelName, node.parent.data.vnfStoreKey, serviceModelId))
+ this._store.dispatch(undoDeleteVfModuleInstance(node.data.dynamicModelName, node.parent.data.vnfStoreKey, serviceModelId));
+ this._store.dispatch(deleteVFModuleField(node.data.modelName, node.parent.data.vnfStoreKey, node.data.servicedId ,node.data.dynamicModelName, 'retainAssignments'));
},
visible: (node) => this._sharedTreeService.shouldShowUndoDelete(node),
enable: (node, serviceModelId) => this._sharedTreeService.shouldShowUndoDelete(node) && this._sharedTreeService.shouldShowDelete(node.parent) && !this._sharedTreeService.isServiceOnDeleteMode(serviceModelId)
}
private upgradeVFM(serviceModelId, node) {
- this._sharedTreeService.upgradeBottomUp(node, serviceModelId);
- this._store.dispatch(upgradeVFModule(node.data.modelName, node.parent.data.vnfStoreKey, serviceModelId, node.data.dynamicModelName));
-
if (FeatureFlagsService.getFlagState(Features.FLAG_2002_VFM_UPGRADE_ADDITIONAL_OPTIONS, this._store)) {
this._iframeService.addClassOpenModal('content');
this._dialogService.addDialog(GenericFormPopupComponent, {
modelId: node.data.modelId,
type: node.data.type,
popupService: this._vfModuleUpgradePopupService,
+ vfModule : _.cloneDeep(node)
},
- node: node,
+ node,
isUpdateMode: false
});
+ }else {
+ this._sharedTreeService.upgradeBottomUp(node, serviceModelId);
+ this._store.dispatch(upgradeVFModule(node.data.modelName, node.parent.data.vnfStoreKey, serviceModelId ,node.data.dynamicModelName));
}
}
"genericModalCriteria": {"roles": ["-- select an option --", "network role 1", "network role 2", "network role 3", "network role 4", "network role 5"]},
"name": null,
"flags": {
- "CREATE_INSTANCE_TEST": false,
"EMPTY_DRAWING_BOARD_TEST": false,
"FLAG_NETWORK_TO_ASYNC_INSTANTIATION": false,
"FLAG_ENABLE_WEBPACK_MODERN_UI": true,
"global": {
"name": null,
"flags": {
- "CREATE_INSTANCE_TEST": false,
"EMPTY_DRAWING_BOARD_TEST": false,
"FLAG_NETWORK_TO_ASYNC_INSTANTIATION": false,
"FLAG_ADD_MSO_TESTAPI_FIELD": true,
"FLAG_FABRIC_CONFIGURATION_ASSIGNMENTS": true,
"FLAG_SHOW_VERIFY_SERVICE": false,
"FLAG_SERVICE_MODEL_CACHE": true,
- "CREATE_INSTANCE_TEST": false,
"FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD": false,
- "EMPTY_DRAWING_BOARD_TEST": false,
"FLAG_ADD_MSO_TESTAPI_FIELD": true
},
"type": "[FLAGS] Update"
"FLAG_FABRIC_CONFIGURATION_ASSIGNMENTS": true,
"FLAG_SHOW_VERIFY_SERVICE": false,
"FLAG_SERVICE_MODEL_CACHE": true,
- "CREATE_INSTANCE_TEST": false,
"FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD": false,
- "EMPTY_DRAWING_BOARD_TEST": false,
"FLAG_ADD_MSO_TESTAPI_FIELD": true
},
"type": "[FLAGS] Update"
"FLAG_FABRIC_CONFIGURATION_ASSIGNMENTS": true,
"FLAG_SHOW_VERIFY_SERVICE": false,
"FLAG_SERVICE_MODEL_CACHE": true,
- "CREATE_INSTANCE_TEST": false,
"FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD": false,
- "EMPTY_DRAWING_BOARD_TEST": false,
"FLAG_ADD_MSO_TESTAPI_FIELD": true
},
"type": "[FLAGS] Update"
"FLAG_FABRIC_CONFIGURATION_ASSIGNMENTS": true,
"FLAG_SHOW_VERIFY_SERVICE": false,
"FLAG_SERVICE_MODEL_CACHE": true,
- "CREATE_INSTANCE_TEST": false,
"FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD": false,
- "EMPTY_DRAWING_BOARD_TEST": false,
"FLAG_ADD_MSO_TESTAPI_FIELD": true
},
"type": "[FLAGS] Update"
"type": "UPDATE_DRAWING_BOARD_STATUS",
"drawingBoardStatus": "CREATE",
"flags": {
- "CREATE_INSTANCE_TEST": false,
- "EMPTY_DRAWING_BOARD_TEST": false,
"FLAG_NETWORK_TO_ASYNC_INSTANTIATION": false,
"FLAG_ADD_MSO_TESTAPI_FIELD": true,
"FLAG_SERVICE_MODEL_CACHE": false,
"FLAG_FABRIC_CONFIGURATION_ASSIGNMENTS": true,
"FLAG_SHOW_VERIFY_SERVICE": false,
"FLAG_SERVICE_MODEL_CACHE": true,
- "CREATE_INSTANCE_TEST": false,
"FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD": false,
- "EMPTY_DRAWING_BOARD_TEST": false,
"FLAG_ADD_MSO_TESTAPI_FIELD": true
},
"type": "[FLAGS] Update"
"FLAG_SHOW_VERIFY_SERVICE": false,
"FLAG_SERVICE_MODEL_CACHE": true,
"FLAG_ADVANCED_PORTS_FILTER": true,
- "CREATE_INSTANCE_TEST": false,
"FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD": false,
"FLAG_REGION_ID_FROM_REMOTE": true,
- "EMPTY_DRAWING_BOARD_TEST": false,
"FLAG_ADD_MSO_TESTAPI_FIELD": true
},
"type": "[FLAGS] Update"
"FLAG_SHOW_VERIFY_SERVICE": false,
"FLAG_SERVICE_MODEL_CACHE": true,
"FLAG_ADVANCED_PORTS_FILTER": true,
- "CREATE_INSTANCE_TEST": false,
"FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD": false,
"FLAG_REGION_ID_FROM_REMOTE": true,
- "EMPTY_DRAWING_BOARD_TEST": false,
"FLAG_ADD_MSO_TESTAPI_FIELD": true
},
"type": "[FLAGS] Update"
"FLAG_SHOW_VERIFY_SERVICE": false,
"FLAG_SERVICE_MODEL_CACHE": true,
"FLAG_ADVANCED_PORTS_FILTER": true,
- "CREATE_INSTANCE_TEST": false,
"FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD": false,
"FLAG_REGION_ID_FROM_REMOTE": true,
- "EMPTY_DRAWING_BOARD_TEST": false,
"FLAG_ADD_MSO_TESTAPI_FIELD": true
},
"type": "[FLAGS] Update"
"FLAG_SHOW_VERIFY_SERVICE": false,
"FLAG_SERVICE_MODEL_CACHE": true,
"FLAG_ADVANCED_PORTS_FILTER": true,
- "CREATE_INSTANCE_TEST": false,
"FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD": false,
"FLAG_REGION_ID_FROM_REMOTE": true,
- "EMPTY_DRAWING_BOARD_TEST": false,
"FLAG_ADD_MSO_TESTAPI_FIELD": true
},
"type": "[FLAGS] Update"
import {FormGroup} from "@angular/forms";
import {VfModulePopuopService} from "../vfModule/vfModule.popuop.service";
import {FormPopupDetails} from "../../../../models/formControlModels/formPopupDetails.model";
+import {updateVFModuleField, upgradeVFModule} from "../../../../storeUtil/utils/vfModule/vfModule.actions";
+import {SharedTreeService} from "../../../../../drawingBoard/service-planning/objectsToTree/shared.tree.service";
+import {NgRedux} from "@angular-redux/store";
+import {AppState} from "../../../../store/reducers";
+import {BasicControlGenerator} from "../../../genericForm/formControlsServices/basic.control.generator";
+import {VfModuleControlGenerator} from "../../../genericForm/formControlsServices/vfModuleGenerator/vfModule.control.generator";
+import {IframeService} from "../../../../utils/iframe.service";
+import {DefaultDataGeneratorService} from "../../../../services/defaultDataServiceGenerator/default.data.generator.service";
+import {AaiService} from "../../../../services/aaiService/aai.service";
+import {BasicPopupService} from "../basic.popup.service";
+import {
+ FormControlModel
+} from "../../../../models/formControlModels/formControl.model";
+import {CheckboxFormControl} from "../../../../models/formControlModels/checkboxFormControl.model";
+import {FormControlType} from "../../../../models/formControlModels/formControlTypes.enum";
@Injectable()
export class VfModuleUpgradePopupService extends VfModulePopuopService {
+ constructor(protected _basicControlGenerator: BasicControlGenerator,
+ protected _vfModuleControlGenerator: VfModuleControlGenerator,
+ protected _iframeService: IframeService,
+ protected _defaultDataGeneratorService: DefaultDataGeneratorService,
+ protected _aaiService: AaiService,
+ protected _basicPopupService : BasicPopupService,
+ protected _store: NgRedux<AppState>,
+ private _sharedTreeService : SharedTreeService){
+ super(_basicControlGenerator, _vfModuleControlGenerator, _iframeService, _defaultDataGeneratorService, _aaiService, _basicPopupService,_store);
+ }
node: ITreeNode;
getGenericFormPopupDetails(serviceId: string, vnfStoreKey: string, vfModuleStoreKey: string, node: ITreeNode, uuidData: Object, isUpdateMode: boolean): FormPopupDetails {
}
getDynamicInputs = () => [];
- getControls = () => [];
+
+ getControls = () : FormControlModel[] => {
+ return [
+ new CheckboxFormControl({
+ type: FormControlType.CHECKBOX,
+ controlName: 'retainAssignments',
+ displayName: 'Retain Assignments',
+ dataTestId: 'retainAssignments',
+ value: true,
+ validations: []
+ })
+ ];
+ };
+
+
getTitle = (): string => 'Upgrade Module';
onSubmit(that, form: FormGroup) {
- //that.storeVFModule(that, form.value);
+ const node = that.uuidData.vfModule;
+ const serviceInstanceId: string = that.uuidData.serviceId;
+
+ this._store.dispatch(upgradeVFModule(node.data.modelName, node.parent.data.vnfStoreKey, serviceInstanceId ,node.data.dynamicModelName));
+ this._sharedTreeService.upgradeBottomUp(node, serviceInstanceId);
+ this._store.dispatch(updateVFModuleField(node.data.modelName, node.parent.data.vnfStoreKey, serviceInstanceId ,node.data.dynamicModelName, 'retainAssignments', form.controls['retainAssignments'].value));
+
this.postSubmitIframeMessage(that);
this.onCancel(that, form);
}
import {FeatureFlagsService} from "../../../../services/featureFlag/feature-flags.service";
import {getTestBed, TestBed} from "@angular/core/testing";
import {VfModuleUpgradePopupService} from "./vfModule.upgrade.popuop.service";
+import {SharedTreeService} from "../../../../../drawingBoard/service-planning/objectsToTree/shared.tree.service";
class MockModalService<T> {
}
AaiService,
LogService,
BasicPopupService,
+ SharedTreeService,
{provide: FeatureFlagsService, useClass: MockFeatureFlagsService},
{provide: NgRedux, useClass: MockReduxStore},
{provide: HttpClient, useClass: MockAppStore},
expect(service.getTitle()).toBe("Upgrade Module")
});
+ test('get controls should return retainAssignments control with false i', ()=> {
+
+ const controls = service.getControls();
+
+ const retainAssignmentsControl = controls.find((control)=>{
+ return control.controlName === 'retainAssignments';
+ });
+
+ expect(retainAssignmentsControl).toBeDefined();
+ expect(retainAssignmentsControl.value).toBeTruthy();
+ });
});
"FLAG_SHOW_VERIFY_SERVICE": false,
"FLAG_SERVICE_MODEL_CACHE": true,
"FLAG_ADVANCED_PORTS_FILTER": true,
- "CREATE_INSTANCE_TEST": false,
"FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD": false,
"FLAG_REGION_ID_FROM_REMOTE": true,
- "EMPTY_DRAWING_BOARD_TEST": false,
"FLAG_ADD_MSO_TESTAPI_FIELD": true
},
"type": "[FLAGS] Update"
"FLAG_SHOW_VERIFY_SERVICE": false,
"FLAG_SERVICE_MODEL_CACHE": true,
"FLAG_ADVANCED_PORTS_FILTER": true,
- "CREATE_INSTANCE_TEST": false,
"FLAG_SETTING_DEFAULTS_IN_DRAWING_BOARD": false,
"FLAG_REGION_ID_FROM_REMOTE": true,
- "EMPTY_DRAWING_BOARD_TEST": false,
"FLAG_ADD_MSO_TESTAPI_FIELD": true
},
"type": "[FLAGS] Update"
UPDATE_VFMODULE_POSITION = "UPDATE_VFMODULE_POSITION",
UPGRADE_VFMODULE = "UPGRADE_VFMODULE",
UNDO_UPGRADE_VFMODULE_ACTION = "UNDO_UPGRADE_VFMODULE_ACTION",
+ UPDATE_VFMODULE_FEILD = "UPDATE_VFMODULE_FEILD",
+ DELETE_VFMODULE_FEILD = "DELETE_VFMODULE_FEILD",
}
dynamicModelName: string;
}
+export interface UpdateVFModuleField extends Action {
+ modelName : string;
+ vnfStoreKey : string;
+ serviceId: string;
+ dynamicModelName: string;
+ fieldName: string;
+ fieldValue : any;
+}
+
+export interface DeleteVFModuleField extends Action {
+ modelName : string;
+ vnfStoreKey : string;
+ serviceId: string;
+ dynamicModelName: string;
+ deleteFieldName: string;
+}
+
export interface UndoDeleteActionVfModuleInstanceAction extends Action {
dynamicModelName: string;
vnfStoreKey : string;
vnfStoreKey,
serviceId
});
+
+export const updateVFModuleField: ActionCreator<UpdateVFModuleField> = (modelName, vnfStoreKey, serviceId, dynamicModelName, fieldName, fieldValue) => ({
+ type: VfModuleActions.UPDATE_VFMODULE_FEILD,
+ dynamicModelName,
+ modelName,
+ vnfStoreKey,
+ serviceId,
+ fieldName,
+ fieldValue
+});
+
+export const deleteVFModuleField: ActionCreator<DeleteVFModuleField> = (modelName, vnfStoreKey, serviceId, dynamicModelName, deleteFieldName) => ({
+ type: VfModuleActions.DELETE_VFMODULE_FEILD,
+ dynamicModelName,
+ modelName,
+ vnfStoreKey,
+ serviceId,
+ deleteFieldName
+});
import {
CreateVFModuleInstanceAction,
- DeleteActionVfModuleInstanceAction,
+ DeleteActionVfModuleInstanceAction, DeleteVFModuleField,
DeleteVfModuleInstanceAction,
UndoDeleteActionVfModuleInstanceAction,
- UpdateVFModluePosition,
+ UpdateVFModluePosition, UpdateVFModuleField,
UpgradeVfModuleInstanceAction,
VfModuleActions
} from "./vfModule.actions";
describe('vfModuleReducer', () => {
test('#REMOVE_VNF_MODULE_INSTANCE : should delete existing vnf module by dynamicModelName', () => {
- let state = vfModuleReducer(<any>{serviceInstance : {
- 'serviceModelId' : {
- vnfs : {
- 'vfName' : {
- vfModules : {
- 'modelName' : {
+ let state = vfModuleReducer(<any>{
+ serviceInstance: {
+ 'serviceModelId': {
+ vnfs: {
+ 'vfName': {
+ vfModules: {
+ 'modelName': {
'dynamicModelName1': {},
'dynamicModelName2': {},
}
}
}
}
- }},
+ }
+ },
<DeleteVfModuleInstanceAction>{
type: VfModuleActions.REMOVE_VNF_MODULE_INSTANCE,
- modelName : 'modelName',
- vfName : 'vfName',
- vnfStoreKey : 'vfName',
- serviceModelId : 'serviceModelId',
+ modelName: 'modelName',
+ vfName: 'vfName',
+ vnfStoreKey: 'vfName',
+ serviceModelId: 'serviceModelId',
dynamicModelName: 'dynamicModelName1'
});
});
test('#DELETE_LAST_VNF_MODULE_INSTANCE : should delete existing vnf module', () => {
- let state = vfModuleReducer(<any>{serviceInstance : {
- 'serviceModelId' : {
- vnfs : {
- 'vfName' : {
- vfModules : {
- 'modelName' : {
- 'dynamicModelName': {
- }
+ let state = vfModuleReducer(<any>{
+ serviceInstance: {
+ 'serviceModelId': {
+ vnfs: {
+ 'vfName': {
+ vfModules: {
+ 'modelName': {
+ 'dynamicModelName': {}
}
}
}
}
}
- }},
+ }
+ },
<DeleteVfModuleInstanceAction>{
type: VfModuleActions.REMOVE_VNF_MODULE_INSTANCE,
- modelName : 'modelName',
- vfName : 'vfName',
- vnfStoreKey : 'vfName',
- serviceModelId : 'serviceModelId',
+ modelName: 'modelName',
+ vfName: 'vfName',
+ vnfStoreKey: 'vfName',
+ serviceModelId: 'serviceModelId',
dynamicModelName: 'dynamicModelName'
});
expect(state.serviceInstance['serviceModelId'].vnfs['vfName'].vfModules['modelName']).not.toBeDefined();
});
- test('#CREATE_VF_MODULE: should create new vfModule to existing VNF', ()=>{
- let vfModuleInstance : VfModuleInstance = new VfModuleInstance();
+ test('#CREATE_VF_MODULE: should create new vfModule to existing VNF', () => {
+ let vfModuleInstance: VfModuleInstance = new VfModuleInstance();
vfModuleInstance.instanceName = 'instanceName';
vfModuleInstance.isMissingData = false;
vfModuleInstance.volumeGroupName = 'volumeGroupName';
- let vfModule = vfModuleReducer(<any>{serviceInstance : {
- 'serviceUuid' : {
- vnfs : {
- 'vnfStoreKey' : {
- 'vfModules' : {
- }
+ let vfModule = vfModuleReducer(<any>{
+ serviceInstance: {
+ 'serviceUuid': {
+ vnfs: {
+ 'vnfStoreKey': {
+ 'vfModules': {}
}
}
}
- }},
+ }
+ },
<CreateVFModuleInstanceAction>{
type: VfModuleActions.CREATE_VF_MODULE,
- vfId : 'vfId',
- vfInstance : new VfModuleInstance(),
- vnfStoreKey : 'vnfStoreKey',
- serviceUuid : 'serviceUuid',
- index : 1
+ vfId: 'vfId',
+ vfInstance: new VfModuleInstance(),
+ vnfStoreKey: 'vnfStoreKey',
+ serviceUuid: 'serviceUuid',
+ index: 1
}).serviceInstance['serviceUuid'].vnfs['vnfStoreKey'].vfModules;
let firstVfModuleName = Object.keys(vfModule)[0];
expect(vfModule[firstVfModuleName].isMissingData).toBeFalsy();
});
- test('#UPDATE_VF_MODULE: should update existing VFModule', ()=>{
- let vfModuleInstance : VfModuleInstance = new VfModuleInstance();
- vfModuleInstance.instanceName = 'instanceName';
- vfModuleInstance.isMissingData = false;
- vfModuleInstance.volumeGroupName = 'volumeGroupName';
- let vfModule = vfModuleReducer(<any>{
- serviceHierarchy : {
- 'serviceModelId' : {}
+ test('#UPDATE_VFMODULE_FEILD: should update field with some value', () => {
+ const newFieldName = 'newFieldName';
+ const newFieldValue = 'newFieldValue';
+ let oldState = {
+ serviceHierarchy: {
+ 'serviceModelId': {}
+ },
+ serviceInstance: {
+ 'serviceModelId': {
+ vnfs: {
+ 'vnfStoreKey': {
+ vfModules: {
+ 'modelName': {
+ 'dynamicModelName1': {
+ isMissingData: true,
+ action: 'None'
+ },
+ 'dynamicModelName2': {},
+ }
+ }
+ }
+ }
+ }
+ }
+ };
+
+ let newState = vfModuleReducer(<any>oldState,
+ <UpdateVFModuleField>{
+ type: VfModuleActions.UPDATE_VFMODULE_FEILD,
+ dynamicModelName: 'dynamicModelName1',
+ vnfStoreKey: 'vnfStoreKey',
+ serviceId: 'serviceModelId',
+ modelName: 'modelName',
+ fieldName: newFieldName,
+ fieldValue: newFieldValue
+ });
+
+ let vfModule = newState.serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['modelName']['dynamicModelName1'];
+
+ expect(vfModule[newFieldName]).toEqual(newFieldValue);
+ });
+
+ test('#DELETE_VFMODULE_FEILD: should update field with some value', () => {
+ const deleteFieldName = 'deleteFieldName';
+ let oldState = {
+ serviceHierarchy: {
+ 'serviceModelId': {}
},
- serviceInstance : {
- 'serviceModelId' : {
- vnfs : {
- 'vfName' : {
- vfModules : {
- 'modelName' : {
+ serviceInstance: {
+ 'serviceModelId': {
+ vnfs: {
+ 'vnfStoreKey': {
+ vfModules: {
+ 'modelName': {
'dynamicModelName1': {
- isMissingData : true
+ isMissingData: true,
+ [deleteFieldName]: true,
+ action: 'None'
},
'dynamicModelName2': {},
}
}
}
}
- }},
- <CreateVFModuleInstanceAction>{
- type: VfModuleActions.UPDATE_VF_MODULE,
- vfId : 'modelName',
- vfInstance : new VfModuleInstance(),
- vnfStoreKey : 'vfName',
- dynamicModelName : 'dynamicModelName1',
- serviceUuid : 'serviceModelId',
- index : 1
- }).serviceInstance['serviceModelId'].vnfs['vfName'].vfModules;
+ }
+ };
+ let newState = vfModuleReducer(<any>oldState,
+ <DeleteVFModuleField>{
+ type: VfModuleActions.DELETE_VFMODULE_FEILD,
+ dynamicModelName: 'dynamicModelName1',
+ vnfStoreKey: 'vnfStoreKey',
+ serviceId: 'serviceModelId',
+ modelName: 'modelName',
+ deleteFieldName: deleteFieldName,
+ });
- let firstVfModuleName = Object.keys(vfModule)[0];
- expect(vfModule[firstVfModuleName]).toBeDefined();
- expect(vfModule[firstVfModuleName].isMissingData).toBeFalsy();
- });
+ let vfModule = newState.serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['modelName']['dynamicModelName1'];
+ expect(vfModule[deleteFieldName]).toBeUndefined();
+});
- test('#UPDATE_VFMODULE_POSITION: should update position', ()=>{
- let vfModule = vfModuleReducer(<any>{
- serviceHierarchy : {
- 'serviceModelId' : {}
- },
- serviceInstance : {
- 'serviceModelId' : {
- vnfs : {
- 'vfName' : {
- vfModules : {
- 'modelName' : {
- 'dynamicModelName': {
- isMissingData : true
- }
+test('#UPDATE_VFMODULE_POSITION: should update position', () => {
+ let vfModule = vfModuleReducer(<any>{
+ serviceHierarchy: {
+ 'serviceModelId': {}
+ },
+ serviceInstance: {
+ 'serviceModelId': {
+ vnfs: {
+ 'vfName': {
+ vfModules: {
+ 'modelName': {
+ 'dynamicModelName': {
+ isMissingData: true
}
}
}
}
}
- }},
- <UpdateVFModluePosition>{
- type: VfModuleActions.UPDATE_VFMODULE_POSITION,
- node: {
- position : 1,
- dynamicModelName : "dynamicModelName",
- modelName : "modelName"
- },
- instanceId : "serviceModelId",
- vnfStoreKey : "vfName"
+ }
+ }
+ },
+ <UpdateVFModluePosition>{
+ type: VfModuleActions.UPDATE_VFMODULE_POSITION,
+ node: {
+ position: 1,
+ dynamicModelName: "dynamicModelName",
+ modelName: "modelName"
+ },
+ instanceId: "serviceModelId",
+ vnfStoreKey: "vfName"
- }).serviceInstance['serviceModelId'].vnfs['vfName'].vfModules["modelName"]["dynamicModelName"];
-
- expect(vfModule.position).toEqual(1);
- });
+ }).serviceInstance['serviceModelId'].vnfs['vfName'].vfModules["modelName"]["dynamicModelName"];
+ expect(vfModule.position).toEqual(1);
+});
- test('#DELETE_ACTION_VF_MODULE_INSTANCE', ()=>{
- let vfModule = vfModuleReducer(<any>{
- serviceHierarchy : {
- 'serviceModelId' : {}
- },
- serviceInstance : {
- 'serviceModelId' : {
- vnfs : {
- 'vnfStoreKey' : {
- vfModules : {
- 'modelName' : {
- 'dynamicModelName1': {
- isMissingData : true,
- action : 'None'
- },
- 'dynamicModelName2': {},
- }
+test('#DELETE_ACTION_VF_MODULE_INSTANCE', () => {
+ let vfModule = vfModuleReducer(<any>{
+ serviceHierarchy: {
+ 'serviceModelId': {}
+ },
+ serviceInstance: {
+ 'serviceModelId': {
+ vnfs: {
+ 'vnfStoreKey': {
+ vfModules: {
+ 'modelName': {
+ 'dynamicModelName1': {
+ isMissingData: true,
+ action: 'None'
+ },
+ 'dynamicModelName2': {},
}
}
}
}
- }},
- <DeleteActionVfModuleInstanceAction>{
- type: VfModuleActions.DELETE_ACTION_VF_MODULE_INSTANCE,
- dynamicModelName: 'dynamicModelName1',
- vnfStoreKey : 'vnfStoreKey',
- serviceId: 'serviceModelId'
- }).serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['modelName']['dynamicModelName1'];
+ }
+ }
+ },
+ <DeleteActionVfModuleInstanceAction>{
+ type: VfModuleActions.DELETE_ACTION_VF_MODULE_INSTANCE,
+ dynamicModelName: 'dynamicModelName1',
+ vnfStoreKey: 'vnfStoreKey',
+ serviceId: 'serviceModelId'
+ }).serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['modelName']['dynamicModelName1'];
- console.log(vfModule.action);
- expect(vfModule).toBeDefined();
- expect(vfModule.isMissingData).toBeTruthy();
- expect(vfModule.action).toEqual(ServiceInstanceActions.None_Delete);
- });
+ console.log(vfModule.action);
+ expect(vfModule).toBeDefined();
+ expect(vfModule.isMissingData).toBeTruthy();
+ expect(vfModule.action).toEqual(ServiceInstanceActions.None_Delete);
+});
- test('#UNDO_DELETE_ACTION_VF_MODULE_INSTANCE', ()=>{
- let vfModule = vfModuleReducer(<any>{
- serviceHierarchy : {
- 'serviceModelId' : {}
- },
- serviceInstance : {
- 'serviceModelId' : {
- vnfs : {
- 'vnfStoreKey' : {
- vfModules : {
- 'modelName' : {
- 'dynamicModelName1': {
- isMissingData : true,
- action : 'None_Delete'
- },
- 'dynamicModelName2': {},
- }
+test('#UNDO_DELETE_ACTION_VF_MODULE_INSTANCE', () => {
+ let vfModule = vfModuleReducer(<any>{
+ serviceHierarchy: {
+ 'serviceModelId': {}
+ },
+ serviceInstance: {
+ 'serviceModelId': {
+ vnfs: {
+ 'vnfStoreKey': {
+ vfModules: {
+ 'modelName': {
+ 'dynamicModelName1': {
+ isMissingData: true,
+ action: 'None_Delete'
+ },
+ 'dynamicModelName2': {},
}
}
}
}
- }},
- <UndoDeleteActionVfModuleInstanceAction>{
- type: VfModuleActions.UNDO_DELETE_ACTION_VF_MODULE_INSTANCE,
- dynamicModelName: 'dynamicModelName1',
- vnfStoreKey : 'vnfStoreKey',
- serviceId: 'serviceModelId'
- }).serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['modelName']['dynamicModelName1'];
+ }
+ }
+ },
+ <UndoDeleteActionVfModuleInstanceAction>{
+ type: VfModuleActions.UNDO_DELETE_ACTION_VF_MODULE_INSTANCE,
+ dynamicModelName: 'dynamicModelName1',
+ vnfStoreKey: 'vnfStoreKey',
+ serviceId: 'serviceModelId'
+ }).serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['modelName']['dynamicModelName1'];
- console.log(vfModule.action);
- expect(vfModule).toBeDefined();
- expect(vfModule.action).toEqual(ServiceInstanceActions.None);
- });
+ console.log(vfModule.action);
+ expect(vfModule).toBeDefined();
+ expect(vfModule.action).toEqual(ServiceInstanceActions.None);
+});
- test('#UPGRADE_VFMODULE', ()=>{
- let vfModule = vfModuleReducer(<any>{
- serviceHierarchy : {
- 'serviceModelId' : {}
- },
- serviceInstance : {
- 'serviceModelId' : {
- vnfs : {
- 'vnfStoreKey' : {
- vfModules : {
- 'modelName' : {
- 'dynamicModelName1': {
- isMissingData : true,
- action : 'None'
- },
- 'dynamicModelName2': {},
- }
+test('#UPGRADE_VFMODULE', () => {
+ let vfModule = vfModuleReducer(<any>{
+ serviceHierarchy: {
+ 'serviceModelId': {}
+ },
+ serviceInstance: {
+ 'serviceModelId': {
+ vnfs: {
+ 'vnfStoreKey': {
+ vfModules: {
+ 'modelName': {
+ 'dynamicModelName1': {
+ isMissingData: true,
+ action: 'None'
+ },
+ 'dynamicModelName2': {},
}
}
}
}
- }},
- <UpgradeVfModuleInstanceAction>{
- type: VfModuleActions.UPGRADE_VFMODULE,
- dynamicModelName: 'dynamicModelName1',
- vnfStoreKey : 'vnfStoreKey',
- serviceId: 'serviceModelId',
- modelName: 'modelName'
- }).serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['modelName']['dynamicModelName1'];
+ }
+ }
+ },
+ <UpgradeVfModuleInstanceAction>{
+ type: VfModuleActions.UPGRADE_VFMODULE,
+ dynamicModelName: 'dynamicModelName1',
+ vnfStoreKey: 'vnfStoreKey',
+ serviceId: 'serviceModelId',
+ modelName: 'modelName'
+ }).serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['modelName']['dynamicModelName1'];
- expect(vfModule.action).toEqual(ServiceInstanceActions.None_Upgrade);
- });
+ expect(vfModule.action).toEqual(ServiceInstanceActions.None_Upgrade);
+});
- test('#UNDO_UPGRADE_VFMODULE', ()=>{
- let vfModule = vfModuleReducer(<any>{
- serviceHierarchy : {
- 'serviceModelId' : {}
- },
- serviceInstance : {
- 'serviceModelId' : {
- vnfs : {
- 'vnfStoreKey' : {
- vfModules : {
- 'modelName' : {
- 'dynamicModelName1': {
- isMissingData : true,
- action : 'None_Upgrade'
- },
- 'dynamicModelName2': {},
- }
+test('#UNDO_UPGRADE_VFMODULE', () => {
+ let vfModule = vfModuleReducer(<any>{
+ serviceHierarchy: {
+ 'serviceModelId': {}
+ },
+ serviceInstance: {
+ 'serviceModelId': {
+ vnfs: {
+ 'vnfStoreKey': {
+ vfModules: {
+ 'modelName': {
+ 'dynamicModelName1': {
+ isMissingData: true,
+ action: 'None_Upgrade'
+ },
+ 'dynamicModelName2': {},
}
}
}
}
- }},
- <UpgradeVfModuleInstanceAction>{
- type: VfModuleActions.UNDO_UPGRADE_VFMODULE_ACTION,
- dynamicModelName: 'dynamicModelName1',
- vnfStoreKey : 'vnfStoreKey',
- serviceId: 'serviceModelId',
- modelName: 'modelName'
- }).serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['modelName']['dynamicModelName1'];
-
- expect(vfModule.action).toEqual(ServiceInstanceActions.None);
- });
+ }
+ }
+ },
+ <UpgradeVfModuleInstanceAction>{
+ type: VfModuleActions.UNDO_UPGRADE_VFMODULE_ACTION,
+ dynamicModelName: 'dynamicModelName1',
+ vnfStoreKey: 'vnfStoreKey',
+ serviceId: 'serviceModelId',
+ modelName: 'modelName'
+ }).serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['modelName']['dynamicModelName1'];
+ expect(vfModule.action).toEqual(ServiceInstanceActions.None);
});
+
+})
+;
import {Action} from "redux";
import * as _ from "lodash";
import {
- CreateVFModuleInstanceAction, DeleteActionVfModuleInstanceAction,
- DeleteVfModuleInstanceAction, UndoDeleteActionVfModuleInstanceAction, UpdateVFModluePosition,
+ CreateVFModuleInstanceAction, DeleteActionVfModuleInstanceAction, DeleteVFModuleField,
+ DeleteVfModuleInstanceAction, UndoDeleteActionVfModuleInstanceAction, UpdateVFModluePosition, UpdateVFModuleField,
UpdateVFModuleInstanceAction, UpgradeVfModuleInstanceAction,
- VfModuleActions
+ VfModuleActions,
} from "./vfModule.actions";
import {ServiceInstance} from "../../../models/serviceInstance";
import {VfModuleMap} from "../../../models/vfModulesMap";
}
return clonedState;
}
+ case VfModuleActions.UPDATE_VFMODULE_FEILD : {
+ let clonedState = _.cloneDeep(state);
+ let updateFieldAction = <UpdateVFModuleField> action;
+
+ clonedState.serviceInstance[updateFieldAction.serviceId]
+ .vnfs[updateFieldAction.vnfStoreKey]
+ .vfModules[updateFieldAction.modelName][updateFieldAction.dynamicModelName][updateFieldAction.fieldName] = updateFieldAction.fieldValue;
+
+ return clonedState;
+ }
+ case VfModuleActions.DELETE_VFMODULE_FEILD : {
+ let clonedState = _.cloneDeep(state);
+ let deleteAction = <DeleteVFModuleField> action;
+
+ delete clonedState.serviceInstance[deleteAction.serviceId]
+ .vnfs[deleteAction.vnfStoreKey]
+ .vfModules[deleteAction.modelName][deleteAction.dynamicModelName][deleteAction.deleteFieldName];
+
+ return clonedState;
+ }
}
}