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 }