#
#    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.
#
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: eventing-sources-rocketmq-controller
rules:

- apiGroups:
  - sources.eventing.knative.dev
  resources:
  - rocketmqsources
  verbs: &everything
  - get
  - list
  - watch
  - create
  - update
  - patch
  - delete


- apiGroups:
  - apps
  resources:
  - deployments
  verbs: *everything

- apiGroups:
  - ""
  resources:
  - secrets
  verbs: &readOnly
  - get
  - list
  - watch

- apiGroups:
  - eventing.knative.dev
  resources:
  - eventtypes
  verbs: *everything

# Source statuses update
- apiGroups:
  - sources.eventing.knative.dev
  resources:
  - rocketmqsources/status
  verbs:
  - get
  - update
  - patch
