def Run(self, args): client = registrations.RegistrationsClient() registration_ref = args.CONCEPTS.registration.Parse() # TODO(b/110077203) Tweak the message. console_io.PromptContinue( 'You are about to detach registration [{}]'.format( registration_ref.registrationsId), throw_if_unattended=True, cancel_on_no=True) response = client.Detach(registration_ref) if args. async: # TODO(b/110077203): Log something sensible. return response operations_client = operations.Client.FromApiVersion('v1alpha1') operation_ref = util.ParseOperation(response.name) response = operations_client.WaitForOperation( operation_ref, 'Waiting for [{}] to complete'.format(operation_ref.Name())) log.UpdatedResource( registration_ref.Name(), 'registration', details=('Note:\nRegistration remains valid until expiry. See ' 'https://support.google.com/domains/answer/6339340 for ' 'information how to access it in Google Domains.')) return response
def Run(self, args): client = registrations.RegistrationsClient() registration_ref = args.CONCEPTS.registration.Parse() name_servers = util.ParseNameServers(args.name_servers, args.cloud_dns_zone, registration_ref.registrationsId) registrant_contact = util.ParseWhoisContact( args.registrant_contact_from_file) whois_privacy = util.ParseWhoisPrivacy(args.whois_privacy) new_labels = None labels_diff = labels_util.Diff.FromUpdateArgs(args) if labels_diff.MayHaveUpdates(): orig_resource = client.Get(registration_ref) new_labels = labels_diff.Apply( client.messages.Registration.LabelsValue, orig_resource.labels).GetOrNone() response = client.Patch(registration_ref, name_servers=name_servers, registrant_contact=registrant_contact, whois_privacy=whois_privacy, labels=new_labels, validate_only=args.validate_only) if args.validate_only: # TODO(b/110077203): Log something sensible. return if args. async: # TODO(b/110077203): Log something sensible. return response operations_client = operations.Client.FromApiVersion('v1alpha1') operation_ref = util.ParseOperation(response.name) response = operations_client.WaitForOperation( operation_ref, 'Waiting for [{}] to complete'.format(operation_ref.Name())) log.UpdatedResource(registration_ref.Name(), 'registration') return response
def Run(self, args): client = registrations.RegistrationsClient() registration_ref = args.CONCEPTS.registration.Parse() location_ref = registration_ref.Parent() labels = labels_util.ParseCreateArgs( args, client.messages.Registration.LabelsValue) name_servers = util.ParseNameServers(args.name_servers, args.cloud_dns_zone, registration_ref.registrationsId) registrant_contact = util.ParseWhoisContact( args.registrant_contact_from_file) if registrant_contact is None: registrant_contact = util.PromptForWhoisContact() if registrant_contact is None: raise exceptions.Error( 'Registrant contact is required. It can be provided interactively or ' 'through --registrant-contact-from-file flag.') availability = client.CheckAvailability( location_ref, registration_ref.registrationsId).availability if availability.available != client.availability_enum.AVAILABLE: raise exceptions.Error( 'Domain [{}] is not available for registration: [{}]'.format( registration_ref.registrationsId, availability.available)) whois_privacy = util.ParseWhoisPrivacy(args.whois_privacy) if whois_privacy is None: whois_privacy = util.PromptForWhoisPrivacy( availability.supportedWhoisPrivacy) hsts_notice_accepted = False if client.notices_enum.HSTS_PRELOADED in availability.notices: console_io.PromptContinue( ('{} is a secure namespace. You may purchase {} now but it will ' 'require an SSL certificate for website connection.').format( util.DomainNamespace(availability.domainName), availability.domainName), throw_if_unattended=True, cancel_on_no=True) hsts_notice_accepted = True console_io.PromptContinue( 'Yearly price: {}\n'.format( util.TransformMoneyType(availability.yearlyPrice)), throw_if_unattended=True, cancel_on_no=True) response = client.Create( location_ref, registration_ref.registrationsId, name_servers=name_servers, registrant_contact=registrant_contact, whois_privacy=whois_privacy, yearly_price=availability.yearlyPrice, hsts_notice_accepted=hsts_notice_accepted, labels=labels, validate_only=args.validate_only) if args.validate_only: # TODO(b/110077203): Log something sensible. return if args.async: # TODO(b/110077203): Log something sensible. return response operations_client = operations.Client.FromApiVersion('v1alpha1') operation_ref = util.ParseOperation(response.name) response = operations_client.WaitForOperation( operation_ref, 'Waiting for [{}] to complete'.format(operation_ref.Name())) log.CreatedResource(registration_ref.Name(), 'registration') return response