Ejemplo n.º 1
0
        def _validate(gid, pid):

            if not uuidutils.is_uuid_like(gid):
                raise exception.GroupNotFound(gid=gid)

            if not uuidutils.is_uuid_like(pid):
                raise exception.ProcessNotFound(pid=pid)
Ejemplo n.º 2
0
        def _validate(body, gid, securitygroup_id):
            if not self.is_valid_body(body, 'securitygroup'):
                msg = _("Invalid request body")
                raise exception.InvalidInput(reason=msg)

            values = body["securitygroup"]
            is_default = values.get("is_default")

            if not uuidutils.is_uuid_like(gid):
                raise exception.GroupNotFound(gid=gid)

            if not uuidutils.is_uuid_like(securitygroup_id):
                raise exception.SecuritygroupNotFound(
                    securitygroup_id=securitygroup_id)

            if is_default:
                try:
                    is_default = strutils.bool_from_string(
                        is_default, strict=True)
                except ValueError:
                    msg = _("is_default must be a boolean")
                    raise exception.InvalidInput(reason=msg)
            else:
                msg = _("SecurityGroup is_default is required")
                raise exception.InvalidInput(reason=msg)

            valid_values = {}
            valid_values["is_default"] = is_default
            return valid_values
Ejemplo n.º 3
0
 def _uuid_check(self, gid=None, keypair_id=None):
     if gid:
         if not uuidutils.is_uuid_like(gid):
             raise exception.GroupNotFound(gid=gid)
     if keypair_id:
         if not uuidutils.is_uuid_like(keypair_id):
             raise exception.KeypairNotFound(keypair_id=keypair_id)
Ejemplo n.º 4
0
 def _uuid_check(self, gid=None, keypair_id=None):
     if gid:
         if not uuidutils.is_uuid_like(gid):
             raise exception.GroupNotFound(gid=gid)
     if keypair_id:
         if not uuidutils.is_uuid_like(keypair_id):
             raise exception.KeypairNotFound(keypair_id=keypair_id)
Ejemplo n.º 5
0
        def _validate(gid, securitygroup_id):
            if not uuidutils.is_uuid_like(gid):
                raise exception.GroupNotFound(gid=gid)

            if not uuidutils.is_uuid_like(securitygroup_id):
                raise exception.SecuritygroupNotFound(
                    securitygroup_id=securitygroup_id)
Ejemplo n.º 6
0
 def _uuid_check(self, gid=None, network_id=None):
     if gid:
         if not uuidutils.is_uuid_like(gid):
             raise exception.GroupNotFound(gid=gid)
     if network_id:
         if not uuidutils.is_uuid_like(network_id):
             raise exception.NetworkNotFound(network_id=network_id)
Ejemplo n.º 7
0
        def _validate(body, gid):
            if not self.is_valid_body(body, 'group'):
                msg = _("Invalid request body")
                raise exception.InvalidInput(reason=msg)

            values = body["group"]
            name = values.get("name")
            description = values.get("description")

            if not uuidutils.is_uuid_like(gid):
                raise exception.GroupNotFound(gid=gid)

            if name is None and description is None:
                msg = _("Group name or description is required")
                raise exception.InvalidInput(reason=msg)

            if name is not None:
                if isinstance(name, six.string_types):
                    name = name.strip()
                utils.check_string_length(name, 'name', min_length=1,
                                          max_length=255)

            if description is not None:
                utils.check_string_length(description, 'description',
                                          min_length=0, max_length=255)

            valid_values = {}
            if name:
                valid_values["display_name"] = name
            # allow blank string to clear description
            if description is not None:
                valid_values["display_description"] = description
            valid_values["gid"] = gid
            return valid_values
Ejemplo n.º 8
0
        def _validate_securitygroup(gid, body):
            if not uuidutils.is_uuid_like(gid):
                raise exception.GroupNotFound(gid=gid)

            if not self.is_valid_body(body, 'securitygroup'):
                msg = _("Invalid request body")
                raise exception.InvalidInput(reason=msg)

            values = body["securitygroup"]
            name = values.get("name")
            is_default = values.get("is_default")

            if isinstance(name, six.string_types):
                name = name.strip()
                utils.check_string_length(name, 'name', min_length=1,
                                          max_length=255)

            if is_default:
                try:
                    is_default = strutils.bool_from_string(
                        is_default, strict=True)
                except ValueError:
                    msg = _("is_default must be a boolean")
                    raise exception.InvalidInput(reason=msg)
            else:
                is_default = False

            valid_values = {}
            valid_values["gid"] = gid
            valid_values["display_name"] = name
            valid_values["is_default"] = is_default
            return valid_values
Ejemplo n.º 9
0
        def _validate(body, gid):
            if not uuidutils.is_uuid_like(gid):

                raise exception.GroupNotFound(gid=gid)

            if not self.is_valid_body(body, 'proxy'):
                msg = _("Invalid request body")
                raise exception.InvalidInput(reason=msg)

            proxy = db.process_get_all(
                context, gid, {"is_proxy": True, "status": "ACTIVE"})
            if len(proxy) == 0:
                msg = _("Proxy instance not exists in this group")
                raise exception.ProxyNotFound(msg)

            values = body["proxy"]
            app_status = values.get("app_status")
            if not app_status:
                msg = _("app_status is required")
                raise exception.InvalidInput(reason=msg)

            valid_values = {}
            if values.get("shm_endpoint"):
                valid_values["shm_endpoint"] = values.get("shm_endpoint")
            if values.get("ipc_endpoint"):
                valid_values["ipc_endpoint"] = values.get("ipc_endpoint")
            if values.get("fs_endpoint"):
                valid_values["fs_endpoint"] = values.get("fs_endpoint")
            valid_values["app_status"] = app_status
            valid_values["pid"] = proxy[0]["pid"]
            valid_values

            return valid_values
Ejemplo n.º 10
0
 def _uuid_check(self,
                 gid=None,
                 pid=None,
                 keypair_id=None,
                 securitygroup_id=None):
     if gid:
         if not uuidutils.is_uuid_like(gid):
             raise exception.GroupNotFound(gid=gid)
     if pid:
         if not uuidutils.is_uuid_like(pid):
             raise exception.ProcessNotFound(pid=pid)
     if keypair_id:
         if not uuidutils.is_uuid_like(keypair_id):
             raise exception.KeypairNotFound(keypair_id=keypair_id)
     if securitygroup_id:
         if not uuidutils.is_uuid_like(securitygroup_id):
             raise exception.SecuritygroupNotFound(
                 securitygroup_id=securitygroup_id)
Ejemplo n.º 11
0
        def _validate(body, gid, pid):
            if not uuidutils.is_uuid_like(gid):
                raise exception.GroupNotFound(gid=gid)

            if not uuidutils.is_uuid_like(pid):
                raise exception.ProcessNotFound(pid=pid)

            if not self.is_valid_body(body, 'process'):
                msg = _("Invalid request body")
                raise exception.InvalidInput(reason=msg)

            db.process_get_by_pid(context, gid, pid)

            values = body["process"]
            app_status = values.get("app_status")

            if not app_status:
                msg = _("app_status is required")
                raise exception.InvalidInput(reason=msg)

            valid_values = {}
            valid_values["app_status"] = app_status

            return valid_values
Ejemplo n.º 12
0
        def _validate(body, gid):
            if not self.is_valid_body(body, 'group'):
                msg = _("Invalid request body")
                raise exception.InvalidInput(reason=msg)

            values = body["group"]
            name = values.get("name")
            description = values.get("description")

            if not uuidutils.is_uuid_like(gid):
                raise exception.GroupNotFound(gid=gid)

            if name is None and description is None:
                msg = _("Group name or description is required")
                raise exception.InvalidInput(reason=msg)

            if name is not None:
                if isinstance(name, six.string_types):
                    name = name.strip()
                utils.check_string_length(name,
                                          'name',
                                          min_length=1,
                                          max_length=255)

            if description is not None:
                utils.check_string_length(description,
                                          'description',
                                          min_length=0,
                                          max_length=255)

            valid_values = {}
            if name:
                valid_values["display_name"] = name
            # allow blank string to clear description
            if description is not None:
                valid_values["display_description"] = description
            valid_values["gid"] = gid
            return valid_values
Ejemplo n.º 13
0
        def _validate(context, body, gid):
            # validation checks
            if not self.is_valid_body(body, "network"):
                msg = _("Invalid request body")
                raise exception.InvalidInput(reason=msg)

            values = body.get("network")

            # Required item
            subnet = values.get("cidr")
            if subnet is None:
                msg = _("Ntwork cidr is required")
                raise exception.InvalidInput(reason=msg)
            if not utils.is_valid_cidr(subnet):
                msg = _("cidr must be a CIDR")
                raise exception.InvalidInput(reason=msg)

            # Non-essential items
            network_id = unicode(uuid.uuid4())
            name = values.get("name")
            if name is None or not name:
                name = "net-" + network_id
            else:
                name = name.strip()
                utils.check_string_length(
                    name, 'name', min_length=1, max_length=255)

            is_admin = values.get("is_admin")
            if is_admin:
                try:
                    is_admin = strutils.bool_from_string(
                        is_admin, strict=True)
                except ValueError:
                    msg = _("is_admin must be a boolean")
                    raise exception.InvalidInput(reason=msg)
            else:
                is_admin = False

            gateway = values.get("gateway")
            if gateway is not None and not utils.is_valid_ip_address(gateway):
                msg = _("Invalid gateway")
                raise exception.InvalidInput(reason=msg)

            dns_nameservers = values.get("dns_nameservers")
            if dns_nameservers is not None:
                if isinstance(dns_nameservers, list):
                    for dns in dns_nameservers:
                        if dns == "" or not utils.is_valid_ip_address(dns):
                            msg = _("Invalid dns_nameservers")
                            raise exception.InvalidInput(reason=msg)
                else:
                    msg = _("dns_nameservers must be list format")
                    raise exception.InvalidInput(reason=msg)

            ext_router = values.get("ext_router_id")
            if ext_router is not None and not uuidutils.is_uuid_like(
                    ext_router):
                msg = _("ext_router must be a uuid")
                raise exception.InvalidInput(reason=msg)

            valid_values1 = {}
            valid_values1["network_id"] = network_id
            valid_values1["gid"] = gid
            valid_values1["neutron_network_id"] = None
            valid_values1["is_admin"] = is_admin
            valid_values1["subnet"] = subnet
            valid_values1["ext_router"] = ext_router
            valid_values1["user_id"] = context.user_id
            valid_values1["project_id"] = context.project_id
            valid_values1["display_name"] = name
            valid_values1["status"] = "BUILDING"
            valid_values1["deleted"] = 0

            valid_values2 = {}
            valid_values2["gateway"] = gateway
            valid_values2["dns_nameservers"] = dns_nameservers

            valid_values = {}
            valid_values["db"] = valid_values1
            valid_values["opst"] = valid_values2

            return valid_values
Ejemplo n.º 14
0
        def _validate_securitygrouprules(securitygrouprules):

            valid_securitygrouprules = []
            for securitygroup in securitygrouprules:
                protocol = securitygroup.get("protocol")
                port_range_max = securitygroup.get("port_range_max")
                port_range_min = securitygroup.get("port_range_min")
                remote_securitygroup_id = securitygroup.get(
                    "remote_securitygroup_id")
                remote_ip_prefix = securitygroup.get("remote_ip_prefix")

                if not protocol:
                    msg = _("SecurityGroupRule protocol is required")
                    raise exception.InvalidInput(reason=msg)
                elif not utils.is_valid_protocol(protocol):
                    msg = _(
                        "SecurityGroupRule protocol should be tcp or udp or "
                        "icmp")
                    raise exception.InvalidInput(reason=msg)

                if not remote_securitygroup_id and not remote_ip_prefix:
                    msg = _(
                        "SecurityGroupRule either remote_securitygroup_id or "
                        "remote_ip_prefix is required")
                    raise exception.InvalidInput(reason=msg)
                elif remote_securitygroup_id and remote_ip_prefix:
                    msg = _(
                        "SecurityGroupRule either remote_securitygroup_id or "
                        "remote_ip_prefix is required")
                    raise exception.InvalidInput(reason=msg)
                elif remote_securitygroup_id is not None:
                    if not uuidutils.is_uuid_like(remote_securitygroup_id):
                        raise exception.SecuritygroupNotFound(
                            securitygroup_id=remote_securitygroup_id)
                elif remote_ip_prefix is not None:
                    if not utils.is_valid_cidr(remote_ip_prefix):
                        msg = _(
                            "SecurityGroupRule remote_ip_prefix should be "
                            "cidr format")
                        raise exception.InvalidInput(reason=msg)

                if protocol in ["tcp", "udp"]:
                    if port_range_max is None:
                        msg = _("SecurityGroupRule port_range_max is "
                                "required")
                        raise exception.InvalidInput(reason=msg)
                    utils.validate_integer(
                        port_range_max, 'port_range_max', min_value=1,
                        max_value=65535)
                    if port_range_min:
                        utils.validate_integer(
                            port_range_min, 'port_range_min', min_value=1,
                            max_value=65535)
                        if port_range_min > port_range_max:
                            msg = _(
                                "SecurityGroupRule port_range_min should be "
                                "lower than port_range_max")
                            raise exception.InvalidInput(reason=msg)
                elif protocol == "icmp":
                    port_range_max = None
                    port_range_min = None

                valid_securitygrouprules.append({
                    "protocol": protocol,
                    "port_range_max": port_range_max,
                    "port_range_min": port_range_min,
                    "remote_securitygroup_id": remote_securitygroup_id,
                    "remote_ip_prefix": unicode(netaddr
                                                .IPNetwork(remote_ip_prefix))
                    if remote_ip_prefix else remote_ip_prefix
                })
            return valid_securitygrouprules
Ejemplo n.º 15
0
 def _check_gid(self, gid, is_create=False, context=None):
     if not uuidutils.is_uuid_like(gid):
         raise exception.GroupNotFound(gid=gid)
     if is_create:
         db.group_get_by_gid(context, gid)
Ejemplo n.º 16
0
 def _validate(gid, network_id):
     self._check_gid(gid)
     if not uuidutils.is_uuid_like(network_id):
         raise exception.NetworkNotFound(network_id=network_id)
Ejemplo n.º 17
0
        def _validate_process(context, gid, body):
            if not uuidutils.is_uuid_like(gid):
                raise exception.GroupNotFound(gid=gid)

            if not self.is_valid_body(body, 'process'):
                msg = _("Invalid request body")
                raise exception.InvalidInput(reason=msg)

            values = body["process"]
            ppid = values.get("ppid")
            keypair_id = values.get("keypair_id")
            name = values.get("name")
            glance_image_id = values.get("glance_image_id")
            nova_flavor_id = values.get("nova_flavor_id")
            securitygroup_ids = values.get("securitygroup_ids")
            userdata = values.get("userdata")

            if ppid is not None:
                if not uuidutils.is_uuid_like(ppid):
                    raise exception.ProcessNotFound(pid=ppid)
                p_process = db.process_get_by_pid(context, gid, ppid)

            if keypair_id is not None:
                if not uuidutils.is_uuid_like(keypair_id):
                    raise exception.KeypairNotFound(keypair_id=keypair_id)
            elif ppid is not None:
                keypair_id = p_process.get("keypair_id")

            if isinstance(name, six.string_types):
                name = name.strip()
                utils.check_string_length(name, 'name', min_length=1,
                                          max_length=255)
            elif name is not None:
                msg = _("name must be a String")
                raise exception.InvalidInput(reason=msg)

            if glance_image_id is None:
                if ppid is not None:
                    glance_image_id = p_process.get("glance_image_id")
            elif not uuidutils.is_uuid_like(glance_image_id):
                msg = _("glance_image_id is invalid format")
                raise exception.InvalidInput(reason=msg)

            if nova_flavor_id is None and ppid is not None:
                nova_flavor_id = p_process.get("nova_flavor_id")
            utils.validate_integer(nova_flavor_id, 'nova_flavor_id')

            if not securitygroup_ids:
                if ppid is not None:
                    securitygroup_ids = [securitygroup.get("securitygroup_id")
                                         for securitygroup in p_process.get(
                                         "securitygroups")]
                else:
                    msg = _("securitygroup_ids is required")
                    raise exception.InvalidInput(reason=msg)

            if isinstance(securitygroup_ids, list):
                for securitygroup_id in securitygroup_ids:
                    if securitygroup_id is not None and not uuidutils\
                            .is_uuid_like(securitygroup_id):
                        raise exception.SecuritygroupNotFound(
                            securitygroup_id=securitygroup_id)
            else:
                msg = _("securitygroup_ids must be list")
                raise exception.InvalidInput(reason=msg)

            if userdata:
                try:
                    userdata = base64.b64decode(userdata)
                except TypeError as e:
                    raise webob.exc.HTTPBadRequest(
                        explanation=e.format_message())

            valid_values = {}
            valid_values_process = {}
            valid_values_process["gid"] = gid
            valid_values_process["keypair_id"] = keypair_id
            valid_values_process["ppid"] = ppid
            valid_values_process["display_name"] = name
            valid_values_process["glance_image_id"] = glance_image_id
            valid_values_process["nova_flavor_id"] = nova_flavor_id
            valid_values_process["is_proxy"] = False
            valid_values_process["app_status"] = "BUILDING"

            valid_values_userdata = {}
            valid_values_userdata["userdata"] = userdata

            valid_values_securitygroup = {}
            valid_values_securitygroup["securitygroup_ids"] = securitygroup_ids

            valid_values["process"] = valid_values_process
            valid_values["userdata"] = valid_values_userdata
            valid_values["securitygroup"] = valid_values_securitygroup

            return valid_values
Ejemplo n.º 18
0
 def _validate(gid):
     if not uuidutils.is_uuid_like(gid):
         raise exception.GroupNotFound(gid=gid)
Ejemplo n.º 19
0
 def _validate(gid):
     if not uuidutils.is_uuid_like(gid):
         raise exception.GroupNotFound(gid=gid)