def test_post_alert_withIP(self): self.updateDb() sel_worker = AmqpWorker(exchange_name="on.events", topic_routing_key="node.alerts.#", external_callback=self.amqp_callback, timeout=100) sel_worker.setDaemon(True) sel_worker.start() for z in range(2): url = "http://{0}:{1}/api/2.0/notification/alerts".format( fit_common.fitargs()["rackhd_host"], HTTP_PORT) fit_common.restful(url, rest_action='post', rest_payload=self.payload) sleep(1) logs.debug_1("Post attempt {0}".format(z)) logs.debug_1("Wait for the alert on the amqp bus") self._wait_amqp_message(100) amqp_message = amqp_queue.get() logs.debug_1("Dispose the Pika connection") sel_worker.dispose() logs.debug_1("Validate the content of the amqp msg") self.validate(amqp_message) logs.debug_1("Done with the alert test")
def _list_file(self, mon_url): serverip = self._get_serverip() control_port = str(fit_common.fitcfg()["image_service"]["control_port"]) response = fit_common.restful("http://" + serverip + ":" + control_port + mon_url) if response['status'] in range(200, 205): return response['json'] else: logs.error('Incorrect HTTP return code, expected 201-205, got:' + str(response['status'])) return "fail"
def _delete_os_image(self, osname, osversion): mon_url = '/images?name=' + osname + '&version=' + osversion serverip = self._get_serverip() control_port = str(fit_common.fitcfg()["image_service"]["control_port"]) response = fit_common.restful("http://" + serverip + ":" + control_port + mon_url, rest_action="delete") if response['status'] in range(200, 205): return response['json'] else: logs.error('Incorrect HTTP return code, expected 201-205, got:' + str(response['status'])) return "fail"
def _delete_microkernel(self, filename): mon_url = '/microkernel?name=' + filename serverip = self._get_serverip() control_port = str(fit_common.fitcfg()["image_service"]["control_port"]) response = fit_common.restful("http://" + serverip + ":" + control_port + mon_url, rest_action="delete") if response['status'] in range(200, 205): return response['json'] else: logs.debug_3('Incorrect HTTP return code, expected 201-205, got:' + str(response['status'])) return "fail"
def _list_file(self, mon_url): serverip = self._get_serverip() control_port = str( fit_common.fitcfg()["image_service"]["control_port"]) response = fit_common.restful("http://" + serverip + ":" + control_port + mon_url) if response['status'] in range(200, 205): return response['json'] else: logs.error('Incorrect HTTP return code, expected 201-205, got:' + str(response['status'])) return "fail"
def _upload_microkernel(self, filename): myfile = open(filename, 'rb') serverip = self._get_serverip() mon_url = '/microkernel?name=' + filename control_port = str(fit_common.fitcfg()["image_service"]["control_port"]) response = fit_common.restful("http://" + serverip + ":" + control_port + mon_url, rest_action="binary-put", rest_payload=myfile) if response['status'] in range(200, 205): return response['json'] else: logs.debug_3('Incorrect HTTP return code, expected 201, got:' + str(response['status'])) return "fail"
def _upload_os_from_local(self, osname, osversion, path): mon_url = '/images?name=' + osname + '&version=' + osversion + '&isolocal=' + path serverip = self._get_serverip() control_port = str(fit_common.fitcfg()["image_service"]["control_port"]) response = fit_common.restful( "http://" + serverip + ":" + control_port + mon_url, rest_action="put", rest_payload={}, rest_timeout=None, rest_headers={}) if response['status'] in range(200, 205): return response['json'] else: logs.error('Incorrect HTTP return code, expected 201-205, got:' + str(response['status'])) return "fail"
def _upload_iso_file(self, osname, osversion, filename): serverip = self._get_serverip() mon_url = '/images?name=' + osname + '&version=' + osversion + '&isoclient=' + filename myfile = open(filename, 'rb') control_port = str(fit_common.fitcfg()["image_service"]["control_port"]) response = fit_common.restful( "http://" + serverip + ":" + control_port + mon_url, rest_action="binary-put", rest_payload=myfile, rest_timeout=None, rest_headers={}) if response['status'] in range(200, 205): return response['json'] else: logs.error('Incorrect HTTP return code, expected 201-205, got:' + str(response['status'])) return "fail"
def _delete_microkernel(self, filename): mon_url = '/microkernel?name=' + filename serverip = self._get_serverip() control_port = str( fit_common.fitcfg()["image_service"]["control_port"]) response = fit_common.restful("http://" + serverip + ":" + control_port + mon_url, rest_action="delete") if response['status'] in range(200, 205): return response['json'] else: logs.debug_3('Incorrect HTTP return code, expected 201-205, got:' + str(response['status'])) return "fail"
def _delete_os_image(self, osname, osversion): mon_url = '/images?name=' + osname + '&version=' + osversion serverip = self._get_serverip() control_port = str( fit_common.fitcfg()["image_service"]["control_port"]) response = fit_common.restful("http://" + serverip + ":" + control_port + mon_url, rest_action="delete") if response['status'] in range(200, 205): return response['json'] else: logs.error('Incorrect HTTP return code, expected 201-205, got:' + str(response['status'])) return "fail"
def test_post_alert_withIP(self): self.updateDb() sel_worker = AmqpWorker( exchange_name="on.events", topic_routing_key="node.alerts.#", external_callback=self.amqp_callback, timeout=100) sel_worker.setDaemon(True) sel_worker.start() for z in range(2): url = "http://{0}:{1}/api/2.0/notification/alerts".format(fit_common.fitargs()["rackhd_host"], HTTP_PORT) fit_common.restful(url, rest_action='post', rest_payload=self.payload) sleep(1) logs.debug_1("Post attempt {0}".format(z)) logs.debug_1("Wait for the alert on the amqp bus") self._wait_amqp_message(100) amqp_message = amqp_queue.get() logs.debug_1("Dispose the Pika connection") sel_worker.dispose() logs.debug_1("Validate the content of the amqp msg") self.validate(amqp_message) logs.debug_1("Done with the alert test")
def _upload_microkernel(self, filename): myfile = open(filename, 'rb') serverip = self._get_serverip() mon_url = '/microkernel?name=' + filename control_port = str( fit_common.fitcfg()["image_service"]["control_port"]) response = fit_common.restful("http://" + serverip + ":" + control_port + mon_url, rest_action="binary-put", rest_payload=myfile) if response['status'] in range(200, 205): return response['json'] else: logs.debug_3('Incorrect HTTP return code, expected 201, got:' + str(response['status'])) return "fail"
def _upload_os_by_network(self, osname, osversion, source_url): mon_url = '/images?name=' + osname + '&version=' + osversion + '&isoweb=' + source_url serverip = self._get_serverip() control_port = str( fit_common.fitcfg()["image_service"]["control_port"]) response = fit_common.restful("http://" + serverip + ":" + control_port + mon_url, rest_action="put", rest_payload={}, rest_timeout=None, rest_headers={}) if response['status'] in range(200, 205): return response['json'] else: logs.error('Incorrect HTTP return code, expected 201, got:' + str(response['status'])) return "fail"
def _upload_iso_file_to_store(self, filename): serverip = self._get_serverip() mon_url = '/iso?name=' + filename file = open(filename, 'rb') control_port = str( fit_common.fitcfg()["image_service"]["control_port"]) response = fit_common.restful("http://" + serverip + ":" + control_port + mon_url, rest_action="binary-put", rest_payload=file, rest_timeout=None, rest_headers={}) if response['status'] in range(200, 205): return response['json'] else: logs.error('Incorrect HTTP return code, expected 201-205, got:' + str(response['status'])) return "fail"
def test01_set_auth_user(self): auth_json = open('auth.json', 'w') auth_json.write('{"username":"******"api"][0]["admin_user"] + '", "password":"******"api"][0]["admin_pass"] + '", "role":"Administrator"}') auth_json.close() try: # add first user to remote rackhd directly return_code = "" rackhd_hostname = fit_common.fitargs()['rackhd_host'] set_auth_url = "https://" + rackhd_hostname + ":" + str(fit_common.fitports()['https']) + "/api/2.0/users" rc = fit_common.restful(url_command=set_auth_url, rest_action="post", rest_payload=json.load(open('auth.json'))) return_code = str(rc['status']) except Exception as e: log.info_5("ALERT: RackHD is not in localhost, will set first user through ssh{0}".format(e)) if return_code != '201': log.info_5("ALERT: Can't set first user to RackHD https port directly, will set it through ssh") # ssh login to rackhd and add first user to localhost rackhd fit_common.remote_shell('rm auth.json') fit_common.scp_file_to_ora('auth.json') rc = fit_common.remote_shell("curl -ks -X POST -H 'Content-Type:application/json' https://localhost:" + str(fit_common.fitports()['https']) + "/api/2.0/users -d @auth.json") if rc['exitcode'] != 0: log.info_5("ALERT: Auth admin user not set! Please manually set the admin user account if required.")