parameterize store section to load

This commit is contained in:
Michael Hudson-Doyle 2018-05-23 11:38:42 +12:00
parent 702aaee953
commit ca1d7ba77b
2 changed files with 14 additions and 5 deletions

View File

@ -71,7 +71,13 @@ def parse_options(argv):
parser.add_argument('--script', metavar="SCRIPT", action='append', dest='scripts', default=[], help='Execute SCRIPT in a namespace containing view helpers and "ui"')
parser.add_argument('--click', metavar="PAT", action=ClickAction, help='Synthesize a click on a button matching PAT')
parser.add_argument('--answers')
parser.add_argument('--snaps-from-examples', action='store_true', help="Load snap details from sample data, not store")
parser.add_argument(
'--snaps-from-examples', action='store_true',
help=("Load snap details from examples/snaps instead of store. "
"See examples/snaps/README.md for more."))
parser.add_argument(
'--snap-section', action='store', default='developers', # will change default to server when that exists
help=("Show snaps from this section of the store in the snap list screen."))
return parser.parse_args(argv)

View File

@ -63,13 +63,16 @@ class SampleDataSnapInfoLoader:
def get_snap_info(self, snap, callback):
callback()
class SnapdSnapInfoLoader:
def __init__(self, model, run_in_bg, sock):
self.state = SnapInfoLoaderState.NOT_RUNNING
def __init__(self, model, run_in_bg, sock, store_section):
self.model = model
self.run_in_bg = run_in_bg
self.url_base = "http+unix://{}/v2/find?".format(quote_plus(sock))
self.store_section = store_section
self.state = SnapInfoLoaderState.NOT_RUNNING
self.session = requests_unixsocket.Session()
self.pending_info_snaps = []
self.ongoing = {} # {snap:[callbacks]}
@ -91,7 +94,7 @@ class SnapdSnapInfoLoader:
self.state = SnapInfoLoaderState.STOPPED
def _bg_fetch_list(self):
return self.session.get(self.url_base + 'section=developers', timeout=60)
return self.session.get(self.url_base + 'section=' + self.store_section, timeout=60)
def _fetched_list(self, fut):
if self.state == SnapInfoLoaderState.STOPPED:
@ -186,7 +189,7 @@ class SnapListController(BaseController):
self.model,
os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), "examples", "snaps"))
else:
self.loader = SnapdSnapInfoLoader(self.model, self.run_in_bg, '/run/snapd.socket')
self.loader = SnapdSnapInfoLoader(self.model, self.run_in_bg, '/run/snapd.socket', self.opts.snap_section)
self.loader.start()
def network_config_done(self, netplan_path):