From 4d2f6477238a3b7d9fd8d39174e2cd069370bfdc Mon Sep 17 00:00:00 2001 From: Michael Meisinger Date: Thu, 15 Mar 2012 18:37:19 -0700 Subject: [PATCH] Fix to ion loader --- ion/core/containerui.py | 104 ++++++++++++++++++++------ ion/processes/bootstrap/ion_loader.py | 23 +++--- 2 files changed, 92 insertions(+), 35 deletions(-) diff --git a/ion/core/containerui.py b/ion/core/containerui.py index b6c9823ba..9572e63e0 100644 --- a/ion/core/containerui.py +++ b/ion/core/containerui.py @@ -90,7 +90,7 @@ def process_index(): return build_page(content) except Exception, e: - return build_simple_page("Error: %s" % traceback.format_exc()) + return build_error_page(traceback.format_exc()) # ---------------------------------------------------------------------------------------- @@ -113,7 +113,7 @@ def process_list_resource_types(): return build_page(content) except Exception, e: - return build_simple_page("Error: %s" % traceback.format_exc()) + return build_error_page(traceback.format_exc()) # ---------------------------------------------------------------------------------------- @@ -155,7 +155,7 @@ def process_list_resources(resource_type): except NotFound: return flask.redirect("/") except Exception, e: - return build_simple_page("Error: %s" % traceback.format_exc()) + return build_error_page(traceback.format_exc()) def build_res_extends(restype): fragments = [ @@ -246,7 +246,7 @@ def process_view_resource(resource_id): except NotFound: return flask.redirect("/") except Exception, e: - return build_simple_page("Error: %s" % traceback.format_exc()) + return build_error_page(traceback.format_exc()) def build_nested_obj(obj, prefix): fragments = [] @@ -271,24 +271,26 @@ def build_associations(resid): fragments.append("

Associations

") fragments.append("

FROM

") fragments.append("

") - fragments.append("") + fragments.append("") obj_list, assoc_list = Container.instance.resource_registry.find_subjects(object=resid, id_only=False) for obj,assoc in zip(obj_list,assoc_list): fragments.append("") - fragments.append("" % ( - build_type_link(obj._get_type()), obj.name, build_link(assoc.s, "/view/%s" % assoc.s), build_link(assoc.p, "/assoc?predicate=%s" % assoc.p))) + fragments.append("" % ( + build_type_link(obj._get_type()), obj.name, build_link(assoc.s, "/view/%s" % assoc.s), + build_link(assoc.p, "/assoc?predicate=%s" % assoc.p), build_link("Delete", "/cmd/delete?rid=%s" % assoc._id))) fragments.append("
TypeNameIDPredicate
TypeNameIDPredicateCommand
%s%s %s%s
%s%s %s%s%s

") fragments.append("

TO

") fragments.append("

") - fragments.append("") + fragments.append("") obj_list, assoc_list = Container.instance.resource_registry.find_objects(subject=resid, id_only=False) for obj,assoc in zip(obj_list,assoc_list): fragments.append("") - fragments.append("" % ( - build_type_link(obj._get_type()), obj.name, build_link(assoc.o, "/view/%s" % assoc.o), build_link(assoc.p, "/assoc?predicate=%s" % assoc.p))) + fragments.append("" % ( + build_type_link(obj._get_type()), obj.name, build_link(assoc.o, "/view/%s" % assoc.o), + build_link(assoc.p, "/assoc?predicate=%s" % assoc.p), build_link("Delete", "/cmd/delete?rid=%s" % assoc._id))) fragments.append("
TypeNameIDPredicate
TypeNameIDPredicateCommand
%s%s %s%s
%s%s %s%s%s

") return fragments @@ -301,11 +303,34 @@ def build_commands(resource_id, restype): fragments.append(build_command("Start Agent", "/cmd/start_agent?rid=%s" % resource_id)) fragments.append(build_command("Stop Agent", "/cmd/start_agent?rid=%s" % resource_id)) + elif restype == "InstrumentDevice": + res_list,_ = Container.instance.resource_registry.find_resources(RT.InstrumentModel, id_only=False) + options = [(res.name, res._id) for res in res_list] + args = [('select','model',options)] + fragments.append(build_command("Link Model", "/cmd/link_model?rid=%s" % resource_id, args)) + + res_list,_ = Container.instance.resource_registry.find_objects(resource_id, PRED.hasModel, RT.InstrumentModel, id_only=False) + options = [(res.name, res._id) for res in res_list] + args = [('select','model1',options)] + fragments.append(build_command("Unlink Model", "/cmd/unlink_model?rid=%s" % resource_id, args)) + fragments.append("") return "".join(fragments) def build_command(text, link, args=None): - return "
%s
" % build_link(text, link) + fragments = [] + if args: + arg_type, arg_name, arg_more = args[0] + fragments.append("
%s " % (link, arg_name, arg_name, text)) + if arg_type == "select": + fragments.append("") + fragments.append("
") + else: + fragments.append("
%s
" % build_link(text, link)) + return "".join(fragments) # ---------------------------------------------------------------------------------------- @@ -313,8 +338,7 @@ def build_command(text, link, args=None): def process_command(cmd): try: cmd = str(cmd) - resource_id = request.args.get('rid', None) - resource_id = str(resource_id) + resource_id = get_arg('rid') Container.instance.resource_registry.read(resource_id) @@ -325,7 +349,7 @@ def process_command(cmd): fragments = [ build_standard_menu(), - "

Command result

", + "

Command %s result

" % cmd, "

", ] @@ -338,12 +362,27 @@ def process_command(cmd): return build_page(content) except Exception, e: - return build_simple_page("Error: %s" % traceback.format_exc()) + return build_error_page(traceback.format_exc()) def _process_cmd_delete(resource_id): Container.instance.resource_registry.delete(resource_id) return "OK" +def _process_cmd_link_model(resource_id): + model_id = get_arg('model') + from interface.services.sa.iinstrument_management_service import InstrumentManagementServiceClient + ims_cl = InstrumentManagementServiceClient() + ims_cl.assign_instrument_model_to_instrument_device(model_id, resource_id) + redir_link = flask.redirect("/") + return "OK" + +def _process_cmd_unlink_model(resource_id): + model_id = get_arg('model') + from interface.services.sa.iinstrument_management_service import InstrumentManagementServiceClient + ims_cl = InstrumentManagementServiceClient() + ims_cl.unassign_instrument_model_from_instrument_device(model_id, resource_id) + redir_link = flask.redirect("/") + return "OK" # ---------------------------------------------------------------------------------------- @@ -375,7 +414,7 @@ def process_assoc_list(): except NotFound: return flask.redirect("/") except Exception, e: - return build_simple_page("Error: %s" % traceback.format_exc()) + return build_error_page(traceback.format_exc()) # ---------------------------------------------------------------------------------------- @@ -395,7 +434,7 @@ def process_nested(rid): return build_page(content) except Exception, e: - return build_simple_page("Error: %s" % traceback.format_exc()) + return build_error_page(traceback.format_exc()) def find_subordinate_entity(self, parent_resource_id='', child_resource_type_list=None): @@ -472,7 +511,7 @@ def process_dir_path(path): except NotFound: return flask.redirect("/") except Exception, e: - return build_simple_page("Error: %s" % traceback.format_exc()) + return build_error_page(traceback.format_exc()) def build_dir_path(path): if path.startswith('/'): @@ -524,7 +563,7 @@ def process_events(): except NotFound: return flask.redirect("/") except Exception, e: - return build_simple_page("Error: %s" % traceback.format_exc()) + return build_error_page(traceback.format_exc()) def build_events_table(events_list): fragments = [ @@ -558,6 +597,15 @@ def build_link(text, link): def build_standard_menu(): return "

[Home]

" +def build_error_page(msg): + fragments = [ + build_standard_menu(), + "

Error

", + "

%s

" % msg, + ] + content = "\n".join(fragments) + return build_page(content) + def build_simple_page(content): return build_page("

" + content + "

") @@ -569,13 +617,25 @@ def build_page(content, title=""): "table,th,td {font-size:small;border: 1px solid black;border-collapse:collapse;padding-left:3px;padding-right:3px;vertical-align:top;}", "th {background-color:lightgray;}", ".preform {white-space:pre;font-family:monospace;font-size:120%;}", - "", + "", + "" "", content, "" ] return "\n".join(fragments) +def get_arg(arg_name, default=None): + aval = request.args.get(arg_name, None) + return str(aval) if aval else default + def convert_unicode(data): """ Used to recursively convert unicode in JSON structures into proper data structures @@ -613,10 +673,6 @@ def get_value_dict(obj, ignore_fields=None): val_dict[k] = vdict else: val_dict[k] = val -# elif isinstance(obj, IonObjectBase): -# val_dict[k] = get_formatted_value(val, fieldname=k, fieldschema=obj._schema.get(k, None), is_root=False) -# else: -# val_dict[k] = get_formatted_value(val, fieldname=k, is_root=False) return val_dict date_fieldnames = ['ts_created', 'ts_updated'] diff --git a/ion/processes/bootstrap/ion_loader.py b/ion/processes/bootstrap/ion_loader.py index f03427859..8472224bb 100644 --- a/ion/processes/bootstrap/ion_loader.py +++ b/ion/processes/bootstrap/ion_loader.py @@ -474,15 +474,15 @@ def _load_PlatformDevice(self, row): for ass_id in ass_ids: ims_client.deploy_platform_device_to_logical_platform(res_id, self.resource_ids[ass_id]) - ass_id = row["primary_deployment_lp_id"] - if ass_id: - ims_client.deploy_as_primary_platform_device_to_logical_platform(res_id, self.resource_ids[ass_id]) - ass_id = row["platform_model_id"] if ass_id: ims_client.assign_platform_model_to_platform_device(self.resource_ids[ass_id], res_id) - self._resource_advance_lcs(row, res_id) + self._resource_advance_lcs(row, res_id, "PlatformDevice") + + ass_id = row["primary_deployment_lp_id"] + if ass_id: + ims_client.deploy_as_primary_platform_device_to_logical_platform(res_id, self.resource_ids[ass_id]) def _load_InstrumentDevice(self, row): res_id = self._basic_resource_create(row, "InstrumentDevice", "id/", @@ -495,10 +495,6 @@ def _load_InstrumentDevice(self, row): for ass_id in ass_ids: ims_client.deploy_instrument_device_to_logical_instrument(res_id, self.resource_ids[ass_id]) - ass_id = row["primary_deployment_li_id"] - if ass_id: - ims_client.deploy_as_primary_instrument_device_to_logical_instrument(res_id, self.resource_ids[ass_id]) - ass_id = row["instrument_model_id"] if ass_id: ims_client.assign_instrument_model_to_instrument_device(self.resource_ids[ass_id], res_id) @@ -507,7 +503,12 @@ def _load_InstrumentDevice(self, row): if ass_id: ims_client.assign_instrument_device_to_platform_device(res_id, self.resource_ids[ass_id]) - self._resource_advance_lcs(row, res_id) + self._resource_advance_lcs(row, res_id, "InstrumentDevice") + + ass_id = row["primary_deployment_li_id"] + if ass_id: + ims_client.deploy_as_primary_instrument_device_to_logical_instrument(res_id, self.resource_ids[ass_id]) + def _load_InstrumentAgent(self, row): res_id = self._basic_resource_create(row, "InstrumentAgent", "ia/", @@ -521,7 +522,7 @@ def _load_InstrumentAgent(self, row): for im_id in im_ids: svc_client.assign_instrument_model_to_instrument_agent(self.resource_ids[im_id], res_id) - self._resource_advance_lcs(row, res_id) + self._resource_advance_lcs(row, res_id, "InstrumentAgent") def _load_InstrumentAgentInstance(self, row): ia_id = row["instrument_agent_id"]