def _check_if_adapted_rules_empty(self): """Delete wrapper policy if all rules in PENDING_DELETE state.""" delete_wrapper_policy = True for os_rule in self.policy_dict['rules']: if os_rule['conditions']: delete_wrapper_policy = False break if delete_wrapper_policy: msg = 'All rules were in a PENDING_DELETE state. Deleting ' \ 'wrapper_policy.' raise PolicyHasNoRules(msg)
def _adapt_policies_to_rules(self): """OS Policies are translated into Rules on the device.""" for policy in self.service['l7policies']: if policy['provisioning_status'] != 'PENDING_DELETE' and \ policy['admin_state_up']: bigip_rule = Rule(policy, self.service, self.folder, self.prefix) self.policy_dict['rules'].append(bigip_rule.__dict__) if not self.policy_dict['rules']: msg = 'All policies were in a PENDING_DELETE or admin_state ' \ 'DOWN. Deleting wrapper_policy.' raise PolicyHasNoRules(msg) self._check_if_adapted_rules_empty()
def _adapt_policy(self): '''Setup the wrapper policy, which will contain rules.''' if not self.service['l7rules']: msg = 'No Rules given to implement. A Policy cannot be attached ' \ 'to a Virtual until it has one or more Rules.' raise PolicyHasNoRules(msg) self.policy_dict = {} self.policy_dict['name'] = 'wrapper_policy' self.policy_dict['partition'] = self.folder self.policy_dict['strategy'] = 'first-match' self.policy_dict['rules'] = [] self.policy_dict['legacy'] = True self.policy_dict['requires'] = ['http'] self.policy_dict['controls'] = ['forwarding'] self._adapt_policies_to_rules()