1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- /*
- Copyright 2023 The Kubernetes Authors.
- 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.
- */
- package cache
- import (
- "k8s.io/apimachinery/pkg/types"
- )
- // ObjectName is a reference to an object of some implicit kind
- type ObjectName struct {
- Namespace string
- Name string
- }
- // NewObjectName constructs a new one
- func NewObjectName(namespace, name string) ObjectName {
- return ObjectName{Namespace: namespace, Name: name}
- }
- // Parts is the inverse of the constructor
- func (objName ObjectName) Parts() (namespace, name string) {
- return objName.Namespace, objName.Name
- }
- // String returns the standard string encoding,
- // which is designed to match the historical behavior of MetaNamespaceKeyFunc.
- // Note this behavior is different from the String method of types.NamespacedName.
- func (objName ObjectName) String() string {
- if len(objName.Namespace) > 0 {
- return objName.Namespace + "/" + objName.Name
- }
- return objName.Name
- }
- // ParseObjectName tries to parse the standard encoding
- func ParseObjectName(str string) (ObjectName, error) {
- var objName ObjectName
- var err error
- objName.Namespace, objName.Name, err = SplitMetaNamespaceKey(str)
- return objName, err
- }
- // NamespacedNameAsObjectName rebrands the given NamespacedName as an ObjectName
- func NamespacedNameAsObjectName(nn types.NamespacedName) ObjectName {
- return NewObjectName(nn.Namespace, nn.Name)
- }
- // AsNamespacedName rebrands as a NamespacedName
- func (objName ObjectName) AsNamespacedName() types.NamespacedName {
- return types.NamespacedName{Namespace: objName.Namespace, Name: objName.Name}
- }
|