def set(self, key, value):
        """Set key to the specified value.

        :param key: The key to look in the object data.
        :param value: The value to set.
        """
        set_value(self.data, key, value)
    def invoke(self):
        full_path = os.path.abspath(self.args.JOB)
        job_file = self.retrieve_file(full_path, JOB_FILE_EXTENSIONS)
        job_dir = os.path.dirname(job_file)
        tests_dir = os.path.join(job_dir, TESTS_DIR)

        if os.path.isdir(tests_dir):
            tar_repo = None
            try:
                tar_repo = create_tar(tests_dir)
                encoded_tests = base64_encode(tar_repo)

                json_data = None
                with open(job_file, "r") as json_file:
                    try:
                        json_data = json.load(json_file)
                        set_value(json_data, LAVA_TEST_SHELL_TAR_REPO_KEY,
                                  encoded_tests)
                    except Exception:
                        raise CommandError("Cannot read job file "
                                           "'{0}'.".format(job_file))

                content = json.dumps(json_data, indent=4)
                write_file(job_file, content)

                print >> sys.stdout, "Job definition updated."
            finally:
                if tar_repo and os.path.isfile(tar_repo):
                    os.unlink(tar_repo)
        else:
            raise CommandError("Cannot find tests directory.")
 def test_set_value_2(self):
     data = copy.deepcopy(TEST_TEMPLATE)
     expected = "foo"
     set_value(data, "key11", expected)
     obtained = get_key(data, "key11")
     self.assertEquals(expected, obtained)