# ============LICENSE_START=======================================================
# Copyright (C) 2021-2024 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.
#
# SPDX-License-Identifier: Apache-2.0
# ============LICENSE_END=========================================================

---
project: 'cps'
project_creation_date: '2020-10-27'
lifecycle_state: 'Incubation'
project_category: ''
project_lead: &onap_releng_ptl
    name: 'Toine Siebelink'
    email: 'toine.siebelink@est.tech'
    id: 'ToineSiebelink'
    company: 'Ericsson Software Technology'
    timezone: 'Europe/Dublin'
primary_contact: *onap_releng_ptl
issue_tracking:
    type: 'jira'
    url: 'https://jira.onap.org/projects/CPS'
    key: 'CPS'
mailing_list:
    type: 'groups.io'
    url: 'lists.onap.org'
    tag: '<[sub-project_name]>'
realtime_discussion: ''
meetings:
    - type: 'zoom'
      agenda: 'https://wiki.onap.org/pages/viewpage.action?pageId=111117075'
      url: 'https://zoom.us/j/836561560?pwd=TTZNcFhXTWYxMmZ4SlgzcVZZQXluUT09'
      server: 'n/a'
      channel: 'n/a'
      repeats: 'weekly'
      time: '08:00 America/New_York'
committers:
    - <<: *onap_releng_ptl
    - name: 'Sourabh Sharma'
      email: 'sourabh.sourabh@est.tech'
      company: 'Ericsson Software Technology'
      id: 'sourabh_sourabh'
      timezone: 'Europe/Dublin'
    - name: 'Priyank Maheshwari'
      email: 'priyank.maheshwari@est.tech'
      company: 'Ericsson Software Technology'
      id: 'mpriyank'
      timezone: 'Europe/Dublin'
    - name: 'Lee Anjella Macabuhay'
      email: 'lee.anjella.macabuhay@est.tech'
      company: 'Ericsson Software Technology'
      id: 'emaclee'
      timezone: 'Europe/Dublin'
    - name: 'Daniel Hanrahan'
      email: 'daniel.hanrahan@est.tech'
      company: 'Ericsson Software Technology'
      id: 'danielhanrahan'
      timezone: 'Europe/Dublin'
repositories:
    - cps
tsc:
    approval: 'https://lists.onap.org/g/onap-tsc'
