Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add python snippets and tests for creating, listing, and deleting queues #4012

Merged
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
a8cf1d7
add python snippets and tests for creating, listing, and deleting queues
aarjo Jun 8, 2020
7fe9f1c
fix grammar
aarjo Jun 8, 2020
8a9cff9
update licenses
aarjo Jun 8, 2020
7acd2af
Merge branch 'master' into tasks-create-list-delete-queues
averikitsch Jun 8, 2020
4a9a2c1
apply suggested fixes and format with black
aarjo Jun 9, 2020
0693cde
Merge branch 'tasks-create-list-delete-queues' of github.com:aarjo/py…
aarjo Jun 9, 2020
7e5e9ef
Merge branch 'master' into tasks-create-list-delete-queues
aarjo Jun 9, 2020
d8b20d8
Merge branch 'master' of https://github.com/GoogleCloudPlatform/pytho…
aarjo Jun 10, 2020
3018c46
refine delete_queue_test with fixture for setup
aarjo Jun 10, 2020
275fa4a
Merge branch 'master' of https://github.com/GoogleCloudPlatform/pytho…
aarjo Jun 10, 2020
55e3bbf
utilize fixtures and match format of create_http_task_test
aarjo Jun 10, 2020
26e683c
Merge branch 'master' of https://github.com/GoogleCloudPlatform/pytho…
aarjo Jun 10, 2020
145db0c
Merge branch 'tasks-create-list-delete-queues' of github.com:aarjo/py…
aarjo Jun 10, 2020
547ac9d
utilize fixtures in list_queues_test and create_queue_test
aarjo Jun 10, 2020
e4fd742
make create_queue_test call the right function
aarjo Jun 10, 2020
195183f
still attempt to delete queue after test runs in case of failure
aarjo Jun 10, 2020
8552a80
attempt to delete queue in case of failure, using try/except approach
aarjo Jun 10, 2020
eca47d1
add print when NotFound is caught
aarjo Jun 10, 2020
3adeffc
Merge branch 'master' into tasks-create-list-delete-queues
aarjo Jun 12, 2020
eb36f24
Merge branch 'master' into tasks-create-list-delete-queues
Jun 12, 2020
bd4b6a7
fix import
aarjo Jun 12, 2020
fe403ad
Merge branch 'master' of https://github.com/GoogleCloudPlatform/pytho…
aarjo Jun 12, 2020
183e2b6
Merge branch 'tasks-create-list-delete-queues' of github.com:aarjo/py…
aarjo Jun 12, 2020
a76988f
Merge branch 'master' into tasks-create-list-delete-queues
aarjo Jun 12, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 73 additions & 0 deletions tasks/create_queue.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# Copyright 2020 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
#
# http://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.

from __future__ import print_function

import argparse


def create_queue(project,
queue_name,
location):
aarjo marked this conversation as resolved.
Show resolved Hide resolved
# [START cloud_tasks_create_queue]
"""Create a task queue."""
aarjo marked this conversation as resolved.
Show resolved Hide resolved

from google.cloud import tasks_v2

# Create a client.
client = tasks_v2.CloudTasksClient()

# Construct the fully qualified location path.
parent = client.location_path(project, location)

# Construct the queue.
aarjo marked this conversation as resolved.
Show resolved Hide resolved
queue = {
'name': client.queue_path(project, location, queue_name)
}

# Use the client to create the queue.
response = client.create_queue(parent, queue)

print('Created queue {}'.format(response.name))
return response
# [END cloud_tasks_create_queue]
aarjo marked this conversation as resolved.
Show resolved Hide resolved


if __name__ == '__main__':
aarjo marked this conversation as resolved.
Show resolved Hide resolved
parser = argparse.ArgumentParser(
description=create_queue.__doc__,
formatter_class=argparse.RawDescriptionHelpFormatter)

parser.add_argument(
'--project',
help='Project to add the queue to.',
required=True,
)

parser.add_argument(
'--queue',
help='ID (short name) of the queue to be created.',
required=True,
)

parser.add_argument(
'--location',
help='Location of the project to add the queue to.',
required=True,
)

args = parser.parse_args()

create_queue(
args.project, args.queue, args.location)
31 changes: 31 additions & 0 deletions tasks/create_queue_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Copyright 2020 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
#
# http://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 os

import create_queue

TEST_PROJECT_ID = os.getenv('GOOGLE_CLOUD_PROJECT')
aarjo marked this conversation as resolved.
Show resolved Hide resolved
TEST_LOCATION = os.getenv('TEST_QUEUE_LOCATION', 'us-central1')
TEST_QUEUE_NAME = os.getenv('TEST_QUEUE_NAME', 'my-queue')


def test_create_queue():
result = create_queue.create_queue(
TEST_PROJECT_ID, TEST_QUEUE_NAME, TEST_LOCATION)
assert TEST_QUEUE_NAME in result.name


if __name__ == '__main__':
aarjo marked this conversation as resolved.
Show resolved Hide resolved
test_create_queue()
71 changes: 71 additions & 0 deletions tasks/delete_queue.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# Copyright 2020 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
#
# http://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.

from __future__ import print_function

import argparse


def delete_queue(project,
queue_name,
location):
# [START cloud_tasks_delete_queue]
"""Delete a task queue."""

from google.cloud import tasks_v2
from google.api_core import exceptions

# Create a client.
client = tasks_v2.CloudTasksClient()

# Get the fully qualified path to queue.
queue = client.queue_path(project, location, queue_name)

# Use the client to delete the queue.
try:
client.delete_queue(queue)
print('Deleted queue')
except exceptions.NotFound:
aarjo marked this conversation as resolved.
Show resolved Hide resolved
print('Queue not found')

# [END cloud_tasks_delete_queue]


if __name__ == '__main__':
parser = argparse.ArgumentParser(
description=delete_queue.__doc__,
formatter_class=argparse.RawDescriptionHelpFormatter)

parser.add_argument(
'--project',
help='Project to delete the queue from.',
required=True,
)

parser.add_argument(
'--queue',
help='ID (short name) of the queue to be deleted.',
required=True,
)

parser.add_argument(
'--location',
help='Location of the queue.',
required=True,
)

args = parser.parse_args()

delete_queue(
args.project, args.queue, args.location)
37 changes: 37 additions & 0 deletions tasks/delete_queue_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Copyright 2020 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
#
# http://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 os
import sys
import io

import delete_queue

TEST_PROJECT_ID = os.getenv('GOOGLE_CLOUD_PROJECT')
TEST_LOCATION = os.getenv('TEST_QUEUE_LOCATION', 'us-central1')
TEST_QUEUE_NAME = os.getenv('TEST_QUEUE_NAME', 'my-queue')
aarjo marked this conversation as resolved.
Show resolved Hide resolved


def test_delete_queue():
aarjo marked this conversation as resolved.
Show resolved Hide resolved
output_capture = io.StringIO()
sys.stdout = output_capture
delete_queue.delete_queue(
TEST_PROJECT_ID, TEST_QUEUE_NAME, TEST_LOCATION)
sys.stdout = sys.__stdout__
assert(output_capture.getvalue().rstrip()
in ['Deleted Queue', 'Queue not found'])
aarjo marked this conversation as resolved.
Show resolved Hide resolved


if __name__ == '__main__':
aarjo marked this conversation as resolved.
Show resolved Hide resolved
test_delete_queue()
67 changes: 67 additions & 0 deletions tasks/list_queues.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# Copyright 2020 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
#
# http://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.

from __future__ import print_function
aarjo marked this conversation as resolved.
Show resolved Hide resolved

import argparse


def list_queues(project,
location):
# [START cloud_tasks_list_queues]
"""List all task queues."""

from google.cloud import tasks_v2

# Create a client.
client = tasks_v2.CloudTasksClient()

# Construct the fully qualified location path.
parent = client.location_path(project, location)

# Use the client to obtain the queues.
response = client.list_queues(parent)

# Convert the response to a list containing all queues.
queue_list = list(response)
aarjo marked this conversation as resolved.
Show resolved Hide resolved

# Print the results.
for queue in queue_list:
aarjo marked this conversation as resolved.
Show resolved Hide resolved
print(queue.name)

return response
# [END cloud_tasks_list_queues]


if __name__ == '__main__':
parser = argparse.ArgumentParser(
description=list_queues.__doc__,
formatter_class=argparse.RawDescriptionHelpFormatter)

parser.add_argument(
'--project',
help='Project to list queues for.',
required=True,
)

parser.add_argument(
'--location',
help='Location of the project to list queues for.',
required=True,
)

args = parser.parse_args()

list_queues(
args.project, args.location)
30 changes: 30 additions & 0 deletions tasks/list_queues_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Copyright 2020 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
#
# http://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 os

import list_queues

TEST_PROJECT_ID = os.getenv('GOOGLE_CLOUD_PROJECT')
TEST_LOCATION = os.getenv('TEST_QUEUE_LOCATION', 'us-central1')


def test_list_queues():
result = list_queues.list_queues(
TEST_PROJECT_ID, TEST_LOCATION)
assert(result)


if __name__ == '__main__':
aarjo marked this conversation as resolved.
Show resolved Hide resolved
test_list_queues()