def Run(self, args): env_ref = args.CONCEPTS.environment.Parse() if args.airflow_version: # Converts airflow_version arg to image_version arg args.image_version = ( image_versions_command_util.ImageVersionFromAirflowVersion( args.airflow_version)) # Checks validity of image_version upgrade request. if (args.image_version and not image_versions_command_util.IsValidImageVersionUpgrade( env_ref, args.image_version, self.ReleaseTrack())): raise command_util.InvalidUserInputError( 'Invalid environment upgrade. [Requested: {}]'.format( args.image_version)) field_mask, patch = self._ConstructPatch( env_ref, args, UpdateBeta.support_environment_upgrades) return patch_util.Patch(env_ref, field_mask, patch, args.async_, release_track=self.ReleaseTrack())
def Run(self, args): env_ref = args.CONCEPTS.environment.Parse() if args.airflow_version: # Converts airflow_version arg to image_version arg args.image_version = ( image_versions_command_util.ImageVersionFromAirflowVersion( args.airflow_version)) # Checks validity of image_version upgrade request. if (args.image_version and not image_versions_command_util.IsValidImageVersionUpgrade( env_ref, args.image_version, self.ReleaseTrack())): raise command_util.InvalidUserInputError( 'Invalid environment upgrade. [Requested: {}]'.format( args.image_version)) # Checks validity of update_web_server_allow_ip if (self.ReleaseTrack() == base.ReleaseTrack.BETA and args.update_web_server_allow_ip): flags.ValidateIpRanges( [acl['ip_range'] for acl in args.update_web_server_allow_ip]) field_mask, patch = self._ConstructPatch( env_ref, args, UpdateBeta.support_environment_upgrades, UpdateBeta.support_web_server_access_control, True, True) return patch_util.Patch( env_ref, field_mask, patch, args.async_, release_track=self.ReleaseTrack())
def Run(self, args): self.ParseIpAliasConfigOptions(args) self.ParsePrivateEnvironmentConfigOptions(args) if self._support_web_server_cloud_sql_private_ip_ranges: self.ParsePrivateEnvironmentWebServerCloudSqlRanges(args) flags.ValidateDiskSize('--disk-size', args.disk_size) self.env_ref = args.CONCEPTS.environment.Parse() env_name = self.env_ref.Name() if not command_util.IsValidEnvironmentName(env_name): raise command_util.InvalidUserInputError( 'Invalid environment name: [{}]. Must match pattern: {}'. format(env_name, command_util.ENVIRONMENT_NAME_PATTERN.pattern)) self.zone_ref = parsers.ParseZone(args.zone) if args.zone else None self.zone = self.zone_ref.RelativeName() if self.zone_ref else None self.machine_type = None self.network = None self.subnetwork = None if args.machine_type: self.machine_type = parsers.ParseMachineType( args.machine_type, fallback_zone=self.zone_ref.Name() if self.zone_ref else None).RelativeName() if args.network: self.network = parsers.ParseNetwork(args.network).RelativeName() if args.subnetwork: self.subnetwork = parsers.ParseSubnetwork( args.subnetwork, fallback_region=self.env_ref.Parent().Name()).RelativeName() self.image_version = None if args.airflow_version: self.image_version = image_versions_util.ImageVersionFromAirflowVersion( args.airflow_version) elif args.image_version: self.image_version = args.image_version operation = self.GetOperationMessage(args) details = 'with operation [{0}]'.format(operation.name) if args.async_: log.CreatedResource(self.env_ref.RelativeName(), kind='environment', is_async=True, details=details) return operation else: try: operations_api_util.WaitForOperation( operation, 'Waiting for [{}] to be created with [{}]'.format( self.env_ref.RelativeName(), operation.name), release_track=self.ReleaseTrack()) except command_util.OperationError as e: raise command_util.EnvironmentCreateError( 'Error creating [{}]: {}'.format( self.env_ref.RelativeName(), six.text_type(e)))