11# Copyright (c) 2017, The MITRE Corporation. All rights reserved.
22# See LICENSE.txt for complete terms.
3- import collections
43
5- from mixbox import entities
6- from mixbox import fields
7- from mixbox import idgen
4+ from mixbox import entities , fields , idgen
85
96from cybox import Unicode
107import cybox .bindings .cybox_core as core_binding
@@ -127,15 +124,14 @@ def add_keyword(self, value):
127124
128125class Observables (entities .EntityList ):
129126 """The root CybOX Observables object.
130-
131- Pools are not currently supported.
132127 """
133128 _binding = core_binding
134129 _binding_class = _binding .ObservablesType
135130 _namespace = 'http://cybox.mitre.org/cybox-2'
136131
137132 observable_package_source = fields .TypedField ("Observable_Package_Source" , MeasureSource )
138133 observables = fields .TypedField ("Observable" , Observable , multiple = True , key_name = "observables" )
134+ pools = fields .TypedField ("Pools" , type_ = "cybox.core.pool.Pools" )
139135
140136 def __init__ (self , observables = None ):
141137 super (Observables , self ).__init__ (observables )
@@ -144,12 +140,19 @@ def __init__(self, observables=None):
144140 self ._minor_version = 1
145141 self ._update_version = 0
146142
147- def add (self , observable ):
148- if not observable :
143+ def add (self , object_ ):
144+ from cybox .core .pool import Pools
145+ if not object_ :
149146 return
150- if not isinstance (observable , Observable ):
151- observable = Observable (observable )
152- self .observables .append (observable )
147+ elif isinstance (object_ , MeasureSource ):
148+ self .observable_package_source = object_
149+ return
150+ elif isinstance (object_ , Pools ):
151+ self .pools = object_
152+ return
153+ elif not isinstance (object_ , Observable ):
154+ object_ = Observable (object_ )
155+ self .observables .append (object_ )
153156
154157 def to_obj (self , ns_info = None ):
155158 observables_obj = super (Observables , self ).to_obj (ns_info = ns_info )
@@ -190,4 +193,3 @@ def add(self, observable):
190193 if not observable :
191194 raise ValueError ("'observable' must not be None" )
192195 self .append (observable )
193-
0 commit comments