示例#1
0
    def _ConstructPatchSettingsFromArgs(cls,
                                        sql_messages,
                                        args,
                                        instance,
                                        release_track=DEFAULT_RELEASE_TRACK):
        """Constructs patch settings object from base settings and args."""
        original_settings = instance.settings
        settings = cls._ConstructBaseSettingsFromArgs(sql_messages, args,
                                                      instance, release_track)

        if args.clear_gae_apps:
            settings.authorizedGaeApplications = []

        if any([args.follow_gae_app, _GetZone(args)]):
            settings.locationPreference = sql_messages.LocationPreference(
                kind='sql#locationPreference',
                followGaeApplication=args.follow_gae_app,
                zone=_GetZone(args))

        if args.clear_authorized_networks:
            if not settings.ipConfiguration:
                settings.ipConfiguration = sql_messages.IpConfiguration()
            settings.ipConfiguration.authorizedNetworks = []

        if args.enable_database_replication is not None:
            settings.databaseReplicationEnabled = args.enable_database_replication

        backup_configuration = (reducers.BackupConfiguration(
            sql_messages,
            instance,
            backup_enabled=not args.no_backup,
            backup_location=args.backup_location,
            backup_start_time=args.backup_start_time,
            enable_bin_log=args.enable_bin_log,
            enable_point_in_time_recovery=args.enable_point_in_time_recovery))
        if backup_configuration:
            cls.AddBackupConfigToSettings(settings, backup_configuration)

        settings.databaseFlags = (reducers.DatabaseFlags(
            sql_messages,
            original_settings,
            database_flags=args.database_flags,
            clear_database_flags=args.clear_database_flags))

        settings.maintenanceWindow = (reducers.MaintenanceWindow(
            sql_messages,
            instance,
            maintenance_release_channel=args.maintenance_release_channel,
            maintenance_window_day=args.maintenance_window_day,
            maintenance_window_hour=args.maintenance_window_hour))

        if args.remove_deny_maintenance_period:
            settings.denyMaintenancePeriods = []

        if (args.deny_maintenance_period_start_date
                or args.deny_maintenance_period_end_date
                or args.deny_maintenance_period_time):
            settings.denyMaintenancePeriods = []
            settings.denyMaintenancePeriods.append(
                reducers.DenyMaintenancePeriod(
                    sql_messages,
                    instance,
                    deny_maintenance_period_start_date=args.
                    deny_maintenance_period_start_date,
                    deny_maintenance_period_end_date=args.
                    deny_maintenance_period_end_date,
                    deny_maintenance_period_time=args.
                    deny_maintenance_period_time))

        # BETA args.
        if _IsBetaOrNewer(release_track):
            labels_diff = labels_util.ExplicitNullificationDiff.FromUpdateArgs(
                args)
            labels_update = labels_diff.Apply(
                sql_messages.Settings.UserLabelsValue,
                instance.settings.userLabels)
            if labels_update.needs_update:
                settings.userLabels = labels_update.labels

        # ALPHA args.
        if _IsAlpha(release_track):
            if args.active_directory_domain is not None:
                settings.activeDirectoryConfig = (
                    reducers.ActiveDirectoryConfig(
                        sql_messages, args.active_directory_domain))

        return settings
示例#2
0
    def _ConstructPatchSettingsFromArgs(cls,
                                        sql_messages,
                                        args,
                                        instance,
                                        release_track=DEFAULT_RELEASE_TRACK):
        """Constructs patch settings object from base settings and args."""
        original_settings = instance.settings
        settings = cls._ConstructBaseSettingsFromArgs(sql_messages, args,
                                                      instance, release_track)

        if args.clear_gae_apps:
            settings.authorizedGaeApplications = []

        if any([args.follow_gae_app, _GetZone(args), _GetSecondaryZone(args)]):
            settings.locationPreference = sql_messages.LocationPreference(
                kind='sql#locationPreference',
                followGaeApplication=args.follow_gae_app,
                zone=_GetZone(args),
                secondaryZone=_GetSecondaryZone(args))

        if args.clear_authorized_networks:
            if not settings.ipConfiguration:
                settings.ipConfiguration = sql_messages.IpConfiguration()
            settings.ipConfiguration.authorizedNetworks = []

        if args.enable_database_replication is not None:
            settings.databaseReplicationEnabled = args.enable_database_replication

        backup_configuration = (reducers.BackupConfiguration(
            sql_messages,
            instance,
            backup_enabled=not args.no_backup,
            backup_location=args.backup_location,
            backup_start_time=args.backup_start_time,
            enable_bin_log=args.enable_bin_log,
            enable_point_in_time_recovery=args.enable_point_in_time_recovery,
            retained_backups_count=args.retained_backups_count,
            retained_transaction_log_days=args.retained_transaction_log_days))

        if backup_configuration:
            cls.AddBackupConfigToSettings(settings, backup_configuration)

        settings.databaseFlags = (reducers.DatabaseFlags(
            sql_messages,
            original_settings,
            database_flags=args.database_flags,
            clear_database_flags=args.clear_database_flags))

        settings.maintenanceWindow = (reducers.MaintenanceWindow(
            sql_messages,
            instance,
            maintenance_release_channel=args.maintenance_release_channel,
            maintenance_window_day=args.maintenance_window_day,
            maintenance_window_hour=args.maintenance_window_hour))

        if args.remove_deny_maintenance_period:
            settings.denyMaintenancePeriods = []

        if (args.deny_maintenance_period_start_date
                or args.deny_maintenance_period_end_date
                or args.deny_maintenance_period_time):
            settings.denyMaintenancePeriods = []
            settings.denyMaintenancePeriods.append(
                reducers.DenyMaintenancePeriod(
                    sql_messages,
                    instance,
                    deny_maintenance_period_start_date=args.
                    deny_maintenance_period_start_date,
                    deny_maintenance_period_end_date=args.
                    deny_maintenance_period_end_date,
                    deny_maintenance_period_time=args.
                    deny_maintenance_period_time))

        settings.insightsConfig = (reducers.InsightsConfig(
            sql_messages,
            insights_config_query_insights_enabled=args.
            insights_config_query_insights_enabled,
            insights_config_query_string_length=args.
            insights_config_query_string_length,
            insights_config_record_application_tags=args.
            insights_config_record_application_tags,
            insights_config_record_client_address=args.
            insights_config_record_client_address,
            insights_config_query_plans_per_minute=args.
            insights_config_query_plans_per_minute))

        if args.active_directory_domain is not None:
            settings.activeDirectoryConfig = (reducers.ActiveDirectoryConfig(
                sql_messages, args.active_directory_domain))

        settings.passwordValidationPolicy = (reducers.PasswordPolicy(
            sql_messages,
            password_policy_min_length=args.password_policy_min_length,
            password_policy_complexity=args.password_policy_complexity,
            password_policy_reuse_interval=args.password_policy_reuse_interval,
            password_policy_disallow_username_substring=args.
            password_policy_disallow_username_substring,
            password_policy_password_change_interval=args.
            password_policy_password_change_interval,
            enable_password_policy=args.enable_password_policy,
            clear_password_policy=args.clear_password_policy))

        # BETA args.
        if _IsBetaOrNewer(release_track):
            labels_diff = labels_util.ExplicitNullificationDiff.FromUpdateArgs(
                args)
            labels_update = labels_diff.Apply(
                sql_messages.Settings.UserLabelsValue,
                instance.settings.userLabels)
            if labels_update.needs_update:
                settings.userLabels = labels_update.labels
            # TODO(b/199412671): merge the logic of assigning ip range to
            # _ConstructBaseSettingsFromArgs
            if args.allocated_ip_range_name:
                if not settings.ipConfiguration:
                    settings.ipConfiguration = sql_messages.IpConfiguration()
                settings.ipConfiguration.allocatedIpRange = args.allocated_ip_range_name

        # ALPHA args.
        if _IsAlpha(release_track):
            settings.sqlServerAuditConfig = reducers.SqlServerAuditConfig(
                sql_messages,
                bucket=args.audit_bucket_path,
                retention_interval=args.audit_retention_interval,
                upload_interval=args.audit_upload_interval)

        return settings
示例#3
0
    def _ConstructCreateSettingsFromArgs(cls,
                                         sql_messages,
                                         args,
                                         instance=None,
                                         release_track=DEFAULT_RELEASE_TRACK):
        """Constructs create settings object from base settings and args."""
        original_settings = instance.settings if instance else None
        settings = cls._ConstructBaseSettingsFromArgs(sql_messages, args,
                                                      instance, release_track)

        backup_configuration = (reducers.BackupConfiguration(
            sql_messages,
            instance,
            backup_enabled=args.backup,
            backup_location=args.backup_location,
            backup_start_time=args.backup_start_time,
            enable_bin_log=args.enable_bin_log,
            enable_point_in_time_recovery=args.enable_point_in_time_recovery))
        if backup_configuration:
            cls.AddBackupConfigToSettings(settings, backup_configuration)

        settings.databaseFlags = (reducers.DatabaseFlags(
            sql_messages,
            original_settings,
            database_flags=args.database_flags))

        settings.maintenanceWindow = (reducers.MaintenanceWindow(
            sql_messages,
            instance,
            maintenance_release_channel=args.maintenance_release_channel,
            maintenance_window_day=args.maintenance_window_day,
            maintenance_window_hour=args.maintenance_window_hour))

        if args.deny_maintenance_period_start_date and args.deny_maintenance_period_end_date:
            settings.denyMaintenancePeriods = []
            settings.denyMaintenancePeriods.append(
                reducers.DenyMaintenancePeriod(
                    sql_messages,
                    instance,
                    deny_maintenance_period_start_date=args.
                    deny_maintenance_period_start_date,
                    deny_maintenance_period_end_date=args.
                    deny_maintenance_period_end_date,
                    deny_maintenance_period_time=args.
                    deny_maintenance_period_time))

        if args.storage_type:
            settings.dataDiskType = _ParseStorageType(
                sql_messages, STORAGE_TYPE_PREFIX + args.storage_type)

        # BETA args.
        if _IsBetaOrNewer(release_track):
            settings.userLabels = labels_util.ParseCreateArgs(
                args, sql_messages.Settings.UserLabelsValue)

        # ALPHA args.
        if _IsAlpha(release_track):
            if args.active_directory_domain is not None:
                settings.activeDirectoryConfig = (
                    reducers.ActiveDirectoryConfig(
                        sql_messages, args.active_directory_domain))

        return settings
示例#4
0
    def _ConstructCreateSettingsFromArgs(cls,
                                         sql_messages,
                                         args,
                                         instance=None,
                                         release_track=DEFAULT_RELEASE_TRACK):
        """Constructs create settings object from base settings and args."""
        original_settings = instance.settings if instance else None
        settings = cls._ConstructBaseSettingsFromArgs(sql_messages, args,
                                                      instance, release_track)

        backup_configuration = (reducers.BackupConfiguration(
            sql_messages,
            instance,
            backup_enabled=args.backup,
            backup_location=args.backup_location,
            backup_start_time=args.backup_start_time,
            enable_bin_log=args.enable_bin_log,
            enable_point_in_time_recovery=args.enable_point_in_time_recovery,
            retained_backups_count=args.retained_backups_count,
            retained_transaction_log_days=args.retained_transaction_log_days))
        if backup_configuration:
            cls.AddBackupConfigToSettings(settings, backup_configuration)

        settings.databaseFlags = (reducers.DatabaseFlags(
            sql_messages,
            original_settings,
            database_flags=args.database_flags))

        settings.maintenanceWindow = (reducers.MaintenanceWindow(
            sql_messages,
            instance,
            maintenance_release_channel=args.maintenance_release_channel,
            maintenance_window_day=args.maintenance_window_day,
            maintenance_window_hour=args.maintenance_window_hour))

        if args.deny_maintenance_period_start_date and args.deny_maintenance_period_end_date:
            settings.denyMaintenancePeriods = []
            settings.denyMaintenancePeriods.append(
                reducers.DenyMaintenancePeriod(
                    sql_messages,
                    instance,
                    deny_maintenance_period_start_date=args.
                    deny_maintenance_period_start_date,
                    deny_maintenance_period_end_date=args.
                    deny_maintenance_period_end_date,
                    deny_maintenance_period_time=args.
                    deny_maintenance_period_time))

        settings.insightsConfig = (reducers.InsightsConfig(
            sql_messages,
            insights_config_query_insights_enabled=args.
            insights_config_query_insights_enabled,
            insights_config_query_string_length=args.
            insights_config_query_string_length,
            insights_config_record_application_tags=args.
            insights_config_record_application_tags,
            insights_config_record_client_address=args.
            insights_config_record_client_address,
            insights_config_query_plans_per_minute=args.
            insights_config_query_plans_per_minute))

        if args.storage_type:
            settings.dataDiskType = _ParseStorageType(
                sql_messages, STORAGE_TYPE_PREFIX + args.storage_type)

        if args.active_directory_domain is not None:
            settings.activeDirectoryConfig = (reducers.ActiveDirectoryConfig(
                sql_messages, args.active_directory_domain))

        settings.passwordValidationPolicy = (reducers.PasswordPolicy(
            sql_messages,
            password_policy_min_length=args.password_policy_min_length,
            password_policy_complexity=args.password_policy_complexity,
            password_policy_reuse_interval=args.password_policy_reuse_interval,
            password_policy_disallow_username_substring=args.
            password_policy_disallow_username_substring,
            password_policy_password_change_interval=args.
            password_policy_password_change_interval,
            enable_password_policy=args.enable_password_policy))

        # BETA args.
        if _IsBetaOrNewer(release_track):
            settings.userLabels = labels_util.ParseCreateArgs(
                args, sql_messages.Settings.UserLabelsValue)
            if args.allocated_ip_range_name:
                if not settings.ipConfiguration:
                    settings.ipConfiguration = sql_messages.IpConfiguration()
                settings.ipConfiguration.allocatedIpRange = args.allocated_ip_range_name

        # ALPHA args.
        if _IsAlpha(release_track):
            settings.sqlServerAuditConfig = reducers.SqlServerAuditConfig(
                sql_messages, args.audit_bucket_path,
                args.audit_retention_interval, args.audit_upload_interval)

        return settings