aboutsummaryrefslogtreecommitdiffstats
path: root/service-monitor/src/main/java/com/yahoo/vespa/service/monitor/DuperModelListener.java
blob: 8051770a02a8b5816e2d0820d63d0ba28a7da3b2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.service.monitor;

import com.yahoo.config.model.api.ApplicationInfo;
import com.yahoo.config.model.api.SuperModel;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.vespa.service.duper.DuperModel;

/**
 * Interface for listening for changes to the {@link DuperModel}.
 *
 * @author hakonhall
 */
public interface DuperModelListener {
    /**
     * An application has been activated:
     *
     * <ul>
     *     <li>A synthetic application like the config server application has been added/activated
     *     <li>A super model application has been activated (see
     *     {@link com.yahoo.config.model.api.SuperModelListener#applicationActivated(SuperModel, ApplicationInfo)
     *     SuperModelListener}
     * </ul>
     *
     * <p>No other threads will concurrently call any methods on this interface.</p>
     */
    void applicationActivated(ApplicationInfo application);

    /**
     * Application has been removed.
     *
     * <p>No other threads will concurrently call any methods on this interface.</p>
     */
    void applicationRemoved(ApplicationId id);

    /**
     * During bootstrap of the config server, a number of applications are activated before
     * resuming normal operations: The normal "tenant" application (making the super model) and
     * the relevant infrastructure applications. Once all of these have been activated, this method
     * will be invoked.
     *
     * <p>No other threads will concurrently call any methods on this interface.</p>
     */
    void bootstrapComplete();
}