input-output-hk / nixops-packet

NixOps Packet.net Plugin
GNU Lesser General Public License v3.0
5 stars 5 forks source link

Crash removing an instance with `--include xxx -k` #8

Closed grahamc closed 4 years ago

grahamc commented 4 years ago
[nix-shell:~/projects/grahamc/packet-spot-buildkite]$ nixops deploy --include aarch64 -k
resource ‘buildkite-worker-1’ is obsolete
resource ‘aarch64’ is obsolete
warning: are you sure you want to destroy Packet.Net machine ‘aarch64’? (y/N) y
aarch64.............> destroying instance 092a3fdc-85d0-4f05-bfd7-8b3f624188ff
building all machine configurations...
Traceback (most recent call last):
  File "/nix/store/dvvzz12xrdmhbzchbnwr65187h1h91ql-nixops-1.8pre2873_372dbc9/bin/.nixops-wrapped", line 251, in <module>
    args.op(args)
  File "/nix/store/dvvzz12xrdmhbzchbnwr65187h1h91ql-nixops-1.8pre2873_372dbc9/lib/python2.7/site-packages/nixops/script_defs.py", line 427, in op_deploy
    max_concurrent_activate=args.max_concurrent_activate)
  File "/nix/store/dvvzz12xrdmhbzchbnwr65187h1h91ql-nixops-1.8pre2873_372dbc9/lib/python2.7/site-packages/nixops/deployment.py", line 1062, in deploy
    self.run_with_notify('deploy', lambda: self._deploy(**kwargs))
  File "/nix/store/dvvzz12xrdmhbzchbnwr65187h1h91ql-nixops-1.8pre2873_372dbc9/lib/python2.7/site-packages/nixops/deployment.py", line 1051, in run_with_notify
    f()
  File "/nix/store/dvvzz12xrdmhbzchbnwr65187h1h91ql-nixops-1.8pre2873_372dbc9/lib/python2.7/site-packages/nixops/deployment.py", line 1062, in <lambda>
    self.run_with_notify('deploy', lambda: self._deploy(**kwargs))
  File "/nix/store/dvvzz12xrdmhbzchbnwr65187h1h91ql-nixops-1.8pre2873_372dbc9/lib/python2.7/site-packages/nixops/deployment.py", line 1006, in _deploy
    self.configs_path = self.build_configs(dry_run=dry_run, repair=repair, include=include, exclude=exclude)
  File "/nix/store/dvvzz12xrdmhbzchbnwr65187h1h91ql-nixops-1.8pre2873_372dbc9/lib/python2.7/site-packages/nixops/deployment.py", line 628, in build_configs
    p = self.get_physical_spec()
  File "/nix/store/dvvzz12xrdmhbzchbnwr65187h1h91ql-nixops-1.8pre2873_372dbc9/lib/python2.7/site-packages/nixops/deployment.py", line 596, in get_physical_spec
    emit_resource(r) for r in active_resources.itervalues()
  File "/nix/store/dvvzz12xrdmhbzchbnwr65187h1h91ql-nixops-1.8pre2873_372dbc9/lib/python2.7/site-packages/nixops/deployment.py", line 583, in emit_resource
    physical = r.get_physical_spec()
  File "/nix/store/xvgj2iqi26qm3zvwrhs4f9vqspb55kjz-python2.7-nixops-packet-1.6.1pre2873_372dbc9/lib/python2.7/site-packages/nixopspacket/backends/device.py", line 148, in get_physical_spec
    return self.get_physical_spec_from_plan(public_key)
  File "/nix/store/xvgj2iqi26qm3zvwrhs4f9vqspb55kjz-python2.7-nixops-packet-1.6.1pre2873_372dbc9/lib/python2.7/site-packages/nixopspacket/backends/device.py", line 137, in get_physical_spec_from_plan
    'imports': [ nix2py(self.provSystem) ],
  File "/nix/store/dvvzz12xrdmhbzchbnwr65187h1h91ql-nixops-1.8pre2873_372dbc9/lib/python2.7/site-packages/nixops/nix_expr.py", line 327, in nix2py
    return MultiLineRawValue(dedent(source).strip().splitlines())
  File "/nix/store/lbrpma3528hq7gwn8ffbnwaxvsqah0bb-python-2.7.17/lib/python2.7/textwrap.py", line 392, in dedent
    text = _whitespace_only_re.sub('', text)
TypeError: expected string or buffer
grahamc commented 4 years ago

I think this is because I had a machine deployed with the packet backend before provSystem was a thing. Maybe should detect a None and hand a "{}" to nix2py in that case?