Skip to content
Snippets Groups Projects
yang.go 807 KiB
Newer Older
  • Learn to ignore specific revisions
  • Manuel Kieweg's avatar
    Manuel Kieweg committed
    /*
    Package tapi is a generated package which contains definitions
    of structs which represent a YANG schema. The generated schema can be
    compressed by a series of transformations (compression was false
    in this case).
    
    This package was generated by /Users/mk/go/pkg/mod/github.com/openconfig/ygot@v0.8.7/genutil/names.go
    using the following YANG input files:
    	- ../../models/tapi-topology@2019-03-31.yang
    
    	- ../../models/tapi-connectivity@2019-03-31.yang
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    Imported modules were sourced from:
    	- ../../yang/...
    */
    package tapi
    
    import (
    	"encoding/json"
    	"fmt"
    	"reflect"
    
    	"github.com/openconfig/ygot/ygot"
    	"github.com/openconfig/goyang/pkg/yang"
    	"github.com/openconfig/ygot/ytypes"
    )
    
    // Binary is a type that is used for fields that have a YANG type of
    // binary. It is used such that binary fields can be distinguished from
    // leaf-lists of uint8s (which are mapped to []uint8, equivalent to
    // []byte in reflection).
    type Binary []byte
    
    // YANGEmpty is a type that is used for fields that have a YANG type of
    // empty. It is used such that empty fields can be distinguished from boolean fields
    // in the generated code.
    type YANGEmpty bool
    
    var (
    	SchemaTree map[string]*yang.Entry
    )
    
    func init() {
    	var err error
    	if SchemaTree, err = UnzipSchema(); err != nil {
    		panic("schema error: " +  err.Error())
    	}
    }
    
    // Schema returns the details of the generated schema.
    func Schema() (*ytypes.Schema, error) {
    	uzp, err := UnzipSchema()
    	if err != nil {
    		return nil, fmt.Errorf("cannot unzip schema, %v", err)
    	}
    
    	return &ytypes.Schema{
    		Root: &Device{},
    		SchemaTree: uzp,
    		Unmarshal: Unmarshal,
    	}, nil
    }
    
    // UnzipSchema unzips the zipped schema and returns a map of yang.Entry nodes,
    // keyed by the name of the struct that the yang.Entry describes the schema for.
    func UnzipSchema() (map[string]*yang.Entry, error) {
    	var schemaTree map[string]*yang.Entry
    	var err error
    	if schemaTree, err = ygot.GzipToSchema(ySchema); err != nil {
    		return nil, fmt.Errorf("could not unzip the schema; %v", err)
    	}
    	return schemaTree, nil
    }
    
    // Unmarshal unmarshals data, which must be RFC7951 JSON format, into
    // destStruct, which must be non-nil and the correct GoStruct type. It returns
    // an error if the destStruct is not found in the schema or the data cannot be
    // unmarshaled. The supplied options (opts) are used to control the behaviour
    // of the unmarshal function - for example, determining whether errors are
    // thrown for unknown fields in the input JSON.
    func Unmarshal(data []byte, destStruct ygot.GoStruct, opts ...ytypes.UnmarshalOpt) error {
    	tn := reflect.TypeOf(destStruct).Elem().Name()
    	schema, ok := SchemaTree[tn]
    	if !ok {
    		return fmt.Errorf("could not find schema for type %s", tn )
    	}
    	var jsonTree interface{}
    	if err := json.Unmarshal([]byte(data), &jsonTree); err != nil {
    		return err
    	}
    	return ytypes.Unmarshal(schema, destStruct, jsonTree, opts...)
    }
    
    // Device represents the /device YANG schema element.
    type Device struct {
    	Context	*TapiCommon_Context	`path:"context" module:"tapi-common"`
    }
    
    // IsYANGGoStruct ensures that Device implements the yang.GoStruct
    // interface. This allows functions that need to handle this struct to
    // identify it as being generated by ygen.
    func (*Device) IsYANGGoStruct() {}
    
    // Validate validates s against the YANG schema corresponding to its type.
    func (t *Device) Validate(opts ...ygot.ValidationOption) error {
    	if err := ytypes.Validate(SchemaTree["Device"], t, opts...); err != nil {
    		return err
    	}
    	return nil
    }
    
    // ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
    // that are included in the generated code.
    func (t *Device) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }
    
    
    // TapiCommon_Context represents the /tapi-common/context YANG schema element.
    type TapiCommon_Context struct {
    
    	ConnectivityContext	*TapiCommon_Context_ConnectivityContext	`path:"connectivity-context" module:"tapi-connectivity"`
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	Name	map[string]*TapiCommon_Context_Name	`path:"name" module:"tapi-common"`
    
    	PathComputationContext	*TapiCommon_Context_PathComputationContext	`path:"path-computation-context" module:"tapi-path-computation"`
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	ServiceInterfacePoint	map[string]*TapiCommon_Context_ServiceInterfacePoint	`path:"service-interface-point" module:"tapi-common"`
    	TopologyContext	*TapiCommon_Context_TopologyContext	`path:"topology-context" module:"tapi-topology"`
    	Uuid	*string	`path:"uuid" module:"tapi-common"`
    }
    
    // IsYANGGoStruct ensures that TapiCommon_Context implements the yang.GoStruct
    // interface. This allows functions that need to handle this struct to
    // identify it as being generated by ygen.
    func (*TapiCommon_Context) IsYANGGoStruct() {}
    
    // NewName creates a new entry in the Name list of the
    // TapiCommon_Context struct. The keys of the list are populated from the input
    // arguments.
    func (t *TapiCommon_Context) NewName(ValueName string) (*TapiCommon_Context_Name, error){
    
    	// Initialise the list within the receiver struct if it has not already been
    	// created.
    	if t.Name == nil {
    		t.Name = make(map[string]*TapiCommon_Context_Name)
    	}
    
    	key := ValueName
    
    	// Ensure that this key has not already been used in the
    	// list. Keyed YANG lists do not allow duplicate keys to
    	// be created.
    	if _, ok := t.Name[key]; ok {
    		return nil, fmt.Errorf("duplicate key %v for list Name", key)
    	}
    
    	t.Name[key] = &TapiCommon_Context_Name{
    		ValueName: &ValueName,
    	}
    
    	return t.Name[key], nil
    }
    
    // NewServiceInterfacePoint creates a new entry in the ServiceInterfacePoint list of the
    // TapiCommon_Context struct. The keys of the list are populated from the input
    // arguments.
    func (t *TapiCommon_Context) NewServiceInterfacePoint(Uuid string) (*TapiCommon_Context_ServiceInterfacePoint, error){
    
    	// Initialise the list within the receiver struct if it has not already been
    	// created.
    	if t.ServiceInterfacePoint == nil {
    		t.ServiceInterfacePoint = make(map[string]*TapiCommon_Context_ServiceInterfacePoint)
    	}
    
    	key := Uuid
    
    	// Ensure that this key has not already been used in the
    	// list. Keyed YANG lists do not allow duplicate keys to
    	// be created.
    	if _, ok := t.ServiceInterfacePoint[key]; ok {
    		return nil, fmt.Errorf("duplicate key %v for list ServiceInterfacePoint", key)
    	}
    
    	t.ServiceInterfacePoint[key] = &TapiCommon_Context_ServiceInterfacePoint{
    		Uuid: &Uuid,
    	}
    
    	return t.ServiceInterfacePoint[key], nil
    }
    
    // Validate validates s against the YANG schema corresponding to its type.
    func (t *TapiCommon_Context) Validate(opts ...ygot.ValidationOption) error {
    	if err := ytypes.Validate(SchemaTree["TapiCommon_Context"], t, opts...); err != nil {
    		return err
    	}
    	return nil
    }
    
    // ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
    // that are included in the generated code.
    func (t *TapiCommon_Context) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }
    
    
    
    // TapiCommon_Context_ConnectivityContext represents the /tapi-common/context/connectivity-context YANG schema element.
    type TapiCommon_Context_ConnectivityContext struct {
    	Connection	map[string]*TapiCommon_Context_ConnectivityContext_Connection	`path:"connection" module:"tapi-connectivity"`
    	ConnectivityService	map[string]*TapiCommon_Context_ConnectivityContext_ConnectivityService	`path:"connectivity-service" module:"tapi-connectivity"`
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    }
    
    
    // IsYANGGoStruct ensures that TapiCommon_Context_ConnectivityContext implements the yang.GoStruct
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    // interface. This allows functions that need to handle this struct to
    // identify it as being generated by ygen.
    
    func (*TapiCommon_Context_ConnectivityContext) IsYANGGoStruct() {}
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    
    // NewConnection creates a new entry in the Connection list of the
    // TapiCommon_Context_ConnectivityContext struct. The keys of the list are populated from the input
    // arguments.
    func (t *TapiCommon_Context_ConnectivityContext) NewConnection(Uuid string) (*TapiCommon_Context_ConnectivityContext_Connection, error){
    
    	// Initialise the list within the receiver struct if it has not already been
    	// created.
    	if t.Connection == nil {
    		t.Connection = make(map[string]*TapiCommon_Context_ConnectivityContext_Connection)
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	}
    
    
    	key := Uuid
    
    	// Ensure that this key has not already been used in the
    	// list. Keyed YANG lists do not allow duplicate keys to
    	// be created.
    	if _, ok := t.Connection[key]; ok {
    		return nil, fmt.Errorf("duplicate key %v for list Connection", key)
    	}
    
    	t.Connection[key] = &TapiCommon_Context_ConnectivityContext_Connection{
    		Uuid: &Uuid,
    	}
    
    	return t.Connection[key], nil
    }
    
    // NewConnectivityService creates a new entry in the ConnectivityService list of the
    // TapiCommon_Context_ConnectivityContext struct. The keys of the list are populated from the input
    // arguments.
    func (t *TapiCommon_Context_ConnectivityContext) NewConnectivityService(Uuid string) (*TapiCommon_Context_ConnectivityContext_ConnectivityService, error){
    
    	// Initialise the list within the receiver struct if it has not already been
    	// created.
    	if t.ConnectivityService == nil {
    		t.ConnectivityService = make(map[string]*TapiCommon_Context_ConnectivityContext_ConnectivityService)
    	}
    
    	key := Uuid
    
    	// Ensure that this key has not already been used in the
    	// list. Keyed YANG lists do not allow duplicate keys to
    	// be created.
    	if _, ok := t.ConnectivityService[key]; ok {
    		return nil, fmt.Errorf("duplicate key %v for list ConnectivityService", key)
    	}
    
    	t.ConnectivityService[key] = &TapiCommon_Context_ConnectivityContext_ConnectivityService{
    		Uuid: &Uuid,
    	}
    
    	return t.ConnectivityService[key], nil
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    }
    
    // Validate validates s against the YANG schema corresponding to its type.
    
    func (t *TapiCommon_Context_ConnectivityContext) Validate(opts ...ygot.ValidationOption) error {
    	if err := ytypes.Validate(SchemaTree["TapiCommon_Context_ConnectivityContext"], t, opts...); err != nil {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		return err
    	}
    	return nil
    }
    
    // ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
    // that are included in the generated code.
    
    func (t *TapiCommon_Context_ConnectivityContext) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }
    
    
    // TapiCommon_Context_ConnectivityContext_Connection represents the /tapi-common/context/connectivity-context/connection YANG schema element.
    type TapiCommon_Context_ConnectivityContext_Connection struct {
    	BoundingNode	*TapiCommon_Context_ConnectivityContext_Connection_BoundingNode	`path:"bounding-node" module:"tapi-connectivity"`
    	ConnectionEndPoint	map[TapiCommon_Context_ConnectivityContext_Connection_ConnectionEndPoint_Key]*TapiCommon_Context_ConnectivityContext_Connection_ConnectionEndPoint	`path:"connection-end-point" module:"tapi-connectivity"`
    	Direction	E_TapiConnectivity_ForwardingDirection	`path:"direction" module:"tapi-connectivity"`
    	LayerProtocolName	E_TapiConnectivity_LayerProtocolName	`path:"layer-protocol-name" module:"tapi-connectivity"`
    	LifecycleState	E_TapiCommon_LifecycleState	`path:"lifecycle-state" module:"tapi-connectivity"`
    	LowerConnection	map[string]*TapiCommon_Context_ConnectivityContext_Connection_LowerConnection	`path:"lower-connection" module:"tapi-connectivity"`
    	Name	map[string]*TapiCommon_Context_ConnectivityContext_Connection_Name	`path:"name" module:"tapi-connectivity"`
    	OperationalState	E_TapiCommon_OperationalState	`path:"operational-state" module:"tapi-connectivity"`
    	Route	map[string]*TapiCommon_Context_ConnectivityContext_Connection_Route	`path:"route" module:"tapi-connectivity"`
    	SupportedClientLink	map[TapiCommon_Context_ConnectivityContext_Connection_SupportedClientLink_Key]*TapiCommon_Context_ConnectivityContext_Connection_SupportedClientLink	`path:"supported-client-link" module:"tapi-connectivity"`
    	SwitchControl	map[string]*TapiCommon_Context_ConnectivityContext_Connection_SwitchControl	`path:"switch-control" module:"tapi-connectivity"`
    	Uuid	*string	`path:"uuid" module:"tapi-connectivity"`
    }
    
    // IsYANGGoStruct ensures that TapiCommon_Context_ConnectivityContext_Connection implements the yang.GoStruct
    // interface. This allows functions that need to handle this struct to
    // identify it as being generated by ygen.
    func (*TapiCommon_Context_ConnectivityContext_Connection) IsYANGGoStruct() {}
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    
    // TapiCommon_Context_ConnectivityContext_Connection_ConnectionEndPoint_Key represents the key for list ConnectionEndPoint of element /tapi-common/context/connectivity-context/connection.
    type TapiCommon_Context_ConnectivityContext_Connection_ConnectionEndPoint_Key struct {
    	TopologyUuid	string	`path:"topology-uuid"`
    	NodeUuid	string	`path:"node-uuid"`
    	NodeEdgePointUuid	string	`path:"node-edge-point-uuid"`
    	ConnectionEndPointUuid	string	`path:"connection-end-point-uuid"`
    }
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    
    // TapiCommon_Context_ConnectivityContext_Connection_SupportedClientLink_Key represents the key for list SupportedClientLink of element /tapi-common/context/connectivity-context/connection.
    type TapiCommon_Context_ConnectivityContext_Connection_SupportedClientLink_Key struct {
    	TopologyUuid	string	`path:"topology-uuid"`
    	LinkUuid	string	`path:"link-uuid"`
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    }
    
    
    // NewConnectionEndPoint creates a new entry in the ConnectionEndPoint list of the
    // TapiCommon_Context_ConnectivityContext_Connection struct. The keys of the list are populated from the input
    // arguments.
    func (t *TapiCommon_Context_ConnectivityContext_Connection) NewConnectionEndPoint(TopologyUuid string, NodeUuid string, NodeEdgePointUuid string, ConnectionEndPointUuid string) (*TapiCommon_Context_ConnectivityContext_Connection_ConnectionEndPoint, error){
    
    	// Initialise the list within the receiver struct if it has not already been
    	// created.
    	if t.ConnectionEndPoint == nil {
    		t.ConnectionEndPoint = make(map[TapiCommon_Context_ConnectivityContext_Connection_ConnectionEndPoint_Key]*TapiCommon_Context_ConnectivityContext_Connection_ConnectionEndPoint)
    	}
    
    	key := TapiCommon_Context_ConnectivityContext_Connection_ConnectionEndPoint_Key{
    		TopologyUuid: TopologyUuid,
    		NodeUuid: NodeUuid,
    		NodeEdgePointUuid: NodeEdgePointUuid,
    		ConnectionEndPointUuid: ConnectionEndPointUuid,
    	}
    
    	// Ensure that this key has not already been used in the
    	// list. Keyed YANG lists do not allow duplicate keys to
    	// be created.
    	if _, ok := t.ConnectionEndPoint[key]; ok {
    		return nil, fmt.Errorf("duplicate key %v for list ConnectionEndPoint", key)
    	}
    
    	t.ConnectionEndPoint[key] = &TapiCommon_Context_ConnectivityContext_Connection_ConnectionEndPoint{
    		TopologyUuid: &TopologyUuid,
    		NodeUuid: &NodeUuid,
    		NodeEdgePointUuid: &NodeEdgePointUuid,
    		ConnectionEndPointUuid: &ConnectionEndPointUuid,
    	}
    
    	return t.ConnectionEndPoint[key], nil
    }
    
    // NewLowerConnection creates a new entry in the LowerConnection list of the
    // TapiCommon_Context_ConnectivityContext_Connection struct. The keys of the list are populated from the input
    // arguments.
    func (t *TapiCommon_Context_ConnectivityContext_Connection) NewLowerConnection(ConnectionUuid string) (*TapiCommon_Context_ConnectivityContext_Connection_LowerConnection, error){
    
    	// Initialise the list within the receiver struct if it has not already been
    	// created.
    	if t.LowerConnection == nil {
    		t.LowerConnection = make(map[string]*TapiCommon_Context_ConnectivityContext_Connection_LowerConnection)
    	}
    
    	key := ConnectionUuid
    
    	// Ensure that this key has not already been used in the
    	// list. Keyed YANG lists do not allow duplicate keys to
    	// be created.
    	if _, ok := t.LowerConnection[key]; ok {
    		return nil, fmt.Errorf("duplicate key %v for list LowerConnection", key)
    	}
    
    	t.LowerConnection[key] = &TapiCommon_Context_ConnectivityContext_Connection_LowerConnection{
    		ConnectionUuid: &ConnectionUuid,
    	}
    
    	return t.LowerConnection[key], nil
    }
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    // NewName creates a new entry in the Name list of the
    
    // TapiCommon_Context_ConnectivityContext_Connection struct. The keys of the list are populated from the input
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    // arguments.
    
    func (t *TapiCommon_Context_ConnectivityContext_Connection) NewName(ValueName string) (*TapiCommon_Context_ConnectivityContext_Connection_Name, error){
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    	// Initialise the list within the receiver struct if it has not already been
    	// created.
    	if t.Name == nil {
    
    		t.Name = make(map[string]*TapiCommon_Context_ConnectivityContext_Connection_Name)
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	}
    
    	key := ValueName
    
    	// Ensure that this key has not already been used in the
    	// list. Keyed YANG lists do not allow duplicate keys to
    	// be created.
    	if _, ok := t.Name[key]; ok {
    		return nil, fmt.Errorf("duplicate key %v for list Name", key)
    	}
    
    
    	t.Name[key] = &TapiCommon_Context_ConnectivityContext_Connection_Name{
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		ValueName: &ValueName,
    	}
    
    	return t.Name[key], nil
    }
    
    
    // NewRoute creates a new entry in the Route list of the
    // TapiCommon_Context_ConnectivityContext_Connection struct. The keys of the list are populated from the input
    // arguments.
    func (t *TapiCommon_Context_ConnectivityContext_Connection) NewRoute(LocalId string) (*TapiCommon_Context_ConnectivityContext_Connection_Route, error){
    
    	// Initialise the list within the receiver struct if it has not already been
    	// created.
    	if t.Route == nil {
    		t.Route = make(map[string]*TapiCommon_Context_ConnectivityContext_Connection_Route)
    	}
    
    	key := LocalId
    
    	// Ensure that this key has not already been used in the
    	// list. Keyed YANG lists do not allow duplicate keys to
    	// be created.
    	if _, ok := t.Route[key]; ok {
    		return nil, fmt.Errorf("duplicate key %v for list Route", key)
    	}
    
    	t.Route[key] = &TapiCommon_Context_ConnectivityContext_Connection_Route{
    		LocalId: &LocalId,
    	}
    
    	return t.Route[key], nil
    }
    
    // NewSupportedClientLink creates a new entry in the SupportedClientLink list of the
    // TapiCommon_Context_ConnectivityContext_Connection struct. The keys of the list are populated from the input
    // arguments.
    func (t *TapiCommon_Context_ConnectivityContext_Connection) NewSupportedClientLink(TopologyUuid string, LinkUuid string) (*TapiCommon_Context_ConnectivityContext_Connection_SupportedClientLink, error){
    
    	// Initialise the list within the receiver struct if it has not already been
    	// created.
    	if t.SupportedClientLink == nil {
    		t.SupportedClientLink = make(map[TapiCommon_Context_ConnectivityContext_Connection_SupportedClientLink_Key]*TapiCommon_Context_ConnectivityContext_Connection_SupportedClientLink)
    	}
    
    	key := TapiCommon_Context_ConnectivityContext_Connection_SupportedClientLink_Key{
    		TopologyUuid: TopologyUuid,
    		LinkUuid: LinkUuid,
    	}
    
    	// Ensure that this key has not already been used in the
    	// list. Keyed YANG lists do not allow duplicate keys to
    	// be created.
    	if _, ok := t.SupportedClientLink[key]; ok {
    		return nil, fmt.Errorf("duplicate key %v for list SupportedClientLink", key)
    	}
    
    	t.SupportedClientLink[key] = &TapiCommon_Context_ConnectivityContext_Connection_SupportedClientLink{
    		TopologyUuid: &TopologyUuid,
    		LinkUuid: &LinkUuid,
    	}
    
    	return t.SupportedClientLink[key], nil
    }
    
    // NewSwitchControl creates a new entry in the SwitchControl list of the
    // TapiCommon_Context_ConnectivityContext_Connection struct. The keys of the list are populated from the input
    // arguments.
    func (t *TapiCommon_Context_ConnectivityContext_Connection) NewSwitchControl(Uuid string) (*TapiCommon_Context_ConnectivityContext_Connection_SwitchControl, error){
    
    	// Initialise the list within the receiver struct if it has not already been
    	// created.
    	if t.SwitchControl == nil {
    		t.SwitchControl = make(map[string]*TapiCommon_Context_ConnectivityContext_Connection_SwitchControl)
    	}
    
    	key := Uuid
    
    	// Ensure that this key has not already been used in the
    	// list. Keyed YANG lists do not allow duplicate keys to
    	// be created.
    	if _, ok := t.SwitchControl[key]; ok {
    		return nil, fmt.Errorf("duplicate key %v for list SwitchControl", key)
    	}
    
    	t.SwitchControl[key] = &TapiCommon_Context_ConnectivityContext_Connection_SwitchControl{
    		Uuid: &Uuid,
    	}
    
    	return t.SwitchControl[key], nil
    }
    
    // ΛListKeyMap returns the keys of the TapiCommon_Context_ConnectivityContext_Connection struct, which is a YANG list entry.
    func (t *TapiCommon_Context_ConnectivityContext_Connection) ΛListKeyMap() (map[string]interface{}, error) {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	if t.Uuid == nil {
    		return nil, fmt.Errorf("nil value for key Uuid")
    	}
    
    	return map[string]interface{}{
    		"uuid": *t.Uuid,
    	}, nil
    }
    
    // Validate validates s against the YANG schema corresponding to its type.
    
    func (t *TapiCommon_Context_ConnectivityContext_Connection) Validate(opts ...ygot.ValidationOption) error {
    	if err := ytypes.Validate(SchemaTree["TapiCommon_Context_ConnectivityContext_Connection"], t, opts...); err != nil {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		return err
    	}
    	return nil
    }
    
    // ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
    // that are included in the generated code.
    
    func (t *TapiCommon_Context_ConnectivityContext_Connection) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    
    
    // TapiCommon_Context_ConnectivityContext_Connection_BoundingNode represents the /tapi-common/context/connectivity-context/connection/bounding-node YANG schema element.
    type TapiCommon_Context_ConnectivityContext_Connection_BoundingNode struct {
    	NodeUuid	*string	`path:"node-uuid" module:"tapi-connectivity"`
    	TopologyUuid	*string	`path:"topology-uuid" module:"tapi-connectivity"`
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    }
    
    
    // IsYANGGoStruct ensures that TapiCommon_Context_ConnectivityContext_Connection_BoundingNode implements the yang.GoStruct
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    // interface. This allows functions that need to handle this struct to
    // identify it as being generated by ygen.
    
    func (*TapiCommon_Context_ConnectivityContext_Connection_BoundingNode) IsYANGGoStruct() {}
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    // Validate validates s against the YANG schema corresponding to its type.
    
    func (t *TapiCommon_Context_ConnectivityContext_Connection_BoundingNode) Validate(opts ...ygot.ValidationOption) error {
    	if err := ytypes.Validate(SchemaTree["TapiCommon_Context_ConnectivityContext_Connection_BoundingNode"], t, opts...); err != nil {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		return err
    	}
    	return nil
    }
    
    // ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
    // that are included in the generated code.
    
    func (t *TapiCommon_Context_ConnectivityContext_Connection_BoundingNode) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    
    
    // TapiCommon_Context_ConnectivityContext_Connection_ConnectionEndPoint represents the /tapi-common/context/connectivity-context/connection/connection-end-point YANG schema element.
    type TapiCommon_Context_ConnectivityContext_Connection_ConnectionEndPoint struct {
    	ConnectionEndPointUuid	*string	`path:"connection-end-point-uuid" module:"tapi-connectivity"`
    	NodeEdgePointUuid	*string	`path:"node-edge-point-uuid" module:"tapi-connectivity"`
    	NodeUuid	*string	`path:"node-uuid" module:"tapi-connectivity"`
    	TopologyUuid	*string	`path:"topology-uuid" module:"tapi-connectivity"`
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    }
    
    
    // IsYANGGoStruct ensures that TapiCommon_Context_ConnectivityContext_Connection_ConnectionEndPoint implements the yang.GoStruct
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    // interface. This allows functions that need to handle this struct to
    // identify it as being generated by ygen.
    
    func (*TapiCommon_Context_ConnectivityContext_Connection_ConnectionEndPoint) IsYANGGoStruct() {}
    
    // ΛListKeyMap returns the keys of the TapiCommon_Context_ConnectivityContext_Connection_ConnectionEndPoint struct, which is a YANG list entry.
    func (t *TapiCommon_Context_ConnectivityContext_Connection_ConnectionEndPoint) ΛListKeyMap() (map[string]interface{}, error) {
    	if t.ConnectionEndPointUuid == nil {
    		return nil, fmt.Errorf("nil value for key ConnectionEndPointUuid")
    	}
    
    	if t.NodeEdgePointUuid == nil {
    		return nil, fmt.Errorf("nil value for key NodeEdgePointUuid")
    	}
    
    	if t.NodeUuid == nil {
    		return nil, fmt.Errorf("nil value for key NodeUuid")
    	}
    
    	if t.TopologyUuid == nil {
    		return nil, fmt.Errorf("nil value for key TopologyUuid")
    	}
    
    	return map[string]interface{}{
    		"connection-end-point-uuid": *t.ConnectionEndPointUuid,
    		"node-edge-point-uuid": *t.NodeEdgePointUuid,
    		"node-uuid": *t.NodeUuid,
    		"topology-uuid": *t.TopologyUuid,
    	}, nil
    }
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    // Validate validates s against the YANG schema corresponding to its type.
    
    func (t *TapiCommon_Context_ConnectivityContext_Connection_ConnectionEndPoint) Validate(opts ...ygot.ValidationOption) error {
    	if err := ytypes.Validate(SchemaTree["TapiCommon_Context_ConnectivityContext_Connection_ConnectionEndPoint"], t, opts...); err != nil {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		return err
    	}
    	return nil
    }
    
    // ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
    // that are included in the generated code.
    
    func (t *TapiCommon_Context_ConnectivityContext_Connection_ConnectionEndPoint) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    
    
    // TapiCommon_Context_ConnectivityContext_Connection_LowerConnection represents the /tapi-common/context/connectivity-context/connection/lower-connection YANG schema element.
    type TapiCommon_Context_ConnectivityContext_Connection_LowerConnection struct {
    	ConnectionUuid	*string	`path:"connection-uuid" module:"tapi-connectivity"`
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    }
    
    
    // IsYANGGoStruct ensures that TapiCommon_Context_ConnectivityContext_Connection_LowerConnection implements the yang.GoStruct
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    // interface. This allows functions that need to handle this struct to
    // identify it as being generated by ygen.
    
    func (*TapiCommon_Context_ConnectivityContext_Connection_LowerConnection) IsYANGGoStruct() {}
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    
    // ΛListKeyMap returns the keys of the TapiCommon_Context_ConnectivityContext_Connection_LowerConnection struct, which is a YANG list entry.
    func (t *TapiCommon_Context_ConnectivityContext_Connection_LowerConnection) ΛListKeyMap() (map[string]interface{}, error) {
    	if t.ConnectionUuid == nil {
    		return nil, fmt.Errorf("nil value for key ConnectionUuid")
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	}
    
    	return map[string]interface{}{
    
    		"connection-uuid": *t.ConnectionUuid,
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	}, nil
    }
    
    // Validate validates s against the YANG schema corresponding to its type.
    
    func (t *TapiCommon_Context_ConnectivityContext_Connection_LowerConnection) Validate(opts ...ygot.ValidationOption) error {
    	if err := ytypes.Validate(SchemaTree["TapiCommon_Context_ConnectivityContext_Connection_LowerConnection"], t, opts...); err != nil {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		return err
    	}
    	return nil
    }
    
    // ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
    // that are included in the generated code.
    
    func (t *TapiCommon_Context_ConnectivityContext_Connection_LowerConnection) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    
    
    // TapiCommon_Context_ConnectivityContext_Connection_Name represents the /tapi-common/context/connectivity-context/connection/name YANG schema element.
    type TapiCommon_Context_ConnectivityContext_Connection_Name struct {
    	Value	*string	`path:"value" module:"tapi-connectivity"`
    	ValueName	*string	`path:"value-name" module:"tapi-connectivity"`
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    }
    
    
    // IsYANGGoStruct ensures that TapiCommon_Context_ConnectivityContext_Connection_Name implements the yang.GoStruct
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    // interface. This allows functions that need to handle this struct to
    // identify it as being generated by ygen.
    
    func (*TapiCommon_Context_ConnectivityContext_Connection_Name) IsYANGGoStruct() {}
    
    // ΛListKeyMap returns the keys of the TapiCommon_Context_ConnectivityContext_Connection_Name struct, which is a YANG list entry.
    func (t *TapiCommon_Context_ConnectivityContext_Connection_Name) ΛListKeyMap() (map[string]interface{}, error) {
    	if t.ValueName == nil {
    		return nil, fmt.Errorf("nil value for key ValueName")
    	}
    
    	return map[string]interface{}{
    		"value-name": *t.ValueName,
    	}, nil
    }
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    // Validate validates s against the YANG schema corresponding to its type.
    
    func (t *TapiCommon_Context_ConnectivityContext_Connection_Name) Validate(opts ...ygot.ValidationOption) error {
    	if err := ytypes.Validate(SchemaTree["TapiCommon_Context_ConnectivityContext_Connection_Name"], t, opts...); err != nil {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		return err
    	}
    	return nil
    }
    
    // ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
    // that are included in the generated code.
    
    func (t *TapiCommon_Context_ConnectivityContext_Connection_Name) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    
    
    // TapiCommon_Context_ConnectivityContext_Connection_Route represents the /tapi-common/context/connectivity-context/connection/route YANG schema element.
    type TapiCommon_Context_ConnectivityContext_Connection_Route struct {
    	ConnectionEndPoint	map[TapiCommon_Context_ConnectivityContext_Connection_Route_ConnectionEndPoint_Key]*TapiCommon_Context_ConnectivityContext_Connection_Route_ConnectionEndPoint	`path:"connection-end-point" module:"tapi-connectivity"`
    	LocalId	*string	`path:"local-id" module:"tapi-connectivity"`
    	Name	map[string]*TapiCommon_Context_ConnectivityContext_Connection_Route_Name	`path:"name" module:"tapi-connectivity"`
    	ResilienceRoute	*TapiCommon_Context_ConnectivityContext_Connection_Route_ResilienceRoute	`path:"resilience-route" module:"tapi-connectivity"`
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    }
    
    
    // IsYANGGoStruct ensures that TapiCommon_Context_ConnectivityContext_Connection_Route implements the yang.GoStruct
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    // interface. This allows functions that need to handle this struct to
    // identify it as being generated by ygen.
    
    func (*TapiCommon_Context_ConnectivityContext_Connection_Route) IsYANGGoStruct() {}
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    
    // TapiCommon_Context_ConnectivityContext_Connection_Route_ConnectionEndPoint_Key represents the key for list ConnectionEndPoint of element /tapi-common/context/connectivity-context/connection/route.
    type TapiCommon_Context_ConnectivityContext_Connection_Route_ConnectionEndPoint_Key struct {
    	TopologyUuid	string	`path:"topology-uuid"`
    	NodeUuid	string	`path:"node-uuid"`
    	NodeEdgePointUuid	string	`path:"node-edge-point-uuid"`
    	ConnectionEndPointUuid	string	`path:"connection-end-point-uuid"`
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    }
    
    
    // NewConnectionEndPoint creates a new entry in the ConnectionEndPoint list of the
    // TapiCommon_Context_ConnectivityContext_Connection_Route struct. The keys of the list are populated from the input
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    // arguments.
    
    func (t *TapiCommon_Context_ConnectivityContext_Connection_Route) NewConnectionEndPoint(TopologyUuid string, NodeUuid string, NodeEdgePointUuid string, ConnectionEndPointUuid string) (*TapiCommon_Context_ConnectivityContext_Connection_Route_ConnectionEndPoint, error){
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    	// Initialise the list within the receiver struct if it has not already been
    	// created.
    
    	if t.ConnectionEndPoint == nil {
    		t.ConnectionEndPoint = make(map[TapiCommon_Context_ConnectivityContext_Connection_Route_ConnectionEndPoint_Key]*TapiCommon_Context_ConnectivityContext_Connection_Route_ConnectionEndPoint)
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	}
    
    
    	key := TapiCommon_Context_ConnectivityContext_Connection_Route_ConnectionEndPoint_Key{
    		TopologyUuid: TopologyUuid,
    		NodeUuid: NodeUuid,
    		NodeEdgePointUuid: NodeEdgePointUuid,
    		ConnectionEndPointUuid: ConnectionEndPointUuid,
    	}
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    	// Ensure that this key has not already been used in the
    	// list. Keyed YANG lists do not allow duplicate keys to
    	// be created.
    
    	if _, ok := t.ConnectionEndPoint[key]; ok {
    		return nil, fmt.Errorf("duplicate key %v for list ConnectionEndPoint", key)
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	}
    
    
    	t.ConnectionEndPoint[key] = &TapiCommon_Context_ConnectivityContext_Connection_Route_ConnectionEndPoint{
    		TopologyUuid: &TopologyUuid,
    		NodeUuid: &NodeUuid,
    		NodeEdgePointUuid: &NodeEdgePointUuid,
    		ConnectionEndPointUuid: &ConnectionEndPointUuid,
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	}
    
    
    	return t.ConnectionEndPoint[key], nil
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    }
    
    // NewName creates a new entry in the Name list of the
    
    // TapiCommon_Context_ConnectivityContext_Connection_Route struct. The keys of the list are populated from the input
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    // arguments.
    
    func (t *TapiCommon_Context_ConnectivityContext_Connection_Route) NewName(ValueName string) (*TapiCommon_Context_ConnectivityContext_Connection_Route_Name, error){
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    	// Initialise the list within the receiver struct if it has not already been
    	// created.
    	if t.Name == nil {
    
    		t.Name = make(map[string]*TapiCommon_Context_ConnectivityContext_Connection_Route_Name)
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	}
    
    	key := ValueName
    
    	// Ensure that this key has not already been used in the
    	// list. Keyed YANG lists do not allow duplicate keys to
    	// be created.
    	if _, ok := t.Name[key]; ok {
    		return nil, fmt.Errorf("duplicate key %v for list Name", key)
    	}
    
    
    	t.Name[key] = &TapiCommon_Context_ConnectivityContext_Connection_Route_Name{
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		ValueName: &ValueName,
    	}
    
    	return t.Name[key], nil
    }
    
    
    // ΛListKeyMap returns the keys of the TapiCommon_Context_ConnectivityContext_Connection_Route struct, which is a YANG list entry.
    func (t *TapiCommon_Context_ConnectivityContext_Connection_Route) ΛListKeyMap() (map[string]interface{}, error) {
    	if t.LocalId == nil {
    		return nil, fmt.Errorf("nil value for key LocalId")
    	}
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    
    	return map[string]interface{}{
    		"local-id": *t.LocalId,
    	}, nil
    }
    
    // Validate validates s against the YANG schema corresponding to its type.
    func (t *TapiCommon_Context_ConnectivityContext_Connection_Route) Validate(opts ...ygot.ValidationOption) error {
    	if err := ytypes.Validate(SchemaTree["TapiCommon_Context_ConnectivityContext_Connection_Route"], t, opts...); err != nil {
    		return err
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	}
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    
    // ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
    // that are included in the generated code.
    func (t *TapiCommon_Context_ConnectivityContext_Connection_Route) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    
    
    // TapiCommon_Context_ConnectivityContext_Connection_Route_ConnectionEndPoint represents the /tapi-common/context/connectivity-context/connection/route/connection-end-point YANG schema element.
    type TapiCommon_Context_ConnectivityContext_Connection_Route_ConnectionEndPoint struct {
    	ConnectionEndPointUuid	*string	`path:"connection-end-point-uuid" module:"tapi-connectivity"`
    	NodeEdgePointUuid	*string	`path:"node-edge-point-uuid" module:"tapi-connectivity"`
    	NodeUuid	*string	`path:"node-uuid" module:"tapi-connectivity"`
    	TopologyUuid	*string	`path:"topology-uuid" module:"tapi-connectivity"`
    }
    
    // IsYANGGoStruct ensures that TapiCommon_Context_ConnectivityContext_Connection_Route_ConnectionEndPoint implements the yang.GoStruct
    // interface. This allows functions that need to handle this struct to
    // identify it as being generated by ygen.
    func (*TapiCommon_Context_ConnectivityContext_Connection_Route_ConnectionEndPoint) IsYANGGoStruct() {}
    
    // ΛListKeyMap returns the keys of the TapiCommon_Context_ConnectivityContext_Connection_Route_ConnectionEndPoint struct, which is a YANG list entry.
    func (t *TapiCommon_Context_ConnectivityContext_Connection_Route_ConnectionEndPoint) ΛListKeyMap() (map[string]interface{}, error) {
    	if t.ConnectionEndPointUuid == nil {
    		return nil, fmt.Errorf("nil value for key ConnectionEndPointUuid")
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	}
    
    
    	if t.NodeEdgePointUuid == nil {
    		return nil, fmt.Errorf("nil value for key NodeEdgePointUuid")
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	}
    
    
    	if t.NodeUuid == nil {
    		return nil, fmt.Errorf("nil value for key NodeUuid")
    	}
    
    	if t.TopologyUuid == nil {
    		return nil, fmt.Errorf("nil value for key TopologyUuid")
    	}
    
    	return map[string]interface{}{
    		"connection-end-point-uuid": *t.ConnectionEndPointUuid,
    		"node-edge-point-uuid": *t.NodeEdgePointUuid,
    		"node-uuid": *t.NodeUuid,
    		"topology-uuid": *t.TopologyUuid,
    	}, nil
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    }
    
    // Validate validates s against the YANG schema corresponding to its type.
    
    func (t *TapiCommon_Context_ConnectivityContext_Connection_Route_ConnectionEndPoint) Validate(opts ...ygot.ValidationOption) error {
    	if err := ytypes.Validate(SchemaTree["TapiCommon_Context_ConnectivityContext_Connection_Route_ConnectionEndPoint"], t, opts...); err != nil {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		return err
    	}
    	return nil
    }
    
    // ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
    // that are included in the generated code.
    
    func (t *TapiCommon_Context_ConnectivityContext_Connection_Route_ConnectionEndPoint) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    
    
    // TapiCommon_Context_ConnectivityContext_Connection_Route_Name represents the /tapi-common/context/connectivity-context/connection/route/name YANG schema element.
    type TapiCommon_Context_ConnectivityContext_Connection_Route_Name struct {
    	Value	*string	`path:"value" module:"tapi-connectivity"`
    	ValueName	*string	`path:"value-name" module:"tapi-connectivity"`
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    }
    
    
    // IsYANGGoStruct ensures that TapiCommon_Context_ConnectivityContext_Connection_Route_Name implements the yang.GoStruct
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    // interface. This allows functions that need to handle this struct to
    // identify it as being generated by ygen.
    
    func (*TapiCommon_Context_ConnectivityContext_Connection_Route_Name) IsYANGGoStruct() {}
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    
    // ΛListKeyMap returns the keys of the TapiCommon_Context_ConnectivityContext_Connection_Route_Name struct, which is a YANG list entry.
    func (t *TapiCommon_Context_ConnectivityContext_Connection_Route_Name) ΛListKeyMap() (map[string]interface{}, error) {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	if t.ValueName == nil {
    		return nil, fmt.Errorf("nil value for key ValueName")
    	}
    
    	return map[string]interface{}{
    		"value-name": *t.ValueName,
    	}, nil
    }
    
    // Validate validates s against the YANG schema corresponding to its type.
    
    func (t *TapiCommon_Context_ConnectivityContext_Connection_Route_Name) Validate(opts ...ygot.ValidationOption) error {
    	if err := ytypes.Validate(SchemaTree["TapiCommon_Context_ConnectivityContext_Connection_Route_Name"], t, opts...); err != nil {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		return err
    	}
    	return nil
    }
    
    // ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
    // that are included in the generated code.
    
    func (t *TapiCommon_Context_ConnectivityContext_Connection_Route_Name) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    
    
    // TapiCommon_Context_ConnectivityContext_Connection_Route_ResilienceRoute represents the /tapi-common/context/connectivity-context/connection/route/resilience-route YANG schema element.
    type TapiCommon_Context_ConnectivityContext_Connection_Route_ResilienceRoute struct {
    	Priority	*uint64	`path:"priority" module:"tapi-connectivity"`
    	RouteState	E_TapiConnectivity_RouteState	`path:"route-state" module:"tapi-connectivity"`
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    }
    
    
    // IsYANGGoStruct ensures that TapiCommon_Context_ConnectivityContext_Connection_Route_ResilienceRoute implements the yang.GoStruct
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    // interface. This allows functions that need to handle this struct to
    // identify it as being generated by ygen.
    
    func (*TapiCommon_Context_ConnectivityContext_Connection_Route_ResilienceRoute) IsYANGGoStruct() {}
    
    // Validate validates s against the YANG schema corresponding to its type.
    func (t *TapiCommon_Context_ConnectivityContext_Connection_Route_ResilienceRoute) Validate(opts ...ygot.ValidationOption) error {
    	if err := ytypes.Validate(SchemaTree["TapiCommon_Context_ConnectivityContext_Connection_Route_ResilienceRoute"], t, opts...); err != nil {
    		return err
    	}
    	return nil
    }
    
    // ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
    // that are included in the generated code.
    func (t *TapiCommon_Context_ConnectivityContext_Connection_Route_ResilienceRoute) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }
    
    
    // TapiCommon_Context_ConnectivityContext_Connection_SupportedClientLink represents the /tapi-common/context/connectivity-context/connection/supported-client-link YANG schema element.
    type TapiCommon_Context_ConnectivityContext_Connection_SupportedClientLink struct {
    	LinkUuid	*string	`path:"link-uuid" module:"tapi-connectivity"`
    	TopologyUuid	*string	`path:"topology-uuid" module:"tapi-connectivity"`
    }
    
    // IsYANGGoStruct ensures that TapiCommon_Context_ConnectivityContext_Connection_SupportedClientLink implements the yang.GoStruct
    // interface. This allows functions that need to handle this struct to
    // identify it as being generated by ygen.
    func (*TapiCommon_Context_ConnectivityContext_Connection_SupportedClientLink) IsYANGGoStruct() {}
    
    // ΛListKeyMap returns the keys of the TapiCommon_Context_ConnectivityContext_Connection_SupportedClientLink struct, which is a YANG list entry.
    func (t *TapiCommon_Context_ConnectivityContext_Connection_SupportedClientLink) ΛListKeyMap() (map[string]interface{}, error) {
    	if t.LinkUuid == nil {
    		return nil, fmt.Errorf("nil value for key LinkUuid")
    	}
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    	if t.TopologyUuid == nil {
    		return nil, fmt.Errorf("nil value for key TopologyUuid")
    	}
    
    	return map[string]interface{}{
    
    		"link-uuid": *t.LinkUuid,
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		"topology-uuid": *t.TopologyUuid,
    	}, nil
    }
    
    // Validate validates s against the YANG schema corresponding to its type.
    
    func (t *TapiCommon_Context_ConnectivityContext_Connection_SupportedClientLink) Validate(opts ...ygot.ValidationOption) error {
    	if err := ytypes.Validate(SchemaTree["TapiCommon_Context_ConnectivityContext_Connection_SupportedClientLink"], t, opts...); err != nil {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		return err
    	}
    	return nil
    }
    
    // ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types
    // that are included in the generated code.
    
    func (t *TapiCommon_Context_ConnectivityContext_Connection_SupportedClientLink) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes }
    
    
    // TapiCommon_Context_ConnectivityContext_Connection_SwitchControl represents the /tapi-common/context/connectivity-context/connection/switch-control YANG schema element.
    type TapiCommon_Context_ConnectivityContext_Connection_SwitchControl struct {
    	FaultConditionDetermination	E_TapiConnectivity_FaultConditionDetermination	`path:"fault-condition-determination" module:"tapi-connectivity"`
    	HoldOffTime	*uint64	`path:"hold-off-time" module:"tapi-connectivity"`
    	IsCoordinatedSwitchingBothEnds	*bool	`path:"is-coordinated-switching-both-ends" module:"tapi-connectivity"`
    	IsFrozen	*bool	`path:"is-frozen" module:"tapi-connectivity"`
    	IsLockOut	*bool	`path:"is-lock-out" module:"tapi-connectivity"`
    	MaxSwitchTimes	*uint64	`path:"max-switch-times" module:"tapi-connectivity"`
    	Name	map[string]*TapiCommon_Context_ConnectivityContext_Connection_SwitchControl_Name	`path:"name" module:"tapi-connectivity"`
    	PreferredRestorationLayer	[]E_TapiConnectivity_LayerProtocolName	`path:"preferred-restoration-layer" module:"tapi-connectivity"`
    	ResilienceType	*TapiCommon_Context_ConnectivityContext_Connection_SwitchControl_ResilienceType	`path:"resilience-type" module:"tapi-connectivity"`
    	ResiliencyRouteConstraint	map[string]*TapiCommon_Context_ConnectivityContext_Connection_SwitchControl_ResiliencyRouteConstraint	`path:"resiliency-route-constraint" module:"tapi-connectivity"`
    	RestorationCoordinateType	E_TapiConnectivity_CoordinateType	`path:"restoration-coordinate-type" module:"tapi-connectivity"`
    	RestorePriority	*uint64	`path:"restore-priority" module:"tapi-connectivity"`
    	ReversionMode	E_TapiConnectivity_ReversionMode	`path:"reversion-mode" module:"tapi-connectivity"`
    	SelectionControl	E_TapiConnectivity_SelectionControl	`path:"selection-control" module:"tapi-connectivity"`
    	SubSwitchControl	map[TapiCommon_Context_ConnectivityContext_Connection_SwitchControl_SubSwitchControl_Key]*TapiCommon_Context_ConnectivityContext_Connection_SwitchControl_SubSwitchControl	`path:"sub-switch-control" module:"tapi-connectivity"`
    	Switch	map[string]*TapiCommon_Context_ConnectivityContext_Connection_SwitchControl_Switch	`path:"switch" module:"tapi-connectivity"`
    	Uuid	*string	`path:"uuid" module:"tapi-connectivity"`
    	WaitToRevertTime	*uint64	`path:"wait-to-revert-time" module:"tapi-connectivity"`
    }
    
    // IsYANGGoStruct ensures that TapiCommon_Context_ConnectivityContext_Connection_SwitchControl implements the yang.GoStruct
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    // interface. This allows functions that need to handle this struct to
    // identify it as being generated by ygen.
    
    func (*TapiCommon_Context_ConnectivityContext_Connection_SwitchControl) IsYANGGoStruct() {}
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    
    // TapiCommon_Context_ConnectivityContext_Connection_SwitchControl_SubSwitchControl_Key represents the key for list SubSwitchControl of element /tapi-common/context/connectivity-context/connection/switch-control.
    type TapiCommon_Context_ConnectivityContext_Connection_SwitchControl_SubSwitchControl_Key struct {
    	ConnectionUuid	string	`path:"connection-uuid"`
    	SwitchControlUuid	string	`path:"switch-control-uuid"`
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    }
    
    
    // NewName creates a new entry in the Name list of the
    // TapiCommon_Context_ConnectivityContext_Connection_SwitchControl struct. The keys of the list are populated from the input
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    // arguments.
    
    func (t *TapiCommon_Context_ConnectivityContext_Connection_SwitchControl) NewName(ValueName string) (*TapiCommon_Context_ConnectivityContext_Connection_SwitchControl_Name, error){
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    	// Initialise the list within the receiver struct if it has not already been
    	// created.
    
    	if t.Name == nil {
    		t.Name = make(map[string]*TapiCommon_Context_ConnectivityContext_Connection_SwitchControl_Name)
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	}
    
    
    	key := ValueName
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    	// Ensure that this key has not already been used in the
    	// list. Keyed YANG lists do not allow duplicate keys to
    	// be created.
    
    	if _, ok := t.Name[key]; ok {
    		return nil, fmt.Errorf("duplicate key %v for list Name", key)
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	}
    
    
    	t.Name[key] = &TapiCommon_Context_ConnectivityContext_Connection_SwitchControl_Name{
    		ValueName: &ValueName,
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	}
    
    
    	return t.Name[key], nil
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    }
    
    
    // NewResiliencyRouteConstraint creates a new entry in the ResiliencyRouteConstraint list of the
    // TapiCommon_Context_ConnectivityContext_Connection_SwitchControl struct. The keys of the list are populated from the input
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    // arguments.
    
    func (t *TapiCommon_Context_ConnectivityContext_Connection_SwitchControl) NewResiliencyRouteConstraint(LocalId string) (*TapiCommon_Context_ConnectivityContext_Connection_SwitchControl_ResiliencyRouteConstraint, error){
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    	// Initialise the list within the receiver struct if it has not already been
    	// created.
    
    	if t.ResiliencyRouteConstraint == nil {
    		t.ResiliencyRouteConstraint = make(map[string]*TapiCommon_Context_ConnectivityContext_Connection_SwitchControl_ResiliencyRouteConstraint)
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	}
    
    
    	key := LocalId
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    	// Ensure that this key has not already been used in the
    	// list. Keyed YANG lists do not allow duplicate keys to
    	// be created.
    
    	if _, ok := t.ResiliencyRouteConstraint[key]; ok {
    		return nil, fmt.Errorf("duplicate key %v for list ResiliencyRouteConstraint", key)
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	}
    
    
    	t.ResiliencyRouteConstraint[key] = &TapiCommon_Context_ConnectivityContext_Connection_SwitchControl_ResiliencyRouteConstraint{
    		LocalId: &LocalId,
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	}
    
    
    	return t.ResiliencyRouteConstraint[key], nil
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    }
    
    
    // NewSubSwitchControl creates a new entry in the SubSwitchControl list of the
    // TapiCommon_Context_ConnectivityContext_Connection_SwitchControl struct. The keys of the list are populated from the input
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    // arguments.