# 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.

# https://cwiki.apache.org/confluence/display/INFRA/git+-+.asf.yaml+features
---
github:
  description: "Apache CloudStack is an opensource Infrastructure as a Service (IaaS) cloud computing platform"
  homepage: https://cloudstack.apache.org/
  labels:
    - iaas
    - cloud
    - cloudstack
    - infrastructure
    - java
    - python
    - kvm
    - libvirt
    - vsphere
    - vmware
    - xenserver
    - xcp-ng
    - orchestration
    - virtualization
    - virtual-machine
    - kubernetes

  features:
    wiki: true
    issues: true
    discussions: true
    projects: true

  enabled_merge_buttons:
    merge: false
    squash: true
    rebase: false

  collaborators:
    - acs-robot
    - kiranchavala
    - rajujith
    - alexandremattioli
    - vishesh92
    - GaOrtiga
    - SadiJr
    - winterhazel
    - rp-

  protected_branches: ~

notifications:
  commits:      commits@cloudstack.apache.org
  issues:       commits@cloudstack.apache.org
  pullrequests: commits@cloudstack.apache.org
  discussions:  users@cloudstack.apache.org
