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()