canonical / jhack

Chock-full of Juju hackery.
Apache License 2.0
51 stars 24 forks source link

Fresh build from source expects config.toml #38

Closed Aflynn50 closed 1 year ago

Aflynn50 commented 1 year ago

A fresh install with git clone, pip install -r requirements then python3 main.py gives an error that the config file cannot be found

Traceback (most recent call last):
  File "/home/aflynn50/Canonical/jhack/jhack/main.py", line 43, in <module>
    from jhack.utils.nuke import nuke
  File "/home/aflynn50/Canonical/jhack/jhack/utils/nuke.py", line 22, in <module>
    ASK_FOR_CONFIRMATION = CONFIG["nuke"]["ask_for_confirmation"]
  File "/home/aflynn50/Canonical/jhack/jhack/conf/conf.py", line 32, in __getitem__
    return self.data[item]
  File "/home/aflynn50/Canonical/jhack/jhack/conf/conf.py", line 25, in data
    self._load()
  File "/home/aflynn50/Canonical/jhack/jhack/conf/conf.py", line 20, in _load
    self._data = toml.load(self._path.open())
  File "/usr/lib/python3.10/pathlib.py", line 1119, in open
    return self._accessor.open(self, mode, buffering, encoding, errors,
FileNotFoundError: [Errno 2] No such file or directory: '/home/aflynn50/.jhack_config.toml'

When this file is created then we get another error

Traceback (most recent call last):
  File "/home/aflynn50/Canonical/jhack/jhack/main.py", line 43, in <module>
    from jhack.utils.nuke import nuke
  File "/home/aflynn50/Canonical/jhack/jhack/utils/nuke.py", line 22, in <module>
    ASK_FOR_CONFIRMATION = CONFIG["nuke"]["ask_for_confirmation"]
  File "/home/aflynn50/Canonical/jhack/jhack/conf/conf.py", line 32, in __getitem__
    return self.data[item]
KeyError: 'nuke'

Which can apparently be fixed by putting echo "nuke.ask_for_confirmation = false" > ~/.jhack/config.toml

carlcsaposs-canonical commented 1 year ago
Had the same issue, here's my output ```shell ubuntu@dev-env-5:~$ git clone https://github.com/PietroPasotti/jhack.git Cloning into 'jhack'... remote: Enumerating objects: 2296, done. remote: Counting objects: 100% (104/104), done. remote: Compressing objects: 100% (40/40), done. remote: Total 2296 (delta 65), reused 64 (delta 64), pack-reused 2192 Receiving objects: 100% (2296/2296), 822.06 KiB | 23.49 MiB/s, done. Resolving deltas: 100% (1620/1620), done. ubuntu@dev-env-5:~$ cd jhack/ ubuntu@dev-env-5:~/jhack$ pip install -r requirements.txt Defaulting to user installation because normal site-packages is not writeable Collecting typer==0.4.1 Downloading typer-0.4.1-py3-none-any.whl (27 kB) Collecting ops==1.5.3 Downloading ops-1.5.3-py3-none-any.whl (159 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 159.1/159.1 KB 8.2 MB/s eta 0:00:00 Collecting rich==12.0.1 Downloading rich-12.0.1-py3-none-any.whl (224 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 224.2/224.2 KB 38.3 MB/s eta 0:00:00 Collecting parse==1.19.0 Downloading parse-1.19.0.tar.gz (30 kB) Preparing metadata (setup.py) ... done Collecting juju==2.9.7 Downloading juju-2.9.7.tar.gz (752 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 752.9/752.9 KB 70.6 MB/s eta 0:00:00 Preparing metadata (setup.py) ... done Collecting toml Downloading toml-0.10.2-py2.py3-none-any.whl (16 kB) Collecting asttokens Downloading asttokens-2.2.1-py2.py3-none-any.whl (26 kB) Collecting astunparse Downloading astunparse-1.6.3-py2.py3-none-any.whl (12 kB) Requirement already satisfied: click<9.0.0,>=7.1.1 in /usr/lib/python3/dist-packages (from typer==0.4.1->-r requirements.txt (line 1)) (8.0.3) Requirement already satisfied: PyYAML in /usr/lib/python3/dist-packages (from ops==1.5.3->-r requirements.txt (line 2)) (5.4.1) Collecting commonmark<0.10.0,>=0.9.0 Downloading commonmark-0.9.1-py2.py3-none-any.whl (51 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 51.1/51.1 KB 13.1 MB/s eta 0:00:00 Collecting pygments<3.0.0,>=2.6.0 Downloading Pygments-2.14.0-py3-none-any.whl (1.1 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.1/1.1 MB 72.3 MB/s eta 0:00:00 Collecting kubernetes>=12.0.1 Downloading kubernetes-25.3.0-py2.py3-none-any.whl (1.4 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.4/1.4 MB 82.3 MB/s eta 0:00:00 Collecting macaroonbakery<2.0,>=1.1 Downloading macaroonbakery-1.3.1.tar.gz (79 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 79.5/79.5 KB 19.9 MB/s eta 0:00:00 Preparing metadata (setup.py) ... done Collecting paramiko<3.0.0,>=2.4.0 Downloading paramiko-2.12.0-py2.py3-none-any.whl (213 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 213.1/213.1 KB 40.7 MB/s eta 0:00:00 Collecting pyRFC3339<2.0,>=1.0 Downloading pyRFC3339-1.1-py2.py3-none-any.whl (5.7 kB) Requirement already satisfied: pyasn1>=0.4.4 in /usr/lib/python3/dist-packages (from juju==2.9.7->-r requirements.txt (line 5)) (0.4.8) Collecting theblues<1.0,>=0.5.1 Downloading theblues-0.5.2.tar.gz (18 kB) Preparing metadata (setup.py) ... done Collecting toposort<2,>=1.5 Downloading toposort-1.9-py3-none-any.whl (8.4 kB) Collecting typing_inspect>=0.6.0 Downloading typing_inspect-0.8.0-py3-none-any.whl (8.7 kB) Collecting websockets<9.0,>=8.0 Downloading websockets-8.1.tar.gz (58 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 58.9/58.9 KB 14.3 MB/s eta 0:00:00 Preparing metadata (setup.py) ... done Requirement already satisfied: six in /usr/lib/python3/dist-packages (from asttokens->-r requirements.txt (line 7)) (1.16.0) Requirement already satisfied: wheel<1.0,>=0.23.0 in /usr/lib/python3/dist-packages (from astunparse->-r requirements.txt (line 8)) (0.37.1) Requirement already satisfied: certifi>=14.05.14 in /usr/lib/python3/dist-packages (from kubernetes>=12.0.1->juju==2.9.7->-r requirements.txt (line 5)) (2020.6.20) Collecting google-auth>=1.0.1 Downloading google_auth-2.16.0-py2.py3-none-any.whl (177 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 177.8/177.8 KB 38.4 MB/s eta 0:00:00 Requirement already satisfied: urllib3>=1.24.2 in /usr/lib/python3/dist-packages (from kubernetes>=12.0.1->juju==2.9.7->-r requirements.txt (line 5)) (1.26.5) Requirement already satisfied: setuptools>=21.0.0 in /usr/lib/python3/dist-packages (from kubernetes>=12.0.1->juju==2.9.7->-r requirements.txt (line 5)) (59.6.0) Requirement already satisfied: requests in /usr/lib/python3/dist-packages (from kubernetes>=12.0.1->juju==2.9.7->-r requirements.txt (line 5)) (2.25.1) Collecting websocket-client!=0.40.0,!=0.41.*,!=0.42.*,>=0.32.0 Downloading websocket_client-1.4.2-py3-none-any.whl (55 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 55.3/55.3 KB 14.8 MB/s eta 0:00:00 Collecting python-dateutil>=2.5.3 Downloading python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 247.7/247.7 KB 38.6 MB/s eta 0:00:00 Collecting requests-oauthlib Downloading requests_oauthlib-1.3.1-py2.py3-none-any.whl (23 kB) Collecting PyNaCl<2.0,>=1.1.2 Downloading PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl (856 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 856.7/856.7 KB 72.8 MB/s eta 0:00:00 Collecting protobuf<4.0,>=3.0.0 Downloading protobuf-3.20.3-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (1.1 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.1/1.1 MB 86.1 MB/s eta 0:00:00 Collecting pymacaroons<1.0,>=0.12.0 Downloading pymacaroons-0.13.0-py2.py3-none-any.whl (19 kB) Requirement already satisfied: cryptography>=2.5 in /usr/lib/python3/dist-packages (from paramiko<3.0.0,>=2.4.0->juju==2.9.7->-r requirements.txt (line 5)) (3.4.8) Requirement already satisfied: bcrypt>=3.1.3 in /usr/lib/python3/dist-packages (from paramiko<3.0.0,>=2.4.0->juju==2.9.7->-r requirements.txt (line 5)) (3.2.0) Requirement already satisfied: pytz in /usr/lib/python3/dist-packages (from pyRFC3339<2.0,>=1.0->juju==2.9.7->-r requirements.txt (line 5)) (2022.1) Collecting jujubundlelib>=0.5.1 Downloading jujubundlelib-0.5.7.tar.gz (30 kB) Preparing metadata (setup.py) ... done Collecting mypy-extensions>=0.3.0 Downloading mypy_extensions-0.4.3-py2.py3-none-any.whl (4.5 kB) Collecting typing-extensions>=3.7.4 Downloading typing_extensions-4.4.0-py3-none-any.whl (26 kB) Requirement already satisfied: pyasn1-modules>=0.2.1 in /usr/lib/python3/dist-packages (from google-auth>=1.0.1->kubernetes>=12.0.1->juju==2.9.7->-r requirements.txt (line 5)) (0.2.1) Collecting cachetools<6.0,>=2.0.0 Using cached cachetools-5.2.1-py3-none-any.whl (9.3 kB) Collecting rsa<5,>=3.1.4 Downloading rsa-4.9-py3-none-any.whl (34 kB) Collecting cffi>=1.4.1 Downloading cffi-1.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (441 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 441.8/441.8 KB 59.9 MB/s eta 0:00:00 Requirement already satisfied: oauthlib>=3.0.0 in /usr/lib/python3/dist-packages (from requests-oauthlib->kubernetes>=12.0.1->juju==2.9.7->-r requirements.txt (line 5)) (3.2.0) Collecting pycparser Downloading pycparser-2.21-py2.py3-none-any.whl (118 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 118.7/118.7 KB 29.9 MB/s eta 0:00:00 Building wheels for collected packages: parse, juju, macaroonbakery, theblues, websockets, jujubundlelib Building wheel for parse (setup.py) ... done Created wheel for parse: filename=parse-1.19.0-py3-none-any.whl size=24591 sha256=f3876ca6f45848006edf10c6a0bd6378b67c8cd4f8657205b2ae1d89f962fc80 Stored in directory: /home/ubuntu/.cache/pip/wheels/70/4b/f0/eaf5a8de646d8676dc25caa01949b9f9d883b8fa2efb435bc3 Building wheel for juju (setup.py) ... done Created wheel for juju: filename=juju-2.9.7-py3-none-any.whl size=746129 sha256=671024f43ef6b53d0654f4bbfbe1af89735341cdea177e605b35a923c9565f7f Stored in directory: /home/ubuntu/.cache/pip/wheels/23/a8/92/07623949a5e0e4dd9c27efe544ce24bdc5bdfac7122d8bbef1 Building wheel for macaroonbakery (setup.py) ... done Created wheel for macaroonbakery: filename=macaroonbakery-1.3.1-py2.py3-none-any.whl size=103439 sha256=2b429681c199394314c45a1a7694907c4d60592c2dbf8479babb1b0f393dfb7c Stored in directory: /home/ubuntu/.cache/pip/wheels/03/10/e1/a423083040bf37cc21ef32e1ad18c1ec6165d0b5691f7365b5 Building wheel for theblues (setup.py) ... done Created wheel for theblues: filename=theblues-0.5.2-py3-none-any.whl size=19210 sha256=646919056c5e846fe0f3a555a6b7c4e065289f306556b30ceaa55b609a9abab3 Stored in directory: /home/ubuntu/.cache/pip/wheels/eb/52/b7/e9a3e25897ffdc9ece9fe1d3e9ca9f10792f8c40441e9d5381 Building wheel for websockets (setup.py) ... done Created wheel for websockets: filename=websockets-8.1-cp310-cp310-linux_x86_64.whl size=73444 sha256=541292919134619411a8242d38fc5e0d428a13e41891ea62b1641bcb80b2e9bf Stored in directory: /home/ubuntu/.cache/pip/wheels/98/3f/c7/9993dad06631d258fb8a01677090029dbdbd884a6199c31483 Building wheel for jujubundlelib (setup.py) ... done Created wheel for jujubundlelib: filename=jujubundlelib-0.5.7-py2.py3-none-any.whl size=33949 sha256=ebd0502c86a00b8a9105404ab986940c7b6401673699d29544bdb4c46635b06e Stored in directory: /home/ubuntu/.cache/pip/wheels/4a/57/b5/4755707ad707384c21c9220a2068468f0ee9d919f0402f0d37 Successfully built parse juju macaroonbakery theblues websockets jujubundlelib Installing collected packages: toposort, parse, mypy-extensions, commonmark, websockets, websocket-client, typing-extensions, typer, toml, rsa, requests-oauthlib, python-dateutil, pyRFC3339, pygments, pycparser, protobuf, ops, jujubundlelib, cachetools, astunparse, asttokens, typing_inspect, rich, google-auth, cffi, PyNaCl, kubernetes, pymacaroons, paramiko, macaroonbakery, theblues, juju Successfully installed PyNaCl-1.5.0 asttokens-2.2.1 astunparse-1.6.3 cachetools-5.2.1 cffi-1.15.1 commonmark-0.9.1 google-auth-2.16.0 juju-2.9.7 jujubundlelib-0.5.7 kubernetes-25.3.0 macaroonbakery-1.3.1 mypy-extensions-0.4.3 ops-1.5.3 paramiko-2.12.0 parse-1.19.0 protobuf-3.20.3 pyRFC3339-1.1 pycparser-2.21 pygments-2.14.0 pymacaroons-0.13.0 python-dateutil-2.8.2 requests-oauthlib-1.3.1 rich-12.0.1 rsa-4.9 theblues-0.5.2 toml-0.10.2 toposort-1.9 typer-0.4.1 typing-extensions-4.4.0 typing_inspect-0.8.0 websocket-client-1.4.2 websockets-8.1 ubuntu@dev-env-5:~/jhack$ python3 setup.py bdist_wheel running bdist_wheel running build running build_py creating build creating build/lib creating build/lib/jhack copying jhack/__init__.py -> build/lib/jhack copying jhack/helpers.py -> build/lib/jhack copying jhack/logger.py -> build/lib/jhack copying jhack/config.py -> build/lib/jhack copying jhack/main.py -> build/lib/jhack creating build/lib/jhack/utils copying jhack/utils/nuke.py -> build/lib/jhack/utils copying jhack/utils/sync.py -> build/lib/jhack/utils copying jhack/utils/file_peeker.py -> build/lib/jhack/utils copying jhack/utils/__init__.py -> build/lib/jhack/utils copying jhack/utils/ffwd.py -> build/lib/jhack/utils copying jhack/utils/unbork_juju.py -> build/lib/jhack/utils copying jhack/utils/show_relation.py -> build/lib/jhack/utils copying jhack/utils/integrate.py -> build/lib/jhack/utils copying jhack/utils/show_stored.py -> build/lib/jhack/utils copying jhack/utils/simulate_event.py -> build/lib/jhack/utils copying jhack/utils/unleash.py -> build/lib/jhack/utils copying jhack/utils/tail_charms.py -> build/lib/jhack/utils copying jhack/utils/debug_log_interlacer.py -> build/lib/jhack/utils creating build/lib/jhack/conf copying jhack/conf/__init__.py -> build/lib/jhack/conf copying jhack/conf/conf.py -> build/lib/jhack/conf creating build/lib/jhack/model copying jhack/model/__init__.py -> build/lib/jhack/model copying jhack/model/clear.py -> build/lib/jhack/model copying jhack/model/remove.py -> build/lib/jhack/model creating build/lib/jhack/jinx copying jhack/jinx/cleanup.py -> build/lib/jhack/jinx copying jhack/jinx/__init__.py -> build/lib/jhack/jinx copying jhack/jinx/init.py -> build/lib/jhack/jinx copying jhack/jinx/pack.py -> build/lib/jhack/jinx copying jhack/jinx/install.py -> build/lib/jhack/jinx creating build/lib/jhack/charm copying jhack/charm/sync.py -> build/lib/jhack/charm copying jhack/charm/utilities.py -> build/lib/jhack/charm copying jhack/charm/__init__.py -> build/lib/jhack/charm copying jhack/charm/init.py -> build/lib/jhack/charm copying jhack/charm/record.py -> build/lib/jhack/charm copying jhack/charm/vinfo.py -> build/lib/jhack/charm copying jhack/charm/provision.py -> build/lib/jhack/charm copying jhack/charm/update.py -> build/lib/jhack/charm copying jhack/charm/repack.py -> build/lib/jhack/charm copying jhack/charm/functional.py -> build/lib/jhack/charm creating build/lib/jhack/utils/event_recorder copying jhack/utils/event_recorder/__init__.py -> build/lib/jhack/utils/event_recorder copying jhack/utils/event_recorder/runtime.py -> build/lib/jhack/utils/event_recorder copying jhack/utils/event_recorder/client.py -> build/lib/jhack/utils/event_recorder copying jhack/utils/event_recorder/recorder.py -> build/lib/jhack/utils/event_recorder copying jhack/utils/event_recorder/memo_tools.py -> build/lib/jhack/utils/event_recorder copying jhack/utils/unbork_juju -> build/lib/jhack/utils /usr/lib/python3/dist-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools. warnings.warn( installing to build/bdist.linux-x86_64/wheel running install running install_lib creating build/bdist.linux-x86_64 creating build/bdist.linux-x86_64/wheel creating build/bdist.linux-x86_64/wheel/jhack creating build/bdist.linux-x86_64/wheel/jhack/utils copying build/lib/jhack/utils/nuke.py -> build/bdist.linux-x86_64/wheel/jhack/utils copying build/lib/jhack/utils/sync.py -> build/bdist.linux-x86_64/wheel/jhack/utils creating build/bdist.linux-x86_64/wheel/jhack/utils/event_recorder copying build/lib/jhack/utils/event_recorder/__init__.py -> build/bdist.linux-x86_64/wheel/jhack/utils/event_recorder copying build/lib/jhack/utils/event_recorder/runtime.py -> build/bdist.linux-x86_64/wheel/jhack/utils/event_recorder copying build/lib/jhack/utils/event_recorder/client.py -> build/bdist.linux-x86_64/wheel/jhack/utils/event_recorder copying build/lib/jhack/utils/event_recorder/recorder.py -> build/bdist.linux-x86_64/wheel/jhack/utils/event_recorder copying build/lib/jhack/utils/event_recorder/memo_tools.py -> build/bdist.linux-x86_64/wheel/jhack/utils/event_recorder copying build/lib/jhack/utils/file_peeker.py -> build/bdist.linux-x86_64/wheel/jhack/utils copying build/lib/jhack/utils/__init__.py -> build/bdist.linux-x86_64/wheel/jhack/utils copying build/lib/jhack/utils/ffwd.py -> build/bdist.linux-x86_64/wheel/jhack/utils copying build/lib/jhack/utils/unbork_juju.py -> build/bdist.linux-x86_64/wheel/jhack/utils copying build/lib/jhack/utils/show_relation.py -> build/bdist.linux-x86_64/wheel/jhack/utils copying build/lib/jhack/utils/integrate.py -> build/bdist.linux-x86_64/wheel/jhack/utils copying build/lib/jhack/utils/show_stored.py -> build/bdist.linux-x86_64/wheel/jhack/utils copying build/lib/jhack/utils/simulate_event.py -> build/bdist.linux-x86_64/wheel/jhack/utils copying build/lib/jhack/utils/unleash.py -> build/bdist.linux-x86_64/wheel/jhack/utils copying build/lib/jhack/utils/tail_charms.py -> build/bdist.linux-x86_64/wheel/jhack/utils copying build/lib/jhack/utils/unbork_juju -> build/bdist.linux-x86_64/wheel/jhack/utils copying build/lib/jhack/utils/debug_log_interlacer.py -> build/bdist.linux-x86_64/wheel/jhack/utils copying build/lib/jhack/__init__.py -> build/bdist.linux-x86_64/wheel/jhack creating build/bdist.linux-x86_64/wheel/jhack/conf copying build/lib/jhack/conf/__init__.py -> build/bdist.linux-x86_64/wheel/jhack/conf copying build/lib/jhack/conf/conf.py -> build/bdist.linux-x86_64/wheel/jhack/conf copying build/lib/jhack/helpers.py -> build/bdist.linux-x86_64/wheel/jhack copying build/lib/jhack/logger.py -> build/bdist.linux-x86_64/wheel/jhack creating build/bdist.linux-x86_64/wheel/jhack/model copying build/lib/jhack/model/__init__.py -> build/bdist.linux-x86_64/wheel/jhack/model copying build/lib/jhack/model/clear.py -> build/bdist.linux-x86_64/wheel/jhack/model copying build/lib/jhack/model/remove.py -> build/bdist.linux-x86_64/wheel/jhack/model creating build/bdist.linux-x86_64/wheel/jhack/jinx copying build/lib/jhack/jinx/cleanup.py -> build/bdist.linux-x86_64/wheel/jhack/jinx copying build/lib/jhack/jinx/__init__.py -> build/bdist.linux-x86_64/wheel/jhack/jinx copying build/lib/jhack/jinx/init.py -> build/bdist.linux-x86_64/wheel/jhack/jinx copying build/lib/jhack/jinx/pack.py -> build/bdist.linux-x86_64/wheel/jhack/jinx copying build/lib/jhack/jinx/install.py -> build/bdist.linux-x86_64/wheel/jhack/jinx copying build/lib/jhack/config.py -> build/bdist.linux-x86_64/wheel/jhack copying build/lib/jhack/main.py -> build/bdist.linux-x86_64/wheel/jhack creating build/bdist.linux-x86_64/wheel/jhack/charm copying build/lib/jhack/charm/sync.py -> build/bdist.linux-x86_64/wheel/jhack/charm copying build/lib/jhack/charm/utilities.py -> build/bdist.linux-x86_64/wheel/jhack/charm copying build/lib/jhack/charm/__init__.py -> build/bdist.linux-x86_64/wheel/jhack/charm copying build/lib/jhack/charm/init.py -> build/bdist.linux-x86_64/wheel/jhack/charm copying build/lib/jhack/charm/record.py -> build/bdist.linux-x86_64/wheel/jhack/charm copying build/lib/jhack/charm/vinfo.py -> build/bdist.linux-x86_64/wheel/jhack/charm copying build/lib/jhack/charm/provision.py -> build/bdist.linux-x86_64/wheel/jhack/charm copying build/lib/jhack/charm/update.py -> build/bdist.linux-x86_64/wheel/jhack/charm copying build/lib/jhack/charm/repack.py -> build/bdist.linux-x86_64/wheel/jhack/charm copying build/lib/jhack/charm/functional.py -> build/bdist.linux-x86_64/wheel/jhack/charm running install_egg_info running egg_info creating jhack.egg-info writing jhack.egg-info/PKG-INFO writing dependency_links to jhack.egg-info/dependency_links.txt writing entry points to jhack.egg-info/entry_points.txt writing top-level names to jhack.egg-info/top_level.txt writing manifest file 'jhack.egg-info/SOURCES.txt' reading manifest file 'jhack.egg-info/SOURCES.txt' adding license file 'LICENSE.txt' writing manifest file 'jhack.egg-info/SOURCES.txt' Copying jhack.egg-info to build/bdist.linux-x86_64/wheel/jhack-0.3.6.egg-info running install_scripts adding license file "LICENSE.txt" (matched pattern "LICEN[CS]E*") creating build/bdist.linux-x86_64/wheel/jhack-0.3.6.dist-info/WHEEL creating 'dist/jhack-0.3.6-py3-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it adding 'jhack/__init__.py' adding 'jhack/config.py' adding 'jhack/helpers.py' adding 'jhack/logger.py' adding 'jhack/main.py' adding 'jhack/charm/__init__.py' adding 'jhack/charm/functional.py' adding 'jhack/charm/init.py' adding 'jhack/charm/provision.py' adding 'jhack/charm/record.py' adding 'jhack/charm/repack.py' adding 'jhack/charm/sync.py' adding 'jhack/charm/update.py' adding 'jhack/charm/utilities.py' adding 'jhack/charm/vinfo.py' adding 'jhack/conf/__init__.py' adding 'jhack/conf/conf.py' adding 'jhack/jinx/__init__.py' adding 'jhack/jinx/cleanup.py' adding 'jhack/jinx/init.py' adding 'jhack/jinx/install.py' adding 'jhack/jinx/pack.py' adding 'jhack/model/__init__.py' adding 'jhack/model/clear.py' adding 'jhack/model/remove.py' adding 'jhack/utils/__init__.py' adding 'jhack/utils/debug_log_interlacer.py' adding 'jhack/utils/ffwd.py' adding 'jhack/utils/file_peeker.py' adding 'jhack/utils/integrate.py' adding 'jhack/utils/nuke.py' adding 'jhack/utils/show_relation.py' adding 'jhack/utils/show_stored.py' adding 'jhack/utils/simulate_event.py' adding 'jhack/utils/sync.py' adding 'jhack/utils/tail_charms.py' adding 'jhack/utils/unbork_juju' adding 'jhack/utils/unbork_juju.py' adding 'jhack/utils/unleash.py' adding 'jhack/utils/event_recorder/__init__.py' adding 'jhack/utils/event_recorder/client.py' adding 'jhack/utils/event_recorder/memo_tools.py' adding 'jhack/utils/event_recorder/recorder.py' adding 'jhack/utils/event_recorder/runtime.py' adding 'jhack-0.3.6.dist-info/LICENSE.txt' adding 'jhack-0.3.6.dist-info/METADATA' adding 'jhack-0.3.6.dist-info/WHEEL' adding 'jhack-0.3.6.dist-info/entry_points.txt' adding 'jhack-0.3.6.dist-info/top_level.txt' adding 'jhack-0.3.6.dist-info/RECORD' removing build/bdist.linux-x86_64/wheel ubuntu@dev-env-5:~/jhack$ pip install ./dist/jhack-0.3.6-py3-none-any.whl Defaulting to user installation because normal site-packages is not writeable Processing ./dist/jhack-0.3.6-py3-none-any.whl Installing collected packages: jhack Successfully installed jhack-0.3.6 ubuntu@dev-env-5:~/jhack$ jhack Traceback (most recent call last): File "/home/ubuntu/.local/bin/jhack", line 5, in from jhack.main import main File "/home/ubuntu/.local/lib/python3.10/site-packages/jhack/main.py", line 43, in from jhack.utils.nuke import nuke File "/home/ubuntu/.local/lib/python3.10/site-packages/jhack/utils/nuke.py", line 22, in ASK_FOR_CONFIRMATION = CONFIG["nuke"]["ask_for_confirmation"] File "/home/ubuntu/.local/lib/python3.10/site-packages/jhack/conf/conf.py", line 32, in __getitem__ return self.data[item] File "/home/ubuntu/.local/lib/python3.10/site-packages/jhack/conf/conf.py", line 25, in data self._load() File "/home/ubuntu/.local/lib/python3.10/site-packages/jhack/conf/conf.py", line 20, in _load self._data = toml.load(self._path.open()) File "/usr/lib/python3.10/pathlib.py", line 1119, in open return self._accessor.open(self, mode, buffering, encoding, errors, FileNotFoundError: [Errno 2] No such file or directory: '/home/ubuntu/.jhack/config.toml' ```
hypeitnow commented 1 year ago

Things get funny when you installed this snap as root :D

root@juju-client:~# jhack replay list mysql-innodb-cluster/1
Traceback (most recent call last):
  File "/snap/jhack/149/bin/jhack", line 5, in <module>
    from jhack.main import main
  File "/snap/jhack/149/lib/python3.8/site-packages/jhack/main.py", line 43, in <module>
    from jhack.utils.nuke import nuke
  File "/snap/jhack/149/lib/python3.8/site-packages/jhack/utils/nuke.py", line 22, in <module>
    ASK_FOR_CONFIRMATION = CONFIG["nuke"]["ask_for_confirmation"]
  File "/snap/jhack/149/lib/python3.8/site-packages/jhack/conf/conf.py", line 32, in __getitem__
    return self.data[item]
  File "/snap/jhack/149/lib/python3.8/site-packages/jhack/conf/conf.py", line 25, in data
    self._load()
  File "/snap/jhack/149/lib/python3.8/site-packages/jhack/conf/conf.py", line 20, in _load
    self._data = toml.load(self._path.open())
  File "/usr/lib/python3.8/pathlib.py", line 1222, in open
    return io.open(self, mode, buffering, encoding, errors, newline,
  File "/usr/lib/python3.8/pathlib.py", line 1078, in _opener
    return self._accessor.open(self, flags, mode)
FileNotFoundError: [Errno 2] No such file or directory: '/home/root/.jhack_config.toml'
root@juju-client:~# 
root@juju-client:~# mkdir /home/root/.jhack
root@juju-client:~# echo "nuke.ask_for_confirmation = false" > /home/root/.jhack/config.toml
root@juju-client:~# jhack replay list mysql-innodb-cluster/1
Traceback (most recent call last):
  File "/snap/jhack/149/bin/jhack", line 5, in <module>
    from jhack.main import main
  File "/snap/jhack/149/lib/python3.8/site-packages/jhack/main.py", line 43, in <module>
    from jhack.utils.nuke import nuke
  File "/snap/jhack/149/lib/python3.8/site-packages/jhack/utils/nuke.py", line 22, in <module>
    ASK_FOR_CONFIRMATION = CONFIG["nuke"]["ask_for_confirmation"]
  File "/snap/jhack/149/lib/python3.8/site-packages/jhack/conf/conf.py", line 32, in __getitem__
    return self.data[item]
  File "/snap/jhack/149/lib/python3.8/site-packages/jhack/conf/conf.py", line 25, in data
    self._load()
  File "/snap/jhack/149/lib/python3.8/site-packages/jhack/conf/conf.py", line 20, in _load
    self._data = toml.load(self._path.open())
  File "/usr/lib/python3.8/pathlib.py", line 1222, in open
    return io.open(self, mode, buffering, encoding, errors, newline,
  File "/usr/lib/python3.8/pathlib.py", line 1078, in _opener
    return self._accessor.open(self, flags, mode)
FileNotFoundError: [Errno 2] No such file or directory: '/home/root/.jhack_config.toml'
root@juju-client:~# echo "nuke.ask_for_confirmation = false" > /home/root/.jhack_config.toml
root@juju-client:~# jhack replay list mysql-innodb-cluster/1
Traceback (most recent call last):
  File "/snap/jhack/149/bin/jhack", line 5, in <module>
    from jhack.main import main
  File "/snap/jhack/149/lib/python3.8/site-packages/jhack/main.py", line 43, in <module>
    from jhack.utils.nuke import nuke
  File "/snap/jhack/149/lib/python3.8/site-packages/jhack/utils/nuke.py", line 22, in <module>
    ASK_FOR_CONFIRMATION = CONFIG["nuke"]["ask_for_confirmation"]
  File "/snap/jhack/149/lib/python3.8/site-packages/jhack/conf/conf.py", line 32, in __getitem__
    return self.data[item]
  File "/snap/jhack/149/lib/python3.8/site-packages/jhack/conf/conf.py", line 25, in data
    self._load()
  File "/snap/jhack/149/lib/python3.8/site-packages/jhack/conf/conf.py", line 20, in _load
    self._data = toml.load(self._path.open())
  File "/usr/lib/python3.8/pathlib.py", line 1222, in open
    return io.open(self, mode, buffering, encoding, errors, newline,
  File "/usr/lib/python3.8/pathlib.py", line 1078, in _opener
    return self._accessor.open(self, flags, mode)
PermissionError: [Errno 13] Permission denied: '/home/root/.jhack_config.toml'
root@juju-client:~# chmod 0777-R  /home/root
chmod: invalid mode: ‘0777-R’
Try 'chmod --help' for more information.
root@juju-client:~# chmod 0777 -R  /home/root
root@juju-client:~# jhack replay list mysql-innodb-cluster/1
Traceback (most recent call last):
  File "/snap/jhack/149/bin/jhack", line 5, in <module>
    from jhack.main import main
  File "/snap/jhack/149/lib/python3.8/site-packages/jhack/main.py", line 43, in <module>
    from jhack.utils.nuke import nuke
  File "/snap/jhack/149/lib/python3.8/site-packages/jhack/utils/nuke.py", line 22, in <module>
    ASK_FOR_CONFIRMATION = CONFIG["nuke"]["ask_for_confirmation"]
  File "/snap/jhack/149/lib/python3.8/site-packages/jhack/conf/conf.py", line 32, in __getitem__
    return self.data[item]
  File "/snap/jhack/149/lib/python3.8/site-packages/jhack/conf/conf.py", line 25, in data
    self._load()
  File "/snap/jhack/149/lib/python3.8/site-packages/jhack/conf/conf.py", line 20, in _load
    self._data = toml.load(self._path.open())
  File "/usr/lib/python3.8/pathlib.py", line 1222, in open
    return io.open(self, mode, buffering, encoding, errors, newline,
  File "/usr/lib/python3.8/pathlib.py", line 1078, in _opener
    return self._accessor.open(self, flags, mode)
PermissionError: [Errno 13] Permission denied: '/home/root/.jhack_config.toml'
root@juju-client:~# 

I guess it's something related to snap...

PietroPasotti commented 1 year ago

Thanks for the report, folks! It should be fixed now for local installs, and the edge snap is indeed broken. Please use more stable versions for the time being, they should be still working. The issue is that the home-read interface the snap was using does not apply to hidden directories, so I had to request a new interface for that, which however requires manual approval, which is pending. Hopefully I'll get it soon :)

PietroPasotti commented 1 year ago

---> https://forum.snapcraft.io/t/please-allow-personal-files-interface-for-jhack/33517