// - // // ========================LICENSE_START================================= // O-RAN-SC // %% // Copyright (C) 2023: Nordix Foundation // %% // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // ========================LICENSE_END=================================== package dataTypes import ( "encoding/xml" "github.com/confluentinc/confluent-kafka-go/kafka" ) // // Data type for event xml file download type XmlFileEventHeader struct { ProductName string `json:"productName"` VendorName string `json:"vendorName"` Location string `json:"location"` Compression string `json:"compression"` SourceName string `json:"sourceName"` FileFormatType string `json:"fileFormatType"` FileFormatVersion string `json:"fileFormatVersion"` StartEpochMicrosec int64 `json:"startEpochMicrosec"` LastEpochMicrosec int64 `json:"lastEpochMicrosec"` Name string `json:"name"` ChangeIdentifier string `json:"changeIdentifier"` InternalLocation string `json:"internalLocation"` TimeZoneOffset string `json:"timeZoneOffset"` ObjectStoreBucket string `json:"objectStoreBucket"` } // Data types for input xml file type MeasCollecFile struct { XMLName xml.Name `xml:"measCollecFile"` Text string `xml:",chardata"` Xmlns string `xml:"xmlns,attr"` Xsi string `xml:"xsi,attr"` SchemaLocation string `xml:"schemaLocation,attr"` FileHeader struct { Text string `xml:",chardata"` FileFormatVersion string `xml:"fileFormatVersion,attr"` VendorName string `xml:"vendorName,attr"` DnPrefix string `xml:"dnPrefix,attr"` FileSender struct { Text string `xml:",chardata"` LocalDn string `xml:"localDn,attr"` ElementType string `xml:"elementType,attr"` } `xml:"fileSender"` MeasCollec struct { Text string `xml:",chardata"` BeginTime string `xml:"beginTime,attr"` } `xml:"measCollec"` } `xml:"fileHeader"` MeasData struct { Text string `xml:",chardata"` ManagedElement struct { Text string `xml:",chardata"` LocalDn string `xml:"localDn,attr"` SwVersion string `xml:"swVersion,attr"` } `xml:"managedElement"` MeasInfo []struct { Text string `xml:",chardata"` MeasInfoId string `xml:"measInfoId,attr"` Job struct { Text string `xml:",chardata"` JobId string `xml:"jobId,attr"` } `xml:"job"` GranPeriod struct { Text string `xml:",chardata"` Duration string `xml:"duration,attr"` EndTime string `xml:"endTime,attr"` } `xml:"granPeriod"` RepPeriod struct { Text string `xml:",chardata"` Duration string `xml:"duration,attr"` } `xml:"repPeriod"` MeasType []struct { Text string `xml:",chardata"` P string `xml:"p,attr"` } `xml:"measType"` MeasValue []struct { Text string `xml:",chardata"` MeasObjLdn string `xml:"measObjLdn,attr"` R []struct { Text string `xml:",chardata"` P string `xml:"p,attr"` } `xml:"r"` Suspect string `xml:"suspect"` } `xml:"measValue"` } `xml:"measInfo"` } `xml:"measData"` FileFooter struct { Text string `xml:",chardata"` MeasCollec struct { Text string `xml:",chardata"` EndTime string `xml:"endTime,attr"` } `xml:"measCollec"` } `xml:"fileFooter"` } // Splitted in sevreal part to allow add/remove in lists type MeasResults struct { P int `json:"p"` SValue string `json:"sValue"` } type MeasValues struct { MeasObjInstID string `json:"measObjInstId"` SuspectFlag string `json:"suspectFlag"` MeasResultsList []MeasResults `json:"measResults"` } type SMeasTypes struct { SMeasType string `json:"sMeasTypesList"` } type MeasInfoList struct { MeasInfoID struct { SMeasInfoID string `json:"sMeasInfoId"` } `json:"measInfoId"` MeasTypes struct { SMeasTypesList []string `json:"sMeasTypesList"` } `json:"measTypes"` MeasValuesList []MeasValues `json:"measValuesList"` } type PMJsonFile struct { Event struct { CommonEventHeader struct { Domain string `json:"domain"` EventID string `json:"eventId"` Sequence int `json:"sequence"` EventName string `json:"eventName"` SourceName string `json:"sourceName"` ReportingEntityName string `json:"reportingEntityName"` Priority string `json:"priority"` StartEpochMicrosec int64 `json:"startEpochMicrosec"` LastEpochMicrosec int64 `json:"lastEpochMicrosec"` Version string `json:"version"` VesEventListenerVersion string `json:"vesEventListenerVersion"` TimeZoneOffset string `json:"timeZoneOffset"` } `json:"commonEventHeader"` Perf3GppFields struct { Perf3GppFieldsVersion string `json:"perf3gppFieldsVersion"` MeasDataCollection struct { GranularityPeriod int `json:"granularityPeriod"` MeasuredEntityUserName string `json:"measuredEntityUserName"` MeasuredEntityDn string `json:"measuredEntityDn"` MeasuredEntitySoftwareVersion string `json:"measuredEntitySoftwareVersion"` SMeasInfoList []MeasInfoList `json:"measInfoList"` } `json:"measDataCollection"` } `json:"perf3gppFields"` } `json:"event"` } type FileDownloadedEvt struct { Filename string `json:"filename"` } type KafkaPayload struct { Msg *kafka.Message Topic string } // Type for controlling the topic reader type ReaderControl struct { Command string } // Type for controlling the topic writer type WriterControl struct { Command string } // == API Datatypes ==// // Type for supported data types type DataType struct { ID string `json:"id"` KafkaInputTopic string `json:"kafkaInputTopic"` InputJobType string `json:inputJobType` InputJobDefinition struct { KafkaOutputTopic string `json:kafkaOutputTopic` } `json:inputJobDefinition` Ext_job *[]byte Ext_job_created bool Ext_job_id string } // Type for controlling the job type JobControl struct { Command string //Filter Filter } type AppStates int64 var InfoTypes DataTypes // Keep all info type jobs, key == type id var TypeJobs map[string]TypeJobRecord = make(map[string]TypeJobRecord) // Type for an infojob type TypeJobRecord struct { InfoType string InputTopic string Data_in_channel chan *KafkaPayload Reader_control chan ReaderControl Job_control chan JobControl GroupId string ClientId string } type DataTypes struct { ProdDataTypes []DataType `json:"types"` }