Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Simon János
/
orchestrator
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
A prog2-höz tartozó friss repo anyagok itt elérhetőek:
https://git.iit.bme.hu/
Commit
c70a8f28
authored
Nov 18, 2016
by
Simon János
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
flat_leaves switch on flatten; checking resource equality using flat resource model
parent
ce7daa24
Pipeline
#288
passed with stage
in 31 seconds
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
57 additions
and
61 deletions
+57
-61
orchestrator/model/resources.py
+13
-9
tests/test_model.py
+44
-52
No files found.
orchestrator/model/resources.py
View file @
c70a8f28
...
@@ -64,11 +64,7 @@ class Resource(object):
...
@@ -64,11 +64,7 @@ class Resource(object):
def
__eq__
(
self
,
other
):
def
__eq__
(
self
,
other
):
try
:
try
:
for
attr
,
other_value
in
other
.
items
():
return
self
.
flatten
(
flat_leaves
=
True
)
==
other
.
flatten
(
flat_leaves
=
True
)
value
=
self
.
_attributes
.
get
(
attr
)
if
value
is
None
or
value
!=
other_value
:
return
False
return
True
except
AttributeError
:
except
AttributeError
:
return
False
return
False
...
@@ -93,9 +89,11 @@ class Resource(object):
...
@@ -93,9 +89,11 @@ class Resource(object):
def
__add__
(
self
,
other
):
def
__add__
(
self
,
other
):
return
ResourceGroup
(
resources
=
[
self
,
other
])
return
ResourceGroup
(
resources
=
[
self
,
other
])
def
flatten
(
self
,
fqn
=
None
):
def
flatten
(
self
,
fqn
=
None
,
flat_leaves
=
True
):
fqn
=
'
%
s.
%
s'
%
(
fqn
,
self
.
id
)
if
fqn
else
self
.
id
fqn
=
'
%
s.
%
s'
%
(
fqn
,
self
.
id
)
if
fqn
else
self
.
id
return
{
'
%
s.
%
s'
%
(
fqn
,
key
):
str
(
value
)
for
key
,
value
in
self
.
items
()}
if
flat_leaves
:
return
{
'
%
s.
%
s'
%
(
fqn
,
key
):
str
(
value
)
for
key
,
value
in
self
.
items
()}
return
{
fqn
:
self
}
@staticmethod
@staticmethod
def
json_encoder
(
data
):
def
json_encoder
(
data
):
...
@@ -116,6 +114,12 @@ class ResourceGroup(Resource):
...
@@ -116,6 +114,12 @@ class ResourceGroup(Resource):
self
.
add
(
resource
)
self
.
add
(
resource
)
self
.
_attributes
[
'resources'
]
=
self
.
resources
self
.
_attributes
[
'resources'
]
=
self
.
resources
def
__eq__
(
self
,
other
):
try
:
return
self
.
id
==
other
.
id
and
super
(
ResourceGroup
,
self
)
.
__eq__
(
other
)
except
AttributeError
:
return
False
def
add
(
self
,
resource
):
def
add
(
self
,
resource
):
if
not
isinstance
(
resource
,
Resource
):
if
not
isinstance
(
resource
,
Resource
):
try
:
try
:
...
@@ -143,10 +147,10 @@ class ResourceGroup(Resource):
...
@@ -143,10 +147,10 @@ class ResourceGroup(Resource):
diff_keys
=
set
(
flat_self
.
keys
())
.
symmetric_difference
(
flat_other
.
keys
())
diff_keys
=
set
(
flat_self
.
keys
())
.
symmetric_difference
(
flat_other
.
keys
())
return
{
key
:
flat_self
.
get
(
key
,
flat_other
.
get
(
key
))
for
key
in
diff_keys
}
return
{
key
:
flat_self
.
get
(
key
,
flat_other
.
get
(
key
))
for
key
in
diff_keys
}
def
flatten
(
self
,
fqn
=
None
):
def
flatten
(
self
,
fqn
=
None
,
flat_leaves
=
True
):
flat
=
dict
()
flat
=
dict
()
for
resource
in
self
.
resources
:
for
resource
in
self
.
resources
:
flat
.
update
(
resource
.
flatten
(
'
%
s.
%
s'
%
(
fqn
,
self
.
id
)
if
fqn
else
self
.
id
))
flat
.
update
(
resource
.
flatten
(
'
%
s.
%
s'
%
(
fqn
,
self
.
id
)
if
fqn
else
self
.
id
,
flat_leaves
))
return
flat
return
flat
...
...
tests/test_model.py
View file @
c70a8f28
...
@@ -276,32 +276,33 @@ class ResourceGroupTest(TestCase):
...
@@ -276,32 +276,33 @@ class ResourceGroupTest(TestCase):
self
.
assertNotEqual
(
ResourceGroup
(
id
=
'some_group'
,
resources
=
[
resource1
]),
self
.
assertNotEqual
(
ResourceGroup
(
id
=
'some_group'
,
resources
=
[
resource1
]),
ResourceGroup
(
id
=
'some_group'
,
resources
=
[
resource2
]))
ResourceGroup
(
id
=
'some_group'
,
resources
=
[
resource2
]))
def
test_resource_group_flatten
(
self
):
TEST_TREE_DICT
=
{
'id'
:
'root'
,
'type'
:
'group'
,
'resources'
:
[
{
'id'
:
'instance-1'
,
'type'
:
'instance'
},
{
'id'
:
'level-1'
,
'type'
:
'group'
,
'resources'
:
[
{
'id'
:
'instance-2'
,
'type'
:
'instance'
},
{
'id'
:
'instance-3'
,
'type'
:
'instance'
}
]
}
]
}
def
test_resource_group_flatten_flat_leaves
(
self
):
# given
# given
tree_dict
=
{
'id'
:
'root'
,
'type'
:
'group'
,
'resources'
:
[
{
'id'
:
'instance-1'
,
'type'
:
'instance'
},
{
'id'
:
'level-1'
,
'type'
:
'group'
,
'resources'
:
[
{
'id'
:
'instance-2'
,
'type'
:
'instance'
},
{
'id'
:
'instance-3'
,
'type'
:
'instance'
}
]
}
]
}
expected_flat_dict
=
{
expected_flat_dict
=
{
'root.instance-1.id'
:
'instance-1'
,
'root.instance-1.id'
:
'instance-1'
,
'root.instance-1.type'
:
'instance'
,
'root.instance-1.type'
:
'instance'
,
...
@@ -312,41 +313,32 @@ class ResourceGroupTest(TestCase):
...
@@ -312,41 +313,32 @@ class ResourceGroupTest(TestCase):
}
}
# when
# when
tree_resource
=
Resource
(
tree_dict
)
tree_resource
=
Resource
(
self
.
TEST_TREE_DICT
)
flat_dict
=
tree_resource
.
flatten
()
flat_dict
=
tree_resource
.
flatten
()
# then
# then
self
.
assertEqual
(
expected_flat_dict
,
flat_dict
)
self
.
assertEqual
(
expected_flat_dict
,
flat_dict
)
def
test_resource_group_
diff
(
self
):
def
test_resource_group_
flatten_not_flat_leaves
(
self
):
# given
# given
tree_dict1
=
{
expected_flat_dict
=
{
'id'
:
'root'
,
'root.instance-1'
:
Instance
(
id
=
'instance-1'
),
'type'
:
'group'
,
'root.level-1.instance-2'
:
Instance
(
id
=
'instance-2'
),
'resources'
:
[
'root.level-1.instance-3'
:
Instance
(
id
=
'instance-3'
)
{
'id'
:
'instance-1'
,
'type'
:
'instance'
},
{
'id'
:
'level-1'
,
'type'
:
'group'
,
'resources'
:
[
{
'id'
:
'instance-2'
,
'type'
:
'instance'
},
{
'id'
:
'instance-3'
,
'type'
:
'instance'
}
]
}
]
}
}
group1
=
ResourceGroup
(
tree_dict1
)
tree_dict2
=
copy
.
deepcopy
(
tree_dict1
)
# when
tree_resource
=
Resource
(
self
.
TEST_TREE_DICT
)
flat_dict
=
tree_resource
.
flatten
(
flat_leaves
=
False
)
# then
self
.
assertEqual
(
expected_flat_dict
,
flat_dict
)
def
test_resource_group_diff
(
self
):
# given
group1
=
ResourceGroup
(
self
.
TEST_TREE_DICT
)
tree_dict2
=
copy
.
deepcopy
(
self
.
TEST_TREE_DICT
)
del
tree_dict2
[
'resources'
][
0
]
del
tree_dict2
[
'resources'
][
0
]
group2
=
ResourceGroup
(
tree_dict2
)
group2
=
ResourceGroup
(
tree_dict2
)
...
...
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