Beispiel #1
0
 def _get_network_gateway(self, context, gw_id):
     try:
         gw = model_query.get_by_id(context, nsx_models.NetworkGateway,
                                    gw_id)
     except sa_orm_exc.NoResultFound:
         raise GatewayNotFound(gateway_id=gw_id)
     return gw
Beispiel #2
0
 def _get_gateway_device(self, context, device_id):
     try:
         return model_query.get_by_id(context,
                                      nsx_models.NetworkGatewayDevice,
                                      device_id)
     except sa_orm_exc.NoResultFound:
         raise GatewayDeviceNotFound(device_id=device_id)
Beispiel #3
0
 def _get_resource(self, context, resource, resource_id):
     model = resource_model_map[resource]
     try:
         return model_query.get_by_id(context, model, resource_id)
     except exc.NoResultFound:
         raise tagging.TagResourceNotFound(resource=resource,
                                           resource_id=resource_id)
Beispiel #4
0
 def _get_resource(self, context, resource, resource_id):
     model = resource_model_map[resource]
     try:
         return model_query.get_by_id(context, model, resource_id)
     except exc.NoResultFound:
         raise tag_ext.TagResourceNotFound(resource=resource,
                                           resource_id=resource_id)
 def _get_subnet(self, context, id):
     # TODO(slaweq): remove this method when all will be switched to use OVO
     # objects only
     try:
         subnet = model_query.get_by_id(context, models_v2.Subnet, id)
     except exc.NoResultFound:
         raise n_exc.SubnetNotFound(subnet_id=id)
     return subnet
 def _get_subnet(self, context, id):
     # TODO(slaweq): remove this method when all will be switched to use OVO
     # objects only
     try:
         subnet = model_query.get_by_id(context, models_v2.Subnet, id)
     except exc.NoResultFound:
         raise n_exc.SubnetNotFound(subnet_id=id)
     return subnet
 def _get_network(self, context, id):
     try:
         network = model_query.get_by_id(context, models_v2.Network, id)
     except exc.NoResultFound:
         raise n_exc.NetworkNotFound(net_id=id)
     return network
 def _get_port(self, context, id):
     try:
         port = model_query.get_by_id(context, models_v2.Port, id)
     except exc.NoResultFound:
         raise n_exc.PortNotFound(port_id=id)
     return port
Beispiel #9
0
 def _get_qos_queue(self, context, queue_id):
     try:
         return model_query.get_by_id(context, nsx_models.QoSQueue,
                                      queue_id)
     except exc.NoResultFound:
         raise qos.QueueNotFound(id=queue_id)
 def _get_network(self, context, id):
     try:
         network = model_query.get_by_id(context, models_v2.Network, id)
     except exc.NoResultFound:
         raise n_exc.NetworkNotFound(net_id=id)
     return network
Beispiel #11
0
 def _get_subnet(self, context, id):
     try:
         subnet = model_query.get_by_id(context, models_v2.Subnet, id)
     except exc.NoResultFound:
         raise n_exc.SubnetNotFound(subnet_id=id)
     return subnet
Beispiel #12
0
 def _get_agent(self, context, id):
     try:
         agent = model_query.get_by_id(context, agent_model.Agent, id)
     except exc.NoResultFound:
         raise ext_agent.AgentNotFound(id=id)
     return agent
 def _get_subnet(self, context, id):
     try:
         subnet = model_query.get_by_id(context, models_v2.Subnet, id)
     except exc.NoResultFound:
         raise n_exc.SubnetNotFound(subnet_id=id)
     return subnet
 def _get_port(self, context, id):
     try:
         port = model_query.get_by_id(context, models_v2.Port, id)
     except exc.NoResultFound:
         raise n_exc.PortNotFound(port_id=id)
     return port
Beispiel #15
0
    def create_security_group(self, context, security_group, default_sg=False):
        """Create security group.

        If default_sg is true that means we are a default security group for
        a given tenant if it does not exist.
        """
        s = security_group['security_group']
        kwargs = {
            'context': context,
            'security_group': s,
            'is_default': default_sg,
        }

        self._registry_notify(resources.SECURITY_GROUP, events.BEFORE_CREATE,
                              exc_cls=ext_sg.SecurityGroupConflict, **kwargs)

        tenant_id = s['tenant_id']

        if not default_sg:
            self._ensure_default_security_group(context, tenant_id)
        else:
            existing_def_sg_id = self._get_default_sg_id(context, tenant_id)
            if existing_def_sg_id is not None:
                # default already exists, return it
                return self.get_security_group(context, existing_def_sg_id)

        with db_api.context_manager.writer.using(context):
            sg = sg_obj.SecurityGroup(
                context, id=s.get('id') or uuidutils.generate_uuid(),
                description=s['description'], project_id=tenant_id,
                name=s['name'], is_default=default_sg)
            sg.create()

            for ethertype in ext_sg.sg_supported_ethertypes:
                if default_sg:
                    # Allow intercommunication
                    ingress_rule = sg_obj.SecurityGroupRule(
                        context, id=uuidutils.generate_uuid(),
                        project_id=tenant_id, security_group_id=sg.id,
                        direction='ingress', ethertype=ethertype,
                        remote_group_id=sg.id)
                    ingress_rule.create()
                    sg.rules.append(ingress_rule)

                egress_rule = sg_obj.SecurityGroupRule(
                    context, id=uuidutils.generate_uuid(),
                    project_id=tenant_id, security_group_id=sg.id,
                    direction='egress', ethertype=ethertype)
                egress_rule.create()
                sg.rules.append(egress_rule)
            sg.obj_reset_changes(['rules'])

            # fetch sg from db to load the sg rules with sg model.
            # NOTE(yamamoto): Adding rules above bumps the revision
            # of the SG.  It would add SG object to the session.
            # Expunge it to ensure the following get_object doesn't
            # use the instance.
            context.session.expunge(model_query.get_by_id(
                context, sg_models.SecurityGroup, sg.id))
            sg = sg_obj.SecurityGroup.get_object(context, id=sg.id)
            secgroup_dict = self._make_security_group_dict(sg)
            kwargs['security_group'] = secgroup_dict
            self._registry_notify(resources.SECURITY_GROUP,
                                  events.PRECOMMIT_CREATE,
                                  exc_cls=ext_sg.SecurityGroupConflict,
                                  **kwargs)

        registry.notify(resources.SECURITY_GROUP, events.AFTER_CREATE, self,
                        **kwargs)
        return secgroup_dict
 def _get_by_id(context, model, id):
     return _model_query.get_by_id(context, model, id)
Beispiel #17
0
 def _get_by_id(context, model, id):
     return _model_query.get_by_id(context, model, id)
Beispiel #18
0
 def _get_agent(self, context, id):
     try:
         agent = model_query.get_by_id(context, agent_model.Agent, id)
     except exc.NoResultFound:
         raise ext_agent.AgentNotFound(id=id)
     return agent
Beispiel #19
0
    def create_security_group(self, context, security_group, default_sg=False):
        """Create security group.

        If default_sg is true that means we are a default security group for
        a given tenant if it does not exist.
        """
        s = security_group['security_group']
        kwargs = {
            'context': context,
            'security_group': s,
            'is_default': default_sg,
        }

        self._registry_notify(resources.SECURITY_GROUP,
                              events.BEFORE_CREATE,
                              exc_cls=ext_sg.SecurityGroupConflict,
                              **kwargs)

        tenant_id = s['tenant_id']

        if not default_sg:
            self._ensure_default_security_group(context, tenant_id)
        else:
            existing_def_sg_id = self._get_default_sg_id(context, tenant_id)
            if existing_def_sg_id is not None:
                # default already exists, return it
                return self.get_security_group(context, existing_def_sg_id)

        with db_api.context_manager.writer.using(context):
            sg = sg_obj.SecurityGroup(context,
                                      id=s.get('id')
                                      or uuidutils.generate_uuid(),
                                      description=s['description'],
                                      project_id=tenant_id,
                                      name=s['name'],
                                      is_default=default_sg)
            sg.create()

            for ethertype in ext_sg.sg_supported_ethertypes:
                if default_sg:
                    # Allow intercommunication
                    ingress_rule = sg_obj.SecurityGroupRule(
                        context,
                        id=uuidutils.generate_uuid(),
                        project_id=tenant_id,
                        security_group_id=sg.id,
                        direction='ingress',
                        ethertype=ethertype,
                        remote_group_id=sg.id)
                    ingress_rule.create()
                    sg.rules.append(ingress_rule)

                egress_rule = sg_obj.SecurityGroupRule(
                    context,
                    id=uuidutils.generate_uuid(),
                    project_id=tenant_id,
                    security_group_id=sg.id,
                    direction='egress',
                    ethertype=ethertype)
                egress_rule.create()
                sg.rules.append(egress_rule)
            sg.obj_reset_changes(['rules'])

            # fetch sg from db to load the sg rules with sg model.
            # NOTE(yamamoto): Adding rules above bumps the revision
            # of the SG.  It would add SG object to the session.
            # Expunge it to ensure the following get_object doesn't
            # use the instance.
            context.session.expunge(
                model_query.get_by_id(context, sg_models.SecurityGroup, sg.id))
            sg = sg_obj.SecurityGroup.get_object(context, id=sg.id)
            secgroup_dict = self._make_security_group_dict(sg)
            kwargs['security_group'] = secgroup_dict
            self._registry_notify(resources.SECURITY_GROUP,
                                  events.PRECOMMIT_CREATE,
                                  exc_cls=ext_sg.SecurityGroupConflict,
                                  **kwargs)

        registry.notify(resources.SECURITY_GROUP, events.AFTER_CREATE, self,
                        **kwargs)
        return secgroup_dict