in ee/spec/support/shared_contexts/remote_development/remote_development_shared_contexts.rb [20:308]
def create_workspace_agent_info_hash(
workspace:,
previous_actual_state:,
current_actual_state:,
workspace_exists:,
workspace_variables_environment: nil,
workspace_variables_file: nil,
workspace_variables_additional_data: nil,
resource_version: '1',
dns_zone: 'workspaces.localdev.me',
error_details: nil
)
info = {
name: workspace.name,
namespace: workspace.namespace
}
if current_actual_state == states_module::TERMINATED
info[:termination_progress] =
states_module::TERMINATED
end
if current_actual_state == states_module::TERMINATING
info[:termination_progress] =
states_module::TERMINATING
end
if [
states_module::TERMINATING,
states_module::TERMINATED,
states_module::UNKNOWN
].include?(current_actual_state)
return info
end
spec_replicas =
if [states_module::STOPPED, states_module::STOPPING]
.include?(current_actual_state)
0
else
1
end
started = spec_replicas == 1
status =
case [previous_actual_state, current_actual_state, workspace_exists]
in [RemoteDevelopment::WorkspaceOperations::States::CREATION_REQUESTED, RemoteDevelopment::WorkspaceOperations::States::STARTING, _]
<<~'YAML'
conditions:
- lastTransitionTime: "2023-04-10T10:14:14Z"
lastUpdateTime: "2023-04-10T10:14:14Z"
message: Created new replica set "#{workspace.name}-hash"
reason: NewReplicaSetCreated
status: "True"
type: Progressing
YAML
in [RemoteDevelopment::WorkspaceOperations::States::STARTING, RemoteDevelopment::WorkspaceOperations::States::STARTING, false]
<<~'YAML'
conditions:
- lastTransitionTime: "2023-04-10T10:14:14Z"
lastUpdateTime: "2023-04-10T10:14:14Z"
message: Deployment does not have minimum availability.
reason: MinimumReplicasUnavailable
status: "False"
type: Available
- lastTransitionTime: "2023-04-10T10:14:14Z"
lastUpdateTime: "2023-04-10T10:14:14Z"
message: ReplicaSet "#{workspace.name}-hash" is progressing.
reason: ReplicaSetUpdated
status: "True"
type: Progressing
observedGeneration: 1
replicas: 1
unavailableReplicas: 1
updatedReplicas: 1
YAML
in [RemoteDevelopment::WorkspaceOperations::States::STARTING, RemoteDevelopment::WorkspaceOperations::States::RUNNING, false]
<<~'YAML'
availableReplicas: 1
conditions:
- lastTransitionTime: "2023-03-06T14:36:36Z"
lastUpdateTime: "2023-03-06T14:36:36Z"
message: Deployment has minimum availability.
reason: MinimumReplicasAvailable
status: "True"
type: Available
- lastTransitionTime: "2023-03-06T14:36:31Z"
lastUpdateTime: "2023-03-06T14:36:36Z"
message: ReplicaSet "#{workspace.name}-hash" has successfully progressed.
reason: NewReplicaSetAvailable
status: "True"
type: Progressing
readyReplicas: 1
replicas: 1
updatedReplicas: 1
YAML
in [RemoteDevelopment::WorkspaceOperations::States::STARTING, RemoteDevelopment::WorkspaceOperations::States::FAILED, false]
raise RemoteDevelopment::AgentInfoStatusFixtureNotImplementedError
in [RemoteDevelopment::WorkspaceOperations::States::FAILED, RemoteDevelopment::WorkspaceOperations::States::STARTING, false]
raise RemoteDevelopment::AgentInfoStatusFixtureNotImplementedError
in [RemoteDevelopment::WorkspaceOperations::States::RUNNING, RemoteDevelopment::WorkspaceOperations::States::FAILED, _]
raise RemoteDevelopment::AgentInfoStatusFixtureNotImplementedError
in [RemoteDevelopment::WorkspaceOperations::States::RUNNING, RemoteDevelopment::WorkspaceOperations::States::STOPPING, _]
<<~'YAML'
availableReplicas: 1
conditions:
- lastTransitionTime: "2023-04-10T10:40:35Z"
lastUpdateTime: "2023-04-10T10:40:35Z"
message: Deployment has minimum availability.
reason: MinimumReplicasAvailable
status: "True"
type: Available
- lastTransitionTime: "2023-04-10T10:40:24Z"
lastUpdateTime: "2023-04-10T10:40:35Z"
message: ReplicaSet "#{workspace.name}-hash" has successfully progressed.
reason: NewReplicaSetAvailable
status: "True"
type: Progressing
observedGeneration: 1
readyReplicas: 1
replicas: 1
updatedReplicas: 1
YAML
in [RemoteDevelopment::WorkspaceOperations::States::STOPPING, RemoteDevelopment::WorkspaceOperations::States::STOPPED, _]
<<~'YAML'
conditions:
- lastTransitionTime: "2023-04-10T10:40:35Z"
lastUpdateTime: "2023-04-10T10:40:35Z"
message: Deployment has minimum availability.
reason: MinimumReplicasAvailable
status: "True"
type: Available
- lastTransitionTime: "2023-04-10T10:40:24Z"
lastUpdateTime: "2023-04-10T10:40:35Z"
message: ReplicaSet "#{workspace.name}-hash" has successfully progressed.
reason: NewReplicaSetAvailable
status: "True"
type: Progressing
observedGeneration: 2
YAML
in [RemoteDevelopment::WorkspaceOperations::States::STOPPED, RemoteDevelopment::WorkspaceOperations::States::STOPPED, true]
<<~'YAML'
conditions:
- lastTransitionTime: "2023-04-10T10:40:24Z"
lastUpdateTime: "2023-04-10T10:40:35Z"
message: Deployment has minimum availability.
reason: MinimumReplicasAvailable
status: "True"
type: Available
- lastTransitionTime: "2023-04-10T10:49:59Z"
lastUpdateTime: "2023-04-10T10:49:59Z"
message: ReplicaSet "#{workspace.name}-hash" has successfully progressed.
reason: NewReplicaSetAvailable
status: "True"
type: Progressing
observedGeneration: 2
YAML
in [RemoteDevelopment::WorkspaceOperations::States::STOPPING, RemoteDevelopment::WorkspaceOperations::States::FAILED, _]
raise RemoteDevelopment::AgentInfoStatusFixtureNotImplementedError
in [RemoteDevelopment::WorkspaceOperations::States::STOPPED, RemoteDevelopment::WorkspaceOperations::States::STARTING, _]
<<~'YAML'
conditions:
- lastTransitionTime: "2023-04-10T10:40:24Z"
lastUpdateTime: "2023-04-10T10:40:35Z"
message: ReplicaSet "#{workspace.name}-hash" has successfully progressed.
reason: NewReplicaSetAvailable
status: "True"
type: Progressing
- lastTransitionTime: "2023-04-10T10:49:59Z"
lastUpdateTime: "2023-04-10T10:49:59Z"
message: Deployment does not have minimum availability.
reason: MinimumReplicasUnavailable
status: "False"
type: Available
observedGeneration: 3
YAML
in [RemoteDevelopment::WorkspaceOperations::States::STOPPED, RemoteDevelopment::WorkspaceOperations::States::FAILED, _]
raise RemoteDevelopment::AgentInfoStatusFixtureNotImplementedError
in [RemoteDevelopment::WorkspaceOperations::States::STARTING, RemoteDevelopment::WorkspaceOperations::States::STARTING, true]
<<~'YAML'
conditions:
- lastTransitionTime: "2023-04-10T10:40:24Z"
lastUpdateTime: "2023-04-10T10:40:35Z"
message: ReplicaSet "#{workspace.name}-hash" has successfully progressed.
reason: NewReplicaSetAvailable
status: "True"
type: Progressing
- lastTransitionTime: "2023-04-10T10:49:59Z"
lastUpdateTime: "2023-04-10T10:49:59Z"
message: Deployment does not have minimum availability.
reason: MinimumReplicasUnavailable
status: "False"
type: Available
observedGeneration: 3
replicas: 1
unavailableReplicas: 1
updatedReplicas: 1
YAML
in [RemoteDevelopment::WorkspaceOperations::States::STARTING, RemoteDevelopment::WorkspaceOperations::States::RUNNING, true]
<<~'YAML'
availableReplicas: 1
conditions:
- lastTransitionTime: "2023-04-10T10:40:24Z"
lastUpdateTime: "2023-04-10T10:40:35Z"
message: ReplicaSet "#{workspace.name}-hash" has successfully progressed.
reason: NewReplicaSetAvailable
status: "True"
type: Progressing
- lastTransitionTime: "2023-04-10T10:50:10Z"
lastUpdateTime: "2023-04-10T10:50:10Z"
message: Deployment has minimum availability.
reason: MinimumReplicasAvailable
status: "True"
type: Available
observedGeneration: 3
readyReplicas: 1
replicas: 1
updatedReplicas: 1
YAML
in [RemoteDevelopment::WorkspaceOperations::States::STARTING, RemoteDevelopment::WorkspaceOperations::States::FAILED, true]
raise RemoteDevelopment::AgentInfoStatusFixtureNotImplementedError
in [RemoteDevelopment::WorkspaceOperations::States::FAILED, RemoteDevelopment::WorkspaceOperations::States::STARTING, true]
raise RemoteDevelopment::AgentInfoStatusFixtureNotImplementedError
in [RemoteDevelopment::WorkspaceOperations::States::FAILED, RemoteDevelopment::WorkspaceOperations::States::STOPPING, _]
raise RemoteDevelopment::AgentInfoStatusFixtureNotImplementedError
in [_, RemoteDevelopment::WorkspaceOperations::States::FAILED, _]
raise RemoteDevelopment::AgentInfoStatusFixtureNotImplementedError
else
msg =
'Unsupported state transition passed for create_workspace_agent_info_hash fixture creation: ' \
"actual_state: #{previous_actual_state} -> #{current_actual_state}, " \
"existing_workspace: #{workspace_exists}"
raise RemoteDevelopment::AgentInfoStatusFixtureNotImplementedError, msg
end
config_to_apply = create_config_to_apply(
workspace: workspace,
workspace_variables_environment: workspace_variables_environment,
workspace_variables_file: workspace_variables_file,
workspace_variables_additional_data: workspace_variables_additional_data,
started: started,
include_inventory: false,
include_network_policy: false,
include_all_resources: false,
dns_zone: dns_zone
)
latest_k8s_deployment_info = config_to_apply.detect { |config| config.fetch(:kind) == 'Deployment' }
latest_k8s_deployment_info[:metadata][:resourceVersion] = resource_version
latest_k8s_deployment_info[:status] = yaml_safe_load_symbolized(status)
info[:latest_k8s_deployment_info] = latest_k8s_deployment_info
info[:error_details] = error_details
info
end