예제 #1
0
    def Run(cls, release_track, args, support_redirect):
        """Validates arguments and patches a security policy rule."""
        if not any([
                args.description, args.src_ip_ranges, args.expression,
                args.action, args.preview is not None
        ]):
            raise exceptions.MinimumArgumentException([
                '--description', '--src-ip-ranges', '--expression', '--action',
                '--preview'
            ], 'At least one property must be modified.')

        holder = base_classes.ComputeApiHolder(release_track)
        ref = holder.resources.Parse(
            args.name,
            collection='compute.securityPolicyRules',
            params={
                'project': properties.VALUES.core.project.GetOrFail,
                'securityPolicy': args.security_policy
            })
        security_policy_rule = client.SecurityPolicyRule(
            ref, compute_client=holder.client)

        redirect_target = None
        if support_redirect:
            redirect_target = args.redirect_target

        return security_policy_rule.Patch(src_ip_ranges=args.src_ip_ranges,
                                          expression=args.expression,
                                          action=args.action,
                                          description=args.description,
                                          preview=args.preview,
                                          redirect_target=redirect_target)
예제 #2
0
    def Run(self, args):
        if not any([
                args.description, args.src_ip_ranges, args.expression,
                args.action, args.preview is not None
        ]):
            raise exceptions.MinimumArgumentException([
                '--description', '--src-ip-ranges', '--expression', '--action',
                '--preview'
            ], 'At least one property must be modified.')

        holder = base_classes.ComputeApiHolder(self.ReleaseTrack())
        ref = holder.resources.Parse(
            args.name,
            collection='compute.securityPolicyRules',
            params={
                'project': properties.VALUES.core.project.GetOrFail,
                'securityPolicy': args.security_policy
            })
        security_policy_rule = client.SecurityPolicyRule(
            ref, compute_client=holder.client)

        return security_policy_rule.Patch(src_ip_ranges=args.src_ip_ranges,
                                          expression=args.expression,
                                          action=args.action,
                                          description=args.description,
                                          preview=args.preview)
예제 #3
0
    def Run(cls, release_track, args, support_redirect, support_rate_limit):
        """Validates arguments and patches a security policy rule."""
        modified_fields = [
            args.description, args.src_ip_ranges, args.expression, args.action,
            args.preview is not None
        ]
        min_args = [
            '--description', '--src-ip-ranges', '--expression', '--action',
            '--preview'
        ]
        if support_redirect:
            modified_fields.append(args.redirect_target)
            min_args.append('--redirect_target')
        if support_rate_limit:
            modified_fields.extend([
                args.rate_limit_threshold_count,
                args.rate_limit_threshold_interval_sec, args.conform_action,
                args.exceed_action, args.enforce_on_key,
                args.ban_threshold_count, args.ban_threshold_interval_sec,
                args.ban_duration_sec
            ])
            min_args.extend([
                '--rate-limit-threshold-count',
                '--rate-limit-threshold-interval-sec', '--conform-action',
                '--exceed-action', '--enforce-on-key', '--ban-threshold-count',
                '--ban-threshold-interval-sec', '--ban-duration-sec'
            ])
        if not any(modified_fields):
            raise exceptions.MinimumArgumentException(
                min_args, 'At least one property must be modified.')

        holder = base_classes.ComputeApiHolder(release_track)
        ref = holder.resources.Parse(
            args.name,
            collection='compute.securityPolicyRules',
            params={
                'project': properties.VALUES.core.project.GetOrFail,
                'securityPolicy': args.security_policy
            })
        security_policy_rule = client.SecurityPolicyRule(
            ref, compute_client=holder.client)

        redirect_target = None
        rate_limit_options = None
        if support_redirect:
            redirect_target = args.redirect_target
        if support_rate_limit:
            rate_limit_options = (
                security_policies_utils.CreateRateLimitOptions(
                    holder.client, args))

        return security_policy_rule.Patch(
            src_ip_ranges=args.src_ip_ranges,
            expression=args.expression,
            action=args.action,
            description=args.description,
            preview=args.preview,
            redirect_target=redirect_target,
            rate_limit_options=rate_limit_options)
예제 #4
0
    def Run(self, args):
        holder = base_classes.ComputeApiHolder(self.ReleaseTrack())
        ref = holder.resources.Parse(
            args.name,
            collection='compute.securityPolicyRules',
            params={
                'project': properties.VALUES.core.project.GetOrFail,
                'securityPolicy': args.security_policy
            })
        security_policy_rule = client.SecurityPolicyRule(
            ref, compute_client=holder.client)

        return security_policy_rule.Describe()
예제 #5
0
    def Run(self, args):
        holder = base_classes.ComputeApiHolder(self.ReleaseTrack())
        ref = holder.resources.Parse(
            args.name,
            collection='compute.securityPolicyRules',
            params={
                'project': properties.VALUES.core.project.GetOrFail,
                'securityPolicy': args.security_policy
            })
        security_policy_rule = client.SecurityPolicyRule(
            ref, compute_client=holder.client)

        return security_policy_rule.Create(src_ip_ranges=args.src_ip_ranges,
                                           expression=args.expression,
                                           action=args.action,
                                           description=args.description,
                                           preview=args.preview)
예제 #6
0
  def Run(self, args):
    holder = base_classes.ComputeApiHolder(self.ReleaseTrack())
    refs = []
    for name in args.names:
      refs.append(holder.resources.Parse(
          name,
          collection=self.Collection(),
          params={
              'project': properties.VALUES.core.project.GetOrFail,
              'securityPolicy': args.security_policy
          }))
    utils.PromptForDeletion(refs)

    requests = []
    for ref in refs:
      security_policy_rule = client.SecurityPolicyRule(
          ref, compute_client=holder.client)
      requests.extend(security_policy_rule.Delete(only_generate_request=True))

    return holder.client.MakeRequests(requests)
예제 #7
0
    def Run(cls, release_track, args, support_redirect):
        """Validates arguments and creates a security policy rule."""
        holder = base_classes.ComputeApiHolder(release_track)
        ref = holder.resources.Parse(
            args.name,
            collection='compute.securityPolicyRules',
            params={
                'project': properties.VALUES.core.project.GetOrFail,
                'securityPolicy': args.security_policy
            })
        security_policy_rule = client.SecurityPolicyRule(
            ref, compute_client=holder.client)

        redirect_target = None
        if support_redirect:
            redirect_target = args.redirect_target

        return security_policy_rule.Create(src_ip_ranges=args.src_ip_ranges,
                                           expression=args.expression,
                                           action=args.action,
                                           description=args.description,
                                           preview=args.preview,
                                           redirect_target=redirect_target)
    def Run(cls, release_track, args, support_redirect, support_rate_limit,
            support_header_action):
        """Validates arguments and creates a security policy rule."""
        holder = base_classes.ComputeApiHolder(release_track)
        ref = holder.resources.Parse(
            args.name,
            collection='compute.securityPolicyRules',
            params={
                'project': properties.VALUES.core.project.GetOrFail,
                'securityPolicy': args.security_policy
            })
        security_policy_rule = client.SecurityPolicyRule(
            ref, compute_client=holder.client)

        redirect_options = None
        rate_limit_options = None
        if support_redirect:
            redirect_options = (security_policies_utils.CreateRedirectOptions(
                holder.client, args))
        if support_rate_limit:
            rate_limit_options = (
                security_policies_utils.CreateRateLimitOptions(
                    holder.client, args))

        request_headers_to_add = None
        if support_header_action:
            request_headers_to_add = args.request_headers_to_add

        return security_policy_rule.Create(
            src_ip_ranges=args.src_ip_ranges,
            expression=args.expression,
            action=args.action,
            description=args.description,
            preview=args.preview,
            redirect_options=redirect_options,
            rate_limit_options=rate_limit_options,
            request_headers_to_add=request_headers_to_add)