CLOUD — teiv master documentation

# CLOUD

    module o-ran-smo-teiv-cloud {
        yang-version 1.1;
        namespace "urn:o-ran:smo-teiv-cloud";
        prefix or-teiv-cloud;

        import o-ran-smo-teiv-common-yang-types {prefix or-teiv-types; }

        import o-ran-smo-teiv-common-yang-extensions {prefix or-teiv-yext; }

        import ietf-geo-location {
            prefix geo;
            reference "RFC 9179: A YANG Grouping for Geographic Locations";
        }

        organization "ORAN";
        contact "The Authors";
        description
            "RAN Cloud topology model.

            This model contains the topology entities and relations in the
            RAN CLOUD domain, which comprises cloud infrastructure and
            deployment aspects that can be used in the topology model.

            Copyright (C) 2024 Ericsson
            Modifications Copyright (C) 2024 OpenInfra Foundation Europe

            Licensed under the Apache License, Version 2.0 (the \"License\");
            you may not use this file except in compliance with the License.
            You may obtain a copy of the License at

            http://www.apache.org/licenses/LICENSE-2.0

            Unless required by applicable law or agreed to in writing, software
            distributed under the License is distributed on an \"AS IS\" BASIS,
            WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
            See the License for the specific language governing permissions and
            limitations under the License.

            SPDX-License-Identifier: Apache-2.0";

        revision "2025-10-23" {
            description "Initial revision.";
            or-teiv-yext:label 1.0.0;
            reference "O-RAN.WG10.TE&IV-DM.0-R005-v04.00";
        }

        revision "2024-10-04" {
            description "Added groupings, Origin_Entity_Mapping_Grp or Origin_Relationship_Mapping_Grp
            to the corresponding topology objects.";
            or-teiv-yext:label 0.4.0;
        }

        revision "2024-05-02" {
            description "Initial revision.";
            or-teiv-yext:label 0.3.0;
        }

        revision "2024-07-15" {
            description "This revision aligns O-RAN Work Group 10 Stage 2 Specification (O-RAN.WG10.TE&IV-CIMI.0-R004.v02.00)";
            or-teiv-yext:label 0.4.0;
        }

        or-teiv-yext:domain CLOUD;

        list CloudifiedNF {
            description "Represents the Cloudified Network Function in the O-Cloud domain";

            uses or-teiv-types:Top_Grp_Type;
            uses or-teiv-types:Origin_Entity_Mapping_Grp;
            key id;

            container attributes {
                description "Container for CloudifiedNF attributes";
                leaf cloudifiedNfId {
                    type string;
                    description "Identifier of the CloudifiedNF";
                }
                leaf serviceOrchestrationId {
                    type string;
                    description "Identifier of the service orchestrator";
                }
            }
        }

        list NFDeployment {
            description "Represents the NF Deployment in the O-Cloud domain";

            uses or-teiv-types:Top_Grp_Type;
            uses or-teiv-types:Origin_Entity_Mapping_Grp;
            key id;

            container attributes {
                description "Container for NF Deployment attributes";
                leaf nfDeploymentId {
                    type string;
                    description "Identifier of the NF Deployment";
                }
                leaf resourceOrchestrationId {
                    type string;
                    description "Identifier of the resoure orchestrator";
                }
                leaf serviceOrchestrationId {
                    type string;
                    description "Identifier of the service orchestrator";
                }
            }
        }

        list OCloudNamespace {
            description "Represents the O-Cloud Namespace in the O-Cloud domain";

            uses or-teiv-types:Top_Grp_Type;
            uses or-teiv-types:Origin_Entity_Mapping_Grp;
            key id;

            container attributes {
                description "Container for O-Cloud Namespace attributes";
                leaf oCloudNamespaceName {
                    type string;
                    description "Name of the O-Cloud Namespace";
                }
            }
        }

        list NodeCluster {
            description "Represents the Node Cluster in the O-Cloud domain";

            uses or-teiv-types:Top_Grp_Type;
            uses or-teiv-types:Origin_Entity_Mapping_Grp;
            key id;

            container attributes {
                description "Container for Node Cluster attributes";
                leaf nodeClusterId {
                    type string;
                    description "Identifier of the Node Cluster";
                }
                leaf nodeClusterName {
                    type string;
                    description "Name of the Node Cluster";
                }
                leaf resourceOrchestrationId {
                    type string;
                    description "Identifier of the resoure orchestrator";
                }
                leaf serviceOrchestrationId {
                    type string;
                    description "Identifier of the service orchestrator";
                }
            }
        }

        list OCloudSite {
            description "Represents the O-Cloud Site in the O-Cloud domain";

            uses or-teiv-types:Top_Grp_Type;
            uses or-teiv-types:Origin_Entity_Mapping_Grp;
            key id;

            container attributes {
                description "Container for O-Cloud Site attributes";
                container oCloudSiteLocation {
                    description "Representation of O-Cloud Site location";
                    uses or-teiv-types:GeoInformation;
                }
                leaf oCloudSiteId {
                    type string;
                    description "Identifier of the O-Cloud Site";
                }
                leaf-list supportedMITs {
                    type string;
                    description "List of the supported MITs in the O-Cloud Site";
                }
            }
        }

        or-teiv-yext:biDirectionalTopologyRelationship CLOUDIFIEDNF_COMPRISES_NFDEPLOYMENT { // 1 to 1..n

            uses or-teiv-types:Top_Grp_Type;
            uses or-teiv-types:Origin_Relationship_Mapping_Grp;
            key id;

            leaf-list comprised-nFDeployment {
                description "Cloudified NF comprises of these NF Deployment.";
                or-teiv-yext:aSide CloudifiedNF;
                type instance-identifier;
                min-elements 1;
            }

            leaf comprised-by-cloudifiedNF {
                description "NF Deployment part of Cloudified NF.";
                or-teiv-yext:bSide NFDeployment;
                type instance-identifier;
                mandatory true;
            }
        }

        or-teiv-yext:biDirectionalTopologyRelationship NFDEPLOYMENT_DEPLOYED_ON_OCLOUDNAMESPACE { // 1..n to 1..n

            uses or-teiv-types:Top_Grp_Type;
            uses or-teiv-types:Origin_Relationship_Mapping_Grp;
            key id;

            leaf-list deployed-on-ocloudNamespace {
                description "NF Deployment deployed on O-Cloud Namespace.";
                or-teiv-yext:aSide NFDeployment;
                type instance-identifier;
                min-elements 1;
            }

            leaf-list deployed-nFDeployment {
                description "OCloud Namespace deploys NF Deployment.";
                or-teiv-yext:bSide OCloudNamespace;
                type instance-identifier;
                min-elements 1;
            }
        }

        or-teiv-yext:biDirectionalTopologyRelationship OCLOUDNAMESPACE_DEPLOYED_ON_NODECLUSTER { // 1..n to 1

            uses or-teiv-types:Top_Grp_Type;
            uses or-teiv-types:Origin_Relationship_Mapping_Grp;
            key id;

            leaf deployed-on-nodeCluster {
                description "O-Cloud Namespace deployed on Node Cluster.";
                or-teiv-yext:aSide OCloudNamespace;
                type instance-identifier;
                mandatory true;
            }

            leaf-list deployed-ocloudNamespace {
                description "Node Cluster deploys O-Cloud Namespace.";
                or-teiv-yext:bSide NodeCluster;
                type instance-identifier;
                min-elements 1;
            }
        }

        or-teiv-yext:biDirectionalTopologyRelationship NODECLUSTER_LOCATED_AT_OCLOUDSITE { // 1..n to 1..n

            uses or-teiv-types:Top_Grp_Type;
            uses or-teiv-types:Origin_Relationship_Mapping_Grp;
            key id;

            leaf-list located-at-ocloudSite {
                description "Node Cluster located at O-Cloud Site.";
                or-teiv-yext:aSide NodeCluster;
                type instance-identifier;
                min-elements 1;
            }

            leaf-list location-of-onodeCluster {
                description "O-Cloud Site is location of Node Cluster.";
                or-teiv-yext:bSide OCloudSite;
                type instance-identifier;
                min-elements 1;
            }
        }
    }