• João Cunha's avatar
    Adapt functions to work for external Knative · a2aa160c
    João Cunha authored
    Remove Kn services cache from Clusters::Application::Knative
    
    Knative function can exist even if user did not installed Knative via
    GitLab managed apps.
    
    -> Move responsibility of finding services into the Cluster
    -> Responsability is inside Clusters::Cluster::KnativeServiceFinder
    -> Projects::Serverless::FunctionsFinder now calls depends solely on a
    cluster to find the Kn services.
    -> Detect Knative by resource presence instead of service presence
    -> Mock knative_installed response temporarily for frontend to develop
    
    Display loader while `installed === 'checking'`
    
    Added frontend work to determine if Knative is installed
    
    Memoize with_reactive_cache(*args, &block) to avoid race conditions
    
    When calling with_reactive_cache more than once, it's possible that the
    second call will already have the value populated. Therefore, in cases
    where we need the sequential calls to have consistent results, we'd fall
    under a race condition.
    
    Check knative installation via Knative resource presence
    
    Only load pods if Knative is discovered
    
    Always return a response in FunctionsController#index
    
    - Always indicate if Knative is installed, not installed or checking
    - Always indicate the partial response for functions. Final response is
    guaranteed when knative_installed is either true | false.
    
    Adds specs for Clusters::Cluster#knative_services_finder
    
    Fix method name when calling on specs
    
    Add an explicit check for functions
    
    Added an explicit check to see if there are any functions available
    
    Fix Serverless feature spec
    
    - we don't find knative installation via database anymore,
    rather via Knative resource
    
    Display error message for request timeouts
    
    Display an error message if the request times out
    
    Adds feature specs for when functions exist
    
    Remove a test purposed hardcoded flag
    
    Add ability to partially load functions
    
    Added the ability to partially load functions on the frontend
    
    Add frontend unit tests
    
    Added tests for the new frontend additions
    
    Generate new translations
    
    Generated new frontend translations
    
    Address review comments
    
    Cleaned up the frontend unit test.
    Added computed prop for `isInstalled`.
    
    Move string to constant
    
    Simplify nil to array conversion
    
    Put knative_installed states in a frozen hash for better read
    
    Pluralize list of Knative states
    
    Quey services and pods filtering name
    
    This way we don't need to filter the namespace in memory.
    Also, the data we get from the network is much smaller.
    
    Simplify cache_key and fix bug
    
    - Simplifies the cache_key by removing namespace duplicate
    - Fixes a bug with reactive_cache memoization
    a2aa160c
cluster_spec.rb 21 KB