8 from pathlib
import Path
10 from prov_test_common
import run_subprocess, verify_provisioned
14 parser = argparse.ArgumentParser(description=
'Run a local device credential provisioning test with aktualizr')
15 parser.add_argument(
'--build-dir',
'-b', type=Path, default=Path(
'../build'), help=
'build directory')
16 parser.add_argument(
'--credentials',
'-c', type=Path, default=Path(
'.'), help=
'path to credentials archive')
17 args = parser.parse_args()
20 with tempfile.TemporaryDirectory()
as tmp_dir:
21 retval = provision(Path(tmp_dir), args.build_dir, args.credentials)
30 server_url_path = "{tmp_dir}/gateway.url"
37 base_path = "{tmp_dir}/import"
38 tls_cacert_path = "root.crt"
39 tls_clientcert_path = "client.pem"
40 tls_pkey_path = "pkey.pem"
44 def provision(tmp_dir, build_dir, creds):
45 conf_dir = tmp_dir /
'conf.d'
46 os.mkdir(str(conf_dir))
47 conf_prov = conf_dir /
'20-device-cred-prov.toml'
48 with conf_prov.open(
'w')
as f:
49 f.write(CONFIG_TEMPLATE.format(tmp_dir=tmp_dir))
50 akt = build_dir /
'src/aktualizr_primary/aktualizr'
51 akt_info = build_dir /
'src/aktualizr_info/aktualizr-info'
52 akt_cp = build_dir /
'src/cert_provider/aktualizr-cert-provider'
54 akt_input = [str(akt),
'--config', str(conf_dir),
'--run-mode',
'once']
55 run_subprocess(akt_input)
57 stdout, stderr, retcode = run_subprocess([str(akt_info),
'--config', str(conf_dir)])
58 if (b
'Couldn\'t load device ID' not in stdout
or
59 b
'Couldn\'t load ECU serials' not in stdout
or
60 b
'Provisioned on server: no' not in stdout
or
61 b
'Fetched metadata: no' not in stdout):
62 print(
'Device already provisioned!? ' + stderr.decode() + stdout.decode())
66 print(
'Device has not yet provisioned (as expected). Running aktualizr-cert-provider.')
67 stdout, stderr, retcode = run_subprocess([str(akt_cp),
68 '-c', str(creds),
'-l',
'/',
'-s',
'-u',
'-r',
'-g', str(conf_prov)])
70 print(
'aktualizr-cert-provider failed (' + str(retcode) +
'): ' +
71 stderr.decode() + stdout.decode())
74 run_subprocess(akt_input)
75 return verify_provisioned(akt_info, conf_dir)
78 if __name__ ==
'__main__':