joyent / conch-shell Goto Github PK
View Code? Open in Web Editor NEWThis project has been replaced by Kosh (https://github.com/joyent/kosh). All future development will happen there.
License: Mozilla Public License 2.0
This project has been replaced by Kosh (https://github.com/joyent/kosh). All future development will happen there.
License: Mozilla Public License 2.0
[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
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
While parsing or scripting, it's often required that we skip the header line in the command output. Other illumos/SmartOS utilities offer -H
to omit the header columns.
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.
Because all the args have defaults, 'conch login' right now just displays 'login failed' if you're not running a local dev instance. It probably should just dump help or start prompting.
With joyent/go-conch#9 complete, we can rip out all the code that manually handles API versions.
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.
See:
In both BuildApi() and BuildApiAndVerifyLogin(), the User field gets set to config.Api instead of config.User
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
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
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.
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.
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
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.
RIght now, 'conch --help' returns 'ERR! undefined option --help'.
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.
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.
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.)
Enough has changed in device reports that the device report command has become less than useful. The command should be able to dump out the raw json from the API as well as get updated for the latest data model.
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.
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.
To make it somewhat nicer for humans to use.
For a real 1.0.0 semver release, we need to solidify and document the command set.
mow.cli introduces breaking changes that cause the build to fail
Should probably be abstracted enough that folks can contribute generators for their favorite shells without drama
Use the standard time formatter that everything else uses.
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.
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
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 UPDATED
column so that the ones which phoned home most recently are listed at the top.
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:
--full
or similar.--active
or --online
or similarThis is almost certainly a zero-value problem
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
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.
I need to do work on the eu-central-1-exp1
workspace, but I'm not a member of it. (Only @daleghent has access.) As a global admin, I'd like to be able to add myself to this subws.
This is a problem throughout the code base. We build urls right now via simple string concat and it assumes there are or aren't slashes in certain places.
Right now, we download the binary into memory and write that directly to the executable path with no intermediate save. Should be able to checksum the payload, though, before writing it.
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.
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.
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.
The conch API and go-conch are removing support for orchestration ( joyent/go-conch#43 ). We need to follow suit.
In support of joyent/conch-api#147. Requires joyent/go-conch#10
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.
As of joyent/conch-api#265, we can provide a flag when fetching the relay list to prevent the api from also sending us every device it knows about. We should use that flag where appropriate.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.