Beispiel #1
0
def star(list, delete, repo):
    '''List, star, or unstar repositories'''
    if CTX['config']['auth']['token'] is None or CTX['config']['auth'][
            'username'] is None:
        click.echo('Please login with username and password: tentacle login')
        sys.exit(1)
    if list is True:
        res = Hub().list_starred_repos(CTX['config']['auth']['username'],
                                       CTX['config']['auth']['token'])
        click.echo('Count:{}'.format(res['count']))
        click.echo(
            pretty_table(
                res['results'],
                filters=CTX['config']['table']['star']['filters'],
                locations=CTX['config']['table']['star']['locations'],
                sort_keys=CTX['config']['table']['star']['sort']['keys'],
                sort_reverse=CTX['config']['table']['star']['sort']['reverse'],
            ), )
        sys.exit(0)
    if not repo:
        click.echo("Please enter the repo argument")
        sys.exit(1)
    if delete is True:
        Hub().unstar(repo, CTX['config']['auth']['token'])
        click.echo('UnStar {} success'.format(repo))
        sys.exit(0)
    Hub().star(repo, CTX['config']['auth']['token'])
    click.echo('Star {} success'.format(repo))
Beispiel #2
0
    def test_hub_plug_setup(self):
        watcher = HubWatcher()
        hub = Hub(rpc_port=0, watcher=watcher)
        hub.start()
        self.assertTrue(hub.running)

        # assemble a component from a server and a client
        plug = HubPlug("test_component")
        plug.connect(hub.rpc_uri)
        components = plug.hub_rpc_client.client.query_components()
        self.assertEqual(len(components), 1)

        components = plug.hub_rpc_client.client.query_components("test_component")
        self.assertEqual(len(components), 1)


        publishers = plug.hub_rpc_client.client.query_publishers()
        self.assertEqual(len(publishers), 1)

        msgtype = plug.msgtype
        publishers = plug.hub_rpc_client.client.query_publishers(msgtype)
        self.assertEqual(len(publishers), 1)

        # disconnect from hub, stop server, close sockets
        plug.stop()

        # hub needs time to cleanup
        gevent.sleep(0.01)
        client = BaseClient(hub.rpc_server.uri)


        # make sure component record was released
        components = client.client.query_components("test_component")
        self.assertEqual(len(components), 0)

        # make sure publisher record was released
        publishers = client.client.query_publishers()
        self.assertEqual(len(publishers), 0)


        self.assertEqual(len(watcher.component_changes), 2)
        self.assertEqual(len(watcher.publisher_changes), 2)
        self.assertEqual(len(watcher.component_loses), 0)

        hub.stop()
Beispiel #3
0
    def test_good_hub_setup(self):
        hub = Hub(rpc_port=0)
        hub.start()
        gevent.sleep(0.001)
        self.assertTrue(hub.running)
        # make sure calling run again does no harm
        hub.start()
        gevent.sleep(0.001)
        self.assertTrue(hub.running)

        # assemble a component from a server and a client
        api = TestAPI1()
        svr = BaseServer(api_object=api,
                         api_name="test_api1", api_version="1.0.0",
                         port=0)
        svr.run()

        client = BaseClient(hub.rpc_uri)
        res = client.client.register_component({'rpc_uri': svr.uri}, "foo")
        gevent.sleep(0.001)
        # check to see that hub connected back to us and send ping
        self.assertEquals(len(api.got_list), 1)
        svr.stop()
        hub.stop()
        client.close()
Beispiel #4
0
def tag(repo):
    '''List tags of repository'''
    res = Hub().tag(repo, CTX['config']['auth']['token'])
    click.echo('Count:{}'.format(res['count']))
    click.echo(
        pretty_table(
            res['results'],
            filters=CTX['config']['table']['tag']['filters'],
            locations=CTX['config']['table']['tag']['locations'],
            sort_keys=CTX['config']['table']['tag']['sort']['keys'],
            sort_reverse=CTX['config']['table']['tag']['sort']['reverse'],
        ), )
Beispiel #5
0
def search(query):
    '''Search for repositories from Docker Hub by key word'''
    if CTX['config']['auth']['token'] is None:
        click.echo('Please login with username and password: tentacle login')
        sys.exit(1)
    res = Hub().search(CTX['config']['auth']['token'], query)
    click.echo('Count:{}'.format(res['count']))
    click.echo(
        pretty_table(
            res['results'],
            filters=CTX['config']['table']['search']['filters'],
            locations=CTX['config']['table']['search']['locations'],
            sort_keys=CTX['config']['table']['search']['sort']['keys'],
            sort_reverse=CTX['config']['table']['search']['sort']['reverse'],
        ), )
Beispiel #6
0
def repo():
    '''List repositories'''
    if CTX['config']['auth']['token'] is None or CTX['config']['auth'][
            'username'] is None:
        click.echo('Please login with username and password: tentacle login')
        sys.exit(1)
    res = Hub().list_repos(CTX['config']['auth']['username'],
                           CTX['config']['auth']['token'])
    click.echo(
        pretty_table(
            res,
            filters=CTX['config']['table']['repo']['filters'],
            locations=CTX['config']['table']['repo']['locations'],
            sort_keys=CTX['config']['table']['repo']['sort']['keys'],
            sort_reverse=CTX['config']['table']['repo']['sort']['reverse'],
        ), )
Beispiel #7
0
def login():
    '''Use username and password to obtain an access token'''
    username = click.prompt('Username', type=str)
    password = click.prompt('Password', type=str)
    token = Hub().login(username, password)['token']

    with open(CONFIG, 'r+') as fd:
        config = json.load(fd)
        config['auth'] = {
            'username': username,
            'password': password,
            'token': token
        }
        fd.seek(0)
        json.dump(config, fd, indent=4)
    click.echo('Login success')
Beispiel #8
0
def show(repo):
    '''Show detailed information of repository'''
    res = Hub().show(repo, CTX['config']['auth']['token'])
    click.echo('Name: {}'.format(res['name']))
    click.echo('Starred: {}'.format(res['has_starred']))
    click.echo('User: {}'.format(res['user']))
    click.echo('Namespace: {}'.format(res['namespace']))
    click.echo('Repository Type: {}'.format(res['repository_type']))
    click.echo('Private: {}'.format(res['is_private']))
    click.echo('Automated: {}'.format(res['is_automated']))
    click.echo('Star Count: {}'.format(res['star_count']))
    click.echo('Pull Count: {}'.format(res['pull_count']))
    click.echo('Last Updated: {}'.format(res['last_updated']))
    click.echo('Permissions: {}'.format(res['permissions']))
    if res['description']:
        click.echo('Description: {}'.format(res['description']))
    if res['full_description']:
        click.echo('Full Description: \n{}'.format(res['full_description']))
Beispiel #9
0
Datei: main.py Projekt: jb344/Hue
        HALLWAY_MOTION_SENSOR_LIGHTS = [
            Light(name=HUE_PLAY_TV, logger=log),
            Light(name=HUE_PLAY_BOOKCASE, logger=log),
            Light(name=LIVING_ROOM_LAMP, logger=log),
            Light(name=HALLWAY_SPOT_ONE, logger=log),
            Light(name=HALLWAY_SPOT_TWO, logger=log)
        ]

        # Grouping of the lights the kitchen motion sensor controls
        KITCHEN_MOTION_SENSOR_LIGHTS = [
            Light(name=KITCHEN_COUNTER_SPOT, logger=log),
            Light(name=KITCHEN_SINK_SPOT, logger=log)
        ]

        # Create the Hub and Motion Sensor objects we need, from the config file values
        hub = Hub(logger=log, found_at_ip=HUE_HUB_IP)
        hallway_motion_sensor = MotionSensor(
            logger=log,
            motion_sensor_name=HALLWAY_MOTION_SENSOR,
            connected_to_hub=hub,
            lights=HALLWAY_MOTION_SENSOR_LIGHTS)
        kitchen_motion_sensor = MotionSensor(
            logger=log,
            motion_sensor_name=KITCHEN_MOTION_SENSOR,
            connected_to_hub=hub,
            lights=KITCHEN_MOTION_SENSOR_LIGHTS)

        # Start a thread to ping the Hue hub, if these pings stop working, then perhaps the hub has gone down?
        hub_heartbeat_thread = Thread(name="hub_heartbeat_thread",
                                      target=hub.heartbeat)
        hub_heartbeat_thread.start()