本文整理汇总了Python中ion.services.sa.observatory.observatory_util.ObservatoryUtil.get_child_sites方法的典型用法代码示例。如果您正苦于以下问题:Python ObservatoryUtil.get_child_sites方法的具体用法?Python ObservatoryUtil.get_child_sites怎么用?Python ObservatoryUtil.get_child_sites使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ion.services.sa.observatory.observatory_util.ObservatoryUtil
的用法示例。
在下文中一共展示了ObservatoryUtil.get_child_sites方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _notification_children
# 需要导入模块: from ion.services.sa.observatory.observatory_util import ObservatoryUtil [as 别名]
# 或者: from ion.services.sa.observatory.observatory_util.ObservatoryUtil import get_child_sites [as 别名]
def _notification_children(notification_origin, notification_type, observatory_util=None):
if observatory_util is None:
observatory_util = ObservatoryUtil()
children = []
if notification_type == NotificationTypeEnum.PLATFORM:
device_relations = observatory_util.get_child_devices(notification_origin)
children = [did for pt,did,dt in device_relations[notification_origin]]
elif type == NotificationTypeEnum.SITE:
child_site_dict, ancestors = observatory_util.get_child_sites(notification_origin)
children = child_site_dict.keys()
elif type == NotificationTypeEnum.FACILITY:
objects, _ = resource_registry.find_objects(subject=notification_origin, predicate=PRED.hasResource, id_only=False)
for o in objects:
if o.type_ == RT.DataProduct \
or o.type_ == RT.InstrumentSite \
or o.type_ == RT.InstrumentDevice \
or o.type_ == RT.PlatformSite \
or o.type_ == RT.PlatformDevice:
children.append(o._id)
if notification_origin in children:
children.remove(notification_origin)
return children
示例2: TestObservatoryUtil
# 需要导入模块: from ion.services.sa.observatory.observatory_util import ObservatoryUtil [as 别名]
# 或者: from ion.services.sa.observatory.observatory_util.ObservatoryUtil import get_child_sites [as 别名]
class TestObservatoryUtil(IonUnitTestCase):
def setUp(self):
self.mu = MockUtil()
self.process_mock = self.mu.create_process_mock()
self.container_mock = self.mu.create_container_mock()
self.dsm_mock = self.mu.create_device_status_manager_mock()
res_list = [
dict(rt='Org', _id='Org_1', attr={}),
dict(rt='Observatory', _id='Obs_1', attr={}),
dict(rt='Observatory', _id='Obs_2', attr={}),
dict(rt='Subsite', _id='Sub_1', attr={}),
dict(rt='Subsite', _id='Sub_2', attr={}),
dict(rt='PlatformSite', _id='PS_1', attr={}),
dict(rt='InstrumentSite', _id='IS_1', attr={}),
dict(rt='PlatformDevice', _id='PD_1', attr={}),
dict(rt='InstrumentDevice', _id='ID_1', attr={}),
]
assoc_list = [
['Obs_1', 'hasSite', 'Sub_1'],
['Sub_1', 'hasSite', 'PS_1'],
['PS_1', 'hasSite', 'IS_1'],
]
assoc_list1 = [
['Org_1', 'hasResource', 'Obs_1'],
['Org_1', 'hasResource', 'Obs_2'],
['Obs_2', 'hasSite', 'Sub_2'],
]
assoc_list2 = [
['PS_1', 'hasDevice', 'PD_1'],
['IS_1', 'hasDevice', 'ID_1'],
['PD_1', 'hasDevice', 'ID_1'],
]
def spy_get_child_sites(self, parent_site_id=None, org_id=None, exclude_types=None, include_parents=True, id_only=True):
child_sites, site_ancestors = self.obs_util.get_child_sites(parent_site_id=parent_site_id,
org_id=org_id,
exclude_types=exclude_types,
include_parents=include_parents,
id_only=id_only)
print "child_sites of", parent_site_id, "are", child_sites
print "site_ancestors of", parent_site_id, "are", site_ancestors
return child_sites, site_ancestors
def test_get_child_sites(self):
self.mu.load_mock_resources(self.res_list)
self.mu.load_mock_associations(self.assoc_list)
self.obs_util = ObservatoryUtil(self.process_mock, self.container_mock)
site_resources, site_children = self.spy_get_child_sites(parent_site_id='Obs_1', include_parents=False, id_only=True)
self.assertEquals(len(site_resources), 3)
self.assertEquals(len(site_children), 3)
self.assertIn('Sub_1', site_resources)
self.assertIn('PS_1', site_resources)
self.assertIn('IS_1', site_resources)
self.assertNotIn('Obs_1', site_resources)
self.assertEquals(len([v for v in site_resources.values() if v is None]), 3)
site_resources, site_children = self.spy_get_child_sites(parent_site_id='Obs_1', include_parents=False, id_only=False)
self.assertEquals(len(site_resources), 3)
self.assertEquals(len(site_children), 3)
self.assertEquals(len([v for v in site_resources.values() if v is None]), 0)
self.assertEquals(site_resources['Sub_1']._get_type(), RT.Subsite)
site_resources, site_children = self.spy_get_child_sites(parent_site_id='Obs_1', include_parents=True)
self.assertEquals(len(site_resources), 4)
self.assertEquals(len(site_children), 3)
self.assertIn('Obs_1', site_resources)
site_resources, site_children = self.spy_get_child_sites(parent_site_id='Sub_1', include_parents=False)
self.assertEquals(len(site_resources), 2)
self.assertEquals(len(site_children), 2)
self.assertNotIn('Sub_1', site_resources)
site_resources, site_children = self.spy_get_child_sites(parent_site_id='Sub_1', include_parents=True)
self.assertEquals(len(site_resources), 4)
self.assertEquals(len(site_children), 3)
self.assertIn('Sub_1', site_resources)
self.assertIn('Obs_1', site_resources)
site_resources, site_children = self.spy_get_child_sites(parent_site_id='PS_1', include_parents=False)
self.assertEquals(len(site_resources), 1)
self.assertEquals(len(site_children), 1)
site_resources, site_children = self.spy_get_child_sites(parent_site_id='PS_1', include_parents=True)
self.assertEquals(len(site_resources), 4)
self.assertEquals(len(site_children), 3)
site_resources, site_children = self.spy_get_child_sites(parent_site_id='IS_1', include_parents=False)
self.assertEquals(len(site_resources), 0)
self.assertEquals(len(site_children), 0)
site_resources, site_children = self.spy_get_child_sites(parent_site_id='IS_1', include_parents=True)
#.........这里部分代码省略.........
示例3: DeploymentActivator
# 需要导入模块: from ion.services.sa.observatory.observatory_util import ObservatoryUtil [as 别名]
# 或者: from ion.services.sa.observatory.observatory_util.ObservatoryUtil import get_child_sites [as 别名]
class DeploymentActivator(DeploymentOperator):
"""
A deployment activator validates that a set of devices will map to a set of sites in one unique way
its primary purpose is to prepare( ) after which you'll be able to access what associations must be made (and unmade)
it makes use of the deployment resource colelctor
"""
def on_init(self):
resource_collector_factory = DeploymentResourceCollectorFactory(self.clients, self.RR2)
self.resource_collector = resource_collector_factory.create(self.deployment_obj)
self._hasdevice_associations_to_delete = []
self._hasdevice_associations_to_create = []
self.outil = ObservatoryUtil(self, enhanced_rr=self.RR2)
# these are the output accessors
def hasdevice_associations_to_delete(self):
return self._hasdevice_associations_to_delete[:]
def hasdevice_associations_to_create(self):
return self._hasdevice_associations_to_create[:]
# for debugging purposes
def _csp_solution_to_string(self, soln):
ret = "%s" % type(soln).__name__
for k, s in soln.iteritems():
d = unpack_csp_var(k)
log.trace("reading device %s", d)
dev_obj = self.resource_collector.read_using_typecache(d)
log.trace("reading site %s", s)
site_obj = self.resource_collector.read_using_typecache(s)
ret = "%s, %s '%s' -> %s '%s'" % (ret, dev_obj._get_type(), d, site_obj._get_type(), s)
return ret
def prepare(self):
"""
Prepare (validate) a deployment for activation, returning lists of what associations need to be added
and which ones need to be removed.
"""
# retrieve the site tree information using the OUTIL functions; site info as well has site children
site_ids = self.RR2.find_subjects(
subject_type=RT.PlatformSite, predicate=PRED.hasDeployment, object=self.deployment_obj._id, id_only=True
)
if not site_ids:
site_ids = self.RR2.find_subjects(
subject_type=RT.InstrumentSite,
predicate=PRED.hasDeployment,
object=self.deployment_obj._id,
id_only=True,
)
if site_ids:
self.site_resources, self.site_children = self.outil.get_child_sites(
parent_site_id=site_ids[0], id_only=False
)
log.debug("about to collect deployment components")
self.resource_collector.collect()
if not self.deployment_obj.port_assignments:
log.info("No port assignments, so using CSP")
pairs_to_add = self._prepare_using_csp()
else:
log.info("Merging trees with port assignments")
pairs_to_add = self._prepare_using_portassignment_trees()
log.info("Pairs to add: %s", pairs_to_add)
# figure out if any of the devices in the new mapping are already mapped and need to be removed
pairs_to_remove = []
pairs_to_ignore = []
for (s, d) in pairs_to_add:
rm_pair, ignore_pair = self._find_existing_relationship(s, d)
if rm_pair:
pairs_to_remove.append(rm_pair)
if ignore_pair:
pairs_to_ignore.append(ignore_pair)
log.info("Pairs to ignore (will be removed from add list): %s", pairs_to_ignore)
# make sure that anything being removed is not also being added
pairs_to_add = filter(lambda x: x not in pairs_to_ignore, pairs_to_add)
self._hasdevice_associations_to_create = pairs_to_add
self._hasdevice_associations_to_delete = pairs_to_remove
log.info("Pairs to remove: %s", pairs_to_remove)
def _prepare_using_portassignment_trees(self):
# return a list of (site, device) pairs
# badrequest if not all devices get consumed
site_tree = self.resource_collector.collected_site_tree()
device_tree = self.resource_collector.collected_device_tree()
merged_tree_pairs, leftover_devices = self._merge_trees(site_tree, device_tree)
if leftover_devices:
#.........这里部分代码省略.........
示例4: DeploymentPlanner
# 需要导入模块: from ion.services.sa.observatory.observatory_util import ObservatoryUtil [as 别名]
# 或者: from ion.services.sa.observatory.observatory_util.ObservatoryUtil import get_child_sites [as 别名]
#.........这里部分代码省略.........
inet_aton(platform_port.ip_address)
except :
log.error('IP address validation failed for device. Device id: %s', device_id)
# validate port_type based on deployment context
# a platform device deployment should have UPLINK port type
if OT.RemotePlatformDeploymentContext == deployment_context_type or \
OT.CabledNodeDeploymentContext == deployment_context_type:
if device_id in self.device_resources and self.device_resources[device_id].type_ is RT.PlatformDevice:
if platform_port.port_type != PortTypeEnum.UPLINK:
log.warning('Type of port for platform port assignment should be UPLINK. Device id: %s', device_id)
#validate that parent_id is provided
if not platform_port.parent_id:
log.warning('Id of parent device should be provided in port assignment information. Device id: %s', device_id)
def _validate_ooi_reference_designator(self, device_id, device_port):
ooi_rd = OOIReferenceDesignator(device_port.reference_designator)
if ooi_rd.error:
log.warning("Invalid OOIReferenceDesignator ( %s ) specified for device %s", device_port.reference_designator, device_id)
if not ooi_rd.port:
log.warning("Invalid OOIReferenceDesignator ( %s ) specified for device %s, could not retrieve port", device_port.reference_designator, device_id)
def get_deployment_sites_devices(self, deployment_obj):
# retrieve all site and device ids related to this deployment
site_ids = []
device_ids = []
self.outil = ObservatoryUtil(self, enhanced_rr=self.enhanced_rr)
top_site, top_device = self._find_top_site_device(deployment_obj._id)
site_resources, site_children = self.outil.get_child_sites( parent_site_id=top_site._id, id_only=False)
site_ids = site_resources.keys()
# get_site_devices returns a tuple that includes all devices linked to deployment sites
site_devices = self.outil.get_site_devices(site_ids)
for site, tuple_list in site_devices.iteritems():
for (site_type, device_id, device_type) in tuple_list:
device_ids.append(device_id)
return site_ids, device_ids
def prepare_activation(self, deployment_obj):
"""
Prepare (validate) a deployment for activation, returning lists of what associations need to be added
and which ones need to be removed.
"""
self.match_list = []
self.remove_list = []
self.unmatched_device_list = []
self.models_map = {}
self.top_device = ''
self.top_site = ''
self.deployment_obj = deployment_obj
self.site_resources = {}
self.device_resources = {}
self.outil = ObservatoryUtil(self, enhanced_rr=self.enhanced_rr)
# retrieve the site tree information using the OUTIL functions; site info as well has site children
示例5: TestObservatoryUtil
# 需要导入模块: from ion.services.sa.observatory.observatory_util import ObservatoryUtil [as 别名]
# 或者: from ion.services.sa.observatory.observatory_util.ObservatoryUtil import get_child_sites [as 别名]
class TestObservatoryUtil(IonUnitTestCase):
def setUp(self):
self.mu = MockUtil()
self.process_mock = self.mu.create_process_mock()
self.container_mock = self.mu.create_container_mock()
res_list = [
dict(rt='Org', _id='Org_1', attr={}),
dict(rt='Observatory', _id='Obs_1', attr={}),
dict(rt='Observatory', _id='Obs_2', attr={}),
dict(rt='Subsite', _id='Sub_1', attr={}),
dict(rt='Subsite', _id='Sub_2', attr={}),
dict(rt='PlatformSite', _id='PS_1', attr={}),
dict(rt='InstrumentSite', _id='IS_1', attr={}),
dict(rt='PlatformDevice', _id='PD_1', attr={}),
dict(rt='InstrumentDevice', _id='ID_1', attr={}),
]
assoc_list = [
['Obs_1', 'hasSite', 'Sub_1'],
['Sub_1', 'hasSite', 'PS_1'],
['PS_1', 'hasSite', 'IS_1'],
]
assoc_list1 = [
['Org_1', 'hasResource', 'Obs_1'],
['Org_1', 'hasResource', 'Obs_2'],
['Obs_2', 'hasSite', 'Sub_2'],
]
assoc_list2 = [
['PS_1', 'hasDevice', 'PD_1'],
['IS_1', 'hasDevice', 'ID_1'],
['PD_1', 'hasDevice', 'ID_1'],
]
def spy_get_child_sites(self, parent_site_id=None, org_id=None, exclude_types=None, include_parents=True, id_only=True):
child_sites, site_ancestors = self.obs_util.get_child_sites(parent_site_id=parent_site_id,
org_id=org_id,
exclude_types=exclude_types,
include_parents=include_parents,
id_only=id_only)
print "child_sites of", parent_site_id, "are", child_sites
print "site_ancestors of", parent_site_id, "are", site_ancestors
return child_sites, site_ancestors
def test_get_child_sites(self):
self.mu.load_mock_resources(self.res_list)
self.mu.load_mock_associations(self.assoc_list)
self.obs_util = ObservatoryUtil(self.process_mock, self.container_mock)
child_sites, site_ancestors = self.spy_get_child_sites(parent_site_id='Obs_1', include_parents=False, id_only=True)
self.assertEquals(len(child_sites), 3)
self.assertEquals(len(site_ancestors), 3)
self.assertIn('Sub_1', child_sites)
self.assertIn('PS_1', child_sites)
self.assertIn('IS_1', child_sites)
self.assertNotIn('Obs_1', child_sites)
self.assertEquals(len([v for v in child_sites.values() if v is None]), 3)
child_sites, site_ancestors = self.spy_get_child_sites(parent_site_id='Obs_1', include_parents=False, id_only=False)
self.assertEquals(len(child_sites), 3)
self.assertEquals(len(site_ancestors), 3)
self.assertEquals(len([v for v in child_sites.values() if v is None]), 0)
self.assertEquals(child_sites['Sub_1']._get_type(), RT.Subsite)
child_sites, site_ancestors = self.spy_get_child_sites(parent_site_id='Obs_1', include_parents=True)
self.assertEquals(len(child_sites), 4)
self.assertEquals(len(site_ancestors), 3)
self.assertIn('Obs_1', child_sites)
child_sites, site_ancestors = self.spy_get_child_sites(parent_site_id='Sub_1', include_parents=False)
self.assertEquals(len(child_sites), 2)
self.assertEquals(len(site_ancestors), 2)
self.assertNotIn('Sub_1', child_sites)
child_sites, site_ancestors = self.spy_get_child_sites(parent_site_id='Sub_1', include_parents=True)
self.assertEquals(len(child_sites), 4)
self.assertEquals(len(site_ancestors), 3)
self.assertIn('Sub_1', child_sites)
self.assertIn('Obs_1', child_sites)
child_sites, site_ancestors = self.spy_get_child_sites(parent_site_id='PS_1', include_parents=False)
self.assertEquals(len(child_sites), 1)
self.assertEquals(len(site_ancestors), 1)
child_sites, site_ancestors = self.spy_get_child_sites(parent_site_id='PS_1', include_parents=True)
self.assertEquals(len(child_sites), 4)
self.assertEquals(len(site_ancestors), 3)
child_sites, site_ancestors = self.spy_get_child_sites(parent_site_id='IS_1', include_parents=False)
self.assertEquals(len(child_sites), 0)
self.assertEquals(len(site_ancestors), 0)
child_sites, site_ancestors = self.spy_get_child_sites(parent_site_id='IS_1', include_parents=True)
self.assertEquals(len(child_sites), 4)
#.........这里部分代码省略.........
示例6: ObservatoryManagementService
# 需要导入模块: from ion.services.sa.observatory.observatory_util import ObservatoryUtil [as 别名]
# 或者: from ion.services.sa.observatory.observatory_util.ObservatoryUtil import get_child_sites [as 别名]
#.........这里部分代码省略.........
all_res = []
if retval_ids: all_res = self.RR.read_mult(list(retval_ids))
#all_res = self.RR.read_mult(retval_ids)
# put resources in the slot based on their type
for resource in all_res:
typename = type(resource).__name__
if typename in output_resource_type_list:
retval[typename].append(resource)
# display a count of how many resources we retrieved
log.debug("got these resources: %s", dict([(k, len(v)) for k, v in retval.iteritems()]))
return retval
def find_related_sites(self, parent_resource_id='', exclude_site_types=None, include_parents=False, id_only=False):
if not parent_resource_id:
raise BadRequest("Must provide a parent parent_resource_id")
exclude_site_types = exclude_site_types or []
if not isinstance(exclude_site_types, list):
raise BadRequest("exclude_site_types mut be a list, is: %s" % type(exclude_site_types))
parent_resource = self.RR.read(parent_resource_id)
org_id, site_id = None, None
if parent_resource.type_ == RT.Org:
org_id = parent_resource_id
elif RT.Site in parent_resource._get_extends():
site_id = parent_resource_id
else:
raise BadRequest("Illegal parent_resource_id type. Expected Org/Site, given:%s" % parent_resource.type_)
site_resources, site_children = self.outil.get_child_sites(site_id, org_id,
exclude_types=exclude_site_types, include_parents=include_parents, id_only=id_only)
return site_resources, site_children
def get_sites_devices_status(self, parent_resource_id='', include_devices=False, include_status=False):
if not parent_resource_id:
raise BadRequest("Must provide a parent parent_resource_id")
parent_resource = self.RR.read(parent_resource_id)
org_id, site_id = None, None
if parent_resource.type_ == RT.Org:
org_id = parent_resource_id
elif RT.Site in parent_resource._get_extends():
site_id = parent_resource_id
result_dict = {}
if include_status:
status_rollups = self.outil.get_status_roll_ups(parent_resource_id, parent_resource.type_, include_structure=True)
struct_dict = status_rollups.pop("_system") if "_system" in status_rollups else {}
result_dict["site_resources"] = struct_dict.get("sites", {})
result_dict["site_children"] = struct_dict.get("ancestors", {})
if include_devices:
site_devices = struct_dict.get("devices", {})
result_dict["site_devices"] = site_devices
device_ids = [tuple_list[0][1] for tuple_list in site_devices.values() if tuple_list]
device_objs = self.RR.read_mult(device_ids)
result_dict["device_resources"] = dict(zip(device_ids, device_objs))
result_dict["site_status"] = status_rollups