def common_update_proceduce(install_image, regnerate_image_id=True, device_type="vexpress-qemu", checksum="abc123", broken_image=False): if broken_image: artifact_id = "broken_image_" + str(random.randint(0, 999999)) elif regnerate_image_id: artifact_id = Helpers.artifact_id_randomize(install_image) logger.debug("Randomized image id: " + artifact_id) else: artifact_id = Helpers.yocto_id_from_ext4(install_image) # create atrifact artifact_file = "artifact.mender" created = image.make_artifact(install_image, device_type, artifact_id, artifact_file) if created: deploy.upload_image("artifact.mender") devices_accepted_id = [ device["id"] for device in adm.get_devices_status("accepted") ] deployment_id = deploy.trigger_deployment(name="New valid update", artifact_name=artifact_id, devices=devices_accepted_id) # remove the artifact file os.remove(artifact_file) return deployment_id, artifact_id logger.error("error creating artifact")
def trigger_deployment(self, name, artifact_name, devices): deployments_path_url = self.get_deployments_base_path() + "deployments" trigger_data = { "name": name, "artifact_name": artifact_name, "devices": devices } headers = {'Content-Type': 'application/json'} headers.update(self.auth.get_auth_token()) r = requests.post(deployments_path_url, headers=headers, data=json.dumps(trigger_data), verify=False) logger.debug("triggering deployment with: " + json.dumps(trigger_data)) assert r.status_code == requests.status_codes.codes.created deployment_id = str(r.headers['Location'].split("/")[-1]) logger.info("deployment [%s] triggered for device [%s]" % (devices, deployment_id)) return deployment_id
def common_update_procedure(install_image, regenerate_image_id=True, device_type=conftest.machine_name, broken_image=False, verify_status=True, signed=False, devices=None, scripts=[], pre_upload_callback=lambda: None, pre_deployment_callback=lambda: None, deployment_triggered_callback=lambda: None, compression_type="gzip"): with artifact_lock: if broken_image: artifact_id = "broken_image_" + str(random.randint(0, 999999)) elif regenerate_image_id: artifact_id = Helpers.artifact_id_randomize(install_image) logger.debug("randomized image id: " + artifact_id) else: artifact_id = Helpers.yocto_id_from_ext4(install_image) compression_arg = "--compression " + compression_type # create atrifact with tempfile.NamedTemporaryFile() as artifact_file: created_artifact = image.make_artifact( install_image, device_type, artifact_id, artifact_file, signed=signed, scripts=scripts, global_flags=compression_arg) if created_artifact: pre_upload_callback() deploy.upload_image(created_artifact) if devices is None: devices = list( set([ device["device_id"] for device in adm.get_devices_status("accepted") ])) pre_deployment_callback() deployment_id = deploy.trigger_deployment( name="New valid update", artifact_name=artifact_id, devices=devices) else: logger.warn("failed to create artifact") pytest.fail("error creating artifact") deployment_triggered_callback() # wait until deployment is in correct state if verify_status: deploy.check_expected_status("inprogress", deployment_id) return deployment_id, artifact_id
def common_update_procedure(install_image, regenerate_image_id=True, device_type="vexpress-qemu", broken_image=False, verify_status=True, devices=None): with artifact_lock: if broken_image: artifact_id = "broken_image_" + str(random.randint(0, 999999)) elif regenerate_image_id: artifact_id = Helpers.artifact_id_randomize(install_image) logger.debug("Randomized image id: " + artifact_id) else: artifact_id = Helpers.yocto_id_from_ext4(install_image) # create atrifact with tempfile.NamedTemporaryFile() as artifact_file: created_artifact = image.make_artifact(install_image, device_type, artifact_id, artifact_file) if created_artifact: deploy.upload_image(created_artifact) if devices is None: devices = list( set([ device["device_id"] for device in adm.get_devices_status("accepted") ])) deployment_id = deploy.trigger_deployment( name="New valid update", artifact_name=artifact_id, devices=devices) else: pytest.fail("error creating artifact") # wait until deployment is in correct state if verify_status: deploy.check_expected_status("inprogress", deployment_id) return deployment_id, artifact_id