github.com/argoproj/argo-cd/v2@v2.10.9/ui/src/app/shared/models.ts (about)

     1  import {models} from 'argo-ui';
     2  
     3  interface ItemsList<T> {
     4      /**
     5       * APIVersion defines the versioned schema of this representation of an object.
     6       * Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values.
     7       */
     8      apiVersion?: string;
     9      items: T[];
    10      /**
    11       * Kind is a string value representing the REST resource this object represents.
    12       * Servers may infer this from the endpoint the client submits requests to.
    13       */
    14      kind?: string;
    15      metadata: models.ListMeta;
    16  }
    17  
    18  export interface ApplicationList extends ItemsList<Application> {}
    19  
    20  export interface SyncOperationResource {
    21      group: string;
    22      kind: string;
    23      name: string;
    24  }
    25  
    26  export interface SyncStrategy {
    27      apply?: {force?: boolean};
    28      hook?: {force?: boolean};
    29  }
    30  
    31  export interface SyncOperation {
    32      revision: string;
    33      prune: boolean;
    34      dryRun: boolean;
    35      resources?: SyncOperationResource[];
    36  }
    37  
    38  export interface RetryBackoff {
    39      duration: string;
    40      maxDuration: string;
    41      factor: number;
    42  }
    43  
    44  export interface RetryStrategy {
    45      limit: number;
    46      backoff: RetryBackoff;
    47  }
    48  
    49  export interface RollbackOperation {
    50      id: number;
    51      prune: boolean;
    52      dryRun: boolean;
    53  }
    54  
    55  export interface OperationInitiator {
    56      username: string;
    57      automated: boolean;
    58  }
    59  
    60  export interface Operation {
    61      sync: SyncOperation;
    62      initiatedBy: OperationInitiator;
    63  }
    64  
    65  export type OperationPhase = 'Running' | 'Error' | 'Failed' | 'Succeeded' | 'Terminating';
    66  
    67  export const OperationPhases = {
    68      Running: 'Running' as OperationPhase,
    69      Failed: 'Failed' as OperationPhase,
    70      Error: 'Error' as OperationPhase,
    71      Succeeded: 'Succeeded' as OperationPhase,
    72      Terminating: 'Terminating' as OperationPhase
    73  };
    74  
    75  /**
    76   * OperationState contains information about state of currently performing operation on application.
    77   */
    78  export interface OperationState {
    79      operation: Operation;
    80      phase: OperationPhase;
    81      message: string;
    82      syncResult: SyncOperationResult;
    83      startedAt: models.Time;
    84      finishedAt: models.Time;
    85  }
    86  
    87  export type HookType = 'PreSync' | 'Sync' | 'PostSync' | 'SyncFail' | 'Skip';
    88  
    89  export interface RevisionMetadata {
    90      author?: string;
    91      date: models.Time;
    92      tags?: string[];
    93      message?: string;
    94      signatureInfo?: string;
    95  }
    96  
    97  export interface ChartDetails {
    98      description?: string;
    99      maintainers?: string[];
   100      home?: string;
   101  }
   102  
   103  export interface SyncOperationResult {
   104      resources: ResourceResult[];
   105      revision: string;
   106  }
   107  
   108  export type ResultCode = 'Synced' | 'SyncFailed' | 'Pruned' | 'PruneSkipped';
   109  
   110  export const ResultCodes = {
   111      Synced: 'Synced',
   112      SyncFailed: 'SyncFailed',
   113      Pruned: 'Pruned',
   114      PruneSkipped: 'PruneSkipped'
   115  };
   116  
   117  export interface ResourceResult {
   118      name: string;
   119      group: string;
   120      kind: string;
   121      version: string;
   122      namespace: string;
   123      status: ResultCode;
   124      message: string;
   125      hookType: HookType;
   126      hookPhase: OperationPhase;
   127  }
   128  
   129  export const AnnotationRefreshKey = 'argocd.argoproj.io/refresh';
   130  export const AnnotationHookKey = 'argocd.argoproj.io/hook';
   131  export const AnnotationSyncWaveKey = 'argocd.argoproj.io/sync-wave';
   132  export const AnnotationDefaultView = 'pref.argocd.argoproj.io/default-view';
   133  export const AnnotationDefaultPodSort = 'pref.argocd.argoproj.io/default-pod-sort';
   134  
   135  export interface Application {
   136      apiVersion?: string;
   137      kind?: string;
   138      metadata: models.ObjectMeta;
   139      spec: ApplicationSpec;
   140      status: ApplicationStatus;
   141      operation?: Operation;
   142      isAppOfAppsPattern?: boolean;
   143  }
   144  
   145  export type WatchType = 'ADDED' | 'MODIFIED' | 'DELETED' | 'ERROR';
   146  
   147  export interface ApplicationWatchEvent {
   148      type: WatchType;
   149      application: Application;
   150  }
   151  
   152  export interface ComponentParameter {
   153      component: string;
   154      name: string;
   155      value: string;
   156  }
   157  
   158  export interface ApplicationDestination {
   159      /**
   160       * Server address of the destination cluster
   161       */
   162      server: string;
   163      /**
   164       * Namespace of the destination cluster
   165       */
   166      namespace: string;
   167      /**
   168       * Name of the destination cluster which can be used instead of server (url) field
   169       */
   170      name: string;
   171  }
   172  
   173  export interface OrphanedResource {
   174      group: string;
   175      kind: string;
   176      name: string;
   177  }
   178  
   179  export interface ApplicationSource {
   180      targetRevision: string;
   181      /**
   182       * RepoURL is repository URL which contains application project.
   183       */
   184      repoURL: string;
   185  
   186      /**
   187       * Path is a directory path within repository which
   188       */
   189      path?: string;
   190  
   191      chart?: string;
   192  
   193      helm?: ApplicationSourceHelm;
   194  
   195      kustomize?: ApplicationSourceKustomize;
   196  
   197      plugin?: ApplicationSourcePlugin;
   198  
   199      directory?: ApplicationSourceDirectory;
   200  }
   201  
   202  export interface ApplicationSourceHelm {
   203      valueFiles: string[];
   204      values?: string;
   205      valuesObject?: any;
   206      parameters: HelmParameter[];
   207      fileParameters: HelmFileParameter[];
   208  }
   209  
   210  export interface ApplicationSourceKustomize {
   211      namePrefix: string;
   212      nameSuffix: string;
   213      images: string[];
   214      version: string;
   215      namespace: string;
   216  }
   217  export interface EnvEntry {
   218      name: string;
   219      value: string;
   220  }
   221  
   222  export interface ApplicationSourcePlugin {
   223      name: string;
   224      env: EnvEntry[];
   225      parameters?: Parameter[];
   226  }
   227  
   228  export interface Parameter {
   229      name: string;
   230      string?: string;
   231      array?: string[];
   232      map?: Map<string, string>;
   233  }
   234  
   235  export interface JsonnetVar {
   236      name: string;
   237      value: string;
   238      code: boolean;
   239  }
   240  
   241  interface ApplicationSourceJsonnet {
   242      extVars: JsonnetVar[];
   243      tlas: JsonnetVar[];
   244  }
   245  
   246  export interface ApplicationSourceDirectory {
   247      recurse: boolean;
   248      jsonnet?: ApplicationSourceJsonnet;
   249      include?: string;
   250      exclude?: string;
   251  }
   252  
   253  export interface Automated {
   254      prune: boolean;
   255      selfHeal: boolean;
   256  }
   257  
   258  export interface SyncPolicy {
   259      automated?: Automated;
   260      syncOptions?: string[];
   261      retry?: RetryStrategy;
   262  }
   263  
   264  export interface Info {
   265      name: string;
   266      value: string;
   267  }
   268  
   269  export interface ApplicationSpec {
   270      project: string;
   271      source: ApplicationSource;
   272      sources: ApplicationSource[];
   273      destination: ApplicationDestination;
   274      syncPolicy?: SyncPolicy;
   275      ignoreDifferences?: ResourceIgnoreDifferences[];
   276      info?: Info[];
   277      revisionHistoryLimit?: number;
   278  }
   279  
   280  export interface ResourceIgnoreDifferences {
   281      group: string;
   282      kind: string;
   283      name: string;
   284      namespace: string;
   285      jsonPointers: string[];
   286      jqPathExpressions: string[];
   287  }
   288  
   289  /**
   290   * RevisionHistory contains information relevant to an application deployment
   291   */
   292  export interface RevisionHistory {
   293      id: number;
   294      revision: string;
   295      source: ApplicationSource;
   296      revisions: string[];
   297      sources: ApplicationSource[];
   298      deployStartedAt: models.Time;
   299      deployedAt: models.Time;
   300  }
   301  
   302  export type SyncStatusCode = 'Unknown' | 'Synced' | 'OutOfSync';
   303  
   304  export const SyncStatuses: {[key: string]: SyncStatusCode} = {
   305      Unknown: 'Unknown',
   306      Synced: 'Synced',
   307      OutOfSync: 'OutOfSync'
   308  };
   309  
   310  export type HealthStatusCode = 'Unknown' | 'Progressing' | 'Healthy' | 'Suspended' | 'Degraded' | 'Missing';
   311  
   312  export const HealthStatuses: {[key: string]: HealthStatusCode} = {
   313      Unknown: 'Unknown',
   314      Progressing: 'Progressing',
   315      Suspended: 'Suspended',
   316      Healthy: 'Healthy',
   317      Degraded: 'Degraded',
   318      Missing: 'Missing'
   319  };
   320  
   321  export interface HealthStatus {
   322      status: HealthStatusCode;
   323      message: string;
   324  }
   325  
   326  export type State = models.TypeMeta & {metadata: models.ObjectMeta} & {status: any; spec: any};
   327  
   328  export type ReadinessGate = {
   329      conditionType: string;
   330  };
   331  
   332  export interface ResourceStatus {
   333      group: string;
   334      version: string;
   335      kind: string;
   336      namespace: string;
   337      name: string;
   338      status: SyncStatusCode;
   339      health: HealthStatus;
   340      createdAt?: models.Time;
   341      hook?: boolean;
   342      requiresPruning?: boolean;
   343      syncWave?: number;
   344      orphaned?: boolean;
   345  }
   346  
   347  export interface ResourceRef {
   348      uid: string;
   349      kind: string;
   350      namespace: string;
   351      name: string;
   352      version: string;
   353      group: string;
   354  }
   355  
   356  export interface ResourceNetworkingInfo {
   357      targetLabels: {[name: string]: string};
   358      targetRefs: ResourceRef[];
   359      labels: {[name: string]: string};
   360      ingress: LoadBalancerIngress[];
   361      externalURLs: string[];
   362  }
   363  
   364  export interface LoadBalancerIngress {
   365      hostname: string;
   366      ip: string;
   367  }
   368  
   369  export interface InfoItem {
   370      name: string;
   371      value: string;
   372  }
   373  
   374  export interface ResourceNode extends ResourceRef {
   375      parentRefs: ResourceRef[];
   376      info: InfoItem[];
   377      networkingInfo?: ResourceNetworkingInfo;
   378      images?: string[];
   379      resourceVersion: string;
   380      createdAt?: models.Time;
   381  }
   382  
   383  export interface ApplicationTree {
   384      nodes: ResourceNode[];
   385      orphanedNodes: ResourceNode[];
   386      hosts: Node[];
   387  }
   388  
   389  export interface ResourceID {
   390      group: string;
   391      kind: string;
   392      namespace: string;
   393      name: string;
   394  }
   395  
   396  export interface ResourceDiff extends ResourceID {
   397      targetState: State;
   398      liveState: State;
   399      predictedLiveState: State;
   400      normalizedLiveState: State;
   401      hook: boolean;
   402  }
   403  
   404  export interface SyncStatus {
   405      comparedTo: ApplicationSource;
   406      status: SyncStatusCode;
   407      revision: string;
   408      revisions: string[];
   409  }
   410  
   411  export interface ApplicationCondition {
   412      type: string;
   413      message: string;
   414      lastTransitionTime: string;
   415  }
   416  
   417  export interface ApplicationSummary {
   418      externalURLs?: string[];
   419      images?: string[];
   420  }
   421  
   422  export interface ApplicationStatus {
   423      observedAt: models.Time;
   424      resources: ResourceStatus[];
   425      sync: SyncStatus;
   426      conditions?: ApplicationCondition[];
   427      history: RevisionHistory[];
   428      health: HealthStatus;
   429      operationState?: OperationState;
   430      summary?: ApplicationSummary;
   431  }
   432  
   433  export interface JwtTokens {
   434      items: JwtToken[];
   435  }
   436  export interface AppProjectStatus {
   437      jwtTokensByRole: {[name: string]: JwtTokens};
   438  }
   439  
   440  export interface LogEntry {
   441      content: string;
   442      timeStamp: models.Time;
   443      // first field is inferred on the fly and indicats first log line received from backend
   444      first?: boolean;
   445      last: boolean;
   446      timeStampStr: string;
   447      podName: string;
   448  }
   449  
   450  // describes plugin settings
   451  export interface Plugin {
   452      name: string;
   453  }
   454  
   455  export interface AuthSettings {
   456      url: string;
   457      statusBadgeEnabled: boolean;
   458      statusBadgeRootUrl: string;
   459      googleAnalytics: {
   460          trackingID: string;
   461          anonymizeUsers: boolean;
   462      };
   463      dexConfig: {
   464          connectors: {
   465              name: string;
   466              type: string;
   467          }[];
   468      };
   469      oidcConfig: {
   470          name: string;
   471          issuer: string;
   472          clientID: string;
   473          scopes: string[];
   474          enablePKCEAuthentication: boolean;
   475      };
   476      help: {
   477          chatUrl: string;
   478          chatText: string;
   479          binaryUrls: Record<string, string>;
   480      };
   481      userLoginsDisabled: boolean;
   482      kustomizeVersions: string[];
   483      uiCssURL: string;
   484      uiBannerContent: string;
   485      uiBannerURL: string;
   486      uiBannerPermanent: boolean;
   487      uiBannerPosition: string;
   488      execEnabled: boolean;
   489      appsInAnyNamespaceEnabled: boolean;
   490  }
   491  
   492  export interface UserInfo {
   493      loggedIn: boolean;
   494      username: string;
   495      iss: string;
   496      groups: string[];
   497  }
   498  
   499  export type ConnectionStatus = 'Unknown' | 'Successful' | 'Failed';
   500  
   501  export const ConnectionStatuses = {
   502      Unknown: 'Unknown',
   503      Failed: 'Failed',
   504      Successful: 'Successful'
   505  };
   506  
   507  export interface ConnectionState {
   508      status: ConnectionStatus;
   509      message: string;
   510      attemptedAt: models.Time;
   511  }
   512  
   513  export interface RepoCert {
   514      serverName: string;
   515      certType: string;
   516      certSubType: string;
   517      certData: string;
   518      certInfo: string;
   519  }
   520  
   521  export interface RepoCertList extends ItemsList<RepoCert> {}
   522  
   523  export interface Repository {
   524      repo: string;
   525      type?: string;
   526      name?: string;
   527      connectionState: ConnectionState;
   528      project?: string;
   529      username?: string;
   530      password?: string;
   531      tlsClientCertData?: string;
   532      tlsClientCertKey?: string;
   533      proxy?: string;
   534      insecure?: boolean;
   535      enableLfs?: boolean;
   536      githubAppId?: string;
   537      forceHttpBasicAuth?: boolean;
   538      enableOCI: boolean;
   539  }
   540  
   541  export interface RepositoryList extends ItemsList<Repository> {}
   542  
   543  export interface RepoCreds {
   544      url: string;
   545      username?: string;
   546  }
   547  
   548  export interface RepoCredsList extends ItemsList<RepoCreds> {}
   549  
   550  export interface Cluster {
   551      name: string;
   552      server: string;
   553      namespaces?: [];
   554      refreshRequestedAt?: models.Time;
   555      config?: {
   556          awsAuthConfig?: {
   557              clusterName: string;
   558          };
   559          execProviderConfig?: {
   560              command: string;
   561          };
   562      };
   563      info?: {
   564          applicationsCount: number;
   565          serverVersion: string;
   566          connectionState: ConnectionState;
   567          cacheInfo: ClusterCacheInfo;
   568      };
   569      annotations?: {[name: string]: string};
   570      labels?: {[name: string]: string};
   571  }
   572  
   573  export interface ClusterCacheInfo {
   574      resourcesCount: number;
   575      apisCount: number;
   576      lastCacheSyncTime: models.Time;
   577  }
   578  
   579  export interface ClusterList extends ItemsList<Cluster> {}
   580  
   581  export interface HelmChart {
   582      name: string;
   583      versions: string[];
   584  }
   585  
   586  export type AppSourceType = 'Helm' | 'Kustomize' | 'Directory' | 'Plugin';
   587  
   588  export interface RepoAppDetails {
   589      type: AppSourceType;
   590      path: string;
   591      helm?: HelmAppSpec;
   592      kustomize?: KustomizeAppSpec;
   593      plugin?: PluginAppSpec;
   594      directory?: {};
   595  }
   596  
   597  export interface RefsInfo {
   598      branches: string[];
   599      tags: string[];
   600  }
   601  
   602  export interface AppInfo {
   603      type: string;
   604      path: string;
   605  }
   606  
   607  export interface HelmParameter {
   608      name: string;
   609      value: string;
   610  }
   611  
   612  export interface HelmFileParameter {
   613      name: string;
   614      path: string;
   615  }
   616  
   617  export interface HelmAppSpec {
   618      name: string;
   619      path: string;
   620      valueFiles: string[];
   621      values?: string;
   622      parameters: HelmParameter[];
   623      fileParameters: HelmFileParameter[];
   624  }
   625  
   626  export interface KustomizeAppSpec {
   627      path: string;
   628      images?: string[];
   629      namespace?: string;
   630  }
   631  
   632  export interface PluginAppSpec {
   633      name: string;
   634      env: EnvEntry[];
   635      parametersAnnouncement?: ParameterAnnouncement[];
   636  }
   637  
   638  export interface ParameterAnnouncement {
   639      name?: string;
   640      title?: string;
   641      tooltip?: string;
   642      required?: boolean;
   643      itemType?: string;
   644      collectionType?: string;
   645      string?: string;
   646      array?: string[];
   647      map?: Map<string, string>;
   648  }
   649  
   650  export interface ObjectReference {
   651      kind: string;
   652      namespace: string;
   653      name: string;
   654      uid: string;
   655      apiVersion: string;
   656      resourceVersion: string;
   657      fieldPath: string;
   658  }
   659  
   660  export interface EventSource {
   661      component: string;
   662      host: string;
   663  }
   664  
   665  export interface EventSeries {
   666      count: number;
   667      lastObservedTime: models.Time;
   668      state: string;
   669  }
   670  
   671  export interface Event {
   672      apiVersion?: string;
   673      kind?: string;
   674      metadata: models.ObjectMeta;
   675      involvedObject: ObjectReference;
   676      reason: string;
   677      message: string;
   678      source: EventSource;
   679      firstTimestamp: models.Time;
   680      lastTimestamp: models.Time;
   681      count: number;
   682      type: string;
   683      eventTime: models.Time;
   684      series: EventSeries;
   685      action: string;
   686      related: ObjectReference;
   687      reportingController: string;
   688      reportingInstance: string;
   689  }
   690  
   691  export interface EventList extends ItemsList<Event> {}
   692  
   693  export interface ProjectRole {
   694      description: string;
   695      policies: string[];
   696      name: string;
   697      groups: string[];
   698  }
   699  
   700  export interface JwtToken {
   701      iat: number;
   702      exp: number;
   703      id: string;
   704  }
   705  
   706  export interface GroupKind {
   707      group: string;
   708      kind: string;
   709  }
   710  
   711  export interface ProjectSignatureKey {
   712      keyID: string;
   713  }
   714  
   715  export interface ProjectSpec {
   716      sourceRepos: string[];
   717      sourceNamespaces: string[];
   718      destinations: ApplicationDestination[];
   719      description: string;
   720      roles: ProjectRole[];
   721      clusterResourceWhitelist: GroupKind[];
   722      clusterResourceBlacklist: GroupKind[];
   723      namespaceResourceBlacklist: GroupKind[];
   724      namespaceResourceWhitelist: GroupKind[];
   725      signatureKeys: ProjectSignatureKey[];
   726      orphanedResources?: {warn?: boolean; ignore: OrphanedResource[]};
   727      syncWindows?: SyncWindows;
   728  }
   729  
   730  export type SyncWindows = SyncWindow[];
   731  
   732  export interface SyncWindow {
   733      kind: string;
   734      schedule: string;
   735      duration: string;
   736      applications: string[];
   737      namespaces: string[];
   738      clusters: string[];
   739      manualSync: boolean;
   740      timeZone: string;
   741  }
   742  
   743  export interface Project {
   744      apiVersion?: string;
   745      kind?: string;
   746      metadata: models.ObjectMeta;
   747      spec: ProjectSpec;
   748      status: AppProjectStatus;
   749  }
   750  
   751  export interface DetailedProjectsResponse {
   752      project: Project;
   753      globalProjects: Project[];
   754      repositories: Repository[];
   755      clusters: Cluster[];
   756  }
   757  
   758  export type ProjectList = ItemsList<Project>;
   759  
   760  export const DEFAULT_PROJECT_NAME = 'default';
   761  
   762  export interface ManifestResponse {
   763      manifests: string[];
   764      namespace: string;
   765      server: string;
   766      revision: string;
   767  }
   768  
   769  export interface ResourceActionParam {
   770      name: string;
   771      value: string;
   772      type: string;
   773      default: string;
   774  }
   775  
   776  export interface ResourceAction {
   777      name: string;
   778      params: ResourceActionParam[];
   779      disabled: boolean;
   780      iconClass: string;
   781      displayName: string;
   782  }
   783  
   784  export interface SyncWindowsState {
   785      windows: SyncWindow[];
   786  }
   787  
   788  export interface ApplicationSyncWindowState {
   789      activeWindows: SyncWindow[];
   790      assignedWindows: SyncWindow[];
   791      canSync: boolean;
   792  }
   793  
   794  export interface VersionMessage {
   795      Version: string;
   796      BuildDate: string;
   797      GoVersion: string;
   798      Compiler: string;
   799      Platform: string;
   800      KustomizeVersion: string;
   801      HelmVersion: string;
   802      KubectlVersion: string;
   803      JsonnetVersion: string;
   804  }
   805  
   806  export interface Token {
   807      id: string;
   808      issuedAt: number;
   809      expiresAt: number;
   810  }
   811  
   812  export interface Account {
   813      name: string;
   814      enabled: boolean;
   815      capabilities: string[];
   816      tokens: Token[];
   817  }
   818  
   819  export interface GnuPGPublicKey {
   820      keyID?: string;
   821      fingerprint?: string;
   822      subType?: string;
   823      owner?: string;
   824      keyData?: string;
   825  }
   826  
   827  export interface GnuPGPublicKeyList extends ItemsList<GnuPGPublicKey> {}
   828  
   829  // https://kubernetes.io/docs/reference/kubectl/overview/#resource-types
   830  
   831  export const ResourceKinds = [
   832      '*',
   833      'Binding',
   834      'ComponentStatus',
   835      'ConfigMap',
   836      'Endpoints',
   837      'LimitRange',
   838      'Namespace',
   839      'Node',
   840      'PersistentVolumeClaim',
   841      'PersistentVolume',
   842      'Pod',
   843      'PodTemplate',
   844      'ReplicationController',
   845      'ResourceQuota',
   846      'Secret',
   847      'ServiceAccount',
   848      'Service',
   849      'MutatingWebhookConfiguration',
   850      'ValidatingWebhookConfiguration',
   851      'CustomResourceDefinition',
   852      'APIService',
   853      'ControllerRevision',
   854      'DaemonSet',
   855      'Deployment',
   856      'ReplicaSet',
   857      'StatefulSet',
   858      'TokenReview',
   859      'LocalSubjectAccessReview',
   860      'SelfSubjectAccessReview',
   861      'SelfSubjectRulesReview',
   862      'SubjectAccessReview',
   863      'HorizontalPodAutoscaler',
   864      'CronJob',
   865      'Job',
   866      'CertificateSigningRequest',
   867      'Lease',
   868      'Event',
   869      'Ingress',
   870      'NetworkPolicy',
   871      'PodDisruptionBudget',
   872      'ClusterRoleBinding',
   873      'ClusterRole',
   874      'RoleBinding',
   875      'Role',
   876      'PriorityClass',
   877      'CSIDriver',
   878      'CSINode',
   879      'StorageClass',
   880      'Volume'
   881  ];
   882  
   883  export const Groups = [
   884      'admissionregistration.k8s.io',
   885      'apiextensions.k8s.io',
   886      'apiregistration.k8s.io',
   887      'apps',
   888      'authentication.k8s.io',
   889      'authorization.k8s.io',
   890      'autoscaling',
   891      'batch',
   892      'certificates.k8s.io',
   893      'coordination.k8s.io',
   894      'events.k8s.io',
   895      'extensions',
   896      'networking.k8s.io',
   897      'node.k8s.io',
   898      'policy',
   899      'rbac.authorization.k8s.io',
   900      'scheduling.k8s.io',
   901      'stable.example.com',
   902      'storage.k8s.io'
   903  ];
   904  
   905  export interface HostResourceInfo {
   906      resourceName: ResourceName;
   907      requestedByApp: number;
   908      requestedByNeighbors: number;
   909      capacity: number;
   910  }
   911  
   912  export interface Node {
   913      name: string;
   914      systemInfo: NodeSystemInfo;
   915      resourcesInfo: HostResourceInfo[];
   916  }
   917  
   918  export interface NodeSystemInfo {
   919      architecture: string;
   920      operatingSystem: string;
   921      kernelVersion: string;
   922  }
   923  
   924  export enum ResourceName {
   925      ResourceCPU = 'cpu',
   926      ResourceMemory = 'memory',
   927      ResourceStorage = 'storage'
   928  }
   929  
   930  export interface Pod extends ResourceNode {
   931      fullName: string;
   932      metadata: models.ObjectMeta;
   933      spec: PodSpec;
   934      health: HealthStatusCode;
   935  }
   936  
   937  export interface PodSpec {
   938      nodeName: string;
   939  }
   940  
   941  export enum PodPhase {
   942      PodPending = 'Pending',
   943      PodRunning = 'Running',
   944      PodSucceeded = 'Succeeded',
   945      PodFailed = 'Failed',
   946      PodUnknown = 'Unknown'
   947  }
   948  
   949  export interface NotificationChunk {
   950      name: string;
   951  }
   952  
   953  export interface LinkInfo {
   954      title: string;
   955      url: string;
   956      description?: string;
   957      iconClass?: string;
   958  }
   959  
   960  export interface LinksResponse {
   961      items: LinkInfo[];
   962  }
   963  
   964  export interface UserMessages {
   965      appName: string;
   966      msgKey: string;
   967      display: boolean;
   968      condition?: HealthStatusCode;
   969      duration?: number;
   970      animation?: string;
   971  }