Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
9729ea36
Commit
9729ea36
authored
Jan 24, 2022
by
Sarah Yasonik
Committed by
Luke Duncalfe
Jan 24, 2022
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Swap OncallSchedule services to inherit from BaseProjectService
parent
0201fca5
Changes
10
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
26 additions
and
64 deletions
+26
-64
ee/app/graphql/mutations/incident_management/oncall_schedule/create.rb
...l/mutations/incident_management/oncall_schedule/create.rb
+3
-3
ee/app/graphql/mutations/incident_management/oncall_schedule/destroy.rb
.../mutations/incident_management/oncall_schedule/destroy.rb
+3
-3
ee/app/graphql/mutations/incident_management/oncall_schedule/update.rb
...l/mutations/incident_management/oncall_schedule/update.rb
+4
-4
ee/app/services/incident_management/oncall_schedules/base_service.rb
...ices/incident_management/oncall_schedules/base_service.rb
+2
-2
ee/app/services/incident_management/oncall_schedules/create_service.rb
...es/incident_management/oncall_schedules/create_service.rb
+0
-11
ee/app/services/incident_management/oncall_schedules/destroy_service.rb
...s/incident_management/oncall_schedules/destroy_service.rb
+1
-11
ee/app/services/incident_management/oncall_schedules/update_service.rb
...es/incident_management/oncall_schedules/update_service.rb
+8
-25
ee/spec/services/incident_management/oncall_schedules/create_service_spec.rb
...cident_management/oncall_schedules/create_service_spec.rb
+1
-1
ee/spec/services/incident_management/oncall_schedules/destroy_service_spec.rb
...ident_management/oncall_schedules/destroy_service_spec.rb
+2
-2
ee/spec/services/incident_management/oncall_schedules/update_service_spec.rb
...cident_management/oncall_schedules/update_service_spec.rb
+2
-2
No files found.
ee/app/graphql/mutations/incident_management/oncall_schedule/create.rb
View file @
9729ea36
...
@@ -28,9 +28,9 @@ module Mutations
...
@@ -28,9 +28,9 @@ module Mutations
project
=
authorized_find!
(
args
[
:project_path
])
project
=
authorized_find!
(
args
[
:project_path
])
response
::
IncidentManagement
::
OncallSchedules
::
CreateService
.
new
(
response
::
IncidentManagement
::
OncallSchedules
::
CreateService
.
new
(
project
,
project
:
project
,
current_user
,
current_user
:
current_user
,
args
.
slice
(
:name
,
:description
,
:timezone
)
params:
args
.
slice
(
:name
,
:description
,
:timezone
)
).
execute
).
execute
end
end
end
end
...
...
ee/app/graphql/mutations/incident_management/oncall_schedule/destroy.rb
View file @
9729ea36
...
@@ -18,9 +18,9 @@ module Mutations
...
@@ -18,9 +18,9 @@ module Mutations
oncall_schedule
=
authorized_find!
(
project_path:
project_path
,
iid:
iid
)
oncall_schedule
=
authorized_find!
(
project_path:
project_path
,
iid:
iid
)
response
::
IncidentManagement
::
OncallSchedules
::
DestroyService
.
new
(
response
::
IncidentManagement
::
OncallSchedules
::
DestroyService
.
new
(
oncall_schedule
,
project:
oncall_schedule
.
project
,
current_user
current_user
:
current_user
).
execute
).
execute
(
oncall_schedule
)
end
end
end
end
end
end
...
...
ee/app/graphql/mutations/incident_management/oncall_schedule/update.rb
View file @
9729ea36
...
@@ -30,10 +30,10 @@ module Mutations
...
@@ -30,10 +30,10 @@ module Mutations
oncall_schedule
=
authorized_find!
(
project_path:
args
[
:project_path
],
iid:
args
[
:iid
])
oncall_schedule
=
authorized_find!
(
project_path:
args
[
:project_path
],
iid:
args
[
:iid
])
response
::
IncidentManagement
::
OncallSchedules
::
UpdateService
.
new
(
response
::
IncidentManagement
::
OncallSchedules
::
UpdateService
.
new
(
oncall_schedule
,
project:
oncall_schedule
.
project
,
current_user
,
current_user
:
current_user
,
args
.
slice
(
:name
,
:description
,
:timezone
)
params:
args
.
slice
(
:name
,
:description
,
:timezone
)
).
execute
).
execute
(
oncall_schedule
)
end
end
end
end
end
end
...
...
ee/app/services/incident_management/oncall_schedules/base_service.rb
View file @
9729ea36
...
@@ -2,9 +2,9 @@
...
@@ -2,9 +2,9 @@
module
IncidentManagement
module
IncidentManagement
module
OncallSchedules
module
OncallSchedules
class
BaseService
class
BaseService
<
::
BaseProjectService
def
allowed?
def
allowed?
user
&
.
can?
(
:admin_incident_management_oncall_schedule
,
project
)
current_
user
&
.
can?
(
:admin_incident_management_oncall_schedule
,
project
)
end
end
def
available?
def
available?
...
...
ee/app/services/incident_management/oncall_schedules/create_service.rb
View file @
9729ea36
...
@@ -3,15 +3,6 @@
...
@@ -3,15 +3,6 @@
module
IncidentManagement
module
IncidentManagement
module
OncallSchedules
module
OncallSchedules
class
CreateService
<
OncallSchedules
::
BaseService
class
CreateService
<
OncallSchedules
::
BaseService
# @param project [Project]
# @param user [User]
# @param params [Hash]
def
initialize
(
project
,
user
,
params
)
@project
=
project
@user
=
user
@params
=
params
end
def
execute
def
execute
return
error_no_license
unless
available?
return
error_no_license
unless
available?
return
error_no_permissions
unless
allowed?
return
error_no_permissions
unless
allowed?
...
@@ -24,8 +15,6 @@ module IncidentManagement
...
@@ -24,8 +15,6 @@ module IncidentManagement
private
private
attr_reader
:project
,
:user
,
:params
def
error_no_permissions
def
error_no_permissions
error
(
_
(
'You have insufficient permissions to create an on-call schedule for this project'
))
error
(
_
(
'You have insufficient permissions to create an on-call schedule for this project'
))
end
end
...
...
ee/app/services/incident_management/oncall_schedules/destroy_service.rb
View file @
9729ea36
...
@@ -3,15 +3,7 @@
...
@@ -3,15 +3,7 @@
module
IncidentManagement
module
IncidentManagement
module
OncallSchedules
module
OncallSchedules
class
DestroyService
<
OncallSchedules
::
BaseService
class
DestroyService
<
OncallSchedules
::
BaseService
# @param oncall_schedule [IncidentManagement::OncallSchedule]
def
execute
(
oncall_schedule
)
# @param user [User]
def
initialize
(
oncall_schedule
,
user
)
@oncall_schedule
=
oncall_schedule
@user
=
user
@project
=
oncall_schedule
.
project
end
def
execute
return
error_no_license
unless
available?
return
error_no_license
unless
available?
return
error_no_permissions
unless
allowed?
return
error_no_permissions
unless
allowed?
...
@@ -24,8 +16,6 @@ module IncidentManagement
...
@@ -24,8 +16,6 @@ module IncidentManagement
private
private
attr_reader
:oncall_schedule
,
:user
,
:project
def
error_no_permissions
def
error_no_permissions
error
(
_
(
'You have insufficient permissions to remove an on-call schedule from this project'
))
error
(
_
(
'You have insufficient permissions to remove an on-call schedule from this project'
))
end
end
...
...
ee/app/services/incident_management/oncall_schedules/update_service.rb
View file @
9729ea36
...
@@ -3,24 +3,13 @@
...
@@ -3,24 +3,13 @@
module
IncidentManagement
module
IncidentManagement
module
OncallSchedules
module
OncallSchedules
class
UpdateService
<
OncallSchedules
::
BaseService
class
UpdateService
<
OncallSchedules
::
BaseService
# @param oncall_schedule [IncidentManagement::OncallSchedule]
def
execute
(
oncall_schedule
)
# @param user [User]
# @param params [Hash]
def
initialize
(
oncall_schedule
,
user
,
params
)
@oncall_schedule
=
oncall_schedule
@original_schedule_timezone
=
oncall_schedule
.
timezone
@user
=
user
@params
=
params
@project
=
oncall_schedule
.
project
end
def
execute
return
error_no_license
unless
available?
return
error_no_license
unless
available?
return
error_no_permissions
unless
allowed?
return
error_no_permissions
unless
allowed?
IncidentManagement
::
OncallSchedule
.
transaction
do
IncidentManagement
::
OncallSchedule
.
transaction
do
oncall_schedule
.
update!
(
params
)
oncall_schedule
.
update!
(
params
)
update_rotations!
update_rotations!
(
oncall_schedule
)
end
end
success
(
oncall_schedule
)
success
(
oncall_schedule
)
...
@@ -32,22 +21,16 @@ module IncidentManagement
...
@@ -32,22 +21,16 @@ module IncidentManagement
private
private
attr_reader
:oncall_schedule
,
:original_schedule_timezone
,
:user
,
:params
,
:project
def
update_rotations!
(
oncall_schedule
)
return
unless
oncall_schedule
.
timezone_previously_changed?
def
update_rotations!
return
if
same_schedule_timezone?
update_rotation_active_periods!
end
def
same_schedule_timezone?
update_rotation_active_periods!
(
oncall_schedule
)
original_schedule_timezone
==
oncall_schedule
.
timezone
end
end
# Converts & updates the active period to the new timezone
# Converts & updates the active period to the new timezone
# Ex: 8:00 - 17:00 Europe/Berlin becomes 6:00 - 15:00 UTC
# Ex: 8:00 - 17:00 Europe/Berlin becomes 6:00 - 15:00 UTC
def
update_rotation_active_periods!
def
update_rotation_active_periods!
(
oncall_schedule
)
original_schedule_current_time
=
Time
.
current
.
in_time_zone
(
o
riginal_schedule_timezone
)
original_schedule_current_time
=
Time
.
current
.
in_time_zone
(
o
ncall_schedule
.
timezone_previously_was
)
oncall_schedule
.
rotations
.
with_active_period
.
each
do
|
rotation
|
oncall_schedule
.
rotations
.
with_active_period
.
each
do
|
rotation
|
active_period
=
rotation
.
active_period
.
for_date
(
original_schedule_current_time
)
active_period
=
rotation
.
active_period
.
for_date
(
original_schedule_current_time
)
...
@@ -55,7 +38,7 @@ module IncidentManagement
...
@@ -55,7 +38,7 @@ module IncidentManagement
service
=
IncidentManagement
::
OncallRotations
::
EditService
.
new
(
service
=
IncidentManagement
::
OncallRotations
::
EditService
.
new
(
rotation
,
rotation
,
user
,
current_
user
,
{
{
active_period_start:
new_start_time
,
active_period_start:
new_start_time
,
active_period_end:
new_end_time
active_period_end:
new_end_time
...
...
ee/spec/services/incident_management/oncall_schedules/create_service_spec.rb
View file @
9729ea36
...
@@ -9,7 +9,7 @@ RSpec.describe IncidentManagement::OncallSchedules::CreateService do
...
@@ -9,7 +9,7 @@ RSpec.describe IncidentManagement::OncallSchedules::CreateService do
let
(
:current_user
)
{
user_with_permissions
}
let
(
:current_user
)
{
user_with_permissions
}
let
(
:params
)
{
{
name:
'On-call schedule'
,
description:
'On-call schedule description'
,
timezone:
'Europe/Berlin'
}
}
let
(
:params
)
{
{
name:
'On-call schedule'
,
description:
'On-call schedule description'
,
timezone:
'Europe/Berlin'
}
}
let
(
:service
)
{
described_class
.
new
(
project
,
current_user
,
params
)
}
let
(
:service
)
{
described_class
.
new
(
project
:
project
,
current_user:
current_user
,
params:
params
)
}
before
do
before
do
stub_licensed_features
(
oncall_schedules:
true
)
stub_licensed_features
(
oncall_schedules:
true
)
...
...
ee/spec/services/incident_management/oncall_schedules/destroy_service_spec.rb
View file @
9729ea36
...
@@ -10,7 +10,7 @@ RSpec.describe IncidentManagement::OncallSchedules::DestroyService do
...
@@ -10,7 +10,7 @@ RSpec.describe IncidentManagement::OncallSchedules::DestroyService do
let!
(
:oncall_schedule
)
{
create
(
:incident_management_oncall_schedule
,
project:
project
)
}
let!
(
:oncall_schedule
)
{
create
(
:incident_management_oncall_schedule
,
project:
project
)
}
let
(
:current_user
)
{
user_with_permissions
}
let
(
:current_user
)
{
user_with_permissions
}
let
(
:params
)
{
{}
}
let
(
:params
)
{
{}
}
let
(
:service
)
{
described_class
.
new
(
oncall_schedule
,
current_user
)
}
let
(
:service
)
{
described_class
.
new
(
project:
project
,
current_user:
current_user
)
}
before
do
before
do
stub_licensed_features
(
oncall_schedules:
true
)
stub_licensed_features
(
oncall_schedules:
true
)
...
@@ -25,7 +25,7 @@ RSpec.describe IncidentManagement::OncallSchedules::DestroyService do
...
@@ -25,7 +25,7 @@ RSpec.describe IncidentManagement::OncallSchedules::DestroyService do
end
end
end
end
subject
(
:execute
)
{
service
.
execute
}
subject
(
:execute
)
{
service
.
execute
(
oncall_schedule
)
}
context
'when the current_user is anonymous'
do
context
'when the current_user is anonymous'
do
let
(
:current_user
)
{
nil
}
let
(
:current_user
)
{
nil
}
...
...
ee/spec/services/incident_management/oncall_schedules/update_service_spec.rb
View file @
9729ea36
...
@@ -11,7 +11,7 @@ RSpec.describe IncidentManagement::OncallSchedules::UpdateService do
...
@@ -11,7 +11,7 @@ RSpec.describe IncidentManagement::OncallSchedules::UpdateService do
let
(
:current_user
)
{
user_with_permissions
}
let
(
:current_user
)
{
user_with_permissions
}
let
(
:new_timezone
)
{
'America/New_York'
}
let
(
:new_timezone
)
{
'America/New_York'
}
let
(
:params
)
{
{
name:
'Updated name'
,
description:
'Updated description'
,
timezone:
new_timezone
}
}
let
(
:params
)
{
{
name:
'Updated name'
,
description:
'Updated description'
,
timezone:
new_timezone
}
}
let
(
:service
)
{
described_class
.
new
(
oncall_schedule
,
current_user
,
params
)
}
let
(
:service
)
{
described_class
.
new
(
project:
project
,
current_user:
current_user
,
params:
params
)
}
before
do
before
do
stub_licensed_features
(
oncall_schedules:
true
)
stub_licensed_features
(
oncall_schedules:
true
)
...
@@ -26,7 +26,7 @@ RSpec.describe IncidentManagement::OncallSchedules::UpdateService do
...
@@ -26,7 +26,7 @@ RSpec.describe IncidentManagement::OncallSchedules::UpdateService do
end
end
end
end
subject
(
:execute
)
{
service
.
execute
}
subject
(
:execute
)
{
service
.
execute
(
oncall_schedule
)
}
context
'when the current_user is anonymous'
do
context
'when the current_user is anonymous'
do
let
(
:current_user
)
{
nil
}
let
(
:current_user
)
{
nil
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment