Module: Cuboid::Rest::Server::Routes::Scheduler

Defined in:
lib/cuboid/rest/server/routes/scheduler.rb

Class Method Summary collapse

Class Method Details

.registered(app) ⇒ Object



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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# File 'lib/cuboid/rest/server/routes/scheduler.rb', line 8

def self.registered( app )

    app.get '/scheduler' do
        ensure_scheduler!

        handle_error do
            json scheduler.list
        end
    end

    app.get '/scheduler/url' do
        ensure_scheduler!

        handle_error do
            json Options.scheduler.url
        end
    end

    app.put '/scheduler/url' do
        url = ::JSON.load( request.body.read ) || {}

        handle_error do
            connect_to_scheduler( url ).alive?

            @scheduler = nil
            Options.scheduler.url = url
            json nil
        end
    end

    app.delete '/scheduler/url' do
        ensure_scheduler!

        json @scheduler = Options.scheduler.url = nil
    end

    app.get '/scheduler/running' do
        ensure_scheduler!

        handle_error do
            json scheduler.running
        end
    end

    app.get '/scheduler/completed' do
        ensure_scheduler!

        handle_error do
            json scheduler.completed
        end
    end

    app.get '/scheduler/failed' do
        ensure_scheduler!

        handle_error do
            json scheduler.failed
        end
    end

    app.get '/scheduler/size' do
        ensure_scheduler!

        handle_error do
            json scheduler.size
        end
    end

    app.delete '/scheduler' do
        ensure_scheduler!

        handle_error do
            json scheduler.clear
        end
    end

    app.post '/scheduler' do
        ensure_scheduler!

        handle_error do
            json id: scheduler.push( *[::JSON.load( request.body.read )].flatten )
        end
    end

    app.get '/scheduler/:instance' do |instance|
        ensure_scheduler!

        handle_error do
            instance = scheduler.get( instance )
            if !instance
                halt 404, json( 'Instance not in Scheduler.' )
            end

            json instance
        end
    end

    app.put '/scheduler/:instance/detach' do |instance|
        ensure_scheduler!

        handle_error do
            info = scheduler.detach( instance )

            if !info
                halt 404, json( 'Instance not in Scheduler.' )
            end

            instances[instance] ||= connect_to_instance( info['url'], info['token'] )
        end

        json nil
    end

    app.delete '/scheduler/:instance' do |instance|
        ensure_scheduler!

        handle_error do
            if scheduler.remove( instance )
                json nil
            else
                halt 404, json( 'Instance not in Scheduler.' )
            end
        end
    end

end