Esempio n. 1
0
 def test_config_single_endpoint(self):
     servers = "255.255.255.255:443:/splice/api/v1/productusage"
     parser = self.create_config_parser(servers)
     data = config.get_reporting_config_info(cfg=parser)
     self.assertTrue(data.has_key("servers"))
     self.assertEquals(len(data["servers"]), 1)
     self.assertEquals(data["servers"][0][0], "255.255.255.255")
     self.assertEquals(data["servers"][0][1], 443)
     self.assertEquals(data["servers"][0][2], "/splice/api/v1/productusage")
Esempio n. 2
0
    def test_config_bad_data(self):
        raw_config_data = """
[reporting]
servers = 255.255.255.255:/splice/api/v1/productusage 192.168.1.1:443:/splice/api/v1/productusage, test.example.com:443:/api/v1/productusage
        """
        parser = ConfigParser.SafeConfigParser()
        parser.readfp(StringIO(raw_config_data))
        caught = False
        try:
            data = config.get_reporting_config_info(cfg=parser)
        except BadConfigurationException, e:
            caught = True
Esempio n. 3
0
    def test_config_multiple_endpoints(self):
        # Test config parsing with bad values
        servers = "255.255.255.255:443:/splice/api/v1/productusage, 192.168.1.1:443:/splice/api/v1/productusage, test.example.com:443:/api/v1/productusage"
        parser = self.create_config_parser(servers)
        data = config.get_reporting_config_info(cfg=parser)
        self.assertTrue(data.has_key("servers"))
        self.assertEquals(len(data["servers"]), 3)
        self.assertEquals(data["servers"][0][0], "255.255.255.255")
        self.assertEquals(data["servers"][0][1], 443)
        self.assertEquals(data["servers"][0][2], "/splice/api/v1/productusage")

        self.assertEquals(data["servers"][1][0], "192.168.1.1")
        self.assertEquals(data["servers"][1][1], 443)
        self.assertEquals(data["servers"][1][2], "/splice/api/v1/productusage")

        self.assertEquals(data["servers"][2][0], "test.example.com")
        self.assertEquals(data["servers"][2][1], 443)
        self.assertEquals(data["servers"][2][2], "/api/v1/productusage")
Esempio n. 4
0
def upload_product_usage_data(cfg=None):
    """

    @param cfg: optional argument to use a special instance of ConfigParser to determine values,
                mainly used for unit testing,
    @return: None
    """
    cfg_info = config.get_reporting_config_info(cfg)
    if not cfg_info["servers"]:
        _LOG.info("No servers are configured to upload product usage data to")
        return
    limit = None
    if cfg_info["limit_per_call"]:
        limit = cfg_info["limit_per_call"]
    for server in cfg_info["servers"]:
        try:
            (addr, port, url) = server
            _process_product_usage_upload(addr, port, url, limit)
            _process_splice_server_metadata_upload(addr, port, url)
        except Exception, e:
            _LOG.exception("Caught exception when processing upload to (%s, %s, %s)" % (addr, port, url))
            _LOG.info("Related configuration is: '%s'" % (cfg_info))

if __name__ == "__main__":
    from datetime import datetime
    from dateutil.tz import tzutc
    from splice.common.models import ProductUsage

    # Create a dummy product usage object
    pu = ProductUsage()
    pu.consumer = "test_consumer"
    pu.splice_server = "test_splice_server"
    pu.instance_identifier = "test_instance_identifier"
    pu.allowed_product_info = ["1", "2", "3", "4"]
    pu.unallowed_product_info = ["100"]
    pu.facts = {"tbd": "values"}
    pu.date = datetime.now(tzutc())

    config.init(settings.SPLICE_CONFIG_FILE)
    cfg = config.get_reporting_config_info()
    if cfg["servers"]:
        remote_server = cfg["servers"][0]
    else:
        remote_server = ("127.0.0.1", "443", "/splice/api/v1/productusage/")
    host = remote_server[0]
    port = remote_server[1]
    url = remote_server[2]

    status, data = upload_product_usage_data(host, port, url, [pu])
    print "---\n\n"
    print "Response:\n Status Code: %s\n%s" % (status, data)