8f68f1ce创建于 2025年11月17日历史提交
# distutils: language = c++
# coding=UTF-8
# Copyright (c) Huawei Technologies Co., Ltd. 2025. All rights reserved.
#
# 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.

from libcpp cimport bool
from libcpp.list cimport list
from libcpp.memory cimport shared_ptr
from libcpp.string cimport string
from libcpp.vector cimport vector

cdef extern from "src/libruntime/fsclient/protobuf/common.pb.h" nogil:
    cdef cppclass PBAffinity "::common::Affinity"
    cdef cppclass PBInstanceAffinity "::common::InstanceAffinity"
    cdef cppclass CLabelMatchExpression "::common::LabelMatchExpression"

cdef extern from "src/dto/affinity.h" nogil:
    cdef cppclass CLabelOperator "YR::Libruntime::LabelOperator":
        CLabelOperator(const string &type)
        string GetOperatorType() const
        string GetKey() const
        list[string] GetValues() const
        size_t GetLabelOperatorHash() const
        void SetKey(string key)
        void SetValues(list[string] values)
        CLabelMatchExpression GetLabelMatchExpression()

    cdef cppclass CAffinity "YR::Libruntime::Affinity":
        CAffinity(const string kind, string & type)
        string GetAffinityKind() const
        string GetAffinityType() const
        list[shared_ptr[CLabelOperator]] GetLabelOperators() const
        void SetLabelOperators(list[shared_ptr[CLabelOperator]] operators)
        void SetPreferredPriority(bool preferredPriority)
        void SetRequiredPriority(bool requiredPriority)
        void SetPreferredAntiOtherLabels(bool preferredAntiOtherLabels)
        bool GetPreferredAntiOtherLabels()
        string GetAffinityScope() const
        void SetAffinityScope(const string &affinityScope)
        void UpdateAffinityScope(PBInstanceAffinity *pbInstanceAffinity)
        void UpdatePbAffinity(PBAffinity *pbAffinity)
        size_t GetAffinityHash()
        vector[CLabelMatchExpression] GetLabels()

    cdef cppclass CResourcePreferredAffinity "YR::Libruntime::ResourcePreferredAffinity":
        ResourcePreferredAffinity()
        void UpdatePbAffinity(PBAffinity *pbAffinity)

    cdef cppclass CInstancePreferredAffinity "YR::Libruntime::InstancePreferredAffinity":
        InstancePreferredAffinity()
        void UpdatePbAffinity(PBAffinity *pbAffinity)

    cdef cppclass CResourceRequiredAffinity "YR::Libruntime::ResourceRequiredAffinity":
        ResourceRequiredAffinity()
        void UpdatePbAffinity(PBAffinity *pbAffinity)

    cdef cppclass CInstanceRequiredAffinity "YR::Libruntime::InstanceRequiredAffinity":
        InstanceRequiredAffinity()
        void UpdatePbAffinity(PBAffinity *pbAffinity)

    cdef cppclass CResourcePreferredAntiAffinity "YR::Libruntime::ResourcePreferredAntiAffinity":
        ResourcePreferredAntiAffinity()
        void UpdatePbAffinity(PBAffinity *pbAffinity)

    cdef cppclass CInstancePreferredAntiAffinity "YR::Libruntime::InstancePreferredAntiAffinity":
        InstancePreferredAntiAffinity()
        void UpdatePbAffinity(PBAffinity *pbAffinity)

    cdef cppclass CResourceRequiredAntiAffinity "YR::Libruntime::ResourceRequiredAntiAffinity":
        ResourceRequiredAntiAffinity()
        void UpdatePbAffinity(PBAffinity *pbAffinity)

    cdef cppclass CInstanceRequiredAntiAffinity "YR::Libruntime::InstanceRequiredAntiAffinity":
        InstanceRequiredAntiAffinity()
        void UpdatePbAffinity(PBAffinity *pbAffinity)

    cdef cppclass CLabelInOperator "YR::Libruntime::LabelInOperator":
        CLabelInOperator()
        CLabelMatchExpression GetLabelMatchExpression()

    cdef cppclass CLabelNotInOperator "YR::Libruntime::LabelNotInOperator":
        CLabelNotInOperator()
        CLabelMatchExpression GetLabelMatchExpression()

    cdef cppclass CLabelExistsOperator "YR::Libruntime::LabelExistsOperator":
        CLabelExistsOperator()
        CLabelMatchExpression GetLabelMatchExpression()

    cdef cppclass CLabelDoesNotExistOperator "YR::Libruntime::LabelDoesNotExistOperator":
        CLabelDoesNotExistOperator()
        CLabelMatchExpression GetLabelMatchExpression()