def parse_spec(specs, alias=None): bits = specs.split('@', 1) groups = None if len(bits) > 1: groups = set(bits[1].split(',')) bits = bits[0].split(',') if len(bits[0].split(':')) > 1: address, port = bits[0].split(':') else: address, port = bits[0], DEFAULT_PORTS['https'] cred = Options() if len(bits) == 1: cred.common = DeviceCredential(default_username, default_password) device = DeviceAccess(address, {ADMIN_ROLE: cred}) elif len(bits) == 2: cred.common = DeviceCredential(default_username, bits[1]) device = DeviceAccess(address, {ADMIN_ROLE: cred}) elif len(bits) == 3: cred.common = DeviceCredential(bits[1], bits[2]) device = DeviceAccess(address, {ADMIN_ROLE: cred}) else: raise ValueError('Invalid specs: %s', specs) device.ports['https'] = port device.set_groups(groups) return device