aboutsummaryrefslogtreecommitdiffstats
path: root/mso-api-handlers/mso-api-handler-common
AgeCommit message (Expand)AuthorFilesLines
2018-03-27UT Coverage for API HandlerAbhishek Shekhar1-2/+25
2018-03-22Add Pojo Validations CamundaBeansSmokowski, Steve (ss835w)5-4/+76
2018-03-20Add UT for BpmnRequestTestsubhash kumar singh1-0/+178
2018-03-14AT&T 1712 and 1802 release codeRob Daugherty20-120/+105
2018-03-09Revert Reduce log noise/warningsRob Daugherty5-147/+166
2018-03-09Remove redundant groupId inherited from parentMunir Ahmad1-2/+0
2018-03-08Reduce log noise/warnings format to conventionsMarcus G K Williams5-166/+147
2018-03-07Remove unnecessary String constructor callMunir Ahmad2-5/+10
2018-02-28Add Properties Order for recipeParamsc001491071-1/+1
2018-02-27Add recipe params for bpmn callc001491076-10/+23
2018-02-22Port SO artifacts to ONAP folder structureArthur Martella1-4/+4
2018-02-08Fix some Sonar Blocker issues in apihandler/commonShashank Kumar Shankar9-59/+38
2017-12-01Bump minor versionJessica Wagantall1-1/+1
2017-11-16changed artifact versionseshukm1-1/+1
2017-10-05Moved "" string literal on the left side.rama-huawei1-1/+1
2017-09-30Commenting for empty constructorAnkit-Huawei3-12/+9
2017-09-28Merge "Fix some major sonar issues"Seshu Kumar M1-1/+1
2017-09-28Merge "Removed useless assignment to local variables"Seshu Kumar M1-2/+2
2017-09-28Removed useless assignment to local variablesrama-huawei1-2/+2
2017-09-27Fix some major sonar issuessurya-huawei1-1/+1
2017-09-26Removed useless assignment to variablesrama-huawei1-1/+1
2017-09-25Rename "status" which hides the class fieldrama-huawei2-12/+12
2017-09-11Change the header to SOSeshu-Kumar-M27-27/+27
2017-09-081710 Rebase - Second AttemptArthur Martella7-8/+159
2017-08-04Failed to deploy so artifacts in nexus (again)Rob Daugherty1-4/+4
2017-08-01Failed to deploy so artifacts in nexusRob Daugherty1-4/+4
2017-07-19Fix artifact group IDs (org.openecomp.so)Rob Daugherty1-4/+4
2017-05-02[MSO-8] Second step of the rebase for MSODeterme, Sebastien (sd378r)1-36/+36
2017-04-11[MSO-8] Update the maven dependencyxg353y8-54/+31
2017-03-13Update to version 1.1.0ChrisC1-5/+5
2017-01-31Initial OpenECOMP MSO commitChrisC28-0/+2946
r */ .highlight .k { color: #66d9ef } /* Keyword */ .highlight .l { color: #ae81ff } /* Literal */ .highlight .n { color: #f8f8f2 } /* Name */ .highlight .o { color: #f92672 } /* Operator */ .highlight .p { color: #f8f8f2 } /* Punctuation */ .highlight .ch { color: #75715e } /* Comment.Hashbang */ .highlight .cm { color: #75715e } /* Comment.Multiline */ .highlight .cp { color: #75715e } /* Comment.Preproc */ .highlight .cpf { color: #75715e } /* Comment.PreprocFile */ .highlight .c1 { color: #75715e } /* Comment.Single */ .highlight .cs { color: #75715e } /* Comment.Special */ .highlight .gd { color: #f92672 } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .gi { color: #a6e22e } /* Generic.Inserted */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #75715e } /* Generic.Subheading */ .highlight .kc { color: #66d9ef } /* Keyword.Constant */ .highlight .kd { color: #66d9ef } /* Keyword.Declaration */ .highlight .kn { color: #f92672 } /* Keyword.Namespace */ .highlight .kp { color: #66d9ef } /* Keyword.Pseudo */ .highlight .kr { color: #66d9ef } /* Keyword.Reserved */ .highlight .kt { color: #66d9ef } /* Keyword.Type */ .highlight .ld { color: #e6db74 } /* Literal.Date */ .highlight .m { color: #ae81ff } /* Literal.Number */ .highlight .s { color: #e6db74 } /* Literal.String */ .highlight .na { color: #a6e22e } /* Name.Attribute */ .highlight .nb { color: #f8f8f2 } /* Name.Builtin */ .highlight .nc { color: #a6e22e } /* Name.Class */ .highlight .no { color: #66d9ef } /* Name.Constant */ .highlight .nd { color: #a6e22e } /* Name.Decorator */ .highlight .ni { color: #f8f8f2 } /* Name.Entity */ .highlight .ne { color: #a6e22e } /* Name.Exception */ .highlight .nf { color: #a6e22e } /* Name.Function */ .highlight .nl { color: #f8f8f2 } /* Name.Label */ .highlight .nn { color: #f8f8f2 } /* Name.Namespace */ .highlight .nx { color: #a6e22e } /* Name.Other */ .highlight .py { color: #f8f8f2 } /* Name.Property */ .highlight .nt { color: #f92672 } /* Name.Tag */ .highlight .nv { color: #f8f8f2 } /* Name.Variable */ .highlight .ow { color: #f92672 } /* Operator.Word */ .highlight .w { color: #f8f8f2 } /* Text.Whitespace */ .highlight .mb { color: #ae81ff } /* Literal.Number.Bin */ .highlight .mf { color: #ae81ff } /* Literal.Number.Float */ .highlight .mh { color: #ae81ff } /* Literal.Number.Hex */ .highlight .mi { color: #ae81ff } /* Literal.Number.Integer */ .highlight .mo { color: #ae81ff } /* Literal.Number.Oct */ .highlight .sa { color: #e6db74 } /* Literal.String.Affix */ .highlight .sb { color: #e6db74 } /* Literal.String.Backtick */ .highlight .sc { color: #e6db74 } /* Literal.String.Char */ .highlight .dl { color: #e6db74 } /* Literal.String.Delimiter */ .highlight .sd { color: #e6db74 } /* Literal.String.Doc */ .highlight .s2 { color: #e6db74 } /* Literal.String.Double */ .highlight .se { color: #ae81ff } /* Literal.String.Escape */ .highlight .sh { color: #e6db74 } /* Literal.String.Heredoc */ .highlight .si { color: #e6db74 } /* Literal.String.Interpol */ .highlight .sx { color: #e6db74 } /* Literal.String.Other */ .highlight .sr { color: #e6db74 } /* Literal.String.Regex */ .highlight .s1 { color: #e6db74 } /* Literal.String.Single */ .highlight .ss { color: #e6db74 } /* Literal.String.Symbol */ .highlight .bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #a6e22e } /* Name.Function.Magic */ .highlight .vc { color: #f8f8f2 } /* Name.Variable.Class */ .highlight .vg { color: #f8f8f2 } /* Name.Variable.Global */ .highlight .vi { color: #f8f8f2 } /* Name.Variable.Instance */ .highlight .vm { color: #f8f8f2 } /* Name.Variable.Magic */ .highlight .il { color: #ae81ff } /* Literal.Number.Integer.Long */ } @media (prefers-color-scheme: light) { .highlight .hll { background-color: #ffffcc } .highlight .c { color: #888888 } /* Comment */ .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ .highlight .k { color: #008800; font-weight: bold } /* Keyword */ .highlight .ch { color: #888888 } /* Comment.Hashbang */ .highlight .cm { color: #888888 } /* Comment.Multiline */ .highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */ .highlight .cpf { color: #888888 } /* Comment.PreprocFile */ .highlight .c1 { color: #888888 } /* Comment.Single */ .highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */ .highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .gr { color: #aa0000 } /* Generic.Error */ .highlight .gh { color: #333333 } /* Generic.Heading */ .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ .highlight .go { color: #888888 } /* Generic.Output */ .highlight .gp { color: #555555 } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #666666 } /* Generic.Subheading */ .highlight .gt { color: #aa0000 } /* Generic.Traceback */ .highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */ }
import {getTestBed, TestBed} from '@angular/core/testing';
import {HttpClientTestingModule, HttpTestingController} from '@angular/common/http/testing';
import {AvailableModelsTreeService} from './available-models-tree.service';
import {ServiceNodeTypes} from "../../../shared/models/ServiceNodeTypes";
import {DefaultDataGeneratorService} from "../../../shared/services/defaultDataServiceGenerator/default.data.generator.service";
import {MessageBoxService} from "../../../shared/components/messageBox/messageBox.service";
import {MessageBoxData} from "../../../shared/components/messageBox/messageBox.data";
import {SdcUiCommon} from "onap-ui-angular";
import {MockNgRedux, NgReduxTestingModule} from "@angular-redux/store/testing";
import {SharedTreeService} from "../objectsToTree/shared.tree.service";

describe('Available Models Tree Service', () => {

  let injector;
  let service: AvailableModelsTreeService;
  let httpMock: HttpTestingController;

  beforeAll(done => (async () => {
    TestBed.configureTestingModule({
      imports: [HttpClientTestingModule, NgReduxTestingModule],
      providers: [AvailableModelsTreeService,
        DefaultDataGeneratorService,
        SharedTreeService,
        MockNgRedux]
    });
    await TestBed.compileComponents();
      injector = getTestBed();
      service = injector.get(AvailableModelsTreeService);
      httpMock = injector.get(HttpTestingController);
  })().then(done).catch(done.fail));


  test('addingAlertAddingNewVfModuleModal should open message modal', () => {
    jest.spyOn(MessageBoxService.openModal, 'next');
    service.addingAlertAddingNewVfModuleModal();

    expect(MessageBoxService.openModal.next).toHaveBeenCalledWith(new MessageBoxData(
      "Select a parent",  // modal title
      "There are multiple instances on the right side that can contain this vf-module Please select the VNF instance, to add this vf-module to, on the right side and then click the + sign",
      SdcUiCommon.ModalType.warning,
      SdcUiCommon.ModalSize.medium,
      [
        {text: "Close", size: "medium", closeModal: true}
      ]));
  });



  describe('#shouldOpenModalDialogOnAddInstance', () => {
    let serviceHierarchy = getServiceServiceHierarchy();

    test('should open popup on add instance', () => {
      // add vnf should return true
      let result = service.shouldOpenDialog(ServiceNodeTypes.VF, [], true);
      expect(result).toBeTruthy();

      //  add vfModule with user provided naming should return true
      result = service.shouldOpenDialog(ServiceNodeTypes.VFmodule, [], false);
      expect(result).toBeTruthy();

      //  add vfModule with dynamicInputs without defaultValues should return true
      result = service.shouldOpenDialog(ServiceNodeTypes.VFmodule, [{
        id: '2017488_pasqualevpe0_vnf_config_template_version',
        type: 'string',
        name: '2017488_pasqualevpe0_vnf_config_template_version',
        isRequired: true,
        description: 'VPE Software Version'
      }], true);
      expect(result).toBeTruthy();

      // add vfModule with dynamicInputs with defaultValues should return false
      result = service.shouldOpenDialog(ServiceNodeTypes.VFmodule, [{
        id: '2017488_pasqualevpe0_vnf_config_template_version',
        type: 'string',
        name: '2017488_pasqualevpe0_vnf_config_template_version',
        value: '17.2',
        isRequired: true,
        description: 'VPE Software Version'
      }], true);
      expect(result).toBeFalsy();
    });
  });


  test('shouldOpenVRFModal', () => {
    const nodes = [{
      "id": "dd024d73-9bd1-425d-9db5-476338d53433",
      "modelCustomizationId": "dd024d73-9bd1-425d-9db5-476338d53433",
      "modelVersionId": "9cac02be-2489-4374-888d-2863b4511a59",
      "modelUniqueId": "dd024d73-9bd1-425d-9db5-476338d53433",
      "name": "VRF Entry Configuration 0",
      "tooltip": "VRF",
      "type": "VRF",
      "count": 0,
      "max": 1,
      "children": [],
      "disabled": false,
      "dynamicInputs": [],
      "isEcompGeneratedNaming": false,
      "typeName": "VRF",
      "componentInfoType": "VRF",
      "getModel" : ()=>{
        return  {
          min : 1
        }
      }
    }];


    const serviceStore = {
      "serviceInstance": {
        "4117a0b6-e234-467d-b5b9-fe2f68c8b0fc": {
          "action": "Create",
          "isDirty": false,
          "vnfs": {},
          "vrfs": {
            "VRF Entry Configuration": {
              "action": "Create",
              "uuid": "9cac02be-2489-4374-888d-2863b4511a59",
              "inputs": {},
              "type": "Configuration",
              "trackById": "s0z58emiprq",
              "modelInfo": {
                "modelInvariantId": "b67a289b-1688-496d-86e8-1583c828be0a",
                "modelVersionId": "69e09f68-8b63-4cc9-b9ff-860960b5db09",
                "modelName": "VRF Entry Configuration",
                "modelVersion": "5.0",
                "modelCustomizationId": "dd024d73-9bd1-425d-9db5-476338d53433",
                "modelUniqueId": "dd024d73-9bd1-425d-9db5-476338d53433",
                "modelCustomizationName": "VRF Entry Configuration",
                "uuid": "9cac02be-2489-4374-888d-2863b4511a59"
              },
              "vpns": {
                "VRF Entry Configuration vpns 1": {
                  "action": "Create",
                  "instanceId": "46fcb25a-e7ba-4d96-99ba-3bb6eae6aba7",
                  "instanceName": "LPPVPN",
                  "platformName": "AVPN",
                  "instanceType": "SERVICE-INFRASTRUCTURE",
                  "region": "USA,EMEA",
                  "customerId": "VPN1271",
                  "modelInfo": {
                    "modelCustomizationId": null,
                    "modelInvariantId": null,
                    "modelVersionId": null
                  },
                  "routeTargets": null,
                  "isSelected": true
                }
              },
              "networks": {
                "VRF Entry Configuration networks 1": {
                  "action ": "Create",
                  "instanceName": "AUK51a_oam_calea_net_0",
                  "instanceType": "SR-IOV-PROVIDER2-0",
                  "role": "role-1",
                  "orchStatus": "Active",
                  "physicalName": "sriovnet0",
                  "instanceId": "46fcb25a-e7ba-4d96-99ba-3bb6eae6aba7",
                  "serviceName": "LPPVPN",
                  "serv§iceUUID": "VPN1271",
                  "tenantName": "ecomp_ispt",
                  "lcpCloudRegionId": "USA,EMEA",
                  "modelInfo": {
                    "modelCustomizationId": "46fcb25a-e7ba-4d96-99ba-3bb6eae6aba7",
                    "modelInvariantId": "46fcb25a-e7ba-4d96-99ba-3bb6eae6aba7",
                    "modelVersionId": "7010093-df36-4dcb-8428-c3d02bf3f88d",
                    "modelType": "vpn"
                  }
                }
              }
            }
          },
          "instanceParams": [],
          "validationCounter": 0,
          "existingNames": {},
          "existingVNFCounterMap": {},
          "existingVRFCounterMap": {},
          "existingVnfGroupCounterMap": {},
          "existingNetworksCounterMap": {},
          "optionalGroupMembersMap": {},
          "networks": {},
          "vnfGroups": {},
          "bulkSize": 1,
          "service": {
            "vidNotions": {
              "instantiationUI": "serviceWithVRF",
              "modelCategory": "other",
              "viewEditUI": "serviceWithVRF",
              "instantiationType": "ALaCarte"
            },
            "uuid": "4117a0b6-e234-467d-b5b9-fe2f68c8b0fc",
            "invariantUuid": "7ee41ce4-4827-44b0-a48e-2707a59905d2",
            "name": "VRF Service for Test",
            "version": "1.0",
            "toscaModelURL": null,
            "category": "Network L4+",
            "serviceType": "INFRASTRUCTURE",
            "serviceRole": "Configuration",
            "description": "xxx",
            "serviceEcompNaming": "true",
            "instantiationType": "A-La-Carte",
            "inputs": {}
          },
          "collectionResources": {},
          "configurations": {},
          "fabricConfigurations": {},
          "serviceProxies": {},
          "vfModules": {},
          "volumeGroups": {},
          "pnfs": {},
          "isALaCarte": true,
          "testApi": "VNF_API",
          "vidNotions": {
            "instantiationUI": "serviceWithVVRF",
            "modelCategory": "other",
            "viewEditUI": "serviceWithVRF",
            "instantiationType": "ALaCarte"
          }
        }
      }
    };

    const serviceModelId :string = '4117a0b6-e234-467d-b5b9-fe2f68c8b0fc';

    let result: boolean = service.shouldOpenVRFModal(nodes,  serviceModelId, serviceStore);
    expect(result).not.toBeNull();

    serviceStore.serviceInstance[serviceModelId].existingVRFCounterMap = {
      "dd024d73-9bd1-425d-9db5-476338d53433" : 1
    };

    result = service.shouldOpenVRFModal(nodes,  serviceModelId, serviceStore);
    expect(result).toBeNull();

  });

  function getServiceServiceHierarchy() {
    return JSON.parse(JSON.stringify(
      {
        '6e59c5de-f052-46fa-aa7e-2fca9d674c44': {
          'service': {
            'uuid': '6e59c5de-f052-46fa-aa7e-2fca9d674c44',
            'invariantUuid': 'e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0',
            'name': 'ComplexService',
            'version': '1.0',
            'toscaModelURL': null,
            'category': 'Emanuel',
            'serviceType': '',
            'serviceRole': '',
            'description': 'ComplexService',
            'serviceEcompNaming': 'true',
            'instantiationType': 'Macro',
            'inputs': {}
          },
          'vnfs': {
            'VF_vGeraldine 0': {
              'uuid': 'd6557200-ecf2-4641-8094-5393ae3aae60',
              'invariantUuid': '4160458e-f648-4b30-a176-43881ffffe9e',
              'description': 'VSP_vGeraldine',
              'name': 'VF_vGeraldine',
              'version': '2.0',
              'customizationUuid': '91415b44-753d-494c-926a-456a9172bbb9',
              'inputs': {},
              'commands': {},
              'properties': {
                'max_instances': '3',
                'min_instances': '1',
                'gpb2_Internal2_mac': '00:11:22:EF:AC:DF',
                'sctp-b-ipv6-egress_src_start_port': '0',
                'sctp-a-ipv6-egress_rule_application': 'any',
                'Internal2_allow_transit': 'true',
                'sctp-b-IPv6_ethertype': 'IPv6',
                'sctp-a-egress_rule_application': 'any',
                'sctp-b-ingress_action': 'pass',
                'sctp-b-ingress_rule_protocol': 'icmp',
                'ncb2_Internal1_mac': '00:11:22:EF:AC:DF',
                'sctp-b-ipv6-ingress-src_start_port': '0.0',
                'ncb1_Internal2_mac': '00:11:22:EF:AC:DF',
                'fsb_volume_size_0': '320.0',
                'sctp-b-egress_src_addresses': 'local',
                'sctp-a-ipv6-ingress_ethertype': 'IPv4',
                'sctp-a-ipv6-ingress-dst_start_port': '0',
                'sctp-b-ipv6-ingress_rule_application': 'any',
                'domain_name': 'default-domain',
                'sctp-a-ingress_rule_protocol': 'icmp',
                'sctp-b-egress-src_start_port': '0.0',
                'sctp-a-egress_src_addresses': 'local',
                'sctp-b-display_name': 'epc-sctp-b-ipv4v6-sec-group',
                'sctp-a-egress-src_start_port': '0.0',
                'sctp-a-ingress_ethertype': 'IPv4',
                'sctp-b-ipv6-ingress-dst_end_port': '65535',
                'sctp-b-dst_subnet_prefix_v6': '::',
                'nf_naming': '{ecomp_generated_naming=true}',
                'sctp-a-ipv6-ingress_src_subnet_prefix': '0.0.0.0',
                'sctp-b-egress-dst_start_port': '0.0',
                'ncb_flavor_name': 'nv.c20r64d1',
                'gpb1_Internal1_mac': '00:11:22:EF:AC:DF',
                'sctp-b-egress_dst_subnet_prefix_len': '0.0',
                'Internal2_net_cidr': '10.0.0.10',
                'sctp-a-ingress-dst_start_port': '0.0',
                'sctp-a-egress-dst_start_port': '0.0',
                'fsb1_Internal2_mac': '00:11:22:EF:AC:DF',
                'sctp-a-egress_ethertype': 'IPv4',
                'vlc_st_service_mode': 'in-network-nat',
                'sctp-a-ipv6-egress_ethertype': 'IPv4',
                'sctp-a-egress-src_end_port': '65535.0',
                'sctp-b-ipv6-egress_rule_application': 'any',
                'sctp-b-egress_action': 'pass',
                'sctp-a-ingress-src_subnet_prefix_len': '0.0',
                'sctp-b-ipv6-ingress-src_end_port': '65535.0',
                'sctp-b-name': 'epc-sctp-b-ipv4v6-sec-group',
                'fsb2_Internal1_mac': '00:11:22:EF:AC:DF',
                'sctp-a-ipv6-ingress-src_start_port': '0.0',
                'sctp-b-ipv6-egress_ethertype': 'IPv4',
                'Internal1_net_cidr': '10.0.0.10',
                'sctp-a-egress_dst_subnet_prefix': '0.0.0.0',
                'fsb_flavor_name': 'nv.c20r64d1',
                'sctp_rule_protocol': '132',
                'sctp-b-ipv6-ingress_src_subnet_prefix_len': '0',
                'sctp-a-ipv6-ingress_rule_application': 'any',
                'sctp-a-IPv6_ethertype': 'IPv6',
                'vlc2_Internal1_mac': '00:11:22:EF:AC:DF',
                'vlc_st_virtualization_type': 'virtual-machine',
                'sctp-b-ingress-dst_start_port': '0.0',
                'sctp-b-ingress-dst_end_port': '65535.0',
                'sctp-a-ipv6-ingress-src_end_port': '65535.0',
                'sctp-a-display_name': 'epc-sctp-a-ipv4v6-sec-group',
                'sctp-b-ingress_rule_application': 'any',
                'int2_sec_group_name': 'int2-sec-group',
                'vlc_flavor_name': 'nd.c16r64d1',
                'sctp-b-ipv6-egress_src_addresses': 'local',
                'vlc_st_interface_type_int1': 'other1',
                'sctp-b-egress-src_end_port': '65535.0',
                'sctp-a-ipv6-egress-dst_start_port': '0',
                'vlc_st_interface_type_int2': 'other2',
                'sctp-a-ipv6-egress_rule_protocol': 'any',
                'Internal2_shared': 'false',
                'sctp-a-ipv6-egress_dst_subnet_prefix_len': '0',
                'Internal2_rpf': 'disable',
                'vlc1_Internal1_mac': '00:11:22:EF:AC:DF',
                'sctp-b-ipv6-egress_src_end_port': '65535',
                'sctp-a-ipv6-egress_src_addresses': 'local',
                'sctp-a-ingress-dst_end_port': '65535.0',
                'sctp-a-ipv6-egress_src_end_port': '65535',
                'Internal1_forwarding_mode': 'l2',
                'Internal2_dhcp': 'false',
                'sctp-a-dst_subnet_prefix_v6': '::',
                'pxe_image_name': 'MME_PXE-Boot_16ACP04_GA.qcow2',
                'vlc_st_interface_type_gtp': 'other0',
                'ncb1_Internal1_mac': '00:11:22:EF:AC:DF',
                'sctp-b-src_subnet_prefix_v6': '::',
                'sctp-a-egress_dst_subnet_prefix_len': '0.0',
                'int1_sec_group_name': 'int1-sec-group',
                'Internal1_dhcp': 'false',
                'sctp-a-ipv6-egress_dst_end_port': '65535',
                'Internal2_forwarding_mode': 'l2',
                'fsb2_Internal2_mac': '00:11:22:EF:AC:DF',
                'sctp-b-egress_dst_subnet_prefix': '0.0.0.0',
                'Internal1_net_cidr_len': '17',
                'gpb2_Internal1_mac': '00:11:22:EF:AC:DF',
                'sctp-b-ingress-src_subnet_prefix_len': '0.0',
                'sctp-a-ingress_dst_addresses': 'local',
                'sctp-a-egress_action': 'pass',
                'fsb_volume_type_0': 'SF-Default-SSD',
                'ncb2_Internal2_mac': '00:11:22:EF:AC:DF',
                'vlc_st_interface_type_sctp_a': 'left',
                'vlc_st_interface_type_sctp_b': 'right',
                'sctp-a-src_subnet_prefix_v6': '::',
                'vlc_st_version': '2',
                'sctp-b-egress_ethertype': 'IPv4',
                'sctp-a-ingress_rule_application': 'any',
                'gpb1_Internal2_mac': '00:11:22:EF:AC:DF',
                'instance_ip_family_v6': 'v6',
                'sctp-a-ipv6-egress_src_start_port': '0',
                'sctp-b-ingress-src_start_port': '0.0',
                'sctp-b-ingress_dst_addresses': 'local',
                'fsb1_Internal1_mac': '00:11:22:EF:AC:DF',
                'vlc_st_interface_type_oam': 'management',
                'multi_stage_design': 'false',
                'oam_sec_group_name': 'oam-sec-group',
                'Internal2_net_gateway': '10.0.0.10',
                'sctp-a-ipv6-ingress-dst_end_port': '65535',
                'sctp-b-ipv6-egress-dst_start_port': '0',
                'Internal1_net_gateway': '10.0.0.10',
                'sctp-b-ipv6-egress_rule_protocol': 'any',
                'gtp_sec_group_name': 'gtp-sec-group',
                'sctp-a-ipv6-egress_dst_subnet_prefix': '0.0.0.0',
                'sctp-b-ipv6-egress_dst_subnet_prefix_len': '0',
                'sctp-a-ipv6-ingress_dst_addresses': 'local',
                'sctp-a-egress_rule_protocol': 'icmp',
                'sctp-b-ipv6-egress_action': 'pass',
                'sctp-a-ipv6-egress_action': 'pass',
                'Internal1_shared': 'false',
                'sctp-b-ipv6-ingress_rule_protocol': 'any',
                'Internal2_net_cidr_len': '17',
                'sctp-a-name': 'epc-sctp-a-ipv4v6-sec-group',
                'sctp-a-ingress-src_end_port': '65535.0',
                'sctp-b-ipv6-ingress_src_subnet_prefix': '0.0.0.0',
                'sctp-a-egress-dst_end_port': '65535.0',
                'sctp-a-ingress_action': 'pass',
                'sctp-b-egress_rule_protocol': 'icmp',
                'sctp-b-ipv6-ingress_action': 'pass',
                'vlc_st_service_type': 'firewall',
                'sctp-b-ipv6-egress_dst_end_port': '65535',
                'sctp-b-ipv6-ingress-dst_start_port': '0',
                'vlc2_Internal2_mac': '00:11:22:EF:AC:DF',
                'vlc_st_availability_zone': 'true',
                'fsb_volume_image_name_1': 'MME_FSB2_16ACP04_GA.qcow2',
                'sctp-b-ingress-src_subnet_prefix': '0.0.0.0',
                'sctp-a-ipv6-ingress_src_subnet_prefix_len': '0',
                'Internal1_allow_transit': 'true',
                'gpb_flavor_name': 'nv.c20r64d1',
                'availability_zone_max_count': '1',
                'fsb_volume_image_name_0': 'MME_FSB1_16ACP04_GA.qcow2',
                'sctp-b-ipv6-ingress_dst_addresses': 'local',
                'sctp-b-ipv6-egress_dst_subnet_prefix': '0.0.0.0',
                'sctp-b-ipv6-ingress_ethertype': 'IPv4',
                'vlc1_Internal2_mac': '00:11:22:EF:AC:DF',
                'sctp-a-ingress-src_subnet_prefix': '0.0.0.0',
                'sctp-a-ipv6-ingress_action': 'pass',
                'Internal1_rpf': 'disable',
                'sctp-b-ingress_ethertype': 'IPv4',
                'sctp-b-egress_rule_application': 'any',
                'sctp-b-ingress-src_end_port': '65535.0',
                'sctp-a-ipv6-ingress_rule_protocol': 'any',
                'sctp-a-ingress-src_start_port': '0.0',
                'sctp-b-egress-dst_end_port': '65535.0'
              },
              'type': 'VF',
              'modelCustomizationName': 'VF_vGeraldine 0',
              'vfModules': {
                'vf_vgeraldine0..VfVgeraldine..vflorence_vlc..module-1': {
                  'uuid': '522159d5-d6e0-4c2a-aa44-5a542a12a830',
                  'invariantUuid': '98a7c88b-b577-476a-90e4-e25a5871e02b',
                  'customizationUuid': '55b1be94-671a-403e-a26c-667e9c47d091',
                  'description': null,
                  'name': 'VfVgeraldine..vflorence_vlc..module-1',
                  'version': '2',
                  'modelCustomizationName': 'VfVgeraldine..vflorence_vlc..module-1',
                  'properties': {'minCountInstances': 0, 'maxCountInstances': null, 'initialCount': 0},
                  'commands': {},
                  'volumeGroupAllowed': false
                },
                'vf_vgeraldine0..VfVgeraldine..vflorence_gpb..module-2': {
                  'uuid': '41708296-e443-4c71-953f-d9a010f059e1',
                  'invariantUuid': '1cca90b8-3490-495e-87da-3f3e4c57d5b9',
                  'customizationUuid': '6add59e0-7fe1-4bc4-af48-f8812422ae7c',
                  'description': null,
                  'name': 'VfVgeraldine..vflorence_gpb..module-2',
                  'version': '2',
                  'modelCustomizationName': 'VfVgeraldine..vflorence_gpb..module-2',
                  'properties': {'minCountInstances': 0, 'maxCountInstances': null, 'initialCount': 0},
                  'commands': {},
                  'volumeGroupAllowed': false
                },
                'vf_vgeraldine0..VfVgeraldine..base_vflorence..module-0': {
                  'uuid': 'a27f5cfc-7f12-4f99-af08-0af9c3885c87',
                  'invariantUuid': 'a6f9e51a-2b35-416a-ae15-15e58d61f36d',
                  'customizationUuid': 'f8c040f1-7e51-4a11-aca8-acf256cfd861',
                  'description': null,
                  'name': 'VfVgeraldine..base_vflorence..module-0',
                  'version': '2',
                  'modelCustomizationName': 'VfVgeraldine..base_vflorence..module-0',
                  'properties': {'minCountInstances': 1, 'maxCountInstances': 1, 'initialCount': 1},
                  'commands': {},
                  'volumeGroupAllowed': true
                }
              },
              'volumeGroups': {
                'vf_vgeraldine0..VfVgeraldine..base_vflorence..module-0': {
                  'uuid': 'a27f5cfc-7f12-4f99-af08-0af9c3885c87',
                  'invariantUuid': 'a6f9e51a-2b35-416a-ae15-15e58d61f36d',
                  'customizationUuid': 'f8c040f1-7e51-4a11-aca8-acf256cfd861',
                  'description': null,
                  'name': 'VfVgeraldine..base_vflorence..module-0',
                  'version': '2',
                  'modelCustomizationName': 'VfVgeraldine..base_vflorence..module-0',
                  'properties': {'minCountInstances': 1, 'maxCountInstances': 1, 'initialCount': 1}
                }
              }
            }
          },
          'networks': {
            'ExtVL 0': {
              'uuid': 'ddc3f20c-08b5-40fd-af72-c6d14636b986',
              'invariantUuid': '379f816b-a7aa-422f-be30-17114ff50b7c',
              'description': 'ECOMP generic virtual link (network) base type for all other service-level and global networks',
              'name': 'ExtVL',
              'version': '37.0',
              'customizationUuid': '94fdd893-4a36-4d70-b16a-ec29c54c184f',
              'inputs': {},
              'commands': {},
              'properties': {
                'network_assignments': '{is_external_network=false, ipv4_subnet_default_assignment={min_subnets_count=1}, ecomp_generated_network_assignment=false, ipv6_subnet_default_assignment={min_subnets_count=1}}',
                'exVL_naming': '{ecomp_generated_naming=true}',
                'network_flows': '{is_network_policy=false, is_bound_to_vpn=false}',
                'network_homing': '{ecomp_selected_instance_node_target=false}'
              },
              'type': 'VL',
              'modelCustomizationName': 'ExtVL 0'
            }
          },
          'configurations': {
            'Port Mirroring Configuration By Policy 0': {
              'uuid': 'b4398538-e89d-4f13-b33d-ca323434ba50',
              'invariantUuid': '6ef0ca40-f366-4897-951f-abd65d25f6f7',
              'description': 'A port mirroring configuration by policy object',
              'name': 'Port Mirroring Configuration By Policy',
              'version': '27.0',
              'customizationUuid': '3c3b7b8d-8669-4b3b-8664-61970041fad2',
              'inputs': {},
              'commands': {},
              'properties': {},
              'type': 'Configuration',
              'modelCustomizationName': 'Port Mirroring Configuration By Policy 0',
              'sourceNodes': [],
              'collectorNodes': null,
              'configurationByPolicy': false
            }
          },
          'serviceProxies': {},
          'vfModules': {
            'vf_vgeraldine0..VfVgeraldine..vflorence_vlc..module-1': {
              'uuid': '522159d5-d6e0-4c2a-aa44-5a542a12a830',
              'invariantUuid': '98a7c88b-b577-476a-90e4-e25a5871e02b',
              'customizationUuid': '55b1be94-671a-403e-a26c-667e9c47d091',
              'description': null,
              'name': 'VfVgeraldine..vflorence_vlc..module-1',
              'version': '2',
              'modelCustomizationName': 'VfVgeraldine..vflorence_vlc..module-1',
              'properties': {'minCountInstances': 0, 'maxCountInstances': null, 'initialCount': 0},
              'commands': {},
              'volumeGroupAllowed': false
            },
            'vf_vgeraldine0..VfVgeraldine..vflorence_gpb..module-2': {
              'uuid': '41708296-e443-4c71-953f-d9a010f059e1',
              'invariantUuid': '1cca90b8-3490-495e-87da-3f3e4c57d5b9',
              'customizationUuid': '6add59e0-7fe1-4bc4-af48-f8812422ae7c',
              'description': null,
              'name': 'VfVgeraldine..vflorence_gpb..module-2',
              'version': '2',
              'modelCustomizationName': 'VfVgeraldine..vflorence_gpb..module-2',
              'properties': {'minCountInstances': 0, 'maxCountInstances': null, 'initialCount': 0},
              'commands': {},
              'volumeGroupAllowed': false
            },
            'vf_vgeraldine0..VfVgeraldine..base_vflorence..module-0': {
              'uuid': 'a27f5cfc-7f12-4f99-af08-0af9c3885c87',
              'invariantUuid': 'a6f9e51a-2b35-416a-ae15-15e58d61f36d',
              'customizationUuid': 'f8c040f1-7e51-4a11-aca8-acf256cfd861',
              'description': null,
              'name': 'VfVgeraldine..base_vflorence..module-0',
              'version': '2',
              'modelCustomizationName': 'VfVgeraldine..base_vflorence..module-0',
              'properties': {'minCountInstances': 1, 'maxCountInstances': 1, 'initialCount': 1},
              'commands': {},
              'volumeGroupAllowed': true
            }
          },
          'volumeGroups': {
            'vf_vgeraldine0..VfVgeraldine..base_vflorence..module-0': {
              'uuid': 'a27f5cfc-7f12-4f99-af08-0af9c3885c87',
              'invariantUuid': 'a6f9e51a-2b35-416a-ae15-15e58d61f36d',
              'customizationUuid': 'f8c040f1-7e51-4a11-aca8-acf256cfd861',
              'description': null,
              'name': 'VfVgeraldine..base_vflorence..module-0',
              'version': '2',
              'modelCustomizationName': 'VfVgeraldine..base_vflorence..module-0',
              'properties': {'minCountInstances': 1, 'maxCountInstances': 1, 'initialCount': 1}
            }
          },
          'pnfs': {}
        }
      }
    ));
  }
});