charm overrides snap-store-proxy setting
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
vault-charm |
New
|
Undecided
|
Unassigned |
Bug Description
This charm overwrites snap-store-proxy (the proxy ID) provided by juju model.
Environment:
cs:vault-40
ubuntu@
lxd-snap-channel default latest/stable
snap-http-proxy default ""
snap-https-proxy default ""
snap-store-
snap-store-proxy controller ybyGkIokvRuSLPx
snap-store-
charm snap config:
channel:
default: stable
description: The snap channel to install from.
source: default
type: string
value: stable
snap_proxy:
default: ""
description: |
DEPRECATED. Use snap-http-proxy and snap-https-proxy model configuration settings. HTTP/HTTPS web proxy for Snappy to use when accessing the snap store.
source: default
type: string
value: ""
snap_proxy_url:
default: ""
description: |
DEPRECATED. Use snap-store-proxy model configuration setting. The address of a Snap Store Proxy to use for snaps e.g. http://
source: default
type: string
value: ""
snapd_refresh:
default: ""
description: |
How often snapd handles updates for installed snaps. The default (an empty string) is 4x per day. Set to "max" to check once per month based on the charm deployment date. You may also set a custom string as described in the 'refresh.timer' section here:
https:/
source: default
type: string
value: ""
Steps to reproduce:
1. ubuntu@
created machine 21
2. ubuntu@
root@vault-1:~# snap install core
2020-11-
core 16-2.47.1 from Canonical✓ installed
3. root@vault-1:~# snap get core proxy
Key Value
proxy.http
proxy.https
proxy.store ybyGkIokvRuSLPx
Up until this stage everything is fine and the OS is set uo use the snapstore.
4. juju add-unit vault --to 21
Juju logs:
2020-11-20 10:46:14 INFO juju-log Initializing Snap Layer
5. After this operation the proxy.store setting is removed:
root@graylog-1:~# snap get core proxy
Key Value
proxy.http
proxy.https
proxy.store
Root cause is at snap.py: snap_store_ proxy() :
def configure_
# Do nothing if we don't have kernel support yet
if not kernel_supported():
return
if not reactive. is_flag_ set('config. changed. snap_proxy_ url'): snapd_min_ version( '2.30') store_proxy_ url = hookenv. config( )['snap_ proxy_url' ] proxy_url: assertion_ bundle( snap_store_ proxy_url)
subprocess .check_ output(
['snap' , 'ack', bundle],
stdin= subprocess. DEVNULL,
universal_ newlines= True, CalledProcessEr ror as e:
'snapd could not ack the proxy assertion: ' + e.output)
return
ensure_
snap_
if snap_store_
bundle, store_id = download_
try:
)
except subprocess.
raise InvalidBundleError(
else:
store_id = '' # THIS OVERWRITES THE STORE ID IF IT IS SET