def connect(self):
     return RiakClient(host=self.host,
                       port=self.port,
                       prefix=self.prefix,
                       mapred_prefix=self.mapred_prefix,
                       client_id=self.client_id,
                       transport_class=self.transport_class,
                       solr_transport_class=self.solr_transport_class,
                       transport_options=self.transport_options)
Exemple #2
0
def _write_neighbors(tups, RIAK_IPS, RIAK_PORT, LANGUAGE):
    clients = [RiakClient(host=ip, protocol='pbc',
                          pb_port=RIAK_PORT)
              for ip in RIAK_IPS]
    buckets = [client.bucket('%s/neighbors' % LANGUAGE)
        for client in clients]
    for tup, bucket in izip(tups, cycle(buckets)):
        repo, adj_repos, _ = tup
        _ = bucket.new(repo, adj_repos).store()
Exemple #3
0
 def test_uses_client_id_if_given(self):
     self.host = PB_HOST
     self.port = PB_PORT
     zero_client_id = "\0\0\0\0"
     c = RiakClient(PB_HOST,
                    PB_PORT,
                    transport_class=RiakPbcTransport,
                    client_id=zero_client_id)
     self.assertEqual(zero_client_id, c.get_client_id())  #
Exemple #4
0
    def conn(self):
        """Open connection on Riak DataBase"""
        client = RiakClient(protocol=self.conf.get("protocol"),
                            http_port=self.conf.get("port"),
                            host=self.conf.get("host"))

        conn = client.bucket(self.conf.get("db"))
        conn.enable_search()
        return conn
Exemple #5
0
def write_top_cooccurs(RIAK_IPS, RIAK_PORT, LANGUAGE):
    clients = [RiakClient(host=ip, protocol='pbc', pb_port=RIAK_PORT)
        for ip in RIAK_IPS]
    buckets = [client.bucket('%s/top_cooccurs' % LANGUAGE) \
        for client in clients]
    for b, (dep1, dep2, count), bucket in izip(range(len(top_cooccurs)),
                                              top_cooccurs,
                                              cycle(buckets)):
        bucket.new('%d' % b, [dep1, dep2, count]).store()
    buckets[0].new('B', len(top_cooccurs)).store()
Exemple #6
0
def connect():
    #nodes = []
    #for ip in ["45.55.0.44", "107.170.224.168", "45.55.1.236"]:
    #    nodes.append(dict(host=ip, http_port=RIAK_HTTP_PORT, pb_port=RIAK_PBC_PORT))
    nodes = [
        dict(host=RIAK_HOST, http_port=RIAK_HTTP_PORT, pb_port=RIAK_PBC_PORT)
    ]
    client = RiakClient(nodes=nodes)
    assert client.ping(), "Failed to connect to client"
    return client
Exemple #7
0
def riakGetStock(searchVal, riakIP):
    myData = []
    myBucket = RiakClient(protocol='pbc', host=riakIP,
                          pb_port=8087).bucket('stocks')
    for key in myBucket.get_index('ticker_bin',
                                  searchVal):  # get all from 2002 to 2012
        value = json.loads(myBucket.get(key).data)
        myData.append([(value['CLOSE']), (value['VOLUME']),
                       str(value['DATE'])])
    return myData
Exemple #8
0
def _write_cooccurs(tups, RIAK_IPS, RIAK_PORT, B, LANGUAGE):
    results = []
    clients = [RiakClient(host=ip, protocol='pbc', pb_port=RIAK_PORT)
        for ip in RIAK_IPS]
    buckets = [client.bucket('%s/cooccurs' % LANGUAGE) \
        for client in clients]
    for (dep, counter), bucket in izip(tups, cycle(buckets)):
        top_items = heapq.nlargest(B, counter.iteritems(),
            key=lambda tup: tup[1])  # WARNING: Python 2.7
        bucket.new(dep, top_items).store()
        results.append((dep, Counter(dict(top_items))))
    return results
Exemple #9
0
def insert_function(request):
    RiakClient()
    RiakClient(protocol='http', host='127.0.0.1', http_port=8098)
    RiakClient(nodes=[{'host': '127.0.0.1', 'http_port': 8098}])
    myClient = RiakClient()
    myBucket = myClient.bucket('users')

    getNome = request.POST.get("name")
    getNome = str(getNome)
    getLocation = request.POST.get("location")
    getRole = request.POST.get("role")
    getFulname = request.POST.get("fullname")
    nome = str('user') + str(randint(0, 9))
    nome = {
        'name': getNome,
        'location': getLocation,
        'role': getRole,
        'fullname': getFulname
    }

    obj = myBucket.new(str(nome), data=nome)
    obj.store()
    return redirect('/home')
Exemple #10
0
def cache_top_K():
    clients = [
        RiakClient(host=ip, protocol='pbc', pb_port=RIAK_PORT)
        for ip in RIAK_IPS
    ]
    flowers = [client.bucket('%s/flowers' % LANGUAGE) \
        for client in clients]
    top_flowers = [client.bucket('%s/top_flowers' % LANGUAGE) \
        for client in clients]
    for k, tup, flower, top_flower in zip(range(K), top_K_repos,
                                          cycle(flowers), cycle(top_flowers)):
        dst_repo = tup[0]
        top_flower.new('%d' % k, flower.get(dst_repo).data).store()
    top_flowers[0].new('K', K).store()
Exemple #11
0
def riakSearchData(searchBucket, searchTerm, searchVal1, searchVal2, riakIP):
    myData = {}  #empty dict
    myBucket = RiakClient(protocol='pbc', host=riakIP,
                          pb_port=8087).bucket(searchBucket)
    #check wether 1 or 2 search terms
    if searchVal2 != None:
        for key in myBucket.get_index(searchTerm, searchVal1,
                                      searchVal2):  #get all keys with 2i match
            myData[key] = json.loads(
                myBucket.get(key).data)  #store data for each key
    else:
        for key in myBucket.get_index(searchTerm,
                                      searchVal1):  #get all keys with 2i match
            myData[key] = json.loads(
                myBucket.get(key).data)  #store data for each key
    return myData
Exemple #12
0
    def _connect(self):
        nodes = []
        security = None

        for host, port in self.hosts:
            node = {'host': host}

            if self.protocol == 'pbc':
                node['pb_port'] = port

            else:
                node['http_port'] = port

            nodes.append(node)

        kwargs = {}

        if self.user is not None:
            kwargs['username'] = self.user

            if self.pwd:
                kwargs['password'] = self.pwd

        if self.pkey is not None:
            kwargs['pkey_file'] = self.pkey

        if self.cert is not None:
            kwargs['cert_file'] = self.cert

        if self.cacert is not None:
            kwargs['cacert_file'] = self.cacert

        if self.crl is not None:
            kwargs['crl_file'] = self.crl

        if self.ciphers is not None:
            kwargs['ciphers'] = self.ciphers

        if kwargs:
            kwargs['ssl_version'] = self.sslver

            security = SecurityCreds(**kwargs)

        else:
            security = None

        return RiakClient(nodes=nodes, credentials=security)
Exemple #13
0
def get_flower(lang, user, repo_name):
    client = RiakClient(host=riak_ip, pb_port=riak_port, protocol="pbc")
    bucket = client.bucket("%s/flowers" % lang)

    repo = "%s/%s" % (user, repo_name)
    graph = bucket.get(repo).data
    if graph is None:
        abort(404)

    _nodes, _links = graph
    nodes = [{"id": repo, "group": degree} for (repo, degree) in _nodes]
    del _nodes
    links = [{"source": repo_a, "target": repo_b} for \
        (repo_a, repo_b) in _links]
    del _links

    return jsonify({"nodes": nodes, "links": links})
def run_cluster_server(riak_conf):
	riak_hosts = []
	with open(riak_conf, "r") as fin:
		for line in fin:
			riak_hosts.append({"host": line.replace("\n", ""), "http_port": RIAK_PORT})
			

	cluster = RiakClient(nodes=riak_hosts)
	bucket = cluster.bucket("HashedData")

	random_str_arr = []
	random_str_arr = run_exp_init(socket.gethostname())
	insert_throuput = run_exp_insert(bucket, random_str_arr)
	lookup_throuput = run_exp_lookup(bucket, random_str_arr)
	delete_throuput = run_exp_delete(bucket, random_str_arr)

	overall_throuput = (insert_throuput + lookup_throuput + delete_throuput) / 3
	print("Overall Throughput: " + str(overall_throuput) + " OPs/s")
Exemple #15
0
def getData(tickerFile, dataSource, start, end, riakIP):

    rc = RiakClient(protocol='pbc', host=riakIP,
                    pb_port=8087)  #set up riak connection
    added = []  #list of successful adds
    notAdded = []  #list of unsuccessful adds
    stock = pd.read_csv(tickerFile, sep='\t',
                        header=None)  #read in stock tickers

    #loop over all stock tickers
    for i in range(0, len(stock.head(100))):

        ticker = stock.ix[i, 0]
        if getDataByTicker(ticker, dataSource, start, end, riakIP) == 0:
            notAdded.append(ticker)
        else:
            added.append(ticker)
    return added, notAdded
Exemple #16
0
def getDataByTicker(ticker, dataSource, start, end, riakIP):

    rc = RiakClient(protocol='pbc', host=riakIP, pb_port=8087)
    #get daily data for each ticker
    gtemp = pd.DataFrame()
    bucket = rc.bucket('stocks')
    try:
        gtemp = DataReader(ticker, dataSource, start, end)
        print ticker
    except:
        pass

        #didnt get any data
    if len(gtemp) == 0:
        return 0
    #got data
    else:

        for j in range(0, len(gtemp.index)):

            #upload json to Riak Bucket
            date = gtemp.index[j].date()
            riakKey = str(ticker + '_' + str(date))
            riakVal = {'OPEN': gtemp.values[j,0],\
                        'HIGH': gtemp.values[j,1],\
                        'LOW': gtemp.values[j,2], \
                        'CLOSE': gtemp.values[j,3], \
                        'VOLUME': gtemp.values[j,4],\
                        'DATE': str(date),\
                        'TICKER': str(ticker)}

            obj = RiakObject(rc, bucket, riakKey)

            obj.add_index("ticker_bin", str(ticker))
            obj.add_index("year_int", int(date.year))
            obj.add_index("month_int", int(date.month))
            obj.add_index("day_int", int(date.day))

            obj.content_type = 'text/json'
            #obj.data = riakVal
            obj.data = json.dumps(riakVal)
            obj.store()

    return len(gtemp.index)
Exemple #17
0
    def from_config(cls, config):
        config = config.copy()
        bucket_prefix = config.pop('bucket_prefix')
        load_bunch_size = config.pop('load_bunch_size',
                                     cls.DEFAULT_LOAD_BUNCH_SIZE)
        mapreduce_timeout = config.pop('mapreduce_timeout',
                                       cls.DEFAULT_MAPREDUCE_TIMEOUT)
        transport_type = config.pop('transport_type', 'http')
        transport_class = {
            'http': RiakHttpTransport,
            'protocol_buffer': RiakPbcTransport,
        }.get(transport_type, RiakHttpTransport)

        host = config.get('host', '127.0.0.1')
        port = config.get('port', 8098)
        prefix = config.get('prefix', 'riak')
        mapred_prefix = config.get('mapred_prefix', 'mapred')
        client_id = config.get('client_id')
        # NOTE: the current riak.RiakClient expects this parameter but
        #       internally doesn't do anything with it.
        solr_transport_class = config.get('solr_transport_class', None)
        transport_options = config.get('transport_options', None)

        client = RiakClient(host=host,
                            port=port,
                            prefix=prefix,
                            mapred_prefix=mapred_prefix,
                            transport_class=transport_class,
                            client_id=client_id,
                            solr_transport_class=solr_transport_class,
                            transport_options=transport_options)
        # Some versions of the riak client library use simplejson by
        # preference, which breaks some of our unicode assumptions. This makes
        # sure we're using stdlib json which doesn't sometimes return
        # bytestrings instead of unicode.
        client.set_encoder('application/json', json.dumps)
        client.set_encoder('text/json', json.dumps)
        client.set_decoder('application/json', json.loads)
        client.set_decoder('text/json', json.loads)
        return cls(client,
                   bucket_prefix,
                   load_bunch_size=load_bunch_size,
                   mapreduce_timeout=mapreduce_timeout)
Exemple #18
0
    def from_config(cls, config):
        config = config.copy()
        bucket_prefix = config.pop('bucket_prefix')
        load_bunch_size = config.pop('load_bunch_size',
                                     cls.DEFAULT_LOAD_BUNCH_SIZE)
        mapreduce_timeout = config.pop('mapreduce_timeout',
                                       cls.DEFAULT_MAPREDUCE_TIMEOUT)
        transport_type = config.pop('transport_type', 'http')
        store_versions = config.pop('store_versions', None)

        host = config.get('host', '127.0.0.1')
        port = config.get('port')
        prefix = config.get('prefix', 'riak')
        mapred_prefix = config.get('mapred_prefix', 'mapred')
        client_id = config.get('client_id')
        transport_options = config.get('transport_options', {})

        client_args = dict(host=host,
                           prefix=prefix,
                           mapred_prefix=mapred_prefix,
                           protocol=transport_type,
                           client_id=client_id,
                           transport_options=transport_options)

        if port is not None:
            client_args['port'] = port

        client = RiakClient(**client_args)
        # Some versions of the riak client library use simplejson by
        # preference, which breaks some of our unicode assumptions. This makes
        # sure we're using stdlib json which doesn't sometimes return
        # bytestrings instead of unicode.
        client.set_encoder('application/json', json.dumps)
        client.set_encoder('text/json', json.dumps)
        client.set_decoder('application/json', json.loads)
        client.set_decoder('text/json', json.loads)
        return cls(client,
                   bucket_prefix,
                   load_bunch_size=load_bunch_size,
                   mapreduce_timeout=mapreduce_timeout,
                   store_versions=store_versions)
def main(argv):
    global gtable
    global gclient

    # Overhead to manage command line opts and config file
    p = getCmdLineParser()
    args = p.parse_args()
    cfg.read(args.config_file)

    # Get the logger going
    glogname = cfg.get('logging', 'logName')
    rightNow = time.strftime("%Y%m%d%H%M%S")
    logger = initLog(rightNow)
    logger.info('Starting Run: ' + time.strftime("%Y%m%d%H%M%S") +
                '  =========================')

    # Get Riak going
    gclient = RiakClient(protocol='pbc',
                         nodes=[{
                             'host': cfg.get('riakts', 'ip'),
                             'pb_port': int(cfg.get('riakts', 'port'))
                         }])
    gtable = cfg.get('riakts', 'table')

    # Get Rabbit going
    rabbitChannel = setUpRabbit(cfg.get('rabbitmq', 'ip'),
                                int(cfg.get('rabbitmq', 'port')),
                                cfg.get('rabbitmq', 'login'),
                                cfg.get('rabbitmq', 'password'),
                                cfg.get('rabbitmq', 'queue'))

    logger.info('RabbitMQ channel initialized...')
    rabbitChannel.basic_qos(prefetch_count=1)
    rabbitChannel.basic_consume(processAssignment,
                                queue=cfg.get('rabbitmq', 'queue'))
    logger.info('RabbitMQ consumer initialized...')
    rabbitChannel.start_consuming()

    # Clean up
    logger.info('Done! ' + time.strftime("%Y%m%d%H%M%S") +
                '  ==========================')
def executeScenario(scenario):
    client = RiakClient(protocol='pbc',nodes=[{ 'host': scenario["server"]["ip"], 'pb_port': scenario["server"]["port"] }])
    table, maxInterval, precision = getSource(scenario["dataSource"])
    asset = scenario["id"]
    destinationLoc = '{0}{1}{2}'.format('/tmp/',scenario["name"],'.csv')
    destination = open(destinationLoc,'w')
    if isinstance(scenario["interval"], dict):
        startTimeInt = toUnixTime(scenario["interval"]["startTime"], precision)
        endTimeInt = toUnixTime(scenario["interval"]["endTime"], precision)
        now = startTimeInt
        offset = getOffset(scenario["interval"]["value"],scenario["interval"]["units"], precision)
        expectedPayloadSize = getPayload(scenario["interval"]["expected"]["value"], scenario["interval"]["expected"]["units"])
        while now < endTimeInt:
            now = now + offset
            executeQuery(client, table, asset, now, now + offset, maxInterval, expectedPayloadSize, destination)
    elif isinstance(scenario["interval"], list):
        for interval in scenario["interval"]:
            expectedPayload = interval[2]
            expectedPayloadSize = getPayload(expectedPayload['value'], expectedPayload['units'])
            executeQuery(client, table, asset, toUnixTime(interval[0], precision), toUnixTime(interval[1], precision), maxInterval, expectedPayloadSize, destination)
    destination.close()
Exemple #21
0
    def test_close_underlying_socket_fails(self):
        c = RiakClient(PB_HOST, PB_PORT, transport_class=RiakPbcTransport)

        bucket = c.bucket('bucket_test_close')
        rand = self.randint()
        obj = bucket.new('foo', rand)
        obj.store()
        obj = bucket.get('foo')
        self.assertTrue(obj.exists())
        self.assertEqual(obj.get_bucket().get_name(), 'bucket_test_close')
        self.assertEqual(obj.get_key(), 'foo')
        self.assertEqual(obj.get_data(), rand)

        # Close the underlying socket. This gets a bit sketchy,
        # since we are reaching into the internals, but there is
        # no other way to get at the socket
        conns = c._cm.conns
        conns[0].sock.close()

        # This shoud fail with a socket error now
        self.assertRaises(socket.error, bucket.get, 'foo')
Exemple #22
0
 def run(self):
     """
     Runs the commands in the input file, writing results to the output file.
     """
     (host, http_port, pb_port) = self.h.split(':')
     self.client = RiakClient(host=host, port=http_port)
     commands = json.load(self.f)
     results = []
     errors = 0
     for command in commands:
         name = command.pop('command')
         try:
             if hasattr(self, name):
                 method = getattr(self, name)
                 results.append(method(command))
             else:
                 errors = errors + 1
                 results.append(UNIMPLEMENTED)
         except Exception as error:
             errors = errors + 1
             results.append(dict(error=str(error)))
     self.report(results)
     return errors
Exemple #23
0
    def __init__(self,
                 protocol="pbc",
                 nodes=[],
                 objects_bucket_name="objects",
                 activities_bucket_name="activities",
                 **kwargs):

        self._riak_backend = RiakClient(protocol=protocol, nodes=nodes)

        r_value = kwargs.get("r")
        w_value = kwargs.get("w")
        dw_value = kwargs.get("dw")
        pr_value = kwargs.get("pr")
        pw_value = kwargs.get("pw")

        self._objects = self._riak_backend.bucket(objects_bucket_name)
        self._activities = self._riak_backend.bucket(activities_bucket_name)

        if r_value:
            self._objects.r = r_value
            self._activities.r = r_value

        if w_value:
            self._objects.w = w_value
            self._activities.w = w_value

        if dw_value:
            self._objects.dw = dw_value
            self._activities.dw = dw_value

        if pr_value:
            self._objects.pr = pr_value
            self._activities.pr = pr_value

        if pw_value:
            self._objects.pw = pw_value
            self._activities.pw = pw_value
def get_hosts(hosts, servers):

    results = list()
    riak_reply = {}

    for server in servers:
        mcodata = RiakClient(host=server).bucket_type('puppet').bucket('nodes')

        if hosts is not None:

            for host in hosts:
                #then get specific host
                riak_reply[server] = mcodata.search("facts.fqdn:%s" % host,
                                                    index='mco_nodes')
                if riak_reply[server]['docs']:
                    results.extend(riak_reply[server]['docs'])
        else:
            #then get all hosts
            riak_reply[server] = mcodata.get_keys()
            if riak_reply[server]:
                results.extend(riak_reply[server])
                results.sort()
    reply = {'servers': '%s' % servers, 'results': results} or None
    return reply
Exemple #25
0
#   you may not use this file except in compliance with the License.
#   You may obtain a copy of the License at
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
#   Unless required by applicable law or agreed to in writing, software
#   distributed under the License is distributed on an "AS IS" BASIS,
#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#   See the License for the specific language governing permissions and
#   limitations under the License.

from riak import RiakClient

client = RiakClient(protocol='pbc',
                    nodes=[{
                        'host': '172.17.0.2',
                        'http_port': 8098,
                        'pb_port': 8087
                    }])
#client.retries = 3

bucket = client.bucket_type('mfn_counter_trigger').bucket('counter_triggers')

# Use the code below when mapper wants to create a k-of-n parallel execution
# topic, key, value are separated by ";", and are used for trigger to publish <key, value> to kafka's topic.
# topic and key must not contain the character ";".  value can contain the character ";".
counter_name = 'topic;key;value'
k = 3
counter = bucket.new(counter_name)
counter.increment(k)
counter.store()
Exemple #26
0
 def __init__(self):
     self.client = RiakClient(protocol='http',
                              host='127.0.0.1',
                              http_port=8098)
Exemple #27
0
 def test_mapred_bucket_exception(self):
     c = RiakClient()
     with self.assertRaises(ListError):
         c.add('bucket')
Exemple #28
0
#!/usr/bin/python

from riak import RiakClient, RiakNode
from riak.riak_object import RiakObject

client = RiakClient(protocal='http', host='127.0.0.1', http_port=8098)

res = client.ping()

bucket = client.bucket('xxx')

#res = client.get_keys(res[0])

#obj = RiakObject(client, res, 'xxx')

obj = bucket.new('a', 'hello', 'text/plain')

obj.store()

res = bucket.get('a')

n = 0
Exemple #29
0
 def __init__(self):
     self.users_bucket = settings.RIAK_USERS_BUCKET
     self.riak = RiakClient(host=settings.RIAK_HOST,
                            port=settings.RIAK_PORT)
Exemple #30
0
    print u'search ' + term + u' on ' + buck
    return riak.search(buck, term)


def export(var):
    if isinstance(var, basestring):
        print(var)
        return
    if isinstance(var, dict):
        for k, v in var.iteritems():
            print k, ':',
            export(v)
        return
    if isinstance(var, (list, tuple, set)):
        for v in var:
            export(v)
        return
    print var


riak = RiakClient(**config.getRiak())
query = search(*sys.argv[1:])

count = 0
for record in query.run():
    res = record.get().get_data()
    export(res)
    count += 1
    if count > 10:
        break