def props(p, level): return "".join([ "%s%s: %s\n" % (tabs(level), k, v if not isinstance(v, list) else child(v, level + 1)) for k, v in dict_iteritems(p) ])
def create(self): # if a named listener is present, use its host:port self._agent.log(LOG_WARNING, "Console entity is deprecated: Use http:yes on listener entity instead") name = self.attributes.get('listener') if name: listeners = self._agent.find_entity_by_type("listener") for listener in listeners: if listener.name == name: try: #required host = listener.attributes['host'] port = listener.attributes['port'] #optional wsport = self.attributes.get('wsport') home = self.attributes.get('home') args = self.attributes.get('args') pargs = [] pargs.append(self.attributes['proxy']) if args: # Replace any $port|$host|$wsport|$home dargs = {'$port': port, '$host': host} if wsport: dargs['$wsport'] = wsport if home: dargs['$home'] = home for k,v in dict_iteritems(dargs): args = args.replace(k,str(v)) pargs += args.split() #run the external program Popen(pargs) except: self._agent.log(LOG_ERROR, "Can't parse console entity: %s" % (format_exc())) break
def defaults(self): """Fill in default values in gconfiguration""" for name, props in self: if name in Qdrouterd.Config.DEFAULTS: for n, p in dict_iteritems( Qdrouterd.Config.DEFAULTS[name]): props.setdefault(n, p)
def message(**properties): """Convenience to create a proton.Message with properties set""" m = Message() for name, value in dict_iteritems(properties): getattr(m, name) # Raise exception if not a valid message attribute. setattr(m, name, value) return m
def setUpClass(cls): """Start the router""" super(LoadPolicyFromFolder, cls).setUpClass() ipv6_enabled = is_ipv6_enabled() policy_config_path = os.path.join(DIR, 'policy-1') replacements = {'{IPV6_LOOPBACK}': ', ::1'} for f in os.listdir(policy_config_path): if f.endswith(".json.in"): with open(policy_config_path + "/" + f[:-3], 'w') as outfile: with open(policy_config_path + "/" + f) as infile: for line in infile: for src, target in dict_iteritems(replacements): if ipv6_enabled: line = line.replace(src, target) else: line = line.replace(src, '') outfile.write(line) config = Qdrouterd.Config([('router', { 'mode': 'standalone', 'id': 'QDR.Policy' }), ('listener', { 'port': cls.tester.get_port() }), ('policy', { 'maxConnections': 2, 'policyDir': policy_config_path, 'enableVhostPolicy': 'true' })]) cls.router = cls.tester.qdrouterd('conn-limit-router', config, wait=True)
def find_entity(self, request): """Find the entity addressed by request""" requested_type = request.properties.get('type') if requested_type: requested_type = self.schema.entity_type(requested_type) # ids is a map of identifying attribute values ids = dict((k, request.properties.get(k)) for k in ['name', 'identity'] if k in request.properties) # Special case for management object: if no name/id and no conflicting type # then assume this is for "self" if not ids: if not requested_type or self.management.entity_type.is_a( requested_type): return self.management else: raise BadRequestStatus("%s: No name or identity provided" % requested_type) def attrvals(): """String form of the id attribute values for error messages""" return " ".join(["%s=%s" % (k, v) for k, v in dict_iteritems(ids)]) k, v = next(dict_iteritems(ids)) # Get the first id attribute found = self.entities.map_filter(None, lambda e: e.attributes.get(k) == v) if len(found) == 1: entity = found[0] elif len(found) > 1: raise InternalServerErrorStatus( "Duplicate (%s) entities with %s=%s" % (len(found), k, v)) else: raise NotFoundStatus("No entity with %s" % attrvals()) for k, v in dict_iteritems(ids): if entity[k] != v: raise BadRequestStatus("Conflicting %s" % attrvals()) if requested_type: if not entity.entity_type.is_a(requested_type): raise BadRequestStatus( "Entity type '%s' does not extend requested type '%s'" % (entity.entity_type.name, requested_type)) return entity
def transform_sections(sections): for s in sections: s[0] = camelcase(s[0]) s[1] = dict((camelcase(k), v) for k, v in dict_iteritems(s[1])) if s[0] == "address": s[0] = "router.config.address" if s[0] == "linkRoute": s[0] = "router.config.linkRoute" if s[0] == "autoLink": s[0] = "router.config.autoLink" if s[0] == "exchange": s[0] = "router.config.exchange" if s[0] == "binding": s[0] = "router.config.binding"
def get_operations(self, request): type = self.requested_type(request) return (OK, dict((t, et.operations) for t, et in dict_iteritems(self._schema.entity_types) if not type or type.name == t))
def wait_ports(ports, **retry_kwargs): """Wait up to timeout for all ports (on host) to be connectable. Takes same keyword arguments as retry to control the timeout""" for port, protocol_family in dict_iteritems(ports): wait_port(port=port, protocol_family=protocol_family, **retry_kwargs)
def dictstr(d): """Stringify a dict in the form 'k=v, k=v ...' instead of '{k:v, ...}'""" return ", ".join("%s=%s" % (k, v) for k, v in dict_iteritems(d))
def get_attributes(self, request): type = self.requested_type(request) return (OK, dict((t, [a for a in et.attributes]) for t, et in dict_iteritems(self._schema.entity_types) if not type or type.name == t))
def attrvals(): """String form of the id attribute values for error messages""" return " ".join(["%s=%s" % (k, v) for k, v in dict_iteritems(ids)])
def props(p, level): return "".join( ["%s%s: %s\n" % (tabs(level), k, v if not isinstance(v, list) else child(v, level + 1)) for k, v in dict_iteritems(p)])
def defaults(self): """Fill in default values in gconfiguration""" for name, props in self: if name in Qdrouterd.Config.DEFAULTS: for n,p in dict_iteritems(Qdrouterd.Config.DEFAULTS[name]): props.setdefault(n,p)