Example #1
0
    def _add_rule_above(self, context, ref_rule_id, edge_id, firewall_rule):
        rule_map = vcns_db.get_vcns_edge_firewallrule_binding(
            context.session, ref_rule_id, edge_id)
        ref_vcns_rule_id = rule_map.rule_vseid
        fwr_req = self._convert_firewall_rule(context, firewall_rule)
        try:
            header = self.vcns.add_firewall_rule_above(edge_id,
                                                       ref_vcns_rule_id,
                                                       fwr_req)[0]
        except vcns_exc.VcnsApiException:
            with excutils.save_and_reraise_exception():
                LOG.exception(
                    _("Failed to add firewall rule above: "
                      "%(rule_id)s with edge_id: %(edge_id)s"), {
                          'rule_id': ref_vcns_rule_id,
                          'edge_id': edge_id
                      })

        objuri = header['location']
        fwr_vseid = objuri[objuri.rfind("/") + 1:]
        map_info = {
            'rule_id': firewall_rule['id'],
            'rule_vseid': fwr_vseid,
            'edge_id': edge_id
        }
        vcns_db.add_vcns_edge_firewallrule_binding(context.session, map_info)
Example #2
0
 def _create_rule_id_mapping(self, context, edge_id, firewall, vcns_fw):
     for rule in vcns_fw['firewallRules']['firewallRules']:
         index = rule['ruleTag'] - 1
         #TODO(linb):a simple filter of the retrived rules which may be
         #created by other operations unintentionally
         if index < len(firewall['firewall_rule_list']):
             rule_vseid = rule['ruleId']
             rule_id = firewall['firewall_rule_list'][index]['id']
             map_info = {
                 'rule_id': rule_id,
                 'rule_vseid': rule_vseid,
                 'edge_id': edge_id
             }
             vcns_db.add_vcns_edge_firewallrule_binding(
                 context.session, map_info)
Example #3
0
 def _create_rule_id_mapping(
     self, context, edge_id, firewall, vcns_fw):
     for rule in vcns_fw['firewallRules']['firewallRules']:
         index = rule['ruleTag'] - 1
         #TODO(linb):a simple filter of the retrived rules which may be
         #created by other operations unintentionally
         if index < len(firewall['firewall_rule_list']):
             rule_vseid = rule['ruleId']
             rule_id = firewall['firewall_rule_list'][index]['id']
             map_info = {
                 'rule_id': rule_id,
                 'rule_vseid': rule_vseid,
                 'edge_id': edge_id
             }
             vcns_db.add_vcns_edge_firewallrule_binding(
                 context.session, map_info)
Example #4
0
    def _add_rule_below(self, context, ref_rule_id, edge_id, firewall_rule):
        rule_map = vcns_db.get_vcns_edge_firewallrule_binding(
            context.session, ref_rule_id, edge_id)
        ref_vcns_rule_id = rule_map.rule_vseid
        fwr_vse_next = self._get_firewall_rule_next(context, edge_id,
                                                    ref_vcns_rule_id)
        fwr_req = self._convert_firewall_rule(context, firewall_rule)
        if fwr_vse_next:
            ref_vcns_rule_id = fwr_vse_next['ruleId']
            try:
                header = self.vcns.add_firewall_rule_above(
                    edge_id, int(ref_vcns_rule_id), fwr_req)[0]
            except vcns_exc.VcnsApiException:
                with excutils.save_and_reraise_exception():
                    LOG.exception(
                        _("Failed to add firewall rule above: "
                          "%(rule_id)s with edge_id: %(edge_id)s"), {
                              'rule_id': ref_vcns_rule_id,
                              'edge_id': edge_id
                          })
        else:
            # append the rule at the bottom
            try:
                header = self.vcns.add_firewall_rule(edge_id, fwr_req)[0]
            except vcns_exc.VcnsApiException:
                with excutils.save_and_reraise_exception():
                    LOG.exception(
                        _("Failed to append a firewall rule"
                          "with edge_id: %s"), edge_id)

        objuri = header['location']
        fwr_vseid = objuri[objuri.rfind("/") + 1:]
        map_info = {
            'rule_id': firewall_rule['id'],
            'rule_vseid': fwr_vseid,
            'edge_id': edge_id
        }
        vcns_db.add_vcns_edge_firewallrule_binding(context.session, map_info)
Example #5
0
    def _add_rule_above(self, context, ref_rule_id, edge_id, firewall_rule):
        rule_map = vcns_db.get_vcns_edge_firewallrule_binding(
            context.session, ref_rule_id, edge_id)
        ref_vcns_rule_id = rule_map.rule_vseid
        fwr_req = self._convert_firewall_rule(context, firewall_rule)
        try:
            header = self.vcns.add_firewall_rule_above(
                edge_id, ref_vcns_rule_id, fwr_req)[0]
        except vcns_exc.VcnsApiException:
            with excutils.save_and_reraise_exception():
                LOG.exception(_("Failed to add firewall rule above: "
                                "%(rule_id)s with edge_id: %(edge_id)s"),
                              {'rule_id': ref_vcns_rule_id,
                               'edge_id': edge_id})

        objuri = header['location']
        fwr_vseid = objuri[objuri.rfind("/") + 1:]
        map_info = {
            'rule_id': firewall_rule['id'],
            'rule_vseid': fwr_vseid,
            'edge_id': edge_id}
        vcns_db.add_vcns_edge_firewallrule_binding(
            context.session, map_info)
Example #6
0
    def _add_rule_below(self, context, ref_rule_id, edge_id, firewall_rule):
        rule_map = vcns_db.get_vcns_edge_firewallrule_binding(
            context.session, ref_rule_id, edge_id)
        ref_vcns_rule_id = rule_map.rule_vseid
        fwr_vse_next = self._get_firewall_rule_next(
            context, edge_id, ref_vcns_rule_id)
        fwr_req = self._convert_firewall_rule(context, firewall_rule)
        if fwr_vse_next:
            ref_vcns_rule_id = fwr_vse_next['ruleId']
            try:
                header = self.vcns.add_firewall_rule_above(
                    edge_id, int(ref_vcns_rule_id), fwr_req)[0]
            except vcns_exc.VcnsApiException:
                with excutils.save_and_reraise_exception():
                    LOG.exception(_("Failed to add firewall rule above: "
                                    "%(rule_id)s with edge_id: %(edge_id)s"),
                                  {'rule_id': ref_vcns_rule_id,
                                   'edge_id': edge_id})
        else:
            # append the rule at the bottom
            try:
                header = self.vcns.add_firewall_rule(
                    edge_id, fwr_req)[0]
            except vcns_exc.VcnsApiException:
                with excutils.save_and_reraise_exception():
                    LOG.exception(_("Failed to append a firewall rule"
                                    "with edge_id: %s"), edge_id)

        objuri = header['location']
        fwr_vseid = objuri[objuri.rfind("/") + 1:]
        map_info = {
            'rule_id': firewall_rule['id'],
            'rule_vseid': fwr_vseid,
            'edge_id': edge_id
        }
        vcns_db.add_vcns_edge_firewallrule_binding(
            context.session, map_info)