def cli(env, identifier): """Cancel all virtual guests of the dedicated host immediately. Use the 'slcli vs cancel' command to cancel an specific guest """ dh_mgr = SoftLayer.DedicatedHostManager(env.client) host_id = helpers.resolve_id(dh_mgr.resolve_ids, identifier, 'dedicated host') if not (env.skip_confirmations or formatting.no_going_back(host_id)): raise exceptions.CLIAbort('Aborted') table = formatting.Table(['id', 'server name', 'status']) result = dh_mgr.cancel_guests(host_id) if result: for status in result: table.add_row([status['id'], status['fqdn'], status['status']]) env.fout(table) else: click.secho('There is not any guest into the dedicated host %s' % host_id, fg='red')
def cli(env, identifier): """Cancel a dedicated host server immediately""" mgr = SoftLayer.DedicatedHostManager(env.client) host_id = helpers.resolve_id(mgr.resolve_ids, identifier, 'dedicated host') if not (env.skip_confirmations or formatting.no_going_back(host_id)): raise exceptions.CLIAbort('Aborted') mgr.cancel_host(host_id) click.secho('Dedicated Host %s was cancelled' % host_id, fg='green')
def cli(env, identifier, price=False, guests=False): """Get details for a dedicated host.""" dhost = SoftLayer.DedicatedHostManager(env.client) table = formatting.KeyValueTable(['name', 'value']) table.align['name'] = 'r' table.align['value'] = 'l' result = dhost.get_host(identifier) result = utils.NestedDict(result) table.add_row(['id', result['id']]) table.add_row(['name', result['name']]) table.add_row(['cpu count', result['cpuCount']]) table.add_row(['memory capacity', result['memoryCapacity']]) table.add_row(['disk capacity', result['diskCapacity']]) table.add_row(['create date', result['createDate']]) table.add_row(['modify date', result['modifyDate']]) table.add_row(['router id', result['backendRouter']['id']]) table.add_row(['router hostname', result['backendRouter']['hostname']]) table.add_row([ 'owner', formatting.FormattedItem( utils.lookup(result, 'billingItem', 'orderItem', 'order', 'userRecord', 'username') or formatting.blank(), ) ]) if price: total_price = utils.lookup(result, 'billingItem', 'nextInvoiceTotalRecurringAmount') or 0 total_price += sum( p['nextInvoiceTotalRecurringAmount'] for p in utils.lookup(result, 'billingItem', 'children') or []) table.add_row(['price_rate', total_price]) table.add_row(['guest count', result['guestCount']]) if guests: guest_table = formatting.Table(['id', 'hostname', 'domain', 'uuid']) for guest in result['guests']: guest_table.add_row([ guest['id'], guest['hostname'], guest['domain'], guest['uuid'] ]) table.add_row(['guests', guest_table]) table.add_row(['datacenter', result['datacenter']['name']]) env.fout(table)
def cli(env, sortby, cpu, columns, datacenter, name, memory, disk, tag): """List dedicated host.""" mgr = SoftLayer.DedicatedHostManager(env.client) hosts = mgr.list_instances(cpus=cpu, datacenter=datacenter, hostname=name, memory=memory, disk=disk, tags=tag, mask=columns.mask()) table = formatting.Table(columns.columns) table.sortby = sortby for host in hosts: table.add_row( [value or formatting.blank() for value in columns.row(host)]) env.fout(table)
def cli(env, identifier, sortby, cpu, domain, hostname, memory, tag, columns): """List guests which are in a dedicated host server.""" mgr = SoftLayer.DedicatedHostManager(env.client) guests = mgr.list_guests(host_id=identifier, cpus=cpu, hostname=hostname, domain=domain, memory=memory, tags=tag, mask=columns.mask()) table = formatting.Table(columns.columns) table.sortby = sortby for guest in guests: table.add_row( [value or formatting.blank() for value in columns.row(guest)]) env.fout(table)
def cli(env, **kwargs): """host order options for a given dedicated host. To get a list of available backend routers see example: slcli dh create-options --datacenter dal05 --flavor 56_CORES_X_242_RAM_X_1_4_TB """ mgr = SoftLayer.DedicatedHostManager(env.client) tables = [] if not kwargs['flavor'] and not kwargs['datacenter']: options = mgr.get_create_options() # Datacenters dc_table = formatting.Table(['datacenter', 'value']) dc_table.sortby = 'value' for location in options['locations']: dc_table.add_row([location['name'], location['key']]) tables.append(dc_table) dh_table = formatting.Table( ['Dedicated Virtual Host Flavor(s)', 'value']) dh_table.sortby = 'value' for item in options['dedicated_host']: dh_table.add_row([item['name'], item['key']]) tables.append(dh_table) else: if kwargs['flavor'] is None or kwargs['datacenter'] is None: raise exceptions.ArgumentError('Both a flavor and datacenter need ' 'to be passed as arguments ' 'ex. slcli dh create-options -d ' 'ams01 -f ' '56_CORES_X_242_RAM_X_1_4_TB') router_opt = mgr.get_router_options(kwargs['datacenter'], kwargs['flavor']) br_table = formatting.Table(['Available Backend Routers']) for router in router_opt: br_table.add_row([router['hostname']]) tables.append(br_table) env.fout(formatting.listing(tables, separator='\n'))
def set_up(self): self.dedicated_host = SoftLayer.DedicatedHostManager(self.client)
def cli(env, **kwargs): """Order/create a dedicated host.""" mgr = SoftLayer.DedicatedHostManager(env.client) order = { 'hostname': kwargs['hostname'], 'domain': kwargs['domain'], 'flavor': kwargs['flavor'], 'location': kwargs['datacenter'], 'hourly': kwargs.get('billing') == 'hourly', } if kwargs['router']: order['router'] = kwargs['router'] do_create = not (kwargs['export'] or kwargs['verify']) output = None result = mgr.verify_order(**order) table = formatting.Table(['Item', 'cost']) table.align['Item'] = 'r' table.align['cost'] = 'r' if len(result['prices']) != 1: raise exceptions.ArgumentError("More than 1 price was found or no " "prices found") price = result['prices'] if order['hourly']: total = float(price[0].get('hourlyRecurringFee', 0.0)) else: total = float(price[0].get('recurringFee', 0.0)) if order['hourly']: table.add_row(['Total hourly cost', "%.2f" % total]) else: table.add_row(['Total monthly cost', "%.2f" % total]) output = [] output.append(table) output.append( formatting.FormattedItem( '', ' -- ! Prices reflected here are retail and do not ' 'take account level discounts and are not guaranteed.')) if kwargs['export']: export_file = kwargs.pop('export') template.export_to_template(export_file, kwargs, exclude=['wait', 'verify']) env.fout('Successfully exported options to a template file.') if do_create: if not env.skip_confirmations and not formatting.confirm( "This action will incur charges on your account. " "Continue?"): raise exceptions.CLIAbort('Aborting dedicated host order.') result = mgr.place_order(**order) table = formatting.KeyValueTable(['name', 'value']) table.align['name'] = 'r' table.align['value'] = 'l' table.add_row(['id', result['orderId']]) table.add_row(['created', result['orderDate']]) output.append(table) env.fout(output)