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)
     ])
Beispiel #2
0
    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)
Beispiel #4
0
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 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)
Beispiel #7
0
    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
Beispiel #8
0
 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"
Beispiel #9
0
 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"
Beispiel #10
0
 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)
Beispiel #12
0
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))
Beispiel #13
0
 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))
Beispiel #14
0
 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)])
Beispiel #15
0
 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)])
Beispiel #16
0
 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)
Beispiel #17
0
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)