Skip to content

Commit b51de13

Browse files
committed
Merge pull request #1599 from tseaver/logging-sink_update
Add 'Sink.update' API wrapper.
2 parents cd41be4 + dd1d44a commit b51de13

File tree

2 files changed

+57
-0
lines changed

2 files changed

+57
-0
lines changed

gcloud/logging/sink.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,3 +126,21 @@ def reload(self, client=None):
126126
data = client.connection.api_request(method='GET', path=self.path)
127127
self.filter_ = data['filter']
128128
self.destination = data['destination']
129+
130+
def update(self, client=None):
131+
"""API call: update sink configuration via a PUT request
132+
133+
See
134+
https://cloud.google.com/logging/docs/api/ref_v2beta1/rest/v2beta1/projects.sinks/update
135+
136+
:type client: :class:`gcloud.logging.client.Client` or ``NoneType``
137+
:param client: the client to use. If not passed, falls back to the
138+
``client`` stored on the current sink.
139+
"""
140+
client = self._require_client(client)
141+
data = {
142+
'name': self.name,
143+
'filter': self.filter_,
144+
'destination': self.destination,
145+
}
146+
client.connection.api_request(method='PUT', path=self.path, data=data)

gcloud/logging/test_sink.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,45 @@ def test_reload_w_alternate_client(self):
154154
self.assertEqual(req['method'], 'GET')
155155
self.assertEqual(req['path'], '/%s' % FULL)
156156

157+
def test_update_w_bound_client(self):
158+
FULL = 'projects/%s/sinks/%s' % (self.PROJECT, self.SINK_NAME)
159+
RESOURCE = {
160+
'name': self.SINK_NAME,
161+
'filter': self.FILTER,
162+
'destination': self.DESTINATION_URI,
163+
}
164+
conn = _Connection(RESOURCE)
165+
CLIENT = _Client(project=self.PROJECT, connection=conn)
166+
sink = self._makeOne(self.SINK_NAME, self.FILTER, self.DESTINATION_URI,
167+
client=CLIENT)
168+
sink.update()
169+
self.assertEqual(len(conn._requested), 1)
170+
req = conn._requested[0]
171+
self.assertEqual(req['method'], 'PUT')
172+
self.assertEqual(req['path'], '/%s' % FULL)
173+
self.assertEqual(req['data'], RESOURCE)
174+
175+
def test_update_w_alternate_client(self):
176+
FULL = 'projects/%s/sinks/%s' % (self.PROJECT, self.SINK_NAME)
177+
RESOURCE = {
178+
'name': self.SINK_NAME,
179+
'filter': self.FILTER,
180+
'destination': self.DESTINATION_URI,
181+
}
182+
conn1 = _Connection()
183+
CLIENT1 = _Client(project=self.PROJECT, connection=conn1)
184+
conn2 = _Connection(RESOURCE)
185+
CLIENT2 = _Client(project=self.PROJECT, connection=conn2)
186+
sink = self._makeOne(self.SINK_NAME, self.FILTER, self.DESTINATION_URI,
187+
client=CLIENT1)
188+
sink.update(client=CLIENT2)
189+
self.assertEqual(len(conn1._requested), 0)
190+
self.assertEqual(len(conn2._requested), 1)
191+
req = conn2._requested[0]
192+
self.assertEqual(req['method'], 'PUT')
193+
self.assertEqual(req['path'], '/%s' % FULL)
194+
self.assertEqual(req['data'], RESOURCE)
195+
157196

158197
class _Connection(object):
159198

0 commit comments

Comments
 (0)