You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ariatosca.apache.org by av...@apache.org on 2017/06/06 19:43:53 UTC

[01/13] incubator-ariatosca git commit: ARIA-64 Remove PyYAML dependency [Forced Update!]

Repository: incubator-ariatosca
Updated Branches:
  refs/heads/ARIA-275-update-NFV-profile-to-csd04 fcdbdd702 -> 5e8044d4b (forced update)


ARIA-64 Remove PyYAML dependency


Project: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/commit/e4d00368
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/tree/e4d00368
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/diff/e4d00368

Branch: refs/heads/ARIA-275-update-NFV-profile-to-csd04
Commit: e4d003680acc1dc4bc442a044a5feb0688475b46
Parents: b6d3c43
Author: Tal Liron <ta...@gmail.com>
Authored: Fri Jun 2 12:39:00 2017 -0500
Committer: Ran Ziv <ra...@gigaspaces.com>
Committed: Tue Jun 6 11:50:09 2017 +0300

----------------------------------------------------------------------
 aria/cli/config/config.py | 2 +-
 aria/cli/inputs.py        | 2 +-
 requirements.in           | 1 -
 3 files changed, 2 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/e4d00368/aria/cli/config/config.py
----------------------------------------------------------------------
diff --git a/aria/cli/config/config.py b/aria/cli/config/config.py
index 8c4214c..d584fad 100644
--- a/aria/cli/config/config.py
+++ b/aria/cli/config/config.py
@@ -15,8 +15,8 @@
 
 
 import os
-import yaml
 import pkg_resources
+from ruamel import yaml
 
 from jinja2.environment import Template
 

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/e4d00368/aria/cli/inputs.py
----------------------------------------------------------------------
diff --git a/aria/cli/inputs.py b/aria/cli/inputs.py
index 0ff48dc..4d46ebb 100644
--- a/aria/cli/inputs.py
+++ b/aria/cli/inputs.py
@@ -15,7 +15,7 @@
 
 import os
 import glob
-import yaml
+from ruamel import yaml
 
 from .env import logger
 from .exceptions import AriaCliError

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/e4d00368/requirements.in
----------------------------------------------------------------------
diff --git a/requirements.in b/requirements.in
index ab06d93..54e8714 100644
--- a/requirements.in
+++ b/requirements.in
@@ -13,7 +13,6 @@
 # In order to create the requirements.txt file, execute
 # pip-compile --output-file requirements.txt requirements.in (pip-tools package is needed).
 
-PyYAML<3.13
 requests>=2.3.0, <2.14.0
 networkx>=1.9, <1.10 # version 1.10 dropped support of python 2.6
 retrying>=1.3.0, <1.4.0


[10/13] incubator-ariatosca git commit: Add tosca.nodes.nfv.VDU.Compute and tosca.nodes.nfv.VDU.VirtualStorage

Posted by av...@apache.org.
Add tosca.nodes.nfv.VDU.Compute and tosca.nodes.nfv.VDU.VirtualStorage


Project: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/commit/15b9054e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/tree/15b9054e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/diff/15b9054e

Branch: refs/heads/ARIA-275-update-NFV-profile-to-csd04
Commit: 15b9054e219ca7176e5d2cbbfee8f2cd114e3f0d
Parents: 794af1c
Author: Avia Efrat <av...@gigaspaces.com>
Authored: Tue Jun 6 00:30:13 2017 +0300
Committer: Avia Efrat <av...@gigaspaces.com>
Committed: Tue Jun 6 22:33:10 2017 +0300

----------------------------------------------------------------------
 .../profiles/tosca-simple-nfv-1.0/data.yaml     |   2 +-
 .../profiles/tosca-simple-nfv-1.0/nodes.yaml    | 180 ++++++++++++++++++-
 2 files changed, 176 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/15b9054e/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/data.yaml
----------------------------------------------------------------------
diff --git a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/data.yaml b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/data.yaml
index cf35cba..cec230c 100644
--- a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/data.yaml
+++ b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/data.yaml
@@ -99,7 +99,7 @@ data_types:
           instantiated from the parent Connection Point Descriptor.
         type: tosca.datatypes.nfv.L3AddressData
         required: false
-        # ARIA NOTE: states under the "constraints" column in the properties table:
+        # ARIA NOTE: the spec states under the "constraints" column in the properties table:
         # "Shall be present when the addressType is ip_address."
 
   tosca.datatypes.nfv.VirtualNetworkInterfaceRequirements:

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/15b9054e/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml
----------------------------------------------------------------------
diff --git a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml
index d0ccadd..b123aab 100644
--- a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml
+++ b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml
@@ -15,6 +15,176 @@
 
 node_types:
 
+  tosca.nodes.nfv.VDU.Compute:
+    _extensions:
+      shorthand_name: VDU.Compute
+      type_qualified_name: tosca:VDU.Compute
+      specification: tosca-simple-nfv-1.0
+      specification_section: 5.9.2
+      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd04/tosca-nfv-v1.0-csd04.html#_Toc482896079'
+    description: >-
+      The TOSCA nfv.VDU.Compute node type represents the virtual compute part of a VDU entity which
+      it mainly describes the deployment and operational behavior of a VNF component (VNFC), as
+      defined by [ETSI NFV IFA011].
+    derived_from: tosca.nodes.Compute
+    properties:
+      name:
+        description: Human readable name of the Vdu
+        type: string
+        required: true
+      description:
+        description: Human readable description of the Vdu
+        type: string
+        required: true
+      boot_order:
+        description: >-
+          The key indicates the boot index (lowest index defines highest boot priority).
+          The Value references a descriptor from which a valid boot device is created e.g.
+          VirtualStorageDescriptor from which a VirtualStorage instance is created. If no boot order
+          is defined the default boot order defined in the VIM or NFVI shall be used.
+        type: type: # explicit index (boot index) not necessary, contrary to IFA011
+          entry_schema:
+            type: string
+        required: false
+      nfvi_constraints:
+        description: >-
+          Describes constraints on the NFVI for the VNFC instance(s) created from this Vdu.
+          For example, aspects of a secure hosting environment for the VNFC instance that involve
+          additional entities or processes. More software images can be attached to the
+          virtualization container using virtual_storage.
+        type: list
+        entry_schema:
+          type: string
+        required: false
+      configurable_properties:
+        description: Describes the configurable properties of all VNFC instances based on this VDU.
+        type: map
+        entry_schema:
+          type: tosca.datatypes.nfv.VnfcConfigurableProperties
+        required: true
+    attributes: # ARIA NOTE: The attributes are only described in section [5.9.2.5 Definition], but
+                # are not mentioned in section [5.9.2.2 Attributes].
+                # they are inherited from tosca.nodes.Compute.
+      private_address:
+        status: deprecated
+      public_address:
+        status: deprecated
+      networks:
+        status: deprecated
+      ports:
+        status: deprecated
+    capabilites:
+      virtual_compute:
+        description: Describes virtual compute resources capabilities.
+        type: tosca.capabilities.nfv.VirtualCompute
+      virtual_binding:
+        description: Defines ability of VirtualBindable
+        type: tosca.capabilities.nfv.VirtualBindable
+
+      # ARIA NOTE: the "monitoring_parameter" capability is already commented out in the spec, and
+      # is copied here verbatim from section [5.9.2.5 Definition].
+      # However, in section [5.9.2.4 Capabilities], the type of this capability is
+      # tosca.capabilities.nfv.Metric, and it also has a description.
+      # In addition, the spec might be wrong here regarding the name of this capability, since a
+      # very similar capability exists in section [5.9.6 tosca.nodes.nfv.VnfVirtualLinkDesc] and is
+      # named "monitoring_parameters" (as opposed to "monitoring_parameter" in here)
+
+      #monitoring_parameter:
+        # modeled as ad hoc (named) capabilities in VDU node template
+        # for example:
+        #capabilities:
+        #  cpu_load: tosca.capabilities.nfv.Metric
+        # memory_usage: tosca.capabilities.nfv.Metric
+
+      host: #Editor note: FFS. How this capabilities should be used in NFV Profile
+        type: tosca.capabilities.Container
+        valid_source_types: [tosca.nodes.SoftwareComponent]
+        occurrences: [ 0,UNBOUNDED ]
+      endpoint: # ARIA NOTE: lacks type in contrast with the TOSCA spec
+        occurrences: [ 0,0 ]
+      os: # ARIA NOTE: lacks type in contrast with the TOSCA spec
+        occurrences: [ 0,0 ]
+      scalable: #Editor note: FFS. How this capabilities should be used in NFV Profile
+        type: tosca.capabilities.Scalable
+      binding: # ARIA NOTE: lacks type in contrast with the TOSCA spec
+        occurrences: [0,UNBOUNDED]
+      # ARIA NOTE: The aforementioned two capabilities ('host' and 'scalable') are only described in
+      # section [5.9.2.5 Definition], but are not mentioned in section [5.9.2.4 Capabilities].
+      # they are inherited from tosca.nodes.Compute.
+    requirements:
+      - virtual_storage:
+          capability: tosca.capabilities.nfv.VirtualStorage
+          # ARIA NOTE: the above capability type does not exist in csd04...
+          relationship: tosca.relationships.nfv.VDU.AttachedTo
+          # ARIA NOTE: the above relationship type does not exist in csd04...
+          node: tosca.nodes.nfv.VDU.VirtualStorage
+          occurences: [ 0, UNBOUNDED ]
+      - local_storage: #For NFV Profile, this requirement is deprecated.
+          occurrences: [0,0]
+        # ARIA NOTE: what to do with this capability?
+    artifacts:
+      - sw_image:
+          description: >-
+            Describes the software image which is directly loaded on the virtualization container
+            realizing this virtual storage.
+          file: # ARIA NOTE: missing value even though it is required in TOSCA
+          type: tosca.artifacts.nfv.SwImage
+        # ARIA NOTE: this description is exactly the same as the description of the artifact of the
+        # same name of tosca.nodes.nfv.VDU.VirtualStorage. While the description seems fitting there
+        # here it seems it should mention something in the lines of "realizing this compute node",
+        # and not "realizing this virtual storage"
+
+  tosca.nodes.nfv.VDU.VirtualStorage:
+    _extensions:
+      shorthand_name: VirtualStorage
+      # ARIA NOTE: inconsistent with tosca.nodes.nfv.VDU.VirtualStorage's shorthand_name,
+      # which is VDU.Compute
+      type_qualified_name: tosca:VirtualStorage
+      # ARIA NOTE: inconsistent with tosca.nodes.nfv.VDU.VirtualStorage's type_qualified_name,
+      # which is tosca:VDU.Compute
+      specification: tosca-simple-nfv-1.0
+      specification_section: 5.9.3
+      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd04/tosca-nfv-v1.0-csd04.html#_Toc482896080'
+    description: >-
+      The NFV VirtualStorage node type represents a virtual storage entity which it describes the
+      deployment and operational behavior of a virtual storage resources, as defined by
+      [ETSI NFV IFA011].
+    derived_from: tosca.nodes.Root
+      properties:
+        # ARIA NOTE: the "id" property is already commented out in the spec, and is copied here
+        # verbatim from section [5.9.3.5 Definition]. In section [5.9.3.1 Properties], this property
+        # does not have a type and a required values, but does have a description
+        #id:
+          # node name
+        type_of_storage:
+          description: Type of virtualized storage resource
+          type: string
+          required: true
+        size_of_storage:
+          description: Size of virtualized storage resource (in GB)
+          # ARIA NOTE: if the description states that the property assignment should be in GB, why
+          # does the type is 'scalar-unit.size' and not just integer? In addition, why does section
+          # [5.9.3.1 Properties] states in the constraints column of this attribute that the value
+          # should be a number?
+          type: scalar-unit.size
+          required: true
+        rdma_enabled:
+          description: Indicate if the storage support RDMA
+          type: boolean
+          required: false
+        capabilities:
+          virtual_storage:
+            type: tosca.capabilities.nfv.VirtualStorage
+          # ARIA NOTE: the above capability type does not exist in csd04. csd04 even states:
+          # "Editor Note: Need to create tosca.capabilities.nfv.VirtualStorage capability type."
+        artifacts:
+          - sw_image:
+              description: >-
+                Describes the software image which is directly loaded on the virtualization
+                container realizing this virtual storage.
+              file: # ARIA NOTE: missing value even though it is required in TOSCA
+              type: tosca.artifacts.nfv.SwImage
+
   tosca.nodes.nfv.Cpd:
     _extensions:
       shorthand_name: Cpd
@@ -99,7 +269,7 @@ node_types:
           # tosca.nodes.nfv.VDU.VirtualStorage. I choose to use tosca.nodes.nfv.VDU.Compute, but it
           # can be changed upon discussion.
 
-  VnfVirtualLinkDesc:
+  tosca.nodes.nfv.VnfVirtualLinkDesc:
     _extensions:
        shorthand_name: VnfVirtualLinkDesc
        type_qualified_name: tosca:VnfVirtualLinkDesc
@@ -139,10 +309,14 @@ node_types:
     capabilities:
       virtual_linkable:
        type: tosca.capabilities.nfv.VirtualLinkable
+
       # ARIA NOTE: the "monitoring_parameters" capability is already commented out in the spec, and
       # is copied here verbatim from section [5.9.6.5 Definition].
       # However, in section [5.9.6.4 Capabilities], the type of this capability is
       # tosca.capabilities.nfv.Metric, and it also has a description.
+      # In addition, the spec might be wrong here regarding the name of this capability, since a
+      # very similar capability exists in section [5.9.2 tosca.nodes.nfv.VDU.Compute] and is
+      # named "monitoring_parameter" (as opposed to "monitoring_parameters" in here)
 
       # monitoring_parameters:
         # modeled as ad hoc (named) capabilities in node template
@@ -167,10 +341,6 @@ node_types:
       - forwarder:
           capability: tosca.capabilities.nfv.Forwarder
 
-  #
-  # Virtual link
-  #
-
   tosca.nodes.nfv.VL.ELine:
     _extensions:
       shorthand_name: VL.ELine # ARIA NOTE: omitted in the spec


[03/13] incubator-ariatosca git commit: Add tosca.capabilites.nfv.VirtualCompute

Posted by av...@apache.org.
Add tosca.capabilites.nfv.VirtualCompute


Project: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/commit/41c9f25e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/tree/41c9f25e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/diff/41c9f25e

Branch: refs/heads/ARIA-275-update-NFV-profile-to-csd04
Commit: 41c9f25ec920ad53c8b70699ea36a9b9d1a68980
Parents: 15b9054
Author: Avia Efrat <av...@gigaspaces.com>
Authored: Tue Jun 6 00:39:54 2017 +0300
Committer: Avia Efrat <av...@gigaspaces.com>
Committed: Tue Jun 6 22:33:10 2017 +0300

----------------------------------------------------------------------
 .../tosca-simple-nfv-1.0/capabilities.yaml      | 26 ++++++++++++++++++++
 1 file changed, 26 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/41c9f25e/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/capabilities.yaml
----------------------------------------------------------------------
diff --git a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/capabilities.yaml b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/capabilities.yaml
index 375ba13..6f50f61 100644
--- a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/capabilities.yaml
+++ b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/capabilities.yaml
@@ -62,3 +62,29 @@ capability_types:
       A node type that includes the VirtualLinkable capability indicates that it can be pointed by
       tosca.relationships.nfv.VirtualLinksTo relationship type.
     derived_from: tosca.capabilities.Node
+
+  tosca.capabilites.nfv.VirtualCompute:
+    _extensions:
+      shorthand_name: VirtualCompute
+      type_qualified_name: tosca:VirtualCompute
+      specification: tosca-simple-nfv-1.0
+      specification_section: 5.5.3
+      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd04/tosca-nfv-v1.0-csd04.html#_Toc482896071'
+    derived_from: tosca.capabilities.Root
+    properties:
+      requested_additional_capabilities:
+        # ARIA NOTE: in section [5.5.3.1 Properties] the name of this property is
+        # "request_additional_capabilities", and its type is not a map, but tosca.datatypes.nfv.RequestedAdditionalCapability
+        description: Describes additional capability for a particular VDU.
+        type: map
+        entry_schema:
+           type: tosca.datatypes.nfv.RequestedAdditionalCapability
+        required: false
+      virtual_memory:
+        description: Describes virtual memory of the virtualized compute
+        type: tosca.datatypes.nfv.VirtualMemory
+        required: true
+      virtual_cpu:
+        description: Describes virtual CPU(s) of the virtualized compute.
+        type: tosca.datatypes.nfv.VirtualCpu
+        required: true


[07/13] incubator-ariatosca git commit: Fixed WD04, Rev02 (2016-9-6) and WD04, Rev03 (2016-11-7)

Posted by av...@apache.org.
Fixed WD04, Rev02 (2016-9-6) and WD04, Rev03 (2016-11-7)


Project: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/commit/ca3dc4ad
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/tree/ca3dc4ad
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/diff/ca3dc4ad

Branch: refs/heads/ARIA-275-update-NFV-profile-to-csd04
Commit: ca3dc4ad3fa6f2d9f603eaa73ad3b58a00754933
Parents: 99fcd9d
Author: Avia Efrat <av...@gigaspaces.com>
Authored: Mon Jun 5 16:21:19 2017 +0300
Committer: Avia Efrat <av...@gigaspaces.com>
Committed: Tue Jun 6 22:33:10 2017 +0300

----------------------------------------------------------------------
 .../profiles/tosca-simple-nfv-1.0/data.yaml     | 289 +++++++++++++++++++
 .../profiles/tosca-simple-nfv-1.0/nodes.yaml    | 240 +++++++++++----
 2 files changed, 473 insertions(+), 56 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/ca3dc4ad/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/data.yaml
----------------------------------------------------------------------
diff --git a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/data.yaml b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/data.yaml
index 89e3565..f6a07ef 100644
--- a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/data.yaml
+++ b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/data.yaml
@@ -15,6 +15,295 @@
 
 data_types:
 
+  tosca.datatypes.nfv.L2AddressData:
+    _extensions:
+      shorthand_name: L2AddressData
+      type_qualified_name: tosca:L2AddressData
+      specification: tosca-simple-nfv-1.0
+      specification_section: 5.3.1
+      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd04/tosca-nfv-v1.0-csd04.html#_Toc482896055'
+    # ARIA NOTE: This type is empty in csd04, and is only specified here since the
+    # tosca.datatypes.nfv.AddressData references it (and states 'empty in "GS NFV IFA011 V0.7.3"')
+
+  tosca.datatypes.nfv.L3AddressData:
+    _extensions:
+      shorthand_name: L3AddressData
+      type_qualified_name: tosca:L3AddressData
+      specification: tosca-simple-nfv-1.0
+      specification_section: 5.3.2
+      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd04/tosca-nfv-v1.0-csd04.html#_Toc482896056'
+    description: >-
+      The L3AddressData type is a complex TOSCA data type used to describe L3AddressData information
+      element as defined in [ETSI GS NFV-IFA 011], it provides the information on the IP addresses
+      to be assigned to the connection point instantiated from the parent Connection Point
+      Descriptor.
+    derived_from: tosca.datatypes.Root
+    properties:
+      ip_address_assignment:
+        description: >-
+          Specify if the address assignment is the responsibility of management and orchestration
+          function or not. If it is set to True, it is the management and orchestration function
+          responsibility.
+        type: boolean
+        required: true
+      floating_ip_activated:
+        description: Specify if the floating IP scheme is activated on the Connection Point or not.
+        type: boolean
+        required: true
+      ip_address_type:
+        description: >-
+          Define address type. The address type should be aligned with the address type supported by
+          the layer_protocol properties of the parent VnfExtCpd
+        type: string
+        required: false
+        constraints:
+          - valid_values: [ ipv4, ipv6 ]
+      number_of_ip_address:
+        description: Minimum number of IP addresses to be assigned.
+        type: integer
+        required: false
+
+  tosca.datatypes.nfv.AddressData:
+    _extensions:
+      shorthand_name: AddressData
+      type_qualified_name: tosca:AddressData
+      specification: tosca-simple-nfv-1.0
+      specification_section: 5.3.3
+      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd04/tosca-nfv-v1.0-csd04.html#_Toc482896057'
+    description: >-
+      The AddressData type is a complex TOSCA data type used to describe AddressData information
+      element as defined in [ETSI GS NFV-IFA 011], it provides information on the addresses to be
+      assigned to the connection point(s) instantiated from a Connection Point Descriptor.
+    derived_from: tosca.datatypes.Root
+    properties:
+      address_type:
+        description: >-
+          Describes the type of the address to be assigned to the connection point instantiated from
+          the parent Connection Point Descriptor. The content type shall be aligned with the address
+          type supported by the layerProtocol property of the parent Connection Point Descriptor.
+        type: string
+        required: true
+        constraints:
+          - valid_values: [ mac_address, ip_address ]
+      l2_address_data:
+        description: >-
+          Provides the information on the MAC addresses to be assigned to the connection point(s)
+          instantiated from the parent Connection Point Descriptor.
+        type: tosca.datatypes.nfv.L2AddressData # empty in "GS NFV IFA011 V0.7.3"
+        required: false
+        # ARIA NOTE: states under the "constraints" column in the properties table:
+        # "Shall be present when the addressType is mac_address."
+      l3_address_data:
+        description: >-
+          Provides the information on the IP addresses to be assigned to the connection point
+          instantiated from the parent Connection Point Descriptor.
+        type: tosca.datatypes.nfv.L3AddressData
+        required: false
+        # ARIA NOTE: states under the "constraints" column in the properties table:
+        # "Shall be present when the addressType is ip_address."
+
+  tosca.datatypes.nfv.VirtualNetworkInterfaceRequirements:
+    _extensions:
+      shorthand_name: VirtualNetworkInterfaceRequirements
+      type_qualified_name: tosca:VirtualNetworkInterfaceRequirements
+      specification: tosca-simple-nfv-1.0
+      specification_section: 5.3.4
+      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd04/tosca-nfv-v1.0-csd04.html#_Toc482896058'
+    description: >-
+      The VirtualNetworkInterfaceRequirements type is a complex TOSCA data type used to describe
+      VirtualNetworkInterfaceRequirements information element as defined in [ETSI GS NFV-IFA 011],
+      it provides the information to specify requirements on a virtual network interface realising the
+      CPs instantiated from this CPD.
+    derived_from: tosca.datatypes.Root
+    properties:
+      name:
+        description: Provides a human readable name for the requirement.
+        type: string
+        required: false
+      description:
+        description: Provides a human readable description for the requirement.
+        type: string
+        required: false
+      support_mandatory:
+        description: >-
+          Indicates whether fulfilling the constraint is mandatory (TRUE) for successful operation
+          or desirable (FALSE).
+        type: boolean
+        required: false
+      requirement:
+        description: >-
+          Specifies a requirement such as the support of SR-IOV, a particular data plane
+          acceleration library, an API to be exposed by a NIC, etc.
+        type: string # ARIA NOTE: I arbitrarily wrote "string" here, as csd04 specifies only this
+                     # after requirement's type: "# not specified"
+        required: true
+
+  tosca.datatypes.nfv.ConnectivityType:
+    _extensions:
+      shorthand_name: ConnectivityType
+      type_qualified_name: tosca:ConnectivityType
+      specification: tosca-simple-nfv-1.0
+      specification_section: 5.3.5
+      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd04/tosca-nfv-v1.0-csd04.html#_Toc482896059'
+    description: >-
+      The TOSCA ConnectivityType type is a complex TOSCA data type used to describe ConnectivityType
+      information element as defined in [ETSI GS NFV-IFA 011].
+    derived_from: tosca.datatypes.Root
+    properties:
+      layer_protocol:
+        description: >-
+          Identifies the protocol this VL gives access to (ethernet, mpls, odu2, ipv4, ipv6,
+          pseudo_wire).
+        type: string
+        required: true
+        constraints:
+          - valid_values: [ ethernet, mpls, odu2, ipv4, ipv6, pseudo_wire ]
+      flow_pattern:
+        description: Identifies the flow pattern of the connectivity (Line, Tree, Mesh).
+        type: string
+        required: false
+
+  tosca.datatypes.nfv.RequestedAdditionalCapability:
+    _extensions:
+      shorthand_name: RequestedAdditionalCapability
+      type_qualified_name: tosca:RequestedAdditionalCapability
+      specification: tosca-simple-nfv-1.0
+      specification_section: 5.3.6
+      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd04/tosca-nfv-v1.0-csd04.html#_Toc482896060'
+    description: RequestAdditionalCapability describes additional capability for a particular VDU.
+    derived_from: tosca.datatype.Root
+    properties:
+      request_additional_capability_name:
+        description: Identifies a requested additional capability for the VDU.
+        type: string
+        required: true
+      support_mandatory:
+        description: >-
+          Indicates whether the requested additional capability is mandatory for successful
+          operation.
+        type: string
+        required: true
+      min_requested_additional_capability_version:
+        description: Identifies the minimum version of the requested additional capability.
+        type: string
+        required: false
+      preferred_requested_additional_capability_version:
+        description: Identifies the preferred version of the requested additional capability.
+        type: string
+        required: false
+      target_performance_parameters:
+        description: >-
+          Identifies specific attributes, dependent on the requested additional capability type.
+        type: map
+        entry_schema:
+          type: string
+        required: true
+
+  tosca.datatypes.nfv.VirtualMemory:
+    _extensions:
+      shorthand_name: VirtualMemory
+      type_qualified_name: tosca:VirtualMemory
+      specification: tosca-simple-nfv-1.0
+      specification_section: 5.3.7
+      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd04/tosca-nfv-v1.0-csd04.html#_Toc482896061'
+    description: VirtualMemory describes virtual memory for a particular VDU.
+    derived_from: tosca.datatypes.Root
+    properties:
+      virtual_mem_size:
+        description: Amount of virtual memory.
+        type: scalar-unit.size # Number
+        required: true
+      virtual_mem_oversubscription_policy:
+        description: >-
+          The memory core oversubscription policy in terms of virtual memory to physical memory on
+          the platform. The cardinality can be 0 during the allocation request, if no particular
+          value is requested.
+        type: string
+        required: false
+      numa_enabled:
+        description: >-
+          It specifies the memory allocation to be cognisant of the relevant process/core
+          allocation. The cardinality can be 0 during the allocation request, if no particular value
+          is requested.
+        type: boolean
+        required: false
+
+  tosca.datatypes.nfv.VirtualCpu:
+    _extensions:
+      shorthand_name: VirtualCpu
+      type_qualified_name: tosca:VirtualCpu
+      specification: tosca-simple-nfv-1.0
+      specification_section: 5.3.8
+      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd04/tosca-nfv-v1.0-csd04.html#_Toc482896062'
+    description: VirtualMemory describes virtual memory for a particular VDU
+    derived_from: tosca.datatypes.Root
+    properties:
+      cpu_architecture:
+        description: CPU architecture type. Examples are x86, ARM.
+        type: string
+        required: false
+      num_virtual_cpu:
+        description: Number of virtual CPU’s
+        type: integer
+        required: true
+      virtual_cpu_clock:
+        description: Minimum virtual CPU clock rate
+        type: scalar-unit.frequency
+        required: false
+      virtual_cpu_oversubscription_policy:
+        description: CPU core oversubscription policy
+        type: string
+        required: false
+      virtual_cpu_pinning:
+        description: The virtual CPU pinning configuration for the virtualized compute resource.
+        type: tosca.datatypes.nfv.VirtualCpuPinning
+        required: false
+
+  tosca.datatypes.nfv.VirtualCpuPinning:
+    _extensions:
+      shorthand_name: VirtualCpuPinning
+      type_qualified_name: tosca:VirtualCpuPinning
+      specification: tosca-simple-nfv-1.0
+      specification_section: 5.3.9
+      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd04/tosca-nfv-v1.0-csd04.html#_Toc482896064'
+    description: VirtualCpuPinning describes CPU pinning configuration for a particular CPU.
+    derived_from: tosca.datatypes.Root
+    properties:
+      cpu_pinning_policy:
+        description: Indicates the policy for CPU pinning.
+        type: string # CpuPinningPolicy
+        constraints:
+          - valid_values: [ static, dynamic ]
+        required: false
+      cpu_pinning_map:
+        description: >-
+          If cpuPinningPolicy is defined as "static", the cpuPinningMap provides the map of pinning
+          virtual CPU cores to physical CPU cores/threads
+        type: map
+        entry_schema:
+          type: string
+        required: false
+
+  tosca.datatypes.nfv.VnfcConfigurableProperties:
+    _extensions:
+      shorthand_name: VnfcconfigurableProperties
+      type_qualified_name: tosca:VnfcconfigurableProperties
+      specification: tosca-simple-nfv-1.0
+      specification_section: 5.3.10
+      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd04/tosca-nfv-v1.0-csd04.html#_Toc482896065'
+    description: VnfcConfigurableProperties describes additional configurable properties of a VNFC
+                 # ARIA NOTE: the spec documentation states: "VnfcconfigurableProperties describes
+                 # VirtualCpuPinning describes additional configurable properties of a VNFC".
+                 # I took the liberty of changing this to a more comprehensible sentence.
+    derived_from: tosca.datatypes.Root
+    properties:
+      additional_vnfc_configurable_properties:
+        description: Described additional configuration for VNFC
+        type: map
+        entry_schema:
+          type: string
+        required: false
+
   tosca.datatypes.compute.Container.Architecture.CPUAllocation:
     _extensions:
       shorthand_name: Container.Architecture.CPUAllocation # seems to be a mistake in the spec; the norm is to add a "Container.Architecture." prefix

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/ca3dc4ad/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml
----------------------------------------------------------------------
diff --git a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml
index d2c11dc..e8ab50f 100644
--- a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml
+++ b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml
@@ -45,6 +45,134 @@ node_types:
           capability: tosca.capabilities.nfv.VirtualLinkable
           relationship: tosca.relationships.nfv.VirtualLinksTo
 
+  tosca.nodes.nfv.Cpd:
+    _extensions:
+      shorthand_name: Cpd
+      type_qualified_name: tosca:Cpd
+      specification: tosca-simple-nfv-1.0
+      specification_section: 5.9.4
+      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd04/tosca-nfv-v1.0-csd04.html#_Toc482896081'
+  derived_from: tosca.nodes.Root
+  description: >-
+    The TOSCA nfv.Cpd node represents network connectivity to a compute resource or a VL as defined
+    by [ETSI GS NFV-IFA 011]. This is an abstract type used as parent for the various Cpd types.
+  derived_from: tosca.nodes.Root
+  properties:
+    layer_protocol:
+      description: Identifies which protocol the connection point uses for connectivity purposes
+      type: string
+      constraints:
+        - valid_values: [ ethernet, mpls, odu2, ipv4, ipv6, pseudo_wire ]
+      required: false
+    role: # Name in ETSI NFV IFA011 v0.7.3 cpRole
+      description: >-
+        Identifies the role of the port in the context of the traffic flow patterns in the VNF or
+        parent NS. For example a VNF with a tree flow pattern within the VNF will have legal cpRoles
+        of ROOT and LEAF
+      type: string
+      constraints:
+        - valid_values: [ root, leaf ]
+      required: false
+    description:
+      description: >-
+        Provides human-readable information on the purpose of the connection point
+        (e.g. connection point for control plane traffic).
+      type: string
+      required: false
+    address_data:
+      description: >-
+        Provides information on the addresses to be assigned to the connection point(s) instantiated
+        from this Connection Point Descriptor.
+      type: list
+      entry_schema:
+        type: tosca.datatype.nfv.AddressData
+      required: false
+
+  tosca.nodes.nfv.VduCpd:
+    _extensions:
+       shorthand_name: VduCpd
+       type_qualified_name: tosca:VduCpd
+       specification: tosca-simple-nfv-1.0
+       specification_section: 5.9.5
+       specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd04/tosca-nfv-v1.0-csd04.html#_Toc482896082'
+    description: >-
+      The TOSCA nfv.VduCpd node type represents a type of TOSCA Cpd node and describes network
+      connectivity between a VNFC instance (based on this VDU) and an internal VL as defined by
+      [ETSI GS NFV-IFA 011].
+    derived_from: tosca.nodes.nfv.Cpd
+    properties:
+      bitrate_requirement:
+        description: Bitrate requirement on this connection point.
+        type: integer
+        required: false
+      virtual_network_interface_requirements:
+        description: >-
+          Specifies requirements on a virtual network interface realising the CPs instantiated from
+          this CPD.
+        type: list
+        entry_schema:
+          type: VirtualNetworkInterfaceRequirements
+        required: false
+    requirements:
+      - virtual_link:
+          description: Describes the requirements for linking to virtual link
+          capability: tosca.capabilities.nfv.VirtualLinkable
+          relationship: tosca.relationships.nfv.VirtualLinksTo
+          node: tosca.nodes.nfv.VnfVirtualLinkDesc
+      - virtual_binding:
+          description: Describe the requirement for binding with VDU
+          capability: tosca.capabilities.nfv.VirtualBindable
+          relationship: tosca.relationships.nfv.VirtualBindsTo
+          node: tosca.nodes.nfv.VDU
+
+  VnfVirtualLinkDesc:
+    _extensions:
+       shorthand_name: VnfVirtualLinkDesc
+       type_qualified_name: tosca:VnfVirtualLinkDesc
+       specification: tosca-simple-nfv-1.0
+       specification_section: 5.9.6
+       specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd04/tosca-nfv-v1.0-csd04.html#_Toc482896083'
+    description: >-
+      The TOSCA nfv.VnfVirtualLinkDesc node type represents a logical internal virtual link as
+      defined by [ETSI GS NFV-IFA 011].
+    derived_from: tosca.nodes.Root
+    properties:
+      connectivity_type:
+        description: >-
+          specifies the protocol exposed by the VL and the flow pattern supported by the VL
+        type: tosca.datatypes.nfv.ConnectivityType
+        required: true
+      description:
+        description: >-
+          provides human-readable information on the purpose of the VL (e.g. control plane traffic)
+        type: string
+        required: false
+      test_access:
+        description: >-
+          Test access facilities available on the VL (e.g. none, passive, monitoring, or active
+          (intrusive) loopbacks at endpoints
+        type: string
+        required: false
+     # ARIA NOTE: I commented out the "vl_flavours" property as it references the data type
+     # tosca.datatypes.nfv.VlFlavour, which does not exist in csd04 (it is only mentioned in section
+     # 5.9.6.4 as TBD)
+     #vl_flavours:
+     #  description: Describe a specific flavour of the VL with specific bitrate requirements.
+     #  type: map
+     #    entry_schema:
+     #      type: tosca.datatypes.nfv.VlFlavour
+     #   required: true
+    capabilities:
+      virtual_linkable:
+       type: tosca.capabilities.nfv.VirtualLinkable
+      # ARIA NOTE: the "monitoring_parameters" capability is already commented out in the spec, and
+      # is copied here verbatim from section [5.9.6.5 Definition].
+      # However, in section [5.9.6.4 Capabilities], the type of this capability is
+      # tosca.capabilities.nfv.Metric, and it also has a description.
+
+      # monitoring_parameters:
+        # modeled as ad hoc (named) capabilities in node template
+
 #  tosca.nodes.nfv.VDU:
 #    _extensions:
 #      shorthand_name: VDU
@@ -63,43 +191,43 @@ node_types:
 #      monitoring_parameter:
 #        type: tosca.capabilities.nfv.Metric
 
-  tosca.nodes.nfv.CP:
-    _extensions:
-      shorthand_name: CP
-      type_qualified_name: tosca:CP
-      specification: tosca-simple-nfv-1.0
-      specification_section: 8.5.3
-      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd03/tosca-nfv-v1.0-csd03.html#_Toc419290245'
-    description: >-
-      The NFV CP node represents a logical connection point entity as defined by [ETSI GS NFV-MAN 001 v1.1.1]. A connection point
-      may be, for example, a virtual port, a virtual NIC address, a physical port, a physical NIC address or the endpoint of an IP
-      VPN enabling network connectivity. It is assumed that each type of connection point will be modeled using subtypes of the CP
-      type.
-    derived_from: tosca.nodes.network.Port
-    properties:
-      type:
-        description: >-
-          This may be, for example, a virtual port, a virtual NIC address, a SR-IOV port, a physical port, a physical NIC address
-          or the endpoint of an IP VPN enabling network connectivity.
-        type: string
-      anti_spoofing_protection:
-        description: >-
-          Indicates of whether anti-spoofing rule need to be enabled for this vNIC. This is applicable only when CP type is virtual
-          NIC (vPort).
-        type: boolean
-        required: false
-    attributes:
-      address:
-        description: >-
-          The actual virtual NIC address that is been assigned when instantiating the connection point.
-        type: string
-    requirements:
-      - virtual_link:
-          capability: tosca.capabilities.nfv.VirtualLinkable
-          relationship: tosca.relationships.nfv.VirtualLinksTo
-      - virtual_binding:
-          capability: tosca.capabilities.nfv.VirtualBindable
-          relationship: tosca.relationships.nfv.VirtualBindsTo
+#  tosca.nodes.nfv.CP:
+#    _extensions:
+#      shorthand_name: CP
+#      type_qualified_name: tosca:CP
+#      specification: tosca-simple-nfv-1.0
+#      specification_section: 8.5.3
+#      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd03/tosca-nfv-v1.0-csd03.html#_Toc419290245'
+#    description: >-
+#      The NFV CP node represents a logical connection point entity as defined by [ETSI GS NFV-MAN 001 v1.1.1]. A connection point
+#      may be, for example, a virtual port, a virtual NIC address, a physical port, a physical NIC address or the endpoint of an IP
+#      VPN enabling network connectivity. It is assumed that each type of connection point will be modeled using subtypes of the CP
+#      type.
+#    derived_from: tosca.nodes.network.Port
+#    properties:
+#      type:
+#        description: >-
+#          This may be, for example, a virtual port, a virtual NIC address, a SR-IOV port, a physical port, a physical NIC address
+#          or the endpoint of an IP VPN enabling network connectivity.
+#        type: string
+#      anti_spoofing_protection:
+#        description: >-
+#          Indicates of whether anti-spoofing rule need to be enabled for this vNIC. This is applicable only when CP type is virtual
+#          NIC (vPort).
+#        type: boolean
+#        required: false
+#    attributes:
+#      address:
+#        description: >-
+#          The actual virtual NIC address that is been assigned when instantiating the connection point.
+#        type: string
+#    requirements:
+#      - virtual_link:
+#          capability: tosca.capabilities.nfv.VirtualLinkable
+#          relationship: tosca.relationships.nfv.VirtualLinksTo
+#      - virtual_binding:
+#          capability: tosca.capabilities.nfv.VirtualBindable
+#          relationship: tosca.relationships.nfv.VirtualBindsTo
 
   tosca.nodes.nfv.FP:
     _extensions:
@@ -125,25 +253,25 @@ node_types:
   # Virtual link
   #
 
-  tosca.nodes.nfv.VL:
-    _extensions:
-      shorthand_name: VL
-      type_qualified_name: tosca:VL
-      specification: tosca-simple-nfv-1.0
-      specification_section: 9.1
-      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd03/tosca-nfv-v1.0-csd03.html#_Toc419290251'
-    description: >-
-      The NFV VL node type represents a logical virtual link entity as defined by [ETSI GS NFV-MAN 001 v1.1.1]. It is the default
-      type from which all other virtual link types derive.
-    derived_from: tosca.nodes.network.Network
-    properties:
-      vendor:
-        description: >-
-          Vendor generating this VLD.
-        type: string
-    capabilities:
-      virtual_linkable:
-        type: tosca.capabilities.nfv.VirtualLinkable        
+#  tosca.nodes.nfv.VL:
+#    _extensions:
+#      shorthand_name: VL
+#      type_qualified_name: tosca:VL
+#      specification: tosca-simple-nfv-1.0
+#      specification_section: 9.1
+#      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd03/tosca-nfv-v1.0-csd03.html#_Toc419290251'
+#    description: >-
+#      The NFV VL node type represents a logical virtual link entity as defined by [ETSI GS NFV-MAN 001 v1.1.1]. It is the default
+#      type from which all other virtual link types derive.
+#    derived_from: tosca.nodes.network.Network
+#    properties:
+#      vendor:
+#        description: >-
+#          Vendor generating this VLD.
+#        type: string
+#    capabilities:
+#      virtual_linkable:
+#        type: tosca.capabilities.nfv.VirtualLinkable
 
   tosca.nodes.nfv.VL.ELine:
     _extensions:


[05/13] incubator-ariatosca git commit: Remove tosca.nodes.nfv.FP, as it does not appear in csd04

Posted by av...@apache.org.
Remove tosca.nodes.nfv.FP, as it does not appear in csd04


Project: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/commit/0a224811
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/tree/0a224811
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/diff/0a224811

Branch: refs/heads/ARIA-275-update-NFV-profile-to-csd04
Commit: 0a2248111548d8faadfb85832a2324de58ac471d
Parents: 41c9f25
Author: Avia Efrat <av...@gigaspaces.com>
Authored: Tue Jun 6 00:45:31 2017 +0300
Committer: Avia Efrat <av...@gigaspaces.com>
Committed: Tue Jun 6 22:33:10 2017 +0300

----------------------------------------------------------------------
 .../profiles/tosca-simple-nfv-1.0/nodes.yaml    | 20 --------------------
 1 file changed, 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/0a224811/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml
----------------------------------------------------------------------
diff --git a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml
index b123aab..5bd002d 100644
--- a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml
+++ b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml
@@ -321,26 +321,6 @@ node_types:
       # monitoring_parameters:
         # modeled as ad hoc (named) capabilities in node template
 
-  tosca.nodes.nfv.FP:
-    _extensions:
-      shorthand_name: FP # ARIA NOTE: the spec must be mistaken here, says "VL"
-      type_qualified_name: tosca:FP
-      specification: tosca-simple-nfv-1.0
-      specification_section: 10.5.1
-      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd03/tosca-nfv-v1.0-csd03.html#_Toc447714722'
-    description: >-
-      The NFV FP node type represents a logical network forwarding path entity as defined by [ETSI GS NFV-MAN 001 v1.1.1].
-    derived_from: tosca.nodes.Root
-    properties:
-      policy:
-        description: >-
-          A policy or rule to apply to the NFP
-        type: string
-        required: false
-    requirements:
-      - forwarder:
-          capability: tosca.capabilities.nfv.Forwarder
-
   tosca.nodes.nfv.VL.ELine:
     _extensions:
       shorthand_name: VL.ELine # ARIA NOTE: omitted in the spec


[12/13] incubator-ariatosca git commit: Remove tosca.groups.nfv.VNFFG

Posted by av...@apache.org.
Remove tosca.groups.nfv.VNFFG

It is  not present in csd04.
The changelog at the end of csd04 states:
"Deleted NSD related content, v1.0 will only cover VNFD model."
tosca.groups.nfv.VNFFG was a part of the VNFFGD model, which probably
also got deleted, since it is not the VNFD model.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/commit/c8e49865
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/tree/c8e49865
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/diff/c8e49865

Branch: refs/heads/ARIA-275-update-NFV-profile-to-csd04
Commit: c8e49865e24b1ce8989eceaf7861e83df314ac9b
Parents: 6bad650
Author: Avia Efrat <av...@gigaspaces.com>
Authored: Tue Jun 6 01:30:48 2017 +0300
Committer: Avia Efrat <av...@gigaspaces.com>
Committed: Tue Jun 6 22:33:10 2017 +0300

----------------------------------------------------------------------
 .../profiles/tosca-simple-nfv-1.0/groups.yaml   | 56 --------------------
 .../profiles/tosca-simple-nfv-1.0/nodes.yaml    |  2 +-
 .../tosca-simple-nfv-1.0.yaml                   |  1 -
 3 files changed, 1 insertion(+), 58 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/c8e49865/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/groups.yaml
----------------------------------------------------------------------
diff --git a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/groups.yaml b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/groups.yaml
deleted file mode 100644
index 5eb87c8..0000000
--- a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/groups.yaml
+++ /dev/null
@@ -1,56 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-
-group_types:
-
-  tosca.groups.nfv.VNFFG:
-    _extensions:
-      shorthand_name: VNFFG # ARIA NOTE: the spec must be mistaken here, says "VL"
-      type_qualified_name: tosca:VNFFG
-      specification: tosca-simple-nfv-1.0
-      specification_section: 10.6.1
-      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd03/tosca-nfv-v1.0-csd03.html#_Toc447714727'
-    description: >-
-      The NFV VNFFG group type represents a logical VNF forwarding graph entity as defined by [ETSI GS NFV-MAN 001 v1.1.1].
-    derived_from: tosca.groups.Root
-    properties:
-      vendor:
-        description: >-
-          Specify the vendor generating this VNFFG.
-        type: string
-      version:
-        description: >-
-          Specify the identifier (e.g. name), version, and description of service this VNFFG is describing.
-        type: string
-      number_of_endpoints:
-        description: >-
-          Count of the external endpoints included in this VNFFG, to form an index.
-        type: integer
-      dependent_virtual_link:
-        description: >-
-          Reference to a list of VLD used in this Forwarding Graph.
-        type: list
-        entry_schema: string
-      connection_point:
-        description: >-
-          Reference to Connection Points forming the VNFFG.
-        type: list
-        entry_schema: string
-      constituent_vnfs:
-        description: >-
-          Reference to a list of VNFD used in this VNF Forwarding Graph.
-        type: list
-        entry_schema: string
-    members: [ tosca.nodes.nfv.FP ]

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/c8e49865/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml
----------------------------------------------------------------------
diff --git a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml
index 2e1b634..6d68190 100644
--- a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml
+++ b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml
@@ -42,7 +42,7 @@ node_types:
           The Value references a descriptor from which a valid boot device is created e.g.
           VirtualStorageDescriptor from which a VirtualStorage instance is created. If no boot order
           is defined the default boot order defined in the VIM or NFVI shall be used.
-        type: type: # explicit index (boot index) not necessary, contrary to IFA011
+        type: list # explicit index (boot index) not necessary, contrary to IFA011
           entry_schema:
             type: string
         required: false

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/c8e49865/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/tosca-simple-nfv-1.0.yaml
----------------------------------------------------------------------
diff --git a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/tosca-simple-nfv-1.0.yaml b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/tosca-simple-nfv-1.0.yaml
index 911ff3b..e881b7e 100644
--- a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/tosca-simple-nfv-1.0.yaml
+++ b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/tosca-simple-nfv-1.0.yaml
@@ -16,6 +16,5 @@
 imports:
   - capabilities.yaml
   - data.yaml
-  - groups.yaml
   - nodes.yaml
   - relationships.yaml


[11/13] incubator-ariatosca git commit: Removed the virtual link (VL) node types, as they do not appear in csd04

Posted by av...@apache.org.
Removed the virtual link (VL) node types, as they do not appear in csd04


Project: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/commit/7bffd188
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/tree/7bffd188
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/diff/7bffd188

Branch: refs/heads/ARIA-275-update-NFV-profile-to-csd04
Commit: 7bffd1881f26cd086e885424332f2f70f2db9faa
Parents: 0a22481
Author: Avia Efrat <av...@gigaspaces.com>
Authored: Tue Jun 6 00:50:47 2017 +0300
Committer: Avia Efrat <av...@gigaspaces.com>
Committed: Tue Jun 6 22:33:10 2017 +0300

----------------------------------------------------------------------
 .../profiles/tosca-simple-nfv-1.0/nodes.yaml    | 109 ++++++-------------
 1 file changed, 35 insertions(+), 74 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/7bffd188/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml
----------------------------------------------------------------------
diff --git a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml
index 5bd002d..2e1b634 100644
--- a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml
+++ b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml
@@ -192,41 +192,41 @@ node_types:
       specification: tosca-simple-nfv-1.0
       specification_section: 5.9.4
       specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd04/tosca-nfv-v1.0-csd04.html#_Toc482896081'
-  derived_from: tosca.nodes.Root
-  description: >-
-    The TOSCA nfv.Cpd node represents network connectivity to a compute resource or a VL as defined
-    by [ETSI GS NFV-IFA 011]. This is an abstract type used as parent for the various Cpd types.
-  derived_from: tosca.nodes.Root
-  properties:
-    layer_protocol:
-      description: Identifies which protocol the connection point uses for connectivity purposes
-      type: string
-      constraints:
-        - valid_values: [ ethernet, mpls, odu2, ipv4, ipv6, pseudo_wire ]
-      required: false
-    role: # Name in ETSI NFV IFA011 v0.7.3 cpRole
-      description: >-
-        Identifies the role of the port in the context of the traffic flow patterns in the VNF or
-        parent NS. For example a VNF with a tree flow pattern within the VNF will have legal cpRoles
-        of ROOT and LEAF
-      type: string
-      constraints:
-        - valid_values: [ root, leaf ]
-      required: false
-    description:
-      description: >-
-        Provides human-readable information on the purpose of the connection point
-        (e.g. connection point for control plane traffic).
-      type: string
-      required: false
-    address_data:
-      description: >-
-        Provides information on the addresses to be assigned to the connection point(s) instantiated
-        from this Connection Point Descriptor.
-      type: list
-      entry_schema:
-        type: tosca.datatype.nfv.AddressData
-      required: false
+    derived_from: tosca.nodes.Root
+    description: >-
+      The TOSCA nfv.Cpd node represents network connectivity to a compute resource or a VL as defined
+      by [ETSI GS NFV-IFA 011]. This is an abstract type used as parent for the various Cpd types.
+
+    properties:
+      layer_protocol:
+        description: Identifies which protocol the connection point uses for connectivity purposes
+        type: string
+        constraints:
+          - valid_values: [ ethernet, mpls, odu2, ipv4, ipv6, pseudo_wire ]
+        required: false
+      role: # Name in ETSI NFV IFA011 v0.7.3 cpRole
+        description: >-
+          Identifies the role of the port in the context of the traffic flow patterns in the VNF or
+          parent NS. For example a VNF with a tree flow pattern within the VNF will have legal cpRoles
+          of ROOT and LEAF
+        type: string
+        constraints:
+          - valid_values: [ root, leaf ]
+        required: false
+      description:
+        description: >-
+          Provides human-readable information on the purpose of the connection point
+          (e.g. connection point for control plane traffic).
+        type: string
+        required: false
+      address_data:
+        description: >-
+          Provides information on the addresses to be assigned to the connection point(s) instantiated
+          from this Connection Point Descriptor.
+        type: list
+        entry_schema:
+          type: tosca.datatype.nfv.AddressData
+        required: false
 
   tosca.nodes.nfv.VduCpd:
     _extensions:
@@ -320,42 +320,3 @@ node_types:
 
       # monitoring_parameters:
         # modeled as ad hoc (named) capabilities in node template
-
-  tosca.nodes.nfv.VL.ELine:
-    _extensions:
-      shorthand_name: VL.ELine # ARIA NOTE: omitted in the spec
-      type_qualified_name: tosca:VL.ELine
-      specification: tosca-simple-nfv-1.0
-      specification_section: 9.2
-      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd03/tosca-nfv-v1.0-csd03.html#_Toc419290256'
-    description: >-
-      The NFV VL.ELine node represents an E-Line virtual link entity.
-    derived_from: tosca.nodes.nfv.VL  
-    capabilities:
-      virtual_linkable:
-        type: tosca.capabilities.nfv.VirtualLinkable
-        occurrences: [ 2, 2 ] # ARIA NOTE: section 3.2.3.1 states that the upper bound must be
-                              # higher than the lower bound, but section 3.6.2.1 uses a range with
-                              # equal bounds
-
-  tosca.nodes.nfv.VL.ELAN:
-    _extensions:
-      shorthand_name: VL.ELAN # ARIA NOTE: omitted in the spec
-      type_qualified_name: tosca:VL.ELAN
-      specification: tosca-simple-nfv-1.0
-      specification_section: 9.3
-      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd03/tosca-nfv-v1.0-csd03.html#_Toc419290257'
-    description: >-
-      The NFV VL.ELan node represents an E-LAN virtual link entity.
-    derived_from: tosca.nodes.network.Network
-
-  tosca.nodes.nfv.VL.ETree:
-    _extensions:
-      shorthand_name: VL.ETree # ARIA NOTE: omitted in the spec
-      type_qualified_name: tosca:VL.ETree
-      specification: tosca-simple-nfv-1.0
-      specification_section: 9.4
-      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd03/tosca-nfv-v1.0-csd03.html#_Toc419290258'
-    description: >-
-      The NFV VL.ETree node represents an E-Tree virtual link entity.
-    derived_from: tosca.nodes.nfv.VL


[06/13] incubator-ariatosca git commit: Fixed WD03, Rev01 (2016-7-29)

Posted by av...@apache.org.
Fixed WD03, Rev01 (2016-7-29)

Also fixed a typo that repeated itself.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/commit/99fcd9d6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/tree/99fcd9d6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/diff/99fcd9d6

Branch: refs/heads/ARIA-275-update-NFV-profile-to-csd04
Commit: 99fcd9d61303ac0840ce04b951aeaf5ac795e435
Parents: 180e0a1
Author: Avia Efrat <av...@gigaspaces.com>
Authored: Sun Jun 4 22:11:10 2017 +0300
Committer: Avia Efrat <av...@gigaspaces.com>
Committed: Tue Jun 6 22:33:10 2017 +0300

----------------------------------------------------------------------
 .../profiles/tosca-simple-1.0/artifacts.yaml    |  8 ++--
 .../profiles/tosca-simple-1.0/capabilities.yaml |  2 +-
 .../profiles/tosca-simple-1.0/data.yaml         |  2 +-
 .../profiles/tosca-simple-1.0/groups.yaml       |  2 +-
 .../profiles/tosca-simple-1.0/interfaces.yaml   |  2 +-
 .../profiles/tosca-simple-1.0/nodes.yaml        |  2 +-
 .../profiles/tosca-simple-1.0/policies.yaml     | 10 ++--
 .../tosca-simple-1.0/relationships.yaml         |  2 +-
 .../profiles/tosca-simple-nfv-1.0/nodes.yaml    | 48 ++++++++++----------
 9 files changed, 40 insertions(+), 38 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/99fcd9d6/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/artifacts.yaml
----------------------------------------------------------------------
diff --git a/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/artifacts.yaml b/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/artifacts.yaml
index af99340..cfb0df5 100644
--- a/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/artifacts.yaml
+++ b/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/artifacts.yaml
@@ -17,7 +17,7 @@ artifact_types:
 
   tosca.artifacts.Root:
     _extensions:
-      shorthand_name: Root # ARIA NOTE: ommitted in the spec
+      shorthand_name: Root # ARIA NOTE: omitted in the spec
       type_qualified_name: tosca:Root
       specification: tosca-simple-1.0
       specification_section: 5.3.1
@@ -41,7 +41,7 @@ artifact_types:
   
   tosca.artifacts.Deployment:
     _extensions:
-      shorthand_name: Deployment # ARIA NOTE: ommitted in the spec
+      shorthand_name: Deployment # ARIA NOTE: omitted in the spec
       type_qualified_name: tosca:Deployment
       specification: tosca-simple-1.0
       specification_section: 5.3.3.1
@@ -67,7 +67,7 @@ artifact_types:
   
   tosca.artifacts.Deployment.Image.VM:
     _extensions:
-      shorthand_name: Deployment.VM # ARIA NOTE: ommitted in the spec
+      shorthand_name: Deployment.VM # ARIA NOTE: omitted in the spec
       type_qualified_name: tosca:Deployment.VM
       specification: tosca-simple-1.0
       specification_section: 5.3.3.4
@@ -85,7 +85,7 @@ artifact_types:
   
   tosca.artifacts.Implementation:
     _extensions:
-      shorthand_name: Implementation # ARIA NOTE: ommitted in the spec
+      shorthand_name: Implementation # ARIA NOTE: omitted in the spec
       type_qualified_name: tosca:Implementation
       specification: tosca-simple-1.0
       specification_section: 5.3.4.1

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/99fcd9d6/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/capabilities.yaml
----------------------------------------------------------------------
diff --git a/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/capabilities.yaml b/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/capabilities.yaml
index 0b81a16..30abe10 100644
--- a/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/capabilities.yaml
+++ b/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/capabilities.yaml
@@ -17,7 +17,7 @@ capability_types:
 
   tosca.capabilities.Root:
     _extensions:
-      shorthand_name: Root # ARIA NOTE: ommitted in the spec
+      shorthand_name: Root # ARIA NOTE: omitted in the spec
       type_qualified_name: tosca:Root
       specification: tosca-simple-1.0
       specification_section: 5.4.1

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/99fcd9d6/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/data.yaml
----------------------------------------------------------------------
diff --git a/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/data.yaml b/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/data.yaml
index 5210aa0..771a969 100644
--- a/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/data.yaml
+++ b/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/data.yaml
@@ -95,7 +95,7 @@ data_types:
 
   tosca.datatypes.Root:
     _extensions:
-      shorthand_name: Root # ARIA NOTE: ommitted in the spec
+      shorthand_name: Root # ARIA NOTE: omitted in the spec
       type_qualified_name: tosca:Root
       specification: tosca-simple-1.0
       specification_section: 5.2.1

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/99fcd9d6/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/groups.yaml
----------------------------------------------------------------------
diff --git a/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/groups.yaml b/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/groups.yaml
index 31cfc55..66cc25f 100644
--- a/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/groups.yaml
+++ b/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/groups.yaml
@@ -17,7 +17,7 @@ group_types:
 
   tosca.groups.Root:
     _extensions:
-      shorthand_name: Root # ARIA NOTE: ommitted in the spec
+      shorthand_name: Root # ARIA NOTE: omitted in the spec
       type_qualified_name: tosca:Root
       specification: tosca-simple-1.0
       specification_section: 5.9.1

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/99fcd9d6/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/interfaces.yaml
----------------------------------------------------------------------
diff --git a/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/interfaces.yaml b/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/interfaces.yaml
index 1e83ef9..473bd98 100644
--- a/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/interfaces.yaml
+++ b/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/interfaces.yaml
@@ -17,7 +17,7 @@ interface_types:
 
   tosca.interfaces.Root:
     _extensions:
-      shorthand_name: Root # ARIA NOTE: ommitted in the spec
+      shorthand_name: Root # ARIA NOTE: omitted in the spec
       type_qualified_name: tosca:Root
       specification: tosca-simple-1.0
       specification_section: 5.7.3

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/99fcd9d6/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/nodes.yaml
----------------------------------------------------------------------
diff --git a/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/nodes.yaml b/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/nodes.yaml
index bb33b6f..1d2fe90 100644
--- a/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/nodes.yaml
+++ b/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/nodes.yaml
@@ -214,7 +214,7 @@ node_types:
   
   tosca.nodes.DBMS:
     _extensions:
-      shorthand_name: DBMS # ARIA NOTE: ommitted in the spec
+      shorthand_name: DBMS # ARIA NOTE: omitted in the spec
       type_qualified_name: tosca:DBMS
       specification: tosca-simple-1.0
       specification_section: 5.8.6

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/99fcd9d6/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/policies.yaml
----------------------------------------------------------------------
diff --git a/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/policies.yaml b/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/policies.yaml
index 015d2b0..c65e38b 100644
--- a/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/policies.yaml
+++ b/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/policies.yaml
@@ -17,7 +17,7 @@ policy_types:
 
   tosca.policies.Root:
     _extensions:
-      shorthand_name: Root # ARIA NOTE: ommitted in the spec
+      shorthand_name: Root # ARIA NOTE: omitted in the spec
       type_qualified_name: tosca:Root
       specification: tosca-simple-1.0
       specification_section: 5.10.1
@@ -27,7 +27,7 @@ policy_types:
   
   tosca.policies.Placement:
     _extensions:
-      shorthand_name: Placement # ARIA NOTE: ommitted in the spec
+      shorthand_name: Placement # ARIA NOTE: omitted in the spec
       type_qualified_name: tosca:Placement
       specification: tosca-simple-1.0
       specification_section: 5.10.2
@@ -38,7 +38,7 @@ policy_types:
   
   tosca.policies.Scaling:
     _extensions:
-      shorthand_name: Scaling # ARIA NOTE: ommitted in the spec
+      shorthand_name: Scaling # ARIA NOTE: omitted in the spec
       type_qualified_name: tosca:Scaling
       specification: tosca-simple-1.0
       specification_section: 5.10.3
@@ -49,7 +49,7 @@ policy_types:
   
   tosca.policies.Update:
     _extensions:
-      shorthand_name: Update # ARIA NOTE: ommitted in the spec
+      shorthand_name: Update # ARIA NOTE: omitted in the spec
       type_qualified_name: tosca:Update
       specification: tosca-simple-1.0
       specification_section: 5.10.4
@@ -60,7 +60,7 @@ policy_types:
   
   tosca.policies.Performance:
     _extensions:
-      shorthand_name: Performance # ARIA NOTE: ommitted in the spec
+      shorthand_name: Performance # ARIA NOTE: omitted in the spec
       type_qualified_name: tosca:Performance
       specification: tosca-simple-1.0
       specification_section: 5.10.5

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/99fcd9d6/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/relationships.yaml
----------------------------------------------------------------------
diff --git a/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/relationships.yaml b/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/relationships.yaml
index 6ea4d12..b9d3176 100644
--- a/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/relationships.yaml
+++ b/extensions/aria_extension_tosca/profiles/tosca-simple-1.0/relationships.yaml
@@ -17,7 +17,7 @@ relationship_types:
 
   tosca.relationships.Root:
     _extensions:
-      shorthand_name: Root # ARIA NOTE: ommitted in the spec
+      shorthand_name: Root # ARIA NOTE: omitted in the spec
       type_qualified_name: tosca:Root
       specification: tosca-simple-1.0
       specification_section: 5.6.1

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/99fcd9d6/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml
----------------------------------------------------------------------
diff --git a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml
index 0dfe38d..d2c11dc 100644
--- a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml
+++ b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml
@@ -17,7 +17,7 @@ node_types:
 
   tosca.nodes.nfv.VNF:
     _extensions:
-      shorthand_name: VNF # ARIA NOTE: ommitted in the spec
+      shorthand_name: VNF # ARIA NOTE: omitted in the spec
       type_qualified_name: tosca:VNF
       specification: tosca-simple-nfv-1.0
       specification_section: 8.5.1
@@ -45,23 +45,23 @@ node_types:
           capability: tosca.capabilities.nfv.VirtualLinkable
           relationship: tosca.relationships.nfv.VirtualLinksTo
 
-  tosca.nodes.nfv.VDU:
-    _extensions:
-      shorthand_name: VDU
-      type_qualified_name: tosca:VDU
-      specification: tosca-simple-nfv-1.0
-      specification_section: 8.5.2
-      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd03/tosca-nfv-v1.0-csd03.html#_Toc419290242'
-    description: >-
-      The NFV vdu node type represents a logical vdu entity as defined by [ETSI GS NFV-MAN 001 v1.1.1].
-    derived_from: tosca.nodes.Root
-    capabilities:
-      nfv_compute:
-        type: tosca.capabilities.Compute.Container.Architecture
-      virtual_binding:
-        type: tosca.capabilities.nfv.VirtualBindable
-      monitoring_parameter:
-        type: tosca.capabilities.nfv.Metric
+#  tosca.nodes.nfv.VDU:
+#    _extensions:
+#      shorthand_name: VDU
+#      type_qualified_name: tosca:VDU
+#      specification: tosca-simple-nfv-1.0
+#      specification_section: 8.5.2
+#      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd03/tosca-nfv-v1.0-csd03.html#_Toc419290242'
+#    description: >-
+#      The NFV vdu node type represents a logical vdu entity as defined by [ETSI GS NFV-MAN 001 v1.1.1].
+#    derived_from: tosca.nodes.Root
+#    capabilities:
+#      nfv_compute:
+#        type: tosca.capabilities.Compute.Container.Architecture
+#      virtual_binding:
+#        type: tosca.capabilities.nfv.VirtualBindable
+#      monitoring_parameter:
+#        type: tosca.capabilities.nfv.Metric
 
   tosca.nodes.nfv.CP:
     _extensions:
@@ -82,7 +82,7 @@ node_types:
           This may be, for example, a virtual port, a virtual NIC address, a SR-IOV port, a physical port, a physical NIC address
           or the endpoint of an IP VPN enabling network connectivity.
         type: string
-      anti_spoof_protection:
+      anti_spoofing_protection:
         description: >-
           Indicates of whether anti-spoofing rule need to be enabled for this vNIC. This is applicable only when CP type is virtual
           NIC (vPort).
@@ -147,7 +147,7 @@ node_types:
 
   tosca.nodes.nfv.VL.ELine:
     _extensions:
-      shorthand_name: VL.ELine # ARIA NOTE: ommitted in the spec
+      shorthand_name: VL.ELine # ARIA NOTE: omitted in the spec
       type_qualified_name: tosca:VL.ELine
       specification: tosca-simple-nfv-1.0
       specification_section: 9.2
@@ -158,11 +158,13 @@ node_types:
     capabilities:
       virtual_linkable:
         type: tosca.capabilities.nfv.VirtualLinkable
-        occurrences: [ 2, UNBOUNDED ] # ARIA NOTE: the spec is wrong here, must be a range
+        occurrences: [ 2, 2 ] # ARIA NOTE: section 3.2.3.1 states that the upper bound must be
+                              # higher than the lower bound, but section 3.6.2.1 uses a range with
+                              # equal bounds
 
   tosca.nodes.nfv.VL.ELAN:
     _extensions:
-      shorthand_name: VL.ELAN # ARIA NOTE: ommitted in the spec
+      shorthand_name: VL.ELAN # ARIA NOTE: omitted in the spec
       type_qualified_name: tosca:VL.ELAN
       specification: tosca-simple-nfv-1.0
       specification_section: 9.3
@@ -173,7 +175,7 @@ node_types:
 
   tosca.nodes.nfv.VL.ETree:
     _extensions:
-      shorthand_name: VL.ETree # ARIA NOTE: ommitted in the spec
+      shorthand_name: VL.ETree # ARIA NOTE: omitted in the spec
       type_qualified_name: tosca:VL.ETree
       specification: tosca-simple-nfv-1.0
       specification_section: 9.4


[13/13] incubator-ariatosca git commit: remove two relationship types

Posted by av...@apache.org.
remove two relationship types

- tosca.relationships.nfv.ForwardsTo
- tosca.relationships.nfv.VirtualLinksTo

They are not present in csd04.
The changelog at the end of csd04 states:
"Deleted NSD related content, v1.0 will only cover VNFD model."
The second relationship was a part of the NSD model.
The first relationship was a part of the VNFFGD model, which probably
also got deleted, since it is not the VNFD model.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/commit/bdf117c5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/tree/bdf117c5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/diff/bdf117c5

Branch: refs/heads/ARIA-275-update-NFV-profile-to-csd04
Commit: bdf117c5163525e48538695825d8035e493e4058
Parents: 7bffd18
Author: Avia Efrat <av...@gigaspaces.com>
Authored: Tue Jun 6 01:05:13 2017 +0300
Committer: Avia Efrat <av...@gigaspaces.com>
Committed: Tue Jun 6 22:33:10 2017 +0300

----------------------------------------------------------------------
 .../tosca-simple-nfv-1.0/relationships.yaml     | 35 ++++----------------
 1 file changed, 7 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/bdf117c5/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/relationships.yaml
----------------------------------------------------------------------
diff --git a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/relationships.yaml b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/relationships.yaml
index b745735..6cf0f6e 100644
--- a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/relationships.yaml
+++ b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/relationships.yaml
@@ -20,8 +20,8 @@ relationship_types:
       shorthand_name: VirtualBindsTo
       type_qualified_name: tosca:VirtualBindsTo
       specification: tosca-simple-nfv-1.0
-      specification_section: 8.4.1
-      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd03/tosca-nfv-v1.0-csd03.html#_Toc419290234'
+      specification_section: 5.7.1
+      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd04/tosca-nfv-v1.0-csd04.html#_Toc482896074'
     description: >-
       This relationship type represents an association relationship between VDU and CP node types.
     derived_from: tosca.relationships.DependsOn
@@ -32,33 +32,12 @@ relationship_types:
       shorthand_name: Monitor
       type_qualified_name: tosca:Monitor
       specification: tosca-simple-nfv-1.0
-      specification_section: 8.4.2
-      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd03/tosca-nfv-v1.0-csd03.html#_Toc418607880'
+      specification_section: 5.7.2
+      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd04/tosca-nfv-v1.0-csd04.html#_Toc482896075'
     description: >-
       This relationship type represents an association relationship to the Metric capability of VDU node types.
     derived_from: tosca.relationships.ConnectsTo
     valid_target_types: [ tosca.capabilities.nfv.Metric ]
-
-  tosca.relationships.nfv.ForwardsTo:
-    _extensions:
-      shorthand_name: ForwardsTo
-      type_qualified_name: tosca:ForwardsTo
-      specification: tosca-simple-nfv-1.0
-      specification_section: 10.4.1
-      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd03/tosca-nfv-v1.0-csd03.html#_Toc447714720'
-    description: >-
-      This relationship type represents a traffic flow between two connection point node types.
-    derived_from: tosca.relationships.Root
-    valid_target_types: [ tosca.capabilities.nfv.Forwarder ]
-
-  tosca.relationships.nfv.VirtualLinksTo:
-    _extensions:
-      shorthand_name: VirtualLinksTo
-      type_qualified_name: tosca:VirtualLinksTo
-      specification: tosca-simple-nfv-1.0
-      specification_section: 11.4.1
-      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd03/tosca-nfv-v1.0-csd03.html#_Toc447714737'
-    description: >-
-      This relationship type represents an association relationship between VNFs and VL node types.
-    derived_from: tosca.relationships.DependsOn
-    valid_target_types: [ tosca.capabilities.nfv.VirtualLinkable ]
+    # ARIA NOTE: csd04 lacks the definition of tosca.relationships.nfv.Monitor (the derived_from and
+    # valid_target_types). It took the liberty of copying their values from csd03 as I feel they
+    # just got lost in an extensive cut-and-paste session that took place between csd03 and csd04.


[02/13] incubator-ariatosca git commit: ARIA-262 Inconsistent node attributes behavior

Posted by av...@apache.org.
ARIA-262 Inconsistent node attributes behavior

Inroduced a more comprehensive way to instrument relationship attributes.

Old behavior instrumented attributes only if they were accessed directly from the
parent model. Traversing the storage made the access to an attribute inconsistent.

The new solution enables encapsulating the attributes disregarding the way they
were retrieved.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/commit/180e0a1c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/tree/180e0a1c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/diff/180e0a1c

Branch: refs/heads/ARIA-275-update-NFV-profile-to-csd04
Commit: 180e0a1cf1ad6da0ddd611b90a58e71acbea52e7
Parents: e4d0036
Author: max-orlov <ma...@gigaspaces.com>
Authored: Wed May 31 21:07:49 2017 +0300
Committer: max-orlov <ma...@gigaspaces.com>
Committed: Tue Jun 6 15:20:12 2017 +0300

----------------------------------------------------------------------
 .../context/collection_instrumentation.py       | 242 ---------------
 aria/orchestrator/context/operation.py          |  21 +-
 aria/orchestrator/context/toolbelt.py           |   6 +-
 aria/orchestrator/decorators.py                 |   6 +-
 .../execution_plugin/ctx_proxy/server.py        |  17 +-
 aria/storage/api.py                             |  10 +
 aria/storage/collection_instrumentation.py      | 306 +++++++++++++++++++
 aria/storage/core.py                            |  15 +
 aria/storage/sql_mapi.py                        |  14 +-
 aria/utils/imports.py                           |   2 +-
 .../context/test_collection_instrumentation.py  | 150 ++++++---
 .../execution_plugin/test_ctx_proxy_server.py   |   2 +-
 tests/orchestrator/execution_plugin/test_ssh.py |  10 +-
 tests/orchestrator/workflows/core/test_task.py  |   2 +-
 .../executor/test_process_executor_extension.py |   3 +-
 15 files changed, 490 insertions(+), 316 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/180e0a1c/aria/orchestrator/context/collection_instrumentation.py
----------------------------------------------------------------------
diff --git a/aria/orchestrator/context/collection_instrumentation.py b/aria/orchestrator/context/collection_instrumentation.py
deleted file mode 100644
index 8f80d4a..0000000
--- a/aria/orchestrator/context/collection_instrumentation.py
+++ /dev/null
@@ -1,242 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-
-from functools import partial
-
-from aria.modeling import models
-
-
-class _InstrumentedCollection(object):
-
-    def __init__(self,
-                 model,
-                 parent,
-                 field_name,
-                 seq=None,
-                 is_top_level=True,
-                 **kwargs):
-        self._model = model
-        self._parent = parent
-        self._field_name = field_name
-        self._is_top_level = is_top_level
-        self._load(seq, **kwargs)
-
-    @property
-    def _raw(self):
-        raise NotImplementedError
-
-    def _load(self, seq, **kwargs):
-        """
-        Instantiates the object from existing seq.
-
-        :param seq: the original sequence to load from
-        :return:
-        """
-        raise NotImplementedError
-
-    def _set(self, key, value):
-        """
-        set the changes for the current object (not in the db)
-
-        :param key:
-        :param value:
-        :return:
-        """
-        raise NotImplementedError
-
-    def _del(self, collection, key):
-        raise NotImplementedError
-
-    def _instrument(self, key, value):
-        """
-        Instruments any collection to track changes (and ease of access)
-        :param key:
-        :param value:
-        :return:
-        """
-        if isinstance(value, _InstrumentedCollection):
-            return value
-        elif isinstance(value, dict):
-            instrumentation_cls = _InstrumentedDict
-        elif isinstance(value, list):
-            instrumentation_cls = _InstrumentedList
-        else:
-            return value
-
-        return instrumentation_cls(self._model, self, key, value, False)
-
-    @staticmethod
-    def _raw_value(value):
-        """
-        Get the raw value.
-        :param value:
-        :return:
-        """
-        if isinstance(value, models.Attribute):
-            return value.value
-        return value
-
-    @staticmethod
-    def _encapsulate_value(key, value):
-        """
-        Create a new item cls if needed.
-        :param key:
-        :param value:
-        :return:
-        """
-        if isinstance(value, models.Attribute):
-            return value
-        # If it is not wrapped
-        return models.Attribute.wrap(key, value)
-
-    def __setitem__(self, key, value):
-        """
-        Update the values in both the local and the db locations.
-        :param key:
-        :param value:
-        :return:
-        """
-        self._set(key, value)
-        if self._is_top_level:
-            # We are at the top level
-            field = getattr(self._parent, self._field_name)
-            mapi = getattr(self._model, models.Attribute.__modelname__)
-            value = self._set_field(field,
-                                    key,
-                                    value if key in field else self._encapsulate_value(key, value))
-            mapi.update(value)
-        else:
-            # We are not at the top level
-            self._set_field(self._parent, self._field_name, self)
-
-    def _set_field(self, collection, key, value):
-        """
-        enables updating the current change in the ancestors
-        :param collection: the collection to change
-        :param key: the key for the specific field
-        :param value: the new value
-        :return:
-        """
-        if isinstance(value, _InstrumentedCollection):
-            value = value._raw
-        if key in collection and isinstance(collection[key], models.Attribute):
-            if isinstance(collection[key], _InstrumentedCollection):
-                self._del(collection, key)
-            collection[key].value = value
-        else:
-            collection[key] = value
-        return collection[key]
-
-    def __deepcopy__(self, *args, **kwargs):
-        return self._raw
-
-
-class _InstrumentedDict(_InstrumentedCollection, dict):
-
-    def _load(self, dict_=None, **kwargs):
-        dict.__init__(
-            self,
-            tuple((key, self._raw_value(value)) for key, value in (dict_ or {}).items()),
-            **kwargs)
-
-    def update(self, dict_=None, **kwargs):
-        dict_ = dict_ or {}
-        for key, value in dict_.items():
-            self[key] = value
-        for key, value in kwargs.items():
-            self[key] = value
-
-    def __getitem__(self, key):
-        return self._instrument(key, dict.__getitem__(self, key))
-
-    def _set(self, key, value):
-        dict.__setitem__(self, key, self._raw_value(value))
-
-    @property
-    def _raw(self):
-        return dict(self)
-
-    def _del(self, collection, key):
-        del collection[key]
-
-
-class _InstrumentedList(_InstrumentedCollection, list):
-
-    def _load(self, list_=None, **kwargs):
-        list.__init__(self, list(item for item in list_ or []))
-
-    def append(self, value):
-        self.insert(len(self), value)
-
-    def insert(self, index, value):
-        list.insert(self, index, self._raw_value(value))
-        if self._is_top_level:
-            field = getattr(self._parent, self._field_name)
-            field.insert(index, self._encapsulate_value(index, value))
-        else:
-            self._parent[self._field_name] = self
-
-    def __getitem__(self, key):
-        return self._instrument(key, list.__getitem__(self, key))
-
-    def _set(self, key, value):
-        list.__setitem__(self, key, value)
-
-    def _del(self, collection, key):
-        del collection[key]
-
-    @property
-    def _raw(self):
-        return list(self)
-
-
-class _InstrumentedModel(object):
-
-    def __init__(self, field_name, original_model, model_storage):
-        super(_InstrumentedModel, self).__init__()
-        self._field_name = field_name
-        self._model_storage = model_storage
-        self._original_model = original_model
-        self._apply_instrumentation()
-
-    def __getattr__(self, item):
-        return getattr(self._original_model, item)
-
-    def _apply_instrumentation(self):
-
-        field = getattr(self._original_model, self._field_name)
-
-        # Preserve the original value. e.g. original attributes would be located under
-        # _attributes
-        setattr(self, '_{0}'.format(self._field_name), field)
-
-        # set instrumented value
-        setattr(self, self._field_name, _InstrumentedDict(self._model_storage,
-                                                          self._original_model,
-                                                          self._field_name,
-                                                          field))
-
-
-def instrument_collection(field_name, func=None):
-    if func is None:
-        return partial(instrument_collection, field_name)
-
-    def _wrapper(*args, **kwargs):
-        original_model = func(*args, **kwargs)
-        return type('Instrumented{0}'.format(original_model.__class__.__name__),
-                    (_InstrumentedModel, ),
-                    {})(field_name, original_model, args[0].model)
-
-    return _wrapper

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/180e0a1c/aria/orchestrator/context/operation.py
----------------------------------------------------------------------
diff --git a/aria/orchestrator/context/operation.py b/aria/orchestrator/context/operation.py
index f0ba337..af7220d 100644
--- a/aria/orchestrator/context/operation.py
+++ b/aria/orchestrator/context/operation.py
@@ -21,10 +21,7 @@ import threading
 
 import aria
 from aria.utils import file
-from . import (
-    common,
-    collection_instrumentation
-)
+from . import common
 
 
 class BaseOperationContext(common.BaseContext):
@@ -32,6 +29,13 @@ class BaseOperationContext(common.BaseContext):
     Context object used during operation creation and execution
     """
 
+    INSTRUMENTATION_FIELDS = (
+        aria.modeling.models.Node.attributes,
+        aria.modeling.models.Node.properties,
+        aria.modeling.models.NodeTemplate.attributes,
+        aria.modeling.models.NodeTemplate.properties
+    )
+
     def __init__(self, task_id, actor_id, **kwargs):
         self._task_id = task_id
         self._actor_id = actor_id
@@ -76,7 +80,6 @@ class BaseOperationContext(common.BaseContext):
 
     @property
     def serialization_dict(self):
-        context_cls = self.__class__
         context_dict = {
             'name': self.name,
             'service_id': self._service_id,
@@ -89,7 +92,7 @@ class BaseOperationContext(common.BaseContext):
             'logger_level': self.logger.level
         }
         return {
-            'context_cls': context_cls,
+            'context_cls': self.__class__,
             'context': context_dict
         }
 
@@ -117,7 +120,6 @@ class NodeOperationContext(BaseOperationContext):
     """
 
     @property
-    @collection_instrumentation.instrument_collection('attributes')
     def node_template(self):
         """
         the node of the current operation
@@ -126,7 +128,6 @@ class NodeOperationContext(BaseOperationContext):
         return self.node.node_template
 
     @property
-    @collection_instrumentation.instrument_collection('attributes')
     def node(self):
         """
         The node instance of the current operation
@@ -141,7 +142,6 @@ class RelationshipOperationContext(BaseOperationContext):
     """
 
     @property
-    @collection_instrumentation.instrument_collection('attributes')
     def source_node_template(self):
         """
         The source node
@@ -150,7 +150,6 @@ class RelationshipOperationContext(BaseOperationContext):
         return self.source_node.node_template
 
     @property
-    @collection_instrumentation.instrument_collection('attributes')
     def source_node(self):
         """
         The source node instance
@@ -159,7 +158,6 @@ class RelationshipOperationContext(BaseOperationContext):
         return self.relationship.source_node
 
     @property
-    @collection_instrumentation.instrument_collection('attributes')
     def target_node_template(self):
         """
         The target node
@@ -168,7 +166,6 @@ class RelationshipOperationContext(BaseOperationContext):
         return self.target_node.node_template
 
     @property
-    @collection_instrumentation.instrument_collection('attributes')
     def target_node(self):
         """
         The target node instance

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/180e0a1c/aria/orchestrator/context/toolbelt.py
----------------------------------------------------------------------
diff --git a/aria/orchestrator/context/toolbelt.py b/aria/orchestrator/context/toolbelt.py
index 5788ee7..b5a54a9 100644
--- a/aria/orchestrator/context/toolbelt.py
+++ b/aria/orchestrator/context/toolbelt.py
@@ -33,11 +33,7 @@ class NodeToolBelt(object):
         :return:
         """
         assert isinstance(self._op_context, operation.NodeOperationContext)
-        host = self._op_context.node.host
-        ip = host.attributes.get('ip')
-        if ip:
-            return ip.value
-
+        return self._op_context.node.host.attributes.get('ip')
 
 
 class RelationshipToolBelt(object):

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/180e0a1c/aria/orchestrator/decorators.py
----------------------------------------------------------------------
diff --git a/aria/orchestrator/decorators.py b/aria/orchestrator/decorators.py
index 4051a54..80f6962 100644
--- a/aria/orchestrator/decorators.py
+++ b/aria/orchestrator/decorators.py
@@ -68,11 +68,13 @@ def operation(func=None, toolbelt=False, suffix_template='', logging_handlers=No
 
     @wraps(func)
     def _wrapper(**func_kwargs):
+        ctx = func_kwargs['ctx']
         if toolbelt:
-            operation_toolbelt = context.toolbelt(func_kwargs['ctx'])
+            operation_toolbelt = context.toolbelt(ctx)
             func_kwargs.setdefault('toolbelt', operation_toolbelt)
         validate_function_arguments(func, func_kwargs)
-        return func(**func_kwargs)
+        with ctx.model.instrument(*ctx.INSTRUMENTATION_FIELDS):
+            return func(**func_kwargs)
     return _wrapper
 
 

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/180e0a1c/aria/orchestrator/execution_plugin/ctx_proxy/server.py
----------------------------------------------------------------------
diff --git a/aria/orchestrator/execution_plugin/ctx_proxy/server.py b/aria/orchestrator/execution_plugin/ctx_proxy/server.py
index 102ff9a..50d4c3a 100644
--- a/aria/orchestrator/execution_plugin/ctx_proxy/server.py
+++ b/aria/orchestrator/execution_plugin/ctx_proxy/server.py
@@ -117,14 +117,15 @@ class CtxProxy(object):
 
     def _process(self, request):
         try:
-            typed_request = json.loads(request)
-            args = typed_request['args']
-            payload = _process_ctx_request(self.ctx, args)
-            result_type = 'result'
-            if isinstance(payload, exceptions.ScriptException):
-                payload = dict(message=str(payload))
-                result_type = 'stop_operation'
-            result = {'type': result_type, 'payload': payload}
+            with self.ctx.model.instrument(*self.ctx.INSTRUMENTATION_FIELDS):
+                typed_request = json.loads(request)
+                args = typed_request['args']
+                payload = _process_ctx_request(self.ctx, args)
+                result_type = 'result'
+                if isinstance(payload, exceptions.ScriptException):
+                    payload = dict(message=str(payload))
+                    result_type = 'stop_operation'
+                result = {'type': result_type, 'payload': payload}
         except Exception as e:
             traceback_out = StringIO.StringIO()
             traceback.print_exc(file=traceback_out)

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/180e0a1c/aria/storage/api.py
----------------------------------------------------------------------
diff --git a/aria/storage/api.py b/aria/storage/api.py
index ed8a2ff..3304721 100644
--- a/aria/storage/api.py
+++ b/aria/storage/api.py
@@ -15,6 +15,7 @@
 """
 General storage API
 """
+import threading
 
 
 class StorageAPI(object):
@@ -45,6 +46,15 @@ class ModelAPI(StorageAPI):
         super(ModelAPI, self).__init__(**kwargs)
         self._model_cls = model_cls
         self._name = name or model_cls.__modelname__
+        self._thread_local = threading.local()
+        self._thread_local._instrumentation = []
+
+    @property
+    def _instrumentation(self):
+        if not hasattr(self._thread_local, '_instrumentation'):
+            self._thread_local._instrumentation = []
+        return self._thread_local._instrumentation
+
 
     @property
     def name(self):

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/180e0a1c/aria/storage/collection_instrumentation.py
----------------------------------------------------------------------
diff --git a/aria/storage/collection_instrumentation.py b/aria/storage/collection_instrumentation.py
new file mode 100644
index 0000000..27d8322
--- /dev/null
+++ b/aria/storage/collection_instrumentation.py
@@ -0,0 +1,306 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+from . import exceptions
+
+
+class _InstrumentedCollection(object):
+
+    def __init__(self,
+                 mapi,
+                 parent,
+                 field_name,
+                 field_cls,
+                 seq=None,
+                 is_top_level=True,
+                 **kwargs):
+        self._mapi = mapi
+        self._parent = parent
+        self._field_name = field_name
+        self._is_top_level = is_top_level
+        self._field_cls = field_cls
+        self._load(seq, **kwargs)
+
+    @property
+    def _raw(self):
+        raise NotImplementedError
+
+    def _load(self, seq, **kwargs):
+        """
+        Instantiates the object from existing seq.
+
+        :param seq: the original sequence to load from
+        :return:
+        """
+        raise NotImplementedError
+
+    def _set(self, key, value):
+        """
+        set the changes for the current object (not in the db)
+
+        :param key:
+        :param value:
+        :return:
+        """
+        raise NotImplementedError
+
+    def _del(self, collection, key):
+        raise NotImplementedError
+
+    def _instrument(self, key, value):
+        """
+        Instruments any collection to track changes (and ease of access)
+        :param key:
+        :param value:
+        :return:
+        """
+        if isinstance(value, _InstrumentedCollection):
+            return value
+        elif isinstance(value, dict):
+            instrumentation_cls = _InstrumentedDict
+        elif isinstance(value, list):
+            instrumentation_cls = _InstrumentedList
+        else:
+            return value
+
+        return instrumentation_cls(self._mapi, self, key, self._field_cls, value, False)
+
+    def _raw_value(self, value):
+        """
+        Get the raw value.
+        :param value:
+        :return:
+        """
+        if isinstance(value, self._field_cls):
+            return value.value
+        return value
+
+    def _encapsulate_value(self, key, value):
+        """
+        Create a new item cls if needed.
+        :param key:
+        :param value:
+        :return:
+        """
+        if isinstance(value, self._field_cls):
+            return value
+        # If it is not wrapped
+        return self._field_cls.wrap(key, value)
+
+    def __setitem__(self, key, value):
+        """
+        Update the values in both the local and the db locations.
+        :param key:
+        :param value:
+        :return:
+        """
+        self._set(key, value)
+        if self._is_top_level:
+            # We are at the top level
+            field = getattr(self._parent, self._field_name)
+            self._set_field(
+                field, key, value if key in field else self._encapsulate_value(key, value))
+            self._mapi.update(self._parent)
+        else:
+            # We are not at the top level
+            self._set_field(self._parent, self._field_name, self)
+
+    def _set_field(self, collection, key, value):
+        """
+        enables updating the current change in the ancestors
+        :param collection: the collection to change
+        :param key: the key for the specific field
+        :param value: the new value
+        :return:
+        """
+        if isinstance(value, _InstrumentedCollection):
+            value = value._raw
+        if key in collection and isinstance(collection[key], self._field_cls):
+            if isinstance(collection[key], _InstrumentedCollection):
+                self._del(collection, key)
+            collection[key].value = value
+        else:
+            collection[key] = value
+        return collection[key]
+
+    def __deepcopy__(self, *args, **kwargs):
+        return self._raw
+
+
+class _InstrumentedDict(_InstrumentedCollection, dict):
+
+    def _load(self, dict_=None, **kwargs):
+        dict.__init__(
+            self,
+            tuple((key, self._raw_value(value)) for key, value in (dict_ or {}).items()),
+            **kwargs)
+
+    def update(self, dict_=None, **kwargs):
+        dict_ = dict_ or {}
+        for key, value in dict_.items():
+            self[key] = value
+        for key, value in kwargs.items():
+            self[key] = value
+
+    def __getitem__(self, key):
+        return self._instrument(key, dict.__getitem__(self, key))
+
+    def _set(self, key, value):
+        dict.__setitem__(self, key, self._raw_value(value))
+
+    @property
+    def _raw(self):
+        return dict(self)
+
+    def _del(self, collection, key):
+        del collection[key]
+
+
+class _InstrumentedList(_InstrumentedCollection, list):
+
+    def _load(self, list_=None, **kwargs):
+        list.__init__(self, list(item for item in list_ or []))
+
+    def append(self, value):
+        self.insert(len(self), value)
+
+    def insert(self, index, value):
+        list.insert(self, index, self._raw_value(value))
+        if self._is_top_level:
+            field = getattr(self._parent, self._field_name)
+            field.insert(index, self._encapsulate_value(index, value))
+        else:
+            self._parent[self._field_name] = self
+
+    def __getitem__(self, key):
+        return self._instrument(key, list.__getitem__(self, key))
+
+    def _set(self, key, value):
+        list.__setitem__(self, key, value)
+
+    def _del(self, collection, key):
+        del collection[key]
+
+    @property
+    def _raw(self):
+        return list(self)
+
+
+class _InstrumentedModel(object):
+
+    def __init__(self, original_model, mapi, instrumentation):
+        """
+        The original model
+        :param original_model: the model to be instrumented
+        :param mapi: the mapi for that model
+        """
+        super(_InstrumentedModel, self).__init__()
+        self._original_model = original_model
+        self._mapi = mapi
+        self._instrumentation = instrumentation
+        self._apply_instrumentation()
+
+    def __getattr__(self, item):
+        return_value = getattr(self._original_model, item)
+        if isinstance(return_value, self._original_model.__class__):
+            return _create_instrumented_model(return_value, self._mapi, self._instrumentation)
+        if isinstance(return_value, (list, dict)):
+            return _create_wrapped_model(return_value, self._mapi, self._instrumentation)
+        return return_value
+
+    def _apply_instrumentation(self):
+        for field in self._instrumentation:
+            field_name = field.key
+            field_cls = field.mapper.class_
+            field = getattr(self._original_model, field_name)
+
+            # Preserve the original value. e.g. original attributes would be located under
+            # _attributes
+            setattr(self, '_{0}'.format(field_name), field)
+
+            # set instrumented value
+            if isinstance(field, dict):
+                instrumentation_cls = _InstrumentedDict
+            elif isinstance(field, list):
+                instrumentation_cls = _InstrumentedList
+            else:
+                # TODO: raise proper error
+                raise exceptions.StorageError(
+                    "ARIA supports instrumentation for dict and list. Field {field} of the "
+                    "class {model} is of {type} type.".format(
+                        field=field,
+                        model=self._original_model,
+                        type=type(field)))
+
+            instrumented_class = instrumentation_cls(seq=field,
+                                                     parent=self._original_model,
+                                                     mapi=self._mapi,
+                                                     field_name=field_name,
+                                                     field_cls=field_cls)
+            setattr(self, field_name, instrumented_class)
+
+
+class _WrappedModel(object):
+
+    def __init__(self, wrapped, instrumentation, **kwargs):
+        """
+
+        :param instrumented_cls: The class to be instrumented
+        :param instrumentation_cls: the instrumentation cls
+        :param wrapped: the currently wrapped instance
+        :param kwargs: and kwargs to the passed to the instrumented class.
+        """
+        self._kwargs = kwargs
+        self._instrumentation = instrumentation
+        self._wrapped = wrapped
+
+    def _wrap(self, value):
+        if value.__class__ in (class_.class_ for class_ in self._instrumentation):
+            return _create_instrumented_model(
+                value, instrumentation=self._instrumentation, **self._kwargs)
+        elif hasattr(value, 'metadata') or isinstance(value, (dict, list)):
+            # Basically checks that the value is indeed an sqlmodel (it should have metadata)
+            return _create_wrapped_model(
+                value, instrumentation=self._instrumentation, **self._kwargs)
+        return value
+
+    def __getattr__(self, item):
+        if hasattr(self, '_wrapped'):
+            return self._wrap(getattr(self._wrapped, item))
+        else:
+            super(_WrappedModel, self).__getattribute__(item)
+
+    def __getitem__(self, item):
+        return self._wrap(self._wrapped[item])
+
+
+def _create_instrumented_model(original_model, mapi, instrumentation, **kwargs):
+    return type('Instrumented{0}'.format(original_model.__class__.__name__),
+                (_InstrumentedModel,),
+                {})(original_model, mapi, instrumentation, **kwargs)
+
+
+def _create_wrapped_model(original_model, mapi, instrumentation, **kwargs):
+    return type('Wrapped{0}'.format(original_model.__class__.__name__),
+                (_WrappedModel, ),
+                {})(original_model, instrumentation, mapi=mapi, **kwargs)
+
+
+def instrument(instrumentation, original_model, mapi):
+    for instrumented_field in instrumentation:
+        if isinstance(original_model, instrumented_field.class_):
+            return _create_instrumented_model(original_model, mapi, instrumentation)
+
+    return _create_wrapped_model(original_model, mapi, instrumentation)

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/180e0a1c/aria/storage/core.py
----------------------------------------------------------------------
diff --git a/aria/storage/core.py b/aria/storage/core.py
index 8302fc9..06c29e8 100644
--- a/aria/storage/core.py
+++ b/aria/storage/core.py
@@ -37,6 +37,8 @@ API:
     * drivers - module, a pool of ARIA standard drivers.
     * StorageDriver - class, abstract model implementation.
 """
+import copy
+from contextlib import contextmanager
 
 from aria.logger import LoggerMixin
 from . import sql_mapi
@@ -165,3 +167,16 @@ class ModelStorage(Storage):
         """
         for mapi in self.registered.values():
             mapi.drop()
+
+    @contextmanager
+    def instrument(self, *instrumentation):
+        original_instrumentation = {}
+
+        try:
+            for mapi in self.registered.values():
+                original_instrumentation[mapi] = copy.copy(mapi._instrumentation)
+                mapi._instrumentation.extend(instrumentation)
+            yield self
+        finally:
+            for mapi in self.registered.values():
+                mapi._instrumentation[:] = original_instrumentation[mapi]

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/180e0a1c/aria/storage/sql_mapi.py
----------------------------------------------------------------------
diff --git a/aria/storage/sql_mapi.py b/aria/storage/sql_mapi.py
index 730d007..4d7e233 100644
--- a/aria/storage/sql_mapi.py
+++ b/aria/storage/sql_mapi.py
@@ -29,6 +29,7 @@ from aria.utils.collections import OrderedDict
 from . import (
     api,
     exceptions,
+    collection_instrumentation
 )
 
 _predicates = {'ge': '__ge__',
@@ -63,7 +64,7 @@ class SQLAlchemyModelAPI(api.ModelAPI):
                 'Requested `{0}` with ID `{1}` was not found'
                 .format(self.model_cls.__name__, entry_id)
             )
-        return result
+        return self._instrument(result)
 
     def get_by_name(self, entry_name, include=None, **kwargs):
         assert hasattr(self.model_cls, 'name')
@@ -93,7 +94,7 @@ class SQLAlchemyModelAPI(api.ModelAPI):
 
         return ListResult(
             dict(total=total, size=size, offset=offset),
-            results
+            [self._instrument(result) for result in results]
         )
 
     def iter(self,
@@ -103,7 +104,8 @@ class SQLAlchemyModelAPI(api.ModelAPI):
              **kwargs):
         """Return a (possibly empty) list of `model_class` results
         """
-        return iter(self._get_query(include, filters, sort))
+        for result in self._get_query(include, filters, sort):
+            yield self._instrument(result)
 
     def put(self, entry, **kwargs):
         """Create a `model_class` instance from a serializable `model` object
@@ -378,6 +380,12 @@ class SQLAlchemyModelAPI(api.ModelAPI):
         for rel in instance.__mapper__.relationships:
             getattr(instance, rel.key)
 
+    def _instrument(self, model):
+        if self._instrumentation:
+            return collection_instrumentation.instrument(self._instrumentation, model, self)
+        else:
+            return model
+
 
 def init_storage(base_dir, filename='db.sqlite'):
     """

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/180e0a1c/aria/utils/imports.py
----------------------------------------------------------------------
diff --git a/aria/utils/imports.py b/aria/utils/imports.py
index 64a48cf..35aa0fc 100644
--- a/aria/utils/imports.py
+++ b/aria/utils/imports.py
@@ -17,8 +17,8 @@
 Utility methods for dynamically loading python code
 """
 
-import importlib
 import pkgutil
+import importlib
 
 
 def import_fullname(name, paths=None):

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/180e0a1c/tests/orchestrator/context/test_collection_instrumentation.py
----------------------------------------------------------------------
diff --git a/tests/orchestrator/context/test_collection_instrumentation.py b/tests/orchestrator/context/test_collection_instrumentation.py
index 1e6214a..ae3e8ac 100644
--- a/tests/orchestrator/context/test_collection_instrumentation.py
+++ b/tests/orchestrator/context/test_collection_instrumentation.py
@@ -15,8 +15,14 @@
 
 import pytest
 
-from aria.modeling.models import Attribute
-from aria.orchestrator.context import collection_instrumentation
+from aria.modeling import models
+from aria.storage import collection_instrumentation
+from aria.orchestrator.context import operation
+
+from tests import (
+    mock,
+    storage
+)
 
 
 class MockActor(object):
@@ -25,12 +31,16 @@ class MockActor(object):
         self.list_ = []
 
 
-class MockModel(object):
+class MockMAPI(object):
 
     def __init__(self):
-        self.attribute = type('MockModel', (object, ), {'model_cls': Attribute,
-                                                        'put': lambda *args, **kwargs: None,
-                                                        'update': lambda *args, **kwargs: None})()
+        pass
+
+    def put(self, *args, **kwargs):
+        pass
+
+    def update(self, *args, **kwargs):
+        pass
 
 
 class CollectionInstrumentation(object):
@@ -41,15 +51,15 @@ class CollectionInstrumentation(object):
 
     @pytest.fixture
     def model(self):
-        return MockModel()
+        return MockMAPI()
 
     @pytest.fixture
     def dict_(self, actor, model):
-        return collection_instrumentation._InstrumentedDict(model, actor, 'dict_')
+        return collection_instrumentation._InstrumentedDict(model, actor, 'dict_', models.Attribute)
 
     @pytest.fixture
     def list_(self, actor, model):
-        return collection_instrumentation._InstrumentedList(model, actor, 'list_')
+        return collection_instrumentation._InstrumentedList(model, actor, 'list_', models.Attribute)
 
 
 class TestDict(CollectionInstrumentation):
@@ -57,16 +67,16 @@ class TestDict(CollectionInstrumentation):
     def test_keys(self, actor, dict_):
         dict_.update(
             {
-                'key1': Attribute.wrap('key1', 'value1'),
-                'key2': Attribute.wrap('key2', 'value2')
+                'key1': models.Attribute.wrap('key1', 'value1'),
+                'key2': models.Attribute.wrap('key2', 'value2')
             }
         )
         assert sorted(dict_.keys()) == sorted(['key1', 'key2']) == sorted(actor.dict_.keys())
 
     def test_values(self, actor, dict_):
         dict_.update({
-            'key1': Attribute.wrap('key1', 'value1'),
-            'key2': Attribute.wrap('key1', 'value2')
+            'key1': models.Attribute.wrap('key1', 'value1'),
+            'key2': models.Attribute.wrap('key1', 'value2')
         })
         assert (sorted(dict_.values()) ==
                 sorted(['value1', 'value2']) ==
@@ -74,34 +84,34 @@ class TestDict(CollectionInstrumentation):
 
     def test_items(self, dict_):
         dict_.update({
-            'key1': Attribute.wrap('key1', 'value1'),
-            'key2': Attribute.wrap('key1', 'value2')
+            'key1': models.Attribute.wrap('key1', 'value1'),
+            'key2': models.Attribute.wrap('key1', 'value2')
         })
         assert sorted(dict_.items()) == sorted([('key1', 'value1'), ('key2', 'value2')])
 
     def test_iter(self, actor, dict_):
         dict_.update({
-            'key1': Attribute.wrap('key1', 'value1'),
-            'key2': Attribute.wrap('key1', 'value2')
+            'key1': models.Attribute.wrap('key1', 'value1'),
+            'key2': models.Attribute.wrap('key1', 'value2')
         })
         assert sorted(list(dict_)) == sorted(['key1', 'key2']) == sorted(actor.dict_.keys())
 
     def test_bool(self, dict_):
         assert not dict_
         dict_.update({
-            'key1': Attribute.wrap('key1', 'value1'),
-            'key2': Attribute.wrap('key1', 'value2')
+            'key1': models.Attribute.wrap('key1', 'value1'),
+            'key2': models.Attribute.wrap('key1', 'value2')
         })
         assert dict_
 
     def test_set_item(self, actor, dict_):
-        dict_['key1'] = Attribute.wrap('key1', 'value1')
+        dict_['key1'] = models.Attribute.wrap('key1', 'value1')
         assert dict_['key1'] == 'value1' == actor.dict_['key1'].value
-        assert isinstance(actor.dict_['key1'], Attribute)
+        assert isinstance(actor.dict_['key1'], models.Attribute)
 
     def test_nested(self, actor, dict_):
         dict_['key'] = {}
-        assert isinstance(actor.dict_['key'], Attribute)
+        assert isinstance(actor.dict_['key'], models.Attribute)
         assert dict_['key'] == actor.dict_['key'].value == {}
 
         dict_['key']['inner_key'] = 'value'
@@ -112,7 +122,7 @@ class TestDict(CollectionInstrumentation):
         assert dict_['key'].keys() == ['inner_key']
         assert dict_['key'].values() == ['value']
         assert dict_['key'].items() == [('inner_key', 'value')]
-        assert isinstance(actor.dict_['key'], Attribute)
+        assert isinstance(actor.dict_['key'], models.Attribute)
         assert isinstance(dict_['key'], collection_instrumentation._InstrumentedDict)
 
         dict_['key'].update({'updated_key': 'updated_value'})
@@ -123,7 +133,7 @@ class TestDict(CollectionInstrumentation):
         assert sorted(dict_['key'].values()) == sorted(['value', 'updated_value'])
         assert sorted(dict_['key'].items()) == sorted([('inner_key', 'value'),
                                                        ('updated_key', 'updated_value')])
-        assert isinstance(actor.dict_['key'], Attribute)
+        assert isinstance(actor.dict_['key'], models.Attribute)
         assert isinstance(dict_['key'], collection_instrumentation._InstrumentedDict)
 
         dict_.update({'key': 'override_value'})
@@ -131,12 +141,12 @@ class TestDict(CollectionInstrumentation):
         assert 'key' in dict_
         assert dict_['key'] == 'override_value'
         assert len(actor.dict_) == 1
-        assert isinstance(actor.dict_['key'], Attribute)
+        assert isinstance(actor.dict_['key'], models.Attribute)
         assert actor.dict_['key'].value == 'override_value'
 
     def test_get_item(self, actor, dict_):
-        dict_['key1'] = Attribute.wrap('key1', 'value1')
-        assert isinstance(actor.dict_['key1'], Attribute)
+        dict_['key1'] = models.Attribute.wrap('key1', 'value1')
+        assert isinstance(actor.dict_['key1'], models.Attribute)
 
     def test_update(self, actor, dict_):
         dict_['key1'] = 'value1'
@@ -145,7 +155,7 @@ class TestDict(CollectionInstrumentation):
         dict_.update(new_dict)
         assert len(dict_) == 2
         assert dict_['key2'] == 'value2'
-        assert isinstance(actor.dict_['key2'], Attribute)
+        assert isinstance(actor.dict_['key2'], models.Attribute)
 
         new_dict = {}
         new_dict.update(dict_)
@@ -172,20 +182,20 @@ class TestDict(CollectionInstrumentation):
 class TestList(CollectionInstrumentation):
 
     def test_append(self, actor, list_):
-        list_.append(Attribute.wrap('name', 'value1'))
+        list_.append(models.Attribute.wrap('name', 'value1'))
         list_.append('value2')
         assert len(actor.list_) == 2
         assert len(list_) == 2
-        assert isinstance(actor.list_[0], Attribute)
+        assert isinstance(actor.list_[0], models.Attribute)
         assert list_[0] == 'value1'
 
-        assert isinstance(actor.list_[1], Attribute)
+        assert isinstance(actor.list_[1], models.Attribute)
         assert list_[1] == 'value2'
 
         list_[0] = 'new_value1'
         list_[1] = 'new_value2'
-        assert isinstance(actor.list_[1], Attribute)
-        assert isinstance(actor.list_[1], Attribute)
+        assert isinstance(actor.list_[1], models.Attribute)
+        assert isinstance(actor.list_[1], models.Attribute)
         assert list_[0] == 'new_value1'
         assert list_[1] == 'new_value2'
 
@@ -214,12 +224,12 @@ class TestList(CollectionInstrumentation):
         list_.append([])
 
         list_[0].append('inner_item')
-        assert isinstance(actor.list_[0], Attribute)
+        assert isinstance(actor.list_[0], models.Attribute)
         assert len(list_) == 1
         assert list_[0][0] == 'inner_item'
 
         list_[0].append('new_item')
-        assert isinstance(actor.list_[0], Attribute)
+        assert isinstance(actor.list_[0], models.Attribute)
         assert len(list_) == 1
         assert list_[0][1] == 'new_item'
 
@@ -231,23 +241,85 @@ class TestDictList(CollectionInstrumentation):
     def test_dict_in_list(self, actor, list_):
         list_.append({})
         assert len(list_) == 1
-        assert isinstance(actor.list_[0], Attribute)
+        assert isinstance(actor.list_[0], models.Attribute)
         assert actor.list_[0].value == {}
 
         list_[0]['key'] = 'value'
         assert list_[0]['key'] == 'value'
         assert len(actor.list_) == 1
-        assert isinstance(actor.list_[0], Attribute)
+        assert isinstance(actor.list_[0], models.Attribute)
         assert actor.list_[0].value['key'] == 'value'
 
     def test_list_in_dict(self, actor, dict_):
         dict_['key'] = []
         assert len(dict_) == 1
-        assert isinstance(actor.dict_['key'], Attribute)
+        assert isinstance(actor.dict_['key'], models.Attribute)
         assert actor.dict_['key'].value == []
 
         dict_['key'].append('value')
         assert dict_['key'][0] == 'value'
         assert len(actor.dict_) == 1
-        assert isinstance(actor.dict_['key'], Attribute)
+        assert isinstance(actor.dict_['key'], models.Attribute)
         assert actor.dict_['key'].value[0] == 'value'
+
+
+class TestModelInstrumentation(object):
+
+    @pytest.fixture
+    def workflow_ctx(self, tmpdir):
+        context = mock.context.simple(str(tmpdir), inmemory=True)
+        yield context
+        storage.release_sqlite_storage(context.model)
+
+    def test_attributes_access(self, workflow_ctx):
+        node = workflow_ctx.model.node.list()[0]
+        task = models.Task(node=node)
+        workflow_ctx.model.task.put(task)
+
+        ctx = operation.NodeOperationContext(
+            task.id, node.id, name='', service_id=workflow_ctx.model.service.list()[0].id,
+            model_storage=workflow_ctx.model, resource_storage=workflow_ctx.resource,
+            execution_id=1)
+
+        def _run_assertions(is_under_ctx):
+            def ctx_assert(expr):
+                if is_under_ctx:
+                    assert expr
+                else:
+                    assert not expr
+
+            ctx_assert(isinstance(ctx.node.attributes,
+                                  collection_instrumentation._InstrumentedDict))
+            assert not isinstance(ctx.node.properties,
+                                  collection_instrumentation._InstrumentedCollection)
+
+            for rel in ctx.node.inbound_relationships:
+                ctx_assert(isinstance(rel, collection_instrumentation._WrappedModel))
+                ctx_assert(isinstance(rel.source_node.attributes,
+                                      collection_instrumentation._InstrumentedDict))
+                ctx_assert(isinstance(rel.target_node.attributes,
+                                      collection_instrumentation._InstrumentedDict))
+
+            for node in ctx.model.node:
+                ctx_assert(isinstance(node.attributes,
+                                      collection_instrumentation._InstrumentedDict))
+                assert not isinstance(node.properties,
+                                      collection_instrumentation._InstrumentedCollection)
+
+            for rel in ctx.model.relationship:
+                ctx_assert(isinstance(rel, collection_instrumentation._WrappedModel))
+
+                ctx_assert(isinstance(rel.source_node.attributes,
+                                      collection_instrumentation._InstrumentedDict))
+                ctx_assert(isinstance(rel.target_node.attributes,
+                                      collection_instrumentation._InstrumentedDict))
+
+                assert not isinstance(rel.source_node.properties,
+                                      collection_instrumentation._InstrumentedCollection)
+                assert not isinstance(rel.target_node.properties,
+                                      collection_instrumentation._InstrumentedCollection)
+
+        with ctx.model.instrument(models.Node.attributes):
+            _run_assertions(True)
+
+        _run_assertions(False)

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/180e0a1c/tests/orchestrator/execution_plugin/test_ctx_proxy_server.py
----------------------------------------------------------------------
diff --git a/tests/orchestrator/execution_plugin/test_ctx_proxy_server.py b/tests/orchestrator/execution_plugin/test_ctx_proxy_server.py
index 1b19fd9..7ab1bdb 100644
--- a/tests/orchestrator/execution_plugin/test_ctx_proxy_server.py
+++ b/tests/orchestrator/execution_plugin/test_ctx_proxy_server.py
@@ -138,7 +138,7 @@ class TestCtxProxy(object):
     @pytest.fixture
     def ctx(self, mocker):
         class MockCtx(object):
-            pass
+            INSTRUMENTATION_FIELDS = ()
         ctx = MockCtx()
         properties = {
             'prop1': 'value1',

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/180e0a1c/tests/orchestrator/execution_plugin/test_ssh.py
----------------------------------------------------------------------
diff --git a/tests/orchestrator/execution_plugin/test_ssh.py b/tests/orchestrator/execution_plugin/test_ssh.py
index 899a007..8b326e7 100644
--- a/tests/orchestrator/execution_plugin/test_ssh.py
+++ b/tests/orchestrator/execution_plugin/test_ssh.py
@@ -422,15 +422,24 @@ class TestFabricEnvHideGroupsAndRunCommands(object):
             raise RuntimeError
 
     class _Ctx(object):
+        INSTRUMENTATION_FIELDS = ()
+
         class Task(object):
             @staticmethod
             def abort(message=None):
                 models.Task.abort(message)
             actor = None
+
         class Actor(object):
             host = None
+
+        class Model(object):
+            @contextlib.contextmanager
+            def instrument(self, *args, **kwargs):
+                yield
         task = Task
         task.actor = Actor
+        model = Model()
         logger = logging.getLogger()
 
     @staticmethod
@@ -439,7 +448,6 @@ class TestFabricEnvHideGroupsAndRunCommands(object):
         yield
     _Ctx.logging_handlers = _mock_self_logging
 
-
     @pytest.fixture(autouse=True)
     def _setup(self, mocker):
         self.default_fabric_env = {

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/180e0a1c/tests/orchestrator/workflows/core/test_task.py
----------------------------------------------------------------------
diff --git a/tests/orchestrator/workflows/core/test_task.py b/tests/orchestrator/workflows/core/test_task.py
index a717e19..c0d3616 100644
--- a/tests/orchestrator/workflows/core/test_task.py
+++ b/tests/orchestrator/workflows/core/test_task.py
@@ -100,7 +100,7 @@ class TestOperationTask(object):
         storage_task = ctx.model.task.get_by_name(core_task.name)
         assert storage_task.plugin is storage_plugin
         assert storage_task.execution_name == ctx.execution.name
-        assert storage_task.actor == core_task.context.node._original_model
+        assert storage_task.actor == core_task.context.node
         assert core_task.model_task == storage_task
         assert core_task.name == api_task.name
         assert core_task.function == api_task.function

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/180e0a1c/tests/orchestrator/workflows/executor/test_process_executor_extension.py
----------------------------------------------------------------------
diff --git a/tests/orchestrator/workflows/executor/test_process_executor_extension.py b/tests/orchestrator/workflows/executor/test_process_executor_extension.py
index e4944df..7969457 100644
--- a/tests/orchestrator/workflows/executor/test_process_executor_extension.py
+++ b/tests/orchestrator/workflows/executor/test_process_executor_extension.py
@@ -66,7 +66,8 @@ class MockProcessExecutorExtension(object):
     def decorate(self):
         def decorator(function):
             def wrapper(ctx, **operation_arguments):
-                ctx.node.attributes['out'] = {'wrapper_arguments': operation_arguments}
+                with ctx.model.instrument(ctx.model.node.model_cls.attributes):
+                    ctx.node.attributes['out'] = {'wrapper_arguments': operation_arguments}
                 function(ctx=ctx, **operation_arguments)
             return wrapper
         return decorator


[08/13] incubator-ariatosca git commit: Fixed WD04, Rev04 (2016-11-14) and WD04, Rev05 (2017-1-17)

Posted by av...@apache.org.
Fixed WD04, Rev04 (2016-11-14) and WD04, Rev05 (2017-1-17)


Project: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/commit/794af1c8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/tree/794af1c8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/diff/794af1c8

Branch: refs/heads/ARIA-275-update-NFV-profile-to-csd04
Commit: 794af1c8ef3b9e53cf4beec3fdf87ac0c1799623
Parents: ca3dc4a
Author: Avia Efrat <av...@gigaspaces.com>
Authored: Mon Jun 5 16:36:52 2017 +0300
Committer: Avia Efrat <av...@gigaspaces.com>
Committed: Tue Jun 6 22:33:10 2017 +0300

----------------------------------------------------------------------
 .../tosca-simple-nfv-1.0/capabilities.yaml      |  45 --------
 .../profiles/tosca-simple-nfv-1.0/data.yaml     |  75 -------------
 .../profiles/tosca-simple-nfv-1.0/nodes.yaml    | 112 +------------------
 3 files changed, 5 insertions(+), 227 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/794af1c8/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/capabilities.yaml
----------------------------------------------------------------------
diff --git a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/capabilities.yaml b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/capabilities.yaml
index 6bc6b67..375ba13 100644
--- a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/capabilities.yaml
+++ b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/capabilities.yaml
@@ -15,51 +15,6 @@
 
 capability_types:
 
-  tosca.capabilities.Compute.Container.Architecture:
-    _extensions:
-      shorthand_name: Compute.Container.Architecture
-      type_qualified_name: tosca:Compute.Container.Architecture
-      specification: tosca-simple-nfv-1.0
-      specification_section: 8.2.1
-      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd03/tosca-nfv-v1.0-csd03.html#DEFN_TYPE_CAPABILITIES_CONTAINER'
-    description: >-
-      Enhance compute architecture capability that needs to be typically use for performance sensitive NFV workloads.
-    derived_from: tosca.capabilities.Container
-    properties:
-      mem_page_size:
-        description: >-
-          Describe page size of the VM:
-  
-          * small page size is typically 4KB
-          * large page size is typically 2MB
-          * any page size maps to system default
-          * custom MB value: sets TLB size to this specific value
-        type: string
-        # ARIA NOTE: seems wrong in the spec
-        #constraints:
-        #  - [ normal, huge ]
-      cpu_allocation:
-        description: >-
-          Describes CPU allocation requirements like dedicated CPUs (cpu pinning), socket count, thread count, etc.
-        type: tosca.datatypes.compute.Container.Architecture.CPUAllocation
-        required: false
-      numa_node_count:
-        description: >-
-          Specifies the symmetric count of NUMA nodes to expose to the VM. vCPU and Memory equally split across this number of
-          NUMA.
-  
-          NOTE: the map of numa_nodes should not be specified.
-        type: integer
-        required: false 
-      numa_nodes:
-        description: >-
-          Asymmetric allocation of vCPU and Memory across the specific NUMA nodes (CPU sockets and memory banks).
-  
-          NOTE: symmetric numa_node_count should not be specified.
-        type: map
-        entry_schema: tosca.datatypes.compute.Container.Architecture.NUMA
-        required: false
-
   tosca.capabilities.nfv.VirtualBindable:
     _extensions:
       shorthand_name: VirtualBindable

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/794af1c8/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/data.yaml
----------------------------------------------------------------------
diff --git a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/data.yaml b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/data.yaml
index f6a07ef..cf35cba 100644
--- a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/data.yaml
+++ b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/data.yaml
@@ -303,78 +303,3 @@ data_types:
         entry_schema:
           type: string
         required: false
-
-  tosca.datatypes.compute.Container.Architecture.CPUAllocation:
-    _extensions:
-      shorthand_name: Container.Architecture.CPUAllocation # seems to be a mistake in the spec; the norm is to add a "Container.Architecture." prefix
-      type_qualified_name: tosca:Container.Architecture.CPUAllocation
-      specification: tosca-simple-nfv-1.0
-      specification_section: 8.3.1
-    description: >-
-      Granular CPU allocation requirements for NFV workloads.
-    derived_from: tosca.datatypes.Root
-    properties:
-      cpu_affinity:
-        description: >-
-          Describes whether vCPU need to be pinned to dedicated CPU core or shared dynamically.
-        type: string
-        constraints:
-          - valid_values: [ shared, dedicated ]
-        required: false
-      thread_allocation:
-        description: >-
-          Describe thread allocation requirement.
-        type: string
-        constraints:
-          - valid_values: [ avoid, isolate, separate, prefer ]
-        required: false
-      socket_count:
-        description: >-
-          Number of CPU sockets.
-        type: integer
-        required: false
-      core_count:
-        description: >-
-          Number of cores per socket.
-        type: integer
-        required: false
-      thread_count:
-        description: >-
-          Number of threads per core.
-        type: integer
-        required: false
-
-  tosca.datatypes.compute.Container.Architecture.NUMA:
-    _extensions:
-      shorthand_name: Container.Architecture.NUMA # ARIA NOTE: seems to be a mistake in the spec; the norm is to add a "Container.Architecture." prefix
-      type_qualified_name: tosca:Container.Architecture.NUMA
-      specification: tosca-simple-nfv-1.0
-      specification_section: 8.3.2
-      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd03/tosca-nfv-v1.0-csd03.html#_Toc447714697'
-    description: >-
-      Granular Non-Uniform Memory Access (NUMA) topology requirements for NFV workloads.
-    derived_from: tosca.datatypes.Root
-    properties:
-      id:
-        description: >-
-          CPU socket identifier.
-        type: integer
-        constraints:
-          - greater_or_equal: 0
-        required: false
-      vcpus:
-        description: >-
-          List of specific host cpu numbers within a NUMA socket complex.
-  
-          TODO: need a new base type, with non-overlapping, positive value validation (exclusivity),
-        type: map
-        entry_schema:
-          type: integer
-        required: false
-      mem_size:
-        description: >-
-          Size of memory allocated from this NUMA memory bank.
-        type: scalar-unit.size
-        constraints:
-          - greater_or_equal: 0 MB
-        required: false

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/794af1c8/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml
----------------------------------------------------------------------
diff --git a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml
index e8ab50f..d0ccadd 100644
--- a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml
+++ b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml
@@ -15,36 +15,6 @@
 
 node_types:
 
-  tosca.nodes.nfv.VNF:
-    _extensions:
-      shorthand_name: VNF # ARIA NOTE: omitted in the spec
-      type_qualified_name: tosca:VNF
-      specification: tosca-simple-nfv-1.0
-      specification_section: 8.5.1
-      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd03/tosca-nfv-v1.0-csd03.html#_Toc379455076'
-    description: >-
-      The NFV VNF Node Type represents a Virtual Network Function as defined by [ETSI GS NFV-MAN 001 v1.1.1]. It is the default
-      type that all other VNF Node Types derive from. This allows for all VNF nodes to have a consistent set of features for
-      modeling and management (e.g., consistent definitions for requirements, capabilities and lifecycle interfaces).
-    derived_from: tosca.nodes.Root
-    properties:
-      id:
-        description: >-
-          ID of this VNF.
-        type: string
-      vendor:
-        description: >-
-          Name of the vendor who generate this VNF.
-        type: string
-      version:
-        description: >-
-          Version of the software for this VNF.
-        type: string
-    requirements:
-      - virtual_link:
-          capability: tosca.capabilities.nfv.VirtualLinkable
-          relationship: tosca.relationships.nfv.VirtualLinksTo
-
   tosca.nodes.nfv.Cpd:
     _extensions:
       shorthand_name: Cpd
@@ -123,7 +93,11 @@ node_types:
           description: Describe the requirement for binding with VDU
           capability: tosca.capabilities.nfv.VirtualBindable
           relationship: tosca.relationships.nfv.VirtualBindsTo
-          node: tosca.nodes.nfv.VDU
+          node: tosca.nodes.nfv.VDU.Compute
+          # ARIA NOTE: the spec states "node: tosca.nodes.nfv.VDU", but this is probably a mistake
+          # as tosca.nodes.nfv.VDU was removed, and replaced with tosca.nodes.nfv.VDU.Compute and
+          # tosca.nodes.nfv.VDU.VirtualStorage. I choose to use tosca.nodes.nfv.VDU.Compute, but it
+          # can be changed upon discussion.
 
   VnfVirtualLinkDesc:
     _extensions:
@@ -173,62 +147,6 @@ node_types:
       # monitoring_parameters:
         # modeled as ad hoc (named) capabilities in node template
 
-#  tosca.nodes.nfv.VDU:
-#    _extensions:
-#      shorthand_name: VDU
-#      type_qualified_name: tosca:VDU
-#      specification: tosca-simple-nfv-1.0
-#      specification_section: 8.5.2
-#      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd03/tosca-nfv-v1.0-csd03.html#_Toc419290242'
-#    description: >-
-#      The NFV vdu node type represents a logical vdu entity as defined by [ETSI GS NFV-MAN 001 v1.1.1].
-#    derived_from: tosca.nodes.Root
-#    capabilities:
-#      nfv_compute:
-#        type: tosca.capabilities.Compute.Container.Architecture
-#      virtual_binding:
-#        type: tosca.capabilities.nfv.VirtualBindable
-#      monitoring_parameter:
-#        type: tosca.capabilities.nfv.Metric
-
-#  tosca.nodes.nfv.CP:
-#    _extensions:
-#      shorthand_name: CP
-#      type_qualified_name: tosca:CP
-#      specification: tosca-simple-nfv-1.0
-#      specification_section: 8.5.3
-#      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd03/tosca-nfv-v1.0-csd03.html#_Toc419290245'
-#    description: >-
-#      The NFV CP node represents a logical connection point entity as defined by [ETSI GS NFV-MAN 001 v1.1.1]. A connection point
-#      may be, for example, a virtual port, a virtual NIC address, a physical port, a physical NIC address or the endpoint of an IP
-#      VPN enabling network connectivity. It is assumed that each type of connection point will be modeled using subtypes of the CP
-#      type.
-#    derived_from: tosca.nodes.network.Port
-#    properties:
-#      type:
-#        description: >-
-#          This may be, for example, a virtual port, a virtual NIC address, a SR-IOV port, a physical port, a physical NIC address
-#          or the endpoint of an IP VPN enabling network connectivity.
-#        type: string
-#      anti_spoofing_protection:
-#        description: >-
-#          Indicates of whether anti-spoofing rule need to be enabled for this vNIC. This is applicable only when CP type is virtual
-#          NIC (vPort).
-#        type: boolean
-#        required: false
-#    attributes:
-#      address:
-#        description: >-
-#          The actual virtual NIC address that is been assigned when instantiating the connection point.
-#        type: string
-#    requirements:
-#      - virtual_link:
-#          capability: tosca.capabilities.nfv.VirtualLinkable
-#          relationship: tosca.relationships.nfv.VirtualLinksTo
-#      - virtual_binding:
-#          capability: tosca.capabilities.nfv.VirtualBindable
-#          relationship: tosca.relationships.nfv.VirtualBindsTo
-
   tosca.nodes.nfv.FP:
     _extensions:
       shorthand_name: FP # ARIA NOTE: the spec must be mistaken here, says "VL"
@@ -253,26 +171,6 @@ node_types:
   # Virtual link
   #
 
-#  tosca.nodes.nfv.VL:
-#    _extensions:
-#      shorthand_name: VL
-#      type_qualified_name: tosca:VL
-#      specification: tosca-simple-nfv-1.0
-#      specification_section: 9.1
-#      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd03/tosca-nfv-v1.0-csd03.html#_Toc419290251'
-#    description: >-
-#      The NFV VL node type represents a logical virtual link entity as defined by [ETSI GS NFV-MAN 001 v1.1.1]. It is the default
-#      type from which all other virtual link types derive.
-#    derived_from: tosca.nodes.network.Network
-#    properties:
-#      vendor:
-#        description: >-
-#          Vendor generating this VLD.
-#        type: string
-#    capabilities:
-#      virtual_linkable:
-#        type: tosca.capabilities.nfv.VirtualLinkable
-
   tosca.nodes.nfv.VL.ELine:
     _extensions:
       shorthand_name: VL.ELine # ARIA NOTE: omitted in the spec


[04/13] incubator-ariatosca git commit: Remove two capability types

Posted by av...@apache.org.
Remove two capability types

- tosca.capabilities.nfv.Forwarder
- tosca.capabilities.nfv.VirtualLinkable

They are not present in csd04.
The changelog at the end of csd04 states:
"Deleted NSD related content, v1.0 will only cover VNFD model."
The second capability was a part of the NSD model.
The first capability was a part of the VNFFGD model, which probably
also got deleted, since it is not the VNFD model.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/commit/6bad650e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/tree/6bad650e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/diff/6bad650e

Branch: refs/heads/ARIA-275-update-NFV-profile-to-csd04
Commit: 6bad650eb673edd07b1aafca68dd3106a3774e42
Parents: bdf117c
Author: Avia Efrat <av...@gigaspaces.com>
Authored: Tue Jun 6 01:26:08 2017 +0300
Committer: Avia Efrat <av...@gigaspaces.com>
Committed: Tue Jun 6 22:33:10 2017 +0300

----------------------------------------------------------------------
 .../tosca-simple-nfv-1.0/capabilities.yaml      | 32 +++-----------------
 1 file changed, 4 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/6bad650e/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/capabilities.yaml
----------------------------------------------------------------------
diff --git a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/capabilities.yaml b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/capabilities.yaml
index 6f50f61..db6a62b 100644
--- a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/capabilities.yaml
+++ b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/capabilities.yaml
@@ -20,8 +20,8 @@ capability_types:
       shorthand_name: VirtualBindable
       type_qualified_name: tosca:VirtualBindable
       specification: tosca-simple-nfv-1.0
-      specification_section: 8.2.2
-      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd03/tosca-nfv-v1.0-csd03.html#_Toc419290220'
+      specification_section: 5.5.1
+      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd04/tosca-nfv-v1.0-csd04.html#_Toc482896069'
     description: >-
       A node type that includes the VirtualBindable capability indicates that it can be pointed by
       tosca.relationships.nfv.VirtualBindsTo relationship type.
@@ -32,37 +32,13 @@ capability_types:
       shorthand_name: Metric
       type_qualified_name: tosca:Metric
       specification: tosca-simple-nfv-1.0
-      specification_section: 8.2.3
-      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd03/tosca-nfv-v1.0-csd03.html#_Toc418607874'
+      specification_section: 5.5.2
+      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd04/tosca-nfv-v1.0-csd04.html#_Toc482896070'
     description: >-
       A node type that includes the Metric capability indicates that it can be monitored using an nfv.relationships.Monitor
       relationship type.
     derived_from: tosca.capabilities.Endpoint
 
-  tosca.capabilities.nfv.Forwarder:
-    _extensions:
-      shorthand_name: Forwarder
-      type_qualified_name: tosca:Forwarder
-      specification: tosca-simple-nfv-1.0
-      specification_section: 10.3.1
-      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd03/tosca-nfv-v1.0-csd03.html#_Toc447714718'
-    description: >-
-      A node type that includes the Forwarder capability indicates that it can be pointed by tosca.relationships.nfv.FowardsTo
-      relationship type.
-    derived_from: tosca.capabilities.Root
-
-  tosca.capabilities.nfv.VirtualLinkable:
-    _extensions:
-      shorthand_name: VirtualLinkable
-      type_qualified_name: tosca:VirtualLinkable
-      specification: tosca-simple-nfv-1.0
-      specification_section: 11.3.1
-      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd03/tosca-nfv-v1.0-csd03.html#_Toc447714735'
-    description: >-
-      A node type that includes the VirtualLinkable capability indicates that it can be pointed by
-      tosca.relationships.nfv.VirtualLinksTo relationship type.
-    derived_from: tosca.capabilities.Node
-
   tosca.capabilites.nfv.VirtualCompute:
     _extensions:
       shorthand_name: VirtualCompute


[09/13] incubator-ariatosca git commit: Address more non-consistent issues of csd04

Posted by av...@apache.org.
Address more non-consistent issues of csd04


Project: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/commit/5e8044d4
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/tree/5e8044d4
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/diff/5e8044d4

Branch: refs/heads/ARIA-275-update-NFV-profile-to-csd04
Commit: 5e8044d4b8c937da6bdfcaac27314415a2f4a982
Parents: c8e4986
Author: Avia Efrat <av...@gigaspaces.com>
Authored: Tue Jun 6 22:32:02 2017 +0300
Committer: Avia Efrat <av...@gigaspaces.com>
Committed: Tue Jun 6 22:33:10 2017 +0300

----------------------------------------------------------------------
 .../tosca-simple-nfv-1.0/artifacts.yaml         |  76 +++++++
 .../tosca-simple-nfv-1.0/capabilities.yaml      |   2 +-
 .../profiles/tosca-simple-nfv-1.0/data.yaml     |   2 +-
 .../profiles/tosca-simple-nfv-1.0/nodes.yaml    | 206 +++++++++++--------
 .../tosca-simple-nfv-1.0.yaml                   |   1 +
 5 files changed, 204 insertions(+), 83 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/5e8044d4/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/artifacts.yaml
----------------------------------------------------------------------
diff --git a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/artifacts.yaml b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/artifacts.yaml
new file mode 100644
index 0000000..2e68f57
--- /dev/null
+++ b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/artifacts.yaml
@@ -0,0 +1,76 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+artifact_types:
+  tosca.artifacts.nfv.SwImage:
+    _extensions:
+      shorthand_name: SwImage
+      type_qualified_name: tosca:SwImage
+      specification: tosca-simple-nfv-1.0
+      specification_section: 5.4.1
+      specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd04/tosca-nfv-v1.0-csd04.html#_Toc482896067'
+    derived_from: tosca.artifacts.Deployment.Image
+    properties:
+      name:
+        description: Name of this software image
+        type: string
+        required: true
+      version:
+        description: Version of this software image
+        type: string
+        required: true
+      checksum:
+        description: Checksum of the software image file
+        type: string
+      container_format:
+        description: >-
+          The container format describes the container file format in which software image is provided
+        type: string
+        required: true
+      disk_format:
+        description: The disk format of a software image is the format of the underlying disk image
+        type: string
+        required: true
+      min_disk:
+        description: The minimal disk size requirement for this software image.
+        type: scalar-unit.size
+        required: true
+      min_ram:
+        description: The minimal disk size requirement for this software image.
+        type: scalar-unit.size
+        required: false
+      size: # ARIA NOTE: section [5.4.1.1 Properties] calls this field 'Size'.
+        description: The size of this software image
+        type: scalar-unit.size
+        required: true
+      sw_image:
+        description: A reference to the actual software image within VNF Package, or url.
+        type: string
+        required: true
+      operating_system:
+        description: Identifies the operating system used in the software image.
+        type: string
+        required: false
+      supported _virtualization_enviroment:
+        description: >-
+          Identifies the virtualization environments (e.g. hypervisor) compatible with this software
+          image
+        type: list
+        entry_schema:
+          type: string
+        required: false
+
+
+

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/5e8044d4/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/capabilities.yaml
----------------------------------------------------------------------
diff --git a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/capabilities.yaml b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/capabilities.yaml
index db6a62b..5673dfd 100644
--- a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/capabilities.yaml
+++ b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/capabilities.yaml
@@ -39,7 +39,7 @@ capability_types:
       relationship type.
     derived_from: tosca.capabilities.Endpoint
 
-  tosca.capabilites.nfv.VirtualCompute:
+  tosca.capabilities.nfv.VirtualCompute:
     _extensions:
       shorthand_name: VirtualCompute
       type_qualified_name: tosca:VirtualCompute

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/5e8044d4/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/data.yaml
----------------------------------------------------------------------
diff --git a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/data.yaml b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/data.yaml
index cec230c..17678bb 100644
--- a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/data.yaml
+++ b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/data.yaml
@@ -171,7 +171,7 @@ data_types:
       specification_section: 5.3.6
       specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd04/tosca-nfv-v1.0-csd04.html#_Toc482896060'
     description: RequestAdditionalCapability describes additional capability for a particular VDU.
-    derived_from: tosca.datatype.Root
+    derived_from: tosca.datatypes.Root
     properties:
       request_additional_capability_name:
         description: Identifies a requested additional capability for the VDU.

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/5e8044d4/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml
----------------------------------------------------------------------
diff --git a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml
index 6d68190..bef9cf2 100644
--- a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml
+++ b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/nodes.yaml
@@ -43,8 +43,8 @@ node_types:
           VirtualStorageDescriptor from which a VirtualStorage instance is created. If no boot order
           is defined the default boot order defined in the VIM or NFVI shall be used.
         type: list # explicit index (boot index) not necessary, contrary to IFA011
-          entry_schema:
-            type: string
+        entry_schema:
+          type: string
         required: false
       nfvi_constraints:
         description: >-
@@ -62,18 +62,30 @@ node_types:
         entry_schema:
           type: tosca.datatypes.nfv.VnfcConfigurableProperties
         required: true
-    attributes: # ARIA NOTE: The attributes are only described in section [5.9.2.5 Definition], but
-                # are not mentioned in section [5.9.2.2 Attributes].
-                # they are inherited from tosca.nodes.Compute.
+    attributes:
+    # ARIA NOTE: The attributes are only described in section [5.9.2.5 Definition], but are not
+    # mentioned in section [5.9.2.2 Attributes]. They are inherited from tosca.nodes.Compute.
+    # In addition, I added a 'type' field to every one of them, so their TOSCA syntax will be valid.
       private_address:
+        type: string
         status: deprecated
       public_address:
+        type: string
         status: deprecated
       networks:
+        type: map
+        entry_schema:
+          type: tosca.datatypes.network.NetworkInfo
         status: deprecated
       ports:
+        type: map
+        entry_schema:
+          type: tosca.datatypes.network.PortInfo
         status: deprecated
-    capabilites:
+    capabilities:
+      # ARIA NOTE: I commented out the virtual_storage capability as tosca.capabilities.nfv.VirtualStorage
+      # does not exist in csd04. csd04 even states:
+      # "Editor Note: Need to create tosca.capabilities.nfv.VirtualStorage capability type."
       virtual_compute:
         description: Describes virtual compute resources capabilities.
         type: tosca.capabilities.nfv.VirtualCompute
@@ -96,43 +108,66 @@ node_types:
         #  cpu_load: tosca.capabilities.nfv.Metric
         # memory_usage: tosca.capabilities.nfv.Metric
 
+      # ARIA NOTE: The capabilities 'host', 'endpoint', 'os', 'scalable', 'binding' are only
+      # described in section [5.9.2.5 Definition], but are not mentioned in section
+      # [5.9.2.4 Capabilities] they are inherited from tosca.nodes.Compute.
+
       host: #Editor note: FFS. How this capabilities should be used in NFV Profile
         type: tosca.capabilities.Container
         valid_source_types: [tosca.nodes.SoftwareComponent]
-        occurrences: [ 0,UNBOUNDED ]
-      endpoint: # ARIA NOTE: lacks type in contrast with the TOSCA spec
-        occurrences: [ 0,0 ]
-      os: # ARIA NOTE: lacks type in contrast with the TOSCA spec
-        occurrences: [ 0,0 ]
+        occurrences: [ 0, UNBOUNDED ]
+      endpoint:
+      # ARIA NOTE: lacks type in contrast with the TOSCA spec, so I added one.
+      # In addition, I commented out the 'occurrences' field since its value is not valid. I'm
+      # guessing it was just csd04's way of saying that this requirement is deprecated. But I'm not
+      # sure if this is the best way to do it.
+        type: tosca.capabilities.Endpoint.Admin
+      # occurrences: [ 0, 0 ]
+      os:
+      # ARIA NOTE: lacks type in contrast with the TOSCA spec, so I added one.
+      # In addition I commented out the 'occurrences' field since its value is not valid. I'm
+      # guessing it was just csd04's way of saying that this requirement is deprecated. But I'm not
+      # sure if this is the best way to do it.
+        type: tosca.capabilities.OperatingSystem
+      # occurrences: [ 0, 0 ]
       scalable: #Editor note: FFS. How this capabilities should be used in NFV Profile
         type: tosca.capabilities.Scalable
-      binding: # ARIA NOTE: lacks type in contrast with the TOSCA spec
-        occurrences: [0,UNBOUNDED]
-      # ARIA NOTE: The aforementioned two capabilities ('host' and 'scalable') are only described in
-      # section [5.9.2.5 Definition], but are not mentioned in section [5.9.2.4 Capabilities].
-      # they are inherited from tosca.nodes.Compute.
+      binding:
+      # ARIA NOTE: lacks type in contrast with the TOSCA spec, so I added one.
+        type: tosca.capabilities.network.Bindable
+        occurrences: [ 0, UNBOUNDED ]
     requirements:
-      - virtual_storage:
-          capability: tosca.capabilities.nfv.VirtualStorage
-          # ARIA NOTE: the above capability type does not exist in csd04...
-          relationship: tosca.relationships.nfv.VDU.AttachedTo
-          # ARIA NOTE: the above relationship type does not exist in csd04...
-          node: tosca.nodes.nfv.VDU.VirtualStorage
-          occurences: [ 0, UNBOUNDED ]
+      # ARIA NOTE: I commented out the virtual_storage requirement as both
+      # tosca.capabilities.nfv.VirtualStorage and tosca.relationships.nfv.VDU.AttachedTo
+      # do not exist in csd04.
+#     - virtual_storage:
+#         capability: tosca.capabilities.nfv.VirtualStorage
+#         relationship: tosca.relationships.nfv.VDU.AttachedTo
+#         node: tosca.nodes.nfv.VDU.VirtualStorage
+#         occurrences: [ 0, UNBOUNDED ]
       - local_storage: #For NFV Profile, this requirement is deprecated.
-          occurrences: [0,0]
-        # ARIA NOTE: what to do with this capability?
+          # ARIA NOTE: I added 'capability', 'node' and 'relationship' fields to to this requirement
+          # to make it valid TOSCA, even though it is 'deprecated' according to csd04.
+          # In Addition, I commented out the 'occurrences' field since its value is not valid. I'm
+          # guessing it was just csd04's way of saying that this requirement is deprecated. But I'm
+          # not sure if this is the best way to do it.
+          capability: tosca.capabilities.Attachment
+          node: tosca.nodes.BlockStorage
+          relationship: tosca.relationships.AttachesTo
+        # occurrences: [ 0,0 ]
     artifacts:
-      - sw_image:
-          description: >-
-            Describes the software image which is directly loaded on the virtualization container
-            realizing this virtual storage.
-          file: # ARIA NOTE: missing value even though it is required in TOSCA
-          type: tosca.artifacts.nfv.SwImage
-        # ARIA NOTE: this description is exactly the same as the description of the artifact of the
-        # same name of tosca.nodes.nfv.VDU.VirtualStorage. While the description seems fitting there
-        # here it seems it should mention something in the lines of "realizing this compute node",
-        # and not "realizing this virtual storage"
+    # ARIA NOTE: in csd04 the artifacts are described as a list, but in TOSCA they are defined as a
+    # map
+      sw_image:
+        description: >-
+          Describes the software image which is directly loaded on the virtualization container
+          realizing this virtual storage.
+        file: # ARIA NOTE: missing value even though it is required in TOSCA
+        type: tosca.artifacts.nfv.SwImage
+      # ARIA NOTE: this description is exactly the same as the description of the artifact of the
+      # same name of tosca.nodes.nfv.VDU.VirtualStorage. While the description seems fitting there
+      # here it seems it should mention something in the lines of "realizing this compute node",
+      # and not "realizing this virtual storage"
 
   tosca.nodes.nfv.VDU.VirtualStorage:
     _extensions:
@@ -150,40 +185,45 @@ node_types:
       deployment and operational behavior of a virtual storage resources, as defined by
       [ETSI NFV IFA011].
     derived_from: tosca.nodes.Root
-      properties:
-        # ARIA NOTE: the "id" property is already commented out in the spec, and is copied here
-        # verbatim from section [5.9.3.5 Definition]. In section [5.9.3.1 Properties], this property
-        # does not have a type and a required values, but does have a description
-        #id:
-          # node name
-        type_of_storage:
-          description: Type of virtualized storage resource
-          type: string
-          required: true
-        size_of_storage:
-          description: Size of virtualized storage resource (in GB)
-          # ARIA NOTE: if the description states that the property assignment should be in GB, why
-          # does the type is 'scalar-unit.size' and not just integer? In addition, why does section
-          # [5.9.3.1 Properties] states in the constraints column of this attribute that the value
-          # should be a number?
-          type: scalar-unit.size
-          required: true
-        rdma_enabled:
-          description: Indicate if the storage support RDMA
-          type: boolean
-          required: false
-        capabilities:
-          virtual_storage:
-            type: tosca.capabilities.nfv.VirtualStorage
-          # ARIA NOTE: the above capability type does not exist in csd04. csd04 even states:
-          # "Editor Note: Need to create tosca.capabilities.nfv.VirtualStorage capability type."
-        artifacts:
-          - sw_image:
-              description: >-
-                Describes the software image which is directly loaded on the virtualization
-                container realizing this virtual storage.
-              file: # ARIA NOTE: missing value even though it is required in TOSCA
-              type: tosca.artifacts.nfv.SwImage
+    properties:
+      # ARIA NOTE: the "id" property is already commented out in the spec, and is copied here
+      # verbatim from section [5.9.3.5 Definition]. In section [5.9.3.1 Properties], this property
+      # does not have a type and a required values, but does have a description
+      #id:
+        # node name
+      type_of_storage:
+        description: Type of virtualized storage resource
+        type: string
+        required: true
+      size_of_storage:
+        description: Size of virtualized storage resource (in GB)
+        # ARIA NOTE: if the description states that the property assignment should be in GB, why
+        # does the type is 'scalar-unit.size' and not just integer? In addition, why does section
+        # [5.9.3.1 Properties] states in the constraints column of this attribute that the value
+        # should be a number?
+        type: scalar-unit.size
+        required: true
+      rdma_enabled:
+        description: Indicate if the storage support RDMA
+        type: boolean
+        required: false
+#    capabilities:
+#       ARIA NOTE: I commented out the virtual_storage capability as tosca.capabilities.nfv.VirtualStorage
+#       does not exist in csd04. csd04 even states:
+#       "Editor Note: Need to create tosca.capabilities.nfv.VirtualStorage capability type."
+#       Since it is the only capability, I actually needed to comment out the whole 'capabilities'
+#       section.
+#      virtual_storage:
+#        type: tosca.capabilities.nfv.VirtualStorage
+    artifacts:
+    # ARIA NOTE: in csd04 the artifacts are described as a list, but in TOSCA they are defined as a
+    # map
+      sw_image:
+        description: >-
+          Describes the software image which is directly loaded on the virtualization
+          container realizing this virtual storage.
+        file: # ARIA NOTE: missing value even though it is required in TOSCA
+        type: tosca.artifacts.nfv.SwImage
 
   tosca.nodes.nfv.Cpd:
     _extensions:
@@ -192,11 +232,10 @@ node_types:
       specification: tosca-simple-nfv-1.0
       specification_section: 5.9.4
       specification_url: 'http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/csd04/tosca-nfv-v1.0-csd04.html#_Toc482896081'
-    derived_from: tosca.nodes.Root
     description: >-
       The TOSCA nfv.Cpd node represents network connectivity to a compute resource or a VL as defined
       by [ETSI GS NFV-IFA 011]. This is an abstract type used as parent for the various Cpd types.
-
+    derived_from: tosca.nodes.Root
     properties:
       layer_protocol:
         description: Identifies which protocol the connection point uses for connectivity purposes
@@ -225,7 +264,7 @@ node_types:
           from this Connection Point Descriptor.
         type: list
         entry_schema:
-          type: tosca.datatype.nfv.AddressData
+          type: tosca.datatypes.nfv.AddressData
         required: false
 
   tosca.nodes.nfv.VduCpd:
@@ -254,13 +293,15 @@ node_types:
           type: VirtualNetworkInterfaceRequirements
         required: false
     requirements:
-      - virtual_link:
-          description: Describes the requirements for linking to virtual link
-          capability: tosca.capabilities.nfv.VirtualLinkable
-          relationship: tosca.relationships.nfv.VirtualLinksTo
-          node: tosca.nodes.nfv.VnfVirtualLinkDesc
+     # ARIA NOTE: the capability type and the relationship type of this capability were part of the
+     # NSD profile (section 11 in csd03), and were removed in csd04. It seems that they forgot to
+     # edit some places who reference it. so I'm commenting out this requirement.
+     # - virtual_link:
+     #     description: Describes the requirements for linking to virtual link
+     #     capability: tosca.capabilities.nfv.VirtualLinkable
+     #     relationship: tosca.relationships.nfv.VirtualLinksTo
+     #     node: tosca.nodes.nfv.VnfVirtualLinkDesc
       - virtual_binding:
-          description: Describe the requirement for binding with VDU
           capability: tosca.capabilities.nfv.VirtualBindable
           relationship: tosca.relationships.nfv.VirtualBindsTo
           node: tosca.nodes.nfv.VDU.Compute
@@ -306,9 +347,12 @@ node_types:
      #    entry_schema:
      #      type: tosca.datatypes.nfv.VlFlavour
      #   required: true
-    capabilities:
-      virtual_linkable:
-       type: tosca.capabilities.nfv.VirtualLinkable
+  # capabilities:
+    # virtual_linkable:
+       # ARIA NOTE this capability type was part of the NSD profile (section 11 in csd03), and was
+       # removed in csd04. It seems that they forgot to edit some places who reference it. so I'm
+       # commenting out this whole section.
+       # type: tosca.capabilities.nfv.VirtualLinkable
 
       # ARIA NOTE: the "monitoring_parameters" capability is already commented out in the spec, and
       # is copied here verbatim from section [5.9.6.5 Definition].

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/5e8044d4/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/tosca-simple-nfv-1.0.yaml
----------------------------------------------------------------------
diff --git a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/tosca-simple-nfv-1.0.yaml b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/tosca-simple-nfv-1.0.yaml
index e881b7e..764c739 100644
--- a/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/tosca-simple-nfv-1.0.yaml
+++ b/extensions/aria_extension_tosca/profiles/tosca-simple-nfv-1.0/tosca-simple-nfv-1.0.yaml
@@ -14,6 +14,7 @@
 # limitations under the License.
 
 imports:
+  - artifacts.yaml
   - capabilities.yaml
   - data.yaml
   - nodes.yaml