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
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