def load_json(cls, data, default_rule=None): """Allow loading of JSON rule data.""" # Suck in the JSON data and parse the rules rules = dict( (k, parse_rule(v)) for k, v in jsonutils.loads(data).items()) return cls(rules, default_rule)
def load_json(cls, data, default_rule=None): """Allow loading of JSON rule data.""" # Suck in the JSON data and parse the rules rules = dict((k, parse_rule(v)) for k, v in jsonutils.loads(data).items()) return cls(rules, default_rule)
def failover(context, container_name): swift_conn = Clients(context).swift() LOG.debug("failover container name %s" % (container_name)) # TODO(Oshrit): load dynamically template_generator = heat_flame_template.HeatFlameTemplate(context) # Loop over metadata file, load actions swift_meta, actions_metadata = swift_conn.get_object( container_name, "metadata") actions = jsonutils.loads(actions_metadata) policy_status = False try: for recover_action in actions["actions"]: action_resource = recover_action["resource"] db_action = recover_action["action"] action_extra_data = recover_action["execution_data"] # Instantiate action class action_obj = action.load_action_driver(db_action["class_name"], context=context) if action_obj.is_using_global_container(): action_container_name =\ get_global_container_name(context.tenant, "") else: action_container_name = container_name # Invoke recover method on action class passing resource id policy_status = action_obj.failover(context, action_resource["id"], action_extra_data, action_container_name) # Invoke failover for each resource-action action_obj.generate_template(context, template_generator) except Exception, e: policy_status = False LOG.debug(e) LOG.error("resource %s could not be recovered using action %s." "Verify that the resource is a valid resource" % (db_action["id"], db_action["name"]))
def failover(context, container_name): swift_conn = Clients(context).swift() LOG.debug("failover container name %s" % (container_name)) # TODO(Oshrit): load dynamically template_generator = heat_flame_template.HeatFlameTemplate(context) # Loop over metadata file, load actions swift_meta, actions_metadata = swift_conn.get_object(container_name, "metadata") actions = jsonutils.loads(actions_metadata) policy_status = False try: for recover_action in actions["actions"]: action_resource = recover_action["resource"] db_action = recover_action["action"] action_extra_data = recover_action["execution_data"] # Instantiate action class action_obj = action.load_action_driver(db_action["class_name"], context=context) if action_obj.is_using_global_container(): action_container_name = get_global_container_name(context.tenant, "") else: action_container_name = container_name # Invoke recover method on action class passing resource id policy_status = action_obj.failover( context, action_resource["id"], action_extra_data, action_container_name ) # Invoke failover for each resource-action action_obj.generate_template(context, template_generator) except Exception, e: policy_status = False LOG.debug(e) LOG.error( "resource %s could not be recovered using action %s." "Verify that the resource is a valid resource" % (db_action["id"], db_action["name"]) )