Code Coverage

Cobertura Coverage Report > n2vc >

config.py

Trend

File Coverage summary

NameClassesLinesConditionals
config.py
100%
1/1
100%
23/23
100%
0/0

Coverage Breakdown by Class

NameLinesConditionals
config.py
100%
23/23
N/A

Source

n2vc/config.py
1 # Copyright 2021 Canonical Ltd.
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 #     http://www.apache.org/licenses/LICENSE-2.0
8 #
9 #     Unless required by applicable law or agreed to in writing, software
10 #     distributed under the License is distributed on an "AS IS" BASIS,
11 #     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 #     See the License for the specific language governing permissions and
13 #     limitations under the License.
14
15 1 import os
16 1 import typing
17
18
19 1 class EnvironConfig(dict):
20 1     prefixes = ["OSMLCM_VCA_", "OSMMON_VCA_"]
21
22 1     def __init__(self, prefixes: typing.List[str] = None):
23 1         if prefixes:
24 1             self.prefixes = prefixes
25 1         for key, value in os.environ.items():
26 1             if any(key.startswith(prefix) for prefix in self.prefixes):
27 1                 self.__setitem__(self._get_renamed_key(key), value)
28
29 1     def _get_renamed_key(self, key: str) -> str:
30 1         for prefix in self.prefixes:
31 1             key = key.replace(prefix, "")
32 1         return key.lower()
33
34
35 1 MODEL_CONFIG_KEYS = [
36     "agent-metadata-url",
37     "agent-stream",
38     "apt-ftp-proxy",
39     "apt-http-proxy",
40     "apt-https-proxy",
41     "apt-mirror",
42     "apt-no-proxy",
43     "automatically-retry-hooks",
44     "backup-dir",
45     "cloudinit-userdata",
46     "container-image-metadata-url",
47     "container-image-stream",
48     "container-inherit-properties",
49     "container-networking-method",
50     "default-series",
51     "default-space",
52     "development",
53     "disable-network-management",
54     "egress-subnets",
55     "enable-os-refresh-update",
56     "enable-os-upgrade",
57     "fan-config",
58     "firewall-mode",
59     "ftp-proxy",
60     "http-proxy",
61     "https-proxy",
62     "ignore-machine-addresses",
63     "image-metadata-url",
64     "image-stream",
65     "juju-ftp-proxy",
66     "juju-http-proxy",
67     "juju-https-proxy",
68     "juju-no-proxy",
69     "logforward-enabled",
70     "logging-config",
71     "lxd-snap-channel",
72     "max-action-results-age",
73     "max-action-results-size",
74     "max-status-history-age",
75     "max-status-history-size",
76     "net-bond-reconfigure-delay",
77     "no-proxy",
78     "provisioner-harvest-mode",
79     "proxy-ssh",
80     "snap-http-proxy",
81     "snap-https-proxy",
82     "snap-store-assertions",
83     "snap-store-proxy",
84     "snap-store-proxy-url",
85     "ssl-hostname-verification",
86     "test-mode",
87     "transmit-vendor-metrics",
88     "update-status-hook-interval",
89 ]
90
91
92 1 class ModelConfig(dict):
93 1     prefix = "model_config_"
94
95 1     def __init__(self, config: dict):
96 1         for key, value in config.items():
97 1             if (
98                 key.startswith(self.prefix)
99                 and self._get_renamed_key(key) in MODEL_CONFIG_KEYS
100             ):
101 1                 self.__setitem__(self._get_renamed_key(key), value)
102
103 1     def _get_renamed_key(self, key):
104 1         return key.replace(self.prefix, "").replace("_", "-")