Update INFO.yaml with new PTL
[testsuite/python-testing-utils.git] / robotframework-onap / ONAPLibrary / VariableKeywords.py
1 # Copyright 2019 AT&T Intellectual Property. All rights reserved.
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 #         http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14
15 from robot.libraries.BuiltIn import BuiltIn, RobotNotRunningError
16 from robot.api.deco import keyword
17 import os
18
19
20 class VariableKeywords(object):
21     """ keyword class for useful keywords for working with varaibles """
22
23     def __init__(self):
24         super(VariableKeywords, self).__init__()
25         self.builtin = BuiltIn()
26
27     @keyword
28     def get_globally_injected_parameters(self):
29         return self._filter_variables_by_key_prefix(self._retrieve_robot_variables(), "GLOBAL_INJECTED_")
30
31     @keyword
32     def get_global_parameters(self):
33         global_variables = self._filter_variables_by_key_prefix(self._retrieve_robot_variables(), "GLOBAL_")
34         # strip out global injected (get those above)
35         for key in self.get_globally_injected_parameters():
36             del global_variables[key]
37         return global_variables
38
39     def _retrieve_robot_variables(self):
40         """ try to get the parameters from the robot keyword, but if it is ran out of robot context,
41         allow an env to be used instead """
42         dictionary = dict()
43         try:
44             dictionary = self.builtin.get_variables(no_decoration=True)
45         except RobotNotRunningError:
46             try:
47                 dictionary = os.environ['GLOBAL_ROBOT_VARIABLES']
48             except KeyError:
49                 pass
50         return dictionary
51
52     @staticmethod
53     def _filter_variables_by_key_prefix(dictionary, partial):
54         matches = dict()
55         for key, val in dictionary.items():
56             if key.startswith(partial):
57                 matches[key] = val
58         return matches