Example #1
0
    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"])
            )