Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
N
Noah
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
Noah
Commits
fccbcc4e
Commit
fccbcc4e
authored
Feb 20, 2011
by
John E. Vincent
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
breaking out routes into distinct files for obvious reasons
parent
668165a1
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
265 additions
and
244 deletions
+265
-244
app.rb
lib/noah/app.rb
+5
-243
application_routes.rb
lib/noah/application_routes.rb
+62
-0
configuration_routes.rb
lib/noah/configuration_routes.rb
+73
-0
helpers.rb
lib/noah/helpers.rb
+1
-1
host_routes.rb
lib/noah/host_routes.rb
+61
-0
service_routes.rb
lib/noah/service_routes.rb
+63
-0
No files found.
lib/noah/app.rb
View file @
fccbcc4e
...
...
@@ -30,7 +30,7 @@ module Noah
# Need to move this out to configuration.
# Maybe bootstrap them from itself?
content_type_mapping
=
{
@
content_type_mapping
=
{
:yaml
=>
"text/x-yaml"
,
:json
=>
"application/json"
,
:xml
=>
"text/xml"
,
...
...
@@ -58,248 +58,10 @@ module Noah
erb
:'500'
end
# GET named {Service} for named {Host}
get
'/h/:hostname/:servicename/?'
do
|
hostname
,
servicename
|
h
=
host_service
(
hostname
,
servicename
)
if
h
.
nil?
halt
404
else
h
.
to_json
end
end
# GET named {Host}
# @param :hostname name of {Host}
# @return [JSON] representation of {Host}
get
'/h/:hostname/?'
do
|
hostname
|
h
=
host
(
:name
=>
hostname
)
if
h
.
nil?
halt
404
else
h
.
to_json
end
end
# GET all {Hosts}
get
'/h/?'
do
hosts
.
map
{
|
h
|
h
.
to_hash
}
if
hosts
.
size
==
0
halt
404
else
hosts
.
to_json
end
end
put
'/h/:hostname/?'
do
|
hostname
|
required_params
=
[
"name"
,
"status"
]
data
=
JSON
.
parse
(
request
.
body
.
read
)
(
data
.
keys
.
sort
==
required_params
.
sort
&&
data
[
'name'
]
==
hostname
)
?
(
host
=
::
Host
.
find_or_create
(:
name
=>
data
[
'name'
],
:status
=>
data
[
'status'
]))
:
(
raise
"Missing Parameters"
)
if
host
.
valid?
r
=
{
"result"
=>
"success"
,
"id"
=>
"
#{
host
.
id
}
"
,
"status"
=>
"
#{
host
.
status
}
"
,
"name"
=>
"
#{
host
.
name
}
"
,
"new_record"
=>
host
.
is_new?
}
r
.
to_json
else
raise
"
#{
host
.
errors
}
"
end
end
delete
'/h/:hostname/?'
do
|
hostname
|
host
=
::
Host
.
find
(
:name
=>
hostname
).
first
if
host
services
=
[]
Service
.
find
(
:host_id
=>
host
.
id
).
sort
.
each
{
|
x
|
services
<<
x
;
x
.
delete
}
if
host
.
services
.
size
>
0
host
.
delete
r
=
{
"result"
=>
"success"
,
"id"
=>
"
#{
host
.
id
}
"
,
"name"
=>
"
#{
hostname
}
"
,
"service_count"
=>
"
#{
services
.
size
}
"
}
r
.
to_json
else
halt
404
end
end
# Service URIs
# get named {Service} for named {Host}
get
'/s/:servicename/:hostname/?'
do
|
servicename
,
hostname
|
hs
=
host_service
(
hostname
,
servicename
)
if
hs
.
nil?
halt
404
else
hs
.
to_json
end
end
get
'/s/:servicename/?'
do
|
servicename
|
s
=
services
(
:name
=>
servicename
)
s
.
map
{
|
x
|
x
.
to_hash
}
if
s
.
empty?
halt
404
else
s
.
to_json
end
end
get
'/s/?'
do
if
services
.
empty?
halt
404
else
services
.
map
{
|
s
|
s
.
to_hash
}
services
.
to_json
end
end
put
'/s/:servicename/?'
do
|
servicename
|
required_params
=
[
"status"
,
"host"
,
"name"
]
data
=
JSON
.
parse
(
request
.
body
.
read
)
if
data
.
keys
.
sort
==
required_params
.
sort
h
=
::
Host
.
find
(
:name
=>
data
[
'host'
]).
first
||
(
raise
"Invalid Host"
)
service
=
::
Service
.
find_or_create
(
:name
=>
servicename
,
:status
=>
data
[
'status'
],
:host
=>
h
)
if
service
.
valid?
action
=
service
.
is_new?
?
"create"
:
"update"
service
.
save
r
=
{
"action"
=>
action
,
"result"
=>
"success"
,
"id"
=>
service
.
id
,
"host"
=>
h
.
name
,
"name"
=>
service
.
name
}
r
.
to_json
else
raise
"
#{
service
.
errors
}
"
end
else
raise
"Missing Parameters"
end
end
delete
'/s/:servicename/:hostname/?'
do
|
servicename
,
hostname
|
host
=
::
Host
.
find
(
:name
=>
hostname
).
first
||
(
halt
404
)
service
=
::
Service
.
find
(
:name
=>
servicename
,
:host_id
=>
host
.
id
).
first
||
(
halt
404
)
if
host
&&
service
service
.
delete
r
=
{
"action"
=>
"delete"
,
"result"
=>
"success"
,
"id"
=>
service
.
id
,
"host"
=>
host
.
name
,
"service"
=>
servicename
}
r
.
to_json
else
halt
404
end
end
load
File
.
join
(
File
.
dirname
(
__FILE__
),
'host_routes.rb'
)
load
File
.
join
(
File
.
dirname
(
__FILE__
),
'service_routes.rb'
)
load
File
.
join
(
File
.
dirname
(
__FILE__
),
'application_routes.rb'
)
load
File
.
join
(
File
.
dirname
(
__FILE__
),
'configuration_routes.rb'
)
get
'/a/:appname/:config/?'
do
|
appname
,
config
|
app
=
::
Application
.
find
(
:name
=>
appname
).
first
if
app
.
nil?
halt
404
else
c
=
::
Configuration
.
find
(
:name
=>
config
,
:application_id
=>
app
.
id
).
first
c
.
to_json
end
end
get
'/a/:appname/?'
do
|
appname
|
app
=
::
Application
.
find
(
:name
=>
appname
).
first
if
app
.
nil?
halt
404
else
app
.
to_json
end
end
put
'/a/:appname/?'
do
|
appname
|
required_params
=
[
"name"
]
data
=
JSON
.
parse
(
request
.
body
.
read
)
if
data
.
keys
.
sort
==
required_params
.
sort
&&
data
[
'name'
]
==
appname
app
=
::
Application
.
find_or_create
(
:name
=>
appname
)
else
raise
"Missing Parameters"
end
if
app
.
valid?
action
=
app
.
is_new?
?
"create"
:
"update"
app
.
save
r
=
{
"result"
=>
"success"
,
"id"
=>
app
.
id
,
"action"
=>
action
,
"name"
=>
app
.
name
}
r
.
to_json
else
raise
"
#{
app
.
errors
}
"
end
end
delete
'/a/:appname/?'
do
|
appname
|
app
=
::
Application
.
find
(
:name
=>
appname
).
first
if
app
.
nil?
halt
404
else
configurations
=
[]
::
Configuration
.
find
(
:application_id
=>
app
.
id
).
sort
.
each
{
|
x
|
configurations
<<
x
;
x
.
delete
}
if
app
.
configurations
.
size
>
0
app
.
delete
r
=
{
"result"
=>
"success"
,
"action"
=>
"delete"
,
"id"
=>
"
#{
app
.
id
}
"
,
"name"
=>
"
#{
appname
}
"
,
"configurations"
=>
"
#{
configurations
.
size
}
"
}
r
.
to_json
end
end
get
'/a/?'
do
apps
=
[]
::
Application
.
all
.
sort
.
each
{
|
a
|
apps
<<
a
.
to_hash
}
if
apps
.
empty?
halt
404
else
apps
.
to_json
end
end
get
'/c/:appname/:element/?'
do
|
appname
,
element
|
a
=
::
Application
.
find
(
:name
=>
appname
).
first
if
a
.
nil?
halt
404
else
c
=
::
Configuration
.
find
(
:name
=>
element
,
:application_id
=>
a
.
id
).
first
content_type
content_type_mapping
[
c
.
format
.
to_sym
]
if
content_type_mapping
[
c
.
format
.
to_sym
]
c
.
body
end
end
get
'/c/:appname/?'
do
|
appname
|
config
=
[]
a
=
::
Application
.
find
(
:name
=>
appname
).
first
if
a
.
nil?
halt
404
else
::
Configuration
.
find
(
:application_id
=>
a
.
id
).
sort
.
each
{
|
c
|
config
<<
c
.
to_hash
}
config
.
to_json
end
end
get
'/c/?'
do
configs
=
[]
::
Configuration
.
all
.
sort
.
each
{
|
c
|
configs
<<
c
.
to_hash
}
if
configs
.
empty?
halt
404
else
configs
.
to_json
end
end
put
'/c/:appname/:element?'
do
|
appname
,
element
|
app
=
::
Application
.
find_or_create
(
:name
=>
appname
)
config
=
::
Configuration
.
find_or_create
(
:name
=>
element
,
:application_id
=>
app
.
id
)
required_params
=
[
"format"
,
"body"
]
data
=
JSON
.
parse
(
request
.
body
.
read
)
data
.
keys
.
sort
==
required_params
.
sort
?
(
config
.
format
=
data
[
"format"
];
config
.
body
=
data
[
"body"
])
:
(
raise
"Missing Parameters"
)
if
config
.
valid?
config
.
save
action
=
config
.
is_new?
?
"create"
:
"update"
dependency_action
=
app
.
is_new?
?
"created"
:
"updated"
r
=
{
"result"
=>
"success"
,
"id"
=>
"
#{
config
.
id
}
"
,
"action"
=>
action
,
"dependencies"
=>
dependency_action
,
"application"
=>
app
.
name
,
"item"
=>
config
.
name
}
r
.
to_json
else
raise
"
#{
config
.
errors
}
"
end
end
delete
'/c/:appname/:element?'
do
|
appname
,
element
|
app
=
::
Application
.
find
(
:name
=>
appname
).
first
if
app
config
=
::
Configuration
.
find
(
:name
=>
element
,
:application_id
=>
app
.
id
).
first
if
config
config
.
delete
r
=
{
"result"
=>
"success"
,
"id"
=>
"
#{
config
.
id
}
"
,
"action"
=>
"delete"
,
"application"
=>
"
#{
app
.
name
}
"
,
"item"
=>
"
#{
element
}
"
}
r
.
to_json
else
halt
404
end
else
halt
404
end
end
end
end
lib/noah/application_routes.rb
0 → 100644
View file @
fccbcc4e
class
Noah
::
App
# Application URIs
get
'/a/:appname/:config/?'
do
|
appname
,
config
|
app
=
::
Application
.
find
(
:name
=>
appname
).
first
if
app
.
nil?
halt
404
else
c
=
::
Configuration
.
find
(
:name
=>
config
,
:application_id
=>
app
.
id
).
first
c
.
to_json
end
end
get
'/a/:appname/?'
do
|
appname
|
app
=
::
Application
.
find
(
:name
=>
appname
).
first
if
app
.
nil?
halt
404
else
app
.
to_json
end
end
put
'/a/:appname/?'
do
|
appname
|
required_params
=
[
"name"
]
data
=
JSON
.
parse
(
request
.
body
.
read
)
if
data
.
keys
.
sort
==
required_params
.
sort
&&
data
[
'name'
]
==
appname
app
=
::
Application
.
find_or_create
(
:name
=>
appname
)
else
raise
"Missing Parameters"
end
if
app
.
valid?
action
=
app
.
is_new?
?
"create"
:
"update"
app
.
save
r
=
{
"result"
=>
"success"
,
"id"
=>
app
.
id
,
"action"
=>
action
,
"name"
=>
app
.
name
}
r
.
to_json
else
raise
"
#{
app
.
errors
}
"
end
end
delete
'/a/:appname/?'
do
|
appname
|
app
=
::
Application
.
find
(
:name
=>
appname
).
first
if
app
.
nil?
halt
404
else
configurations
=
[]
::
Configuration
.
find
(
:application_id
=>
app
.
id
).
sort
.
each
{
|
x
|
configurations
<<
x
;
x
.
delete
}
if
app
.
configurations
.
size
>
0
app
.
delete
r
=
{
"result"
=>
"success"
,
"action"
=>
"delete"
,
"id"
=>
"
#{
app
.
id
}
"
,
"name"
=>
"
#{
appname
}
"
,
"configurations"
=>
"
#{
configurations
.
size
}
"
}
r
.
to_json
end
end
get
'/a/?'
do
apps
=
[]
::
Application
.
all
.
sort
.
each
{
|
a
|
apps
<<
a
.
to_hash
}
if
apps
.
empty?
halt
404
else
apps
.
to_json
end
end
end
lib/noah/configuration_routes.rb
0 → 100644
View file @
fccbcc4e
class
Noah
::
App
content_type_mapping
=
{
:yaml
=>
"text/x-yaml"
,
:json
=>
"application/json"
,
:xml
=>
"text/xml"
,
:string
=>
"text/plain"
}
# Configuration URIs
get
'/c/:appname/:element/?'
do
|
appname
,
element
|
a
=
::
Application
.
find
(
:name
=>
appname
).
first
if
a
.
nil?
halt
404
else
c
=
::
Configuration
.
find
(
:name
=>
element
,
:application_id
=>
a
.
id
).
first
content_type
content_type_mapping
[
c
.
format
.
to_sym
]
if
content_type_mapping
[
c
.
format
.
to_sym
]
c
.
body
end
end
get
'/c/:appname/?'
do
|
appname
|
config
=
[]
a
=
::
Application
.
find
(
:name
=>
appname
).
first
if
a
.
nil?
halt
404
else
::
Configuration
.
find
(
:application_id
=>
a
.
id
).
sort
.
each
{
|
c
|
config
<<
c
.
to_hash
}
config
.
to_json
end
end
get
'/c/?'
do
configs
=
[]
::
Configuration
.
all
.
sort
.
each
{
|
c
|
configs
<<
c
.
to_hash
}
if
configs
.
empty?
halt
404
else
configs
.
to_json
end
end
put
'/c/:appname/:element?'
do
|
appname
,
element
|
app
=
::
Application
.
find_or_create
(
:name
=>
appname
)
config
=
::
Configuration
.
find_or_create
(
:name
=>
element
,
:application_id
=>
app
.
id
)
required_params
=
[
"format"
,
"body"
]
data
=
JSON
.
parse
(
request
.
body
.
read
)
data
.
keys
.
sort
==
required_params
.
sort
?
(
config
.
format
=
data
[
"format"
];
config
.
body
=
data
[
"body"
])
:
(
raise
"Missing Parameters"
)
if
config
.
valid?
config
.
save
action
=
config
.
is_new?
?
"create"
:
"update"
dependency_action
=
app
.
is_new?
?
"created"
:
"updated"
r
=
{
"result"
=>
"success"
,
"id"
=>
"
#{
config
.
id
}
"
,
"action"
=>
action
,
"dependencies"
=>
dependency_action
,
"application"
=>
app
.
name
,
"item"
=>
config
.
name
}
r
.
to_json
else
raise
"
#{
config
.
errors
}
"
end
end
delete
'/c/:appname/:element?'
do
|
appname
,
element
|
app
=
::
Application
.
find
(
:name
=>
appname
).
first
if
app
config
=
::
Configuration
.
find
(
:name
=>
element
,
:application_id
=>
app
.
id
).
first
if
config
config
.
delete
r
=
{
"result"
=>
"success"
,
"id"
=>
"
#{
config
.
id
}
"
,
"action"
=>
"delete"
,
"application"
=>
"
#{
app
.
name
}
"
,
"item"
=>
"
#{
element
}
"
}
r
.
to_json
else
halt
404
end
else
halt
404
end
end
end
lib/noah/helpers.rb
View file @
fccbcc4e
...
...
@@ -4,7 +4,7 @@ module Noah
extend
(
Ohm
)
def
host
(
opts
=
{})
Host
.
find
(
opts
).
first
Host
.
find
(
opts
).
first
end
def
hosts
(
opts
=
{})
...
...
lib/noah/host_routes.rb
0 → 100644
View file @
fccbcc4e
class
Noah
::
App
# Host URIs
# GET named {Service} for named {Host}
get
'/h/:hostname/:servicename/?'
do
|
hostname
,
servicename
|
h
=
host_service
(
hostname
,
servicename
)
if
h
.
nil?
halt
404
else
h
.
to_json
end
end
# GET named {Host}
# @param :hostname name of {Host}
# @return [JSON] representation of {Host}
get
'/h/:hostname/?'
do
|
hostname
|
h
=
host
(
:name
=>
hostname
)
if
h
.
nil?
halt
404
else
h
.
to_json
end
end
# GET all {Hosts}
get
'/h/?'
do
hosts
.
map
{
|
h
|
h
.
to_hash
}
if
hosts
.
size
==
0
halt
404
else
hosts
.
to_json
end
end
put
'/h/:hostname/?'
do
|
hostname
|
required_params
=
[
"name"
,
"status"
]
data
=
JSON
.
parse
(
request
.
body
.
read
)
(
data
.
keys
.
sort
==
required_params
.
sort
&&
data
[
'name'
]
==
hostname
)
?
(
host
=
::
Host
.
find_or_create
(:
name
=>
data
[
'name'
],
:status
=>
data
[
'status'
]))
:
(
raise
"Missing Parameters"
)
if
host
.
valid?
r
=
{
"result"
=>
"success"
,
"id"
=>
"
#{
host
.
id
}
"
,
"status"
=>
"
#{
host
.
status
}
"
,
"name"
=>
"
#{
host
.
name
}
"
,
"new_record"
=>
host
.
is_new?
}
r
.
to_json
else
raise
"
#{
host
.
errors
}
"
end
end
delete
'/h/:hostname/?'
do
|
hostname
|
host
=
::
Host
.
find
(
:name
=>
hostname
).
first
if
host
services
=
[]
Service
.
find
(
:host_id
=>
host
.
id
).
sort
.
each
{
|
x
|
services
<<
x
;
x
.
delete
}
if
host
.
services
.
size
>
0
host
.
delete
r
=
{
"result"
=>
"success"
,
"id"
=>
"
#{
host
.
id
}
"
,
"name"
=>
"
#{
hostname
}
"
,
"service_count"
=>
"
#{
services
.
size
}
"
}
r
.
to_json
else
halt
404
end
end
end
lib/noah/service_routes.rb
0 → 100644
View file @
fccbcc4e
class
Noah
::
App
# Service URIs
# get named {Service} for named {Host}
get
'/s/:servicename/:hostname/?'
do
|
servicename
,
hostname
|
hs
=
host_service
(
hostname
,
servicename
)
if
hs
.
nil?
halt
404
else
hs
.
to_json
end
end
get
'/s/:servicename/?'
do
|
servicename
|
s
=
services
(
:name
=>
servicename
)
s
.
map
{
|
x
|
x
.
to_hash
}
if
s
.
empty?
halt
404
else
s
.
to_json
end
end
get
'/s/?'
do
if
services
.
empty?
halt
404
else
services
.
map
{
|
s
|
s
.
to_hash
}
services
.
to_json
end
end
put
'/s/:servicename/?'
do
|
servicename
|
required_params
=
[
"status"
,
"host"
,
"name"
]
data
=
JSON
.
parse
(
request
.
body
.
read
)
if
data
.
keys
.
sort
==
required_params
.
sort
h
=
::
Host
.
find
(
:name
=>
data
[
'host'
]).
first
||
(
raise
"Invalid Host"
)
service
=
::
Service
.
find_or_create
(
:name
=>
servicename
,
:status
=>
data
[
'status'
],
:host
=>
h
)
if
service
.
valid?
action
=
service
.
is_new?
?
"create"
:
"update"
service
.
save
r
=
{
"action"
=>
action
,
"result"
=>
"success"
,
"id"
=>
service
.
id
,
"host"
=>
h
.
name
,
"name"
=>
service
.
name
}
r
.
to_json
else
raise
"
#{
service
.
errors
}
"
end
else
raise
"Missing Parameters"
end
end
delete
'/s/:servicename/:hostname/?'
do
|
servicename
,
hostname
|
host
=
::
Host
.
find
(
:name
=>
hostname
).
first
||
(
halt
404
)
service
=
::
Service
.
find
(
:name
=>
servicename
,
:host_id
=>
host
.
id
).
first
||
(
halt
404
)
if
host
&&
service
service
.
delete
r
=
{
"action"
=>
"delete"
,
"result"
=>
"success"
,
"id"
=>
service
.
id
,
"host"
=>
host
.
name
,
"service"
=>
servicename
}
r
.
to_json
else
halt
404
end
end
end
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