Skip to content

Commit f15f73c

Browse files
authored
Auto configure operator URL (#401)
1 parent 577b31e commit f15f73c

File tree

6 files changed

+32
-36
lines changed

6 files changed

+32
-36
lines changed

cli/cmd/lib_cli_config.go

Lines changed: 23 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ import (
2929
"github.com/cortexlabs/cortex/pkg/lib/json"
3030
)
3131

32-
var cachedCliConfig *CliConfig
33-
var cachedCliConfigErrs []error
32+
var cachedCLIConfig *CLIConfig
33+
var cachedCLIConfigErrs []error
3434
var localDir string
3535

3636
func init() {
@@ -45,13 +45,13 @@ func init() {
4545
}
4646
}
4747

48-
type CliConfig struct {
48+
type CLIConfig struct {
4949
CortexURL string `json:"cortex_url"`
5050
AWSAccessKeyID string `json:"aws_access_key_id"`
5151
AWSSecretAccessKey string `json:"aws_secret_access_key"`
5252
}
5353

54-
func getPromptValidation(defaults *CliConfig) *cr.PromptValidation {
54+
func getPromptValidation(defaults *CLIConfig) *cr.PromptValidation {
5555
return &cr.PromptValidation{
5656
PromptItemValidations: []*cr.PromptItemValidation{
5757
{
@@ -124,13 +124,13 @@ func configPath() string {
124124
return filepath.Join(localDir, flagEnv+".json")
125125
}
126126

127-
func readCliConfig() (*CliConfig, []error) {
128-
if cachedCliConfig != nil {
129-
return cachedCliConfig, cachedCliConfigErrs
127+
func readCLIConfig() (*CLIConfig, []error) {
128+
if cachedCLIConfig != nil {
129+
return cachedCLIConfig, cachedCLIConfigErrs
130130
}
131131

132132
configPath := configPath()
133-
cachedCliConfig = &CliConfig{}
133+
cachedCLIConfig = &CLIConfig{}
134134

135135
configBytes, err := files.ReadFileBytes(configPath)
136136
if err != nil {
@@ -139,27 +139,26 @@ func readCliConfig() (*CliConfig, []error) {
139139

140140
cliConfigData, err := cr.ReadJSONBytes(configBytes)
141141
if err != nil {
142-
cachedCliConfigErrs = []error{err}
143-
return cachedCliConfig, cachedCliConfigErrs
142+
cachedCLIConfigErrs = []error{err}
143+
return cachedCLIConfig, cachedCLIConfigErrs
144144
}
145145

146-
cachedCliConfigErrs = cr.Struct(cachedCliConfig, cliConfigData, fileValidation)
147-
return cachedCliConfig, errors.WrapMultiple(cachedCliConfigErrs, configPath)
146+
cachedCLIConfigErrs = cr.Struct(cachedCLIConfig, cliConfigData, fileValidation)
147+
return cachedCLIConfig, errors.WrapMultiple(cachedCLIConfigErrs, configPath)
148148
}
149149

150-
func getValidCliConfig() *CliConfig {
151-
cliConfig, errs := readCliConfig()
150+
func getValidCLIConfig() *CLIConfig {
151+
cliConfig, errs := readCLIConfig()
152152
if len(errs) > 0 {
153-
fmt.Printf("Environment \"%s\" is not configured, configuring now:\n", flagEnv)
154153
cliConfig = configure()
155154
}
156155
return cliConfig
157156
}
158157

159-
func getDefaults() *CliConfig {
160-
defaults, _ := readCliConfig()
158+
func getDefaults() *CLIConfig {
159+
defaults, _ := readCLIConfig()
161160
if defaults == nil {
162-
defaults = &CliConfig{}
161+
defaults = &CLIConfig{}
163162
}
164163

165164
if defaults.AWSAccessKeyID == "" && os.Getenv("AWS_ACCESS_KEY_ID") != "" {
@@ -175,21 +174,18 @@ func getDefaults() *CliConfig {
175174
return defaults
176175
}
177176

178-
func configure() *CliConfig {
177+
func configure() *CLIConfig {
179178
defaults := getDefaults()
180-
181-
cachedCliConfig = &CliConfig{}
179+
cachedCLIConfig = &CLIConfig{}
182180
fmt.Println("\nEnvironment: " + flagEnv + "\n")
183-
err := cr.ReadPrompt(cachedCliConfig, getPromptValidation(defaults))
181+
err := cr.ReadPrompt(cachedCLIConfig, getPromptValidation(defaults))
184182
if err != nil {
185183
errors.Exit(err)
186184
}
187-
188-
err = json.WriteJSON(cachedCliConfig, configPath())
189-
if err != nil {
185+
if err := json.WriteJSON(cachedCLIConfig, configPath()); err != nil {
190186
errors.Exit(err)
191187
}
192-
cachedCliConfigErrs = nil
188+
cachedCLIConfigErrs = nil
193189

194-
return cachedCliConfig
190+
return cachedCLIConfig
195191
}

cli/cmd/lib_client.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -179,15 +179,15 @@ func StreamLogs(appName string, resourceName string, resourceType string) error
179179

180180
connection, response, err := dialer.Dial(wsURL, header)
181181
if response == nil {
182-
cliConfig := getValidCliConfig()
182+
cliConfig := getValidCLIConfig()
183183
return ErrorFailedToConnect(strings.Replace(cliConfig.CortexURL, "http", "ws", 1))
184184
}
185185
defer response.Body.Close()
186186

187187
if err != nil {
188188
bodyBytes, err := ioutil.ReadAll(response.Body)
189189
if err != nil || bodyBytes == nil || string(bodyBytes) == "" {
190-
cliConfig := getValidCliConfig()
190+
cliConfig := getValidCLIConfig()
191191
return ErrorFailedToConnect(strings.Replace(cliConfig.CortexURL, "http", "ws", 1))
192192
}
193193
var output schema.ErrorResponse
@@ -245,7 +245,7 @@ func closeConnection(connection *websocket.Conn, done chan struct{}, interrupt c
245245
}
246246

247247
func operatorRequest(method string, endpoint string, body io.Reader, qParams []map[string]string) (*http.Request, error) {
248-
cliConfig := getValidCliConfig()
248+
cliConfig := getValidCLIConfig()
249249
req, err := http.NewRequest(method, cliConfig.CortexURL+endpoint, body)
250250
if err != nil {
251251
return nil, errors.Wrap(err, errStrCantMakeRequest)
@@ -268,7 +268,7 @@ func (client *cortexClient) makeRequest(request *http.Request) ([]byte, error) {
268268

269269
response, err := client.Do(request)
270270
if err != nil {
271-
cliConfig := getValidCliConfig()
271+
cliConfig := getValidCLIConfig()
272272
return nil, ErrorFailedToConnect(cliConfig.CortexURL)
273273
}
274274
defer response.Body.Close()
@@ -296,6 +296,6 @@ func (client *cortexClient) makeRequest(request *http.Request) ([]byte, error) {
296296
}
297297

298298
func authHeader() string {
299-
cliConfig := getValidCliConfig()
299+
cliConfig := getValidCLIConfig()
300300
return fmt.Sprintf("CortexAWS %s|%s", cliConfig.AWSAccessKeyID, cliConfig.AWSSecretAccessKey)
301301
}

cortex.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ function uninstall_eks() {
216216

217217
function install_cortex() {
218218
echo
219-
docker run -it --entrypoint /root/install_cortex.sh \
219+
docker run -it -v $HOME/.cortex:/.cortex --entrypoint /root/install_cortex.sh \
220220
-e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \
221221
-e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \
222222
-e CORTEX_AWS_ACCESS_KEY_ID=$CORTEX_AWS_ACCESS_KEY_ID \

dev/operator_local.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ source $ROOT/dev/config/cortex.sh
2424
export CORTEX_OPERATOR_IN_CLUSTER=false
2525

2626
kill $(pgrep -f rerun) >/dev/null 2>&1 || true
27-
27+
updated_config=$(cat $HOME/.cortex/dev.json | jq '.cortex_url = "http://localhost:8888"') && echo $updated_config > $HOME/.cortex/dev.json
2828
rerun -watch $ROOT/pkg $ROOT/cli -ignore $ROOT/vendor $ROOT/bin -run sh -c \
2929
"go build -o $ROOT/bin/operator $ROOT/pkg/operator && go build -installsuffix cgo -o $ROOT/bin/cortex $ROOT/cli && $ROOT/bin/operator"
3030

manager/info.sh

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,3 @@ apis_endpoint=$(get_apis_endpoint)
3333

3434
echo "Operator endpoint: $operator_endpoint"
3535
echo "APIs endpoint: $apis_endpoint"
36-
37-
echo -e "\nRun \`cortex configure\` to configure your CLI"

manager/install_cortex.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,8 @@ function validate_cortex() {
153153
continue
154154
fi
155155
operator_endpoint_reachable="ready"
156+
echo "{\"cortex_url\": \"$operator_endpoint\", \"aws_access_key_id\": \"$CORTEX_AWS_ACCESS_KEY_ID\", \"aws_secret_access_key\": \"$CORTEX_AWS_SECRET_ACCESS_KEY\"}" > /.cortex/dev.json
157+
echo -e "\n✓ Configured CLI"
156158
fi
157159

158160
if [ "$operator_pod_ready_cycles" == "0" ] && [ "$operator_pod_name" != "" ]; then

0 commit comments

Comments
 (0)