uyuni-project / uyuni

Source code for Uyuni
https://www.uyuni-project.org/
GNU General Public License v2.0
414 stars 173 forks source link

api scheduling does not work with maintainance windows #8924

Closed fockarty closed 22 hours ago

fockarty commented 3 weeks ago

Problem description

If a system has a maintainance windows (lets say 3th tuesday 2300 CET) is not possible to use system/schedulePackageUpdate via the api.

expected: the job gets scheduled for the first window after earliestOccurence

actual : the api gives an internal server error

which is very strange because the json has earliestOccurrence which suggests that the job should be scheduled after that date

Steps to reproduce

  1. API=https://servername/rhn/manager/api

  2. curl -H "Content-Type: application/json" -d '{"login": "admin", "password": "secret"}' -i $API/auth/login -k

  3. curl -k -v -H "Content-Type: application/json" --cookie "pxt-session-cookie=; Max-Age=3600; Expires=date/time GMT; Path=/; Secure; HttpOnly;HttpOnly;Secure" \ $API/system/schedulePackageUpdate -d '{"sids": 1000010001, "earliestOccurrence": "Jun 18, 2024, 09:00:00 PM"}' -k -v

  4. response is 500 Internal Server Error instead of real error (bug numbert ), real error see logs field

...

Uyuni version

Information for package Uyuni-Server-release:
---------------------------------------------
Repository     : @System
Name           : Uyuni-Server-release
Version        : 2024.05-230900.217.1.uyuni3
Arch           : x86_64
Vendor         : obs://build.opensuse.org/systemsmanagement:Uyuni
Installed Size : 1.4 KiB
Installed      : Yes (automatically)
Status         : up-to-date
Source package : Uyuni-Server-release-2024.05-230900.217.1.uyuni3.src
Summary        : Uyuni Server
Description    :
    Uyuni lets you efficiently manage physical, virtual,
    and cloud-based Linux systems. It provides automated and cost-effective
    configuration and software management, asset management, and system
    provisioning.

Uyuni proxy version (if used)

No response

Useful logs

2024-06-14 07:44:56,707 [ajp-nio-0:0:0:0:0:0:0:1-8009-exec-5] ERROR spark.http.matching.GeneralError -
java.lang.RuntimeException: com.suse.manager.maintenance.NotInMaintenanceModeException: Systems assigned to these schedules (updates 3de dinsdag) do not have a maintenance window at Tue Jun 18 21:00:00 UTC 2024
        at com.suse.manager.api.RouteFactory.lambda$createRoute$1(RouteFactory.java:212) ~[rhn.jar:?]
        at com.suse.manager.webui.utils.SparkApplicationHelper.lambda$asJson$10(SparkApplicationHelper.java:415) ~[rhn.jar:?]
        at spark.RouteImpl$1.handle(RouteImpl.java:72) ~[spark-corespark-core.jar:?]
        at spark.http.matching.Routes.execute(Routes.java:61) ~[spark-corespark-core.jar:?]
        at spark.http.matching.MatcherFilter.doFilter(MatcherFilter.java:134) ~[spark-corespark-core.jar:?]
        at spark.servlet.SparkFilter.doFilter(SparkFilter.java:174) ~[spark-corespark-core.jar:?]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:179) ~[catalina.jar:9.0.87]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:154) ~[catalina.jar:9.0.87]
        at com.redhat.rhn.frontend.servlets.AuthFilter.doFilter(AuthFilter.java:112) ~[rhn.jar:?]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:179) ~[catalina.jar:9.0.87]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:154) ~[catalina.jar:9.0.87]
        at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:142) ~[sitemesh.jar:?]
        at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:58) ~[sitemesh.jar:?]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:179) ~[catalina.jar:9.0.87]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:154) ~[catalina.jar:9.0.87]
        at com.redhat.rhn.frontend.servlets.LocalizedEnvironmentFilter.doFilter(LocalizedEnvironmentFilter.java:71) ~[rhn.jar:?]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:179) ~[catalina.jar:9.0.87]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:154) ~[catalina.jar:9.0.87]
        at com.redhat.rhn.frontend.servlets.EnvironmentFilter.doFilter(EnvironmentFilter.java:99) ~[rhn.jar:?]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:179) ~[catalina.jar:9.0.87]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:154) ~[catalina.jar:9.0.87]
        at com.redhat.rhn.frontend.servlets.SessionFilter.doFilter(SessionFilter.java:59) ~[rhn.jar:?]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:179) ~[catalina.jar:9.0.87]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:154) ~[catalina.jar:9.0.87]
        at com.redhat.rhn.frontend.servlets.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:98) ~[rhn.jar:?]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:179) ~[catalina.jar:9.0.87]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:154) ~[catalina.jar:9.0.87]
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168) ~[catalina.jar:9.0.87]
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[catalina.jar:9.0.87]
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481) ~[catalina.jar:9.0.87]
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130) ~[catalina.jar:9.0.87]
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[catalina.jar:9.0.87]
        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:670) ~[catalina.jar:9.0.87]
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[catalina.jar:9.0.87]
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346) ~[catalina.jar:9.0.87]
        at org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:424) ~[tomcat-coyote.jar:9.0.87]
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-coyote.jar:9.0.87]
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:928) ~[tomcat-coyote.jar:9.0.87]
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1786) ~[tomcat-coyote.jar:9.0.87]
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-coyote.jar:9.0.87]
        at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-util.jar:9.0.87]
        at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-util.jar:9.0.87]
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) ~[tomcat-util.jar:9.0.87]
        at java.lang.Thread.run(Thread.java:840) ~[?:?]
Caused by: com.suse.manager.maintenance.NotInMaintenanceModeException: Systems assigned to these schedules (updates 3de dinsdag) do not have a maintenance window at Tue Jun 18 21:00:00 UTC 2024
        at com.suse.manager.maintenance.MaintenanceManager.canActionBeScheduled(MaintenanceManager.java:666) ~[rhn.jar:?]
        at com.redhat.rhn.manager.action.ActionManager.scheduleForExecution(ActionManager.java:1565) ~[rhn.jar:?]
        at com.redhat.rhn.manager.action.ActionManager.scheduleAction(ActionManager.java:1550) ~[rhn.jar:?]
        at com.redhat.rhn.manager.action.ActionManager.schedulePackageAction(ActionManager.java:1959) ~[rhn.jar:?]
        at com.redhat.rhn.frontend.xmlrpc.system.SystemHandler.schedulePackagesUpdateAction(SystemHandler.java:4177) ~[rhn.jar:?]
        at com.redhat.rhn.frontend.xmlrpc.system.SystemHandler.schedulePackageUpdate(SystemHandler.java:4362) ~[rhn.jar:?]
        at jdk.internal.reflect.GeneratedMethodAccessor3098.invoke(Unknown Source) ~[?:?]
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
        at com.suse.manager.api.MethodCall.invoke(MethodCall.java:50) ~[rhn.jar:?]
        at com.suse.manager.api.RouteFactory.lambda$createRoute$1(RouteFactory.java:187) ~[rhn.jar:?]
        ... 43 more

Additional information

No response

avshiliaev commented 3 days ago

Hi @fockarty,

Thank you for the report. Can you:

  1. Ensure the maintenance window is correctly configured. Please provide the exact window you're referring to.

  2. just in case, verify the system's time zone:

    timedatectl status

Adjust the earliestOccurrence to fit within the maintenance window.

fockarty commented 22 hours ago

Hi, it seems Uyuni and I had a disagreement about what was the third tuesday. Just tried again and all worked. Sorry to have bothered you

fockarty commented 22 hours ago

solved