RIFT OSM R1 Initial Submission
[osm/SO.git] / rwlaunchpad / plugins / rwautoscaler / rift / tasklets / rwautoscaler / scaling_operation.py
1
2 #
3 # Copyright 2016 RIFT.IO Inc
4 #
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
8 #
9 # http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16 #
17
18 import abc
19
20 def get_operation(operation):
21
22 op_map = {"AND": AndScalingOperation(),
23 "OR": OrScalingOperation()}
24
25 return op_map[operation]
26
27
28 class ScalingOperation:
29 @abc.abstractmethod
30 def __call__(self, statuses):
31 pass
32
33
34 class AndScalingOperation():
35 def __call__(self, statuses):
36 return all(statuses)
37
38
39 class OrScalingOperation():
40 def __call__(self, statuses):
41 return any(statuses)