def CreateDomainMapping(self, domain_mapping_ref, service_name): """Create a domain mapping. Args: domain_mapping_ref: Resource, domainmapping resource. service_name: str, the service to which to map domain. Returns: A domain_mapping.DomainMapping object. """ messages = self._messages_module new_mapping = domain_mapping.DomainMapping.New( self._client, domain_mapping_ref.namespacesId) new_mapping.name = domain_mapping_ref.domainmappingsId new_mapping.route_name = service_name request = messages.RunNamespacesDomainmappingsCreateRequest( domainMapping=new_mapping.Message(), parent=domain_mapping_ref.Parent().RelativeName()) with metrics.RecordDuration(metric_names.CREATE_DOMAIN_MAPPING): response = self._client.namespaces_domainmappings.Create(request) # 'run domain-mappings create' is synchronous. Poll for its completion. getter = functools.partial(self.GetDomainMapping, domain_mapping_ref) with progress_tracker.StagedProgressTracker( 'Creating...', stages.DomainMappingStages(), failure_message='Domain mapping failed') as tracker: self.WaitForCondition(DomainMappingConditionPoller( getter, tracker)) return domain_mapping.DomainMapping(response, messages)
def CreateDomainMapping(self, domain_mapping_ref, service_name, config_changes, force_override=False): """Create a domain mapping. Args: domain_mapping_ref: Resource, domainmapping resource. service_name: str, the service to which to map domain. config_changes: list of ConfigChanger to modify the domainmapping with force_override: bool, override an existing mapping of this domain. Returns: A domain_mapping.DomainMapping object. """ messages = self.messages_module new_mapping = domain_mapping.DomainMapping.New( self._client, domain_mapping_ref.namespacesId) new_mapping.name = domain_mapping_ref.domainmappingsId new_mapping.route_name = service_name new_mapping.force_override = force_override for config_change in config_changes: new_mapping = config_change.Adjust(new_mapping) request = messages.RunNamespacesDomainmappingsCreateRequest( domainMapping=new_mapping.Message(), parent=domain_mapping_ref.Parent().RelativeName()) with metrics.RecordDuration(metric_names.CREATE_DOMAIN_MAPPING): try: response = self._client.namespaces_domainmappings.Create(request) except api_exceptions.HttpConflictError: raise serverless_exceptions.DomainMappingCreationError( 'Domain mapping to [{}] for service [{}] already exists.'.format( domain_mapping_ref.Name(), service_name)) # 'run domain-mappings create' is synchronous. Poll for its completion.x with progress_tracker.ProgressTracker('Creating...'): mapping = waiter.PollUntilDone( DomainMappingResourceRecordPoller(self), domain_mapping_ref) ready = mapping.conditions.get('Ready') message = None if ready and ready.get('message'): message = ready['message'] if not mapping.records: if (mapping.ready_condition['reason'] == domain_mapping.MAPPING_ALREADY_EXISTS_CONDITION_REASON): raise serverless_exceptions.DomainMappingAlreadyExistsError( 'Domain mapping to [{}] is already in use elsewhere.'.format( domain_mapping_ref.Name())) raise serverless_exceptions.DomainMappingCreationError( message or 'Could not create domain mapping.') if message: log.status.Print(message) return mapping return domain_mapping.DomainMapping(response, messages)
def GetDomainMapping(self, domain_mapping_ref): """Get a domain mapping. Args: domain_mapping_ref: Resource, domainmapping resource. Returns: A domain_mapping.DomainMapping object. """ messages = self._messages_module request = messages.RunNamespacesDomainmappingsGetRequest( name=domain_mapping_ref.RelativeName()) with metrics.RecordDuration(metric_names.GET_DOMAIN_MAPPING): response = self._client.namespaces_domainmappings.Get(request) return domain_mapping.DomainMapping(response, messages)
def GetDomainMapping(self, domain_name): """Get a domain mapping. Args: domain_name: str, domain name. Returns: A domain_mapping.DomainMapping object. """ messages = self._messages_module request = messages.RunNamespacesDomainmappingsGetRequest( name=domain_name) with metrics.record_duration(metrics.GET_DOMAIN_MAPPING): response = self._client.namespaces_domainmappings.Get(request) return domain_mapping.DomainMapping(response)
def ListDomainMappings(self, namespace_ref): """List all domain mappings. Args: namespace_ref: Resource, namespace to list domain mappings in. Returns: A list of domain mappings. """ messages = self.messages_module request = messages.RunNamespacesDomainmappingsListRequest( parent=namespace_ref.RelativeName()) with metrics.RecordDuration(metric_names.LIST_DOMAIN_MAPPINGS): response = self._client.namespaces_domainmappings.List(request) return [domain_mapping.DomainMapping(item, messages) for item in response.items]
def CreateDomainMapping(self, domain_mapping_ref, service_name): """Create a domain mapping. Args: domain_mapping_ref: Resource, domainmapping resource. service_name: str, the service to which to map domain. Returns: A domain_mapping.DomainMapping object. """ messages = self._messages_module new_mapping = domain_mapping.DomainMapping.New( self._client, domain_mapping_ref.namespacesId) new_mapping.name = domain_mapping_ref.domainmappingsId new_mapping.route_name = service_name request = messages.RunNamespacesDomainmappingsCreateRequest( domainMapping=new_mapping.Message(), parent=domain_mapping_ref.Parent().RelativeName()) with metrics.RecordDuration(metric_names.CREATE_DOMAIN_MAPPING): try: response = self._client.namespaces_domainmappings.Create( request) except api_exceptions.HttpConflictError: raise serverless_exceptions.DomainMappingCreationError( 'Domain mapping to [{}] for service [{}] already exists.'. format(domain_mapping_ref.Name(), service_name)) # 'run domain-mappings create' is synchronous. Poll for its completion.x with progress_tracker.ProgressTracker('Creating...'): mapping = waiter.PollUntilDone( DomainMappingResourceRecordPoller(self), domain_mapping_ref) ready = mapping.conditions.get('Ready') records = getattr(mapping.status, 'resourceRecords', None) message = None if ready and ready.get('message'): message = ready['message'] if not records: raise serverless_exceptions.DomainMappingCreationError( message or 'Could not create domain mapping.') if message: log.status.Print(message) return records return domain_mapping.DomainMapping(response, messages)
def CreateDomainMapping(self, domain_mapping_ref, service_name): """Create a domain mapping. Args: domain_mapping_ref: Resource, domainmapping resource. service_name: str, the service to which to map domain. Returns: A domain_mapping.DomainMapping object. """ messages = self._messages_module new_mapping = domain_mapping.DomainMapping.New( self._client, domain_mapping_ref.namespacesId) new_mapping.name = domain_mapping_ref.domainmappingsId new_mapping.route_name = service_name request = messages.RunNamespacesDomainmappingsCreateRequest( domainMapping=new_mapping.Message(), parent=domain_mapping_ref.RelativeName()) with metrics.record_duration(metrics.CREATE_DOMAIN_MAPPING): response = self._client.namespaces_domainmappings.Create(request) return domain_mapping.DomainMapping(response)