コード例 #1
0
    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())
コード例 #2
0
ファイル: update.py プロジェクト: piotradamczyk5/gcloud_cli
  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())
コード例 #3
0
    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)))