Ejemplo n.º 1
0
    def run_rightscript(self, server_name, script_data, inputs={}):
        self.logger.debug("~~~~ %s ~~~~" % inspect.stack()[0][3])
        filters     = {'nickname': server_name}
        server_id   = self.get_id(filters)
        url         = '/'.join([self.base_url + 'servers', str(server_id), 'run_script'])

        rs          = RightScript(self.account_id, self.username, self.password)

        post_data   = {'right_script_href': rs.get_href(script_data)}
        post_data   = dict(map(lambda (key, value): ("server[" + str(key) + "]", value), post_data.items()))

        if inputs:
            inputs      = dict(map(lambda (key, value): ("server[parameters][" + str(key) + "]", value), inputs.items()))
            post_data   = dict(post_data.items() + inputs.items())

        self.logger.debug("post data: %s" % post_data)
        self.logger.info("Running rightscript: \"%s\" on %s" % (', '.join(["%s: %s" % (key, val) for (key, val) in script_data.items()]), server_name))

        http_code   = ResumatorRightScale.make_request(self, url, "POST", post_data)
        
        if http_code == 201:
            self.logger.info("Successfully executed %s on %s" % (script_data['name'], server_name))

            return True

        self.logger.error("HTTP CODE: %d: %s failed on %s" % (http_code, script_data['name'], server_name))
        return False
Ejemplo n.º 2
0
    def run_rightscript(self, array_name, script_data, inputs={}, all_servers=True):
        self.logger.debug("~~~~ %s ~~~~" % inspect.stack()[0][3])
        filters = {"nickname": array_name}
        array_id = self.get_id(filters)
        url = "/".join(
            [
                self.base_url + "server_arrays",
                str(array_id),
                ("run_script_on_all" if all_servers else "run_script") + "?format=%s" % self.resp_format,
            ]
        )

        rs = RightScript(self.account_id, self.username, self.password)

        ## we could also do this with the ServerTemplate module and pass a name, but
        ## in this case I think it makes more sense to pass in the href because we want to send
        ## the server template that is being used by the array.
        server_template_href = script_data.pop("server_template_href", None)

        post_data = {"right_script_href": rs.get_href(script_data), "server_template_hrefs": server_template_href}

        post_data = dict(map(lambda (key, value): ("server_array[" + str(key) + "]", value), post_data.items()))

        if inputs:
            inputs = dict(
                map(lambda (key, value): ("server_array[parameters][" + str(key) + "]", value), inputs.items())
            )
            post_data = dict(post_data.items() + inputs.items())

        self.logger.debug("post data: %s" % post_data)
        self.logger.info(
            'Running rightscript: "%s" on %s'
            % (", ".join(["%s: %s" % (key, val) for (key, val) in script_data.items()]), array_name)
        )

        http_code = ResumatorRightScale.make_request(self, url, "POST", post_data)

        if http_code == 201:
            self.logger.info("Successfully executed %s on %s" % (script_data["name"], array_name))

            return True

        self.logger.error("HTTP CODE: %d: %s failed on %s" % (http_code, script_data["name"], array_name))
        return False