posit-dev / posit-dev/rsconnect-python
`rsconnect add server` with --cacert doesn't work with `.der` certs
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- Python
- Star
- 37
- Fork
- 28
- Merge trung bình
- 1 ngày 3 giờ
- Pull request đã merge (30 ngày)
- 7
Mô tả
Found while testing the --cacert fix, the .der cert never worked right with rsconnect add. We can run deploy and details with the .der certs but cannot rsconnect add.
We added .der support here: https://github.com/rstudio/rsconnect-python/pull/336
> rsconnect add -s https://alwayssecure.rsc:3443 -k {API_KEY} --cacert ~/Downloads/alwayssecure.rsc.der -n alwayssecureder
Detected the following inputs:
name: COMMANDLINE
server: COMMANDLINE
api_key: COMMANDLINE
insecure: DEFAULT
cacert: COMMANDLINE
Checking https://alwayssecure.rsc:3443... [OK]
Checking API key... [OK]
Traceback (most recent call last):
File "/Users/kgartland/.pyenv/versions/rsconnect-tag/bin/rsconnect", line 8, in <module>
sys.exit(cli())
File "/Users/kgartland/.pyenv/versions/3.8.2/envs/rsconnect-tag/lib/python3.8/site-packages/click/core.py", line 1130, in __call__
return self.main(*args, **kwargs)
File "/Users/kgartland/.pyenv/versions/3.8.2/envs/rsconnect-tag/lib/python3.8/site-packages/click/core.py", line 1055, in main
rv = self.invoke(ctx)
File "/Users/kgartland/.pyenv/versions/3.8.2/envs/rsconnect-tag/lib/python3.8/site-packages/click/core.py", line 1657, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/Users/kgartland/.pyenv/versions/3.8.2/envs/rsconnect-tag/lib/python3.8/site-packages/click/core.py", line 1404, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/Users/kgartland/.pyenv/versions/3.8.2/envs/rsconnect-tag/lib/python3.8/site-packages/click/core.py", line 760, in invoke
return __callback(*args, **kwargs)
File "/Users/kgartland/.pyenv/versions/3.8.2/envs/rsconnect-tag/lib/python3.8/site-packages/rsconnect/main.py", line 169, in wrapper
return func(*args, **kwargs)
File "/Users/kgartland/.pyenv/versions/3.8.2/envs/rsconnect-tag/lib/python3.8/site-packages/click/decorators.py", line 26, in new_func
return f(get_current_context(), *args, **kwargs)
File "/Users/kgartland/.pyenv/versions/3.8.2/envs/rsconnect-tag/lib/python3.8/site-packages/rsconnect/main.py", line 463, in add
server_store.set(
File "/Users/kgartland/.pyenv/versions/3.8.2/envs/rsconnect-tag/lib/python3.8/site-packages/rsconnect/metadata.py", line 303, in set
self._set(name, {**common_data, **target_data})
File "/Users/kgartland/.pyenv/versions/3.8.2/envs/rsconnect-tag/lib/python3.8/site-packages/rsconnect/metadata.py", line 155, in _set
self.save()
File "/Users/kgartland/.pyenv/versions/3.8.2/envs/rsconnect-tag/lib/python3.8/site-packages/rsconnect/metadata.py", line 207, in save
data = json.dumps(self._data, indent=4).encode("utf-8")
File "/Users/kgartland/.pyenv/versions/3.8.2/lib/python3.8/json/__init__.py", line 234, in dumps
return cls(
File "/Users/kgartland/.pyenv/versions/3.8.2/lib/python3.8/json/encoder.py", line 201, in encode
chunks = list(chunks)
File "/Users/kgartland/.pyenv/versions/3.8.2/lib/python3.8/json/encoder.py", line 431, in _iterencode
yield from _iterencode_dict(o, _current_indent_level)
File "/Users/kgartland/.pyenv/versions/3.8.2/lib/python3.8/json/encoder.py", line 405, in _iterencode_dict
yield from chunks
File "/Users/kgartland/.pyenv/versions/3.8.2/lib/python3.8/json/encoder.py", line 405, in _iterencode_dict
yield from chunks
File "/Users/kgartland/.pyenv/versions/3.8.2/lib/python3.8/json/encoder.py", line 438, in _iterencode
o = _default(o)
File "/Users/kgartland/.pyenv/versions/3.8.2/lib/python3.8/json/encoder.py", line 179, in default
raise TypeError(f'Object of type {o.__class__.__name__} '
TypeError: Object of type bytes is not JSON serializable
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Bắt đầu với lệnh add trong rsconnect/main.py, sau đó lần theo server_store.set qua rsconnect/metadata.py, đặc biệt là _set và save. Chạy lại lệnh bằng chứng chỉ .der và kiểm tra cách giá trị chứng chỉ được lưu trữ. Được xem là hoàn tất khi rsconnect add hoàn thành mà không có lỗi tuần tự hóa JSON và server đã lưu có thể được deploy và details sử dụng.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- python
- Lĩnh vực
- cli
- Loại issue
- Lỗi
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức phù hợp với người mới
- 38/100