103 lines
3.2 KiB
Python
103 lines
3.2 KiB
Python
# -*- coding: utf-8 -*- #
|
|
# Copyright 2015 Google LLC. All Rights Reserved.
|
|
#
|
|
# 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.
|
|
"""The Open Console command."""
|
|
|
|
from __future__ import absolute_import
|
|
from __future__ import division
|
|
from __future__ import unicode_literals
|
|
|
|
from googlecloudsdk.calliope import base
|
|
from googlecloudsdk.command_lib.app import browser_dispatcher
|
|
from googlecloudsdk.core import properties
|
|
from six.moves import urllib
|
|
|
|
|
|
CONSOLE_URL = 'https://console.developers.google.com/appengine?{query}'
|
|
LOGS_URL = 'https://console.developers.google.com/logs?{query}'
|
|
|
|
|
|
def _CreateDevConsoleURL(project, service='default', version=None, logs=False):
|
|
"""Creates a URL to a page in the Developer Console according to the params.
|
|
|
|
Args:
|
|
project: The app engine project id
|
|
service: A service belonging to the project
|
|
version: A version belonging to the service, or all versions if omitted
|
|
logs: If true, go to the log section instead of the dashboard
|
|
Returns:
|
|
The URL to the respective page in the Developer Console
|
|
"""
|
|
if service is None:
|
|
service = 'default'
|
|
query = [('project', project), ('serviceId', service)]
|
|
if version:
|
|
query.append(('versionId', version))
|
|
query_string = urllib.parse.urlencode(query)
|
|
return (LOGS_URL if logs else CONSOLE_URL).format(query=query_string)
|
|
|
|
|
|
@base.ReleaseTracks(base.ReleaseTrack.GA, base.ReleaseTrack.BETA)
|
|
class OpenConsole(base.Command):
|
|
"""Open the App Engine dashboard, or log viewer, in a web browser.
|
|
|
|
"""
|
|
|
|
detailed_help = {
|
|
'DESCRIPTION': """\
|
|
{description}
|
|
""",
|
|
'EXAMPLES': """\
|
|
Open the App Engine dashboard for the default service:
|
|
|
|
$ {command}
|
|
|
|
Open the service specific dashboard view:
|
|
|
|
$ {command} --service="myService"
|
|
|
|
Open the version specific dashboard view:
|
|
|
|
$ {command} --service="myService" --version="v1"
|
|
|
|
Open the log viewer for the default service:
|
|
|
|
$ {command} --logs
|
|
""",
|
|
}
|
|
|
|
@staticmethod
|
|
def Args(parser):
|
|
parser.add_argument(
|
|
'--service',
|
|
'-s',
|
|
help=('The service to consider. If not specified, use the '
|
|
'default service.'))
|
|
parser.add_argument(
|
|
'--version',
|
|
'-v',
|
|
help=('The version to consider. If not specified, '
|
|
'all versions for the given service are considered.'))
|
|
parser.add_argument(
|
|
'--logs',
|
|
'-l',
|
|
action='store_true',
|
|
default=False,
|
|
help='Open the log viewer instead of the App Engine dashboard.')
|
|
|
|
def Run(self, args):
|
|
project = properties.VALUES.core.project.Get(required=True)
|
|
url = _CreateDevConsoleURL(project, args.service, args.version, args.logs)
|
|
browser_dispatcher.OpenURL(url)
|