Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Yetus demand for enum UPPER_SNAKE_CASE, and UNSPECIFIED for 0 case

...

  1. Need to extend the type ‘filesystem storage’, currently only allows ‘Block Storage’ for non image usage.
  2. Same as in the NI case, the same VI name and UUID can be deployed onto each of the edge-nodes in the cluster.
  3. Same as in the NI case, may want to let users pick which edge-nodes need this VI or assign the ResourceLabel requirement.
  4. Same as in the NI case, if the ResourceLabel list exists, it does not need to be downloaded to the edge-nodes.
  5. Once each edge-node VI configuration is buildbuilt, it will be used in the device configuration for each edge-node selected
  6. If the VI does not need to be replicated by the cluster, then the user should only pick one edge-node
  7. Same as above NI question, should we reuse the same ‘VI’ object or create a new one for Edge-node Cluster VI?
  8. Normally once a VI is configured independent of the Application, it is downloaded onto the edge-node. This cluster case, we should allow users to pick up to three devices for this VI in the cluster. When the App is attached with this VI and if the App device selection does not match the VI device selection, we generate an error and ask user to modify.  In the ‘Manual Migration’ case, only the DNId will get this VI configuration. In the ‘Auto-Migration’ of the App case, the other nodes may also get the VI configuration. A new DNId string is added to the ‘Volume’ API.

...

This is an example of the new ‘cluster’ API, is part of the device configuration of EVE API


message EdgeDevConfig {
...
    // cluster configuration
    EdgeNodeCluster cluster;
}

message EdgeNodeCluster {
    // cluster name, in case it has multiple cluster on the same site
    string ClusterName cluster_name;
    // cluster UUID
    string ClusterID cluster_id;
    // Cluster-Interface, for example "eth1"
    string ClusterInterface cluster_interface;
    // The ‘cluster-prefix’ IP address of the ‘Cluster-Interface’, e.g. 10.244.244.2/28
    string ClusterIPPrefix;
    // This device is ‘seed-server’ or not
    bool IsSeedServer cluster_ip_prefix;
    // This device is an ‘Agent’ node
    bool IsAgent Is_agent;
    // SSIP - Seed- Server IP address to join during bootstrapthe cluster. E.g. 10.244.244.1
    string SeedServerIPAddress join_server_ip;
    // encrypted token string, use edge-node TMP to decrypt
    string EncryptedClusterToken;
    // Resource label list, may not be in first phases
    map <string, string> ResourceLabel;
org.lfedge.eve.common.CipherBlock encrypted_cluster_token;
}

App Instance API

This is an example of the change of the ‘AppInstanceConfig’ API


message AppInstanceConfig {

    // This edge-node UUID for the Designated Node for the Application
string DesignatedNodeID;
// If the App allows automatically migrated or not
    bool AutoMigration;
    // a set of ResourceLabels for node selection (may not be in first phases)
    map<string, string> NodeSelectLabels;

}

Volume API

   string designated_node_id;

}

Volume API

This is an example of the change of the ‘Volume’ API

...

message Volume {

    // To inform the edge-node if the device receives this Volume is
    // responsible to create volume, convert PVC or not
    String DesignateNodeID;
    // replicated to devices with UUID array, number arrange from 0 to 2
    repeated string ReplicaNodeIDstring designated_node_id;
}

App Info Message API

This is an example of the change of the ‘Info’ API


enum ZInfoClusterNodeStatus {
   Z_INFO_CLUSTER_NODE_STATUS_UNSPECIFIED;
   Z_INFO_CLUSTER_NODE_STATUS_READY;          // cluster reports our node is ready
   Z_INFO_CLUSTER_NODE_STATUS_NOTREADY;  // cluster reports our node is ready
   Z_INFO_CLUSTER_NODE_STATUS_DOWN;         // cluster API server can not be reached
}

message ZInfoClusterNode {
    ZInfoClusterNodeStatus node_status;
}

message ZInfoMsg {
    oneof InfoContent {
       ...
       ZInfoClusterNode cluster_node;
    }
}

message ZInfoApp {

    // Message ZInfoApp {

    // The App in cluster mode is currently running on this edge-node
    bool ClusterAppRunning;
cluster_app_running;
}