Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
remove pull env api
  • Loading branch information
k-anshul committed Apr 24, 2026
commit 194ae39984b1d9a046107a2e928c44a47d88c3f2
2,069 changes: 976 additions & 1,093 deletions proto/gen/rill/runtime/v1/api.pb.go

Large diffs are not rendered by default.

221 changes: 4 additions & 217 deletions proto/gen/rill/runtime/v1/api.pb.validate.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions proto/gen/rill/runtime/v1/runtime.swagger.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7418,6 +7418,14 @@ definitions:
type: object
v1ReloadConfigResponse:
type: object
properties:
variablesCount:
type: integer
format: int32
title: Number of variables pulled from cloud
modified:
type: boolean
title: Whether the .env file(s) were modified
title: Response message for RuntimeService.ReloadConfig
v1RenameFileResponse:
type: object
Expand Down
18 changes: 6 additions & 12 deletions proto/rill/runtime/v1/api.proto
Original file line number Diff line number Diff line change
Expand Up @@ -545,7 +545,12 @@ message ReloadConfigRequest {
}

// Response message for RuntimeService.ReloadConfig
message ReloadConfigResponse {}
message ReloadConfigResponse {
// Number of variables pulled from cloud
int32 variables_count = 1;
// Whether the .env file(s) were modified
bool modified = 2;
}

// **********
// Repos
Expand Down Expand Up @@ -1361,17 +1366,6 @@ message GitPushRequest {

message GitPushResponse {}

message PullEnvRequest {
string instance_id = 1 [(validate.rules).string = {pattern: "^[_\\-a-zA-Z0-9]+$"}];
}

message PullEnvResponse {
// Number of variables pulled from cloud
int32 variables_count = 1;
// Whether the .env file(s) were modified
bool modified = 2;
}

message PushEnvRequest {
string instance_id = 1 [(validate.rules).string = {pattern: "^[_\\-a-zA-Z0-9]+$"}];
}
Expand Down
36 changes: 19 additions & 17 deletions runtime/config_reloader.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,32 +48,32 @@ func newConfigReloader(rt *Runtime) *configReloader {
return c
}

func (r *configReloader) reloadConfig(ctx context.Context, instanceID string) error {
err := r.mu.Lock(ctx)
func (r *configReloader) reloadConfig(ctx context.Context, instanceID string) (varsCount int, modified bool, err error) {
err = r.mu.Lock(ctx)
if err != nil {
return err
return 0, false, err
}
defer r.mu.Unlock()

inst, err := r.rt.Instance(ctx, instanceID)
if err != nil {
return err
return 0, false, err
}

admin, release, err := r.rt.Admin(ctx, instanceID)
if err != nil {
if errors.Is(err, ErrAdminNotConfigured) {
return nil
return 0, false, nil
}
return err
return 0, false, err
}
defer release()

r.rt.Logger.Info("Reloading config for instance", zap.String("instance_id", instanceID), observability.ZapCtx(ctx))

cfg, err := admin.GetConfig(ctx)
if err != nil {
return err
return 0, false, err
}

// Clone for editing
Expand Down Expand Up @@ -110,7 +110,7 @@ func (r *configReloader) reloadConfig(ctx context.Context, instanceID string) er
if connectorConfigChanged {
duckdbConfig, err := structpb.NewStruct(updatedDuckdbConfig)
if err != nil {
return err
return 0, false, err
}
// Create a new Connector with updated config
connector = &runtimev1.Connector{
Expand All @@ -135,7 +135,7 @@ func (r *configReloader) reloadConfig(ctx context.Context, instanceID string) er
if !ok || cfg.UpdatedOn.After(updatedOn) {
repo, release, err := r.rt.Repo(ctx, inst.ID)
if err != nil {
return err
return 0, false, err
}
defer release()

Expand All @@ -152,25 +152,27 @@ func (r *configReloader) reloadConfig(ctx context.Context, instanceID string) er
// retrigger parser to pick up changes
ctrl, err := r.rt.Controller(ctx, instanceID)
if err != nil {
return err
return 0, false, err
}
err = ctrl.Reconcile(ctx, GlobalProjectParserName)
if err != nil {
return fmt.Errorf("failed to trigger parser: %w", err)
return 0, false, fmt.Errorf("failed to trigger parser: %w", err)
}
}
}

err = r.rt.EditInstance(ctx, inst, restartController)
if err != nil {
return err
return 0, false, err
}
if !(varsChanged && cfg.Editable) {
return nil
return 0, false, nil
}

// write variables to .env files for editable deployments. This will also trigger controller restart via repo watcher
var count int
for env, envVars := range cfg.Variables {
count += len(envVars)
var path string
switch env {
case "":
Expand All @@ -180,14 +182,14 @@ func (r *configReloader) reloadConfig(ctx context.Context, instanceID string) er
}
contents, err := godotenv.Marshal(envVars)
if err != nil {
return fmt.Errorf("failed to marshal env vars: %w", err)
return 0, false, fmt.Errorf("failed to marshal env vars: %w", err)
}
err = r.rt.PutFile(ctx, instanceID, path, strings.NewReader(contents), true, true)
if err != nil {
return fmt.Errorf("failed to write %s file: %w", path, err)
return 0, false, fmt.Errorf("failed to write %s file: %w", path, err)
}
}
return nil
return count, true, nil
}

func (r *configReloader) periodicallyReloadConfigs(ctx context.Context) {
Expand All @@ -199,7 +201,7 @@ func (r *configReloader) periodicallyReloadConfigs(ctx context.Context) {
return
}
for _, inst := range instances {
err := r.reloadConfig(ctx, inst.ID)
_, _, err := r.reloadConfig(ctx, inst.ID)
if err != nil {
r.rt.Logger.Error("periodicallyReloadConfigs: failed to reload config", zap.String("instance_id", inst.ID), zap.Error(err))
}
Expand Down
Loading
Loading