def status(arguments): output = StringIO() verbose = initialise(arguments) environments = arguments['<environment>'] if environments: puts(columns( [(colored.green('Nickname')), 15], [(colored.green('Instance Type')), 10], [(colored.green('Status')), 20], [(colored.green('Instance href')), 60], ), stream=output.write) for environment in environments: server = righteous.find_server(environment) if server: settings = righteous.server_settings(server['href']) if verbose: server_info = righteous.server_info(server['href']) puts('Server Info:\n' + colored.cyan(pformat(server_info))) puts('Server Settings:\n' + colored.cyan(pformat(settings))) puts(columns( [environment, 15], [settings['ec2-instance-type'], 10], [server['state'] if server else 'Found', 20], [server['href'] if server else 'Not', 60], ), stream=output.write) else: puts(colored.red('%s: Not Found' % environment), stream=output.write) print output.getvalue()
def test_server_status(self): self._create_server() server = righteous.find_server(self.env) assert server is not None server_settings = righteous.server_settings(server['href']) assert server_settings is not None server_info = righteous.server_info(server['href']) assert server_info is not None assert_equal(server_settings['ec2-instance-type'], 'm1.small') assert_equal(server['state'], 'pending')
def print_running_servers(servers, exclude_states=['stopped']): def server_owner(server_info): owner = [ p['value'][5:] for p in server_info['parameters'] if p['name'] == 'EMAIL' ] return owner[0] if len(owner) else None output = StringIO() now = datetime.now() server_list = [] for server in servers['servers']: server_info = righteous.server_info(server['href']) server_settings = righteous.server_settings(server['href']) owner = server_owner(server_info) running = now - datetime.strptime( server['created_at'], '%Y/%m/%d %H:%M:%S +0000' ) if server['state'] not in exclude_states: server_list.append( dict( days=running.days, instance=server['nickname'], size=server_settings['ec2-instance-type'], creator=owner ) ) puts(columns( [(colored.red('Instance')), COL], [(colored.green('Size')), COL], [(colored.magenta('Creator')), COL], [(colored.cyan('Running days')), COL], ), stream=output.write) for line in sorted(server_list, key=lambda d: d['days']): puts(columns( [line['instance'], COL], [line['size'], COL], [line['creator'], COL], [str(line['days']), COL], ), stream=output.write) print(output.getvalue())
def test_server_info(self): self.response.content = '{}' response = righteous.server_info('/my/ref') assert_equal(response, {}) self.request.assert_called_once_with('/my/ref.js', prepend_api_base=False)