Coverage for manila/scheduler/filters/host.py: 100%

14 statements  

« prev     ^ index     » next       coverage.py v7.11.0, created at 2026-02-18 22:19 +0000

1# Copyright 2021 Cloudification GmbH. 

2# All Rights Reserved. 

3# 

4# Licensed under the Apache License, Version 2.0 (the "License"); you may 

5# not use this file except in compliance with the License. You may obtain 

6# a copy of the License at 

7# 

8# http://www.apache.org/licenses/LICENSE-2.0 

9# 

10# Unless required by applicable law or agreed to in writing, software 

11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 

12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 

13# License for the specific language governing permissions and limitations 

14# under the License. 

15 

16from manila import policy 

17from manila.scheduler.filters import base_host 

18 

19 

20class OnlyHostFilter(base_host.BaseHostFilter): 

21 """Filters Hosts by 'only_host' scheduler_hint.""" 

22 

23 def host_passes(self, host_state, filter_properties): 

24 context = filter_properties['context'] 

25 if not policy.check_is_host_admin(context): 

26 return True 

27 hints = filter_properties.get('scheduler_hints') 

28 if hints is None: 

29 return True 

30 requested_host = hints.get('only_host', None) 

31 if requested_host is None: 

32 return True 

33 # e.g. "only_host=hostname@generic2#GENERIC2" 

34 return host_state.host == requested_host