Move sample rApp resources to seperate directory
Sample rApp files moved to separate directory.
Generator file added for Windows and Linux environment to generate the rApp csar file.
Issue-ID: NONRTRIC-932
Signed-off-by: aravind.est <aravindhan.a@est.tech>
Change-Id: I8e309da4d52d02afcc2ac66691811ec8313600dd
diff --git a/csar-generator/generate.bat b/csar-generator/generate.bat
new file mode 100755
index 0000000..1e34698
--- /dev/null
+++ b/csar-generator/generate.bat
@@ -0,0 +1,25 @@
+:: ============LICENSE_START===============================================
+:: Copyright (C) 2023 Nordix Foundation. All rights reserved.
+:: ========================================================================
+:: Licensed under the Apache License, Version 2.0 (the "License");
+:: you may not use this file except in compliance with the License.
+:: You may obtain a copy of the License at
+::
+:: http:\\www.apache.org\licenses\LICENSE-2.0
+::
+:: Unless required by applicable law or agreed to in writing, software
+:: distributed under the License is distributed on an "AS IS" BASIS,
+:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+:: See the License for the specific language governing permissions and
+:: limitations under the License.
+:: ============LICENSE_END=================================================
+::
+
+@echo off
+SET CSARFILE=rapp.csar
+SET ZIPFILE=rapp.zip
+del %CSARFILE% 2>nul
+pushd resources
+tar -a -cf ..\%ZIPFILE% *
+popd
+rename %ZIPFILE% %CSARFILE%
diff --git a/csar-generator/generate.sh b/csar-generator/generate.sh
new file mode 100755
index 0000000..3bb223a
--- /dev/null
+++ b/csar-generator/generate.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+# ============LICENSE_START===============================================
+# Copyright (C) 2023 Nordix Foundation. All rights reserved.
+# ========================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=================================================
+#
+
+rm rapp.csar
+pushd resources
+zip -r ../rapp.csar *
+popd
diff --git a/csar-generator/resources/Definitions/asd.yaml b/csar-generator/resources/Definitions/asd.yaml
new file mode 100755
index 0000000..39ce4ed
--- /dev/null
+++ b/csar-generator/resources/Definitions/asd.yaml
@@ -0,0 +1,112 @@
+tosca_definitions_version: tosca_simple_yaml_1_2
+
+description: First drop of free5gc and ueransim ASD
+
+imports:
+ - asd_types.yaml
+
+topology_template:
+ node_templates:
+ applicationServiceDescriptor:
+ type: tosca.nodes.asd
+ description: "Free5gc"
+ properties:
+ descriptor_id: 123e4567-e89b-12d3-a456-426614174000
+ descriptor_invariant_id: 123e4yyy-e89b-12d3-a456-426614174abc
+ descriptor_version: 1.0
+ schema_version: 2.0
+ function_description: free5gc description
+ provider: EST
+ application_name: free5gc-app
+ application_version: 2.3
+ ext_cpds:
+ - id: 1
+ description: webpage-service
+ virtual_link_requirement: endUser
+ network_interface_realization_requirements:
+ trunk_mode: false
+ ipam: orchestrated
+ interface_type: direct.userdriver
+ interface_option:
+ - virtio
+ - memif
+ interface_redundancy: actPassBond
+ nic_options:
+ - nic id1
+ - nic id2
+ input_param_mappings:
+ loadbalancer_IP: 1.2.3.4
+ external_IPs:
+ - 5.6.7.8
+ - 10.11.12.13
+ nad_names:
+ - nad name 1
+ - nad name 2
+ nad_namespace: myNamespace
+ resource_mapping: my resource manifest
+ - id: 2
+ description: transactionAPI
+ virtual_link_requirement: backhaul
+ network_interface_realization_requirements:
+ trunk_mode: true
+ ipam: orchestrated
+ interface_type: direct.userdriver
+ interface_option:
+ - virtio
+ interface_redundancy: actPassBond
+ nic_options:
+ - nic id3
+ - nic id4
+ input_param_mappings:
+ loadbalancer_IP: 192.168.1.0
+ external_IPs:
+ - 192.168.1.1
+ - 192.168.1.2
+ nad_names:
+ - nad name 3
+ - nad name 4
+ nad_namespace: myNamespace2
+ resource_mapping: my resource manifest
+ enhanced_cluster_capabilities:
+ min_kernel_version: 1.2.3
+ required_kernel_modules:
+ - ip6_tables
+ - cryptd
+ conflicting_kernel_modules:
+ - nf_nat
+ required_custom_resources:
+ - kind: myKind
+ api_version: myVersion
+ - kind: mySecondKind
+ api_version: mySecondVersion
+ cluster_labels:
+ - label 1
+ - label 2
+ required_plugin:
+ - name: plugin1Name
+ version: 1.2.3
+ - name: plugin2Name
+ version: 4.5.6
+ artifacts:
+ free5gc:
+ type: tosca.artifacts.asd.deploymentItem
+ file: "Artifacts/Deployment/HELM/free5gc-1.1.3.tgz"
+ properties:
+ artifact_type: "helm_chart"
+ itemId: 1
+ deployment_order: 1
+ lifecycle_parameters:
+ - ".Values.global.n2network.masterIf"
+ - ".Values.global.n3network.masterIf"
+ - ".Values.global.n4network.masterIf"
+ - ".Values.global.n6network.masterIf"
+ ueransim-free5gc:
+ type: tosca.artifacts.asd.deploymentItem
+ file: "Artifacts/Deployment/HELM/ueransim-2.0.14.tgz"
+ properties:
+ artifact_type: "helm_chart"
+ itemId: 2
+ deployment_order: 2
+ lifecycle_parameters:
+ - ".Values.global.n2network.masterIf"
+ - ".Values.global.n3network.masterIf"
diff --git a/csar-generator/resources/Definitions/asd_types.yaml b/csar-generator/resources/Definitions/asd_types.yaml
new file mode 100755
index 0000000..b004aa2
--- /dev/null
+++ b/csar-generator/resources/Definitions/asd_types.yaml
@@ -0,0 +1,448 @@
+tosca_definitions_version: tosca_simple_yaml_1_2
+description: ASD types definitions version 0.1
+data_types:
+tosca.datatypes.asd.networkInterfaceRequirements:
+ derived_from: tosca.datatypes.Root
+ version: 0.1
+ description: "Describes the datatype for network interface requirements"
+ properties:
+ trunk_mode:
+ description: >
+ Information about whether the CP instantiated from this Cp is
+ in Trunk mode (802.1Q or other). When operating in "trunk mode",
+ the Cp is capable of carrying traffic for several VLANs.
+ Absence of this property implies that trunkMode is not configured
+ for the Cp i.e. It is equivalent to boolean value "false".
+ required: true
+ type: boolean
+ default: false
+ ipam:
+ description: >
+ Identifies whether application expects IP address assignment to be
+ managed by the cluster infrastructure (CNI IPAM plugin), or
+ configured by orchestrator via for example helm input parameter,
+ or if IP assignment is handled by the application itself.
+ required: true
+ type: string
+ constraints:
+ - valid_values: ["infraProvided", "orchestrated", "userManaged"]
+ default: "infraProvided"
+ interface_type:
+ description: >
+ Indicates what type of network interface the application expects.
+ Kernel based virtual netdev based on CNIs such as ovs | bridge |
+ macvlan | ipvlan, or PCIe dev directly visible in application
+ namespace with kernel or userspace driver or bonded with the Bond
+ CNI, or userspace-CNI based network interface
+ (requires DPDK-OVS/VPP vSwitch).
+ required: true
+ type: string
+ constraints:
+ - valid_values: ["kernel.netdev", "direct.userdriver", "direct.kerneldriver", "direct.bond", "userspace"]
+ default: "kernel.netdev"
+ interface_option:
+ description: >
+ This attribute describes verified realization options for the
+ network interface in question. Currently listed options
+ (virtio and memif) are applicable for the interfaceType “userspace”.
+ required: false
+ type: list
+ entry_schema:
+ type: string
+ constraints:
+ - valid_values: ["virtio", "memif"]
+ interface_redundancy:
+ description: >
+ Identifies switch-plane redundancy method the application uses,
+ and that node infrastructure is required to comply with.
+ "infraProvided", “left” and “right”: The container sees a
+ single vNIC that a) the infrastructure bonds over both switchplanes
+ or b) that is connected to the network via only left or
+ right the switchplane.
+ The other cases are for a mated pair of vnics connecting to
+ same network, but where one vNIC connects
+ via left switch plane and the other via right switch plane,
+ and where the application manages the redundancy.
+ "activePassiveBond": the application bonds with move of MAC address.
+ "activeActiveBond“: bonded left/right links must be part of a multi-chassis LAG
+ "activePassiveL3": application will move application IP address between the vNICs.
+ "activeActiveL3": the application uses anycast/ECMP.
+ required: true
+ type: string
+ constraints:
+ - valid_values: ["infraProvided", "actPassBond", "actActBond", "actPassL3", "actActL3", "Left", "Right"]
+ default: "infraProvided"
+ nic_options:
+ description: >
+ Identifies for the direct.userdriver interface type, the physical
+ nics the driver is verified to work with.
+ Allowed values for nic types must be handled via a registry or be standardized.
+ required: false
+ type: list
+ entry_schema:
+ type: string
+
+tosca.datatypes.asd.paramMappings:
+ version: 0.1
+ derived_from: tosca.datatypes.Root
+ description: "Describes the datatype for parameter mapping"
+ properties:
+ loadbalancer_IP:
+ description: >
+ When present, this attribute specifies the name of the deployment
+ artifact input parameter through which the orchestrator can
+ configure the loadbalancerIP parameter of the K8s service
+ or ingress controller that the extCpdData represents.
+ Note: The format of the Content strings is specific for each different
+ orchestration templating technology used (Helm, Teraform, etc.).
+ Currently only a format for use with Helm charts is suggested:
+ "<helmchartname>:[<subchartname>.]^(0..N)[<parentparamname>.]^(0..N)<paramname>".
+ Whether the optional parts of the format are present depends on how the
+ parameter is declared in the helm chart. An example is:
+ "chartName:subChart1.subChart2.subChart3.Parent1.Parent2.Parent3.LBIP".
+ required: false
+ type: string
+ external_IPs:
+ description: >
+ When present, this attribute specifies the name of the deployment
+ artifact input parameter through which the orchestrator can
+ configure the extermalIPs parameter of the K8s service or ingress
+ controller, or the pod network interface annotation, that the
+ extCpdData represents.
+ Note: The format of the Content strings is specific for each different
+ orchestration templating technology used (Helm, Teraform, etc.).
+ Currently only a format for use with Helm charts is suggested:
+ "<helmchartname>:[<subchartname>.]^(0..N)[<parentparamname>.]^(0..N)<paramname>".
+ Whether the optional parts of the format are present depends on how the
+ parameter is declared in the helm chart. An example is:
+ "chartName:subChart1.subChart2.subChart3.Parent1.Parent2.Parent3.extIP".
+ required: false
+ type: list
+ entry_schema:
+ type: string
+ nad_names:
+ description: >
+ Specifies, for an extCpdData respesenting a secondary network interface,
+ the name(s) of the deployment artifact input parameter(s) through which
+ the orchestrator can provide the names of the network attachment
+ definitions (NADs) the orchestrator has created as base for the network
+ interface the extCpdData represents.
+ Note 1: When the extCpdData represent a networkRedundant/mated-pair of
+ sriov interfaces, there are references to 2 or 3 related NADs needed
+ to be passed, while for other interface types only one NAD reference
+ is needed to be passed.
+ Note 2: The format of the Content strings is specific for each different
+ orchestration templating technology used (Helm, Teraform, etc.).
+ Currently only a format for use with Helm charts is suggested:
+ "<helmchartname>:[<subchartname>.]^(0..N)[<parentparamname>.]^(0..N)<paramname>".
+ Whether the optional parts of the format are present depends on how the
+ parameter is declared in the helm chart. An example is:
+ chartName:"subChart1.subChart2.subChart3.Parent1.Parent2.Parent3.nadName".
+ Note 3: A direct attached (passthrough) network interface, such as an sriov
+ interface, attaches to a network via only one of the two switch planes
+ in the infrastructure.
+ When using a direct attached network interface one therefore commonly in a
+ pod uses a mated pair of sriov network attachments, where each interface
+ attaches same network but via different switchplane.
+ The application uses the mated pair of network interfaces as a single
+ logical “swith-path-redundant” network interface – and this is represented
+ by a single extCpdData.
+ Also there is a case where a third “bond” attachment interface is used in
+ the pod, bonding the two direct interfaces so that the application do not
+ need to handle the redundancy issues – application just uses the bond interface.
+ In this case, all three attachments are together making up a logical
+ “switch-path-redundant” network interface represented by a single extCpdData.
+ When three NADs are used in the extCpdData the NAD implementing the bond attachment
+ interface is provided through the parameter indicated in the third place in
+ the nadNames attribute.
+ required: false
+ type: list
+ entry_schema:
+ type: string
+ nad_namespace:
+ description: >
+ Specifies, for an extCpdData respesenting a secondary network interface,
+ the name of the deployment artifact input parameter through which the orchestrator
+ can provide the namespace where the NetworkAttachmentDefinitions (NADs) are located.
+ Attribute may be omitted if the namespace is same as the application
+ namespace.
+ Note: The format of the Content strings is specific for each different
+ orchestration templating technology used (Helm, Teraform, etc.).
+ Currently only a format for use with Helm charts is suggested:
+ "<helmchartname>:[<subchartname>.]^(0..N)[<parentparamname>.]^(0..N)<paramname>".
+ Whether the optional parts of the format are present depends on how the
+ parameter is declared in the helm chart. An example is:
+ "chartName:subChart1.subChart2.subChart3.Parent1.Parent2.Parent3.NameSpace".
+ required: false
+ type: string
+
+tosca.datatypes.asd.extCpdData:
+ version: 0.1
+ derived_from: tosca.datatypes.Root
+ description: "Describes the datatype for external connection point definition data"
+ properties:
+ id:
+ description: "The identifier of this extCpdData"
+ required: true
+ type: string
+ description:
+ description: >
+ This property describes for a particular ExtCpd instance
+ what service it exposes.
+ required: true
+ type: string
+ virtual_link_requirement:
+ description: >
+ Refers in an abstract way to the network or multiple networks that
+ the ExtCpd shall be exposed on (ex: OAM, EndUser, backhaul, LI, etc)
+ required: true
+ type: string
+ network_interface_realization_requirements:
+ description: >
+ Details container implementation specific requirements on
+ the NetworkAttachmentDefinition
+ required: false
+ type: tosca.datatypes.asd.networkInterfaceRequirements
+ input_param_mappings:
+ description: >
+ Information on what helm chart input parameters that
+ are required to be configured for this extCpd
+ required: false
+ type: tosca.datatypes.asd.paramMappings
+ resource_mapping:
+ description: >
+ Kubernetes API resource name for the resource manifest for the service,
+ ingress controller or pod
+ required: false
+ type: string
+
+tosca.datatypes.asd.enhancedClusterCapabilities:
+ version: 0.1
+ derived_from: tosca.datatypes.Root
+ description: "Describes the datatype for parameter mapping"
+ properties:
+ min_kernel_version:
+ description: >
+ Describes the minimal required Kernel version, e.g. 4.15.0.
+ Coded as displayed by linux command uname –r
+ required: true
+ type: string
+ required_kernel_modules:
+ description: >
+ Required kernel modules are coded as listed by linux lsmod command,
+ e.g. ip6_tables, cryptd, nf_nat etc.
+ required: false
+ type: list
+ entry_schema:
+ type: string
+ conflicting_kernel_modules:
+ description: >
+ Kernel modules, which must not be present in the target environment.
+ The kernel modules are coded as listed by linux lsmod command,
+ e.g., ip6_tables, cryptd, nf_nat etc.
+ Example: Linux kernel SCTP module, which would conflict with use of
+ proprietary user space SCTP stack provided by the application.
+ required: false
+ type: list
+ entry_schema:
+ type: string
+ required_custom_resources:
+ description: >
+ List the custom resource kinds required to be supported in the target
+ environment. The list shall include those custom resource kinds which
+ are not delivered with the application.
+ required: false
+ type: list
+ entry_schema:
+ type: tosca.datatypes.asd.customResourceRequirement
+ cluster_labels:
+ description: >
+ This attribute allows to associate arbitrary labels to clusters.
+ These can indicate special infrastructure capabilities (e.g., NW acceleration,
+ GPU compute, etc.). The intent of these labels is to serve as a set of
+ values that can help in application placement decisions.
+ clusterLabels follow the Kubernetes label key-value-nomenclature
+ (https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/).
+ It is recommended that labels follow a standardized meaning e.g. for node
+ features (https://kubernetes-sigs.github.io/node-feature-discovery/v0.9/get-started/features.html#table-of-contents).
+ Example:
+ ClusterLabels
+ - feature.node.kubernetes.io/cpu-cpuid.AESNI: true
+ required: false
+ type: list
+ entry_schema:
+ type: string
+ required_plugin:
+ description: a list of the name of the required K8s plugin
+ required: false
+ type: list
+ entry_schema:
+ type: tosca.datatypes.asd.requiredPlugin
+
+tosca.datatypes.asd.customResourceRequirement:
+ version: 0.1
+ derived_from: tosca.datatypes.Root
+ description: >
+ kind: "Redis", apiVersion: "kubedb.com/v1alpha1"
+ properties:
+ kind:
+ description: "the name of the custom resource requirement"
+ type: string
+ required: true
+ api_version:
+ description: "the api version of the custom resource requirement"
+ type: string
+ required: true
+
+tosca.datatypes.asd.requiredPlugin:
+ version: 0.1
+ derived_from: tosca.datatypes.Root
+ description: "the required K8s plugin"
+ properties:
+ name:
+ description: "the name of the required K8s plugin"
+ type: string
+ required: true
+ version:
+ description: "the version of the required K8s plugin"
+ type: string
+ required: true
+
+node_types:
+ tosca.nodes.asd:
+ derived_from: tosca.nodes.Root
+ description: "The ASD node type"
+ version: 0.1
+ properties:
+ descriptor_id:
+ type: string # UUID
+ required: true
+ description: Identifier of this ASD. It is in UUID format as specified in RFC 4122
+ descriptor_invariant_id:
+ type: string # UUID
+ required: true
+ description: >
+ Identifier of this descriptor in a version independent manner. This attribute
+ is invariant across versions of ASD. It is in UUID format as specified in RFC 4122
+ descriptor_version:
+ type: string
+ required: true
+ description: Identifies the version of the ASD.
+ schema_version:
+ type: string
+ required: true
+ description: Identifies the Identifies the version of this ASD’s schema.
+ function_description:
+ type: string
+ required: false
+ description: Description of the application service described by this ASD.
+ provider:
+ type: string
+ required: true
+ description: Identifies the provider of the ASD.
+ application_name:
+ type: string
+ required: true
+ description: Name to identify the application service described by this ASD
+ application_version:
+ type: string
+ required: true
+ description: Identifies the version of the application service described by this ASD.
+ ext_cpds:
+ type: list
+ required: false
+ entry_schema:
+ type: tosca.datatypes.asd.extCpdData
+ description: >
+ Describes the externally exposed connection points of the application
+ service described by this ASD
+ enhanced_cluster_capabilities:
+ type: tosca.datatypes.asd.enhancedClusterCapabilities
+ required: false
+ description: >
+ A list of expected capabilities of the target Kubernetes cluster to aid
+ placement of the application service on a suitable cluster.
+ tosca.nodes.asdInNsd:
+ derived_from: tosca.nodes.nfv.VNF
+ description: "The generic ASD node types for NS requirements. Optional properties are not list here."
+ version: 0.1
+ properties:
+ descriptor_id:
+ type: string # UUID
+ description: Identifier of an ASD. It is in UUID format as specified in RFC 4122
+ required: true
+ descriptor_version:
+ type: string
+ description: Identifies the version of the ASD.
+ required: true
+ default: ""
+ provider:
+ type: string
+ description: Identifies the provider of the ASD
+ required: true
+ default: ""
+ product_name:
+ type: string
+ description: Please use the application_name property
+ required: true
+ default: ""
+ software_version:
+ type: string
+ description: Please use the application_version property
+ required: true
+ default: ""
+ flavour_id:
+ type: string
+ required: true
+ constraints: [ equal: "simple" ]
+ default: "simple"
+ flavour_description:
+ type: string
+ required: true
+ default: ""
+ vnfm_info:
+ type: list
+ required: true
+ entry_schema:
+ type: list
+ requirements:
+ - virtual_link:
+ capability: tosca.capabilities.nfv.VirtualLinkable
+ relationship: tosca.relationships.nfv.VirtualLinkableTo
+ occurrences: [ 0,0 ]
+ - virtual_links:
+ capability: tosca.capabilities.nfv.VirtualLinkable
+ relationship: tosca.relationships.nfv.VirtualLinkableTo
+ occurrences: [ 0,UNBOUNDED ]
+artifact_types:
+tosca.artifacts.asd.deploymentItem:
+ version: 0.1
+ derived_from: tosca.artifacts.Root
+ description: "Describes the artifact type of asd deployment item"
+ file: "URI or path of the artifact"
+ properties:
+ item_id:
+ description: "The identifier of this asd deployment item"
+ required: true
+ type: string
+ artifact_type:
+ description: >
+ Specify artifact type.
+ required: true
+ type: string
+ constraints:
+ - valid_values: ["helm_chart", "helmfile", "crd", "terraform" ]
+ deployment_order:
+ description: >
+ Specifies the deployment stage that the DeploymentArtifact belongs to.
+ A lower value specifies that the DeploymentArtifact belongs to an earlier
+ deployment stage. When this value is omitted, the deployment order
+ will be decided by the orchestrator.
+ required: false
+ type: integer
+ lifecycle_parameters:
+ description: "list of parameters that can be overridden at deployment time "
+ required: false
+ type: list
+ entry_schema:
+ type: string
diff --git a/csar-generator/resources/Files/Acm/definition/compositions.json b/csar-generator/resources/Files/Acm/definition/compositions.json
new file mode 100755
index 0000000..e64d882
--- /dev/null
+++ b/csar-generator/resources/Files/Acm/definition/compositions.json
@@ -0,0 +1,320 @@
+{
+ "tosca_definitions_version": "tosca_simple_yaml_1_3",
+ "data_types": {
+ "onap.datatypes.ToscaConceptIdentifier": {
+ "derived_from": "tosca.datatypes.Root",
+ "properties": {
+ "name": {
+ "type": "string",
+ "required": true
+ },
+ "version": {
+ "type": "string",
+ "required": true
+ }
+ }
+ },
+ "org.onap.datatypes.policy.clamp.acm.kserveAutomationCompositionElement.KserveInferenceEntity": {
+ "version": "1.0.0",
+ "derived_from": "tosca.datatypes.Root",
+ "properties": {
+ "kserveEntityId": {
+ "type": "onap.datatypes.ToscaConceptIdentifier",
+ "required": true,
+ "description": "The name and version of a Configuration Entity to be handled by the Kserve Automation Composition Element"
+ },
+ "name": {
+ "type": "string",
+ "required": true,
+ "description": "Inference service name to be created"
+ },
+ "payload": {
+ "type": "string",
+ "required": true,
+ "description": "Inference Service payload"
+ }
+ }
+ },
+ "org.onap.datatypes.policy.clamp.acm.a1pmsAutomationCompositionElement.A1PolicyServiceEntity": {
+ "version": "1.0.0",
+ "derived_from": "tosca.datatypes.Root",
+ "properties": {
+ "a1PolicyServiceEntityId": {
+ "type": "onap.datatypes.ToscaConceptIdentifier",
+ "required": true,
+ "description": "The name and version of a Configuration Entity to be handled by the A1 PMS Automation Composition Element"
+ },
+ "clientId": {
+ "type": "string",
+ "required": true,
+ "description": "Client Id to be created"
+ },
+ "callbackUrl": {
+ "type": "string",
+ "required": true,
+ "description": "The callback URL to get registered"
+ },
+ "keepAliveIntervalSeconds": {
+ "type": "integer",
+ "required": true,
+ "description": "Keep alive interval time for the callback URL"
+ }
+ }
+ }
+ },
+ "node_types": {
+ "org.onap.policy.clamp.acm.Participant": {
+ "version": "1.0.1",
+ "derived_from": "tosca.nodetypes.Root",
+ "properties": {
+ "provider": {
+ "type": "string",
+ "required": false
+ }
+ }
+ },
+ "org.onap.policy.clamp.acm.AutomationCompositionElement": {
+ "version": "1.0.1",
+ "derived_from": "tosca.nodetypes.Root",
+ "properties": {
+ "provider": {
+ "type": "string",
+ "required": false
+ },
+ "participantType": {
+ "type": "onap.datatypes.ToscaConceptIdentifier",
+ "required": true
+ },
+ "startPhase": {
+ "type": "integer",
+ "required": false,
+ "constraints": [
+ {
+ "greater-or-equal": 0
+ }
+ ],
+ "metadata": {
+ "common": true
+ },
+ "description": "A value indicating the start phase in which this automation composition element will be started, the first start phase is zero. Automation Composition Elements are started in their start_phase order and stopped in reverse start phase order. Automation Composition Elements with the same start phase are started and stopped simultaneously"
+ },
+ "passiveToRunningTimeout": {
+ "type": "integer",
+ "required": false,
+ "constraints": [
+ {
+ "greater_or_equal": 0
+ }
+ ],
+ "default": 60,
+ "metadata": {
+ "common": true
+ },
+ "description": "The maximum time in seconds to wait for a state chage from passive to running"
+ },
+ "runningToPassiveTimeout": {
+ "type": "integer",
+ "required": false,
+ "constraints": [
+ {
+ "greater_or_equal": 0
+ }
+ ],
+ "default": 60,
+ "metadata": {
+ "common": true
+ },
+ "description": "The maximum time in seconds to wait for a state chage from running to passive"
+ },
+ "passiveToUninitializedTimeout": {
+ "type": "integer",
+ "required": false,
+ "constraints": [
+ {
+ "greater_or_equal": 0
+ }
+ ],
+ "default": 60,
+ "metadata": {
+ "common": true
+ },
+ "description": "The maximum time in seconds to wait for a state chage from passive to uninitialized"
+ }
+ }
+ },
+ "org.onap.policy.clamp.acm.AutomationComposition": {
+ "version": "1.0.1",
+ "derived_from": "tosca.nodetypes.Root",
+ "properties": {
+ "provider": {
+ "type": "string",
+ "required": false,
+ "metadata": {
+ "common": true
+ }
+ },
+ "elements": {
+ "type": "list",
+ "required": true,
+ "metadata": {
+ "common": true
+ },
+ "entry_schema": {
+ "type": "onap.datatypes.ToscaConceptIdentifier"
+ }
+ }
+ }
+ },
+ "org.onap.policy.clamp.acm.KserveAutomationCompositionElement": {
+ "version": "1.0.1",
+ "derived_from": "org.onap.policy.clamp.acm.AutomationCompositionElement",
+ "properties": {
+ "kserveInferenceEntities": {
+ "type": "list",
+ "required": true,
+ "entry_schema": {
+ "type": "org.onap.datatypes.policy.clamp.acm.kserveAutomationCompositionElement.KserveInferenceEntity",
+ "type_version": "1.0.0"
+ },
+ "description": "The configuration entities of Kserve inference service"
+ }
+ }
+ },
+ "org.onap.policy.clamp.acm.A1PMSAutomationCompositionElement": {
+ "version": "1.0.1",
+ "derived_from": "org.onap.policy.clamp.acm.AutomationCompositionElement",
+ "properties": {
+ "policyServiceEntities": {
+ "type": "list",
+ "required": true,
+ "entry_schema": {
+ "type": "org.onap.datatypes.policy.clamp.acm.a1pmsAutomationCompositionElement.A1PolicyServiceEntity",
+ "type_version": "1.0.0"
+ },
+ "description": "The configuration entities of A1 policy services"
+ }
+ }
+ },
+ "org.onap.policy.clamp.acm.K8SMicroserviceAutomationCompositionElement": {
+ "version": "1.0.0",
+ "derived_from": "org.onap.policy.clamp.acm.AutomationCompositionElement",
+ "properties": {
+ "chart": {
+ "type": "string",
+ "required": true
+ },
+ "configs": {
+ "type": "list",
+ "required": false
+ },
+ "requirements": {
+ "type": "string",
+ "required": false
+ },
+ "templates": {
+ "type": "list",
+ "required": false,
+ "entry_schema": null
+ },
+ "values": {
+ "type": "string",
+ "required": true
+ }
+ }
+ }
+ },
+ "topology_template": {
+ "node_templates": {
+ "org.onap.policy.clamp.acm.KserveParticipant": {
+ "version": "2.3.4",
+ "type": "org.onap.policy.clamp.acm.Participant",
+ "type_version": "1.0.1",
+ "description": "Participant for Kserve requests",
+ "properties": {
+ "provider": "ONAP"
+ }
+ },
+ "org.onap.policy.clamp.acm.A1PMSAutomationCompositionParticipant": {
+ "version": "2.3.4",
+ "type": "org.onap.policy.clamp.acm.Participant",
+ "type_version": "1.0.1",
+ "description": "Participant for A1 PMS requests",
+ "properties": {
+ "provider": "ONAP"
+ }
+ },
+ "org.onap.k8s.acm.K8SAutomationCompositionParticipant": {
+ "version": "2.3.4",
+ "type": "org.onap.policy.clamp.acm.Participant",
+ "type_version": "1.0.1",
+ "description": "Participant for K8S",
+ "properties": {
+ "provider": "ONAP"
+ }
+ },
+ "onap.policy.clamp.ac.element.KserveAutomationCompositionElement": {
+ "version": "1.2.3",
+ "type": "org.onap.policy.clamp.acm.KserveAutomationCompositionElement",
+ "type_version": "1.0.1",
+ "description": "Automation composition element for the Kserve Requests",
+ "properties": {
+ "provider": "ONAP",
+ "participantType": {
+ "name": "org.onap.policy.clamp.acm.KserveParticipant",
+ "version": "2.3.4"
+ },
+ "uninitializedToPassiveTimeout": 300,
+ "statusCheckInterval": 30
+ }
+ },
+ "onap.policy.clamp.ac.element.A1PMSAutomationCompositionElement": {
+ "version": "1.2.3",
+ "type": "org.onap.policy.clamp.acm.A1PMSAutomationCompositionElement",
+ "type_version": "1.0.1",
+ "description": "Automation composition element for the A1 PMS Requests",
+ "properties": {
+ "provider": "ONAP",
+ "participantType": {
+ "name": "org.onap.policy.clamp.acm.A1PMSParticipant",
+ "version": "2.3.4"
+ }
+ }
+ },
+ "onap.policy.clamp.ac.element.K8S_StarterAutomationCompositionElement": {
+ "version": "1.2.3",
+ "type": "org.onap.policy.clamp.acm.K8SMicroserviceAutomationCompositionElement",
+ "type_version": "1.0.0",
+ "description": "Automation composition element for the K8S microservice for AC Element Starter",
+ "properties": {
+ "provider": "ONAP",
+ "startPhase": 0,
+ "uninitializedToPassiveTimeout": 300,
+ "podStatusCheckInterval": 30
+ }
+ },
+ "onap.policy.clamp.ac.element.AutomationCompositionDefinition": {
+ "version": "1.2.3",
+ "type": "org.onap.policy.clamp.acm.AutomationComposition",
+ "type_version": "1.0.1",
+ "description": "Automation composition for rapp deployment",
+ "properties": {
+ "provider": "ONAP",
+ "elements": [
+ {
+ "name": "onap.policy.clamp.ac.element.KserveAutomationCompositionElement",
+ "version": "1.2.3"
+ },
+ {
+ "name": "onap.policy.clamp.ac.element.A1PMSAutomationCompositionElement",
+ "version": "1.2.3"
+ },
+ {
+ "name": "onap.policy.clamp.ac.element.K8S_StarterAutomationCompositionElement",
+ "version": "1.2.3"
+ }
+ ]
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/csar-generator/resources/Files/Acm/instances/a1pms-instance.json b/csar-generator/resources/Files/Acm/instances/a1pms-instance.json
new file mode 100755
index 0000000..fa5d207
--- /dev/null
+++ b/csar-generator/resources/Files/Acm/instances/a1pms-instance.json
@@ -0,0 +1,28 @@
+{
+ "name": "A1PMSInstance0",
+ "version": "1.0.1",
+ "compositionId": "COMPOSITIONID",
+ "description": "Demo automation composition instance 0",
+ "elements": {
+ "709c62b3-8918-41b9-a747-d21eb79c6c12": {
+ "id": "709c62b3-8918-41b9-a747-d21eb79c6c12",
+ "definition": {
+ "name": "onap.policy.clamp.ac.element.A1PMSAutomationCompositionElement",
+ "version": "1.2.3"
+ },
+ "description": "Starter Automation Composition Element for the Demo",
+ "properties": {
+ "policyServiceEntities": [
+ {
+ "a1PolicyServiceEntityId": {
+ "name": "entity1",
+ "version": "1.0.1"
+ },
+ "clientId": "firstService",
+ "callbackUrl": "http:\\localhost"
+ }
+ ]
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/csar-generator/resources/Files/Acm/instances/all-instance.json b/csar-generator/resources/Files/Acm/instances/all-instance.json
new file mode 100755
index 0000000..20d9a88
--- /dev/null
+++ b/csar-generator/resources/Files/Acm/instances/all-instance.json
@@ -0,0 +1,72 @@
+{
+ "name": "AllInstance0",
+ "version": "1.0.1",
+ "compositionId": "COMPOSITIONID",
+ "description": "Demo automation composition instance",
+ "elements": {
+ "709c62b3-8918-41b9-a747-d21eb79c6c12": {
+ "id": "709c62b3-8918-41b9-a747-d21eb79c6c12",
+ "definition": {
+ "name": "onap.policy.clamp.ac.element.A1PMSAutomationCompositionElement",
+ "version": "1.2.3"
+ },
+ "description": "Starter Automation Composition Element for the Demo",
+ "properties": {
+ "policyServiceEntities": [
+ {
+ "a1PolicyServiceEntityId": {
+ "name": "entity1",
+ "version": "1.0.1"
+ },
+ "clientId": "firstService",
+ "callbackUrl": "http:\\localhost"
+ }
+ ]
+ }
+ },
+ "709c62b3-8918-41b9-a747-d21eb79c6c21": {
+ "id": "709c62b3-8918-41b9-a747-d21eb79c6c21",
+ "definition": {
+ "name": "onap.policy.clamp.ac.element.K8S_StarterAutomationCompositionElement",
+ "version": "1.2.3"
+ },
+ "description": "Starter Automation Composition Element for the Demo",
+ "properties": {
+ "chart": {
+ "chartId": {
+ "name": "ransliceassurance",
+ "version": "1.0.0"
+ },
+ "namespace": "nonrtric",
+ "releaseName": "ransliceassurance",
+ "podName": "ransliceassurance",
+ "repository": {
+ "repoName": "local",
+ "address": "http://10.101.2.41:8879/charts"
+ }
+ }
+ }
+ },
+ "709c62b3-8918-41b9-a747-d21eb79c6c20": {
+ "id": "709c62b3-8918-41b9-a747-d21eb79c6c20",
+ "definition": {
+ "name": "onap.policy.clamp.ac.element.KserveAutomationCompositionElement",
+ "version": "1.2.3"
+ },
+ "description": "Starter Automation Composition Element for the Demo",
+ "properties": {
+ "kserveInferenceEntities": [
+ {
+ "kserveInferenceEntityId": {
+ "name": "entity1",
+ "version": "1.0.1"
+ },
+ "name": "sklearn-iris",
+ "namespace": "kserve-test",
+ "payload": "{\"apiVersion\": \"serving.kserve.io/v1beta1\",\"kind\": \"InferenceService\",\"metadata\": {\"name\": \"sklearn-iris\"},\"spec\": {\"predictor\": {\"model\":{\"modelFormat\": {\"name\": \"sklearn\"},\"storageUri\": \"gs://kfserving-examples/models/sklearn/1.0/model\"}}}}"
+ }
+ ]
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/csar-generator/resources/Files/Acm/instances/k8s-instance.json b/csar-generator/resources/Files/Acm/instances/k8s-instance.json
new file mode 100755
index 0000000..562b5a2
--- /dev/null
+++ b/csar-generator/resources/Files/Acm/instances/k8s-instance.json
@@ -0,0 +1,31 @@
+{
+ "name": "DemoInstance0",
+ "version": "1.0.1",
+ "compositionId": "COMPOSITIONID",
+ "description": "Demo automation composition instance 0",
+ "elements": {
+ "709c62b3-8918-41b9-a747-d21eb79c6c21": {
+ "id": "709c62b3-8918-41b9-a747-d21eb79c6c21",
+ "definition": {
+ "name": "onap.policy.clamp.ac.element.K8S_StarterAutomationCompositionElement",
+ "version": "1.2.3"
+ },
+ "description": "Starter Automation Composition Element for the Demo",
+ "properties": {
+ "chart": {
+ "chartId": {
+ "name": "ransliceassurance",
+ "version": "1.0.0"
+ },
+ "namespace": "nonrtric",
+ "releaseName": "ransliceassurance",
+ "podName": "ransliceassurance",
+ "repository": {
+ "repoName": "local",
+ "address": "http://10.101.2.41:8879/charts"
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/csar-generator/resources/Files/Acm/instances/kserve-instance.json b/csar-generator/resources/Files/Acm/instances/kserve-instance.json
new file mode 100755
index 0000000..aaf63a1
--- /dev/null
+++ b/csar-generator/resources/Files/Acm/instances/kserve-instance.json
@@ -0,0 +1,29 @@
+{
+ "name": "KserveInstance0",
+ "version": "1.0.1",
+ "compositionId": "COMPOSITIONID",
+ "description": "Demo automation composition instance 0",
+ "elements": {
+ "709c62b3-8918-41b9-a747-d21eb79c6c20": {
+ "id": "709c62b3-8918-41b9-a747-d21eb79c6c20",
+ "definition": {
+ "name": "onap.policy.clamp.ac.element.KserveAutomationCompositionElement",
+ "version": "1.2.3"
+ },
+ "description": "Starter Automation Composition Element for the Demo",
+ "properties": {
+ "kserveInferenceEntities": [
+ {
+ "kserveInferenceEntityId": {
+ "name": "entity1",
+ "version": "1.0.1"
+ },
+ "name": "sklearn-iris",
+ "namespace": "kserve-test",
+ "payload": "{\"apiVersion\": \"serving.kserve.io/v1beta1\",\"kind\": \"InferenceService\",\"metadata\": {\"name\": \"sklearn-iris\"},\"spec\": {\"predictor\": {\"model\":{\"modelFormat\": {\"name\": \"sklearn\"},\"storageUri\": \"gs://kfserving-examples/models/sklearn/1.0/model\"}}}}"
+ }
+ ]
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/csar-generator/resources/Files/ChangeLog.txt b/csar-generator/resources/Files/ChangeLog.txt
new file mode 100755
index 0000000..bdcfb02
--- /dev/null
+++ b/csar-generator/resources/Files/ChangeLog.txt
@@ -0,0 +1 @@
+This is the first version of My ASD node.
\ No newline at end of file
diff --git a/csar-generator/resources/Files/Dme/infoconsumers/json-file-consumer.json b/csar-generator/resources/Files/Dme/infoconsumers/json-file-consumer.json
new file mode 100755
index 0000000..b18a643
--- /dev/null
+++ b/csar-generator/resources/Files/Dme/infoconsumers/json-file-consumer.json
@@ -0,0 +1,13 @@
+{
+ "info_type_id": "json-file-data-from-filestore",
+ "job_owner": "console",
+ "status_notification_uri": "http://callback.nonrtric:80/post",
+ "job_definition": {
+ "db-url": "http://influxdb2.nonrtric:8086",
+ "db-org": "est",
+ "db-bucket": "pm-bucket",
+ "db-token": "token",
+ "filterType": "pmdata",
+ "filter": {}
+ }
+}
\ No newline at end of file
diff --git a/csar-generator/resources/Files/Dme/infoconsumers/xml-file-consumer.json b/csar-generator/resources/Files/Dme/infoconsumers/xml-file-consumer.json
new file mode 100755
index 0000000..b33482a
--- /dev/null
+++ b/csar-generator/resources/Files/Dme/infoconsumers/xml-file-consumer.json
@@ -0,0 +1,13 @@
+{
+ "info_type_id": "xml-file-data-from-filestore",
+ "job_owner": "console",
+ "status_notification_uri": "http://callback.nonrtric:80/post",
+ "job_definition": {
+ "db-url": "http://influxdb2.nonrtric:8086",
+ "db-org": "est",
+ "db-bucket": "pm-bucket",
+ "db-token": "token",
+ "filterType": "pmdata",
+ "filter": {}
+ }
+}
\ No newline at end of file
diff --git a/csar-generator/resources/Files/Dme/infoproducers/json-file-data-producer.json b/csar-generator/resources/Files/Dme/infoproducers/json-file-data-producer.json
new file mode 100755
index 0000000..ed74384
--- /dev/null
+++ b/csar-generator/resources/Files/Dme/infoproducers/json-file-data-producer.json
@@ -0,0 +1,7 @@
+{
+ "info_job_callback_url": "http://localhost/jsonproducerjobcallback",
+ "info_producer_supervision_callback_url": "http://localhost/jsonproducersupervisioncallback",
+ "supported_info_types": [
+ "json-file-data-from-filestore"
+ ]
+}
\ No newline at end of file
diff --git a/csar-generator/resources/Files/Dme/infoproducers/xml-file-data-producer.json b/csar-generator/resources/Files/Dme/infoproducers/xml-file-data-producer.json
new file mode 100755
index 0000000..33075de
--- /dev/null
+++ b/csar-generator/resources/Files/Dme/infoproducers/xml-file-data-producer.json
@@ -0,0 +1,7 @@
+{
+ "info_job_callback_url": "http://localhost/xmlproducerjobcallback",
+ "info_producer_supervision_callback_url": "http://localhost/xmlproducersupervisioncallback",
+ "supported_info_types": [
+ "xml-file-data-from-filestore"
+ ]
+}
\ No newline at end of file
diff --git a/csar-generator/resources/Files/Dme/infotypes/json-file-data-from-filestore.json b/csar-generator/resources/Files/Dme/infotypes/json-file-data-from-filestore.json
new file mode 100755
index 0000000..a5f9d02
--- /dev/null
+++ b/csar-generator/resources/Files/Dme/infotypes/json-file-data-from-filestore.json
@@ -0,0 +1,8 @@
+{
+ "info_job_data_schema": {
+ "schema": "http://json-schema.org/draft-07/schema#",
+ "title": "json-file-data-from-filestore",
+ "description": "json-file-data-from-filestore",
+ "type": "object"
+ }
+}
\ No newline at end of file
diff --git a/csar-generator/resources/Files/Dme/infotypes/xml-file-data-from-filestore.json b/csar-generator/resources/Files/Dme/infotypes/xml-file-data-from-filestore.json
new file mode 100755
index 0000000..3585603
--- /dev/null
+++ b/csar-generator/resources/Files/Dme/infotypes/xml-file-data-from-filestore.json
@@ -0,0 +1,8 @@
+{
+ "info_job_data_schema": {
+ "schema": "http://json-schema.org/draft-07/schema#",
+ "title": "xml-file-data-to-filestore",
+ "description": "xml-file-data-to-filestore",
+ "type": "object"
+ }
+}
\ No newline at end of file
diff --git a/csar-generator/resources/Files/Events/MyASD_v1.yaml b/csar-generator/resources/Files/Events/MyASD_v1.yaml
new file mode 100755
index 0000000..90144cf
--- /dev/null
+++ b/csar-generator/resources/Files/Events/MyASD_v1.yaml
@@ -0,0 +1,213 @@
+---
+event:
+ presence: required
+ structure:
+ commonEventHeader:
+ presence: required
+ structure:
+ domain: {presence: required, value: notification}
+ eventName: {presence: required, value: Noti_MyPnf-Acme_FileReady}
+ priority: {presence: required, value: Normal}
+ eventId: {presence: required}
+ reportingEntityId: {presence: required}
+ reportingEntityName: {presence: required}
+ sequence: {presence: required, value: 0}
+ sourceId: {presence: required}
+ sourceName: {presence: required}
+ version: {presence: required, value: 4.0.1}
+ vesEventListenerVersion: {presence: required, value: 7.0.1}
+ startEpochMicrosec: {presence: required}
+ lastEpochMicrosec: {presence: required}
+ notificationFields:
+ presence: required
+ structure:
+ changeIdentifier: {presence: required, value: PM_MEAS_FILES}
+ changeType: {presence: required, value: fileReady}
+ notificationFieldsVersion: {presence: required, value: 2.0}
+ arrayOfNamedHashMap:
+ presence: required
+ array:
+ - name: {presence: required}
+ hashMap: {presence: required, structure: {
+ keyValuePair: {presence: required, structure: {key: {presence: required, value: location}, value: {presence: required}}},
+ keyValuePair: {presence: required, structure: {key: {presence: required, value: compression}, value: {presence: required, value: gzip}}},
+ keyValuePair: {presence: required, structure: {key: {presence: required, value: fileFormatType}, value: {presence: required, value: org.3GPP.32.435}}},
+ keyValuePair: {presence: required, structure: {key: {presence: required, value: fileFormatVersion}, value: {presence: required, value: V10}}}}
+ }
+...
+---
+event:
+ presence: required
+ structure:
+ commonEventHeader:
+ presence: required
+ structure:
+ domain: {presence: required, value: pnfRegistration}
+ eventId: {presence: required}
+ eventName: {presence: required, value: PnfReg_MyPnf-Acme_pnfRegistration}
+ lastEpochMicrosec: {presence: required}
+ priority: {presence: required, value: Normal}
+ reportingEntityName: {presence: required}
+ sequence: {presence: required, value: 0}
+ sourceName: {presence: required}
+ startEpochMicrosec: {presence: required}
+ timeZoneOffset: {presence: required}
+ version: {presence: required, value: 4.0.1}
+ vesEventListenerVersion: {presence: required, value: 7.0.1}
+ pnfRegistrationFields:
+ presence: required
+ structure:
+ modelNumber: {presence: required}
+ oamV4IpAddress: {presence: optional}
+ oamV6IpAddress: {presence: optional}
+ pnfRegistrationFieldsVersion: {presence: required, value: 2.0}
+ serialNumber: {presence: required}
+ softwareVersion: {presence: required}
+ unitFamily: {presence: required, value: BBU}
+ unitType: {presence: required}
+ vendorName: {presence: required, value: Acme}
+...
+---
+event:
+ presence: required
+ action: [ any, any, null, null, null ]
+ comment: "
+ ALARM NAME: CertMAutomaticEnrollmentFailed,
+ ALARM DESCRIPTION: ‘See alarm OPI x/1111-ABC 123 4567/1 Uen’,
+ ALARM EFFECT: 'See alarm OPI x/2222-ABC 123 4567/1 Uen',
+ MANAGED OBJECT CLASSES: NodeCredential,
+ EVENT TYPE: 'PROCESSINGERRORALARM',
+ PROBABLE CAUSE: 'ConfigurationOrCustomizationError',
+ PROPOSED REPAIR ACTIONS: 'See alarm OPI x/3333-ABC 123 4567/1 Uen',
+ CLEARING TYPE: Automatic
+ "
+ structure:
+ commonEventHeader:
+ presence: required
+ structure:
+ version: {presence: required, value: 4.0.1}
+ vesEventListenerVersion: {presence: required, value: 7.0.1}
+ domain: {presence: required, value: fault}
+ eventName: {presence: required, value: Fault_MyPnf-Acme_CertMAutomaticEnrollmentFailed}
+ eventId: {presence: required}
+ sequence: {presence: required}
+ priority: {presence: required, value: Normal}
+ reportingEntityName: {presence: required}
+ sourceName: {presence: required}
+ nfVendorName: {presence: required, value: Acme}
+ startEpochMicrosec: {presence: required}
+ lastEpochMicrosec: {presence: required}
+ timeZoneOffset: {presence: required}
+ faultFields:
+ presence: required
+ structure:
+ faultFieldsVersion: {presence: required, value: 4.0}
+ alarmCondition: {presence: required, value: 'CertMAutomaticEnrollmentFailed'}
+ eventCategory: {presence: required, value: 'PROCESSINGERRORALARM'}
+ eventSourceType: {presence: required}
+ specificProblem: {presence: required, value: 'Certificate Management Automatic Enrollment Failed'}
+ eventSeverity: {presence: required}
+ vfStatus: {presence: required, value: Active}
+ alarmAdditionalInformation: {presence: required, structure: {
+ keyValuePair: {presence: required, structure: {key: {presence: required, value: source}, value: {presence: required}}},
+ keyValuePair: {presence: required, structure: {key: {presence: required, value: probableCause}, value: {presence: required, value: 'ConfigurationOrCustomizationError'}}},
+ keyValuePair: {presence: required, structure: {key: {presence: required, value: additionalText}, value: {presence: optional}}},
+ keyValuePair: {presence: required, structure: {key: {presence: required, value: additionalInfo}, value: {presence: optional}}}}
+ }
+...
+---
+event:
+ presence: required
+ action: [ any, any, null, null, null ]
+ comment: "
+ ALARM NAME: PowerLoss,
+ ALARM DESCRIPTION: 'PNF is losing power',
+ ALARM EFFECT: 'PNF will shutdown if battery is drained',
+ MANAGED OBJECT CLASSES: 'BatteryBackup;BatteryUnit',
+ EVENT TYPE: 'EQUIPMENTALARM',
+ PROBABLE CAUSE: 'Power Supply Failure',
+ PROPOSED REPAIR ACTIONS: 'Repair Power Supply',
+ CLEARING TYPE: Automatic
+ "
+ structure:
+ commonEventHeader:
+ presence: required
+ structure:
+ version: {presence: required, value: 4.0.1}
+ vesEventListenerVersion: {presence: required, value: 7.0.1}
+ domain: {presence: required, value: fault}
+ eventName: {presence: required, value: Fault_MyPnf-Acme_PowerLoss}
+ eventId: {presence: required}
+ sequence: {presence: required}
+ priority: {presence: required, value: Normal}
+ reportingEntityName: {presence: required}
+ sourceName: {presence: required}
+ nfVendorName: {presence: required, value: Acme}
+ startEpochMicrosec: {presence: required}
+ lastEpochMicrosec: {presence: required}
+ timeZoneOffset: {presence: required}
+ faultFields:
+ presence: required
+ structure:
+ faultFieldsVersion: {presence: required, value: 4.0}
+ alarmCondition: {presence: required, value: 'PowerLoss'}
+ eventCategory: {presence: required, value: 'EQUIPMENTALARM'}
+ eventSourceType: {presence: required}
+ specificProblem: {presence: required, value: 'Power Supply Failure'}
+ eventSeverity: {presence: required}
+ vfStatus: {presence: required, value: Active}
+ alarmAdditionalInformation: {presence: required, structure: {
+ keyValuePair: {presence: required, structure: {key: {presence: required, value: source}, value: {presence: required}}},
+ keyValuePair: {presence: required, structure: {key: {presence: required, value: probableCause}, value: {presence: required, value: 'Power Supply Failure'}}},
+ keyValuePair: {presence: required, structure: {key: {presence: required, value: additionalText}, value: {presence: optional}}},
+ keyValuePair: {presence: required, structure: {key: {presence: required, value: additionalInfo}, value: {presence: optional}}}}
+ }
+...
+---
+event:
+ presence: required
+ action: [ any, any, null, null, null ]
+ comment: "
+ ALARM NAME: LogHasReachedFullCapacity,
+ ALARM DESCRIPTION: 'Log Has Reached Full Capacity',
+ ALARM EFFECT: 'See alarm OPI x/2223-ABC 123 4567/1 Uen',
+ MANAGED OBJECT CLASSES: Log,
+ EVENT TYPE: 'PROCESSINGERRORALARM',
+ PROBABLE CAUSE: 'FileError',
+ PROPOSED REPAIR ACTIONS: 'See alarm OPI x/3334-ABC 123 4567/1 Uen',
+ CLEARING TYPE: Automatic
+ "
+ structure:
+ commonEventHeader:
+ presence: required
+ structure:
+ version: {presence: required, value: 4.0.1}
+ vesEventListenerVersion: {presence: required, value: 7.0.1}
+ domain: {presence: required, value: fault}
+ eventName: {presence: required, value: Fault_MyPnf-Acme_LogHasReachedFullCapacity}
+ eventId: {presence: required}
+ sequence: {presence: required}
+ priority: {presence: required, value: Normal}
+ reportingEntityName: {presence: required}
+ sourceName: {presence: required}
+ nfVendorName: {presence: required, value: Acme}
+ startEpochMicrosec: {presence: required}
+ lastEpochMicrosec: {presence: required}
+ timeZoneOffset: {presence: required}
+ faultFields:
+ presence: required
+ structure:
+ faultFieldsVersion: {presence: required, value: 4.0}
+ alarmCondition: {presence: required, value: 'LogHasReachedFullCapacity'}
+ eventCategory: {presence: required, value: 'PROCESSINGERRORALARM'}
+ eventSourceType: {presence: required}
+ specificProblem: {presence: required, value: 'Log Has Reached Full Capacity'}
+ eventSeverity: {presence: required}
+ vfStatus: {presence: required, value: Active}
+ alarmAdditionalInformation: {presence: required, structure: {
+ keyValuePair: {presence: required, structure: {key: {presence: required, value: source},value: {presence: required}}},
+ keyValuePair: {presence: required, structure: {key: {presence: required, value: probableCause},value: {presence: required, value: 'FileError'}}},
+ keyValuePair: {presence: required, structure: {key: {presence: required, value: additionalText},value: {presence: optional}}},
+ keyValuePair: {presence: required, structure: {key: {presence: required, value: additionalInfo},value: {presence: optional}}}}
+ }
+...
\ No newline at end of file
diff --git a/csar-generator/resources/Files/Guides/user_guide.txt b/csar-generator/resources/Files/Guides/user_guide.txt
new file mode 100755
index 0000000..6792e54
--- /dev/null
+++ b/csar-generator/resources/Files/Guides/user_guide.txt
@@ -0,0 +1 @@
+This is a sample user guide file.
\ No newline at end of file
diff --git a/csar-generator/resources/Files/Measurements/PM_Dictionary.yaml b/csar-generator/resources/Files/Measurements/PM_Dictionary.yaml
new file mode 100755
index 0000000..858951f
--- /dev/null
+++ b/csar-generator/resources/Files/Measurements/PM_Dictionary.yaml
@@ -0,0 +1,186 @@
+pmDictionary:
+ presence: required
+ structure:
+ pmDictionaryHeader:
+ presence: required
+ structure:
+ pmDefVsn: { presence: required, comment: "Version of the PM Dictionary. Version is vendor defined."}
+ pmDefSchemaVsn: { presence: required, comment: "Version of the PM Dictionary Schema used for this PM Dictionary. Schema versions are specified in the VES Specifications."}
+ nfType: { presence: required, comment: "NF type to whom this PM Dictionary applies. nfType is vendor defined and should match the string used in eventName."}
+ vendor: { presence: required, value: Acme, comment: "Vendor of the NF type to whom this PM Dictionary applies."}
+ pmDictionaryMeasurements:
+ presence: required
+ array:
+ - measType: { presence: required, comment: "Measurement name used in PM file, in 3GPP format where specified, else vendor defined. Names for 3GPP-defined 4G measurements are specified in 3GPP TS 32.425 item e). Names for 3GPP-defined 5G measurements are specified in 3GPP TS 28.552 item e). Vendor defined names are preceded with VS."}
+ measDescription: { presence: required, comment: "Text description of the purpose of the measurement, what information does the measurement provide. Descriptions for 3GPP-defined 4G measurements are specified in 3GPP TS 32.425 item a). Descriptions for 3GPP-defined 5G measurements are specified in 3GPP TS 28.552 item a). Vendors are free to augment or modify the 3GPP-provided descriptions to more accurately describe their measurements as needed."}
+ measCondition: { presence: required, comment: "Text description of the condition that causes the measurement to be updated. Conditions for 3GPP-defined 4G measurements are specified in 3GPP TS 32.425 item c). Conditions for 3GPP-defined 5G measurements are specified in 3GPP TS 28.552 item c). Vendors are free to augment or modify the 3GPP-provided conditions to more accurately describe their measurements as needed."}
+ measResultType: { presence: required, value: [integer], comment: "Data type of the measurement result. Result data types for 3GPP-defined 4G measurements are specified in 3GPP TS 32.425 item d). Result data types for 3GPP-defined 5G measurements are specified in 3GPP TS 28.552 item d). The measResultType values supported by a vendor are specified in the PM Dictionary YAML using the 'value' attribute and may include vendor-defined data types not specified by 3GPP; for example boolean."}
+ measResultRange: { presence: optional, comment: "Range for the measurement result. The range is specified as a comma separated list of discrete values or a range of values specified as minimum value-maximum value with no spaces. Result ranges for 3GPP-defined 4G measurements are specified in 3GPP TS 32.425 item d) if applicable. Result ranges for 3GPP-defined 5G measurements are specified in 3GPP TS 28.552 item d) if applicable. "}
+ measResultUnits: { presence: required, value: [seconds, minutes, nanoseconds, microseconds, kbps], comment: "Unit of measure for the result; e.g. milliseconds, bytes, kilobytes, packets, number. Unit of measure for 3GPP-defined 4G measurements are specified in 3GPP TS 32.425 item d) if applicable. Unit of measure for 3GPP-defined 5G measurements are specified in 3GPP TS 28.552 item d) if applicable. The measResultsUnits values supported by a vendor are specified in the PM Dictionary YAML using the 'value' attribute and may include vendor-defined units of measure not specified by 3GPP; for example ethernet frames."}
+ measObjClass: { presence: required, value: [NRCellCU, NRCellDU, NRBTS, IPNO, ETHIF], comment: "Measurement Object Class. Object classes for 3GPP-defined 4G measurements are specified in 3GPP TS 32.425 item f). Object classes for 3GPP-defined 5G measurements are specified in 3GPP TS 28.552 item f). The measObjClass values supported by a vendor are specified in the PM Dictionary YAML using the “value” attribute and may include vendor-defined objects not specified by 3GPP; for example IPSEC."}
+ measCollectionMethod: { presence: required, value: [CC, GUAGE, DER, SI], comment: "Collection Method for the measurement. 3GPP-defined collection methods are CC, SI, DER and Gauge. Collection Methods for 3GPP-defined 4G measurements are specified in 3GPP TS 32.425 item b). Collection Methods for 3GPP-defined 5G measurements are specified in 3GPP TS 28.552 item c). The measCollectionMethod values supported by a vendor are specified in the PM Dictionary YAML using the 'value' attribute and may include vendor-defined collection methods not specified by 3GPP; for example Average."}
+ measLastChange: { presence: required, comment: "PM Dictionary version the last time this measurement was changed, added or deleted."}
+ measChangeType: { presence: required, value: [added, modified, deleted], comment: "For the measLastChange, indicates the type of change made for this measurement. Valid values are added, modified or deleted. Deleted measurements may be kept in the PM Dictionary for one release or more or permanently for historical purposes, if desired."}
+ measInfoId: { presence: required, comment: "Name for a group of related measurements, in 3GPP format where specified, else vendor defined. Family names for 3GPP-defined 4G measurements are specified in 3GPP TS 32.425 Section 3.1. Family names for 3GPP-defined 5G measurements are specified in 3GPP TS 28.552 Section 3.4."}
+ measFamily: { presence: required, comment: "Abbreviation for a family of measurements, in 3GPP format where specified, else vendor defined. Family name abbreviations for 3GPP-defined 4G measurements are specified in 3GPP TS 32.425 Section 3.1. Family name abbreviations for 3GPP-defined 5G measurements are specified in 3GPP TS 28.552 Section 3.4. "}
+ measAdditionalFields: { presence: required, comment: "Hashmap of vendor specific PM Dictionary fields in key value pair format.", structure: {
+ keyValuePair: { presence: required, structure: { key: { presence: required, value: measurementStatus, comment: "Contains the status of the measurement."}, value: { presence: required, value: [USED, DEPRECATED, OBSOLETE, PRELIMINARY] }}},
+ keyValuePair: { presence: required, structure: { key: { presence: required, value: initialValue, comment: "The initial value to which the Measurement Type is set at the beginning of a new granularity period."}, value: { presence: required }}},
+ keyValuePair: { presence: required, structure: { key: { presence: required, value: acmeParameter1, comment: "Extra vendor specific parameter 1."}, value: { presence: required }}},
+ keyValuePair: { presence: optional, structure: { key: { presence: required, value: acmeParameter2, comment: "Extra vendor specific parameter 2."}, value: { presence: required, value: [true, false] }}},
+ keyValuePair: { presence: optional, structure: { key: { presence: required, value: acmeParameter3, comment: "Extra vendor specific parameter 3."}, value: { presence: required }}}}
+ }
+---
+pmDictionary:
+ pmDictionaryHeader:
+ pmDefVsn: AcmeNumber.1.0
+ pmDefSchemaVsn: 1.0
+ nfType: myPnf
+ vendor: Acme
+ pmDictionaryMeasurements:
+
+ - measType: DRB.UEThpDl
+ measDescription: Average DL UE throughput in gNB
+ measCondition: See 3GPP TS 28.552
+ measResultType: integer
+ measResultRange: 0-4294967295
+ measResultUnits: kbps
+ measObjClass: NRCellDU
+ measCollectionMethod: DER
+ measLastChange: 1.0
+ measChangeType: added
+ measInfoId: "Data Radio Bearer"
+ measFamily: DRB
+ measAdditionalFields: {
+ "measurementStatus": "USED",
+ "initialValue": 0,
+ "acmeParameter1": 0,
+ "acmeParameter2": true,
+ "acmeParameter3": "acmeParameterValue3"}
+
+ - measType: VS.ifInDiscards
+ measDescription: The number of inbound packets which were chosen to be discarded
+ measCondition: The number of inbound packets which were chosen to be
+ discarded even though no errors had been detected to prevent
+ their being deliverable to a higher-layer protocol. One
+ possible reason for discarding such a packet could be to
+ free up buffer space.
+ Discontinuities in the value of this counter can occur at
+ re-initialization of the management system, and at other
+ times as indicated by the value of
+ ifCounterDiscontinuityTime.
+ measResultType: integer
+ measResultRange: 0-4294967295
+ measResultUnits: number
+ measObjClass: EthernetPort
+ measCollectionMethod: CC
+ measLastChange: 1.0
+ measChangeType: added
+ measInfoId: "IP Management"
+ measFamily: IP
+ measAdditionalFields: {
+ "measurementStatus": "USED",
+ "initialValue": 0,
+ "acmeParameter1": 0,
+ "acmeParameter2": true,
+ "acmeParameter3": "acmeParameterValue3"}
+
+ - measType: VS.ifInErrors
+ measDescription: Number of inbound packets that contained errors
+ measCondition: For packet-oriented interfaces, the number of inbound
+ packets that contained errors preventing them from being
+ deliverable to a higher-layer protocol. For character-
+ oriented or fixed-length interfaces, the number of inbound
+ transmission units that contained errors preventing them
+ from being deliverable to a higher-layer protocol.
+ measResultType: integer
+ measResultRange: 0-4294967295
+ measResultUnits: number
+ measObjClass: EthernetPort
+ measCollectionMethod: Gauge
+ measLastChange: 1.0
+ measChangeType: added
+ measInfoId: "IP Management"
+ measFamily: IP
+ measAdditionalFields: {
+ "measurementStatus": "USED",
+ "initialValue": 0,
+ "acmeParameter1": 0,
+ "acmeParameter3": "acmeParameterValue3"}
+
+ - measType: VS.ifInUnknownProtos
+ measDescription: Number of inbound packets received via an unknown or usupported protocol
+ measCondition: For packet-oriented interfaces, the number of packets
+ received via the interface which were discarded because of
+ an unknown or unsupported protocol. For character-oriented
+ or fixed-length interfaces that support protocol
+ multiplexing the number of transmission units received via
+ the interface which were discarded because of an unknown or
+ unsupported protocol. For any interface that does not
+ support protocol multiplexing, this counter will always be
+ 0.
+ measResultType: integer
+ measResultRange: 0-4294967295
+ measResultUnits: number
+ measObjClass: EthernetPort
+ measCollectionMethod: CC
+ measLastChange: 1.0
+ measChangeType: added
+ measInfoId: "IP Management"
+ measFamily: IP
+ measAdditionalFields: {
+ "measurementStatus": "USED",
+ "initialValue": 0,
+ "acmeParameter1": 0,
+ "acmeParameter2": true}
+
+ - measType: VS.ifHCInBroadcastPkts
+ measDescription: Number of the broadcasted inbound packets delivered to the higher (sub-)layer
+ measCondition: The number of packets, delivered by this sub-layer to a
+ higher (sub-)layer, which were addressed to a broadcast
+ address at this sub-layer. This object is a 64-bit version
+ of ifInBroadcastPkts.
+ Discontinuities in the value of this counter can occur at
+ re-initialization of the management system, and at other
+ times as indicated by the value of
+ ifCounterDiscontinuityTime.
+ measResultType: integer
+ measResultRange: 0-4294967295
+ measResultUnits: number
+ measObjClass: EthernetPort
+ measCollectionMethod: CC
+ measLastChange: 1.0
+ measChangeType: added
+ measInfoId: "IP Management"
+ measFamily: IP
+ measAdditionalFields: {
+ "measurementStatus": "USED",
+ "initialValue": 0,
+ "acmeParameter1": 0}
+
+ - measType: VS.ifHCOutBroadcastPkts
+ measDescription: Number of the broadcasted outsbound packets delivered to the higher (sub-)layer
+ measCondition: The total number of packets that higher-level protocols
+ requested be transmitted, and which were addressed to a
+ broadcast address at this sub-layer, including those that
+ were discarded or not sent. This object is a 64-bit version
+ of ifOutBroadcastPkts.
+ Discontinuities in the value of this counter can occur at
+ re-initialization of the management system, and at other
+ times as indicated by the value of
+ ifCounterDiscontinuityTime.
+ measResultType: integer
+ measResultRange: 0-4294967295
+ measResultUnits: number
+ measObjClass: EthernetPort
+ measCollectionMethod: CC
+ measLastChange: 1.0
+ measChangeType: added
+ measInfoId: "IP Management"
+ measFamily: IP
+ measAdditionalFields: {
+ "measurementStatus": "USED",
+ "initialValue": 0,
+ "acmeParameter1": 0,
+ "acmeParameter2": true,
+ "acmeParameter3": "acmeParameterValue3"}
diff --git a/csar-generator/resources/Files/Scripts/my_script.sh b/csar-generator/resources/Files/Scripts/my_script.sh
new file mode 100755
index 0000000..79b3155
--- /dev/null
+++ b/csar-generator/resources/Files/Scripts/my_script.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+echo "I'm simply an example script file in the package that doesn't do anything!"
\ No newline at end of file
diff --git a/csar-generator/resources/Files/Sme/invokers/invoker-app1.json b/csar-generator/resources/Files/Sme/invokers/invoker-app1.json
new file mode 100755
index 0000000..612af40
--- /dev/null
+++ b/csar-generator/resources/Files/Sme/invokers/invoker-app1.json
@@ -0,0 +1,14 @@
+[
+ {
+ "apiInvokerInformation": "Invoker App 1",
+ "apiList": [
+ {}
+ ],
+ "notificationDestination": "http://invoker-app1:8086/callback",
+ "onboardingInformation": {
+ "apiInvokerPublicKey": "{PUBLIC_KEY_INVOKER_1}",
+ "apiInvokerCertificate": "apiInvokerCertificate"
+ },
+ "requestTestNotification": true
+ }
+]
\ No newline at end of file
diff --git a/csar-generator/resources/Files/Sme/invokers/invoker-app2.json b/csar-generator/resources/Files/Sme/invokers/invoker-app2.json
new file mode 100755
index 0000000..27e1063
--- /dev/null
+++ b/csar-generator/resources/Files/Sme/invokers/invoker-app2.json
@@ -0,0 +1,14 @@
+[
+ {
+ "apiInvokerInformation": "Invoker App 2",
+ "apiList": [
+ {}
+ ],
+ "notificationDestination": "http://invoker-app2:8086/callback",
+ "onboardingInformation": {
+ "apiInvokerPublicKey": "{PUBLIC_KEY_INVOKER_1}",
+ "apiInvokerCertificate": "apiInvokerCertificate"
+ },
+ "requestTestNotification": true
+ }
+]
\ No newline at end of file
diff --git a/csar-generator/resources/Files/Sme/providers/aef-provider-function.json b/csar-generator/resources/Files/Sme/providers/aef-provider-function.json
new file mode 100755
index 0000000..644819c
--- /dev/null
+++ b/csar-generator/resources/Files/Sme/providers/aef-provider-function.json
@@ -0,0 +1,34 @@
+{
+ "apiProvDomInfo": "Provider domain",
+ "apiProvFuncs": [
+ {
+ "apiProvFuncInfo": "rApp as APF",
+ "apiProvFuncRole": "APF",
+ "regInfo": {
+ "apiProvPubKey": "APF-PublicKey"
+ }
+ },
+ {
+ "apiProvFuncInfo": "rApp as AEF",
+ "apiProvFuncRole": "AEF",
+ "regInfo": {
+ "apiProvPubKey": "AEF-PublicKey"
+ }
+ },
+ {
+ "apiProvFuncInfo": "rApp as AMF",
+ "apiProvFuncRole": "AMF",
+ "regInfo": {
+ "apiProvPubKey": "AMF-PublicKey"
+ }
+ },
+ {
+ "apiProvFuncInfo": "Gateway as entrypoint AEF",
+ "apiProvFuncRole": "AEF",
+ "regInfo": {
+ "apiProvPubKey": "AEF-Gateway-PublicKey"
+ }
+ }
+ ],
+ "regSec": "PSK"
+}
\ No newline at end of file
diff --git a/csar-generator/resources/Files/Sme/providers/amf-provider-function.json b/csar-generator/resources/Files/Sme/providers/amf-provider-function.json
new file mode 100755
index 0000000..7bb2984
--- /dev/null
+++ b/csar-generator/resources/Files/Sme/providers/amf-provider-function.json
@@ -0,0 +1,13 @@
+{
+ "apiProvDomInfo": "provider domain rApp as AMF",
+ "apiProvFuncs": [
+ {
+ "apiProvFuncInfo": "rApp as AMF",
+ "apiProvFuncRole": "AMF",
+ "regInfo": {
+ "apiProvPubKey": "AMF-PublicKey"
+ }
+ }
+ ],
+ "regSec": "PSK"
+}
\ No newline at end of file
diff --git a/csar-generator/resources/Files/Sme/providers/apf-provider-function.json b/csar-generator/resources/Files/Sme/providers/apf-provider-function.json
new file mode 100755
index 0000000..8a9383a
--- /dev/null
+++ b/csar-generator/resources/Files/Sme/providers/apf-provider-function.json
@@ -0,0 +1,13 @@
+{
+ "apiProvDomInfo": "provider domain rApp as APF",
+ "apiProvFuncs": [
+ {
+ "apiProvFuncInfo": "rApp as APF",
+ "apiProvFuncRole": "APF",
+ "regInfo": {
+ "apiProvPubKey": "APF-PublicKey"
+ }
+ }
+ ],
+ "regSec": "PSK"
+}
\ No newline at end of file
diff --git a/csar-generator/resources/Files/Sme/providers/gateway-provider-function.json b/csar-generator/resources/Files/Sme/providers/gateway-provider-function.json
new file mode 100755
index 0000000..fae856a
--- /dev/null
+++ b/csar-generator/resources/Files/Sme/providers/gateway-provider-function.json
@@ -0,0 +1,13 @@
+{
+ "apiProvDomInfo": "provider domain Gateway as entrypoint AEF",
+ "apiProvFuncs": [
+ {
+ "apiProvFuncInfo": "Gateway as entrypoint AEF",
+ "apiProvFuncRole": "AEF",
+ "regInfo": {
+ "apiProvPubKey": "AEF-Gateway-PublicKey"
+ }
+ }
+ ],
+ "regSec": "PSK"
+}
\ No newline at end of file
diff --git a/csar-generator/resources/Files/Sme/serviceapis/api-set-1.json b/csar-generator/resources/Files/Sme/serviceapis/api-set-1.json
new file mode 100755
index 0000000..21afb1c
--- /dev/null
+++ b/csar-generator/resources/Files/Sme/serviceapis/api-set-1.json
@@ -0,0 +1,45 @@
+{
+ "apiName": "Rapp API Set A",
+ "description": "Example A API of rApp",
+ "aefProfiles": [
+ {
+ "aefId": "rApp as AEF",
+ "description": "Example A rApp as AEF",
+ "versions": [
+ {
+ "apiVersion": "v1",
+ "resources": [
+ {
+ "resourceName": "exampleA",
+ "commType": "REQUEST_RESPONSE",
+ "uri": "/exampleA/subscription/subscription_id_1",
+ "operations": [
+ "GET"
+ ]
+ }
+ ]
+ }
+ ],
+ "protocol": "HTTP_1_1",
+ "securityMethods": [
+ "PSK"
+ ],
+ "interfaceDescriptions": [
+ {
+ "ipv4Addr": "string",
+ "port": 65535,
+ "securityMethods": [
+ "PKI"
+ ]
+ },
+ {
+ "ipv4Addr": "string",
+ "port": 65535,
+ "securityMethods": [
+ "PKI"
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/csar-generator/resources/Files/Sme/serviceapis/api-set-2.json b/csar-generator/resources/Files/Sme/serviceapis/api-set-2.json
new file mode 100755
index 0000000..8b377fe
--- /dev/null
+++ b/csar-generator/resources/Files/Sme/serviceapis/api-set-2.json
@@ -0,0 +1,45 @@
+{
+ "apiName": "Rapp API Set B",
+ "description": "Example B API of rApp",
+ "aefProfiles": [
+ {
+ "aefId": "rApp as AEF",
+ "description": "Example B rApp as AEF",
+ "versions": [
+ {
+ "apiVersion": "v1",
+ "resources": [
+ {
+ "resourceName": "exampleA",
+ "commType": "REQUEST_RESPONSE",
+ "uri": "/exampleA/subscription/subscription_id_1",
+ "operations": [
+ "GET"
+ ]
+ }
+ ]
+ }
+ ],
+ "protocol": "HTTP_1_1",
+ "securityMethods": [
+ "PSK"
+ ],
+ "interfaceDescriptions": [
+ {
+ "ipv4Addr": "string",
+ "port": 65535,
+ "securityMethods": [
+ "PKI"
+ ]
+ },
+ {
+ "ipv4Addr": "string",
+ "port": 65535,
+ "securityMethods": [
+ "PKI"
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/csar-generator/resources/Files/Yang_module/mynetconf.yang b/csar-generator/resources/Files/Yang_module/mynetconf.yang
new file mode 100755
index 0000000..56501e8
--- /dev/null
+++ b/csar-generator/resources/Files/Yang_module/mynetconf.yang
@@ -0,0 +1,26 @@
+module mynetconf {
+ yang-version 1.1;
+ namespace "urn:mynetconf:test";
+
+ prefix nft;
+
+ organization "mynetconf";
+ contact "my netconf address";
+ description "yang model for mynetconf";
+ revision "2019-03-01"{
+ description "initial version";
+ }
+
+ container netconflist{
+ list netconf{
+ key netconf-id;
+ leaf netconf-id{
+ type uint16;
+ }
+ leaf netconf-param {
+ type uint32;
+ }
+ }
+
+ }
+}
diff --git a/csar-generator/resources/Files/rapp1/rapp.zip b/csar-generator/resources/Files/rapp1/rapp.zip
new file mode 100755
index 0000000..6409765
--- /dev/null
+++ b/csar-generator/resources/Files/rapp1/rapp.zip
Binary files differ
diff --git a/csar-generator/resources/HELM/free5gc-1.1.3.tgz b/csar-generator/resources/HELM/free5gc-1.1.3.tgz
new file mode 100755
index 0000000..df0a584
--- /dev/null
+++ b/csar-generator/resources/HELM/free5gc-1.1.3.tgz
Binary files differ
diff --git a/csar-generator/resources/HELM/ueransim-2.0.14.tgz b/csar-generator/resources/HELM/ueransim-2.0.14.tgz
new file mode 100755
index 0000000..bc9dec2
--- /dev/null
+++ b/csar-generator/resources/HELM/ueransim-2.0.14.tgz
Binary files differ
diff --git a/csar-generator/resources/TOSCA-Metadata/TOSCA.meta b/csar-generator/resources/TOSCA-Metadata/TOSCA.meta
new file mode 100755
index 0000000..3325e34
--- /dev/null
+++ b/csar-generator/resources/TOSCA-Metadata/TOSCA.meta
@@ -0,0 +1,5 @@
+TOSCA-Meta-File-Version: 1.0
+CSAR-Version: 1.0
+Created-By: Ericsson (Zu Qiang 2021-10-21)
+Entry-Definitions: Definitions/asd.yaml
+ETSI-Entry-Manifest: asd.mf
\ No newline at end of file
diff --git a/csar-generator/resources/asd.mf b/csar-generator/resources/asd.mf
new file mode 100755
index 0000000..09818fc
--- /dev/null
+++ b/csar-generator/resources/asd.mf
@@ -0,0 +1,52 @@
+metadata:
+ application_name: Free5gc-APP
+ application_provider: MyCompany
+ release_date_time: 2021-10-21T11:30:00+05:00
+ entry_definition_type: asd
+
+Source: asd.mf
+Source: Definitions/asd.yaml
+Source: Definitions/asd_types.yaml
+Source: Files/ChangeLog.txt
+Source: Files/Events/MyASD_v1.yaml
+Source: Files/Guides/user_guide.txt
+Source: Files/Measurements/PM_Dictionary.yaml
+Source: Files/Scripts/my_script.sh
+Source: Files/Yang_module/mynetconf.yang
+Source: TOSCA-Metadata/TOSCA.meta
+Source: Artifacts/Deployment/HELM/free5gc-1.1.3.tgz
+Source: Artifacts/Deployment/HELM/ueransim-2.0.14.tgz
+Source: Files/rapp1/rapp.zip
+Source: Files/Acm/definition/compositions.json
+Source: Files/Acm/instances/a1pms-instance.json
+Source: Files/Acm/instances/k8s-instance.json
+Source: Files/Acm/instances/kserve-instance.json
+Source: Files/Dme/infoconsumers/json-file-consumer.json
+Source: Files/Dme/infoconsumers/xml-file-consumer.json
+Source: Files/Dme/infoproducers/json-file-data-producer.json
+Source: Files/Dme/infoproducers/xml-file-data-producer.json
+Source: Files/Dme/infotypes/json-file-data-from-filestore.json
+Source: Files/Dme/infotypes/xml-file-data-from-filestore.json
+Source: Files/Sme/invokers/invoker-app1.json
+Source: Files/Sme/invokers/invoker-app2.json
+Source: Files/Sme/provider/aef-provider-function.json
+Source: Files/Sme/provider/amf-provider-function.json
+Source: Files/Sme/provider/apf-provider-function.json
+Source: Files/Sme/provider/gateway-provider-function.json
+Source: Files/Sme/serviceapis/api-set-1.json
+Source: Files/Sme/serviceapis/api-set-2.json
+
+non_mano_artifact_sets:
+ onap_ves_events:
+ Source: Files/Events/MyASD_v1.yaml
+ onap_pm_dictionary:
+ Source: Files/Measurements/PM_Dictionary.yaml
+ onap_yang_modules:
+ Source: Files/Yang_module/mynetconf.yang
+ onap_others:
+ Source: Files/Guides/user_guide.txt
+ onap_vendor_artifacts:
+ vendor_name: Ericsson
+ artifact_type: rApp_name1
+ source:Files/rapp1/rapp.zip
+