#!/usr/bin/env python """CLI for dns, version v1.""" # NOTE: This file is autogenerated and should not be edited by hand. import code import os import platform import sys from apitools.base.protorpclite import message_types from apitools.base.protorpclite import messages from google.apputils import appcommands import gflags as flags import apitools.base.py as apitools_base from apitools.base.py import cli as apitools_base_cli import dns_v1_client as client_lib import dns_v1_messages as messages def _DeclareDnsFlags(): """Declare global flags in an idempotent way.""" if 'api_endpoint' in flags.FLAGS: return flags.DEFINE_string( 'api_endpoint', u'https://www.googleapis.com/dns/v1/', 'URL of the API endpoint to use.', short_name='dns_url') flags.DEFINE_string( 'history_file', u'~/.dns.v1.history', 'File with interactive shell history.') flags.DEFINE_multistring( 'add_header', [], 'Additional http headers (as key=value strings). ' 'Can be specified multiple times.') flags.DEFINE_string( 'service_account_json_keyfile', '', 'Filename for a JSON service account key downloaded' ' from the Developer Console.') flags.DEFINE_enum( 'alt', u'json', [u'json'], u'Data format for the response.') flags.DEFINE_string( 'fields', None, u'Selector specifying which fields to include in a partial response.') flags.DEFINE_string( 'key', None, u'API key. Your API key identifies your project and provides you with ' u'API access, quota, and reports. Required unless you provide an OAuth ' u'2.0 token.') flags.DEFINE_string( 'oauth_token', None, u'OAuth 2.0 token for the current user.') flags.DEFINE_boolean( 'prettyPrint', 'True', u'Returns response with indentations and line breaks.') flags.DEFINE_string( 'quotaUser', None, u'Available to use for quota purposes for server-side applications. Can' u' be any arbitrary string assigned to a user, but should not exceed 40' u' characters. Overrides userIp if both are provided.') flags.DEFINE_string( 'trace', None, 'A tracing token of the form "token:" to include in api ' 'requests.') flags.DEFINE_string( 'userIp', None, u'IP address of the site where the request originates. Use this if you ' u'want to enforce per-user limits.') FLAGS = flags.FLAGS apitools_base_cli.DeclareBaseFlags() _DeclareDnsFlags() def GetGlobalParamsFromFlags(): """Return a StandardQueryParameters based on flags.""" result = messages.StandardQueryParameters() if FLAGS['alt'].present: result.alt = messages.StandardQueryParameters.AltValueValuesEnum(FLAGS.alt) if FLAGS['fields'].present: result.fields = FLAGS.fields.decode('utf8') if FLAGS['key'].present: result.key = FLAGS.key.decode('utf8') if FLAGS['oauth_token'].present: result.oauth_token = FLAGS.oauth_token.decode('utf8') if FLAGS['prettyPrint'].present: result.prettyPrint = FLAGS.prettyPrint if FLAGS['quotaUser'].present: result.quotaUser = FLAGS.quotaUser.decode('utf8') if FLAGS['trace'].present: result.trace = FLAGS.trace.decode('utf8') if FLAGS['userIp'].present: result.userIp = FLAGS.userIp.decode('utf8') return result def GetClientFromFlags(): """Return a client object, configured from flags.""" log_request = FLAGS.log_request or FLAGS.log_request_response log_response = FLAGS.log_response or FLAGS.log_request_response api_endpoint = apitools_base.NormalizeApiEndpoint(FLAGS.api_endpoint) additional_http_headers = dict(x.split('=', 1) for x in FLAGS.add_header) credentials_args = { 'service_account_json_keyfile': os.path.expanduser(FLAGS.service_account_json_keyfile) } try: client = client_lib.DnsV1( api_endpoint, log_request=log_request, log_response=log_response, credentials_args=credentials_args, additional_http_headers=additional_http_headers) except apitools_base.CredentialsError as e: print 'Error creating credentials: %s' % e sys.exit(1) return client class PyShell(appcommands.Cmd): def Run(self, _): """Run an interactive python shell with the client.""" client = GetClientFromFlags() params = GetGlobalParamsFromFlags() for field in params.all_fields(): value = params.get_assigned_value(field.name) if value != field.default: client.AddGlobalParam(field.name, value) banner = """ == dns interactive console == client: a dns client apitools_base: base apitools module messages: the generated messages module """ local_vars = { 'apitools_base': apitools_base, 'client': client, 'client_lib': client_lib, 'messages': messages, } if platform.system() == 'Linux': console = apitools_base_cli.ConsoleWithReadline( local_vars, histfile=FLAGS.history_file) else: console = code.InteractiveConsole(local_vars) try: console.interact(banner) except SystemExit as e: return e.code class ChangesCreate(apitools_base_cli.NewCmd): """Command wrapping changes.Create.""" usage = """changes_create """ def __init__(self, name, fv): super(ChangesCreate, self).__init__(name, fv) flags.DEFINE_string( 'change', None, u'A Change resource to be passed as the request body.', flag_values=fv) def RunWithArgs(self, project, managedZone): """Atomically update the ResourceRecordSet collection. Args: project: Identifies the project addressed by this request. managedZone: Identifies the managed zone addressed by this request. Can be the managed zone name or id. Flags: change: A Change resource to be passed as the request body. """ client = GetClientFromFlags() global_params = GetGlobalParamsFromFlags() request = messages.DnsChangesCreateRequest( project=project.decode('utf8'), managedZone=managedZone.decode('utf8'), ) if FLAGS['change'].present: request.change = apitools_base.JsonToMessage(messages.Change, FLAGS.change) result = client.changes.Create( request, global_params=global_params) print apitools_base_cli.FormatOutput(result) class ChangesGet(apitools_base_cli.NewCmd): """Command wrapping changes.Get.""" usage = """changes_get """ def __init__(self, name, fv): super(ChangesGet, self).__init__(name, fv) def RunWithArgs(self, project, managedZone, changeId): """Fetch the representation of an existing Change. Args: project: Identifies the project addressed by this request. managedZone: Identifies the managed zone addressed by this request. Can be the managed zone name or id. changeId: The identifier of the requested change, from a previous ResourceRecordSetsChangeResponse. """ client = GetClientFromFlags() global_params = GetGlobalParamsFromFlags() request = messages.DnsChangesGetRequest( project=project.decode('utf8'), managedZone=managedZone.decode('utf8'), changeId=changeId.decode('utf8'), ) result = client.changes.Get( request, global_params=global_params) print apitools_base_cli.FormatOutput(result) class ChangesList(apitools_base_cli.NewCmd): """Command wrapping changes.List.""" usage = """changes_list """ def __init__(self, name, fv): super(ChangesList, self).__init__(name, fv) flags.DEFINE_integer( 'maxResults', None, u'Optional. Maximum number of results to be returned. If unspecified,' u' the server will decide how many results to return.', flag_values=fv) flags.DEFINE_string( 'pageToken', None, u'Optional. A tag returned by a previous list request that was ' u'truncated. Use this parameter to continue a previous list request.', flag_values=fv) flags.DEFINE_enum( 'sortBy', u'changeSequence', [u'changeSequence'], u'Sorting criterion. The only supported value is change sequence.', flag_values=fv) flags.DEFINE_string( 'sortOrder', None, u"Sorting order direction: 'ascending' or 'descending'.", flag_values=fv) def RunWithArgs(self, project, managedZone): """Enumerate Changes to a ResourceRecordSet collection. Args: project: Identifies the project addressed by this request. managedZone: Identifies the managed zone addressed by this request. Can be the managed zone name or id. Flags: maxResults: Optional. Maximum number of results to be returned. If unspecified, the server will decide how many results to return. pageToken: Optional. A tag returned by a previous list request that was truncated. Use this parameter to continue a previous list request. sortBy: Sorting criterion. The only supported value is change sequence. sortOrder: Sorting order direction: 'ascending' or 'descending'. """ client = GetClientFromFlags() global_params = GetGlobalParamsFromFlags() request = messages.DnsChangesListRequest( project=project.decode('utf8'), managedZone=managedZone.decode('utf8'), ) if FLAGS['maxResults'].present: request.maxResults = FLAGS.maxResults if FLAGS['pageToken'].present: request.pageToken = FLAGS.pageToken.decode('utf8') if FLAGS['sortBy'].present: request.sortBy = messages.DnsChangesListRequest.SortByValueValuesEnum(FLAGS.sortBy) if FLAGS['sortOrder'].present: request.sortOrder = FLAGS.sortOrder.decode('utf8') result = client.changes.List( request, global_params=global_params) print apitools_base_cli.FormatOutput(result) class ManagedZonesCreate(apitools_base_cli.NewCmd): """Command wrapping managedZones.Create.""" usage = """managedZones_create """ def __init__(self, name, fv): super(ManagedZonesCreate, self).__init__(name, fv) flags.DEFINE_string( 'managedZone', None, u'A ManagedZone resource to be passed as the request body.', flag_values=fv) def RunWithArgs(self, project): """Create a new ManagedZone. Args: project: Identifies the project addressed by this request. Flags: managedZone: A ManagedZone resource to be passed as the request body. """ client = GetClientFromFlags() global_params = GetGlobalParamsFromFlags() request = messages.DnsManagedZonesCreateRequest( project=project.decode('utf8'), ) if FLAGS['managedZone'].present: request.managedZone = apitools_base.JsonToMessage(messages.ManagedZone, FLAGS.managedZone) result = client.managedZones.Create( request, global_params=global_params) print apitools_base_cli.FormatOutput(result) class ManagedZonesDelete(apitools_base_cli.NewCmd): """Command wrapping managedZones.Delete.""" usage = """managedZones_delete """ def __init__(self, name, fv): super(ManagedZonesDelete, self).__init__(name, fv) def RunWithArgs(self, project, managedZone): """Delete a previously created ManagedZone. Args: project: Identifies the project addressed by this request. managedZone: Identifies the managed zone addressed by this request. Can be the managed zone name or id. """ client = GetClientFromFlags() global_params = GetGlobalParamsFromFlags() request = messages.DnsManagedZonesDeleteRequest( project=project.decode('utf8'), managedZone=managedZone.decode('utf8'), ) result = client.managedZones.Delete( request, global_params=global_params) print apitools_base_cli.FormatOutput(result) class ManagedZonesGet(apitools_base_cli.NewCmd): """Command wrapping managedZones.Get.""" usage = """managedZones_get """ def __init__(self, name, fv): super(ManagedZonesGet, self).__init__(name, fv) def RunWithArgs(self, project, managedZone): """Fetch the representation of an existing ManagedZone. Args: project: Identifies the project addressed by this request. managedZone: Identifies the managed zone addressed by this request. Can be the managed zone name or id. """ client = GetClientFromFlags() global_params = GetGlobalParamsFromFlags() request = messages.DnsManagedZonesGetRequest( project=project.decode('utf8'), managedZone=managedZone.decode('utf8'), ) result = client.managedZones.Get( request, global_params=global_params) print apitools_base_cli.FormatOutput(result) class ManagedZonesList(apitools_base_cli.NewCmd): """Command wrapping managedZones.List.""" usage = """managedZones_list """ def __init__(self, name, fv): super(ManagedZonesList, self).__init__(name, fv) flags.DEFINE_string( 'dnsName', None, u'Restricts the list to return only zones with this domain name.', flag_values=fv) flags.DEFINE_integer( 'maxResults', None, u'Optional. Maximum number of results to be returned. If unspecified,' u' the server will decide how many results to return.', flag_values=fv) flags.DEFINE_string( 'pageToken', None, u'Optional. A tag returned by a previous list request that was ' u'truncated. Use this parameter to continue a previous list request.', flag_values=fv) def RunWithArgs(self, project): """Enumerate ManagedZones that have been created but not yet deleted. Args: project: Identifies the project addressed by this request. Flags: dnsName: Restricts the list to return only zones with this domain name. maxResults: Optional. Maximum number of results to be returned. If unspecified, the server will decide how many results to return. pageToken: Optional. A tag returned by a previous list request that was truncated. Use this parameter to continue a previous list request. """ client = GetClientFromFlags() global_params = GetGlobalParamsFromFlags() request = messages.DnsManagedZonesListRequest( project=project.decode('utf8'), ) if FLAGS['dnsName'].present: request.dnsName = FLAGS.dnsName.decode('utf8') if FLAGS['maxResults'].present: request.maxResults = FLAGS.maxResults if FLAGS['pageToken'].present: request.pageToken = FLAGS.pageToken.decode('utf8') result = client.managedZones.List( request, global_params=global_params) print apitools_base_cli.FormatOutput(result) class ProjectsGet(apitools_base_cli.NewCmd): """Command wrapping projects.Get.""" usage = """projects_get """ def __init__(self, name, fv): super(ProjectsGet, self).__init__(name, fv) def RunWithArgs(self, project): """Fetch the representation of an existing Project. Args: project: Identifies the project addressed by this request. """ client = GetClientFromFlags() global_params = GetGlobalParamsFromFlags() request = messages.DnsProjectsGetRequest( project=project.decode('utf8'), ) result = client.projects.Get( request, global_params=global_params) print apitools_base_cli.FormatOutput(result) class ResourceRecordSetsList(apitools_base_cli.NewCmd): """Command wrapping resourceRecordSets.List.""" usage = """resourceRecordSets_list """ def __init__(self, name, fv): super(ResourceRecordSetsList, self).__init__(name, fv) flags.DEFINE_integer( 'maxResults', None, u'Optional. Maximum number of results to be returned. If unspecified,' u' the server will decide how many results to return.', flag_values=fv) flags.DEFINE_string( 'name', None, u'Restricts the list to return only records with this fully qualified' u' domain name.', flag_values=fv) flags.DEFINE_string( 'pageToken', None, u'Optional. A tag returned by a previous list request that was ' u'truncated. Use this parameter to continue a previous list request.', flag_values=fv) flags.DEFINE_string( 'type', None, u'Restricts the list to return only records of this type. If present,' u' the "name" parameter must also be present.', flag_values=fv) def RunWithArgs(self, project, managedZone): """Enumerate ResourceRecordSets that have been created but not yet deleted. Args: project: Identifies the project addressed by this request. managedZone: Identifies the managed zone addressed by this request. Can be the managed zone name or id. Flags: maxResults: Optional. Maximum number of results to be returned. If unspecified, the server will decide how many results to return. name: Restricts the list to return only records with this fully qualified domain name. pageToken: Optional. A tag returned by a previous list request that was truncated. Use this parameter to continue a previous list request. type: Restricts the list to return only records of this type. If present, the "name" parameter must also be present. """ client = GetClientFromFlags() global_params = GetGlobalParamsFromFlags() request = messages.DnsResourceRecordSetsListRequest( project=project.decode('utf8'), managedZone=managedZone.decode('utf8'), ) if FLAGS['maxResults'].present: request.maxResults = FLAGS.maxResults if FLAGS['name'].present: request.name = FLAGS.name.decode('utf8') if FLAGS['pageToken'].present: request.pageToken = FLAGS.pageToken.decode('utf8') if FLAGS['type'].present: request.type = FLAGS.type.decode('utf8') result = client.resourceRecordSets.List( request, global_params=global_params) print apitools_base_cli.FormatOutput(result) def main(_): appcommands.AddCmd('pyshell', PyShell) appcommands.AddCmd('changes_create', ChangesCreate) appcommands.AddCmd('changes_get', ChangesGet) appcommands.AddCmd('changes_list', ChangesList) appcommands.AddCmd('managedZones_create', ManagedZonesCreate) appcommands.AddCmd('managedZones_delete', ManagedZonesDelete) appcommands.AddCmd('managedZones_get', ManagedZonesGet) appcommands.AddCmd('managedZones_list', ManagedZonesList) appcommands.AddCmd('projects_get', ProjectsGet) appcommands.AddCmd('resourceRecordSets_list', ResourceRecordSetsList) apitools_base_cli.SetupLogger() if hasattr(appcommands, 'SetDefaultCommand'): appcommands.SetDefaultCommand('pyshell') run_main = apitools_base_cli.run_main if __name__ == '__main__': appcommands.Run()