Commit d6a6c1b0 authored by Tiago Botelho's avatar Tiago Botelho

adds remote sync time functionality

parent 0cd84ba4
...@@ -35,7 +35,7 @@ class Project < ActiveRecord::Base ...@@ -35,7 +35,7 @@ class Project < ActiveRecord::Base
default_value_for :container_registry_enabled, gitlab_config_features.container_registry default_value_for :container_registry_enabled, gitlab_config_features.container_registry
default_value_for(:repository_storage) { current_application_settings.pick_repository_storage } default_value_for(:repository_storage) { current_application_settings.pick_repository_storage }
default_value_for(:shared_runners_enabled) { current_application_settings.shared_runners_enabled } default_value_for(:shared_runners_enabled) { current_application_settings.shared_runners_enabled }
default_value_for(:sync_time) { gitlab_config_features.sync_time } default_value_for :sync_time, gitlab_config_features.sync_time
default_value_for :issues_enabled, gitlab_config_features.issues default_value_for :issues_enabled, gitlab_config_features.issues
default_value_for :merge_requests_enabled, gitlab_config_features.merge_requests default_value_for :merge_requests_enabled, gitlab_config_features.merge_requests
default_value_for :builds_enabled, gitlab_config_features.builds default_value_for :builds_enabled, gitlab_config_features.builds
......
...@@ -18,8 +18,10 @@ class RemoteMirror < ActiveRecord::Base ...@@ -18,8 +18,10 @@ class RemoteMirror < ActiveRecord::Base
default_value_for :remote_sync_time, gitlab_config_features.sync_time default_value_for :remote_sync_time, gitlab_config_features.sync_time
validates :url, presence: true, url: { protocols: %w(ssh git http https), allow_blank: true } validates :url, presence: true, url: { protocols: %w(ssh git http https), allow_blank: true }
validates :remote_sync_time, presence: true, validates :remote_sync_time,
presence: true,
inclusion: { in: Gitlab::Mirror.sync_time_options.values } inclusion: { in: Gitlab::Mirror.sync_time_options.values }
validate :url_availability, if: -> (mirror) { mirror.url_changed? || mirror.enabled? } validate :url_availability, if: -> (mirror) { mirror.url_changed? || mirror.enabled? }
after_save :refresh_remote, if: :mirror_url_changed? after_save :refresh_remote, if: :mirror_url_changed?
......
# See http://doc.gitlab.com/ce/development/migration_style_guide.html class AddSyncScheduleToProjectsAndRemoteProjects < ActiveRecord::Migration
# for more information on how to write migrations for GitLab.
class AddSyncScheduleToProjects < ActiveRecord::Migration
include Gitlab::Database::MigrationHelpers include Gitlab::Database::MigrationHelpers
# Set this constant to true if this migration requires downtime.
DOWNTIME = false DOWNTIME = false
disable_ddl_transaction! disable_ddl_transaction!
def up def up
add_column_with_default :projects, :sync_time, :integer, default: 60 add_column_with_default(:remote_mirrors, :remote_sync_time, :integer, default: 60)
add_column_with_default(:projects, :sync_time, :integer, default: 60)
end end
def down def down
remove_column :projects, :sync_time remove_column :projects, :sync_time
remove_column :remote_mirrors, :remote_sync_time
end end
end end
module Gitlab module Gitlab
module Mirror module Mirror
FIFTEEN = 15 FIFTEEN = 15
HOURLY = 60 HOURLY = 60
DAYLY = 1440 DAYLY = 1440
PRECRON = 14.minutes
class << self class << self
def sync_time_options def sync_time_options
{ {
...@@ -23,13 +24,22 @@ module Gitlab ...@@ -23,13 +24,22 @@ module Gitlab
end end
def at_beginning_of_day? def at_beginning_of_day?
beginning_of_day = DateTime.now.at_beginning_of_day start_at = DateTime.now.at_beginning_of_day
DateTime.now >= beginning_of_day && DateTime.now <= beginning_of_day + 14.minutes end_at = start_at + PRECRON
include_with_range?(start_at, end_at)
end end
def at_beginning_of_hour? def at_beginning_of_hour?
beginning_of_hour = DateTime.now.at_beginning_of_hour start_at = DateTime.now.at_beginning_of_hour
DateTime.now >= beginning_of_hour && DateTime.now <= beginning_of_hour + 14.minutes end_at = start_at + PRECRON
include_with_range?(start_at, end_at)
end
def include_with_range?(start_at, end_at)
window = start_at...end_at
window.include?(DateTime.now)
end end
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment