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
8ba5a858
Commit
8ba5a858
authored
Apr 12, 2011
by
John E. Vincent
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
finished tagging API. need specs for Tag REST API
parent
1a001230
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
146 additions
and
58 deletions
+146
-58
app.rb
lib/noah/app.rb
+1
-0
application_routes.rb
lib/noah/application_routes.rb
+3
-2
configuration_routes.rb
lib/noah/configuration_routes.rb
+8
-0
ephemeral_routes.rb
lib/noah/ephemeral_routes.rb
+5
-5
host_routes.rb
lib/noah/host_routes.rb
+16
-0
models.rb
lib/noah/models.rb
+3
-2
link.rb
lib/noah/models/link.rb
+4
-6
tags.rb
lib/noah/models/tags.rb
+51
-13
service_routes.rb
lib/noah/service_routes.rb
+8
-0
tag_routes.rb
lib/noah/tag_routes.rb
+14
-0
noahapp_application_spec.rb
spec/noahapp_application_spec.rb
+0
-2
noahapp_ephemeral_spec.rb
spec/noahapp_ephemeral_spec.rb
+15
-15
sample_data.rb
spec/support/sample_data.rb
+8
-5
tag_spec.rb
spec/tag_spec.rb
+10
-8
No files found.
lib/noah/app.rb
View file @
8ba5a858
...
...
@@ -58,6 +58,7 @@ module Noah
erb
:'500'
end
load
File
.
join
(
File
.
dirname
(
__FILE__
),
'tag_routes.rb'
)
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'
)
...
...
lib/noah/application_routes.rb
View file @
8ba5a858
...
...
@@ -38,8 +38,9 @@ class Noah::App
put
'/applications/:appname/link'
do
|
appname
|
required_params
=
[
"link_name"
]
data
=
JSON
.
parse
(
request
.
body
.
read
)
(
data
.
keys
.
sort
==
required_params
.
sort
)
?
(
a
=
Noah
::
Applicaiton
.
find
(:
name
=>
appname
).
first
)
:
(
raise
"Missing Parameters"
)
#a.nil? ? (halt 404) : (a.link!
(
data
.
keys
.
sort
==
required_params
.
sort
)
?
(
a
=
Noah
::
Application
.
find
(:
name
=>
appname
).
first
)
:
(
raise
"Missing Parameters"
)
a
.
nil?
?
(
halt
404
)
:
(
a
.
link!
data
[
"link_name"
])
a
.
to_json
end
put
'/applications/:appname/?'
do
|
appname
|
...
...
lib/noah/configuration_routes.rb
View file @
8ba5a858
...
...
@@ -38,6 +38,14 @@ class Noah::App
end
end
put
'/configurations/:configname/tag'
do
|
configname
|
required_params
=
[
"tags"
]
data
=
JSON
.
parse
(
request
.
body
.
read
)
(
data
.
keys
.
sort
==
required_params
.
sort
)
?
(
c
=
Noah
::
Configuration
.
find
(:
name
=>
configname
).
first
)
:
(
raise
"Missing Parameters"
)
c
.
nil?
?
(
halt
404
)
:
(
c
.
tag!
(
data
[
'tags'
]))
c
.
to_json
end
put
'/configurations/:configname/watch'
do
|
configname
|
required_params
=
[
"endpoint"
]
data
=
JSON
.
parse
(
request
.
body
.
read
)
...
...
lib/noah/ephemeral_routes.rb
View file @
8ba5a858
class
Noah
::
App
get
'/e/?'
do
get
'/e
phemerals
/?'
do
halt
404
end
get
'/e/*'
do
get
'/e
phemerals
/*'
do
params
[
"splat"
].
size
==
0
?
(
halt
404
)
:
(
e
=
Noah
::
Ephemeral
.
find
(
:path
=>
"/
#{
params
[
"splat"
][
0
]
}
"
).
first
)
(
halt
404
)
if
e
.
nil?
content_type
"application/octet-stream"
e
.
data
.
nil?
?
""
:
"
#{
e
.
data
}
"
end
put
'/e/*/watch'
do
put
'/e
phemerals
/*/watch'
do
required_params
=
[
"endpoint"
]
data
=
JSON
.
parse
(
request
.
body
.
read
)
(
data
.
keys
.
sort
==
required_params
.
sort
)
?
(
e
=
Noah
::
Watcher
.
find
(:
path
=>
params
[
:splat
][
0
]).
first
)
:
(
raise
"Missing Parameters"
)
...
...
@@ -18,7 +18,7 @@ class Noah::App
w
.
to_json
end
put
'/e/*'
do
put
'/e
phemerals
/*'
do
raise
(
"Data too large"
)
if
request
.
body
.
size
>
512
d
=
request
.
body
.
read
||
nil
opts
=
{
:path
=>
"/
#{
params
[
:splat
][
0
]
}
"
,
:data
=>
d
}
...
...
@@ -32,7 +32,7 @@ class Noah::App
end
end
delete
'/e/*'
do
delete
'/e
phemerals
/*'
do
p
=
params
[
:splat
][
0
]
e
=
Noah
::
Ephemeral
.
find
(
:path
=>
"/"
+
p
).
first
if
e
...
...
lib/noah/host_routes.rb
View file @
8ba5a858
...
...
@@ -32,6 +32,14 @@ class Noah::App
end
end
put
'/hosts/:hostname/tag'
do
|
hostname
|
required_params
=
[
"tags"
]
data
=
JSON
.
parse
(
request
.
body
.
read
)
(
data
.
keys
.
sort
==
required_params
.
sort
)
?
(
a
=
Noah
::
Host
.
find
(:
name
=>
hostname
).
first
)
:
(
raise
"Missing Parameters"
)
a
.
nil?
?
(
halt
404
)
:
(
a
.
tag!
(
data
[
'tags'
]))
a
.
to_json
end
put
'/hosts/:hostname/watch'
do
|
hostname
|
required_params
=
[
"endpoint"
]
data
=
JSON
.
parse
(
request
.
body
.
read
)
...
...
@@ -40,6 +48,14 @@ class Noah::App
w
.
to_json
end
put
'/hosts/:hostname/link'
do
|
hostname
|
required_params
=
[
"link_name"
]
data
=
JSON
.
parse
(
request
.
body
.
read
)
(
data
.
keys
.
sort
==
required_params
.
sort
)
?
(
a
=
Noah
::
Host
.
find
(:
name
=>
hostname
).
first
)
:
(
raise
"Missing Parameters"
)
a
.
nil?
?
(
halt
404
)
:
(
a
.
link!
data
[
"link_name"
])
a
.
to_json
end
put
'/hosts/:hostname/?'
do
|
hostname
|
required_params
=
[
"name"
,
"status"
]
data
=
JSON
.
parse
(
request
.
body
.
read
)
...
...
lib/noah/models.rb
View file @
8ba5a858
...
...
@@ -111,10 +111,11 @@ module Noah
end
require
File
.
join
(
File
.
dirname
(
__FILE__
),
'
models'
,
'tags
'
)
require
File
.
join
(
File
.
dirname
(
__FILE__
),
'
linkable
'
)
require
File
.
join
(
File
.
dirname
(
__FILE__
),
'models'
,
'link'
)
require
File
.
join
(
File
.
dirname
(
__FILE__
),
'taggable'
)
require
File
.
join
(
File
.
dirname
(
__FILE__
),
'linkable'
)
require
File
.
join
(
File
.
dirname
(
__FILE__
),
'models'
,
'tags'
)
require
File
.
join
(
File
.
dirname
(
__FILE__
),
'models'
,
'link'
)
require
File
.
join
(
File
.
dirname
(
__FILE__
),
'models'
,
'hosts'
)
require
File
.
join
(
File
.
dirname
(
__FILE__
),
'models'
,
'services'
)
require
File
.
join
(
File
.
dirname
(
__FILE__
),
'models'
,
'applications'
)
...
...
lib/noah/models/link.rb
View file @
8ba5a858
...
...
@@ -23,7 +23,7 @@ module Noah
end
else
self
.
key
[
:nodes
].
sadd
(
node
.
key
)
n
.
links
<<
self
n
ode
.
links
<<
self
end
end
...
...
@@ -38,6 +38,7 @@ module Noah
%w[applications configurations hosts services ephemerals]
.
each
{
|
x
|
instance_variable_set
(
"@
#{
x
}
"
,
Hash
.
new
)}
if
nodes
.
size
>
0
nodes
.
each
do
|
node
|
rejected_vals
=
[
:created_at
,
:updated_at
,
:links
,
:name
]
n
=
node_to_class
(
node
)
cls
=
class_to_lower
(
n
.
class
.
to_s
)
hsh
=
instance_variable_get
(
"@
#{
cls
}
s"
)
...
...
@@ -53,7 +54,7 @@ module Noah
when
"host"
hsh
[
"
#{
n
.
name
}
"
].
merge!
({
:id
=>
n
.
id
,
:status
=>
n
.
status
,
:tags
=>
n
.
to_hash
[
:tags
],
:services
=>
n
.
to_hash
[
:services
]})
else
hsh
[
n
.
name
].
merge!
(
n
.
to_hash
.
reject
{
|
key
,
value
|
key
==
:created_at
||
key
==
:updated_at
||
key
==
:name
})
hsh
[
"
#{
n
.
name
}
"
].
merge!
(
n
.
to_hash
.
reject
{
|
key
,
value
|
rejected_vals
.
member?
(
key
)
})
end
end
end
...
...
@@ -68,10 +69,7 @@ module Noah
class
<<
self
def
find_or_create
(
opts
=
{})
begin
find
(
opts
).
first
.
nil?
?
obj
=
new
(
opts
)
:
obj
=
find
(
opts
).
first
if
obj
.
valid?
obj
.
save
end
find
(
opts
).
first
.
nil?
?
obj
=
create
(
opts
)
:
obj
=
find
(
opts
).
first
obj
rescue
Exception
=>
e
e
.
message
...
...
lib/noah/models/tags.rb
View file @
8ba5a858
module
Noah
class
Tag
<
Model
attribute
:name
attribute
:members
...
...
@@ -23,35 +24,72 @@ module Noah
cls
=
class_to_lower
(
n
.
class
.
to_s
)
hash_key
=
"
#{
cls
}
s"
.
to_sym
hsh
[
hash_key
]
=
Array
.
new
unless
hsh
.
has_key?
(
hash_key
)
hsh
[
hash_key
]
<<
n
.
name
hsh
[
hash_key
]
<<
n
end
hsh
end
def
self
.
tagged
(
tag
)
t
=
find
(
:name
=>
tag
).
first
t
.
members
def
to_hash
h
=
{
:name
=>
name
,
:created_at
=>
created_at
,
:updated_at
=>
updated_at
}
h
.
merge!
(
members_to_hash
)
super
.
merge
(
h
)
end
class
<<
self
def
find_or_create
(
opts
=
{})
begin
find
(
opts
).
first
.
nil?
?
obj
=
new
(
opts
)
:
obj
=
find
(
opts
).
first
if
obj
.
valid?
obj
.
save
def
find_or_create
(
opts
=
{})
begin
find
(
opts
).
first
.
nil?
?
obj
=
create
(
opts
)
:
obj
=
find
(
opts
).
first
obj
rescue
Exception
=>
e
e
.
message
end
obj
rescue
Exception
=>
e
e
.
message
end
end
end
private
def
node_to_class
(
node
)
node
.
match
(
/^Noah::(.*):(\d+)$/
)
Noah
.
const_get
(
$1
).
send
(
:[]
,
$2
)
end
def
members_to_hash
new_hash
=
Hash
.
new
members
.
keys
.
each
{
|
k
|
new_hash
[
k
]
=
Hash
.
new
}
members
.
each
do
|
category
,
member_array
|
rejected_vals
=
[
:created_at
,
:updated_at
,
:tags
,
:name
,
:host
]
h
=
new_hash
[
category
]
member_array
.
each
{
|
mem
|
h
[
"
#{
mem
.
name
}
"
]
=
Hash
.
new
unless
h
.
has_key?
(
mem
.
name
)}
case
category
when
:services
member_array
.
each
do
|
s
|
sh
=
Noah
::
Host
[
s
.
host_id
].
name
h
[
"
#{
s
.
name
}
"
][
"
#{
sh
}
"
]
=
Hash
.
new
unless
h
[
"
#{
s
.
name
}
"
].
has_key?
(
sh
)
h
[
"
#{
s
.
name
}
"
][
"
#{
sh
}
"
].
merge!
(
s
.
to_hash
.
reject
{
|
k
,
v
|
rejected_vals
.
member?
(
k
)})
end
else
member_array
.
each
do
|
m
|
h
[
"
#{
m
.
name
}
"
].
merge!
(
m
.
to_hash
.
reject
{
|
k
,
v
|
rejected_vals
.
member?
(
k
)})
end
end
end
new_hash
end
end
class
Tags
def
self
.
all
(
options
=
{})
tag_hash
=
Hash
.
new
options
.
empty?
?
tags
=
Tag
.
all
.
sort
:
tags
=
Tag
.
find
(
options
).
sort
tags
.
each
{
|
t
|
tag_hash
[
"
#{
t
.
name
}
"
]
=
t
.
to_hash
.
reject
{
|
k
,
v
|
k
==
:name
}
}
tag_hash
end
class
<<
self
def
tagged
(
tag
)
t
=
Tag
.
find
(
:name
=>
tag
).
first
t
.
members
end
end
end
end
lib/noah/service_routes.rb
View file @
8ba5a858
...
...
@@ -22,6 +22,14 @@ class Noah::App
services
.
to_json
end
put
'/services/:servicename/:hostname/tag'
do
|
servicename
,
hostname
|
required_params
=
[
"tags"
]
data
=
JSON
.
parse
(
request
.
body
.
read
)
(
data
.
keys
.
sort
==
required_params
.
sort
)
?
(
a
=
host_service
(
hostname
,
servicename
))
:
(
raise
"Missing Parameters"
)
a
.
nil?
?
(
halt
404
)
:
(
a
.
tag!
(
data
[
'tags'
]))
a
.
to_json
end
put
'/services/:servicename/watch'
do
|
servicename
|
required_params
=
[
"endpoint"
]
data
=
JSON
.
parse
(
request
.
body
.
read
)
...
...
lib/noah/tag_routes.rb
0 → 100644
View file @
8ba5a858
class
Noah
::
App
get
'/tags/:tagname/?'
do
|
tagname
|
tags
=
Noah
::
Tags
.
all
(
:name
=>
tagname
).
to_hash
(
halt
404
)
if
tags
.
size
==
0
tags
.
to_json
end
get
'/tags/?'
do
tags
=
Noah
::
Tags
.
all
.
to_hash
(
halt
404
)
if
tags
.
size
==
0
tags
.
to_json
end
end
spec/noahapp_application_spec.rb
View file @
8ba5a858
...
...
@@ -27,8 +27,6 @@ describe "Using the Application API", :reset_redis => false do
response
.
has_key?
(
"configurations"
).
should
==
true
c
=
response
[
"configurations"
]
c
.
has_key?
(
@c
.
name
).
should
==
true
p
@c
p
c
c
[
"
#{
@c
.
name
}
"
][
"format"
].
should
==
"
#{
@c
.
format
}
"
c
[
"
#{
@c
.
name
}
"
][
"body"
].
should
==
"
#{
@c
.
body
}
"
end
...
...
spec/noahapp_ephemeral_spec.rb
View file @
8ba5a858
...
...
@@ -13,7 +13,7 @@ describe "Using the Ephemeral API", :reset_redis => true do
describe
"GET"
do
it
"all ephemerals should return 404"
do
get
'/e'
get
'/e
phemerals
'
last_response
.
should_not
be_ok
last_response
.
status
.
should
==
404
response
=
last_response
.
should
return_json
...
...
@@ -22,13 +22,13 @@ describe "Using the Ephemeral API", :reset_redis => true do
end
it
"named path with data should work"
do
get
'/e/foo/bar/baz'
get
'/e
phemerals
/foo/bar/baz'
last_response
.
should
be_ok
last_response
.
body
.
should
==
'value1'
end
it
"named path without data should work"
do
get
'/e/baz/bar'
get
'/e
phemerals
/baz/bar'
last_response
.
status
.
should
==
200
last_response
.
body
.
should
==
""
end
...
...
@@ -45,7 +45,7 @@ describe "Using the Ephemeral API", :reset_redis => true do
describe
"PUT"
do
it
"new ephemeral with data should work"
do
put
'/e/whiz/bang/'
,
'value3'
put
'/e
phemerals
/whiz/bang/'
,
'value3'
last_response
.
should
be_ok
response
=
last_response
.
should
return_json
response
[
'result'
].
should
==
'success'
...
...
@@ -55,7 +55,7 @@ describe "Using the Ephemeral API", :reset_redis => true do
end
it
"new ephemeral without data should work"
do
put
'/e/bang/whiz'
put
'/e
phemerals
/bang/whiz'
last_response
.
should
be_ok
response
=
last_response
.
should
return_json
response
[
'result'
].
should
==
'success'
...
...
@@ -67,35 +67,35 @@ describe "Using the Ephemeral API", :reset_redis => true do
it
"existing ephemeral with data should work"
do
Noah
::
Ephemeral
.
create
(
:path
=>
'/new/ephemeral'
,
:data
=>
'old_value'
)
get
'/e/new/ephemeral'
get
'/e
phemerals
/new/ephemeral'
last_response
.
should
be_ok
last_response
.
body
.
should
==
'old_value'
put
'/e/new/ephemeral'
,
'new_value'
put
'/e
phemerals
/new/ephemeral'
,
'new_value'
last_response
.
should
be_ok
get
'/e/new/ephemeral'
get
'/e
phemerals
/new/ephemeral'
last_response
.
should
be_ok
last_response
.
body
.
should
==
'new_value'
end
it
"existing ephemeral without data should work"
do
Noah
::
Ephemeral
.
create
(
:path
=>
'/a/random/key'
)
get
'/e/a/random/key'
get
'/e
phemerals
/a/random/key'
last_response
.
should
be_ok
last_response
.
body
.
should
==
""
put
'/e/a/random/key'
,
'a new value'
put
'/e
phemerals
/a/random/key'
,
'a new value'
last_response
.
should
be_ok
get
'/e/a/random/key'
get
'/e
phemerals
/a/random/key'
last_response
.
should
be_ok
last_response
.
body
.
should
==
'a new value'
end
it
"ephemeral with reserved word in subpath should work"
do
Noah
::
PROTECTED_PATHS
.
each
do
|
path
|
put
"/e/a/valid/path/with/
#{
path
}
"
put
"/e
phemerals
/a/valid/path/with/
#{
path
}
"
last_response
.
should
be_ok
end
end
it
"ephemeral with reserved word as path should not work"
do
Noah
::
PROTECTED_PATHS
.
each
do
|
path
|
put
"/e/
#{
path
}
/other/stuff"
put
"/e
phemerals
/
#{
path
}
/other/stuff"
last_response
.
should_not
be_ok
response
=
last_response
.
should
return_json
response
[
'error_message'
].
should
==
'Path is reserved'
...
...
@@ -108,7 +108,7 @@ describe "Using the Ephemeral API", :reset_redis => true do
it
"existing path should work"
do
e
=
Noah
::
Ephemeral
.
new
(
:path
=>
'/slart/i/bart/fast'
,
:data
=>
'someddata'
)
e
.
save
delete
"/e/slart/i/bart/fast"
delete
"/e
phemerals
/slart/i/bart/fast"
last_response
.
should
be_ok
response
=
last_response
.
should
return_json
response
[
'result'
].
should
==
'success'
...
...
@@ -118,7 +118,7 @@ describe "Using the Ephemeral API", :reset_redis => true do
end
it
"invalid path should not work"
do
delete
'/e/fork/spoon/knife'
delete
'/e
phemerals
/fork/spoon/knife'
last_response
.
should_not
be_ok
last_response
.
status
.
should
==
404
response
=
last_response
.
should
return_json
...
...
spec/support/sample_data.rb
View file @
8ba5a858
...
...
@@ -13,7 +13,6 @@ if h.save
%w[redis noah]
.
each
do
|
service
|
puts
"Create Service entry for
#{
service
}
"
s
=
Noah
::
Service
.
create
(
:name
=>
service
,
:status
=>
"up"
,
:host_id
=>
h
.
id
)
h
.
services
<<
s
end
end
...
...
@@ -24,8 +23,8 @@ if a.save
cr
=
Noah
::
Configuration
.
create
(
:name
=>
'redis'
,
:format
=>
'string'
,
:body
=>
'redis://127.0.0.1:6379/0'
)
ch
=
Noah
::
Configuration
.
create
(
:name
=>
'host'
,
:format
=>
'string'
,
:body
=>
'localhost'
)
cp
=
Noah
::
Configuration
.
create
(
:name
=>
'port'
,
:format
=>
'string'
,
:body
=>
'9292'
)
%w[cr ch
cp]
.
each
do
|
c
|
a
.
configurations
<<
eval
(
c
)
[
cr
,
ch
,
cp
].
each
do
|
c
|
a
.
configurations
<<
c
end
end
...
...
@@ -34,7 +33,7 @@ puts "Creating sample entries - Host and Service"
h
=
Noah
::
Host
.
create
(
:name
=>
host
,
:status
=>
"up"
)
if
h
.
save
%w[http https smtp mysql]
.
each
do
|
service
|
s
=
Noah
::
Service
.
create
(
:name
=>
service
,
:status
=>
"pending"
,
:host
=>
h
)
s
=
Noah
::
Service
.
create
(
:name
=>
service
,
:status
=>
"pending"
,
:host
_id
=>
h
.
id
)
h
.
services
<<
s
end
end
...
...
@@ -77,7 +76,11 @@ l1.path = "/my_sample_organization"
l1
.
save
l1
.
nodes
=
[
a1
,
c2
,
Noah
::
Host
.
find
(
:name
=>
'localhost'
).
first
,
Noah
::
Service
.
find
(
:name
=>
'redis'
).
first
,
e1
,
e2
]
a1
.
tag!
[
"production"
,
"sample_data"
]
e2
.
tag!
"ephemeral"
e2
.
tag!
[
"ephemeral"
,
"development"
]
c1
.
tag!
"development"
Noah
::
Service
[
1
].
tag!
"development"
Noah
::
Service
[
2
].
tag!
[
"development"
,
"out-of-service"
]
Noah
::
Service
[
2
].
link!
"/my_sample_organization"
puts
"Sample data populated!"
...
...
spec/tag_spec.rb
View file @
8ba5a858
...
...
@@ -28,14 +28,14 @@ describe "Using the Tag Model", :reset_redis => true do
t
.
members
=
@host
@host
.
tags
.
member?
(
t
).
should
==
true
t
.
members
[
:hosts
].
size
.
should
==
1
t
.
members
[
:hosts
].
member?
(
@host
.
name
).
should
==
true
t
.
members
[
:hosts
].
member?
(
@host
).
should
==
true
end
it
"tag! an existing object with a single tag"
do
@host
.
tag!
@tags2
t
=
Noah
::
Tag
.
find
(
:name
=>
@tags2
).
first
@host
.
tags
.
member?
(
t
).
should
==
true
t
.
members
[
:hosts
].
size
.
should
==
1
t
.
members
[
:hosts
].
member?
(
@host
.
name
).
should
==
true
t
.
members
[
:hosts
].
member?
(
@host
).
should
==
true
end
it
"tag! an existing object with an array of tags"
do
@host
.
tag!
@tags1
...
...
@@ -43,18 +43,20 @@ describe "Using the Tag Model", :reset_redis => true do
t
=
Noah
::
Tag
.
find
(
:name
=>
tag
).
first
@host
.
tags
.
member?
(
t
).
should
==
true
t
.
members
[
:hosts
].
size
.
should
==
1
t
.
members
[
:hosts
].
member?
(
@host
.
name
).
should
==
true
t
.
members
[
:hosts
].
member?
(
@host
).
should
==
true
end
Noah
::
Tag
.
all
.
size
.
should
==
3
end
it
"tag all object types and find via tagged"
do
[
@host
,
@service
,
@application
,
@configuration
,
@ephemeral
].
each
do
|
o
|
o
.
tag!
@tags1
end
@host
.
tag!
@tags1
@ephemeral
.
tag!
@tags1
@configuration
.
tag!
@tags1
@application
.
tag!
@tags1
@service
.
tag!
@tags1
@tags1
.
each
do
|
tag
|
Noah
::
Tag
.
tagged
(
tag
).
size
.
should
==
5
Noah
::
Tag
s
.
tagged
(
tag
).
size
.
should
==
5
[
@host
,
@service
,
@application
,
@configuration
,
@ephemeral
].
each
do
|
o
|
Noah
::
Tag
.
tagged
(
tag
).
values
.
flatten
.
member?
(
o
.
name
).
should
==
true
Noah
::
Tag
s
.
tagged
(
tag
).
values
.
flatten
.
member?
(
o
).
should
==
true
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