Giter VIP home page Giter VIP logo

conch-shell's People

Contributors

bdha avatar jawher avatar karenetheridge avatar perigrin avatar sungo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

conch-shell's Issues

segfault when fetching device settings

[daleg@iridium]~$ ./conch-snap.sh d 8VNGRD2 settings
panic: runtime error: invalid memory address or nil pointer dereference [recovered]
	panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x10 pc=0x1289f45]

goroutine 1 [running]:
github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow%2ecli%2ev1.(*step).run(0xc420079680, 0x1379700, 0x15e0150)
	/Users/mattcashner/src/go/src/github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow.cli.v1/flow.go:28 +0xd6
github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow%2ecli%2ev1.(*step).run(0xc420079770, 0x1379700, 0x15e0150)
	/Users/mattcashner/src/go/src/github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow.cli.v1/flow.go:20 +0xbe
github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow%2ecli%2ev1.(*step).callDo.func1(0xc420079cb0, 0x0, 0x0)
	/Users/mattcashner/src/go/src/github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow.cli.v1/flow.go:41 +0x4c
panic(0x1379700, 0x15e0150)
	/usr/local/Cellar/go/1.9.3/libexec/src/runtime/panic.go:491 +0x283
github.com/joyent/conch-shell/vendor/github.com/joyent/go-conch.(*Conch).GetUserSettings(0xc4200845f0, 0xc4200845f0, 0xc420127780, 0xc4200845f0)
	/Users/mattcashner/src/go/src/github.com/joyent/conch-shell/vendor/github.com/joyent/go-conch/user.go:29 +0x105
github.com/joyent/conch-shell/vendor/github.com/joyent/go-conch.(*Conch).VerifyLogin(0xc4200845f0, 0x6, 0xc420012400)
	/Users/mattcashner/src/go/src/github.com/joyent/conch-shell/vendor/github.com/joyent/go-conch/conch.go:43 +0x59
github.com/joyent/conch-shell/pkg/util.BuildAPIAndVerifyLogin()
	/Users/mattcashner/src/go/src/github.com/joyent/conch-shell/pkg/util/util.go:74 +0x36
github.com/joyent/conch-shell/pkg/commands/internal/devices.Init.func1.1()
	/Users/mattcashner/src/go/src/github.com/joyent/conch-shell/pkg/commands/internal/devices/init.go:31 +0x2b
github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow%2ecli%2ev1.(*step).callDo(0xc420079cb0, 0x0, 0x0)
	/Users/mattcashner/src/go/src/github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow.cli.v1/flow.go:44 +0x70
github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow%2ecli%2ev1.(*step).run(0xc420079cb0, 0x0, 0x0)
	/Users/mattcashner/src/go/src/github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow.cli.v1/flow.go:16 +0x43
github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow%2ecli%2ev1.(*step).run(0xc420079740, 0x0, 0x0)
	/Users/mattcashner/src/go/src/github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow.cli.v1/flow.go:20 +0xbe
github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow%2ecli%2ev1.(*step).run(0xc420043e90, 0x0, 0x0)
	/Users/mattcashner/src/go/src/github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow.cli.v1/flow.go:20 +0xbe
github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow%2ecli%2ev1.(*Cmd).parse(0xc42009d000, 0xc42000e130, 0x0, 0x0, 0xc420043e90, 0xc420079cb0, 0xc420079ce0, 0x0, 0x0)
	/Users/mattcashner/src/go/src/github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow.cli.v1/commands.go:473 +0x529
github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow%2ecli%2ev1.(*Cmd).parse(0xc42009c600, 0xc42000e130, 0x1, 0x2, 0xc420043e90, 0xc420079740, 0xc420079770, 0xc42000c0b8, 0xc42000c0a8)
	/Users/mattcashner/src/go/src/github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow.cli.v1/commands.go:487 +0x7ad
github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow%2ecli%2ev1.(*Cmd).parse(0xc42009c400, 0xc42000e110, 0x3, 0x3, 0xc420043e90, 0xc420043e90, 0xc420079680, 0xc42009c401, 0xc420079680)
	/Users/mattcashner/src/go/src/github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow.cli.v1/commands.go:487 +0x7ad
github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow%2ecli%2ev1.(*Cli).parse(0xc420043f40, 0xc42000e110, 0x3, 0x3, 0xc420043e90, 0xc420043e90, 0xc420079680, 0x13e22ad, 0xc)
	/Users/mattcashner/src/go/src/github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow.cli.v1/cli.go:73 +0x102
github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow%2ecli%2ev1.(*Cli).Run(0xc420043f40, 0xc42000e100, 0x4, 0x4, 0x13ebc9e, 0x25)
	/Users/mattcashner/src/go/src/github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow.cli.v1/cli.go:102 +0x134
main.main()
	/Users/mattcashner/src/go/src/github.com/joyent/conch-shell/cmd/conch/conch.go:94 +0x464

conch-mbo segfaults on run

As of at least 4cab764, conch-mbo segfaults immediately on execution.

panic: runtime error: invalid memory address or nil pointer dereference [recovered]
	panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x10 pc=0x12faf35]

goroutine 1 [running]:
github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow%2ecli%2ev1.(*step).run(0xc4200736b0, 0x1466880, 0x17bdff0)
	/Users/mattcashner/src/go/src/github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow.cli.v1/flow.go:28 +0xd6
github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow%2ecli%2ev1.(*step).callDo.func1(0xc420073770, 0x0, 0x0)
	/Users/mattcashner/src/go/src/github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow.cli.v1/flow.go:41 +0x4c
panic(0x1466880, 0x17bdff0)
	/usr/local/Cellar/go/1.9.3/libexec/src/runtime/panic.go:491 +0x283
github.com/joyent/go-conch.(*Conch).GetUserSettings(0xc42007e780, 0xc42007e780, 0x17c5370, 0xc42007e780)
	/Users/mattcashner/src/go/src/github.com/joyent/go-conch/user.go:29 +0x105
github.com/joyent/go-conch.(*Conch).VerifyLogin(0xc42007e780, 0xc420073980, 0xc42003fb10)
	/Users/mattcashner/src/go/src/github.com/joyent/go-conch/conch.go:43 +0x59
main.main.func1()
	/Users/mattcashner/src/go/src/github.com/joyent/conch-shell/cmd/conch-mbo/conch-mbo.go:72 +0x206
github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow%2ecli%2ev1.(*step).callDo(0xc420073770, 0x0, 0x0)
	/Users/mattcashner/src/go/src/github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow.cli.v1/flow.go:44 +0x70
github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow%2ecli%2ev1.(*step).run(0xc420073770, 0x0, 0x0)
	/Users/mattcashner/src/go/src/github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow.cli.v1/flow.go:16 +0x43
github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow%2ecli%2ev1.(*step).run(0xc42003fe80, 0x0, 0x0)
	/Users/mattcashner/src/go/src/github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow.cli.v1/flow.go:20 +0xbe
github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow%2ecli%2ev1.(*Cmd).parse(0xc420096400, 0xc42000e1a0, 0x0, 0x0, 0xc42003fe80, 0xc42003fe80, 0xc4200736b0, 0xc420096401, 0xc4200736b0)
	/Users/mattcashner/src/go/src/github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow.cli.v1/commands.go:473 +0x529
github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow%2ecli%2ev1.(*Cli).parse(0xc42003ff60, 0xc42000e1a0, 0x0, 0x0, 0xc42003fe80, 0xc42003fe80, 0xc4200736b0, 0x4, 0x14ee272)
	/Users/mattcashner/src/go/src/github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow.cli.v1/cli.go:73 +0x102
github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow%2ecli%2ev1.(*Cli).Run(0xc42003ff60, 0xc42000e1a0, 0x1, 0x1, 0x14ee272, 0x11)
	/Users/mattcashner/src/go/src/github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow.cli.v1/cli.go:102 +0x134
main.main()
	/Users/mattcashner/src/go/src/github.com/joyent/conch-shell/cmd/conch-mbo/conch-mbo.go:392 +0x4b4

Update config with new cookie value after api request

It turns out that the API is returning cookies that have the expiration time baked in. So every time we make an API call, that cookie changes. If we don't refresh the config with the new cookie, the profile will eventually stop working.

Cannot create new rooms with CLI

Currently https://conch.joyent.us/doc?shell#replaceworkspacerooms is not yet wired up to the CLI tool.

We may also need to add a createRoom API endpoint to add a new one.

After creating a workspace for a new region, creating the DC rooms is the next step. It would be helpful it a room could both be created in one go from the CLI, and if multiple rooms could be specified in a file we feed into the command.

Create sub workspace help does not show how to pass in parent ws ID

When creating a subws and no ws is defined, we get this:

13:45:58 pc055:~/bin$ ./conch-snap ws create sub eu-central-1
No valid workspace could be found in the active profile or on the command line. Please set an active profile or provide a workspace ID in the command

However, the help output doesn't show how to pass in a workspace ID as the parent:

13:45:36 pc055:~/bin$ ./conch-snap ws create sub
Error: incorrect usage

Usage: conch workspace create subworkspace NAME [OPTIONS]

Create a subworkspace

Arguments:
  NAME                The name for the new workspace

Options:
      --description   The description of the new workspace

Embed docs?

It'd be pretty swanky to embed long forms docs about the shell, its usage, etc into the app itself, maybe exposed as conch docs

Separate out the http daemon version of mbo reports

The introduction of the http daemon for mbo reports ballooned the size of the binary by about 10MB. Not surprising given that the library inlines freetype stuff. That report serves a totally different purpose from the rest of the CLI so let's pull it out into its own app.

The backend for the mbo report processing is shared by the http and cli reports. Should the MBO stuff be pulled out into its own app entirely? If not, the report processing needs to be a standalone lib that both binaries can use.

Automate release building

For GH releases, we'll need to build binaries for linux x86, linux arm, macos, and smartos. Need to automate that process.

This should be pretty easy using GOOS except for smartos. There's no working illumos GOOS target so we'll probably have to build that one by hand, unless we get lucky and they add the illumos target before we get to 1.0.0.

Conch update self seg faults on smartos

It seems like when I run conch update self the upgrade seg faults, I think when it tries to replace the file.

image-uuid:390639d4-f146-11e7-9280-37ae5c6d53d4(base-64-lts:17.4.0)

zsh/2 4533 [2] # conch2 update self                                                                                                                                                                                โŽ
** A new release is available! You have v1.2.0 and v1.3.0 is available.
   The changelog can be viewed via 'conch update changelog'

   You can obtain the new release by:
     * Running 'conch update self', which will attempt to overwrite the current application
     * Download the new release at https://github.com/joyent/conch-shell/releases/tag/v1.3.0 and manually install it

=> Attempting to upgrade from 1.2.0 to 1.3.0...
===> Detected OS to be 'solaris' and arch to be 'amd64'
===> Found new binary URL: https://github.com/joyent/conch-shell/releases/download/v1.3.0/conch-solaris-amd64
=====> Downloading binary...
=====> Done.
===> Detected local binary path: /root/bin/conch2
===> Overwriting local binary...
[1]    5469 segmentation fault (core dumped)  conch2 update self

Errors do not understand the --json flag

Right now, errors are just percolated up as error objects. When that error pops up, it just gets dumped out as a string. We need a standard error json structure. The bigger problem is that the --json flag is sent as a global argument and I've not found a good way yet to see the arguments from that error block.

I've pondered setting globals via GetStarted() but if a routine doesn't use GetStarted() it'd need to populate the globals itself. Seems like that'd get forgotten.

'conch --help

RIght now, 'conch --help' returns 'ERR! undefined option --help'.

Cannot create new racks with CLI

A common action we do is add new racks to datacenters. We have the ability to add existing racks to workspaces, but we cannot create new racks yet.

It would be useful to do:

conch ws create rack rack01

or

conch ws create rack --file racks.list

Where racks.list might just be a \n delim list of rack names.

In addition to being created, the new racks should be added to the workspace defined in the active profile.

The output should return the rack names and their IDs.

in get_workspace_devices, add device location and product model

From MM:

11:03 <@bryan.hor> @sungo Two things that would be really useful right now, don't know how hard they'd be: get_workspace_devices listing the device location and product model (string/name or UUID) so we can target the metadata boxes with a single grep. I can script that up, but having loc and model would be helpful at some point.

Listing devices should include a flag to show all defined devices

When we list devices in a workspace, we see everything that has been defined -- a serial number has been entered for that slot. However, we have all our racks in the datacenter skel'ed out in the datacenter_rack_layout table. It could be helpful, when looking at overall progress during a build, to have an optional flag that includes all slots, even empty ones.

A concrete example of this:

conch=> select count(*) from datacenter_rack_layout where product_id = 'f2fdf36b-3dde-4b9a-92e9-fb84d0f5e280';
 count
-------
   220
(1 row)

11:09:11 cronus:~$ conch get_workspace_devices --id 586f162e-2080-4fa7-a89e-d1ce958edd7b --json --full | json -a health hardware_product | grep f2fdf36b-3dde-4b9a-92e9-fb84d0f5e280 | sort | uniq -c | sort
  18 FAIL f2fdf36b-3dde-4b9a-92e9-fb84d0f5e280
  97 PASS f2fdf36b-3dde-4b9a-92e9-fb84d0f5e280

But what's the disposition of the other 105 servers? I can infer their state because they aren't listed -- but what I don't have is the final count I'm trying to reach (220) from the API/CLI, without digging around in the rack API directly.

What I'd like to do is have FAIL, PASS, UNKNOWN easily available.

(In this particular use case, I'm trying to identify how many Manta metadata nodes there are in total, and their disposition.)

Add build flags to indicate conch-shell was built by CI

I'd like to add some sort of variable to the shell that indicates it was built by CI. We could add this via the environment like we already do for the build version data surfaced by conch version. It'd be super swanky to get the Travis build number and a link to the CI report.

This would be particularly useful in the context of self-update (#71) so we can later ensure that the user is running an official binary.

Support JWT auth

go-conch will soon support the new JWT auth scheme (joyent/go-conch#42). Once it does, we need to pull it in.

Specifically, we need to ensure that users are transitioned silently to the new scheme. Last thing I want is to force all our users to recreate their profiles.

Add ROOM to `conch ws racks` output

We have racks that have dupe names in different AZs/rooms. For instance:

19:35:06 cronus:~$ conch ws racks | grep D.10
| bf837752-2f0e-4254-8e53-45fc21bad684 | D.10 | TRITON |    0 |   45 |
| 34374baf-f72e-438f-9a77-fb019a2d7e6a | D.10 | TRITON |    0 |   45 |
| 85457e58-6593-44e0-8667-3042380636c0 | D.10 | TRITON |    0 |   45 |

Please add the human-readable name (e.g., us-east-1a) to the racks output.

Conch-shell self-update

It would be nice if conch-shell would have it's own self update mechanism. Also having the ability to support different source locations but it should always default from pulling from github releases.

A few thoughts on how maybe this could function would be conch self-update latest --source https://conch.joyent.us/release --version 10.0.0

Want ordered listing of relays

conch rs outputs the list of relay devices in no particular order. An useful quality of life change would be to order it by the UPDATEDcolumn so that the ones which phoned home most recently are listed at the top.

Make `conch relays` more selective

Generally when looking at relays, we are trying to find something specific: Relays that are online, or a specific relay that has gone offline, or similar.

Let's modify the default behavior, and add a flag to support the other:

  • By default show only active relays, and all relays can be seen with --full or similar.
  • By default show all relays, and filter to active relays with --active or --online or similar

segfault when attempting a call to an offline server

Expected behavior: an error message

Behavior observed:

panic: runtime error: invalid memory address or nil pointer dereference [recovered]
        panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x10 pc=0x128cb05]

goroutine 1 [running]:
github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow%2ecli%2ev1.(*step).run(0xc420077680, 0x137cfe0, 0x15e63e0)
        /Users/mattcashner/src/go/src/github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow.cli.v1/flow.go:28 +0xd6
github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow%2ecli%2ev1.(*step).run(0xc420077770, 0x137cfe0, 0x15e63e0)
        /Users/mattcashner/src/go/src/github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow.cli.v1/flow.go:20 +0xbe
github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow%2ecli%2ev1.(*step).callDo.func1(0xc420077890, 0x0, 0x0)
        /Users/mattcashner/src/go/src/github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow.cli.v1/flow.go:41 +0x4c
panic(0x137cfe0, 0x15e63e0)
        /usr/local/Cellar/go/1.9.4/libexec/src/runtime/panic.go:491 +0x283
github.com/joyent/conch-shell/vendor/github.com/joyent/go-conch.(*Conch).GetUserSettings(0xc420082550, 0xc420082550, 0x6, 0xc420082550)
        /Users/mattcashner/src/go/src/github.com/joyent/conch-shell/vendor/github.com/joyent/go-conch/user.go:29 +0x105
github.com/joyent/conch-shell/vendor/github.com/joyent/go-conch.(*Conch).VerifyLogin(0xc420082550, 0xc420082350, 0xc4201239a8)                                                                                                                                                                 
        /Users/mattcashner/src/go/src/github.com/joyent/conch-shell/vendor/github.com/joyent/go-conch/conch.go:43 +0x59
github.com/joyent/conch-shell/pkg/util.BuildAPIAndVerifyLogin()
        /Users/mattcashner/src/go/src/github.com/joyent/conch-shell/pkg/util/util.go:74 +0x36
github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow%2ecli%2ev1.(*step).callDo(0xc420077890, 0x0, 0x0)
        /Users/mattcashner/src/go/src/github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow.cli.v1/flow.go:44 +0x70
github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow%2ecli%2ev1.(*step).run(0xc420077890, 0x0, 0x0)
        /Users/mattcashner/src/go/src/github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow.cli.v1/flow.go:16 +0x43
github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow%2ecli%2ev1.(*step).run(0xc420077740, 0x0, 0x0)
        /Users/mattcashner/src/go/src/github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow.cli.v1/flow.go:20 +0xbe
github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow%2ecli%2ev1.(*step).run(0xc42004fe90, 0x0, 0x0)
        /Users/mattcashner/src/go/src/github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow.cli.v1/flow.go:20 +0xbe
github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow%2ecli%2ev1.(*Cmd).parse(0xc42009ac00, 0xc42000c070, 0x0, 0x0, 0xc42004fe90, 0xc420077740, 0xc420077770, 0xc42000e0b8, 0xc42000e0a8)
        /Users/mattcashner/src/go/src/github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow.cli.v1/commands.go:473 +0x529
github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow%2ecli%2ev1.(*Cmd).parse(0xc42009a400, 0xc42000c070, 0x1, 0x1, 0xc42004fe90, 0xc42004fe90, 0xc420077680, 0xc42009a401, 0xc420077680)
        /Users/mattcashner/src/go/src/github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow.cli.v1/commands.go:487 +0x7ad
github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow%2ecli%2ev1.(*Cli).parse(0xc42004ff40, 0xc42000c070, 0x1, 0x1, 0xc42004fe90, 0xc42004fe90, 0xc420077680, 0x13e5cf0, 0xc)
        /Users/mattcashner/src/go/src/github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow.cli.v1/cli.go:73 +0x102
github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow%2ecli%2ev1.(*Cli).Run(0xc42004ff40, 0xc42000c060, 0x2, 0x2, 0x13ef5ce, 0x25)
        /Users/mattcashner/src/go/src/github.com/joyent/conch-shell/vendor/gopkg.in/jawher/mow.cli.v1/cli.go:102 +0x134
main.main()
        /Users/mattcashner/src/go/src/github.com/joyent/conch-shell/cmd/conch/conch.go:94 +0x464

Remove MBO report

conch-mbo was written to handle reporting requests for MBO EOY17. It's kinda terrible code and I'd like to remove it. It also doesn't build on smartOS or anything sufficiently not-linux (#50). joyent/conch-stats exists now and I'd like to move all this logic over there.

Want to create and modify devices via CLI

The ability to create a basic device record would be very helpful. The UI does this during rack layout assignment -- which may be simplest. The alternative is to add a new endpoint or try to submit a basic / dummy report, which is less than ideal.

Preferably we'd be able to specify the human-readable name for the rack.

                url: `/workspace/${workspaceId}/rack/${rack.id}/layout`,

Which takes a simple "serial": ru map of however many devices. e.g.,

{
  "ASDF": 21,
  "QWERTY": 29,
...
}

I'm not sure what the best UX would be here. Something like:

conch device create :serial --rack D.05 --unit 1

This will at least create a device and assign it a location; this allows us to infer what the system is from the rack layout, as well.

Allow raw API requests

I think there will always be users who prefer to make direct API calls instead of using our commands. However, there are bits like auth and error handling where a unified approach would be useful. We can meet both needs by creating a command in the shell (conch api ?) that is capable of taking an API url, handling auth, making the call, and delivering the raw untouched json response.

Getting the raw JSON requires either that dghubble/sling gets the patch offered in dghubble/sling#44 or we/I fork sling and apply it ourselves.

Add field selection option

It would be useful to emulate the -o field selector found in many illumos and SmartOS tools.

For instance:

conch ws users -o email
conch vps get -o name
conch vp 469b8768-b99f-470c-8fc6-840fa9fcc477 validations -o id,name
conch h ps -o id,name

This can be useful in limiting the output of the command for sharing (e.g., into chat), or for helping reduce parsing during scripting.

Remove orchestration support

The conch API and go-conch are removing support for orchestration ( joyent/go-conch#43 ). We need to follow suit.

can't use conch from gz

I need to use conch from a headnode, but after setting up my profile I get the following error.

Post https://conch.joyent.us/login: x509: failed to load system roots and no roots provided

The help doesn't say how to provide one. It would be nice if it could use the CURL_CA_BUNDLE environment variable because we already set that.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.