def _Modify(client, resources, args, url_map, url_map_ref, backend_service_arg, backend_bucket_arg): """Returns a modified URL map message.""" replacement = _ModifyBase(client, args, url_map) # Creates PathRule objects from --path-rules, --backend-service-path-rules, # and --backend-bucket-path-rules. service_map = collections.defaultdict(set) bucket_map = collections.defaultdict(set) for path, service in six.iteritems(args.path_rules): service_map[service].add(path) for path, service in six.iteritems(args.backend_service_path_rules): service_map[service].add(path) for path, bucket in six.iteritems(args.backend_bucket_path_rules): bucket_map[bucket].add(path) path_rules = [] for service, paths in sorted(six.iteritems(service_map)): path_rules.append( client.messages.PathRule( paths=sorted(paths), service=resources.Parse( service, params=_GetBackendServiceParamsForUrlMap( url_map, url_map_ref), collection=_GetBackendServiceCollectionForUrlMap( url_map)).SelfLink())) for bucket, paths in sorted(six.iteritems(bucket_map)): path_rules.append( client.messages.PathRule( paths=sorted(paths), service=resources.Parse( bucket, params={ 'project': properties.VALUES.core.project.GetOrFail }, collection='compute.backendBuckets').SelfLink())) if args.default_service: default_backend_uri = url_maps_utils.ResolveUrlMapDefaultService( args, backend_service_arg, url_map_ref, resources).SelfLink() else: default_backend_uri = backend_bucket_arg.ResolveAsResource( args, resources).SelfLink() new_path_matcher = client.messages.PathMatcher( defaultService=default_backend_uri, description=args.description, name=args.path_matcher_name, pathRules=path_rules) replacement.pathMatchers.append(new_path_matcher) return replacement
def Modify(self, resources, args, url_map, url_map_ref): """Returns a modified URL map message.""" replacement = encoding.CopyProtoMessage(url_map) if args.default_service: default_backend_uri = url_maps_utils.ResolveUrlMapDefaultService( args, self.BACKEND_SERVICE_ARG, url_map_ref, resources).SelfLink() else: default_backend_uri = self.BACKEND_BUCKET_ARG.ResolveAsResource( args, resources).SelfLink() replacement.defaultService = default_backend_uri return replacement
def _Modify(resources, args, url_map, url_map_ref, backend_bucket_arg, backend_service_arg): """Returns a modified URL map message.""" replacement = encoding.CopyProtoMessage(url_map) if args.default_service: default_backend_uri = url_maps_utils.ResolveUrlMapDefaultService( args, backend_service_arg, url_map_ref, resources).SelfLink() else: default_backend_uri = backend_bucket_arg.ResolveAsResource( args, resources).SelfLink() replacement.defaultService = default_backend_uri return replacement
def _Run(args, holder, backend_bucket_arg, backend_service_arg, url_map_arg): """Issues requests necessary to create a Url Map.""" client = holder.client url_map_ref = url_map_arg.ResolveAsResource( args, holder.resources, default_scope=compute_scope.ScopeEnum.GLOBAL, scope_lister=compute_flags.GetDefaultScopeLister(client)) if args.default_service: default_backend_uri = url_maps_utils.ResolveUrlMapDefaultService( args, backend_service_arg, url_map_ref, holder.resources).SelfLink() else: default_backend_uri = backend_bucket_arg.ResolveAsResource( args, holder.resources).SelfLink() if url_maps_utils.IsGlobalUrlMapRef(url_map_ref): return _MakeGlobalRequest(args, url_map_ref, default_backend_uri, client) elif url_maps_utils.IsRegionalUrlMapRef(url_map_ref): return _MakeRegionalRequest(args, url_map_ref, default_backend_uri, client)
def Run(self, args): holder = base_classes.ComputeApiHolder(self.ReleaseTrack()) client = holder.client url_map_ref = self.URL_MAP_ARG.ResolveAsResource( args, holder.resources, scope_lister=compute_flags.GetDefaultScopeLister(client)) if args.default_service: default_backend_uri = url_maps_utils.ResolveUrlMapDefaultService( args, self.BACKEND_SERVICE_ARG, url_map_ref, holder.resources).SelfLink() else: default_backend_uri = self.BACKEND_BUCKET_ARG.ResolveAsResource( args, holder.resources).SelfLink() if url_maps_utils.IsGlobalUrlMapRef(url_map_ref): return self._MakeGlobalRequest(args, url_map_ref, default_backend_uri, client) elif url_maps_utils.IsRegionalUrlMapRef(url_map_ref): return self._MakeRegionalRequest(args, url_map_ref, default_backend_uri, client)