|
1 | | -# Copyright (c) 2019, 2022, Oracle and/or its affiliates. |
| 1 | +# Copyright (c) 2019, 2024, Oracle and/or its affiliates. |
2 | 2 | # Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. |
3 | 3 | # |
4 | 4 | # ------------ |
@@ -46,8 +46,9 @@ def is_not_safe_for_online_update(self, model, original_model): |
46 | 46 |
|
47 | 47 | def is_safe_diff(self, model, original_model): |
48 | 48 | """ |
49 | | - Is it a safe difference for update. |
| 49 | + Is the difference safe for update. |
50 | 50 | :param model: diffed model |
| 51 | + :param original_model: original model (partial only contain server and template names) |
51 | 52 | return 0 - always return 0 for V1 |
52 | 53 | """ |
53 | 54 |
|
@@ -103,48 +104,43 @@ def in_forbidden_list(self, model, original_model): |
103 | 104 | for key in [ 'Server', 'ServerTemplate']: |
104 | 105 | # topology.Server|ServerTemplate |
105 | 106 | if model[_TOPOLOGY].has_key(key): |
106 | | - temp = model[_TOPOLOGY][key] |
107 | | - for server in temp: |
| 107 | + # topology.Server or topology.ServerTemplate |
| 108 | + svr_list = model[_TOPOLOGY][key] |
| 109 | + for server in svr_list: |
| 110 | + # topology.Server.item or topology.ServerTemplate.item |
108 | 111 | # cannot delete server or template |
109 | 112 | if server.startswith('!'): |
110 | 113 | return 1 |
111 | 114 | # ok to add |
112 | 115 | if server not in original_model['topology'][key]: |
113 | 116 | continue |
114 | 117 | for not_this in forbidden_network_attributes: |
115 | | - if temp[server].has_key(not_this): |
| 118 | + if svr_list[server].has_key(not_this): |
116 | 119 | return 1 |
117 | | - if temp[server].has_key(_NAP): |
118 | | - nap = temp[server][_NAP] |
119 | | - for n in nap: |
| 120 | + if svr_list[server].has_key(_NAP): |
| 121 | + naps = svr_list[server][_NAP] |
| 122 | + for nap in naps: |
120 | 123 | for not_this in forbidden_network_attributes: |
121 | | - if temp[server].has_key(not_this): |
| 124 | + if svr_list[server][_NAP][nap].has_key(not_this): |
122 | 125 | return 1 |
123 | 126 | # Do not allow any SSL changes |
124 | | - if temp[server].has_key(_SSL): |
| 127 | + if svr_list[server].has_key(_SSL): |
125 | 128 | return 1 |
126 | 129 |
|
127 | 130 | return 0 |
128 | 131 |
|
129 | 132 |
|
130 | 133 | class ModelFileDiffer: |
131 | 134 |
|
132 | | - def eval_file(self, file): |
133 | | - true = True |
134 | | - false = False |
135 | | - fh = open(file, 'r') |
136 | | - content = fh.read() |
137 | | - return eval(content) |
| 135 | + def eval_string(self, string): |
| 136 | + return eval(string) |
138 | 137 |
|
139 | 138 | def compare(self): |
140 | | - original_model = self.eval_file(sys.argv[1]) |
141 | | - # past_dict = self.eval_file(sys.argv[2]) |
| 139 | + original_topology = self.eval_string(sys.argv[1]) |
| 140 | + net_diff = self.eval_string(sys.argv[2]) |
142 | 141 | obj = ModelDiffer() |
143 | | - if os.path.exists('/tmp/diffed_model.json'): |
144 | | - net_diff = self.eval_file('/tmp/diffed_model.json') |
145 | | - else: |
146 | | - net_diff = {} |
147 | | - return obj.is_safe_diff(net_diff, original_model) |
| 142 | + return obj.is_safe_diff(net_diff, original_topology) |
| 143 | + |
148 | 144 |
|
149 | 145 | def debug(format_string, *arguments): |
150 | 146 | if os.environ.has_key('DEBUG_INTROSPECT_JOB'): |
|
0 commit comments