forked from googleapis/google-cloud-python
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
PubSub: add geo-fencing support (googleapis#5769)
* Add support for storage location policy (geo-fencing) to Pub/Sub by regenerating v1 endpoint
- Loading branch information
Showing
19 changed files
with
2,799 additions
and
1,913 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,5 @@ | ||
include README.rst LICENSE | ||
recursive-include google *.json *.proto | ||
recursive-include tests * | ||
global-exclude *.pyc __pycache__ | ||
global-exclude *.py[co] | ||
global-exclude __pycache__ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
487 changes: 343 additions & 144 deletions
487
pubsub/google/cloud/pubsub_v1/gapic/publisher_client.py
Large diffs are not rendered by default.
Oops, something went wrong.
826 changes: 573 additions & 253 deletions
826
pubsub/google/cloud/pubsub_v1/gapic/subscriber_client.py
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
238 changes: 238 additions & 0 deletions
238
pubsub/google/cloud/pubsub_v1/gapic/transports/publisher_grpc_transport.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,238 @@ | ||
# Copyright 2018 Google LLC | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# https://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
|
||
import google.api_core.grpc_helpers | ||
|
||
from google.cloud.pubsub_v1.proto import pubsub_pb2_grpc | ||
from google.iam.v1 import iam_policy_pb2 | ||
|
||
|
||
class PublisherGrpcTransport(object): | ||
"""gRPC transport class providing stubs for | ||
google.pubsub.v1 Publisher API. | ||
The transport provides access to the raw gRPC stubs, | ||
which can be used to take advantage of advanced | ||
features of gRPC. | ||
""" | ||
# The scopes needed to make gRPC calls to all of the methods defined | ||
# in this service. | ||
_OAUTH_SCOPES = ( | ||
'https://www.googleapis.com/auth/cloud-platform', | ||
'https://www.googleapis.com/auth/pubsub', | ||
) | ||
|
||
def __init__(self, | ||
channel=None, | ||
credentials=None, | ||
address='pubsub.googleapis.com:443'): | ||
"""Instantiate the transport class. | ||
Args: | ||
channel (grpc.Channel): A ``Channel`` instance through | ||
which to make calls. This argument is mutually exclusive | ||
with ``credentials``; providing both will raise an exception. | ||
credentials (google.auth.credentials.Credentials): The | ||
authorization credentials to attach to requests. These | ||
credentials identify this application to the service. If none | ||
are specified, the client will attempt to ascertain the | ||
credentials from the environment. | ||
address (str): The address where the service is hosted. | ||
""" | ||
# If both `channel` and `credentials` are specified, raise an | ||
# exception (channels come with credentials baked in already). | ||
if channel is not None and credentials is not None: | ||
raise ValueError( | ||
'The `channel` and `credentials` arguments are mutually ' | ||
'exclusive.', ) | ||
|
||
# Create the channel. | ||
if channel is None: | ||
channel = self.create_channel( | ||
address=address, | ||
credentials=credentials, | ||
) | ||
|
||
# gRPC uses objects called "stubs" that are bound to the | ||
# channel and provide a basic method for each RPC. | ||
self._stubs = { | ||
'iam_policy_stub': iam_policy_pb2.IAMPolicyStub(channel), | ||
'publisher_stub': pubsub_pb2_grpc.PublisherStub(channel), | ||
} | ||
|
||
@classmethod | ||
def create_channel(cls, | ||
address='pubsub.googleapis.com:443', | ||
credentials=None): | ||
"""Create and return a gRPC channel object. | ||
Args: | ||
address (str): The host for the channel to use. | ||
credentials (~.Credentials): The | ||
authorization credentials to attach to requests. These | ||
credentials identify this application to the service. If | ||
none are specified, the client will attempt to ascertain | ||
the credentials from the environment. | ||
Returns: | ||
grpc.Channel: A gRPC channel object. | ||
""" | ||
return google.api_core.grpc_helpers.create_channel( | ||
address, | ||
credentials=credentials, | ||
scopes=cls._OAUTH_SCOPES, | ||
) | ||
|
||
@property | ||
def create_topic(self): | ||
"""Return the gRPC stub for {$apiMethod.name}. | ||
Creates the given topic with the given name. See the | ||
<a href=\"/pubsub/docs/admin#resource_names\"> resource name rules</a>. | ||
Returns: | ||
Callable: A callable which accepts the appropriate | ||
deserialized request object and returns a | ||
deserialized response object. | ||
""" | ||
return self._stubs['publisher_stub'].CreateTopic | ||
|
||
@property | ||
def update_topic(self): | ||
"""Return the gRPC stub for {$apiMethod.name}. | ||
Updates an existing topic. Note that certain properties of a | ||
topic are not modifiable. | ||
Returns: | ||
Callable: A callable which accepts the appropriate | ||
deserialized request object and returns a | ||
deserialized response object. | ||
""" | ||
return self._stubs['publisher_stub'].UpdateTopic | ||
|
||
@property | ||
def publish(self): | ||
"""Return the gRPC stub for {$apiMethod.name}. | ||
Adds one or more messages to the topic. Returns ``NOT_FOUND`` if the topic | ||
does not exist. The message payload must not be empty; it must contain | ||
either a non-empty data field, or at least one attribute. | ||
Returns: | ||
Callable: A callable which accepts the appropriate | ||
deserialized request object and returns a | ||
deserialized response object. | ||
""" | ||
return self._stubs['publisher_stub'].Publish | ||
|
||
@property | ||
def get_topic(self): | ||
"""Return the gRPC stub for {$apiMethod.name}. | ||
Gets the configuration of a topic. | ||
Returns: | ||
Callable: A callable which accepts the appropriate | ||
deserialized request object and returns a | ||
deserialized response object. | ||
""" | ||
return self._stubs['publisher_stub'].GetTopic | ||
|
||
@property | ||
def list_topics(self): | ||
"""Return the gRPC stub for {$apiMethod.name}. | ||
Lists matching topics. | ||
Returns: | ||
Callable: A callable which accepts the appropriate | ||
deserialized request object and returns a | ||
deserialized response object. | ||
""" | ||
return self._stubs['publisher_stub'].ListTopics | ||
|
||
@property | ||
def list_topic_subscriptions(self): | ||
"""Return the gRPC stub for {$apiMethod.name}. | ||
Lists the names of the subscriptions on this topic. | ||
Returns: | ||
Callable: A callable which accepts the appropriate | ||
deserialized request object and returns a | ||
deserialized response object. | ||
""" | ||
return self._stubs['publisher_stub'].ListTopicSubscriptions | ||
|
||
@property | ||
def delete_topic(self): | ||
"""Return the gRPC stub for {$apiMethod.name}. | ||
Deletes the topic with the given name. Returns ``NOT_FOUND`` if the topic | ||
does not exist. After a topic is deleted, a new topic may be created with | ||
the same name; this is an entirely new topic with none of the old | ||
configuration or subscriptions. Existing subscriptions to this topic are | ||
not deleted, but their ``topic`` field is set to ``_deleted-topic_``. | ||
Returns: | ||
Callable: A callable which accepts the appropriate | ||
deserialized request object and returns a | ||
deserialized response object. | ||
""" | ||
return self._stubs['publisher_stub'].DeleteTopic | ||
|
||
@property | ||
def set_iam_policy(self): | ||
"""Return the gRPC stub for {$apiMethod.name}. | ||
Sets the access control policy on the specified resource. Replaces any | ||
existing policy. | ||
Returns: | ||
Callable: A callable which accepts the appropriate | ||
deserialized request object and returns a | ||
deserialized response object. | ||
""" | ||
return self._stubs['iam_policy_stub'].SetIamPolicy | ||
|
||
@property | ||
def get_iam_policy(self): | ||
"""Return the gRPC stub for {$apiMethod.name}. | ||
Gets the access control policy for a resource. | ||
Returns an empty policy if the resource exists and does not have a policy | ||
set. | ||
Returns: | ||
Callable: A callable which accepts the appropriate | ||
deserialized request object and returns a | ||
deserialized response object. | ||
""" | ||
return self._stubs['iam_policy_stub'].GetIamPolicy | ||
|
||
@property | ||
def test_iam_permissions(self): | ||
"""Return the gRPC stub for {$apiMethod.name}. | ||
Returns permissions that a caller has on the specified resource. | ||
If the resource does not exist, this will return an empty set of | ||
permissions, not a NOT_FOUND error. | ||
Returns: | ||
Callable: A callable which accepts the appropriate | ||
deserialized request object and returns a | ||
deserialized response object. | ||
""" | ||
return self._stubs['iam_policy_stub'].TestIamPermissions |
Oops, something went wrong.